{"__symbolic":"module","version":4,"metadata":{"TsFileUploadModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":24,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":26,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":27,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":28,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-bar","name":"MatProgressBarModule","line":29,"character":4},{"__symbolic":"reference","module":"@terminus/ui/button","name":"TsButtonModule","line":30,"character":4},{"__symbolic":"reference","module":"@terminus/ui/icon-button","name":"TsIconButtonModule","line":31,"character":4},{"__symbolic":"reference","module":"@terminus/ui/icon","name":"TsIconModule","line":32,"character":4},{"__symbolic":"reference","module":"@terminus/ui/tooltip","name":"TsTooltipModule","line":33,"character":4},{"__symbolic":"reference","module":"@terminus/ui/validation-messages","name":"TsValidationMessagesModule","line":34,"character":4}],"declarations":[{"__symbolic":"reference","name":"TsFileUploadComponent"}],"providers":[{"__symbolic":"reference","module":"@terminus/ui/pipes","name":"TsDatePipe","line":40,"character":4},{"__symbolic":"reference","module":"@terminus/ngx-tools/browser","name":"TsDocumentService","line":41,"character":4},{"__symbolic":"reference","name":"TsDropProtectionService"}],"exports":[{"__symbolic":"reference","name":"TsFileUploadComponent"}]}]}],"members":{}},"TsDropProtectionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@terminus/ngx-tools/browser","name":"TsWindowService","line":9,"character":27}]}],"add":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"prevent":[{"__symbolic":"method"}]}},"ImageRatio":{"__symbolic":"interface"},"TsFileUploadDragEvent":{"__symbolic":"interface"},"TsFileUploadComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@terminus/ui/utilities","name":"TsReactiveFormBaseComponent","line":117,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":104,"character":1},"arguments":[{"selector":"ts-file-upload","host":{"class":"ts-file-upload","(keydown)":"handleKeydown($event)","$quoted$":["class","(keydown)"]},"providers":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@terminus/ui/utilities","name":"ControlValueAccessorProviderFactory","line":112,"character":14},"arguments":[{"__symbolic":"reference","name":"TsFileUploadComponent"}]}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":113,"character":19},"member":"OnPush"},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":114,"character":17},"member":"None"},"exportAs":"tsFileUpload","template":"<div\n  class=\"c-file-upload qa-file-upload\"\n  [class.c-file-upload--disabled]=\"isDisabled\"\n  [class.c-file-upload--drag]=\"dragInProgress\"\n  [class.c-file-upload--file]=\"file\"\n  [class.c-file-upload--error]=\"file && !file.isValid\"\n  [id]=\"id\"\n  tabindex=\"1\"\n  fxLayout=\"column\"\n>\n  <div\n    fxLayout=\"row\"\n    fxLayoutAlign=\"start center\"\n    [fxLayoutGap]=\"layoutGap\"\n  >\n    <div\n      class=\"c-file-upload__empty qa-file-upload-empty\"\n      fxLayout=\"row\"\n      fxLayoutAlign=\"start center\"\n      fxFlex=\"grow\"\n      *ngIf=\"!file\"\n    >\n      <!--\n        NOTE: If the copy isn't touching the </ts-icon> closing tag too much space will exist between the icon and text\n      -->\n      <ts-icon [inline]=\"true\">\n        cloud_upload\n      </ts-icon>Drop file{{ multiple ? 's' : '' }} here\n      {{ hideButton ? 'or click to select' : '' }}\n    </div>\n\n    <div\n      class=\"c-file-upload__file\"\n      [class.c-file-upload__file--hidden]=\"!file\"\n      fxFlex\n      fxLayout=\"column\"\n      fxLayoutAlign=\"center start\"\n    >\n\n      <div\n        fxFill\n        fxLayout=\"row\"\n        fxLayoutAlign=\"start center\"\n      >\n        <div\n          class=\"c-file-upload__preview qa-file-upload-preview\"\n          [hidden]=\"!file\"\n          fxFlex=\"noshrink\"\n        >\n          <img\n            #preview\n            alt=\"\"\n            [attr.src]=\"file?.fileContents\"\n            *ngIf=\"file?.isImage\"\n          >\n\n          <ts-icon\n            [svgIcon]=\"'csv'\"\n            *ngIf=\"file?.isCSV\"\n          ></ts-icon>\n        </div>\n\n        <div\n          class=\"c-file-upload__filename qa-file-upload-name\"\n          fxFlex=\"grow\"\n          fxLayout=\"row\"\n          fxLayoutAlign=\"start center\"\n          title=\"{{ file?.name }}\"\n        >\n          <div class=\"c-file-upload__filename-inner\">\n            {{ file?.name }}\n          </div>\n        </div>\n\n        <ts-tooltip tooltipValue=\"Remove file\">\n          <ts-icon-button\n            class=\"c-file-upload__remove qa-file-upload-remove\"\n            theme=\"warn\"\n            actionName=\"Reset\"\n            (click)=\"removeFile($event)\"\n          >clear</ts-icon-button>\n        </ts-tooltip>\n      </div>\n    </div>\n\n    <ts-button\n      class=\"c-file-upload__prompt qa-file-upload-prompt\"\n      [class.c-file-upload__prompt--hidden]=\"hideButton\"\n      [theme]=\"theme\"\n      [isDisabled]=\"dragInProgress || isDisabled\"\n      (clicked)=\"promptForFiles()\"\n    >\n      {{ buttonMessage }}\n    </ts-button>\n  </div>\n\n  <mat-progress-bar\n    *ngIf=\"file && progress > 0\"\n    class=\"c-file-upload__progress qa-file-upload-progress\"\n    mode=\"determinate\"\n    [value]=\"progress\"\n    [color]=\"theme\"\n  ></mat-progress-bar>\n</div>\n\n<div\n  fxLayout=\"column\"\n  fxLayout.gt-xs=\"row\"\n>\n  <ts-validation-messages\n    fxFlex=\"noshrink\"\n    class=\"qa-file-upload-validation-messages\"\n    *ngIf=\"formControl && formControl.errors\"\n    [control]=\"formControl\"\n  ></ts-validation-messages>\n\n\n  <div fxFlex=\"grow\" class=\"c-file-upload__hints qa-file-upload-hints\">\n    <div\n      class=\"c-file-upload__hint\"\n      *ngFor=\"let hint of hints; trackBy: trackByFn\"\n    >\n      {{ hint }}\n    </div>\n  </div>\n</div>\n","styles":[".ts-file-upload{display:block;position:relative}.ts-file-upload .c-file-upload:not(.c-file-upload--disabled){cursor:pointer}.ts-file-upload+.ts-file-upload{margin-top:24px}.c-file-upload{border:1px dashed #cecdd1;border-radius:3px;padding:12px;transition:background-color .2s ease-out,border-color .2s ease-out;will-change:background-color,border-color}.c-file-upload:focus:not(.c-file-upload--disabled),.c-file-upload:hover:not(.c-file-upload--disabled){border-color:#1777b6}.c-file-upload--drag{background-color:#d3eaf9;border-color:#1777b6}.c-file-upload--drag .c-file-upload__remove{opacity:0}.c-file-upload--file{border-color:#1777b6}.c-file-upload--error{border-color:#c8604d}.c-file-upload.c-file-upload--disabled .c-file-upload__empty{color:#cecdd1}.c-file-upload .c-file-upload__file{font-size:75%;font-weight:400;letter-spacing:.01em;line-height:1.5;font-family:Lucida Console,Monaco,DejaVu Sans Mono,monospace;color:#757575;overflow:auto;position:relative}.c-file-upload .c-file-upload__file--hidden{position:absolute;visibility:hidden}.c-file-upload .c-file-upload__empty{color:#757575}.c-file-upload .c-file-upload__empty .ts-icon{margin-right:4px}.c-file-upload .c-file-upload__preview{border:1px solid #cecdd1;border-radius:3px;height:2.375rem;margin-right:12px;max-width:4.75rem;overflow:hidden;padding:4px;position:relative}.c-file-upload .c-file-upload__preview img{display:block;max-height:100%;max-width:100%}.c-file-upload .c-file-upload__filename{overflow:hidden}.c-file-upload .c-file-upload__filename-inner{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c-file-upload .c-file-upload__remove{transition:color .2s,opacity .1s;will-change:color,opacity}.c-file-upload .c-file-upload__progress{display:block;margin-top:12px}.c-file-upload .c-file-upload__progress .mat-progress-bar-buffer{background-color:#d3eaf9}.c-file-upload .c-file-upload__prompt{pointer-events:none}.c-file-upload .c-file-upload__prompt--hidden{position:absolute;visibility:hidden}.c-file-upload__hints{font-family:Roboto,Helvetica Neue,Helvetica,Arial,sans-serif;color:#999;font-size:75%;font-weight:400;letter-spacing:.01em;line-height:1.5;padding:.3em .4em .2em;text-align:right}"]}]}],"members":{"preview":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":146,"character":3},"arguments":["preview"]}]}],"accept":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":225,"character":3}}]}],"dimensionConstraints":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":244,"character":3}}]}],"formControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":258,"character":3}}]}],"hideButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":270,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":278,"character":3}}]}],"isDisabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":290,"character":3}}]}],"maximumKilobytesPerFile":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":298,"character":3}}]}],"multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":310,"character":3}}]}],"progress":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":318,"character":3}}]}],"ratioConstraints":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":332,"character":3}}]}],"seedFile":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":355,"character":3}}]}],"theme":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":387,"character":3}}]}],"cleared":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":393,"character":3}}]}],"enter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":399,"character":3}}]}],"exit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":405,"character":3}}]}],"selected":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":411,"character":3}}]}],"selectedMultiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":417,"character":3}}]}],"handleDragover":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":425,"character":3},"arguments":["dragover",["$event"]]}]}],"handleDragleave":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":435,"character":3},"arguments":["dragleave",["$event"]]}]}],"handleDrop":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":445,"character":3},"arguments":["drop",["$event"]]}]}],"handleClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":455,"character":3},"arguments":["click"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@terminus/ngx-tools/browser","name":"TsDocumentService","line":465,"character":29},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":466,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":467,"character":31},{"__symbolic":"reference","name":"TsDropProtectionService"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"handleKeydown":[{"__symbolic":"method"}],"promptForFiles":[{"__symbolic":"method"}],"removeFile":[{"__symbolic":"method"}],"createFileInput":[{"__symbolic":"method"}],"collectFilesFromEvent":[{"__symbolic":"method"}],"registerOnChangeFn":[{"__symbolic":"method"}],"setUpNewFile":[{"__symbolic":"method"}],"onVirtualInputElementChange":[{"__symbolic":"method"}],"preventAndStopEventPropagation":[{"__symbolic":"method"}],"updateVirtualFileInputAttrs":[{"__symbolic":"method"}],"setValidationMessages":[{"__symbolic":"method"}],"clearValidationMessages":[{"__symbolic":"method"}],"parseRatioStringToObject":[{"__symbolic":"method"}],"parseRatioToString":[{"__symbolic":"method"}],"trackByFn":[{"__symbolic":"method"}]}},"TsFileImageDimensionContraint":{"__symbolic":"interface"},"TsFileImageDimensionConstraints":{"__symbolic":"interface"},"TsImageDimensions":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"number"}]}]}},"TsFileAcceptedMimeTypes":{"__symbolic":"interface"},"TS_ACCEPTED_MIME_TYPES":["text/csv","image/jpeg","image/jpg","image/png","image/gif","video/mp4","video/x-flv","video/webm","video/quicktime","video/mpeg"],"TsFileValidations":{"__symbolic":"interface"},"TsSelectedFile":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":66,"character":17,"context":{"typeName":"File"},"module":"./selected-file"},{"__symbolic":"reference","name":"TsFileImageDimensionConstraints"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"TsFileAcceptedMimeTypes"}]},{"__symbolic":"reference","name":"number"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"ImageRatio"}]}]}],"determineImageDimensions":[{"__symbolic":"method"}],"validateImageDimensions":[{"__symbolic":"method"}],"validateImageRatio":[{"__symbolic":"method"}],"isSame":[{"__symbolic":"method"}]}}},"origins":{"TsFileUploadModule":"./file-upload.module","TsDropProtectionService":"./drop-protection.service","ImageRatio":"./file-upload.component","TsFileUploadDragEvent":"./file-upload.component","TsFileUploadComponent":"./file-upload.component","TsFileImageDimensionContraint":"./image-dimension-constraints","TsFileImageDimensionConstraints":"./image-dimension-constraints","TsImageDimensions":"./image-dimensions","TsFileAcceptedMimeTypes":"./mime-types","TS_ACCEPTED_MIME_TYPES":"./mime-types","TsFileValidations":"./selected-file","TsSelectedFile":"./selected-file"},"importAs":"@terminus/ui/file-upload"}