@firestitch/file
Advanced tools
Comparing version 12.14.2 to 12.14.3
@@ -1,6 +0,6 @@ | ||
import { EventEmitter, OnInit, ChangeDetectorRef, QueryList, TemplateRef, OnDestroy } from '@angular/core'; | ||
import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit, QueryList, TemplateRef } from '@angular/core'; | ||
import { AbstractControl, AsyncValidator, ControlValueAccessor, ValidationErrors } from '@angular/forms'; | ||
import { FsApiFile } from '@firestitch/api'; | ||
import { FsFile } from '../../models/fs-file'; | ||
import { FsFileDragBaseComponent } from '../fs-file-drag-base/fs-file-drag-base'; | ||
import { FsFile } from '../../models/fs-file'; | ||
import { FsApiFile } from '@firestitch/api'; | ||
import * as i0 from "@angular/core"; | ||
@@ -41,8 +41,8 @@ export declare class FsFilePickerComponent extends FsFileDragBaseComponent implements OnInit, ControlValueAccessor, AsyncValidator, OnDestroy { | ||
registerOnTouched(fn: any): void; | ||
inputProcessor: any; | ||
instruction: string; | ||
_file: FsFile; | ||
previewFile: FsFile; | ||
private _destroy$; | ||
private _disabled; | ||
private _previewWidth; | ||
private _file; | ||
private _previewHeight; | ||
@@ -54,2 +54,3 @@ constructor(_moduleConfig: any, _cdRef: ChangeDetectorRef); | ||
writeValue(file: any): void; | ||
selectFilePreview(fsFiles: FsFile[]): void; | ||
selectFile(fsFile: FsFile): void; | ||
@@ -64,5 +65,4 @@ removeFile(): void; | ||
ngOnDestroy(): void; | ||
private _isNumeric; | ||
static ɵfac: i0.ɵɵFactoryDeclaration<FsFilePickerComponent, [{ optional: true; }, null]>; | ||
static ɵcmp: i0.ɵɵComponentDeclaration<FsFilePickerComponent, "fs-file-picker", never, { "minWidth": "minWidth"; "minHeight": "minHeight"; "imageWidth": "imageWidth"; "imageHeight": "imageHeight"; "imageQuality": "imageQuality"; "label": "label"; "showFilename": "showFilename"; "allowDownload": "allowDownload"; "allowReupload": "allowReupload"; "multiple": "multiple"; "allowRemove": "allowRemove"; "url": "url"; "file": "file"; "accept": "accept"; "disabled": "disabled"; "previewWidth": "previewWidth"; "previewHeight": "previewHeight"; }, { "select": "select"; "remove": "remove"; "download": "download"; }, ["filePickerSelectTemplate", "labels"], ["[fsFileLabel]", "[fsFileHint]", "[fsFileMessageLabel]"]>; | ||
} |
@@ -1,6 +0,6 @@ | ||
import { AfterContentInit, EventEmitter, OnInit } from '@angular/core'; | ||
import { AfterContentInit, EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core'; | ||
import { FsFile } from '../../models'; | ||
import { FsFilePreviewsBaseComponent } from '../fs-file-preview-base/fs-file-preview-base'; | ||
import * as i0 from "@angular/core"; | ||
export declare class FsFilePreviewComponent extends FsFilePreviewsBaseComponent implements AfterContentInit, OnInit { | ||
export declare class FsFilePreviewComponent extends FsFilePreviewsBaseComponent implements AfterContentInit, OnInit, OnChanges { | ||
loaded: boolean; | ||
@@ -22,2 +22,3 @@ showFilename: boolean; | ||
ngOnInit(): void; | ||
ngOnChanges(changes: SimpleChanges): void; | ||
ngAfterContentInit(): void; | ||
@@ -24,0 +25,0 @@ previewLoaded(): void; |
@@ -1,5 +0,6 @@ | ||
import { ElementRef, EventEmitter, NgZone, OnDestroy, OnInit } from '@angular/core'; | ||
import { ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core'; | ||
import { FsMessage } from '@firestitch/message'; | ||
import { FsFile } from '../../models'; | ||
import { InputProcessorService } from '../../services'; | ||
import { FsFileDragBaseComponent } from '../fs-file-drag-base/fs-file-drag-base'; | ||
import { InputProcessorService } from '../../services'; | ||
import * as i0 from "@angular/core"; | ||
@@ -36,2 +37,3 @@ export declare class FsFileComponent extends FsFileDragBaseComponent implements OnInit, OnDestroy { | ||
select: EventEmitter<any>; | ||
selectPreviews: EventEmitter<FsFile[]>; | ||
error: EventEmitter<any>; | ||
@@ -42,3 +44,3 @@ clicked: EventEmitter<any>; | ||
fileLabel: any; | ||
constructor(el: ElementRef, inputProcessor: InputProcessorService, ngZone: NgZone, moduleConfig: any, _message: FsMessage); | ||
constructor(el: ElementRef, inputProcessor: InputProcessorService, moduleConfig: any, _message: FsMessage); | ||
ngOnInit(): void; | ||
@@ -48,4 +50,4 @@ ngOnDestroy(): void; | ||
private listenDeclinedFiles; | ||
static ɵfac: i0.ɵɵFactoryDeclaration<FsFileComponent, [null, null, null, { optional: true; }, null]>; | ||
static ɵcmp: i0.ɵɵComponentDeclaration<FsFileComponent, "fs-file", never, { "minHeight": "minHeight"; "minWidth": "minWidth"; "orientate": "orientate"; "multiple": "multiple"; "capture": "capture"; "allowClick": "allowClick"; "allowDrop": "allowDrop"; "accept": "accept"; "disabled": "disabled"; "imageWidth": "imageWidth"; "imageHeight": "imageHeight"; "imageQuality": "imageQuality"; }, { "select": "select"; "error": "error"; "clicked": "clicked"; "declined": "declined"; }, never, ["*"]>; | ||
static ɵfac: i0.ɵɵFactoryDeclaration<FsFileComponent, [null, null, { optional: true; }, null]>; | ||
static ɵcmp: i0.ɵɵComponentDeclaration<FsFileComponent, "fs-file", never, { "minHeight": "minHeight"; "minWidth": "minWidth"; "orientate": "orientate"; "multiple": "multiple"; "capture": "capture"; "allowClick": "allowClick"; "allowDrop": "allowDrop"; "accept": "accept"; "disabled": "disabled"; "imageWidth": "imageWidth"; "imageHeight": "imageHeight"; "imageQuality": "imageQuality"; }, { "select": "select"; "selectPreviews": "selectPreviews"; "error": "error"; "clicked": "clicked"; "declined": "declined"; }, never, ["*"]>; | ||
} |
import { PipeTransform } from '@angular/core'; | ||
import { Observable } from 'rxjs'; | ||
import { DomSanitizer } from '@angular/platform-browser'; | ||
import * as i0 from "@angular/core"; | ||
export declare class FsFileSrcPipe implements PipeTransform { | ||
transform(file: any, maxWidth?: number, maxHeight?: number): Observable<unknown>; | ||
private _domSanitizer; | ||
constructor(_domSanitizer: DomSanitizer); | ||
transform(file: any): import("rxjs").Observable<import("@angular/platform-browser").SafeUrl>; | ||
private _getData; | ||
@@ -7,0 +9,0 @@ static ɵfac: i0.ɵɵFactoryDeclaration<FsFileSrcPipe, never>; |
@@ -66,3 +66,3 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core'; | ||
FsFileImagePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsFileImagePickerComponent, deps: [{ token: i1.MatDialog }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); | ||
FsFileImagePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FsFileImagePickerComponent, selector: "fs-file-image-picker", inputs: { imageQuality: "imageQuality", borderRadius: "borderRadius", imageWidth: "imageWidth", imageHeight: "imageHeight", previewDiameter: "previewDiameter", previewFit: "previewFit", label: "label", minWidth: "minWidth", minHeight: "minHeight", disabled: "disabled", url: "url" }, outputs: { select: "select", error: "error", selectUrl: "selectUrl" }, queries: [{ propertyName: "labelTemplate", first: true, predicate: FsFileLabelDirective, descendants: true, read: TemplateRef }, { propertyName: "hintTemplate", first: true, predicate: FsFileHintDirective, descendants: true, read: TemplateRef }], ngImport: i0, template: "\n\n<ng-container *ngIf=\"labelTemplate || hintTemplate || label; else preview\">\n <fs-label-field class=\"fs-image-label\">\n <fs-label *ngIf=\"labelTemplate || label\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n </fs-label>\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\n <fs-label-message class=\"fs-form-message\">\n <span class=\"fs-form-hint\">\n <ng-container *ngTemplateOutlet=\"hintTemplate\"></ng-container>\n </span>\n </fs-label-message>\n </fs-label-field>\n</ng-container>\n\n<ng-template #preview>\n <div \n class=\"wrap\" \n [ngClass]=\"{ \n disabled: disabled, \n exists: file?.exists && file.typeImage \n }\">\n <fs-file\n *ngIf=\"!disabled; else filePreview\"\n (select)=\"selectFile($event)\"\n (error)=\"error.emit($event)\"\n (clicked)=\"clicked($event)\"\n [minHeight]=\"minHeight\"\n [minWidth]=\"minWidth\"\n [imageWidth]=\"imageWidth\"\n [imageHeight]=\"imageHeight\"\n [imageQuality]=\"imageQuality\"\n [disabled]=\"disabled\"\n accept=\"image/*\"\n [multiple]=\"false\">\n <ng-container *ngTemplateOutlet=\"filePreview\"></ng-container>\n </fs-file>\n </div>\n\n <ng-template #filePreview>\n <div \n class=\"image-preview\"\n [style.borderRadius]=\"borderRadius\"\n [style.height]=\"previewDiameter + 'px'\"\n [style.width]=\"previewDiameter + 'px'\">\n <ng-container \n *ngIf=\"file?.exists && file.typeImage; else noImage\">\n <ng-container *ngIf=\"(file | fsFileSrc | async) as src\">\n <img \n [style.borderRadius]=\"borderRadius\"\n [src]=\"src\">\n </ng-container>\n </ng-container>\n <ng-template #noImage>\n <div class=\"no-image\">\n <mat-icon\n [style.transform]=\"'scale(' + ((previewDiameter / 50) * 100) + '%)'\">\n image\n </mat-icon>\n </div>\n </ng-template>\n <div \n [style.transform]=\"'rotate(46deg) translate(' + (previewDiameter - 1) + 'px) rotate(-46deg)'\"\n class=\"upload-icon\">\n <button \n mat-mini-fab\n type=\"button\"\n [style.margin]=\"(previewDiameter < 100 ? (1 - (previewDiameter / 100)) * -10 : 1) + 'px'\"\n [style.transform]=\"'scale(' + (previewDiameter < 100 ? (previewDiameter / 100) : 1) + ')'\">\n <mat-icon>\n photo_camera\n </mat-icon>\n </button>\n </div>\n </div>\n </ng-template>\n</ng-template>\n", styles: [".fs-image-label{min-height:1px}.wrap:not(.disabled){cursor:pointer}.wrap.disabled .upload-icon{display:none}.image-preview{position:relative;display:flex;align-items:center;justify-content:center;border:1px solid transparent;box-sizing:content-box}.image-preview .upload-icon{position:absolute;display:block;top:11%;left:11%;margin:-13px}.image-preview .upload-icon mat-icon{color:#e9e9e9}.image-preview .no-image{display:flex}.image-preview .no-image mat-icon{color:#ececec}.image-preview img{display:block;object-fit:cover;width:100%;height:100%}\n"], components: [{ type: i2.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i2.FsLabelComponent, selector: "fs-label" }, { type: i2.FsLabelMessageComponent, selector: "fs-label-message" }, { type: i3.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "clicked", "declined"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i6.AsyncPipe, "fsFileSrc": i7.FsFileSrcPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush }); | ||
FsFileImagePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FsFileImagePickerComponent, selector: "fs-file-image-picker", inputs: { imageQuality: "imageQuality", borderRadius: "borderRadius", imageWidth: "imageWidth", imageHeight: "imageHeight", previewDiameter: "previewDiameter", previewFit: "previewFit", label: "label", minWidth: "minWidth", minHeight: "minHeight", disabled: "disabled", url: "url" }, outputs: { select: "select", error: "error", selectUrl: "selectUrl" }, queries: [{ propertyName: "labelTemplate", first: true, predicate: FsFileLabelDirective, descendants: true, read: TemplateRef }, { propertyName: "hintTemplate", first: true, predicate: FsFileHintDirective, descendants: true, read: TemplateRef }], ngImport: i0, template: "\n\n<ng-container *ngIf=\"labelTemplate || hintTemplate || label; else preview\">\n <fs-label-field class=\"fs-image-label\">\n <fs-label *ngIf=\"labelTemplate || label\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n </fs-label>\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\n <fs-label-message class=\"fs-form-message\">\n <span class=\"fs-form-hint\">\n <ng-container *ngTemplateOutlet=\"hintTemplate\"></ng-container>\n </span>\n </fs-label-message>\n </fs-label-field>\n</ng-container>\n\n<ng-template #preview>\n <div \n class=\"wrap\" \n [ngClass]=\"{ \n disabled: disabled, \n exists: file?.exists && file.typeImage \n }\">\n <fs-file\n *ngIf=\"!disabled; else filePreview\"\n (select)=\"selectFile($event)\"\n (error)=\"error.emit($event)\"\n (clicked)=\"clicked($event)\"\n [minHeight]=\"minHeight\"\n [minWidth]=\"minWidth\"\n [imageWidth]=\"imageWidth\"\n [imageHeight]=\"imageHeight\"\n [imageQuality]=\"imageQuality\"\n [disabled]=\"disabled\"\n accept=\"image/*\"\n [multiple]=\"false\">\n <ng-container *ngTemplateOutlet=\"filePreview\"></ng-container>\n </fs-file>\n </div>\n\n <ng-template #filePreview>\n <div \n class=\"image-preview\"\n [style.borderRadius]=\"borderRadius\"\n [style.height]=\"previewDiameter + 'px'\"\n [style.width]=\"previewDiameter + 'px'\">\n <ng-container \n *ngIf=\"file?.exists && file.typeImage; else noImage\">\n <ng-container *ngIf=\"(file | fsFileSrc | async) as src\">\n <img \n [style.borderRadius]=\"borderRadius\"\n [src]=\"src\">\n </ng-container>\n </ng-container>\n <ng-template #noImage>\n <div class=\"no-image\">\n <mat-icon\n [style.transform]=\"'scale(' + ((previewDiameter / 50) * 100) + '%)'\">\n image\n </mat-icon>\n </div>\n </ng-template>\n <div \n [style.transform]=\"'rotate(46deg) translate(' + (previewDiameter - 1) + 'px) rotate(-46deg)'\"\n class=\"upload-icon\">\n <button \n mat-mini-fab\n type=\"button\"\n [style.margin]=\"(previewDiameter < 100 ? (1 - (previewDiameter / 100)) * -10 : 1) + 'px'\"\n [style.transform]=\"'scale(' + (previewDiameter < 100 ? (previewDiameter / 100) : 1) + ')'\">\n <mat-icon>\n photo_camera\n </mat-icon>\n </button>\n </div>\n </div>\n </ng-template>\n</ng-template>\n", styles: [".fs-image-label{min-height:1px}.wrap:not(.disabled){cursor:pointer}.wrap.disabled .upload-icon{display:none}.image-preview{position:relative;display:flex;align-items:center;justify-content:center;border:1px solid transparent;box-sizing:content-box}.image-preview .upload-icon{position:absolute;display:block;top:11%;left:11%;margin:-13px}.image-preview .upload-icon mat-icon{color:#e9e9e9}.image-preview .no-image{display:flex}.image-preview .no-image mat-icon{color:#ececec}.image-preview img{display:block;object-fit:cover;width:100%;height:100%}\n"], components: [{ type: i2.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i2.FsLabelComponent, selector: "fs-label" }, { type: i2.FsLabelMessageComponent, selector: "fs-label-message" }, { type: i3.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "selectPreviews", "error", "clicked", "declined"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i6.AsyncPipe, "fsFileSrc": i7.FsFileSrcPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush }); | ||
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsFileImagePickerComponent, decorators: [{ | ||
@@ -69,0 +69,0 @@ type: Component, |
@@ -1,10 +0,10 @@ | ||
import { EventEmitter, Component, Input, Output, ViewChild, Inject, Optional, ChangeDetectionStrategy, forwardRef, ChangeDetectorRef, QueryList, ContentChildren, TemplateRef, ContentChild } from '@angular/core'; | ||
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, EventEmitter, Inject, Input, Optional, Output, QueryList, TemplateRef, ViewChild, forwardRef } from '@angular/core'; | ||
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms'; | ||
import { Subject } from 'rxjs'; | ||
import { FsApiFile } from '@firestitch/api'; | ||
import { FsFilePickerSelectDirective } from '../../directives'; | ||
import { FsFileLabelDirective } from '../../directives/fs-file-label.directive'; | ||
import { FS_FILE_MODULE_CONFIG } from '../../injectors/file-config.injector'; | ||
import { FsFile } from '../../models/fs-file'; | ||
import { FsFileDragBaseComponent } from '../fs-file-drag-base/fs-file-drag-base'; | ||
import { FsFile } from '../../models/fs-file'; | ||
import { FS_FILE_MODULE_CONFIG } from '../../injectors/file-config.injector'; | ||
import { FsFilePickerSelectDirective } from '../../directives'; | ||
import { FsApiFile } from '@firestitch/api'; | ||
import * as i0 from "@angular/core"; | ||
@@ -34,3 +34,2 @@ import * as i1 from "@firestitch/label"; | ||
this.onTouch = () => { }; | ||
this.inputProcessor = null; | ||
this.instruction = 'Drag & Drop your file or use the button below'; | ||
@@ -57,2 +56,3 @@ this._destroy$ = new Subject(); | ||
} | ||
this.previewFile = this._file; | ||
} | ||
@@ -111,2 +111,5 @@ get file() { | ||
} | ||
selectFilePreview(fsFiles) { | ||
this.previewFile = fsFiles[0]; | ||
} | ||
selectFile(fsFile) { | ||
@@ -120,3 +123,4 @@ if (!this.multiple) { | ||
removeFile() { | ||
this.file = void 0; | ||
this.file = null; | ||
this.previewFile = null; | ||
this.remove.emit(this.file); | ||
@@ -139,5 +143,2 @@ this.onChange(null); | ||
} | ||
_isNumeric(value) { | ||
return /^-?\d+$/.test(value); | ||
} | ||
} | ||
@@ -156,3 +157,3 @@ FsFilePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsFilePickerComponent, deps: [{ token: FS_FILE_MODULE_CONFIG, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); | ||
} | ||
], queries: [{ propertyName: "filePickerSelectTemplate", first: true, predicate: FsFilePickerSelectDirective, descendants: true, read: TemplateRef }, { propertyName: "labels", predicate: FsFileLabelDirective }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fs-label-field\n class=\"fs-form-wrapper\"\n [ngClass]=\"{ 'percent-preview': previewPercent }\">\n <ng-container *ngIf=\"label; else labelContent\">\n <fs-label class=\"fs-form-label\">{{label}}</fs-label>\n </ng-container>\n <ng-template #labelContent>\n <fs-label *ngIf=\"labels.length\" class=\"fs-form-label\">\n <ng-content select=\"[fsFileLabel]\"></ng-content>\n </fs-label>\n </ng-template>\n <fs-file\n [accept]=\"accept\"\n (select)=\"selectFile($event)\"\n [imageWidth]=\"imageWidth\"\n [imageHeight]=\"imageHeight\"\n [imageQuality]=\"imageQuality\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\">\n <div\n class=\"wrap\"\n [style.width]=\"previewWidth\"\n [style.height]=\"previewHeight\">\n <fs-file-preview\n class=\"preview\"\n *ngIf=\"file; else preview\"\n (remove)=\"removeFile()\"\n [file]=\"file\"\n [showFilename]=\"showFilename\"\n [previewHeight]=\"null\"\n [previewWidth]=\"null\">\n <ng-template\n fs-file-preview-action\n placement=\"top-right\"\n action=\"remove\"\n tooltip=\"Remove\"\n *ngIf=\"allowRemove\"\n (click)=\"actionClick($event)\">\n <mat-icon>close</mat-icon>\n </ng-template>\n <ng-template\n fs-file-preview-action\n placement=\"bottom-right\"\n tooltip=\"Reupload\"\n *ngIf=\"allowReupload\">\n <mat-icon>upload</mat-icon>\n </ng-template>\n <ng-template\n fs-file-preview-action\n placement=\"bottom-left\"\n action=\"download\"\n tooltip=\"Download\"\n [hide]=\"!(allowDownload && ((download.observers.length && file) || file.url))\"\n (click)=\"downloadClicked($event)\">\n <a\n [href]=\"file.url\"\n target=\"_blank\"\n tabindex=\"-1\"\n class=\"download\">\n <mat-icon>download</mat-icon>\n </a>\n </ng-template>\n </fs-file-preview>\n\n <ng-template #preview>\n <ng-container *ngIf=\"filePickerSelectTemplate\">\n <ng-container [ngTemplateOutlet]=\"filePickerSelectTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!filePickerSelectTemplate\">\n <div class=\"select\">\n <mat-icon>upload</mat-icon>\n <div class=\"instruction\">{{instruction}}</div>\n <div class=\"mat-raised-button\">Upload</div>\n </div>\n </ng-container>\n </ng-template>\n </div>\n </fs-file>\n <fs-label-message class=\"fs-form-message\">\n <span class=\"fs-form-hint\">\n <ng-content select=\"[fsFileHint]\"></ng-content>\n <ng-content select=\"[fsFileMessageLabel]\"></ng-content>\n </span>\n </fs-label-message>\n</fs-label-field>\n", styles: [":host .wrap{border:1px #efefef solid;border-radius:3px}:host .wrap:after{border-width:3px;border-style:dashed;border-radius:3px}:host.dragover .wrap{border-color:transparent}:host.dragover .wrap:after{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0}:host.dragover .wrap .select{border:none}:host.dragover .select button{display:none}:host.dragover .select .mat-icon{color:#07a8e6}:host ::ng-deep .percent-preview fs-file .file-label,:host ::ng-deep .percent-preview fs-file-preview{display:block}:host ::ng-deep fs-file .file-label{position:relative}:host ::ng-deep fs-file-preview{border:none;height:100%;width:100%}:host .download{color:inherit}:host .select{text-align:center;width:100%;height:100%;vertical-align:middle;padding:0 10px;justify-content:center;flex-direction:column;box-sizing:border-box;display:flex;align-items:center}:host .select mat-icon{transform:scale(1.8);color:#ddd}:host .instruction{font-size:75%;padding:12px 0;line-height:normal}\n"], components: [{ type: i1.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i1.FsLabelComponent, selector: "fs-label" }, { type: i2.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "clicked", "declined"] }, { type: i3.FsFilePreviewComponent, selector: "fs-file-preview", inputs: ["showFilename", "previewWidth", "previewHeight", "file", "url", "index", "showActionOn", "setActions", "setActionsTemplate"], outputs: ["remove"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i1.FsLabelMessageComponent, selector: "fs-label-message" }], directives: [{ type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.FsFilePreviewActionDirective, selector: "[fs-file-preview-action]", inputs: ["placement", "tooltip", "action", "hide", "for-types"], outputs: ["click"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); | ||
], queries: [{ propertyName: "filePickerSelectTemplate", first: true, predicate: FsFilePickerSelectDirective, descendants: true, read: TemplateRef }, { propertyName: "labels", predicate: FsFileLabelDirective }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fs-label-field\n class=\"fs-form-wrapper\"\n [ngClass]=\"{ 'percent-preview': previewPercent }\">\n <ng-container *ngIf=\"label; else labelContent\">\n <fs-label class=\"fs-form-label\">{{label}}</fs-label>\n </ng-container>\n <ng-template #labelContent>\n <fs-label *ngIf=\"labels.length\" class=\"fs-form-label\">\n <ng-content select=\"[fsFileLabel]\"></ng-content>\n </fs-label>\n </ng-template>\n <fs-file\n [accept]=\"accept\"\n (select)=\"selectFile($event)\"\n (selectPreviews)=\"selectFilePreview($event)\"\n [imageWidth]=\"imageWidth\"\n [imageHeight]=\"imageHeight\"\n [imageQuality]=\"imageQuality\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\">\n <div\n class=\"wrap\"\n [style.width]=\"previewWidth\"\n [style.height]=\"previewHeight\">\n <fs-file-preview\n class=\"preview\"\n *ngIf=\"previewFile; else preview\"\n (remove)=\"removeFile()\"\n [file]=\"previewFile\"\n [showFilename]=\"showFilename\"\n [previewHeight]=\"null\"\n [previewWidth]=\"null\">\n <ng-template\n *ngIf=\"allowRemove\"\n fs-file-preview-action\n placement=\"top-right\"\n action=\"remove\"\n tooltip=\"Remove\"\n (click)=\"actionClick($event)\">\n <mat-icon>close</mat-icon>\n </ng-template>\n <ng-template\n *ngIf=\"allowReupload\"\n fs-file-preview-action\n placement=\"bottom-right\"\n tooltip=\"Reupload\">\n <mat-icon>upload</mat-icon>\n </ng-template>\n <ng-template\n fs-file-preview-action\n placement=\"bottom-left\"\n action=\"download\"\n tooltip=\"Download\"\n [hide]=\"!(allowDownload && ((download.observers.length && file) || file.url))\"\n (click)=\"downloadClicked($event)\">\n <a\n [href]=\"previewFile.url\"\n target=\"_blank\"\n tabindex=\"-1\"\n class=\"download\">\n <mat-icon>download</mat-icon>\n </a>\n </ng-template>\n </fs-file-preview>\n\n <ng-template #preview>\n <ng-container *ngIf=\"filePickerSelectTemplate\">\n <ng-container [ngTemplateOutlet]=\"filePickerSelectTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!filePickerSelectTemplate\">\n <div class=\"select\">\n <mat-icon>upload</mat-icon>\n <div class=\"instruction\">{{instruction}}</div>\n <div class=\"mat-raised-button\">Upload</div>\n </div>\n </ng-container>\n </ng-template>\n </div>\n </fs-file>\n <fs-label-message class=\"fs-form-message\">\n <span class=\"fs-form-hint\">\n <ng-content select=\"[fsFileHint]\"></ng-content>\n <ng-content select=\"[fsFileMessageLabel]\"></ng-content>\n </span>\n </fs-label-message>\n</fs-label-field>\n", styles: [":host .wrap{border:1px #efefef solid;border-radius:3px}:host .wrap:after{border-width:3px;border-style:dashed;border-radius:3px}:host.dragover .wrap{border-color:transparent}:host.dragover .wrap:after{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0}:host.dragover .wrap .select{border:none}:host.dragover .select button{display:none}:host.dragover .select .mat-icon{color:#07a8e6}:host ::ng-deep .percent-preview fs-file .file-label,:host ::ng-deep .percent-preview fs-file-preview{display:block}:host ::ng-deep fs-file .file-label{position:relative}:host ::ng-deep fs-file-preview{border:none;height:100%;width:100%}:host .download{color:inherit}:host .select{text-align:center;width:100%;height:100%;vertical-align:middle;padding:0 10px;justify-content:center;flex-direction:column;box-sizing:border-box;display:flex;align-items:center}:host .select mat-icon{transform:scale(1.8);color:#ddd}:host .instruction{font-size:75%;padding:12px 0;line-height:normal}\n"], components: [{ type: i1.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i1.FsLabelComponent, selector: "fs-label" }, { type: i2.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "selectPreviews", "error", "clicked", "declined"] }, { type: i3.FsFilePreviewComponent, selector: "fs-file-preview", inputs: ["showFilename", "previewWidth", "previewHeight", "file", "url", "index", "showActionOn", "setActions", "setActionsTemplate"], outputs: ["remove"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i1.FsLabelMessageComponent, selector: "fs-label-message" }], directives: [{ type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.FsFilePreviewActionDirective, selector: "[fs-file-preview-action]", inputs: ["placement", "tooltip", "action", "hide", "for-types"], outputs: ["click"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); | ||
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsFilePickerComponent, decorators: [{ | ||
@@ -235,2 +236,2 @@ type: Component, | ||
}] } }); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2ZzLWZpbGUtcGlja2VyL2ZzLWZpbGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mcy1maWxlLXBpY2tlci9mcy1maWxlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUdSLHVCQUF1QixFQUN2QixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxFQUVYLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXlELGFBQWEsRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzSSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7O0FBcUI1QyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsdUJBQXVCO0lBMEZoRSxZQUNxRCxhQUFhLEVBQ3hELE1BQXlCO1FBRWpDLEtBQUssRUFBRSxDQUFDO1FBSDJD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VztzQkFBMUIsS0FBSztnQkFFWSxHQUFHO3NCQUFwQixLQUFLO3VCQUFDLEtBQUs7Z0JBSU8sSUFBSTtzQkFBdEIsS0FBSzt1QkFBQyxNQUFNO2dCQWFOLE1BQU07c0JBRFosS0FBSztnQkFRSyxRQUFRO3NCQURsQixLQUFLO2dCQVVLLFlBQVk7c0JBRHRCLEtBQUs7Z0JBVUssYUFBYTtzQkFEdkIsS0FBSztnQkFTVyxNQUFNO3NCQUF0QixNQUFNO2dCQUNVLE1BQU07c0JBQXRCLE1BQU07Z0JBQ1UsUUFBUTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEV2ZW50RW1pdHRlcixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIEluamVjdCxcbiAgT3B0aW9uYWwsXG4gIE9uSW5pdCxcbiAgTmdab25lLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgZm9yd2FyZFJlZixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIFF1ZXJ5TGlzdCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBUZW1wbGF0ZVJlZixcbiAgT25EZXN0cm95LFxuICBDb250ZW50Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEFzeW5jVmFsaWRhdG9yLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRnNGaWxlTGFiZWxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2ZzLWZpbGUtbGFiZWwuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRmlsZURyYWdCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vZnMtZmlsZS1kcmFnLWJhc2UvZnMtZmlsZS1kcmFnLWJhc2UnO1xuaW1wb3J0IHsgRnNGaWxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZzLWZpbGUnO1xuaW1wb3J0IHsgRlNfRklMRV9NT0RVTEVfQ09ORklHIH0gZnJvbSAnLi4vLi4vaW5qZWN0b3JzL2ZpbGUtY29uZmlnLmluamVjdG9yJztcbmltcG9ydCB7IEZzRmlsZVBpY2tlclNlbGVjdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRnNBcGlGaWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvYXBpJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1maWxlLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnZnMtZmlsZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnZnMtZmlsZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGc0ZpbGVQaWNrZXJDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlLFxuICB9LFxuICB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgXG4gICAgdXNlRXhpc3Rpbmc6IEZzRmlsZVBpY2tlckNvbXBvbmVudCxcbiAgICBtdWx0aTogdHJ1ZVxuICB9XG4gIF0sICBcbn0pXG5leHBvcnQgY2xhc3MgRnNGaWxlUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgRnNGaWxlRHJhZ0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBc3luY1ZhbGlkYXRvciwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBcbiAgcHVibGljIGZpbGVJbnB1dDogYW55O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oRnNGaWxlTGFiZWxEaXJlY3RpdmUpXG4gIHB1YmxpYyBsYWJlbHM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICBAQ29udGVudENoaWxkKEZzRmlsZVBpY2tlclNlbGVjdERpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwdWJsaWMgZmlsZVBpY2tlclNlbGVjdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5XaWR0aCA9IDA7XG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5IZWlnaHQgPSAwO1xuICBASW5wdXQoKSBwdWJsaWMgaW1hZ2VXaWR0aDtcbiAgQElucHV0KCkgcHVibGljIGltYWdlSGVpZ2h0O1xuICBASW5wdXQoKSBwdWJsaWMgaW1hZ2VRdWFsaXR5O1xuICBASW5wdXQoKSBwdWJsaWMgbGFiZWw7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93RmlsZW5hbWUgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgYWxsb3dEb3dubG9hZCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgYWxsb3dSZXVwbG9hZCA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBtdWx0aXBsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgYWxsb3dSZW1vdmUgPSBmYWxzZTtcblxuICBASW5wdXQoJ3VybCcpIHNldCB1cmwodXJsKSB7XG4gICAgdGhpcy5maWxlID0gdXJsID8gbmV3IEZzRmlsZSh1cmwpIDogbnVsbDtcbiAgfVxuXG4gIEBJbnB1dCgnZmlsZScpIHNldCBmaWxlKGZpbGU6IEZzRmlsZSB8IEZzQXBpRmlsZSB8IHN0cmluZykge1xuICAgIGlmKGZpbGUgaW5zdGFuY2VvZiBGc0FwaUZpbGUpIHtcbiAgICAgIHRoaXMuX2ZpbGUgPSBuZXcgRnNGaWxlKGZpbGUpXG4gICAgfSBlbHNlIGlmKGZpbGUgaW5zdGFuY2VvZiBGc0ZpbGUpIHtcbiAgICAgIHRoaXMuX2ZpbGUgPSBmaWxlO1xuICAgIH0gZWxzZSBpZihmaWxlKSB7XG4gICAgICB0aGlzLl9maWxlID0gbmV3IEZzRmlsZShmaWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZmlsZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGFjY2VwdDogc3RyaW5nIHwgc3RyaW5nW107XG4gIFxuICBwdWJsaWMgZ2V0IGZpbGUoKTogRnNGaWxlIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWUpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcHJldmlld1dpZHRoKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICB0aGlzLl9wcmV2aWV3V2lkdGggPSBOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSA/IGAke3ZhbHVlfXB4YCA6IHZhbHVlPy50b1N0cmluZygpIHx8ICcnO1xuICB9XG5cbiAgcHVibGljIGdldCBwcmV2aWV3V2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZXZpZXdXaWR0aDtcbiAgfVxuICBcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwcmV2aWV3SGVpZ2h0KHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICB0aGlzLl9wcmV2aWV3SGVpZ2h0ID0gTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkgPyBgJHt2YWx1ZX1weGAgOiB2YWx1ZT8udG9TdHJpbmcoKSB8fCAnJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJldmlld0hlaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJldmlld0hlaWdodDtcbiAgfVxuXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIGRvd25sb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxGc0ZpbGU+KCk7XG5cbiAgcHVibGljIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgcHVibGljIG9uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbik6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuKTogdm9pZCB7IHRoaXMub25Ub3VjaCA9IGZuOyB9XG4gIHB1YmxpYyBpbnB1dFByb2Nlc3NvciA9IG51bGw7XG4gIHB1YmxpYyBpbnN0cnVjdGlvbiA9ICdEcmFnICYgRHJvcCB5b3VyIGZpbGUgb3IgdXNlIHRoZSBidXR0b24gYmVsb3cnO1xuICBwdWJsaWMgX2ZpbGU6IEZzRmlsZTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuOyAgXG4gIHByaXZhdGUgX3ByZXZpZXdXaWR0aCA9ICcxNTBweCc7XG4gIHByaXZhdGUgX3ByZXZpZXdIZWlnaHQgPSAnMTUwcHgnO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZTX0ZJTEVfTU9EVUxFX0NPTkZJRykgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5fbW9kdWxlQ29uZmlnKSB7XG4gICAgICBpZiAodGhpcy5hbGxvd0Rvd25sb2FkID09PSB2b2lkIDApIHtcbiAgICAgICAgdGhpcy5hbGxvd0Rvd25sb2FkID0gdGhpcy5fbW9kdWxlQ29uZmlnLmFsbG93RG93bmxvYWRcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYWxsb3dSZW1vdmUgPT09IHZvaWQgMCkge1xuICAgICAgICB0aGlzLmFsbG93UmVtb3ZlID0gdGhpcy5fbW9kdWxlQ29uZmlnLmFsbG93UmVtb3ZlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHwgIG51bGwgeyBcbiAgICBpZih0aGlzLmZpbGU/LnR5cGVJbWFnZSAmJiAodGhpcy5taW5XaWR0aCB8fCB0aGlzLm1pbkhlaWdodCkpIHtcbiAgICAgIC8vIGlmKHRoaXMuZmlsZS5pbWFnZVdpZHRoIDwgdGhpcy5taW5XaWR0aCkge1xuICAgICAgLy8gICByZXR1cm4geyBtaW5XaWR0aDogYE1pbmltdW0gd2lkdGggJHt0aGlzLm1pbldpZHRofXB4YCB9O1xuICAgICAgLy8gfVxuXG4gICAgICAvLyBpZih0aGlzLmZpbGUuaW1hZ2VIZWlnaHQgPCB0aGlzLm1pbkhlaWdodCkge1xuICAgICAgLy8gICByZXR1cm4geyBtaW5XaWR0aDogYE1pbmltdW0gaGVpZ2h0ICR7dGhpcy5taW5IZWlnaHR9cHhgIH07XG4gICAgICAvLyB9ICAgICAgXG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH0gXG5cbiAgcHVibGljIGdldCBwcmV2aWV3UGVyY2VudCgpIHtcbiAgICByZXR1cm4gU3RyaW5nKHRoaXMuX3ByZXZpZXdXaWR0aCkubWF0Y2goLyUvKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKGZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGUgPSBmaWxlO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEZpbGUoZnNGaWxlOiBGc0ZpbGUpIHtcbiAgICBpZighdGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5maWxlID0gZnNGaWxlO1xuICAgICAgdGhpcy5vbkNoYW5nZShmc0ZpbGUpO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLnNlbGVjdC5lbWl0KGZzRmlsZSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRmlsZSgpIHtcbiAgICB0aGlzLmZpbGUgPSB2b2lkIDA7XG4gICAgdGhpcy5yZW1vdmUuZW1pdCh0aGlzLmZpbGUpO1xuICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgYWN0aW9uQ2xpY2soZXZlbnQ6IHsgZXZlbnQ6IFBvaW50ZXJFdmVudCB9KSB7XG4gICAgZXZlbnQuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZG93bmxvYWRDbGlja2VkKGV2ZW50OiB7IGV2ZW50OiBQb2ludGVyRXZlbnQgfSkge1xuICAgIGV2ZW50LmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYodGhpcy5kb3dubG9hZC5vYnNlcnZlcnMubGVuZ3RoKSB7XG4gICAgICBldmVudC5ldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5kb3dubG9hZC5lbWl0KHRoaXMuZmlsZSk7XG4gICAgfVxuICB9XG4gIFxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9pc051bWVyaWModmFsdWUpIHtcbiAgICByZXR1cm4gL14tP1xcZCskLy50ZXN0KHZhbHVlKTtcbiAgfVxuXG59XG4iLCI8ZnMtbGFiZWwtZmllbGRcbiAgICBjbGFzcz1cImZzLWZvcm0td3JhcHBlclwiXG4gICAgW25nQ2xhc3NdPVwieyAncGVyY2VudC1wcmV2aWV3JzogcHJldmlld1BlcmNlbnQgfVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWw7IGVsc2UgbGFiZWxDb250ZW50XCI+XG4gICAgPGZzLWxhYmVsIGNsYXNzPVwiZnMtZm9ybS1sYWJlbFwiPnt7bGFiZWx9fTwvZnMtbGFiZWw+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI2xhYmVsQ29udGVudD5cbiAgICA8ZnMtbGFiZWwgKm5nSWY9XCJsYWJlbHMubGVuZ3RoXCIgY2xhc3M9XCJmcy1mb3JtLWxhYmVsXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZnNGaWxlTGFiZWxdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZnMtbGFiZWw+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxmcy1maWxlXG4gICAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgICAoc2VsZWN0KT1cInNlbGVjdEZpbGUoJGV2ZW50KVwiXG4gICAgICBbaW1hZ2VXaWR0aF09XCJpbWFnZVdpZHRoXCJcbiAgICAgIFtpbWFnZUhlaWdodF09XCJpbWFnZUhlaWdodFwiXG4gICAgICBbaW1hZ2VRdWFsaXR5XT1cImltYWdlUXVhbGl0eVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIndyYXBcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwicHJldmlld1dpZHRoXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJwcmV2aWV3SGVpZ2h0XCI+XG4gICAgICA8ZnMtZmlsZS1wcmV2aWV3XG4gICAgICAgICAgY2xhc3M9XCJwcmV2aWV3XCJcbiAgICAgICAgICAqbmdJZj1cImZpbGU7IGVsc2UgcHJldmlld1wiXG4gICAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmVGaWxlKClcIlxuICAgICAgICAgIFtmaWxlXT1cImZpbGVcIlxuICAgICAgICAgIFtzaG93RmlsZW5hbWVdPVwic2hvd0ZpbGVuYW1lXCJcbiAgICAgICAgICBbcHJldmlld0hlaWdodF09XCJudWxsXCJcbiAgICAgICAgICBbcHJldmlld1dpZHRoXT1cIm51bGxcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBmcy1maWxlLXByZXZpZXctYWN0aW9uXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3AtcmlnaHRcIlxuICAgICAgICAgICAgYWN0aW9uPVwicmVtb3ZlXCJcbiAgICAgICAgICAgIHRvb2x0aXA9XCJSZW1vdmVcIlxuICAgICAgICAgICAgKm5nSWY9XCJhbGxvd1JlbW92ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgZnMtZmlsZS1wcmV2aWV3LWFjdGlvblxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgIHRvb2x0aXA9XCJSZXVwbG9hZFwiXG4gICAgICAgICAgICAqbmdJZj1cImFsbG93UmV1cGxvYWRcIj5cbiAgICAgICAgICA8bWF0LWljb24+dXBsb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBmcy1maWxlLXByZXZpZXctYWN0aW9uXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICBhY3Rpb249XCJkb3dubG9hZFwiXG4gICAgICAgICAgICB0b29sdGlwPVwiRG93bmxvYWRcIlxuICAgICAgICAgICAgW2hpZGVdPVwiIShhbGxvd0Rvd25sb2FkICYmICgoZG93bmxvYWQub2JzZXJ2ZXJzLmxlbmd0aCAmJiBmaWxlKSB8fCBmaWxlLnVybCkpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZENsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIFtocmVmXT1cImZpbGUudXJsXCJcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZG93bmxvYWRcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9mcy1maWxlLXByZXZpZXc+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjcHJldmlldz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbGVQaWNrZXJTZWxlY3RUZW1wbGF0ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsZVBpY2tlclNlbGVjdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpbGVQaWNrZXJTZWxlY3RUZW1wbGF0ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj51cGxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluc3RydWN0aW9uXCI+e3tpbnN0cnVjdGlvbn19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LXJhaXNlZC1idXR0b25cIj5VcGxvYWQ8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2ZzLWZpbGU+XG4gIDxmcy1sYWJlbC1tZXNzYWdlIGNsYXNzPVwiZnMtZm9ybS1tZXNzYWdlXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmcy1mb3JtLWhpbnRcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmc0ZpbGVIaW50XVwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmc0ZpbGVNZXNzYWdlTGFiZWxdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvc3Bhbj5cbiAgPC9mcy1sYWJlbC1tZXNzYWdlPlxuPC9mcy1sYWJlbC1maWVsZD5cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2ZzLWZpbGUtcGlja2VyL2ZzLWZpbGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mcy1maWxlLXBpY2tlci9mcy1maWxlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXlELGFBQWEsRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzSSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7O0FBcUJqRixNQUFNLE9BQU8scUJBQXNCLFNBQVEsdUJBQXVCO0lBNEZoRSxZQUNxRCxhQUFhLEVBQ3hELE1BQXlCO1FBRWpDLEtBQUssRUFBRSxDQUFDO1FBSDJDLGtCQUFhLEdBQWIsYUFBYSxDQUFBO1FBQ3hELFdBQU0sR0FBTixNQUFNLENBQW1CO1FBbkZuQixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUtkLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFzRG5CLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWhELGFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUIsWUFBTyxHQUFRLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUd6QixnQkFBVyxHQUFHLCtDQUErQyxDQUFDO1FBRzdELGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTFCLGtCQUFhLEdBQUcsT0FBTyxDQUFDO1FBRXhCLG1CQUFjLEdBQUcsT0FBTyxDQUFDO0lBT2pDLENBQUM7SUExRUQsSUFBa0IsR0FBRyxDQUFDLEdBQUc7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQW1CLElBQUksQ0FBQyxJQUFpQztRQUN2RCxJQUFJLElBQUksWUFBWSxTQUFTLEVBQUU7WUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjthQUFNLElBQUksSUFBSSxZQUFZLE1BQU0sRUFBRTtZQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNuQjthQUFNLElBQUksSUFBSSxFQUFFO1lBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDbkI7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUtELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFDVyxRQUFRLENBQUMsS0FBSztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFDVyxZQUFZLENBQUMsS0FBc0I7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxRQUFRLEVBQUUsS0FBSSxFQUFFLENBQUM7SUFDeEYsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQ1csYUFBYSxDQUFDLEtBQXNCO1FBQzdDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsUUFBUSxFQUFFLEtBQUksRUFBRSxDQUFDO0lBQ3pGLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFRTSxnQkFBZ0IsQ0FBQyxFQUFFLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xELGlCQUFpQixDQUFDLEVBQUUsSUFBVSxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFpQmxELFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLEtBQUssQ0FBQyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFBO2FBQ3REO1lBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxFQUFFO2dCQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFBO2FBQ2xEO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sUUFBUSxDQUFDLE9BQXdCOztRQUN0QyxJQUFJLENBQUEsTUFBQSxJQUFJLENBQUMsSUFBSSwwQ0FBRSxTQUFTLEtBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM3RCw2Q0FBNkM7WUFDN0MsNkRBQTZEO1lBQzdELElBQUk7WUFFSiwrQ0FBK0M7WUFDL0MsK0RBQStEO1lBQy9ELFVBQVU7U0FDWDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTSxVQUFVLENBQUMsSUFBSTtRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxPQUFpQjtRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN2QjtRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUE4QjtRQUMvQyxLQUFLLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBOEI7UUFDbkQsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUU5QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUNsQyxLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDOzttSEExS1UscUJBQXFCLGtCQTZGVixxQkFBcUI7dUdBN0ZoQyxxQkFBcUIsOGhCQWJyQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO1lBQ3BELEtBQUssRUFBRSxJQUFJO1NBQ1o7UUFDRDtZQUNFLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFdBQVcsRUFBRSxxQkFBcUI7WUFDbEMsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLGdGQVVhLDJCQUEyQiwyQkFBVSxXQUFXLHlDQUg3QyxvQkFBb0IsNEpDckR2QywrK0ZBc0ZBOzRGRHRDYSxxQkFBcUI7a0JBbEJqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUM1QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDOzRCQUNwRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyx1QkFBdUI7NEJBQ2xDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzswQkE4RkksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7NEVBMUZwQyxTQUFTO3NCQURmLFNBQVM7dUJBQUMsV0FBVztnQkFJZixNQUFNO3NCQURaLGVBQWU7dUJBQUMsb0JBQW9CO2dCQUk5Qix3QkFBd0I7c0JBRDlCLFlBQVk7dUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUdoRCxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBRVksR0FBRztzQkFBcEIsS0FBSzt1QkFBQyxLQUFLO2dCQUlPLElBQUk7c0JBQXRCLEtBQUs7dUJBQUMsTUFBTTtnQkFlTixNQUFNO3NCQURaLEtBQUs7Z0JBUUssUUFBUTtzQkFEbEIsS0FBSztnQkFVSyxZQUFZO3NCQUR0QixLQUFLO2dCQVVLLGFBQWE7c0JBRHZCLEtBQUs7Z0JBU1csTUFBTTtzQkFBdEIsTUFBTTtnQkFDVSxNQUFNO3NCQUF0QixNQUFNO2dCQUNVLFFBQVE7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQXN5bmNWYWxpZGF0b3IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGc0FwaUZpbGUgfSBmcm9tICdAZmlyZXN0aXRjaC9hcGknO1xuaW1wb3J0IHsgRnNGaWxlUGlja2VyU2VsZWN0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBGc0ZpbGVMYWJlbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZnMtZmlsZS1sYWJlbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRlNfRklMRV9NT0RVTEVfQ09ORklHIH0gZnJvbSAnLi4vLi4vaW5qZWN0b3JzL2ZpbGUtY29uZmlnLmluamVjdG9yJztcbmltcG9ydCB7IEZzRmlsZSB9IGZyb20gJy4uLy4uL21vZGVscy9mcy1maWxlJztcbmltcG9ydCB7IEZzRmlsZURyYWdCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vZnMtZmlsZS1kcmFnLWJhc2UvZnMtZmlsZS1kcmFnLWJhc2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWZpbGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICdmcy1maWxlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydmcy1maWxlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGc0ZpbGVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IEZzRmlsZVBpY2tlckNvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0ZpbGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBGc0ZpbGVEcmFnQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFzeW5jVmFsaWRhdG9yLCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpXG4gIHB1YmxpYyBmaWxlSW5wdXQ6IGFueTtcblxuICBAQ29udGVudENoaWxkcmVuKEZzRmlsZUxhYmVsRGlyZWN0aXZlKVxuICBwdWJsaWMgbGFiZWxzOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgQENvbnRlbnRDaGlsZChGc0ZpbGVQaWNrZXJTZWxlY3REaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIGZpbGVQaWNrZXJTZWxlY3RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBASW5wdXQoKSBwdWJsaWMgbWluV2lkdGggPSAwO1xuICBASW5wdXQoKSBwdWJsaWMgbWluSGVpZ2h0ID0gMDtcbiAgQElucHV0KCkgcHVibGljIGltYWdlV2lkdGg7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZUhlaWdodDtcbiAgQElucHV0KCkgcHVibGljIGltYWdlUXVhbGl0eTtcbiAgQElucHV0KCkgcHVibGljIGxhYmVsO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd0ZpbGVuYW1lID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGFsbG93RG93bmxvYWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGFsbG93UmV1cGxvYWQgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgbXVsdGlwbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGFsbG93UmVtb3ZlID0gZmFsc2U7XG5cbiAgQElucHV0KCd1cmwnKSBzZXQgdXJsKHVybCkge1xuICAgIHRoaXMuZmlsZSA9IHVybCA/IG5ldyBGc0ZpbGUodXJsKSA6IG51bGw7XG4gIH1cblxuICBASW5wdXQoJ2ZpbGUnKSBzZXQgZmlsZShmaWxlOiBGc0ZpbGUgfCBGc0FwaUZpbGUgfCBzdHJpbmcpIHtcbiAgICBpZiAoZmlsZSBpbnN0YW5jZW9mIEZzQXBpRmlsZSkge1xuICAgICAgdGhpcy5fZmlsZSA9IG5ldyBGc0ZpbGUoZmlsZSk7XG4gICAgfSBlbHNlIGlmIChmaWxlIGluc3RhbmNlb2YgRnNGaWxlKSB7XG4gICAgICB0aGlzLl9maWxlID0gZmlsZTtcbiAgICB9IGVsc2UgaWYgKGZpbGUpIHtcbiAgICAgIHRoaXMuX2ZpbGUgPSBuZXcgRnNGaWxlKGZpbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9maWxlID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLnByZXZpZXdGaWxlID0gdGhpcy5fZmlsZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY2NlcHQ6IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIHB1YmxpYyBnZXQgZmlsZSgpOiBGc0ZpbGUge1xuICAgIHJldHVybiB0aGlzLl9maWxlO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZSkge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcHJldmlld1dpZHRoKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICB0aGlzLl9wcmV2aWV3V2lkdGggPSBOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSA/IGAke3ZhbHVlfXB4YCA6IHZhbHVlPy50b1N0cmluZygpIHx8ICcnO1xuICB9XG5cbiAgcHVibGljIGdldCBwcmV2aWV3V2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZXZpZXdXaWR0aDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcHJldmlld0hlaWdodCh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgdGhpcy5fcHJldmlld0hlaWdodCA9IE51bWJlci5pc0ludGVnZXIodmFsdWUpID8gYCR7dmFsdWV9cHhgIDogdmFsdWU/LnRvU3RyaW5nKCkgfHwgJyc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByZXZpZXdIZWlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZXZpZXdIZWlnaHQ7XG4gIH1cblxuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBkb3dubG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8RnNGaWxlPigpO1xuXG4gIHB1YmxpYyBvbkNoYW5nZTogYW55ID0gKCkgPT4geyB9O1xuICBwdWJsaWMgb25Ub3VjaDogYW55ID0gKCkgPT4geyB9O1xuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbik6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuKTogdm9pZCB7IHRoaXMub25Ub3VjaCA9IGZuOyB9XG4gIHB1YmxpYyBpbnN0cnVjdGlvbiA9ICdEcmFnICYgRHJvcCB5b3VyIGZpbGUgb3IgdXNlIHRoZSBidXR0b24gYmVsb3cnO1xuICBwdWJsaWMgcHJldmlld0ZpbGU6IEZzRmlsZTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xuICBwcml2YXRlIF9wcmV2aWV3V2lkdGggPSAnMTUwcHgnO1xuICBwcml2YXRlIF9maWxlOiBGc0ZpbGU7XG4gIHByaXZhdGUgX3ByZXZpZXdIZWlnaHQgPSAnMTUwcHgnO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZTX0ZJTEVfTU9EVUxFX0NPTkZJRykgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5fbW9kdWxlQ29uZmlnKSB7XG4gICAgICBpZiAodGhpcy5hbGxvd0Rvd25sb2FkID09PSB2b2lkIDApIHtcbiAgICAgICAgdGhpcy5hbGxvd0Rvd25sb2FkID0gdGhpcy5fbW9kdWxlQ29uZmlnLmFsbG93RG93bmxvYWRcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYWxsb3dSZW1vdmUgPT09IHZvaWQgMCkge1xuICAgICAgICB0aGlzLmFsbG93UmVtb3ZlID0gdGhpcy5fbW9kdWxlQ29uZmlnLmFsbG93UmVtb3ZlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuZmlsZT8udHlwZUltYWdlICYmICh0aGlzLm1pbldpZHRoIHx8IHRoaXMubWluSGVpZ2h0KSkge1xuICAgICAgLy8gaWYodGhpcy5maWxlLmltYWdlV2lkdGggPCB0aGlzLm1pbldpZHRoKSB7XG4gICAgICAvLyAgIHJldHVybiB7IG1pbldpZHRoOiBgTWluaW11bSB3aWR0aCAke3RoaXMubWluV2lkdGh9cHhgIH07XG4gICAgICAvLyB9XG5cbiAgICAgIC8vIGlmKHRoaXMuZmlsZS5pbWFnZUhlaWdodCA8IHRoaXMubWluSGVpZ2h0KSB7XG4gICAgICAvLyAgIHJldHVybiB7IG1pbldpZHRoOiBgTWluaW11bSBoZWlnaHQgJHt0aGlzLm1pbkhlaWdodH1weGAgfTtcbiAgICAgIC8vIH0gICAgICBcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJldmlld1BlcmNlbnQoKSB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLl9wcmV2aWV3V2lkdGgpLm1hdGNoKC8lLyk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZShmaWxlKTogdm9pZCB7XG4gICAgdGhpcy5maWxlID0gZmlsZTtcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RGaWxlUHJldmlldyhmc0ZpbGVzOiBGc0ZpbGVbXSkge1xuICAgIHRoaXMucHJldmlld0ZpbGUgPSBmc0ZpbGVzWzBdO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEZpbGUoZnNGaWxlOiBGc0ZpbGUpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuZmlsZSA9IGZzRmlsZTtcbiAgICAgIHRoaXMub25DaGFuZ2UoZnNGaWxlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdC5lbWl0KGZzRmlsZSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRmlsZSgpIHtcbiAgICB0aGlzLmZpbGUgPSBudWxsO1xuICAgIHRoaXMucHJldmlld0ZpbGUgPSBudWxsO1xuICAgIHRoaXMucmVtb3ZlLmVtaXQodGhpcy5maWxlKTtcbiAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICB9XG5cbiAgcHVibGljIGFjdGlvbkNsaWNrKGV2ZW50OiB7IGV2ZW50OiBQb2ludGVyRXZlbnQgfSkge1xuICAgIGV2ZW50LmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGRvd25sb2FkQ2xpY2tlZChldmVudDogeyBldmVudDogUG9pbnRlckV2ZW50IH0pIHtcbiAgICBldmVudC5ldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0aGlzLmRvd25sb2FkLm9ic2VydmVycy5sZW5ndGgpIHtcbiAgICAgIGV2ZW50LmV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmRvd25sb2FkLmVtaXQodGhpcy5maWxlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxufVxuIiwiPGZzLWxhYmVsLWZpZWxkXG4gICAgY2xhc3M9XCJmcy1mb3JtLXdyYXBwZXJcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3BlcmNlbnQtcHJldmlldyc6IHByZXZpZXdQZXJjZW50IH1cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsOyBlbHNlIGxhYmVsQ29udGVudFwiPlxuICAgIDxmcy1sYWJlbCBjbGFzcz1cImZzLWZvcm0tbGFiZWxcIj57e2xhYmVsfX08L2ZzLWxhYmVsPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNsYWJlbENvbnRlbnQ+XG4gICAgPGZzLWxhYmVsICpuZ0lmPVwibGFiZWxzLmxlbmd0aFwiIGNsYXNzPVwiZnMtZm9ybS1sYWJlbFwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZzRmlsZUxhYmVsXVwiPjwvbmctY29udGVudD5cbiAgICA8L2ZzLWxhYmVsPlxuICA8L25nLXRlbXBsYXRlPlxuICA8ZnMtZmlsZVxuICAgICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgICAgKHNlbGVjdCk9XCJzZWxlY3RGaWxlKCRldmVudClcIlxuICAgICAgKHNlbGVjdFByZXZpZXdzKT1cInNlbGVjdEZpbGVQcmV2aWV3KCRldmVudClcIlxuICAgICAgW2ltYWdlV2lkdGhdPVwiaW1hZ2VXaWR0aFwiXG4gICAgICBbaW1hZ2VIZWlnaHRdPVwiaW1hZ2VIZWlnaHRcIlxuICAgICAgW2ltYWdlUXVhbGl0eV09XCJpbWFnZVF1YWxpdHlcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ3cmFwXCJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cInByZXZpZXdXaWR0aFwiXG4gICAgICAgIFtzdHlsZS5oZWlnaHRdPVwicHJldmlld0hlaWdodFwiPlxuICAgICAgPGZzLWZpbGUtcHJldmlld1xuICAgICAgICAgIGNsYXNzPVwicHJldmlld1wiXG4gICAgICAgICAgKm5nSWY9XCJwcmV2aWV3RmlsZTsgZWxzZSBwcmV2aWV3XCJcbiAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZUZpbGUoKVwiXG4gICAgICAgICAgW2ZpbGVdPVwicHJldmlld0ZpbGVcIlxuICAgICAgICAgIFtzaG93RmlsZW5hbWVdPVwic2hvd0ZpbGVuYW1lXCJcbiAgICAgICAgICBbcHJldmlld0hlaWdodF09XCJudWxsXCJcbiAgICAgICAgICBbcHJldmlld1dpZHRoXT1cIm51bGxcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAqbmdJZj1cImFsbG93UmVtb3ZlXCJcbiAgICAgICAgICAgIGZzLWZpbGUtcHJldmlldy1hY3Rpb25cbiAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcC1yaWdodFwiXG4gICAgICAgICAgICBhY3Rpb249XCJyZW1vdmVcIlxuICAgICAgICAgICAgdG9vbHRpcD1cIlJlbW92ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCJhbGxvd1JldXBsb2FkXCJcbiAgICAgICAgICAgIGZzLWZpbGUtcHJldmlldy1hY3Rpb25cbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICB0b29sdGlwPVwiUmV1cGxvYWRcIj5cbiAgICAgICAgICA8bWF0LWljb24+dXBsb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBmcy1maWxlLXByZXZpZXctYWN0aW9uXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICBhY3Rpb249XCJkb3dubG9hZFwiXG4gICAgICAgICAgICB0b29sdGlwPVwiRG93bmxvYWRcIlxuICAgICAgICAgICAgW2hpZGVdPVwiIShhbGxvd0Rvd25sb2FkICYmICgoZG93bmxvYWQub2JzZXJ2ZXJzLmxlbmd0aCAmJiBmaWxlKSB8fCBmaWxlLnVybCkpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZENsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIFtocmVmXT1cInByZXZpZXdGaWxlLnVybFwiXG4gICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRvd25sb2FkXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+ZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZnMtZmlsZS1wcmV2aWV3PlxuXG4gICAgICA8bmctdGVtcGxhdGUgI3ByZXZpZXc+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlUGlja2VyU2VsZWN0VGVtcGxhdGVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbGVQaWNrZXJTZWxlY3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWxlUGlja2VyU2VsZWN0VGVtcGxhdGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCI+XG4gICAgICAgICAgICA8bWF0LWljb24+dXBsb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnN0cnVjdGlvblwiPnt7aW5zdHJ1Y3Rpb259fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1yYWlzZWQtYnV0dG9uXCI+VXBsb2FkPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9mcy1maWxlPlxuICA8ZnMtbGFiZWwtbWVzc2FnZSBjbGFzcz1cImZzLWZvcm0tbWVzc2FnZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZnMtZm9ybS1oaW50XCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZnNGaWxlSGludF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZnNGaWxlTWVzc2FnZUxhYmVsXVwiPjwvbmctY29udGVudD5cbiAgICA8L3NwYW4+XG4gIDwvZnMtbGFiZWwtbWVzc2FnZT5cbjwvZnMtbGFiZWwtZmllbGQ+XG4iXX0= |
@@ -32,2 +32,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core'; | ||
} | ||
ngOnChanges(changes) { | ||
if (changes.file) { | ||
this.loaded = false; | ||
} | ||
} | ||
ngAfterContentInit() { | ||
@@ -68,3 +73,3 @@ this._cleanActions(); | ||
FsFilePreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsFilePreviewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); | ||
FsFilePreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FsFilePreviewComponent, selector: "fs-file-preview", inputs: { showFilename: "showFilename", previewWidth: "previewWidth", previewHeight: "previewHeight", file: "file", url: "url", index: "index", showActionOn: "showActionOn", setActions: "setActions", setActionsTemplate: "setActionsTemplate" }, outputs: { remove: "remove" }, usesInheritance: true, ngImport: i0, template: "<div\n [style.width.px]=\"previewWidth\"\n [style.height.px]=\"previewHeight\"\n class=\"preview-container\"\n [ngClass]=\"{ \n 'has-actions': !!actions.length, \n 'type-image': file.typeImage && file.exists,\n 'loaded': loaded,\n 'show-action-always': showActionOn === 'always'\n }\">\n\n <!-- Image container -->\n <ng-container \n *ngIf=\"file?.exists && file.typeImage; else nonImage\">\n <ng-container *ngIf=\"(file | fsFileSrc:previewWidth:previewHeight | async) as src\">\n <img \n [src]=\"src\" \n (load)=\"previewLoaded()\">\n </ng-container>\n\n <ng-container *ngIf=\"!loaded\">\n <div class=\"loader\"></div>\n </ng-container>\n </ng-container>\n\n <!-- Non image container -->\n <ng-template #nonImage>\n <div class=\"file-details\">\n <div class=\"file-icon\">\n <div class=\"file-ext\">{{file.extension}}</div>\n <mat-icon>insert_drive_file</mat-icon>\n </div>\n <div class=\"file-name\" [matTooltip]=\"file.name\" *ngIf=\"showFilename && file.name\">{{file.name}}</div>\n </div>\n </ng-template>\n\n <div class=\"actions\">\n <ng-container *ngFor=\"let action of actionTemplates; let index = index\">\n <div\n class=\"action mat-mini-fab mat-primary\"\n *ngIf=\"!action.hide\"\n [class]=\"action.placement\"\n [matTooltip]=\"action.tooltip\"\n (click)=\"callAction($event, action, index)\">\n <span class=\"mat-button-wrapper\">\n <ng-template [ngTemplateOutlet]=\"actionTemplateRefs[index]\"></ng-template>\n </span>\n </div>\n </ng-container>\n </div>\n\n <div class=\"spinner\">\n <mat-spinner *ngIf=\"file.progress\" [diameter]=\"30\"></mat-spinner>\n </div>\n\n <ng-content></ng-content>\n</div>", styles: [":host{border:1px #efefef solid;display:inline-block;position:relative;vertical-align:top;overflow:hidden;border-radius:3px}:host .file-details{flex-direction:column;display:flex;align-items:center;padding:5px}:host .file-details .file-icon{position:relative}:host .file-details .file-ext{font-weight:bold;text-align:center;text-transform:uppercase;font-size:20px;position:absolute;width:100%;bottom:28px;color:#fff}:host .file-details mat-icon{font-size:90px;width:90px;height:90px;color:#ccc}:host .file-details .file-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 5px;font-size:75%;text-align:center;width:100%}:host .preview-container.show-action-always .actions .action.top-left,:host .preview-container:hover .actions .action.top-left,:host .preview-container:focus .actions .action.top-left{top:8px;left:8px}:host .preview-container.show-action-always .actions .action.top-right,:host .preview-container:hover .actions .action.top-right,:host .preview-container:focus .actions .action.top-right{top:8px;right:8px}:host .preview-container.show-action-always .actions .action.bottom-left,:host .preview-container:hover .actions .action.bottom-left,:host .preview-container:focus .actions .action.bottom-left{bottom:8px;left:8px}:host .preview-container.show-action-always .actions .action.bottom-right,:host .preview-container:hover .actions .action.bottom-right,:host .preview-container:focus .actions .action.bottom-right{bottom:8px;right:8px}:host .preview-container{overflow:hidden;box-sizing:border-box;margin:auto;display:flex;justify-content:center;align-items:center;flex-grow:1;height:100%}:host .preview-container.type-image{background-image:linear-gradient(to right,rgba(255,255,255,.75),rgba(255,255,255,.75)),linear-gradient(to right,black 50%,white 50%),linear-gradient(to bottom,black 50%,white 50%);background-blend-mode:normal,difference,normal;background-size:20px 20px}:host .preview-container:not(.loaded){background:none}:host .preview-container:not(.loaded) .actions{display:none}:host .preview-container.loaded img{opacity:1}:host .actions{position:absolute;width:100%;height:100%;top:0;left:0}@media only screen and (max-width: 767.98px){:host .actions{display:block}}@media only screen and (min-width: 768px){:host .actions .action.top-left,:host .actions .action.top-right,:host .actions .action.bottom-left,:host .actions .action.bottom-right{transition:top .3s,bottom .3s,left .3s,right .3s}:host .actions .action.top-left{top:-50px;left:-50px}:host .actions .action.top-right{top:-50px;right:-50px}:host .actions .action.bottom-left{bottom:-50px;left:-50px}:host .actions .action.bottom-right{bottom:-50px;right:-50px}}:host .actions .action{position:absolute;cursor:pointer}:host .actions .action.hide{display:none}:host:hover .actions,:host:focus .actions{display:block}:host img{display:block;object-fit:cover;width:100%;height:100%}:host .mat-button-wrapper{padding:0;line-height:15px!important}:host .spinner{position:absolute;top:50%;left:50%;margin-left:-25%;margin-top:-25%}img{opacity:0}.loader{width:50%;height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.loader:after{content:\" \";display:block;width:100%;height:100%;border-radius:50%;border:6px solid #ccc;border-color:#ccc transparent #ccc transparent;animation:lds-dual-ring 1.2s linear infinite;box-sizing:border-box}@keyframes lds-dual-ring{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i3.AsyncPipe, "fsFileSrc": i5.FsFileSrcPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush }); | ||
FsFilePreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FsFilePreviewComponent, selector: "fs-file-preview", inputs: { showFilename: "showFilename", previewWidth: "previewWidth", previewHeight: "previewHeight", file: "file", url: "url", index: "index", showActionOn: "showActionOn", setActions: "setActions", setActionsTemplate: "setActionsTemplate" }, outputs: { remove: "remove" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n [style.width.px]=\"previewWidth\"\n [style.height.px]=\"previewHeight\"\n class=\"preview-container\"\n [ngClass]=\"{ \n 'has-actions': !!actions.length, \n 'type-image': file.typeImage && file.exists,\n 'loaded': loaded,\n 'show-action-always': showActionOn === 'always'\n }\">\n\n <!-- Image container -->\n <ng-container \n *ngIf=\"file?.exists && file.typeImage; else nonImage\">\n <ng-container *ngIf=\"(file | fsFileSrc | async) as src\">\n <img \n [src]=\"src\" \n (load)=\"previewLoaded()\">\n </ng-container>\n \n <ng-container *ngIf=\"!loaded\">\n <div class=\"loader\"></div>\n </ng-container>\n </ng-container>\n\n <!-- Non image container -->\n <ng-template #nonImage>\n <div class=\"file-details\">\n <div class=\"file-icon\">\n <div class=\"file-ext\">{{file.extension}}</div>\n <mat-icon>insert_drive_file</mat-icon>\n </div>\n <div class=\"file-name\" [matTooltip]=\"file.name\" *ngIf=\"showFilename && file.name\">{{file.name}}</div>\n </div>\n </ng-template>\n\n <div class=\"actions\">\n <ng-container *ngFor=\"let action of actionTemplates; let index = index\">\n <div\n class=\"action mat-mini-fab mat-primary\"\n *ngIf=\"!action.hide\"\n [class]=\"action.placement\"\n [matTooltip]=\"action.tooltip\"\n (click)=\"callAction($event, action, index)\">\n <span class=\"mat-button-wrapper\">\n <ng-template [ngTemplateOutlet]=\"actionTemplateRefs[index]\"></ng-template>\n </span>\n </div>\n </ng-container>\n </div>\n\n <div class=\"spinner\">\n <mat-spinner *ngIf=\"file.progress\" [diameter]=\"30\"></mat-spinner>\n </div>\n\n <ng-content></ng-content>\n</div>", styles: [":host{border:1px #efefef solid;display:inline-block;position:relative;vertical-align:top;overflow:hidden;border-radius:3px}:host .file-details{flex-direction:column;display:flex;align-items:center;padding:5px}:host .file-details .file-icon{position:relative}:host .file-details .file-ext{font-weight:bold;text-align:center;text-transform:uppercase;font-size:20px;position:absolute;width:100%;bottom:28px;color:#fff}:host .file-details mat-icon{font-size:90px;width:90px;height:90px;color:#ccc}:host .file-details .file-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 5px;font-size:75%;text-align:center;width:100%}:host .preview-container.show-action-always .actions .action.top-left,:host .preview-container:hover .actions .action.top-left,:host .preview-container:focus .actions .action.top-left{top:8px;left:8px}:host .preview-container.show-action-always .actions .action.top-right,:host .preview-container:hover .actions .action.top-right,:host .preview-container:focus .actions .action.top-right{top:8px;right:8px}:host .preview-container.show-action-always .actions .action.bottom-left,:host .preview-container:hover .actions .action.bottom-left,:host .preview-container:focus .actions .action.bottom-left{bottom:8px;left:8px}:host .preview-container.show-action-always .actions .action.bottom-right,:host .preview-container:hover .actions .action.bottom-right,:host .preview-container:focus .actions .action.bottom-right{bottom:8px;right:8px}:host .preview-container{overflow:hidden;box-sizing:border-box;margin:auto;display:flex;justify-content:center;align-items:center;flex-grow:1;height:100%}:host .preview-container.type-image{background-image:linear-gradient(to right,rgba(255,255,255,.75),rgba(255,255,255,.75)),linear-gradient(to right,black 50%,white 50%),linear-gradient(to bottom,black 50%,white 50%);background-blend-mode:normal,difference,normal;background-size:20px 20px}:host .preview-container:not(.loaded){background:none}:host .preview-container:not(.loaded) .actions{display:none}:host .preview-container.loaded img{opacity:1}:host .actions{position:absolute;width:100%;height:100%;top:0;left:0}@media only screen and (max-width: 767.98px){:host .actions{display:block}}:host .actions .action.top-left{top:8px;left:8px}:host .actions .action.top-right{top:8px;right:8px}:host .actions .action.bottom-left{bottom:8px;left:8px}:host .actions .action.bottom-right{bottom:8px;right:8px}@media only screen and (min-width: 768px){:host .actions .action.top-left,:host .actions .action.top-right,:host .actions .action.bottom-left,:host .actions .action.bottom-right{transition:top .3s,bottom .3s,left .3s,right .3s}:host .actions .action.top-left{top:-50px;left:-50px}:host .actions .action.top-right{top:-50px;right:-50px}:host .actions .action.bottom-left{bottom:-50px;left:-50px}:host .actions .action.bottom-right{bottom:-50px;right:-50px}}:host .actions .action{position:absolute;cursor:pointer}:host .actions .action.hide{display:none}:host:hover .actions,:host:focus .actions{display:block}:host img{display:block;object-fit:cover;width:100%;height:100%}:host .mat-button-wrapper{padding:0;line-height:15px!important}:host .spinner{position:absolute;top:50%;left:50%;margin-left:-25%;margin-top:-25%}img{opacity:0}.loader{height:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);max-height:70px;aspect-ratio:1/1}.loader:after{content:\" \";display:block;width:100%;height:100%;border-radius:50%;border:6px solid #ccc;border-color:#ccc transparent #ccc transparent;animation:lds-dual-ring 1.2s linear infinite;box-sizing:border-box}@keyframes lds-dual-ring{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i3.AsyncPipe, "fsFileSrc": i5.FsFileSrcPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush }); | ||
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsFilePreviewComponent, decorators: [{ | ||
@@ -99,2 +104,2 @@ type: Component, | ||
}] } }); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtZmlsZS1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mcy1maWxlLXByZXZpZXcvZnMtZmlsZS1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mcy1maWxlLXByZXZpZXcvZnMtZmlsZS1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7OztBQVMzRixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsMkJBQTJCO0lBTnZFOztRQVFTLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFYixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNiLGlCQUFZLEdBQVcsR0FBRyxDQUFDO1FBQzNCLGtCQUFhLEdBQVcsR0FBRyxDQUFDO1FBSTVCLGlCQUFZLEdBQXVCLE9BQU8sQ0FBQztRQVUxQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQXNELENBQUM7S0ErQ2xHO0lBdkRDLElBQWEsVUFBVSxDQUFDLEtBQUs7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBYSxrQkFBa0IsQ0FBQyxLQUFLO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUlNLFFBQVE7UUFD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Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHsgRnNGaWxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEZzRmlsZVByZXZpZXdzQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2ZzLWZpbGUtcHJldmlldy1iYXNlL2ZzLWZpbGUtcHJldmlldy1iYXNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1maWxlLXByZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJ2ZzLWZpbGUtcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydmcy1maWxlLXByZXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzRmlsZVByZXZpZXdDb21wb25lbnQgZXh0ZW5kcyBGc0ZpbGVQcmV2aWV3c0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkluaXQge1xuXG4gIHB1YmxpYyBsb2FkZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzaG93RmlsZW5hbWUgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgcHJldmlld1dpZHRoOiBudW1iZXIgPSAxNTA7XG4gIEBJbnB1dCgpIHB1YmxpYyBwcmV2aWV3SGVpZ2h0OiBudW1iZXIgPSAxNTA7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWxlOiBGc0ZpbGU7XG4gIEBJbnB1dCgpIHB1YmxpYyB1cmw6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGluZGV4OiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93QWN0aW9uT246ICdob3ZlcicgfCAnYWx3YXlzJyA9ICdob3Zlcic7XG5cbiAgQElucHV0KCkgc2V0IHNldEFjdGlvbnModmFsdWUpIHtcbiAgICB0aGlzLmFjdGlvbnMucHVzaCguLi52YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgc2V0QWN0aW9uc1RlbXBsYXRlKHZhbHVlKSB7XG4gICAgdGhpcy5hY3Rpb25zVGVtcGxhdGUucHVzaCguLi52YWx1ZSk7XG4gIH1cblxuICBAT3V0cHV0KCkgcHVibGljIHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBldmVudDogTW91c2VFdmVudCwgZmlsZTogRnNGaWxlLCBpbmRleDogbnVtYmVyIH0+KCk7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVybCkge1xuICAgICAgdGhpcy5maWxlID0gbmV3IEZzRmlsZSh0aGlzLnVybCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl9jbGVhbkFjdGlvbnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2aWV3TG9hZGVkKCkge1xuICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsQWN0aW9uKCRldmVudDogTW91c2VFdmVudCwgYWN0aW9uLCBpbmRleCkge1xuICAgIGlmIChhY3Rpb24uY2xpY2spIHtcbiAgICAgIGFjdGlvbi5jbGljay5lbWl0KHsgZXZlbnQ6ICRldmVudCwgZmlsZTogdGhpcy5maWxlLCBpbmRleCB9KTtcbiAgICB9XG5cbiAgICBpZiAoYWN0aW9uLmFjdGlvbiA9PSAncmVtb3ZlJykge1xuICAgICAgdGhpcy5yZW1vdmUuZW1pdCh7IGV2ZW50OiAkZXZlbnQsIGZpbGU6IHRoaXMuZmlsZSwgaW5kZXggfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xlYW5BY3Rpb25zKCkge1xuICAgIHRoaXMuYWN0aW9uVGVtcGxhdGVzXG4gICAgICAuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgICAgICBpZiAoYWN0aW9uLmZvclR5cGVzKSB7XG4gICAgICAgICAgLy8gc2F2ZSBvcmlnaW5hbCB0eXBlXG4gICAgICAgICAgY29uc3QgW29yaWdpbmFsRmlsZVR5cGUsIG9yaWdpbmFsQ29udGVudFR5cGVdID0gdGhpcy5maWxlLnR5cGUuc3BsaXQoJy8nKTtcbiAgICAgICAgICBjb25zdCB0eXBlczogYW55ID0gaXNBcnJheShhY3Rpb24uZm9yVHlwZXMpID8gYWN0aW9uLmZvclR5cGVzIDogW2FjdGlvbi5mb3JUeXBlc107XG5cbiAgICAgICAgICAvLyBMb29raW5nIGZvciBhbGxvd2VkIHR5cGVcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBbZmlsZVR5cGUsIGNvbnRlbnRUeXBlXSA9IHR5cGVzW2ldLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICBjb25zdCBhbGxvd2VkID0gZmlsZVR5cGUgPT09IG9yaWdpbmFsRmlsZVR5cGUgJiYgKGNvbnRlbnRUeXBlID09PSBvcmlnaW5hbENvbnRlbnRUeXBlIHx8IGNvbnRlbnRUeXBlID09PSAnKicpO1xuXG4gICAgICAgICAgICBpZiAoIWFsbG93ZWQpIHtcbiAgICAgICAgICAgICAgYWN0aW9uLmhpZGUgPSB0cnVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2XG4gICAgW3N0eWxlLndpZHRoLnB4XT1cInByZXZpZXdXaWR0aFwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJwcmV2aWV3SGVpZ2h0XCJcbiAgICBjbGFzcz1cInByZXZpZXctY29udGFpbmVyXCJcbiAgICBbbmdDbGFzc109XCJ7IFxuICAgICAgJ2hhcy1hY3Rpb25zJzogISFhY3Rpb25zLmxlbmd0aCwgXG4gICAgICAndHlwZS1pbWFnZSc6IGZpbGUudHlwZUltYWdlICYmIGZpbGUuZXhpc3RzLFxuICAgICAgJ2xvYWRlZCc6IGxvYWRlZCxcbiAgICAgICdzaG93LWFjdGlvbi1hbHdheXMnOiBzaG93QWN0aW9uT24gPT09ICdhbHdheXMnXG4gICAgfVwiPlxuXG4gIDwhLS0gSW1hZ2UgY29udGFpbmVyIC0tPlxuICA8bmctY29udGFpbmVyIFxuICAgICAgKm5nSWY9XCJmaWxlPy5leGlzdHMgJiYgZmlsZS50eXBlSW1hZ2U7IGVsc2Ugbm9uSW1hZ2VcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpbGUgfCBmc0ZpbGVTcmM6cHJldmlld1dpZHRoOnByZXZpZXdIZWlnaHQgfCBhc3luYykgYXMgc3JjXCI+XG4gICAgICA8aW1nIFxuICAgICAgICBbc3JjXT1cInNyY1wiIFxuICAgICAgICAobG9hZCk9XCJwcmV2aWV3TG9hZGVkKClcIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGVkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibG9hZGVyXCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gTm9uIGltYWdlIGNvbnRhaW5lciAtLT5cbiAgPG5nLXRlbXBsYXRlICNub25JbWFnZT5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS1kZXRhaWxzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pY29uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWV4dFwiPnt7ZmlsZS5leHRlbnNpb259fTwvZGl2PlxuICAgICAgICA8bWF0LWljb24+aW5zZXJ0X2RyaXZlX2ZpbGU8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1uYW1lXCIgW21hdFRvb2x0aXBdPVwiZmlsZS5uYW1lXCIgKm5nSWY9XCJzaG93RmlsZW5hbWUgJiYgZmlsZS5uYW1lXCI+e3tmaWxlLm5hbWV9fTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvblRlbXBsYXRlczsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImFjdGlvbiBtYXQtbWluaS1mYWIgbWF0LXByaW1hcnlcIlxuICAgICAgICAgICpuZ0lmPVwiIWFjdGlvbi5oaWRlXCJcbiAgICAgICAgICBbY2xhc3NdPVwiYWN0aW9uLnBsYWNlbWVudFwiXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwiYWN0aW9uLnRvb2x0aXBcIlxuICAgICAgICAgIChjbGljayk9XCJjYWxsQWN0aW9uKCRldmVudCwgYWN0aW9uLCBpbmRleClcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtYnV0dG9uLXdyYXBwZXJcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWN0aW9uVGVtcGxhdGVSZWZzW2luZGV4XVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPlxuICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImZpbGUucHJvZ3Jlc3NcIiBbZGlhbWV0ZXJdPVwiMzBcIj48L21hdC1zcGlubmVyPlxuICA8L2Rpdj5cblxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtZmlsZS1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mcy1maWxlLXByZXZpZXcvZnMtZmlsZS1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mcy1maWxlLXByZXZpZXcvZnMtZmlsZS1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7OztBQVMzRixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsMkJBQTJCO0lBTnZFOztRQVFTLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFYixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNiLGlCQUFZLEdBQVcsR0FBRyxDQUFDO1FBQzNCLGtCQUFhLEdBQVcsR0FBRyxDQUFDO1FBSTVCLGlCQUFZLEdBQXVCLE9BQU8sQ0FBQztRQVUxQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQXNELENBQUM7S0FxRGxHO0lBN0RDLElBQWEsVUFBVSxDQUFDLEtBQUs7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBYSxrQkFBa0IsQ0FBQyxLQUFLO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUlNLFFBQVE7UUFD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QUs7Z0JBSU8sa0JBQWtCO3NCQUE5QixLQUFLO2dCQUlXLE1BQU07c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7IEZzRmlsZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBGc0ZpbGVQcmV2aWV3c0Jhc2VDb21wb25lbnQgfSBmcm9tICcuLi9mcy1maWxlLXByZXZpZXctYmFzZS9mcy1maWxlLXByZXZpZXctYmFzZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtZmlsZS1wcmV2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICdmcy1maWxlLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnZnMtZmlsZS1wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc0ZpbGVQcmV2aWV3Q29tcG9uZW50IGV4dGVuZHMgRnNGaWxlUHJldmlld3NCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIHB1YmxpYyBsb2FkZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzaG93RmlsZW5hbWUgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgcHJldmlld1dpZHRoOiBudW1iZXIgPSAxNTA7XG4gIEBJbnB1dCgpIHB1YmxpYyBwcmV2aWV3SGVpZ2h0OiBudW1iZXIgPSAxNTA7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWxlOiBGc0ZpbGU7XG4gIEBJbnB1dCgpIHB1YmxpYyB1cmw6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGluZGV4OiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93QWN0aW9uT246ICdob3ZlcicgfCAnYWx3YXlzJyA9ICdob3Zlcic7XG5cbiAgQElucHV0KCkgc2V0IHNldEFjdGlvbnModmFsdWUpIHtcbiAgICB0aGlzLmFjdGlvbnMucHVzaCguLi52YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgc2V0QWN0aW9uc1RlbXBsYXRlKHZhbHVlKSB7XG4gICAgdGhpcy5hY3Rpb25zVGVtcGxhdGUucHVzaCguLi52YWx1ZSk7XG4gIH1cblxuICBAT3V0cHV0KCkgcHVibGljIHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBldmVudDogTW91c2VFdmVudCwgZmlsZTogRnNGaWxlLCBpbmRleDogbnVtYmVyIH0+KCk7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVybCkge1xuICAgICAgdGhpcy5maWxlID0gbmV3IEZzRmlsZSh0aGlzLnVybCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5maWxlKSB7XG4gICAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5fY2xlYW5BY3Rpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgcHJldmlld0xvYWRlZCgpIHtcbiAgICB0aGlzLmxvYWRlZCA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgY2FsbEFjdGlvbigkZXZlbnQ6IE1vdXNlRXZlbnQsIGFjdGlvbiwgaW5kZXgpIHtcbiAgICBpZiAoYWN0aW9uLmNsaWNrKSB7XG4gICAgICBhY3Rpb24uY2xpY2suZW1pdCh7IGV2ZW50OiAkZXZlbnQsIGZpbGU6IHRoaXMuZmlsZSwgaW5kZXggfSk7XG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbi5hY3Rpb24gPT0gJ3JlbW92ZScpIHtcbiAgICAgIHRoaXMucmVtb3ZlLmVtaXQoeyBldmVudDogJGV2ZW50LCBmaWxlOiB0aGlzLmZpbGUsIGluZGV4IH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NsZWFuQWN0aW9ucygpIHtcbiAgICB0aGlzLmFjdGlvblRlbXBsYXRlc1xuICAgICAgLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbi5mb3JUeXBlcykge1xuICAgICAgICAgIC8vIHNhdmUgb3JpZ2luYWwgdHlwZVxuICAgICAgICAgIGNvbnN0IFtvcmlnaW5hbEZpbGVUeXBlLCBvcmlnaW5hbENvbnRlbnRUeXBlXSA9IHRoaXMuZmlsZS50eXBlLnNwbGl0KCcvJyk7XG4gICAgICAgICAgY29uc3QgdHlwZXM6IGFueSA9IGlzQXJyYXkoYWN0aW9uLmZvclR5cGVzKSA/IGFjdGlvbi5mb3JUeXBlcyA6IFthY3Rpb24uZm9yVHlwZXNdO1xuXG4gICAgICAgICAgLy8gTG9va2luZyBmb3IgYWxsb3dlZCB0eXBlXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgW2ZpbGVUeXBlLCBjb250ZW50VHlwZV0gPSB0eXBlc1tpXS5zcGxpdCgnLycpO1xuICAgICAgICAgICAgY29uc3QgYWxsb3dlZCA9IGZpbGVUeXBlID09PSBvcmlnaW5hbEZpbGVUeXBlICYmIChjb250ZW50VHlwZSA9PT0gb3JpZ2luYWxDb250ZW50VHlwZSB8fCBjb250ZW50VHlwZSA9PT0gJyonKTtcblxuICAgICAgICAgICAgaWYgKCFhbGxvd2VkKSB7XG4gICAgICAgICAgICAgIGFjdGlvbi5oaWRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPGRpdlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJwcmV2aWV3V2lkdGhcIlxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicHJldmlld0hlaWdodFwiXG4gICAgY2xhc3M9XCJwcmV2aWV3LWNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwieyBcbiAgICAgICdoYXMtYWN0aW9ucyc6ICEhYWN0aW9ucy5sZW5ndGgsIFxuICAgICAgJ3R5cGUtaW1hZ2UnOiBmaWxlLnR5cGVJbWFnZSAmJiBmaWxlLmV4aXN0cyxcbiAgICAgICdsb2FkZWQnOiBsb2FkZWQsXG4gICAgICAnc2hvdy1hY3Rpb24tYWx3YXlzJzogc2hvd0FjdGlvbk9uID09PSAnYWx3YXlzJ1xuICAgIH1cIj5cblxuICA8IS0tIEltYWdlIGNvbnRhaW5lciAtLT5cbiAgPG5nLWNvbnRhaW5lciBcbiAgICAgICpuZ0lmPVwiZmlsZT8uZXhpc3RzICYmIGZpbGUudHlwZUltYWdlOyBlbHNlIG5vbkltYWdlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWxlIHwgZnNGaWxlU3JjIHwgYXN5bmMpIGFzIHNyY1wiPlxuICAgICAgPGltZyBcbiAgICAgICAgW3NyY109XCJzcmNcIiBcbiAgICAgICAgKGxvYWQpPVwicHJldmlld0xvYWRlZCgpXCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICBcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRlZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxvYWRlclwiPjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIE5vbiBpbWFnZSBjb250YWluZXIgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjbm9uSW1hZ2U+XG4gICAgPGRpdiBjbGFzcz1cImZpbGUtZGV0YWlsc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbGUtaWNvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1leHRcIj57e2ZpbGUuZXh0ZW5zaW9ufX08L2Rpdj5cbiAgICAgICAgPG1hdC1pY29uPmluc2VydF9kcml2ZV9maWxlPC9tYXQtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZpbGUtbmFtZVwiIFttYXRUb29sdGlwXT1cImZpbGUubmFtZVwiICpuZ0lmPVwic2hvd0ZpbGVuYW1lICYmIGZpbGUubmFtZVwiPnt7ZmlsZS5uYW1lfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25UZW1wbGF0ZXM7IGxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb24gbWF0LW1pbmktZmFiIG1hdC1wcmltYXJ5XCJcbiAgICAgICAgICAqbmdJZj1cIiFhY3Rpb24uaGlkZVwiXG4gICAgICAgICAgW2NsYXNzXT1cImFjdGlvbi5wbGFjZW1lbnRcIlxuICAgICAgICAgIFttYXRUb29sdGlwXT1cImFjdGlvbi50b29sdGlwXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2FsbEFjdGlvbigkZXZlbnQsIGFjdGlvbiwgaW5kZXgpXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWJ1dHRvbi13cmFwcGVyXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFjdGlvblRlbXBsYXRlUmVmc1tpbmRleF1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNwaW5uZXJcIj5cbiAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJmaWxlLnByb2dyZXNzXCIgW2RpYW1ldGVyXT1cIjMwXCI+PC9tYXQtc3Bpbm5lcj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+Il19 |
@@ -1,6 +0,5 @@ | ||
import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Inject, Input, NgZone, Optional, Output, ViewChild } from '@angular/core'; | ||
import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Inject, Input, Optional, Output, ViewChild } from '@angular/core'; | ||
import { FsMessage, MessageMode } from '@firestitch/message'; | ||
import { map, switchMap, takeUntil } from 'rxjs/operators'; | ||
import { Subject } from 'rxjs'; | ||
import { FsFileDragBaseComponent } from '../fs-file-drag-base/fs-file-drag-base'; | ||
import { Subject, of } from 'rxjs'; | ||
import { catchError, map, switchMap, takeUntil, tap } from 'rxjs/operators'; | ||
import { FileProcessor } from '../../classes'; | ||
@@ -10,2 +9,3 @@ import { FS_FILE_MODULE_CONFIG } from '../../injectors'; | ||
import { InputProcessorService } from '../../services'; | ||
import { FsFileDragBaseComponent } from '../fs-file-drag-base/fs-file-drag-base'; | ||
import * as i0 from "@angular/core"; | ||
@@ -17,3 +17,3 @@ import * as i1 from "../../services"; | ||
export class FsFileComponent extends FsFileDragBaseComponent { | ||
constructor(el, inputProcessor, ngZone, moduleConfig, _message) { | ||
constructor(el, inputProcessor, moduleConfig, _message) { | ||
super(); | ||
@@ -27,2 +27,3 @@ this.el = el; | ||
this.select = new EventEmitter(); | ||
this.selectPreviews = new EventEmitter(); | ||
this.error = new EventEmitter(); | ||
@@ -113,16 +114,18 @@ this.clicked = new EventEmitter(); | ||
this.inputProcessor.select | ||
.pipe(switchMap((files) => { | ||
if (!Array.isArray(files)) { | ||
files = [files]; | ||
} | ||
.pipe(map((files) => { | ||
return Array.isArray(files) ? files : [files]; | ||
}), tap((files) => { | ||
this.selectPreviews.emit(files); | ||
}), switchMap((files) => { | ||
return fileProcessor.processFiles(files, this.processConfig); | ||
}), map((fsFiles) => { | ||
return this.inputProcessor.multiple ? fsFiles : fsFiles[0]; | ||
}), takeUntil(this._destroy$)) | ||
.subscribe((e) => { | ||
}), tap((e) => { | ||
this.select.emit(e); | ||
}, (e) => { | ||
}), catchError((e) => { | ||
this.error.emit(e); | ||
this.initSelect(); | ||
}); | ||
return of(null); | ||
}), takeUntil(this._destroy$)) | ||
.subscribe(); | ||
} | ||
@@ -144,4 +147,4 @@ listenDeclinedFiles() { | ||
} | ||
FsFileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsFileComponent, deps: [{ token: i0.ElementRef }, { token: i1.InputProcessorService }, { token: i0.NgZone }, { token: FS_FILE_MODULE_CONFIG, optional: true }, { token: i2.FsMessage }], target: i0.ɵɵFactoryTarget.Component }); | ||
FsFileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FsFileComponent, selector: "fs-file", inputs: { minHeight: "minHeight", minWidth: "minWidth", orientate: "orientate", multiple: "multiple", capture: "capture", allowClick: "allowClick", allowDrop: "allowDrop", accept: "accept", disabled: "disabled", imageWidth: "imageWidth", imageHeight: "imageHeight", imageQuality: "imageQuality" }, outputs: { select: "select", error: "error", clicked: "clicked", declined: "declined" }, providers: [InputProcessorService], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }, { propertyName: "fileLabel", first: true, predicate: ["fileLabel"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<span class=\"file-label\" #fileLabel>\n <ng-content></ng-content>\n</span>\n<input\n type=\"file\"\n [hidden]=\"true\"\n [disabled]=\"inputProcessor.disabled\"\n [multiple]=\"inputProcessor.multiple\"\n [attr.accept]=\"inputProcessor.accept\"\n [attr.capture]=\"inputProcessor.capture\"\n #fileInput>\n\n<fs-file-dragover-message *ngIf=\"moduleConfig.dragoverMessage\"></fs-file-dragover-message>\n", styles: [".file-label{cursor:pointer}\n"], components: [{ type: i3.FsFileDragoverMessageComponent, selector: "fs-file-dragover-message" }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); | ||
FsFileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsFileComponent, deps: [{ token: i0.ElementRef }, { token: i1.InputProcessorService }, { token: FS_FILE_MODULE_CONFIG, optional: true }, { token: i2.FsMessage }], target: i0.ɵɵFactoryTarget.Component }); | ||
FsFileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FsFileComponent, selector: "fs-file", inputs: { minHeight: "minHeight", minWidth: "minWidth", orientate: "orientate", multiple: "multiple", capture: "capture", allowClick: "allowClick", allowDrop: "allowDrop", accept: "accept", disabled: "disabled", imageWidth: "imageWidth", imageHeight: "imageHeight", imageQuality: "imageQuality" }, outputs: { select: "select", selectPreviews: "selectPreviews", error: "error", clicked: "clicked", declined: "declined" }, providers: [InputProcessorService], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }, { propertyName: "fileLabel", first: true, predicate: ["fileLabel"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<span class=\"file-label\" #fileLabel>\n <ng-content></ng-content>\n</span>\n<input\n type=\"file\"\n [hidden]=\"true\"\n [disabled]=\"inputProcessor.disabled\"\n [multiple]=\"inputProcessor.multiple\"\n [attr.accept]=\"inputProcessor.accept\"\n [attr.capture]=\"inputProcessor.capture\"\n #fileInput>\n\n<fs-file-dragover-message *ngIf=\"moduleConfig.dragoverMessage\"></fs-file-dragover-message>\n", styles: [".file-label{cursor:pointer}\n"], components: [{ type: i3.FsFileDragoverMessageComponent, selector: "fs-file-dragover-message" }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); | ||
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsFileComponent, decorators: [{ | ||
@@ -156,3 +159,3 @@ type: Component, | ||
}] | ||
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.InputProcessorService }, { type: i0.NgZone }, { type: undefined, decorators: [{ | ||
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.InputProcessorService }, { type: undefined, decorators: [{ | ||
type: Optional | ||
@@ -188,2 +191,4 @@ }, { | ||
type: Output | ||
}], selectPreviews: [{ | ||
type: Output | ||
}], error: [{ | ||
@@ -202,2 +207,2 @@ type: Output | ||
}] } }); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZnMtZmlsZS9mcy1maWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mcy1maWxlL2ZzLWZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQVV2RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSx1QkFBdUI7SUEwRzFELFlBQ1MsRUFBYyxFQUNkLGNBQXFDLEVBQzVDLE1BQWMsRUFHUCxZQUFZLEVBQ1gsUUFBbUI7UUFFM0IsS0FBSyxFQUFFLENBQUM7UUFSRCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBSXJDLGlCQUFZLEdBQVosWUFBWSxDQUFBO1FBQ1gsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQS9HckIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDMUIsa0JBQWEsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUE0Ri9CLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVCLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzdCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBa0JyRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQWhIRCxJQUNXLFNBQVMsQ0FBQyxLQUFLO1FBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFDVyxRQUFRLENBQUMsS0FBSztRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQ1csU0FBUyxDQUFDLEtBQUs7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUNXLFFBQVEsQ0FBQyxLQUFLO1FBQ3ZCLDhEQUE4RDtRQUM5RCxJQUFJLE9BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1NBQ3RDO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxLQUFLLEtBQUssTUFBTSxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDWixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUNXLE9BQU8sQ0FBQyxLQUFLO1FBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFDVyxVQUFVLENBQUMsS0FBSztRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUVELElBQ1csU0FBUyxDQUFDLEtBQUs7UUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQXdCO1FBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM5RSxDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFDVyxRQUFRLENBQUMsS0FBSztRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUNXLFVBQVUsQ0FBQyxLQUFLO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUNXLFdBQVcsQ0FBQyxLQUFLO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUNXLFlBQVksQ0FBQyxLQUFLO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBMEJNLFFBQVE7UUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLFVBQVU7UUFDaEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUUxQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU87YUFDMUIsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO2FBQ0EsU0FBUyxDQUFDLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNO2FBQ3pCLElBQUksQ0FDSCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDekIsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakI7WUFFRCxPQUFPLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO2FBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDLEVBQ0QsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLGNBQWM7YUFDaEIsY0FBYzthQUNkLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjthQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQ2pCLHlDQUF5QyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQ3BEO29CQUNFLElBQUksRUFBRSxXQUFXLENBQUMsS0FBSztvQkFDdkIsYUFBYSxFQUFFLG9CQUFvQjtpQkFDcEMsQ0FDRixDQUFBO1lBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7OzZHQXhMVSxlQUFlLHVHQStHaEIscUJBQXFCO2lHQS9HcEIsZUFBZSxxYUFGZixDQUFDLHFCQUFxQixDQUFDLDhRQy9CcEMseVpBYUE7NEZEb0JhLGVBQWU7a0JBUDNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFdBQVcsRUFBRSwwQkFBMEI7b0JBQ3ZDLFNBQVMsRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUN2QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFLENBQUMscUJBQXFCLENBQUM7aUJBQ25DOzswQkErR0ksUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxxQkFBcUI7b0VBekdwQixTQUFTO3NCQURuQixLQUFLO2dCQU1LLFFBQVE7c0JBRGxCLEtBQUs7Z0JBTUssU0FBUztzQkFEbkIsS0FBSztnQkFNSyxRQUFRO3NCQURsQixLQUFLO2dCQW1CSyxPQUFPO3NCQURqQixLQUFLO2dCQU1LLFVBQVU7c0JBRHBCLEtBQUs7Z0JBTUssU0FBUztzQkFEbkIsS0FBSztnQkFlSyxNQUFNO3NCQURoQixLQUFLO2dCQVVLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBVUssVUFBVTtzQkFEcEIsS0FBSztnQkFNSyxXQUFXO3NCQURyQixLQUFLO2dCQU1LLFlBQVk7c0JBRHRCLEtBQUs7Z0JBS1csTUFBTTtzQkFBdEIsTUFBTTtnQkFDVSxLQUFLO3NCQUFyQixNQUFNO2dCQUNVLE9BQU87c0JBQXZCLE1BQU07Z0JBQ1UsUUFBUTtzQkFBeEIsTUFBTTtnQkFHQSxTQUFTO3NCQURmLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJakMsU0FBUztzQkFEZixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LCBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRnNNZXNzYWdlLCBNZXNzYWdlTW9kZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGc0ZpbGVEcmFnQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2ZzLWZpbGUtZHJhZy1iYXNlL2ZzLWZpbGUtZHJhZy1iYXNlJztcbmltcG9ydCB7IEZpbGVQcm9jZXNzb3IgfSBmcm9tICcuLi8uLi9jbGFzc2VzJztcbmltcG9ydCB7IEZTX0ZJTEVfTU9EVUxFX0NPTkZJRyB9IGZyb20gJy4uLy4uL2luamVjdG9ycyc7XG5pbXBvcnQgeyBGaWxlUHJvY2Vzc0NvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBJbnB1dFByb2Nlc3NvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mcy1maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZnMtZmlsZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbSW5wdXRQcm9jZXNzb3JTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNGaWxlQ29tcG9uZW50IGV4dGVuZHMgRnNGaWxlRHJhZ0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHByb2Nlc3NDb25maWcgPSBuZXcgRmlsZVByb2Nlc3NDb25maWcoKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1pbkhlaWdodCh2YWx1ZSkge1xuICAgIHRoaXMucHJvY2Vzc0NvbmZpZy5taW5IZWlnaHQgPSB2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluV2lkdGgodmFsdWUpIHtcbiAgICB0aGlzLnByb2Nlc3NDb25maWcubWluV2lkdGggPSB2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgb3JpZW50YXRlKHZhbHVlKSB7XG4gICAgdGhpcy5wcm9jZXNzQ29uZmlnLm9yaWVudGF0ZSA9IHZhbHVlO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtdWx0aXBsZSh2YWx1ZSkge1xuICAgIC8vIFRPRE8gVGhpcyBzaG91bGQgYmUgYSBoZWxwZXIgZnVuY3Rpb24gaW4gQGZpcmVzdGl0Y2gvY29tbW9uXG4gICAgaWYgKHR5cGVvZih2YWx1ZSkgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5pbnB1dFByb2Nlc3Nvci5tdWx0aXBsZSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlucHV0UHJvY2Vzc29yLm11bHRpcGxlID0gdmFsdWUgPT09ICd0cnVlJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IG11bHRpcGxlKCkge1xuICAgIHJldHVybiB0aGlzLmlucHV0UHJvY2Vzc29yLm11bHRpcGxlO1xuICB9XG5cbiAgcHVibGljIGdldCBhcGkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRQcm9jZXNzb3IuYXBpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjYXB0dXJlKHZhbHVlKSB7XG4gICAgdGhpcy5pbnB1dFByb2Nlc3Nvci5jYXB0dXJlID0gdmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFsbG93Q2xpY2sodmFsdWUpIHtcbiAgICB0aGlzLmlucHV0UHJvY2Vzc29yLmFsbG93Q2xpY2sgPSB2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYWxsb3dEcm9wKHZhbHVlKSB7XG4gICAgdGhpcy5pbnB1dFByb2Nlc3Nvci5hbGxvd0Ryb3AgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2FwdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFByb2Nlc3Nvci5jYXB0dXJlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjY2VwdCBFeGFtcGxlc1xuICAgKiBcbiAgICogaW1hZ2UvKixhdWRpby8qLHZpZGVvLyosaW1hZ2UvanBnLC5wZGZcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYWNjZXB0KHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIHRoaXMuaW5wdXRQcm9jZXNzb3IuYWNjZXB0ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5qb2luKCcsJykgOiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWNjZXB0KCkge1xuICAgIHJldHVybiB0aGlzLmlucHV0UHJvY2Vzc29yLmFjY2VwdDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWUpIHtcbiAgICB0aGlzLmlucHV0UHJvY2Vzc29yLmRpc2FibGVkID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmlucHV0UHJvY2Vzc29yLmRpc2FibGVkO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbWFnZVdpZHRoKHZhbHVlKSB7XG4gICAgdGhpcy5wcm9jZXNzQ29uZmlnLm1heFdpZHRoID0gK3ZhbHVlO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbWFnZUhlaWdodCh2YWx1ZSkge1xuICAgIHRoaXMucHJvY2Vzc0NvbmZpZy5tYXhIZWlnaHQgPSArdmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGltYWdlUXVhbGl0eSh2YWx1ZSkge1xuICAgIHRoaXMucHJvY2Vzc0NvbmZpZy5xdWFsaXR5ID0gdmFsdWU7XG4gIH1cblxuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBjbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIGRlY2xpbmVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlW10+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGZpbGVJbnB1dDogYW55O1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVMYWJlbCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBmaWxlTGFiZWw6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHVibGljIGlucHV0UHJvY2Vzc29yOiBJbnB1dFByb2Nlc3NvclNlcnZpY2UsXG4gICAgbmdab25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KEZTX0ZJTEVfTU9EVUxFX0NPTkZJRylcbiAgICBwdWJsaWMgbW9kdWxlQ29uZmlnLFxuICAgIHByaXZhdGUgX21lc3NhZ2U6IEZzTWVzc2FnZSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmluaXRTZWxlY3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlucHV0UHJvY2Vzc29yLnJlZ2lzdGVySW5wdXQodGhpcy5maWxlSW5wdXQpO1xuICAgIHRoaXMuaW5wdXRQcm9jZXNzb3IucmVnaXN0ZXJMYWJlbCh0aGlzLmZpbGVMYWJlbCk7XG4gICAgdGhpcy5pbnB1dFByb2Nlc3Nvci5yZWdpc3RlckRyb3AodGhpcy5lbCk7XG4gICAgdGhpcy5saXN0ZW5EZWNsaW5lZEZpbGVzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTZWxlY3QoKSB7XG4gICAgY29uc3QgZmlsZVByb2Nlc3NvciA9IG5ldyBGaWxlUHJvY2Vzc29yKCk7XG5cbiAgICB0aGlzLmlucHV0UHJvY2Vzc29yLmNsaWNrZWRcbiAgICAucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICB0aGlzLmNsaWNrZWQubmV4dChldmVudCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmlucHV0UHJvY2Vzc29yLnNlbGVjdFxuICAgIC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChmaWxlcykgPT4ge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsZXMpKSB7XG4gICAgICAgICAgZmlsZXMgPSBbZmlsZXNdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbGVQcm9jZXNzb3IucHJvY2Vzc0ZpbGVzKGZpbGVzLCB0aGlzLnByb2Nlc3NDb25maWcpO1xuICAgICAgfSksXG4gICAgICBtYXAoKGZzRmlsZXMpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRQcm9jZXNzb3IubXVsdGlwbGUgPyBmc0ZpbGVzIDogZnNGaWxlc1swXTsgXG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0LmVtaXQoZSk7XG4gICAgfSxcbiAgICAoZSkgPT4ge1xuICAgICAgdGhpcy5lcnJvci5lbWl0KGUpO1xuICAgICAgdGhpcy5pbml0U2VsZWN0KCk7XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRGVjbGluZWRGaWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0UHJvY2Vzc29yXG4gICAgICAuZGVjbGluZWRGaWxlcyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZmlsZXMpID0+IHtcbiAgICAgICAgdGhpcy5kZWNsaW5lZC5uZXh0KGZpbGVzKTtcblxuICAgICAgICBmaWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZS5lcnJvcihcbiAgICAgICAgICAgIGBVcGxvYWQgZmlsZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yICR7ZmlsZS5uYW1lfWAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1vZGU6IE1lc3NhZ2VNb2RlLlRvYXN0LFxuICAgICAgICAgICAgICBwb3NpdGlvbkNsYXNzOiAndG9hc3QtYm90dG9tLXJpZ2h0JyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICB9KVxuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cImZpbGUtbGFiZWxcIiAjZmlsZUxhYmVsPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L3NwYW4+XG48aW5wdXRcbiAgdHlwZT1cImZpbGVcIlxuICBbaGlkZGVuXT1cInRydWVcIlxuICBbZGlzYWJsZWRdPVwiaW5wdXRQcm9jZXNzb3IuZGlzYWJsZWRcIlxuICBbbXVsdGlwbGVdPVwiaW5wdXRQcm9jZXNzb3IubXVsdGlwbGVcIlxuICBbYXR0ci5hY2NlcHRdPVwiaW5wdXRQcm9jZXNzb3IuYWNjZXB0XCJcbiAgW2F0dHIuY2FwdHVyZV09XCJpbnB1dFByb2Nlc3Nvci5jYXB0dXJlXCJcbiAgI2ZpbGVJbnB1dD5cblxuPGZzLWZpbGUtZHJhZ292ZXItbWVzc2FnZSAqbmdJZj1cIm1vZHVsZUNvbmZpZy5kcmFnb3Zlck1lc3NhZ2VcIj48L2ZzLWZpbGUtZHJhZ292ZXItbWVzc2FnZT5cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZnMtZmlsZS9mcy1maWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mcy1maWxlL2ZzLWZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBVSxNQUFNLGNBQWMsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7O0FBVWpGLE1BQU0sT0FBTyxlQUFnQixTQUFRLHVCQUF1QjtJQTJHMUQsWUFDUyxFQUFjLEVBQ2QsY0FBcUMsRUFHckMsWUFBWSxFQUNYLFFBQW1CO1FBRTNCLEtBQUssRUFBRSxDQUFDO1FBUEQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLG1CQUFj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Q1UsUUFBUTtzQkFBeEIsTUFBTTtnQkFHQSxTQUFTO3NCQURmLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJakMsU0FBUztzQkFEZixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSwgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZzTWVzc2FnZSwgTWVzc2FnZU1vZGUgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcblxuaW1wb3J0IHsgU3ViamVjdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRmlsZVByb2Nlc3NvciB9IGZyb20gJy4uLy4uL2NsYXNzZXMnO1xuaW1wb3J0IHsgRlNfRklMRV9NT0RVTEVfQ09ORklHIH0gZnJvbSAnLi4vLi4vaW5qZWN0b3JzJztcbmltcG9ydCB7IEZpbGVQcm9jZXNzQ29uZmlnLCBGc0ZpbGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgSW5wdXRQcm9jZXNzb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgRnNGaWxlRHJhZ0Jhc2VDb21wb25lbnQgfSBmcm9tICcuLi9mcy1maWxlLWRyYWctYmFzZS9mcy1maWxlLWRyYWctYmFzZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mcy1maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZnMtZmlsZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbSW5wdXRQcm9jZXNzb3JTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNGaWxlQ29tcG9uZW50IGV4dGVuZHMgRnNGaWxlRHJhZ0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHByb2Nlc3NDb25maWcgPSBuZXcgRmlsZVByb2Nlc3NDb25maWcoKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1pbkhlaWdodCh2YWx1ZSkge1xuICAgIHRoaXMucHJvY2Vzc0NvbmZpZy5taW5IZWlnaHQgPSB2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluV2lkdGgodmFsdWUpIHtcbiAgICB0aGlzLnByb2Nlc3NDb25maWcubWluV2lkdGggPSB2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgb3JpZW50YXRlKHZhbHVlKSB7XG4gICAgdGhpcy5wcm9jZXNzQ29uZmlnLm9yaWVudGF0ZSA9IHZhbHVlO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtdWx0aXBsZSh2YWx1ZSkge1xuICAgIC8vIFRPRE8gVGhpcyBzaG91bGQgYmUgYSBoZWxwZXIgZnVuY3Rpb24gaW4gQGZpcmVzdGl0Y2gvY29tbW9uXG4gICAgaWYgKHR5cGVvZiAodmFsdWUpID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuaW5wdXRQcm9jZXNzb3IubXVsdGlwbGUgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnB1dFByb2Nlc3Nvci5tdWx0aXBsZSA9IHZhbHVlID09PSAndHJ1ZSc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBtdWx0aXBsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFByb2Nlc3Nvci5tdWx0aXBsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXBpKCkge1xuICAgIHJldHVybiB0aGlzLmlucHV0UHJvY2Vzc29yLmFwaTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY2FwdHVyZSh2YWx1ZSkge1xuICAgIHRoaXMuaW5wdXRQcm9jZXNzb3IuY2FwdHVyZSA9IHZhbHVlO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhbGxvd0NsaWNrKHZhbHVlKSB7XG4gICAgdGhpcy5pbnB1dFByb2Nlc3Nvci5hbGxvd0NsaWNrID0gdmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFsbG93RHJvcCh2YWx1ZSkge1xuICAgIHRoaXMuaW5wdXRQcm9jZXNzb3IuYWxsb3dEcm9wID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNhcHR1cmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRQcm9jZXNzb3IuY2FwdHVyZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY2NlcHQgRXhhbXBsZXNcbiAgICogXG4gICAqIGltYWdlLyosYXVkaW8vKix2aWRlby8qLGltYWdlL2pwZywucGRmXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFjY2VwdCh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICB0aGlzLmlucHV0UHJvY2Vzc29yLmFjY2VwdCA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuam9pbignLCcpIDogdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjY2VwdCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFByb2Nlc3Nvci5hY2NlcHQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlKSB7XG4gICAgdGhpcy5pbnB1dFByb2Nlc3Nvci5kaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFByb2Nlc3Nvci5kaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaW1hZ2VXaWR0aCh2YWx1ZSkge1xuICAgIHRoaXMucHJvY2Vzc0NvbmZpZy5tYXhXaWR0aCA9ICt2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaW1hZ2VIZWlnaHQodmFsdWUpIHtcbiAgICB0aGlzLnByb2Nlc3NDb25maWcubWF4SGVpZ2h0ID0gK3ZhbHVlO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbWFnZVF1YWxpdHkodmFsdWUpIHtcbiAgICB0aGlzLnByb2Nlc3NDb25maWcucXVhbGl0eSA9IHZhbHVlO1xuICB9XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0UHJldmlld3MgPSBuZXcgRXZlbnRFbWl0dGVyPEZzRmlsZVtdPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIGNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZGVjbGluZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgZmlsZUlucHV0OiBhbnk7XG5cbiAgQFZpZXdDaGlsZCgnZmlsZUxhYmVsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGZpbGVMYWJlbDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcbiAgICBwdWJsaWMgaW5wdXRQcm9jZXNzb3I6IElucHV0UHJvY2Vzc29yU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoRlNfRklMRV9NT0RVTEVfQ09ORklHKVxuICAgIHB1YmxpYyBtb2R1bGVDb25maWcsXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuaW5pdFNlbGVjdCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5wdXRQcm9jZXNzb3IucmVnaXN0ZXJJbnB1dCh0aGlzLmZpbGVJbnB1dCk7XG4gICAgdGhpcy5pbnB1dFByb2Nlc3Nvci5yZWdpc3RlckxhYmVsKHRoaXMuZmlsZUxhYmVsKTtcbiAgICB0aGlzLmlucHV0UHJvY2Vzc29yLnJlZ2lzdGVyRHJvcCh0aGlzLmVsKTtcbiAgICB0aGlzLmxpc3RlbkRlY2xpbmVkRmlsZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFNlbGVjdCgpIHtcbiAgICBjb25zdCBmaWxlUHJvY2Vzc29yID0gbmV3IEZpbGVQcm9jZXNzb3IoKTtcblxuICAgIHRoaXMuaW5wdXRQcm9jZXNzb3IuY2xpY2tlZFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLmNsaWNrZWQubmV4dChldmVudCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuaW5wdXRQcm9jZXNzb3Iuc2VsZWN0XG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChmaWxlcykgPT4ge1xuICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGZpbGVzKSA/IGZpbGVzIDogW2ZpbGVzXTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoZmlsZXMpID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdFByZXZpZXdzLmVtaXQoZmlsZXMpO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKChmaWxlcykgPT4ge1xuICAgICAgICAgIHJldHVybiBmaWxlUHJvY2Vzc29yLnByb2Nlc3NGaWxlcyhmaWxlcywgdGhpcy5wcm9jZXNzQ29uZmlnKTtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgoZnNGaWxlcykgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0UHJvY2Vzc29yLm11bHRpcGxlID8gZnNGaWxlcyA6IGZzRmlsZXNbMF07XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKGUpID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdC5lbWl0KGUpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlKTtcbiAgICAgICAgICB0aGlzLmluaXRTZWxlY3QoKTtcblxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkRlY2xpbmVkRmlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFByb2Nlc3NvclxuICAgICAgLmRlY2xpbmVkRmlsZXMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGZpbGVzKSA9PiB7XG4gICAgICAgIHRoaXMuZGVjbGluZWQubmV4dChmaWxlcyk7XG5cbiAgICAgICAgZmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2UuZXJyb3IoXG4gICAgICAgICAgICBgVXBsb2FkIGZpbGUgdHlwZSBpcyBub3Qgc3VwcG9ydGVkIGZvciAke2ZpbGUubmFtZX1gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtb2RlOiBNZXNzYWdlTW9kZS5Ub2FzdCxcbiAgICAgICAgICAgICAgcG9zaXRpb25DbGFzczogJ3RvYXN0LWJvdHRvbS1yaWdodCcsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgfVxufVxuIiwiPHNwYW4gY2xhc3M9XCJmaWxlLWxhYmVsXCIgI2ZpbGVMYWJlbD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9zcGFuPlxuPGlucHV0XG4gIHR5cGU9XCJmaWxlXCJcbiAgW2hpZGRlbl09XCJ0cnVlXCJcbiAgW2Rpc2FibGVkXT1cImlucHV0UHJvY2Vzc29yLmRpc2FibGVkXCJcbiAgW211bHRpcGxlXT1cImlucHV0UHJvY2Vzc29yLm11bHRpcGxlXCJcbiAgW2F0dHIuYWNjZXB0XT1cImlucHV0UHJvY2Vzc29yLmFjY2VwdFwiXG4gIFthdHRyLmNhcHR1cmVdPVwiaW5wdXRQcm9jZXNzb3IuY2FwdHVyZVwiXG4gICNmaWxlSW5wdXQ+XG5cbjxmcy1maWxlLWRyYWdvdmVyLW1lc3NhZ2UgKm5nSWY9XCJtb2R1bGVDb25maWcuZHJhZ292ZXJNZXNzYWdlXCI+PC9mcy1maWxlLWRyYWdvdmVyLW1lc3NhZ2U+XG4iXX0= |
import { Pipe } from '@angular/core'; | ||
import { Observable, of, throwError } from 'rxjs'; | ||
import { of, throwError } from 'rxjs'; | ||
import { FsApiFile } from '@firestitch/api'; | ||
import { switchMap } from 'rxjs/operators'; | ||
import { map, switchMap } from 'rxjs/operators'; | ||
import { FsFile } from '../models'; | ||
import * as FileAPI from 'fileapi'; | ||
import { DomSanitizer } from '@angular/platform-browser'; | ||
import * as i0 from "@angular/core"; | ||
import * as i1 from "@angular/platform-browser"; | ||
export class FsFileSrcPipe { | ||
transform(file, maxWidth, maxHeight) { | ||
constructor(_domSanitizer) { | ||
this._domSanitizer = _domSanitizer; | ||
} | ||
transform(file) { | ||
return of(null) | ||
@@ -20,34 +24,4 @@ .pipe(switchMap(() => { | ||
return data instanceof FsApiFile ? data.blob : of(data); | ||
}), switchMap((blob) => { | ||
return new Observable((observer) => { | ||
FileAPI.Image.transform(blob, [ | ||
{ | ||
maxWidth: maxWidth * 2, | ||
maxHeight: maxHeight * 2, | ||
} | ||
], false, (err, images) => { | ||
if (!err && images[0]) { | ||
const canvas = images[0]; | ||
canvas.toBlob((canvasBlob) => { | ||
observer.next(canvasBlob); | ||
observer.complete(); | ||
}, 'image/jpg', 100); | ||
} | ||
else { | ||
observer.error(err); | ||
} | ||
}); | ||
}); | ||
}), switchMap((data) => { | ||
return new Observable((observer) => { | ||
const fileReader = new FileReader(); | ||
fileReader.onload = () => { | ||
observer.next(fileReader.result); | ||
observer.complete(); | ||
}; | ||
fileReader.onerror = (e) => { | ||
observer.error(e); | ||
}; | ||
fileReader.readAsDataURL(data); | ||
}); | ||
}), map((data) => { | ||
return this._domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(data)); | ||
})); | ||
@@ -71,3 +45,3 @@ } | ||
} | ||
FsFileSrcPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsFileSrcPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); | ||
FsFileSrcPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsFileSrcPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); | ||
FsFileSrcPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsFileSrcPipe, name: "fsFileSrc" }); | ||
@@ -77,3 +51,3 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsFileSrcPipe, decorators: [{ | ||
args: [{ name: 'fsFileSrc' }] | ||
}] }); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9waXBlcy9wcmV2aWV3LXBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQzs7QUFJbkMsTUFBTSxPQUFPLGFBQWE7SUFFakIsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFpQixFQUFFLFNBQWtCO1FBQzFELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQzthQUNaLElBQUksQ0FDSCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVqQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDNUIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakI7WUFFRCxJQUFJLElBQUksWUFBWSxTQUFTLElBQUksSUFBSSxZQUFZLElBQUksRUFBRTtnQkFDckQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO3FCQUNaLElBQUksQ0FDSCxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUNiLE9BQU8sSUFBSSxZQUFZLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxRCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDakIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO3dCQUNqQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDckIsSUFBSSxFQUNKOzRCQUNFO2dDQUNFLFFBQVEsRUFBRSxRQUFRLEdBQUcsQ0FBQztnQ0FDdEIsU0FBUyxFQUFFLFNBQVMsR0FBRyxDQUFDOzZCQUN6Qjt5QkFDRixFQUNELEtBQUssRUFDTCxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTs0QkFDZCxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQ0FDckIsTUFBTSxNQUFNLEdBQXNCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQ0FFNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO29DQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29DQUMxQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0NBQ3RCLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7NkJBQ3RCO2lDQUFNO2dDQUNMLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7NkJBQ3JCO3dCQUNILENBQUMsQ0FBQyxDQUFDO29CQUNQLENBQUMsQ0FBQyxDQUFBO2dCQUNKLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO29CQUN0QixPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7d0JBQ2pDLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7d0JBQ3BDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFOzRCQUN2QixRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQzs0QkFDakMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUN0QixDQUFDLENBQUE7d0JBRUQsVUFBVSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFOzRCQUN6QixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNwQixDQUFDLENBQUE7d0JBRUQsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDakMsQ0FBQyxDQUFDLENBQUE7Z0JBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQzthQUVMO1lBRUQsT0FBTyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVPLFFBQVEsQ0FBQyxJQUFJO1FBQ25CLElBQUksSUFBSSxZQUFZLE1BQU0sRUFBRTtZQUMxQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNyQjtZQUVELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUN4QztRQUVELElBQUksSUFBSSxZQUFZLElBQUksSUFBSSxJQUFJLFlBQVksSUFBSSxFQUFFO1lBQ2hELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OzJHQWpGVSxhQUFhO3lHQUFiLGFBQWE7NEZBQWIsYUFBYTtrQkFEekIsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRnNBcGlGaWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvYXBpJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZzRmlsZSB9IGZyb20gJy4uL21vZGVscyc7XG5cbmltcG9ydCAqIGFzIEZpbGVBUEkgZnJvbSAnZmlsZWFwaSc7XG5cblxuQFBpcGUoeyBuYW1lOiAnZnNGaWxlU3JjJyB9KVxuZXhwb3J0IGNsYXNzIEZzRmlsZVNyY1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICBwdWJsaWMgdHJhbnNmb3JtKGZpbGUsIG1heFdpZHRoPzogbnVtYmVyLCBtYXhIZWlnaHQ/OiBudW1iZXIpIHtcbiAgICByZXR1cm4gb2YobnVsbClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9nZXREYXRhKGZpbGUpO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIG9mKGRhdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgRnNBcGlGaWxlIHx8IGRhdGEgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhIGluc3RhbmNlb2YgRnNBcGlGaWxlID8gZGF0YS5ibG9iIDogb2YoZGF0YSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChibG9iKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIEZpbGVBUEkuSW1hZ2UudHJhbnNmb3JtKFxuICAgICAgICAgICAgICAgICAgICAgIGJsb2IsXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogbWF4V2lkdGggKiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCAqIDIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAoZXJyLCBpbWFnZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXJyICYmIGltYWdlc1swXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50ID0gaW1hZ2VzWzBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy50b0Jsb2IoKGNhbnZhc0Jsb2IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGNhbnZhc0Jsb2IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sICdpbWFnZS9qcGcnLCAxMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVSZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZmlsZVJlYWRlci5yZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBmaWxlUmVhZGVyLm9uZXJyb3IgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZmlsZVJlYWRlci5yZWFkQXNEYXRhVVJMKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0ludmFsaWQgZmlsZSB0eXBlJyk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERhdGEoZmlsZSkge1xuICAgIGlmIChmaWxlIGluc3RhbmNlb2YgRnNGaWxlKSB7XG4gICAgICBpZiAoZmlsZS5hcGlGaWxlKSB7XG4gICAgICAgIHJldHVybiBmaWxlLmFwaUZpbGU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaWxlLnVybCA/IGZpbGUudXJsIDogZmlsZS5maWxlO1xuICAgIH1cblxuICAgIGlmIChmaWxlIGluc3RhbmNlb2YgQmxvYiB8fCBmaWxlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuIl19 | ||
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } }); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9waXBlcy9wcmV2aWV3LXBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUl6RCxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUNVLGFBQTJCO1FBQTNCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO0lBQ2pDLENBQUM7SUFFRSxTQUFTLENBQUMsSUFBSTtRQUNuQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7YUFDWixJQUFJLENBQ0gsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFakMsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQzVCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pCO1lBRUQsSUFBSSxJQUFJLFlBQVksU0FBUyxJQUFJLElBQUksWUFBWSxJQUFJLEVBQUU7Z0JBQ3JELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQztxQkFDWixJQUFJLENBQ0gsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDYixPQUFPLElBQUksWUFBWSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUQsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzlFLENBQUMsQ0FBQyxDQUNILENBQUM7YUFFTDtZQUVELE9BQU8sVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFTyxRQUFRLENBQUMsSUFBSTtRQUNuQixJQUFJLElBQUksWUFBWSxNQUFNLEVBQUU7WUFDMUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDckI7WUFFRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDeEM7UUFFRCxJQUFJLElBQUksWUFBWSxJQUFJLElBQUksSUFBSSxZQUFZLElBQUksRUFBRTtZQUNoRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzsyR0FoRFUsYUFBYTt5R0FBYixhQUFhOzRGQUFiLGFBQWE7a0JBRHpCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZzQXBpRmlsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2FwaSc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZzRmlsZSB9IGZyb20gJy4uL21vZGVscyc7XG5cbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5cbkBQaXBlKHsgbmFtZTogJ2ZzRmlsZVNyYycgfSlcbmV4cG9ydCBjbGFzcyBGc0ZpbGVTcmNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2RvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICApIHsgfVxuXG4gIHB1YmxpYyB0cmFuc2Zvcm0oZmlsZSkge1xuICAgIHJldHVybiBvZihudWxsKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuX2dldERhdGEoZmlsZSk7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoZGF0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBGc0FwaUZpbGUgfHwgZGF0YSBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEgaW5zdGFuY2VvZiBGc0FwaUZpbGUgPyBkYXRhLmJsb2IgOiBvZihkYXRhKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBtYXAoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFVSTC5jcmVhdGVPYmplY3RVUkwoZGF0YSkpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcignSW52YWxpZCBmaWxlIHR5cGUnKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RGF0YShmaWxlKSB7XG4gICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBGc0ZpbGUpIHtcbiAgICAgIGlmIChmaWxlLmFwaUZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGZpbGUuYXBpRmlsZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpbGUudXJsID8gZmlsZS51cmwgOiBmaWxlLmZpbGU7XG4gICAgfVxuXG4gICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBCbG9iIHx8IGZpbGUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICByZXR1cm4gZmlsZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4iXX0= |
{ | ||
"name": "@firestitch/file", | ||
"version": "12.14.2", | ||
"version": "12.14.3", | ||
"repository": { | ||
@@ -5,0 +5,0 @@ "type": "git", |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
793090
6543