UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

831 lines (830 loc) 69 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ElementRef, Input, Output, EventEmitter, ViewChild } from '@angular/core'; import { Option } from '../../../../../decorator/Option.decorator'; import { NeedFocusService } from '../../../../../service/NeedFocusService.service'; import { I18N } from '../../../../../decorator/I18N.decorator'; import { NgxCroppieComponent } from 'ngx-croppie'; import { AbstracFileSelector } from '../../../../../component/dataview/input/AbstracFileSelector'; const /** @type {?} */ TYPE_NAME = "material-image-selector"; export class MaterialImageSelector extends AbstracFileSelector { /** * @param {?} elementRef * @param {?} needFocusService */ constructor(elementRef, needFocusService) { super(elementRef, needFocusService); } /** * @return {?} */ ngOnInit() { super.ngOnInit(); this._croppieImage = ''; this.onCropImageDone = false; if (this.fileTypes === undefined || this.fileTypes === null) { this.fileTypes = ['image/gif', 'image/png', 'image/jpg', 'image/jpeg']; } else { let /** @type {?} */ count = 0; for (let /** @type {?} */ file of this.fileTypes) { if (file === 'image/jpeg' || file === 'image/png' || file === 'image/gif' || file === 'image/jpg') { count++; } } if (this.fileTypes.length !== count) { throw new Error("file types allowed image/gif,image/png,image/jpg,image/jpeg."); } } if (this.label === undefined || this.label === null || typeof this.label !== 'string') { this.label = "ลากไฟล์รูปมาที่นี่"; } if (this.labelBtn === undefined || this.labelBtn === null || typeof this.labelBtn !== 'string') { this.labelBtn = "เลือกรูปภาพจากคอมพิวเตอร์ของคุณ"; } if (this.width === undefined || this.width === null || typeof this.width !== 'string') { this.width = "100%"; } if (this.height === undefined || this.height === null || typeof this.height !== 'string') { this.height = "400pt"; } // if (this.enableResize === undefined || this.enableResize === null || typeof this.enableResize !== 'boolean') { // this.enableResize = false; // } if (this.enableRotate === undefined || this.enableRotate === null || typeof this.enableRotate !== 'boolean') { this.enableRotate = true; } // if (this.enableCrop === undefined || this.enableCrop === null || typeof this.enableCrop !== 'boolean') { // this.enableCrop = true; // } if (this.showZoomer === undefined || this.showZoomer === null || typeof this.showZoomer !== 'boolean') { this.showZoomer = true; } if (this.mouseWheelZoom === undefined || this.mouseWheelZoom === null || typeof this.mouseWheelZoom !== 'boolean') { this.mouseWheelZoom = true; } if (this.enableZoom === undefined || this.enableZoom === null || typeof this.enableZoom !== 'boolean') { this.enableZoom = true; } else if (this.enableZoom === false) { this.showZoomer = false; this.mouseWheelZoom = false; } if (this.viewport === undefined || this.viewport === null) { this.viewport = { width: 200, height: 200, type: 'square' }; } if (this.viewport.width === undefined || this.viewport.width === null || this.viewport.height === undefined || this.viewport.height === null || typeof this.viewport.width !== 'number' || typeof this.viewport.height !== 'number') { this.viewport.width = 200; this.viewport.height = 200; } if (this.viewport.type === undefined || this.viewport.type === null || typeof this.viewport.type !== 'string') { this.viewport.type = 'square'; } this.pictureFrame = { width: this.viewport.width + 20 + 'px', height: this.viewport.height + 20 + 'px' }; } /** * @param {?} inputValue * @param {?} results * @return {?} */ onValidationEnd(inputValue, results) { //! do sthing } /** * @param {?} data * @param {?} inputVal * @return {?} */ onDataChange(data, inputVal) { // throw new Error("Method not implemented."); } /** * @param {?} $event * @return {?} */ doFocus($event) { // throw new Error("Method not implemented."); } /** * @param {?} $event * @return {?} */ doLostFocus($event) { // throw new Error("Method not implemented."); } /** * @param {?} event * @param {?} format * @param {?} data * @return {?} */ isAcceptDragData(event, format, data) { return; } /** * @param {?} event * @return {?} */ getDragOverDataTransfer(event) { return; } /** * @param {?} event * @return {?} */ onDragEnter(event) { } /** * @param {?} event * @return {?} */ onDragOver(event) { } /** * @param {?} event * @return {?} */ onDragLeave(event) { } /** * @param {?} event * @return {?} */ onDrop(event) { } /** * @param {?} event * @param {?} data * @return {?} */ onDropAccepted(event, data) { } /** * @param {?} event * @return {?} */ onDropRejected(event) { } /** * @return {?} */ isSelfDataDirty() { let /** @type {?} */ d1 = AbstracFileSelector.resolveMappedData(this.field, this.originalValue); let /** @type {?} */ d2 = this.getInputValue(); if (d1 !== d2) { return true; } return false; } /** * @param {?} data * @return {?} */ selfSaveData(data) { if (data !== undefined && data !== null) { this.originalValue = JSON.parse(JSON.stringify(data)); } else { this.originalValue = data; } } /** * @return {?} */ selfResetData() { this.setInputValue(this.originalValue); } /** * @return {?} */ get croppieOptions() { const /** @type {?} */ opts = {}; opts.viewport = this.viewport; opts.enableZoom = this.enableZoom; opts.showZoomer = this.showZoomer; opts.mouseWheelZoom = this.mouseWheelZoom; opts.enableOrientation = this.enableRotate; opts.enforceBoundary = true; return opts; } /** * @return {?} */ rotateLeft() { this.ngxCroppie.rotate(-270); } /** * @return {?} */ rotateRight() { this.ngxCroppie.rotate(270); let /** @type {?} */ test = this.ngxCroppie.croppieOptions; } /** * @param {?} img * @return {?} */ newImageResultFromCroppie(img) { this.editedImage = img; } /** * @return {?} */ saveImageFromCroppie() { this.setInputValue(this.editedImage); this.onCropImageDone = true; } /** * @return {?} */ claerCroppieEdit() { this.originalFile = undefined; this.editedImage = ''; this._croppieImage = ''; this.onCropImageDone = false; } /** * @param {?} $event * @return {?} */ onReadOnlyClick($event) { if (this.isReadOnly()) { $event.preventDefault(); return; } } /** * @param {?} evt * @return {?} */ imageUploadEvent(evt) { if (!evt.target) { return this.imageUpload.nativeElement.value = ""; } if (!evt.target.files) { return this.imageUpload.nativeElement.value = ""; } if (evt.target.files.length !== 1) { return this.imageUpload.nativeElement.value = ""; } const /** @type {?} */ file = evt.target.files[0]; if (this.fileTypes.indexOf(file.type) === -1) { alert("Error: Allow only file type '" + JSON.stringify(this.fileTypes) + "'"); return this.imageUpload.nativeElement.value = ""; } if (file.size > this.maxFilesize) { alert('Error: The maximun size for file upload is ' + this.maxFilesize + ' KB'); return this.imageUpload.nativeElement.value = ""; } this.originalFile = file; const /** @type {?} */ fr = new FileReader(); fr.onloadend = (loadEvent) => { this._croppieImage = fr.result; }; fr.readAsDataURL(file); } /** * @return {?} */ getWidth() { return this.width; } /** * @param {?} width * @return {?} */ setWidth(width) { this.width = width; } /** * @return {?} */ getHeight() { return this.height; } /** * @param {?} height * @return {?} */ setHeight(height) { this.height = height; } /** * @return {?} */ getLabel() { return this.label; } /** * @param {?} label * @return {?} */ setLabel(label) { this.label = label; } /** * @return {?} */ getLabelBtn() { return this.labelBtn; } /** * @param {?} labelBtn * @return {?} */ setLabelBtn(labelBtn) { this.labelBtn = labelBtn; } /** * @return {?} */ getMaxFilesize() { return this.maxFilesize; } /** * @param {?} maxFilesize * @return {?} */ setMaxFilesize(maxFilesize) { this.maxFilesize = maxFilesize; } /** * @return {?} */ getFileTypes() { return this.fileTypes; } /** * @param {?} fileTypes * @return {?} */ setFileTypes(fileTypes) { this.fileTypes = fileTypes; } /** * @return {?} */ getShowZoomer() { return this.showZoomer; } /** * @return {?} */ isEnableRotate() { return this.enableRotate; } /** * @param {?} enableRotate * @return {?} */ setEnableRotate(enableRotate) { this.enableRotate = enableRotate; } /** * @return {?} */ isDisabled() { return this.disabled; } /** * @param {?} disabled * @return {?} */ setDisabled(disabled) { this.disabled = disabled; } /** * @return {?} */ isReadOnly() { return this.readOnly; } /** * @param {?} readOnly * @return {?} */ setReadOnly(readOnly) { this.readOnly = readOnly; } /** * @return {?} */ getOriginalFile() { return this.originalFile; } /** * @return {?} */ getPictureFrame() { return this.pictureFrame; } /** * @return {?} */ isCropImageDone() { return this.onCropImageDone; } /** * @return {?} */ getEditedImage() { return this.editedImage; } } MaterialImageSelector.TYPE_NAME = TYPE_NAME; MaterialImageSelector.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: `<div class="material-image-selector" [style.width]="getWidth()" [style.height]="getHeight()"> <div class="material-image-selector-readOnly" [class.material-image-selector-disabled]="isDisabled()" *ngIf="isReadOnly() || isDisabled()" (click)="onReadOnlyClick($event)"></div> <div class="material-image-selector-browse" *ngIf="!_croppieImage" [style.width]="getWidth()" [style.height]="getHeight()"> <input #imageUpload type="file" id="fileupload" (change)="imageUploadEvent($event)" accept="{{getFileTypes()}}" /> <div class="wrapper-drag-image-btn-browse"> <img src="https://img.icons8.com/ios/100/000000/picture-filled.png" alt=""> <span class="label-drag-image">{{getLabel()}}</span> <span class="label-or">- หรือ -</span> <button type="button" class="btn btn-default" data-dismiss="modal" (click)="imageUpload.click()">{{getLabelBtn()}}</button> </div> </div> <div class="material-image-selector-crop" *ngIf="_croppieImage"> <ng-container *ngIf="!isCropImageDone(); else elseTemplate"> <div class="wrapper-controller-crop-image"> <div class="bar-controller-crop-image"> <div class="arrow-bar-controller-crop-image"></div> <ng-container *ngIf="isEnableRotate()"> <span class="wrapper-icon-rotate" (click)="rotateLeft()"> <svg viewBox="0 0 481.95 481.95"> <path d="M114.75,191.25l-35.7-35.7C56.1,186.15,40.8,219.3,38.25,255h51C91.8,232.05,102,211.65,114.75,191.25z M89.25,306h-51 c5.1,35.7,17.85,68.85,40.8,99.45l35.7-35.7C102,349.35,91.8,328.95,89.25,306z M114.75,441.15 c30.6,22.949,63.75,35.699,99.45,40.8v-51c-22.95-2.55-43.35-12.75-63.75-25.5L114.75,441.15z M265.2,79.05V0L150.45,114.75 L265.2,229.5v-99.45c71.4,12.75,127.5,73.95,127.5,150.45s-56.1,137.7-127.5,150.45v51c99.45-12.75,178.5-99.45,178.5-201.45 S364.65,91.8,265.2,79.05z" /> </svg> </span> <span class="wrapper-icon-rotate" (click)="rotateRight()"> <svg viewBox="0 0 481.95 481.95"> <path d="M331.5,114.75L216.75,0v79.05C117.3,91.8,38.25,175.95,38.25,280.5s79.05,188.7,178.5,201.45v-51 C145.35,418.2,89.25,357,89.25,280.5s56.1-137.7,127.5-150.45v99.45L331.5,114.75z M443.7,255 c-5.101-35.7-17.851-68.85-40.8-99.45l-35.7,35.7c12.75,20.4,22.95,40.8,25.5,63.75H443.7z M267.75,430.95v51 c35.7-5.101,68.85-17.851,99.45-40.8l-35.7-35.7C311.1,418.2,290.7,428.4,267.75,430.95z M367.2,369.75l35.7,35.7 c22.949-30.601,38.25-63.75,40.8-99.45h-51C390.15,328.95,379.95,349.35,367.2,369.75z" /> </svg> </span> </ng-container> <span class="wrapper-icon-correct" (click)="saveImageFromCroppie()"> <svg viewBox="0 0 512 512"> <path d="M504.502,75.496c-9.997-9.998-26.205-9.998-36.204,0L161.594,382.203L43.702,264.311c-9.997-9.998-26.205-9.997-36.204,0 c-9.998,9.997-9.998,26.205,0,36.203l135.994,135.992c9.994,9.997,26.214,9.99,36.204,0L504.502,111.7 C514.5,101.703,514.499,85.494,504.502,75.496z" /> </svg> </span> <span class="wrapper-icon-cancel" (click)="claerCroppieEdit()"> <svg viewBox="0 0 512.001 512.001"> <path d="M294.111,256.001L504.109,46.003c10.523-10.524,10.523-27.586,0-38.109c-10.524-10.524-27.587-10.524-38.11,0L256,217.892 L46.002,7.894c-10.524-10.524-27.586-10.524-38.109,0s-10.524,27.586,0,38.109l209.998,209.998L7.893,465.999 c-10.524,10.524-10.524,27.586,0,38.109c10.524,10.524,27.586,10.523,38.109,0L256,294.11l209.997,209.998 c10.524,10.524,27.587,10.523,38.11,0c10.523-10.524,10.523-27.586,0-38.109L294.111,256.001z" /> </svg> </span> </div> </div> <ngx-croppie #ngxCroppie [croppieOptions]="croppieOptions" [class.hidenZoomer]="!getShowZoomer()" [imageUrl]="_croppieImage" [points]="[0,0,400,400]" (result)="newImageResultFromCroppie($event)"></ngx-croppie> </ng-container> <ng-template #elseTemplate> <div class="material-image-selector-edited-image"> <img class="image-crop" src="{{getEditedImage()}}" alt=""> <div class="picture-frame" [style.width]="getPictureFrame().width" [style.height]="getPictureFrame().height"> <span class="icon-close" (click)="claerCroppieEdit()"></span> </div> </div> </ng-template> </div> </div>`, },] }, ]; /** @nocollapse */ MaterialImageSelector.ctorParameters = () => [ { type: ElementRef, }, { type: NeedFocusService, }, ]; MaterialImageSelector.propDecorators = { "dataParent": [{ type: Input },], "ignoreParentData": [{ type: Input },], "data": [{ type: Input },], "ignoreParentDisabled": [{ type: Input },], "delegateHistory": [{ type: Input },], "onDisabled": [{ type: Input },], "onEnabled": [{ type: Input },], "loadingEnabled": [{ type: Input },], "i18nKey": [{ type: Input },], "bypass": [{ type: Input, args: ['i18nBypass',] },], "options": [{ type: Input },], "disabled": [{ type: Input },], "field": [{ type: Input },], "name": [{ type: Input },], "typeOfData": [{ type: Input },], "readOnly": [{ type: Input },], "help": [{ type: Input },], "maxFilesize": [{ type: Input },], "fileTypes": [{ type: Input },], "label": [{ type: Input },], "labelBtn": [{ type: Input },], "width": [{ type: Input },], "height": [{ type: Input },], "enableRotate": [{ type: Input },], "enableZoom": [{ type: Input },], "showZoomer": [{ type: Input },], "mouseWheelZoom": [{ type: Input },], "viewport": [{ type: Input },], "loadEvent": [{ type: Output, args: ['phxLoad',] },], "startValidateEvent": [{ type: Output, args: ['phxStartValidate',] },], "endValidateEvent": [{ type: Output, args: ['phxEndValidate',] },], "beforeFocusEvent": [{ type: Output, args: ['phxBeforeFocus',] },], "focusEvent": [{ type: Output, args: ['phxFocus',] },], "beforeLostFocusEvent": [{ type: Output, args: ['phxBeforeLostFocus',] },], "lostFocusEvent": [{ type: Output, args: ['phxLostFocus',] },], "beforeChangeEvent": [{ type: Output, args: ['phxBeforeChange',] },], "changeEvent": [{ type: Output, args: ['phxChange',] },], "beforeSelectEvent": [{ type: Output, args: ['phxBeforeSelect',] },], "selectEvent": [{ type: Output, args: ['phxSelect',] },], "imageUpload": [{ type: ViewChild, args: ['imageUpload',] },], "ngxCroppie": [{ type: ViewChild, args: ['ngxCroppie',] },], }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], MaterialImageSelector.prototype, "dataParent", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialImageSelector.prototype, "ignoreParentData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], MaterialImageSelector.prototype, "data", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialImageSelector.prototype, "ignoreParentDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialImageSelector.prototype, "delegateHistory", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], MaterialImageSelector.prototype, "onDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], MaterialImageSelector.prototype, "onEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialImageSelector.prototype, "loadingEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialImageSelector.prototype, "i18nKey", void 0); tslib_1.__decorate([ Option('i18nBypass'), tslib_1.__metadata("design:type", Boolean) ], MaterialImageSelector.prototype, "bypass", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialImageSelector.prototype, "disabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialImageSelector.prototype, "field", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialImageSelector.prototype, "name", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialImageSelector.prototype, "typeOfData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialImageSelector.prototype, "readOnly", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", Object) ], MaterialImageSelector.prototype, "help", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Number) ], MaterialImageSelector.prototype, "maxFilesize", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Array) ], MaterialImageSelector.prototype, "fileTypes", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", String) ], MaterialImageSelector.prototype, "label", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", String) ], MaterialImageSelector.prototype, "labelBtn", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialImageSelector.prototype, "width", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialImageSelector.prototype, "height", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialImageSelector.prototype, "enableRotate", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialImageSelector.prototype, "enableZoom", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialImageSelector.prototype, "showZoomer", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], MaterialImageSelector.prototype, "mouseWheelZoom", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], MaterialImageSelector.prototype, "viewport", void 0); tslib_1.__decorate([ Option('load'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialImageSelector.prototype, "loadEvent", void 0); tslib_1.__decorate([ Option('startValidate'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialImageSelector.prototype, "startValidateEvent", void 0); tslib_1.__decorate([ Option('endValidate'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialImageSelector.prototype, "endValidateEvent", void 0); tslib_1.__decorate([ Option('beforeFocus'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialImageSelector.prototype, "beforeFocusEvent", void 0); tslib_1.__decorate([ Option('focus'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialImageSelector.prototype, "focusEvent", void 0); tslib_1.__decorate([ Option('beforeLostFocus'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialImageSelector.prototype, "beforeLostFocusEvent", void 0); tslib_1.__decorate([ Option('lostFocus'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialImageSelector.prototype, "lostFocusEvent", void 0); tslib_1.__decorate([ Option('beforeChange'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialImageSelector.prototype, "beforeChangeEvent", void 0); tslib_1.__decorate([ Option('change'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialImageSelector.prototype, "changeEvent", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", EventEmitter) ], MaterialImageSelector.prototype, "beforeSelectEvent", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", EventEmitter) ], MaterialImageSelector.prototype, "selectEvent", void 0); function MaterialImageSelector_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ MaterialImageSelector.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ MaterialImageSelector.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ MaterialImageSelector.propDecorators; /** @type {?} */ MaterialImageSelector.TYPE_NAME; /** @type {?} */ MaterialImageSelector.prototype.dataParent; /** @type {?} */ MaterialImageSelector.prototype.ignoreParentData; /** @type {?} */ MaterialImageSelector.prototype.data; /** @type {?} */ MaterialImageSelector.prototype.ignoreParentDisabled; /** @type {?} */ MaterialImageSelector.prototype.delegateHistory; /** @type {?} */ MaterialImageSelector.prototype.onDisabled; /** @type {?} */ MaterialImageSelector.prototype.onEnabled; /** @type {?} */ MaterialImageSelector.prototype.loadingEnabled; /** @type {?} */ MaterialImageSelector.prototype.i18nKey; /** @type {?} */ MaterialImageSelector.prototype.bypass; /** @type {?} */ MaterialImageSelector.prototype.options; /** @type {?} */ MaterialImageSelector.prototype.disabled; /** @type {?} */ MaterialImageSelector.prototype.field; /** @type {?} */ MaterialImageSelector.prototype.name; /** @type {?} */ MaterialImageSelector.prototype.typeOfData; /** @type {?} */ MaterialImageSelector.prototype.readOnly; /** @type {?} */ MaterialImageSelector.prototype.help; /** @type {?} */ MaterialImageSelector.prototype.maxFilesize; /** @type {?} */ MaterialImageSelector.prototype.fileTypes; /** @type {?} */ MaterialImageSelector.prototype.label; /** @type {?} */ MaterialImageSelector.prototype.labelBtn; /** @type {?} */ MaterialImageSelector.prototype.width; /** @type {?} */ MaterialImageSelector.prototype.height; /** @type {?} */ MaterialImageSelector.prototype.enableRotate; /** @type {?} */ MaterialImageSelector.prototype.enableZoom; /** @type {?} */ MaterialImageSelector.prototype.showZoomer; /** @type {?} */ MaterialImageSelector.prototype.mouseWheelZoom; /** @type {?} */ MaterialImageSelector.prototype.viewport; /** @type {?} */ MaterialImageSelector.prototype.loadEvent; /** @type {?} */ MaterialImageSelector.prototype.startValidateEvent; /** @type {?} */ MaterialImageSelector.prototype.endValidateEvent; /** @type {?} */ MaterialImageSelector.prototype.beforeFocusEvent; /** @type {?} */ MaterialImageSelector.prototype.focusEvent; /** @type {?} */ MaterialImageSelector.prototype.beforeLostFocusEvent; /** @type {?} */ MaterialImageSelector.prototype.lostFocusEvent; /** @type {?} */ MaterialImageSelector.prototype.beforeChangeEvent; /** @type {?} */ MaterialImageSelector.prototype.changeEvent; /** @type {?} */ MaterialImageSelector.prototype.beforeSelectEvent; /** @type {?} */ MaterialImageSelector.prototype.selectEvent; /** @type {?} */ MaterialImageSelector.prototype.originalValue; /** @type {?} */ MaterialImageSelector.prototype.imageUpload; /** @type {?} */ MaterialImageSelector.prototype.ngxCroppie; /** @type {?} */ MaterialImageSelector.prototype._croppieImage; /** @type {?} */ MaterialImageSelector.prototype.editedImage; /** @type {?} */ MaterialImageSelector.prototype.onCropImageDone; /** @type {?} */ MaterialImageSelector.prototype.originalFile; /** @type {?} */ MaterialImageSelector.prototype.pictureFrame; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0ZXJpYWxJbWFnZVNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL3RoZW1lL21hdGVyaWFsL2NvbXBvbmVudC9kYXRhdmlldy9pbnB1dC9NYXRlcmlhbEltYWdlU2VsZWN0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFNbkYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQU1sRyx1QkFBTSxTQUFTLEdBQVcseUJBQXlCLENBQUM7QUEyRXBELE1BQU0sNEJBQTZCLFNBQVEsbUJBQW1COzs7OztJQThKMUQsWUFBWSxVQUFzQixFQUFFLGdCQUFrQztRQUNsRSxLQUFLLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUM7S0FDdkM7Ozs7SUFFTSxRQUFRO1FBQ1gsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsU0FBUyxHQUFH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ckMsTUFBTSxDQUFDLGNBQWMsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQztzQ0FDTSxZQUFZOzs7SUFHbEMsTUFBTSxFQUFFO3NDQUNvQixZQUFZOzs7SUFFeEMsTUFBTSxFQUFFO3NDQUNjLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBBcHBsaWNhdGlvblJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XG5pbXBvcnQgeyBOZWVkRm9jdXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZS9OZWVkRm9jdXNTZXJ2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudC9tb2RlbC9WYWxpZGF0aW9uUmVzdWx0JztcbmltcG9ydCB7IElEcm9wcGFibGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21wb25lbnQvSURyb3BwYWJsZSc7XG5pbXBvcnQgeyBEcmFnRGF0YVRyYW5zZmVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50L21vZGVsL0RyYWdEYXRhVHJhbnNmZXInO1xuaW1wb3J0IHsgQ3JvcHBpZU9wdGlvbnMsIFJlc3VsdE9wdGlvbnMsIENyb3BEYXRhIH0gZnJvbSAnY3JvcHBpZSc7XG5pbXBvcnQgeyBJSGFzRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudC9JSGFzRGF0YSc7XG5pbXBvcnQgeyBJMThOIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVjb3JhdG9yL0kxOE4uZGVjb3JhdG9yJztcbmltcG9ydCB7IE5neENyb3BwaWVDb21wb25lbnQgfSBmcm9tICduZ3gtY3JvcHBpZSc7XG5pbXBvcnQgeyBBYnN0cmFjRmlsZVNlbGVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50L2RhdGF2aWV3L2lucHV0L0Fic3RyYWNGaWxlU2VsZWN0b3InO1xuaW1wb3J0IHsgQWJzdHJhY3REYXRhVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudC9jb21wb25lbnRzJztcbmltcG9ydCB7IEFic3RyYWN0SW5wdXREYXRhVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rpc3QvbGliL2xpYi9saWJzJztcblxuZGVjbGFyZSB2YXIgJDogYW55O1xuXG5jb25zdCBUWVBFX05BTUU6IHN0cmluZyA9IFwibWF0ZXJpYWwtaW1hZ2Utc2VsZWN0b3JcIjtcblxuQENvbXBvbmVudCh7XG4gICAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgICBzZWxlY3RvcjogVFlQRV9OQU1FLFxuICAgIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cIm1hdGVyaWFsLWltYWdlLXNlbGVjdG9yXCIgW3N0eWxlLndpZHRoXT1cImdldFdpZHRoKClcIiBbc3R5bGUuaGVpZ2h0XT1cImdldEhlaWdodCgpXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1hdGVyaWFsLWltYWdlLXNlbGVjdG9yLXJlYWRPbmx5XCIgW2NsYXNzLm1hdGVyaWFsLWltYWdlLXNlbGVjdG9yLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiICpuZ0lmPVwiaXNSZWFkT25seSgpIHx8IGlzRGlzYWJsZWQoKVwiXG4gICAgICAgIChjbGljayk9XCJvblJlYWRPbmx5Q2xpY2soJGV2ZW50KVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYXRlcmlhbC1pbWFnZS1zZWxlY3Rvci1icm93c2VcIiAqbmdJZj1cIiFfY3JvcHBpZUltYWdlXCIgW3N0eWxlLndpZHRoXT1cImdldFdpZHRoKClcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImdldEhlaWdodCgpXCI+XG4gICAgICAgIDxpbnB1dCAjaW1hZ2VVcGxvYWQgdHlwZT1cImZpbGVcIiBpZD1cImZpbGV1cGxvYWRcIiAoY2hhbmdlKT1cImltYWdlVXBsb2FkRXZlbnQoJGV2ZW50KVwiIGFjY2VwdD1cInt7Z2V0RmlsZVR5cGVzKCl9fVwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyLWRyYWctaW1hZ2UtYnRuLWJyb3dzZVwiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2ltZy5pY29uczguY29tL2lvcy8xMDAvMDAwMDAwL3BpY3R1cmUtZmlsbGVkLnBuZ1wiIGFsdD1cIlwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1kcmFnLWltYWdlXCI+e3tnZXRMYWJlbCgpfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLW9yXCI+LSDguKvguKPguLfguK0gLTwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwiaW1hZ2VVcGxvYWQuY2xpY2soKVwiPnt7Z2V0TGFiZWxCdG4oKX19PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYXRlcmlhbC1pbWFnZS1zZWxlY3Rvci1jcm9wXCIgKm5nSWY9XCJfY3JvcHBpZUltYWdlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNDcm9wSW1hZ2VEb25lKCk7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlci1jb250cm9sbGVyLWNyb3AtaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFyLWNvbnRyb2xsZXItY3JvcC1pbWFnZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctYmFyLWNvbnRyb2xsZXItY3JvcC1pbWFnZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFbmFibGVSb3RhdGUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3cmFwcGVyLWljb24tcm90YXRlXCIgKGNsaWNrKT1cInJvdGF0ZUxlZnQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCA0ODEuOTUgNDgxLjk1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTE0Ljc1LDE5MS4yNWwtMzUuNy0zNS43QzU2LjEsMTg2LjE1LDQwLjgsMjE5LjMsMzguMjUsMjU1aDUxQzkxLjgsMjMyLjA1LDEwMiwyMTEuNjUsMTE0Ljc1LDE5MS4yNXogTTg5LjI1LDMwNmgtNTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzUuMSwzNS43LDE3Ljg1LDY4Ljg1LDQwLjgsOTkuNDVsMzUuNy0zNS43QzEwMiwzNDkuMzUsOTEuOCwzMjguOTUsODkuMjUsMzA2eiBNMTE0Ljc1LDQ0MS4xNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMzAuNiwyMi45NDksNjMuNzUsMzUuNjk5LDk5LjQ1LDQwLjh2LTUxYy0yMi45NS0yLjU1LTQzLjM1LTEyLjc1LTYzLjc1LTI1LjVMMTE0Ljc1LDQ0MS4xNXogTTI2NS4yLDc5LjA1VjBMMTUwLjQ1LDExNC43NVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMMjY1LjIsMjI5LjV2LTk5LjQ1YzcxLjQsMTIuNzUsMTI3LjUsNzMuOTUsMTI3LjUsMTUwLjQ1cy01Ni4xLDEzNy43LTEyNy41LDE1MC40NXY1MWM5OS40NS0xMi43NSwxNzguNS05OS40NSwxNzguNS0yMDEuNDVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUzM2NC42NSw5MS44LDI2NS4yLDc5LjA1elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndyYXBwZXItaWNvbi1yb3RhdGVcIiAoY2xpY2spPVwicm90YXRlUmlnaHQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCA0ODEuOTUgNDgxLjk1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMzMxLjUsMTE0Ljc1TDIxNi43NSwwdjc5LjA1QzExNy4zLDkxLjgsMzguMjUsMTc1Ljk1LDM4LjI1LDI4MC41czc5LjA1LDE4OC43LDE3OC41LDIwMS40NXYtNTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzE0NS4zNSw0MTguMiw4OS4yNSwzNTcsODkuMjUsMjgwLjVzNTYuMS0xMzcuNywxMjcuNS0xNTAuNDV2OTkuNDVMMzMxLjUsMTE0Ljc1eiBNNDQzLjcsMjU1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtNS4xMDEtMzUuNy0xNy44NTEtNjguODUtNDAuOC05OS40NWwtMzUuNywzNS43YzEyLjc1LDIwLjQsMjIuOTUsNDAuOCwyNS41LDYzLjc1SDQ0My43eiBNMjY3Ljc1LDQzMC45NXY1MVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMzUuNy01LjEwMSw2OC44NS0xNy44NTEsOTkuNDUtNDAuOGwtMzUuNy0zNS43QzMxMS4xLDQxOC4yLDI5MC43LDQyOC40LDI2Ny43NSw0MzAuOTV6IE0zNjcuMiwzNjkuNzVsMzUuNywzNS43XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyMi45NDktMzAuNjAxLDM4LjI1LTYzLjc1LDQwLjgtOTkuNDVoLTUxQzM5MC4xNSwzMjguOTUsMzc5Ljk1LDM0OS4zNSwzNjcuMiwzNjkuNzV6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid3JhcHBlci1pY29uLWNvcnJlY3RcIiAoY2xpY2spPVwic2F2ZUltYWdlRnJvbUNyb3BwaWUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUwNC41MDIsNzUuNDk2Yy05Ljk5Ny05Ljk5OC0yNi4yMDUtOS45OTgtMzYuMjA0LDBMMTYxLjU5NCwzODIuMjAzTDQzLjcwMiwyNjQuMzExYy05Ljk5Ny05Ljk5OC0yNi4yMDUtOS45OTctMzYuMjA0LDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy05Ljk5OCw5Ljk5Ny05Ljk5OCwyNi4yMDUsMCwzNi4yMDNsMTM1Ljk5NCwxMzUuOTkyYzkuOTk0LDkuOTk3LDI2LjIxNCw5Ljk5LDM2LjIwNCwwTDUwNC41MDIsMTExLjdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzUxNC41LDEwMS43MDMsNTE0LjQ5OSw4NS40OTQsNTA0LjUwMiw3NS40OTZ6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid3JhcHBlci1pY29uLWNhbmNlbFwiIChjbGljayk9XCJjbGFlckNyb3BwaWVFZGl0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCA1MTIuMDAxIDUxMi4wMDFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI5NC4xMTEsMjU2LjAwMUw1MDQuMTA5LDQ2LjAwM2MxMC41MjMtMTAuNTI0LDEwLjUyMy0yNy41ODYsMC0zOC4xMDljLTEwLjUyNC0xMC41MjQtMjcuNTg3LTEwLjUyNC0zOC4xMSwwTDI1NiwyMTcuODkyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEw0Ni4wMDIsNy44OTRjLTEwLjUyNC0xMC41MjQtMjcuNTg2LTEwLjUyNC0zOC4xMDksMHMtMTAuNTI0LDI3LjU4NiwwLDM4LjEwOWwyMDkuOTk4LDIwOS45OThMNy44OTMsNDY1Ljk5OVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLTEwLjUyNCwxMC41MjQtMTAuNTI0LDI3LjU4NiwwLDM4LjEwOWMxMC41MjQsMTAuNTI0LDI3LjU4NiwxMC41MjMsMzguMTA5LDBMMjU2LDI5NC4xMWwyMDkuOTk3LDIwOS45OThcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzEwLjUyNCwxMC41MjQsMjcuNTg3LDEwLjUyMywzOC4xMSwwYzEwLjUyMy0xMC41MjQsMTAuNTIzLTI3LjU4NiwwLTM4LjEwOUwyOTQuMTExLDI1Ni4wMDF6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5neC1jcm9wcGllICNuZ3hDcm9wcGllIFtjcm9wcGllT3B0aW9uc109XCJjcm9wcGllT3B0aW9uc1wiIFtjbGFzcy5oaWRlblpvb21lcl09XCIhZ2V0U2hvd1pvb21lcigpXCIgW2ltYWdlVXJsXT1cIl9jcm9wcGllSW1hZ2VcIlxuICAgICAgICAgICAgICAgIFtwb2ludHNdPVwiWzAsMCw0MDAsNDAwXVwiIChyZXN1bHQpPVwibmV3SW1hZ2VSZXN1bHRGcm9tQ3JvcHBpZSgkZXZlbnQpXCI+PC9uZ3gtY3JvcHBpZT5