1 import { Component, forwardRef, Input, OnInit } from '@angular/core'
2 import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'
3 import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser'
4 import { ServerService } from '@app/core'
7 selector: 'my-preview-upload',
8 styleUrls: [ './preview-upload.component.scss' ],
9 templateUrl: './preview-upload.component.html',
12 provide: NG_VALUE_ACCESSOR,
13 useExisting: forwardRef(() => PreviewUploadComponent),
18 export class PreviewUploadComponent implements OnInit, ControlValueAccessor {
19 @Input() inputLabel: string
20 @Input() inputName: string
21 @Input() previewWidth: string
22 @Input() previewHeight: string
24 imageSrc: SafeResourceUrl
25 allowedExtensionsMessage = ''
30 private sanitizer: DomSanitizer,
31 private serverService: ServerService
34 get videoImageExtensions () {
35 return this.serverService.getConfig().video.image.extensions
38 get maxVideoImageSize () {
39 return this.serverService.getConfig().video.image.size.max
43 this.allowedExtensionsMessage = this.videoImageExtensions.join(', ')
46 onFileChanged (file: File) {
49 this.propagateChange(this.file)
53 propagateChange = (_: any) => { /* empty */ }
55 writeValue (file: any) {
60 registerOnChange (fn: (_: any) => void) {
61 this.propagateChange = fn
64 registerOnTouched () {
68 private updatePreview () {
70 const url = URL.createObjectURL(this.file)
71 this.imageSrc = this.sanitizer.bypassSecurityTrustResourceUrl(url)