@guajiritos/image-picker 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guajiritos-image-picker.mjs","sources":["../../../projects/guachos-image-picker/src/utils/pipes/i18n/i18n.pipe.ts","../../../projects/guachos-image-picker/src/utils/pipes/calculate-size/calculate-size.pipe.ts","../../../projects/guachos-image-picker/src/utils/pipes/pipes.module.ts","../../../projects/guachos-image-picker/src/lib/guachos-image-picker.component.ts","../../../projects/guachos-image-picker/src/lib/guachos-image-picker.component.html","../../../projects/guachos-image-picker/src/public-api.ts","../../../projects/guachos-image-picker/src/guajiritos-image-picker.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'i18n'\n})\nexport class I18nPipe implements PipeTransform {\n private en: any = {\n UPLOAD_A_IMAGE: 'Upload an image',\n MUST_EDIT: 'You must edit the image in order to resize it',\n TOO_LARGE: 'too large',\n OPEN_EDITOR_PANEL: 'Open the editor panel',\n DOWNLOAD: 'Download the image',\n CONTROL_PANEL: 'Control Panel',\n QUALITY: 'Quality',\n SAVE: 'Save',\n MAX_DIMENSIONS: 'Max dimensions',\n ASPECT_RATIO: 'Aspect ratio',\n MAX_WIDTH_PX: 'max-width(px)',\n MAX_HEIGHT_PX: 'max-height(px)',\n FORMAT: 'Format',\n CROP: 'Crop',\n WIDTH_PX: 'width(px)',\n HEIGHT_PX: 'height(px)',\n REMOVE: 'Remove',\n SIZE: 'Size'\n };\n\n private es: any = {\n UPLOAD_A_IMAGE: 'Suba una imagen',\n MUST_EDIT: 'Debe editar la imagen para disminuir su tamaño',\n TOO_LARGE: 'muy grande',\n OPEN_EDITOR_PANEL: 'Abra el panel de edición',\n DOWNLOAD: 'Descargue la imagen',\n CONTROL_PANEL: 'Panel de control',\n REMOVE: 'Eliminar',\n SAVE: 'Guardar',\n QUALITY: 'Calidad',\n MAX_DIMENSIONS: 'Dimensiones',\n ASPECT_RATIO: 'Relación-Aspecto',\n MAX_WIDTH_PX: 'max. ancho',\n MAX_HEIGHT_PX: 'max. alto',\n FORMAT: 'Formato',\n CROP: 'Recortar',\n WIDTH_PX: 'ancho(px)',\n HEIGHT_PX: 'altura(px)',\n SIZE: 'Tamaño'\n };\n\n transform(key: string, language: string): string {\n return language === 'en' ? this.en?.[key] : this.es?.[key];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'calculateSize'\n})\nexport class CalculateSizePipe implements PipeTransform {\n\n transform(imageLength: number): number {\n if (!imageLength) {\n return 0;\n }\n\n if (imageLength) {\n return Math.ceil(((3 / 4) * imageLength) / 1024);\n } else {\n return 0;\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { I18nPipe } from './i18n/i18n.pipe';\nimport { CalculateSizePipe } from './calculate-size/calculate-size.pipe';\n\n\n@NgModule({\n declarations: [I18nPipe, CalculateSizePipe],\n exports: [I18nPipe, CalculateSizePipe],\n})\nexport class PipesModule { }\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n signal,\n ViewChild,\n WritableSignal,\n} from '@angular/core';\nimport { ResizeObserver } from 'resize-observer';\nimport { Subject } from 'rxjs';\nimport { ResizeObserverEntry } from 'resize-observer/lib/ResizeObserverEntry';\nimport { ThemePalette } from '@angular/material/core';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { PipesModule } from '../utils/pipes/pipes.module';\n\nexport interface ImagePickerConf {\n width?: string;\n height?: string;\n borderRadius?: string;\n compressInitial?: boolean;\n language?: string;\n hideDeleteBtn?: boolean;\n hideDownloadBtn?: boolean;\n hideEditBtn?: boolean;\n hideAddBtn?: boolean;\n}\n\nexport interface ImageConverterInput {\n width?: number;\n height?: number;\n quality?: number;\n dataType?: string;\n maintainRatio?: boolean;\n changeHeight?: boolean;\n changeWidth?: boolean;\n}\n\nexport type ImageAllowedTypes =\n 'image/*'\n | '.webp'\n | '.png'\n | '.webp, .jpg, .jpeg'\n | '.webp, .png'\n | '.jpg, .jpeg'\n | '.png, .jpg, .jpeg'\n | '.webp, .png, .jpg, .jpeg';\n\n@Component({\n selector: 'guajiritos-image-picker',\n templateUrl: './guachos-image-picker.component.html',\n styleUrls: ['./guachos-image-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n BrowserAnimationsModule,\n MatTooltipModule,\n MatIconModule,\n MatButtonModule,\n MatCheckboxModule,\n MatSliderModule,\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n MatSelectModule,\n ReactiveFormsModule,\n PipesModule\n ],\n})\nexport class GuajiritosImagePicker implements OnDestroy {\n constructor() {\n }\n\n private unsubscribeAll$: Subject<void> = new Subject();\n private observer: any = null;\n private originImageSrc: any;\n private fileType: any;\n private urlImage: string | undefined;\n private lastOriginSrc: any;\n\n private arrayCopiedImages: any[] = [];\n\n public readonly uuidFilePicker: string = Date.now().toString(20);\n public readonly allFormats: string[] = ['webp', 'jpeg', 'png'];\n public config: WritableSignal<ImagePickerConf> = signal({\n height: '240px',\n width: '320px',\n borderRadius: '16px',\n compressInitial: true,\n language: 'es',\n hideDeleteBtn: false,\n hideDownloadBtn: false,\n hideEditBtn: false,\n hideAddBtn: false,\n });\n public imageSrc: WritableSignal<string> = signal(null);\n public showCrop: UntypedFormControl = new UntypedFormControl({ value: false, disabled: false });\n public loadImage: WritableSignal<boolean> = signal(false);\n public noEdit: WritableSignal<boolean> = signal(false);\n public showEditPanel: WritableSignal<boolean> = signal(false);\n public maintainAspectRatio: UntypedFormControl = new UntypedFormControl({ value: true, disabled: false });\n public quality: UntypedFormControl = new UntypedFormControl({ value: 70, disabled: false });\n public format: UntypedFormControl = new UntypedFormControl({ value: 'webp', disabled: false });\n public maxHeight: WritableSignal<number> = signal(2000);\n public maxWidth: WritableSignal<number> = signal(2000);\n public cropHeight: UntypedFormControl = new UntypedFormControl({ value: 150, disabled: false });\n public cropWidth: UntypedFormControl = new UntypedFormControl({ value: 150, disabled: false });\n public imageName: WritableSignal<string> = signal('download');\n public currentLanguage: WritableSignal<string> = signal('es');\n\n @Input() appearance: MatFormFieldAppearance = 'outline';\n @Input() color: ThemePalette = 'primary';\n @Input() imagesAllowed: ImageAllowedTypes = 'image/*';\n\n @ViewChild('imagePicker', { static: false }) imagePicker: ElementRef | undefined;\n\n @Output() $imageChanged: EventEmitter<any> = new EventEmitter<any>();\n @Output() $imageOriginal: EventEmitter<any> = new EventEmitter<any>();\n\n @Input() set _imageSrc(image: string) {\n if (image) {\n let types: string[] = image.split('.');\n this.format.setValue(types[types.length - 1]);\n\n if (!this.format.value || (this.format.value !== 'png' && this.format.value !== 'jpeg' && this.format.value !== 'webp')) {\n this.format.setValue('jpeg');\n }\n\n this.imageSrc.set(image);\n this.arrayCopiedImages = [];\n this.arrayCopiedImages.push(this.imageSrc);\n this.originImageSrc = image;\n this.lastOriginSrc = image;\n this.$imageOriginal.next(this.originImageSrc);\n this.loadImage.set(true);\n this.noEdit.set(true);\n } else {\n this.imageSrc.set(null);\n this.originImageSrc = null;\n this.loadImage.set(false);\n this.noEdit.set(false);\n this.arrayCopiedImages = [];\n this.lastOriginSrc = null;\n this.$imageOriginal.next(null);\n this.format.setValue('jpeg');\n this.maxHeight.set(2000);\n this.maxWidth.set(2000);\n this.cropHeight.setValue(150);\n this.cropWidth.setValue(150);\n this.maintainAspectRatio.setValue(true);\n this.showEditPanel.set(false);\n }\n }\n\n @Input() set _config(value: ImagePickerConf) {\n if (value && value.constructor == Object) {\n this.config.set({\n ...this.config(),\n ...value,\n })\n }\n }\n\n private async handleReaderLoaded(readerEvt: { target: { result: any; }; }): Promise<void> {\n const binaryString: string = readerEvt.target.result;\n const base64textString: string = btoa(binaryString);\n this.originImageSrc = this.urlImage + base64textString;\n this.lastOriginSrc = this.urlImage + base64textString;\n if (this.config()?.compressInitial) {\n this.quality.setValue(70);\n const input: ImageConverterInput = {\n dataType: this.format.value,\n quality: 0.70,\n maintainRatio: true,\n };\n this.imageSrc.set(await this.resizeDataURL(this.urlImage + base64textString, input));\n } else {\n this.imageSrc.set(this.urlImage + base64textString);\n this.arrayCopiedImages = [];\n this.arrayCopiedImages.push({\n lastImage: this.imageSrc(),\n width: this.maxWidth(),\n height: this.maxHeight(),\n quality: this.quality.value,\n });\n this.$imageOriginal.next(this.imageSrc());\n }\n this.$imageChanged.next(this.imageSrc());\n this.loadImage.set(true);\n }\n\n private async resizeDataURL(datas: string, input: ImageConverterInput): Promise<any> {\n return await new Promise(async function(resolve): Promise<void> {\n let img: HTMLImageElement = document.createElement('img');\n img.src = datas + '';\n img.crossOrigin = 'Anonymous';\n let quality: number = input?.quality ?? 1.0;\n let maintainRatio: boolean = input.maintainRatio !== undefined ? input.maintainRatio : true;\n\n img.onload = function(): void {\n const canvas: HTMLCanvasElement = document.createElement('canvas');\n const ctx: CanvasRenderingContext2D = canvas.getContext('2d');\n let ratio: number = img.width / img.height;\n let width: number = input?.width ?? img.width;\n let height: number = input?.height ?? img.height;\n\n if (maintainRatio) {\n if (input.changeHeight) {\n canvas.width = height * ratio;\n canvas.height = height;\n } else {\n canvas.width = width;\n canvas.height = width / ratio;\n }\n } else {\n canvas.width = width;\n canvas.height = height;\n }\n\n ctx?.drawImage(img, 0, 0, canvas.width, canvas.height);\n let type: string = input?.dataType ?? 'webp';\n const dataURI: string = canvas.toDataURL(`image/${type}`, quality);\n resolve({\n dataUri: dataURI,\n width: canvas.width,\n height: canvas.height,\n });\n };\n }).then((data: any) => {\n this.maxHeight = data?.height;\n this.maxWidth = data?.width;\n if (this.arrayCopiedImages?.length <= 20) {\n this.arrayCopiedImages.push({\n lastImage: data?.dataUri,\n width: this.maxWidth,\n height: this.maxHeight,\n quality: this.quality.value,\n });\n }\n\n return data.dataUri;\n });\n }\n\n private wait(ms?: number | undefined): Promise<any> {\n ms = ms ?? 1000;\n return new Promise((resolve): void => {\n setTimeout(() => {\n return resolve(true);\n }, ms);\n });\n }\n\n private dragElement(element: HTMLElement): void {\n let pos1: number = 0, pos2: number = 0, pos3: number = 0, pos4: number = 0;\n\n let el: HTMLElement = document.getElementById(element.id + '-header');\n if (el) {\n el.onmousedown = dragMouseDown;\n el.ontouchstart = dragMouseDown;\n } else {\n element.onmousedown = dragMouseDown;\n element.ontouchstart = dragMouseDown;\n }\n\n function dragMouseDown(e: any): void {\n e = e || window.event;\n e?.preventDefault();\n pos3 = e?.clientX;\n pos4 = e?.clientY;\n document.onmouseup = closeDragElement;\n document.ontouchend = closeDragElement;\n document.onmousemove = elementDrag;\n document.ontouchmove = elementDrag;\n }\n\n function elementDrag(e: any): void {\n let holderImage: any = document.getElementById('image-full');\n e = e || window.event;\n e?.preventDefault();\n pos1 = pos3 - e?.clientX;\n pos2 = pos4 - e?.clientY;\n pos3 = e?.clientX;\n pos4 = e?.clientY;\n\n const newTop: number = element.offsetTop - pos2;\n const newLeft: number = element.offsetLeft - pos1;\n const rectHolder = holderImage.getBoundingClientRect();\n const rectElement: DOMRect = element.getBoundingClientRect();\n if (newTop >= rectHolder.y + 8) {\n element.style.top = Math.min(newTop, rectHolder.y + rectHolder.height - rectElement.height - 4) + 'px';\n }\n if (newLeft > rectHolder.x + 4 && rectHolder.x + rectHolder.width > rectElement.x + rectElement.width + 2) {\n element.style.left = Math.min(newLeft, rectHolder.x + rectHolder.width - rectElement.width - 4) + 'px';\n }\n }\n\n function closeDragElement(): void {\n document.onmouseup = null;\n document.onmousemove = null;\n document.ontouchend = null;\n document.ontouchmove = null;\n }\n }\n\n public onUpload(event: { preventDefault: () => void; }): void {\n event.preventDefault();\n this.imagePicker?.nativeElement.click();\n }\n\n public handleFileSelect(evt: any): void {\n const files = evt?.target?.files;\n if (files) {\n const file = files[0];\n this.imageName.set(file?.name?.split('.')[0]);\n this.fileType = file?.type;\n this.urlImage = `data:${file?.type};base64,`;\n this.noEdit.set(false);\n\n if (files && file) {\n const reader: any = new FileReader();\n reader.onload = this.handleReaderLoaded.bind(this);\n reader.readAsBinaryString(file);\n }\n }\n }\n\n public onCloseEditPanel(): void {\n if (this.observer instanceof ResizeObserver) {\n let imageCropper: any = document.getElementById('image-cropper');\n let imageFull: any = document.getElementById('image-full');\n this.observer.unobserve(imageCropper);\n this.observer.unobserve(imageFull);\n }\n this.showCrop.setValue(false);\n this.showEditPanel.set(false);\n }\n\n public async onChangeQuality(): Promise<void> {\n const qualityItem: number = this.quality.value / 100;\n this.maxHeight.set(this.maxHeight() ?? 2000);\n this.maxWidth.set(this.maxWidth() ?? 2000);\n\n await this.wait(250);\n try {\n const input: ImageConverterInput = {\n height: this.maxHeight(),\n width: this.maxWidth(),\n dataType: this.format.value,\n quality: qualityItem,\n maintainRatio: this.maintainAspectRatio.value,\n };\n\n this.imageSrc.set(await this.resizeDataURL(this.originImageSrc, input));\n this.$imageChanged.next(this.imageSrc());\n this.loadImage.set(true);\n } catch (error) {\n this.loadImage.set(true);\n }\n }\n\n public async onChangeFormat(): Promise<void> {\n let qualityItem: number = this.quality.value / 100;\n this.maxHeight.set(this.maxHeight() ?? 2000);\n this.maxWidth.set(this.maxWidth() ?? 2000);\n\n await this.wait(250);\n try {\n let input: ImageConverterInput = {\n height: this.maxHeight(),\n width: this.maxWidth(),\n dataType: this.format.value,\n quality: qualityItem,\n maintainRatio: this.maintainAspectRatio.value,\n };\n this.imageSrc.set(await this.resizeDataURL(this.originImageSrc, input));\n this.$imageChanged.next(this.imageSrc());\n this.loadImage.set(true);\n } catch (error) {\n this.loadImage.set(true);\n }\n }\n\n public async onChangeSize(changeWidth?: any, changeHeight?: any): Promise<void> {\n let qualityItem: number = this.quality.value / 100;\n this.maxHeight.set(this.maxHeight() ?? 2000);\n this.maxWidth.set(this.maxWidth() ?? 2000);\n\n await this.wait(500);\n\n try {\n let input: ImageConverterInput = {\n height: this.maxHeight(),\n width: this.maxWidth(),\n dataType: this.format.value,\n quality: qualityItem,\n maintainRatio: this.maintainAspectRatio.value,\n changeHeight: changeHeight,\n changeWidth: changeWidth,\n };\n this.imageSrc.set(await this.resizeDataURL(this.originImageSrc, input));\n this.$imageChanged.next(this.imageSrc());\n this.loadImage.set(true);\n } catch (error) {\n this.loadImage.set(true);\n }\n }\n\n public onChangeCrop(): void {\n const cropper: any = document.getElementById('image-cropper');\n cropper.style.width = this.cropWidth.value + 'px';\n cropper.style.height = this.cropHeight.value + 'px';\n }\n\n public onCropStateChange(): void {\n const cropper: HTMLElement = document.getElementById('image-cropper');\n const fullImage: HTMLElement = document.getElementById('image-full');\n const aspectRatio: number = fullImage.offsetWidth / fullImage.offsetHeight;\n\n if (this.showCrop.value) {\n cropper.style.opacity = '1.0';\n this.dragElement(cropper);\n this.observer = new ResizeObserver((entries: ResizeObserverEntry[]): void => {\n entries.forEach((entry: ResizeObserverEntry): void => {\n if (this.showEditPanel()) {\n const elementCropper: HTMLElement = document.getElementById('image-cropper');\n const elementFull: HTMLElement = document.getElementById('image-full');\n\n const rectHolder: DOMRect = elementFull.getBoundingClientRect();\n const rectElement: DOMRect = elementCropper.getBoundingClientRect();\n\n const maxWidth: number = rectHolder.x + rectHolder.width - rectElement.x - 4;\n const maxHeight: number = rectHolder.y + rectHolder.height - rectElement.y - 4;\n\n // Obtener el tamaño del área de recorte seleccionada por el usuario\n const cropWidth: number = elementCropper.offsetWidth;\n const cropHeight: number = elementCropper.offsetHeight;\n\n // Calcular el ancho y el alto del área de recorte manteniendo la relación de aspecto de la imagen original\n let newWidth: number = cropWidth;\n let newHeight: number = cropHeight;\n\n if (this.maintainAspectRatio.value) {\n if (cropWidth / cropHeight > aspectRatio) {\n newHeight = cropWidth / aspectRatio;\n } else {\n newWidth = cropHeight * aspectRatio;\n }\n }\n\n // Ajustar el ancho y el alto del área de recorte si supera los límites\n newWidth = Math.min(newWidth, maxWidth);\n newHeight = Math.min(newHeight, maxHeight);\n\n // Establecer el tamaño y la posición del área de recorte\n elementCropper.style.width = `${newWidth}px`;\n elementCropper.style.height = `${newHeight}px`;\n\n this.cropWidth.setValue(rectElement.width);\n this.cropHeight.setValue(rectElement.height);\n\n if (entry.target.id == 'image-full') {\n if (rectHolder.top > 0) {\n elementCropper.style.top = rectHolder.top + 4 + 'px';\n }\n elementCropper.style.left = rectHolder.left + 4 + 'px';\n }\n }\n });\n });\n this.observer.observe(document.getElementById('image-cropper'));\n this.observer.observe(document.getElementById('image-full'));\n } else {\n cropper.style.opacity = '0.0';\n if (this.observer instanceof ResizeObserver) {\n const elementCropper: HTMLElement = document.getElementById('image-cropper');\n const elementFull: HTMLElement = document.getElementById('image-full');\n this.observer.unobserve(elementCropper);\n this.observer.unobserve(elementFull);\n }\n }\n }\n\n public onCrop(type?: any): void {\n type = type ?? this.format.value;\n const cropper: HTMLElement = document.getElementById('image-cropper');\n const elementFull: HTMLElement = document.getElementById('image-full');\n const rectCropper: DOMRect = cropper.getBoundingClientRect();\n const dataHolderRect: DOMRect = elementFull.getBoundingClientRect();\n const canvas: HTMLCanvasElement = document.createElement('canvas');\n new Promise((resolve, reject): void => {\n let ctx: CanvasRenderingContext2D | null = canvas.getContext('2d');\n let image: HTMLImageElement = new Image();\n image.src = this.imageSrc();\n image.onload = (): void => {\n let ratio: number = image.height / dataHolderRect.height;\n let newWidth: number = rectCropper.width * ratio;\n let newHeight: number = rectCropper.height * ratio;\n canvas.width = newWidth;\n canvas.height = newHeight;\n ctx?.drawImage(\n image,\n Math.abs(rectCropper.x * ratio) - Math.abs(dataHolderRect.x * ratio),\n Math.abs(rectCropper.y * ratio) - Math.abs(dataHolderRect.y * ratio),\n newWidth,\n newHeight,\n 0,\n 0,\n newWidth,\n newHeight,\n );\n\n resolve(canvas.toDataURL(`image/${type}`, this.quality.value));\n };\n image.onerror = (e: string | Event): void => {\n reject(e);\n };\n })\n .then((dataUri: any): void => {\n this.imageSrc.set(dataUri);\n this.showCrop.setValue(false);\n this.onCropStateChange();\n this.maxWidth.set(canvas?.width);\n this.maxHeight.set(canvas?.height);\n this.lastOriginSrc = this.originImageSrc + '';\n this.originImageSrc = dataUri;\n this.$imageChanged.next(this.imageSrc());\n })\n .catch((e): void => {\n console.log(e);\n });\n }\n\n public onRestore(): void {\n if (this.arrayCopiedImages.length) {\n let lastState = this.arrayCopiedImages.pop();\n this.imageSrc.set(lastState.lastImage);\n this.maxWidth.set(lastState.width);\n this.maxHeight.set(lastState.height);\n this.originImageSrc = this.lastOriginSrc + '';\n this.noEdit.set(false);\n } else {\n this.imageSrc.set(this.lastOriginSrc);\n this.originImageSrc = this.lastOriginSrc + '';\n this.noEdit.set(false);\n }\n\n this.$imageChanged.next(this.imageSrc());\n }\n\n public onRemove(): void {\n this.imageSrc.set(null);\n this.originImageSrc = null;\n this.loadImage.set(false);\n this.arrayCopiedImages = [];\n this.lastOriginSrc = null;\n this.$imageOriginal.next(null);\n this.$imageChanged.next(null);\n this.format.setValue('jpeg');\n this.maxHeight.set(2000);\n this.maxWidth.set(2000);\n this.cropHeight.setValue(150);\n this.cropWidth.setValue(150);\n this.maintainAspectRatio.setValue(true);\n this.showEditPanel.set(false);\n this.noEdit.set(false);\n }\n\n ngOnDestroy(): void {\n this.unsubscribeAll$.next();\n this.unsubscribeAll$.complete();\n }\n}\n","<div *ngIf='!loadImage()' class='place-image'>\n <div class='image-holder'\n [ngStyle]='{ width: config()?.width,height: config()?.height,borderRadius: config()?.borderRadius}'>\n <button [matTooltip]=\"'UPLOAD_A_IMAGE' | i18n: config()?.language\" class='image-upload-btn' mat-icon-button\n (click)='onUpload($event)'>\n <mat-icon class='mat-18'>add_a_photo</mat-icon>\n </button>\n <input #imagePicker type='file' class='d-none' [id]=\"'filePicker-' + uuidFilePicker\"\n (change)='handleFileSelect($event)' [accept]='imagesAllowed'>\n </div>\n</div>\n\n<div *ngIf='loadImage()' class='place-image'>\n <div class='image-holder-loaded'\n [ngStyle]='{width: config()?.width,height: config()?.height,borderRadius: config()?.borderRadius}'>\n <img [src]='imageSrc()' alt='image-loaded' [ngStyle]='{ borderRadius: config()?.borderRadius }'>\n <input #imagePicker type='file' class='d-none' [id]=\"'filePicker-' + uuidFilePicker\"\n (change)='handleFileSelect($event)' [accept]='imagesAllowed'>\n </div>\n <p *ngIf='imageSrc()?.length' class='mat-caption image-caption' [class.warn]='(imageSrc()?.length | calculateSize) > 200'\n [class.fw-600]='(imageSrc()?.length | calculateSize) > 200'>\n {{\"SIZE\" | i18n: currentLanguage()}}: {{ (imageSrc()?.length | calculateSize) }}Kb &nbsp; {{ format.value }}\n </p>\n\n <div class='editing-bar-btn'>\n <button id='upload-img' *ngIf='!config()?.hideAddBtn' mat-icon-button (click)='onUpload($event)'\n [matTooltip]=\"'UPLOAD_A_IMAGE' | i18n: config()?.language\">\n <mat-icon class='mat-18'>add_a_photo</mat-icon>\n </button>\n <button id='edit-img' *ngIf='!config()?.hideEditBtn && !noEdit()' mat-icon-button (click)='showEditPanel.set(true)'\n [matTooltip]=\"'OPEN_EDITOR_PANEL' | i18n: config()?.language\">\n <mat-icon class='mat-18'>edit</mat-icon>\n </button>\n <a id='download-img' *ngIf='!config()?.hideDownloadBtn' [matTooltip]=\"'DOWNLOAD' | i18n: config()?.language\"\n [href]='imageSrc()' mat-icon-button [download]='imageName'>\n <mat-icon class='mat-18'>cloud_download</mat-icon>\n </a>\n <button id='delete-img' *ngIf='!config()?.hideDeleteBtn' mat-icon-button (click)='onRemove()'\n [matTooltip]=\"'REMOVE' | i18n: config()?.language\">\n <mat-icon class='mat-18'>delete</mat-icon>\n </button>\n </div>\n</div>\n\n<div *ngIf='showEditPanel()' id='popup' class='popup'>\n <div class='popup-clear'>\n <button mat-icon-button (click)='onCloseEditPanel()'>\n <mat-icon class='mat-18'>clear</mat-icon>\n </button>\n </div>\n\n <div class='image-container'>\n <div class='image-holder-full'>\n <img id='image-full' [src]='imageSrc()' alt=''>\n <div id='image-cropper' class='image-cropper'>\n <div id='image-cropper-header'>\n <mat-icon>drag_indicator</mat-icon>\n </div>\n </div>\n </div>\n\n <div class='control-panel'>\n <p class='item-panel fw-600'>{{ 'QUALITY' | i18n: config()?.language }}</p>\n <div class='quality-container'>\n <mat-slider ngDefaultControl [color]='color' class='w-100 mw-100' (change)='onChangeQuality()'\n [max]='100' [min]='0' [step]='1' [discrete]='true' [showTickMarks]='true'>\n <input matSliderThumb [formControl]='quality'>\n </mat-slider>\n </div>\n\n <div class='item-panel'>\n <span class='fw-600'>{{ 'MAX_DIMENSIONS' | i18n: config()?.language }}</span>\n <mat-checkbox class='float-right' [formControl]='maintainAspectRatio' [color]='color'>\n <span>{{ 'ASPECT_RATIO' | i18n: config()?.language }}</span>\n </mat-checkbox>\n </div>\n\n <div class='max-dimension-container'>\n <mat-form-field class='w-48' [appearance]='appearance' [color]='color'>\n <mat-label>{{ 'MAX_WIDTH_PX' | i18n: config()?.language }}</mat-label>\n <input (change)='onChangeSize(true, false)' matInput [placeholder]=\"'MAX_WIDTH_PX' | i18n: config()?.language\"\n [(ngModel)]='maxWidth' type='number' [min]='0' [max]='2000'>\n </mat-form-field>\n\n <mat-form-field class='w-48' [appearance]='appearance' [color]='color'>\n <mat-label>{{ 'MAX_HEIGHT_PX' | i18n: config()?.language }}</mat-label>\n <input (change)='onChangeSize(false, true)' matInput [placeholder]=\"'MAX_HEIGHT_PX' | i18n: config()?.language\"\n [(ngModel)]='maxHeight' type='number' [min]='0' [max]='2000'>\n </mat-form-field>\n </div>\n\n <p class='item-panel fw-600'>{{ 'FORMAT' | i18n: config()?.language }}</p>\n <div class='formats-selection'>\n <mat-form-field class='w-100 mw-100' [appearance]='appearance' [color]='color'>\n <mat-select [formControl]='format' (selectionChange)='onChangeFormat()'>\n <mat-option *ngFor='let format of allFormats' [value]='format'>\n {{ format }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class='refresh-container'>\n <mat-checkbox (change)='onCropStateChange()' [formControl]='showCrop' [color]='color'>\n <p class='item-panel fw-600'>{{ 'CROP' | i18n: config()?.language }}</p>\n </mat-checkbox>\n <div class='d-flex '>\n <button class='float-right' mat-icon-button [color]='color' (click)='onRestore()'>\n <mat-icon>refresh</mat-icon>\n </button>\n <p *ngIf='showCrop.value'>\n <button mat-icon-button [color]='color' (click)='onCrop()'>\n <mat-icon>crop</mat-icon>\n </button>\n </p>\n </div>\n </div>\n\n <ng-container *ngIf='showCrop.value'>\n <div class='dimension-container'>\n <mat-form-field class='w-48 mw-48' [appearance]='appearance' [color]='color'>\n <mat-label>{{ 'WIDTH_PX' | i18n: config()?.language }}</mat-label>\n <input (change)='onChangeCrop()' matInput [placeholder]=\"'WIDTH_PX' | i18n: config()?.language\"\n [formControl]='cropWidth' type='number' [min]='0' [max]='2000'>\n </mat-form-field>\n <mat-form-field class='w-48 mw-48' [appearance]='appearance' [color]='color'>\n <mat-label>{{ 'HEIGHT_PX' | i18n: config()?.language }}</mat-label>\n <input (change)='onChangeCrop()' matInput [placeholder]=\"'HEIGHT_PX' | i18n: config()?.language\"\n [formControl]='cropHeight' type='number' [min]='0' [max]='2000'>\n </mat-form-field>\n </div>\n </ng-container>\n\n <div class='save-container'>\n <button mat-flat-button (click)='onCloseEditPanel()' [color]='color' class='save-button'>\n {{ 'SAVE' | i18n: config()?.language}}\n </button>\n\n <p *ngIf='imageSrc()?.length' class='mat-caption image-caption'\n [class.warn]='(imageSrc()?.length | calculateSize) > 200'\n [class.fw-600]='(imageSrc()?.length | calculateSize) > 200'>\n {{\"SIZE\" | i18n: currentLanguage()}}: {{ (imageSrc()?.length | calculateSize) }}Kb &nbsp; {{ format.value }}\n </p>\n </div>\n </div>\n </div>\n</div>\n","/*\n * Public API Surface of guachos-image-picker\n */\n\nexport * from './lib/guachos-image-picker.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i12.I18nPipe","i13.CalculateSizePipe"],"mappings":"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"}
@@ -1,4 +1,6 @@
1
- import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy } from '@angular/core';
1
+ import { ElementRef, EventEmitter, OnDestroy, WritableSignal } from '@angular/core';
2
+ import { ThemePalette } from '@angular/material/core';
3
+ import { UntypedFormControl } from '@angular/forms';
2
4
  import { MatFormFieldAppearance } from '@angular/material/form-field';
3
5
  import * as i0 from "@angular/core";
4
6
  export interface ImagePickerConf {
@@ -23,36 +25,33 @@ export interface ImageConverterInput {
23
25
  }
24
26
  export type ImageAllowedTypes = 'image/*' | '.webp' | '.png' | '.webp, .jpg, .jpeg' | '.webp, .png' | '.jpg, .jpeg' | '.png, .jpg, .jpeg' | '.webp, .png, .jpg, .jpeg';
25
27
  export declare class GuajiritosImagePicker implements OnDestroy {
26
- private _cdRef;
27
- constructor(_cdRef: ChangeDetectorRef);
28
+ constructor();
28
29
  private unsubscribeAll$;
29
30
  private observer;
30
31
  private originImageSrc;
31
32
  private fileType;
32
33
  private urlImage;
33
34
  private lastOriginSrc;
34
- private labelEn;
35
- private labelEs;
36
35
  private arrayCopiedImages;
37
- config: ImagePickerConf;
38
- showCrop: boolean;
39
- imageSrc: any;
40
- loadImage: boolean;
41
- noEdit: boolean;
42
- uuidFilePicker: string;
43
- showEditPanel: boolean;
44
- quality: number;
45
- format: string;
46
- allFormats: string[];
47
- maxHeight: number;
48
- maxWidth: number;
49
- cropHeight: number;
50
- cropWidth: number;
51
- maintainAspectRatio: boolean;
52
- imageName: string;
53
- labels: any;
36
+ readonly uuidFilePicker: string;
37
+ readonly allFormats: string[];
38
+ config: WritableSignal<ImagePickerConf>;
39
+ imageSrc: WritableSignal<string>;
40
+ showCrop: UntypedFormControl;
41
+ loadImage: WritableSignal<boolean>;
42
+ noEdit: WritableSignal<boolean>;
43
+ showEditPanel: WritableSignal<boolean>;
44
+ maintainAspectRatio: UntypedFormControl;
45
+ quality: UntypedFormControl;
46
+ format: UntypedFormControl;
47
+ maxHeight: WritableSignal<number>;
48
+ maxWidth: WritableSignal<number>;
49
+ cropHeight: UntypedFormControl;
50
+ cropWidth: UntypedFormControl;
51
+ imageName: WritableSignal<string>;
52
+ currentLanguage: WritableSignal<string>;
54
53
  appearance: MatFormFieldAppearance;
55
- color: 'primary' | 'warn' | 'accent';
54
+ color: ThemePalette;
56
55
  imagesAllowed: ImageAllowedTypes;
57
56
  imagePicker: ElementRef | undefined;
58
57
  $imageChanged: EventEmitter<any>;
@@ -78,5 +77,5 @@ export declare class GuajiritosImagePicker implements OnDestroy {
78
77
  onRemove(): void;
79
78
  ngOnDestroy(): void;
80
79
  static ɵfac: i0.ɵɵFactoryDeclaration<GuajiritosImagePicker, never>;
81
- static ɵcmp: i0.ɵɵComponentDeclaration<GuajiritosImagePicker, "guajiritos-image-picker", never, { "appearance": "appearance"; "color": "color"; "imagesAllowed": "imagesAllowed"; "_imageSrc": "_imageSrc"; "_config": "_config"; }, { "$imageChanged": "$imageChanged"; "$imageOriginal": "$imageOriginal"; }, never, never, true, never>;
80
+ static ɵcmp: i0.ɵɵComponentDeclaration<GuajiritosImagePicker, "guajiritos-image-picker", never, { "appearance": { "alias": "appearance"; "required": false; }; "color": { "alias": "color"; "required": false; }; "imagesAllowed": { "alias": "imagesAllowed"; "required": false; }; "_imageSrc": { "alias": "_imageSrc"; "required": false; }; "_config": { "alias": "_config"; "required": false; }; }, { "$imageChanged": "$imageChanged"; "$imageOriginal": "$imageOriginal"; }, never, never, true, never>;
82
81
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guajiritos/image-picker",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "author": {
5
5
  "name": "Guajiritos SRL",
6
6
  "email": "cto@guajiritos.com",
@@ -13,10 +13,10 @@
13
13
  },
14
14
  "homepage": "https://www.npmjs.com/package/guachos-image-picker",
15
15
  "peerDependencies": {
16
- "@angular/cdk": "^15.0.0 || >=16.0.0",
17
- "@angular/common": "^15.0.0 || >=16.0.0",
18
- "@angular/core": "^15.0.0 || >=16.0.0",
19
- "@angular/material": "^15.0.0 || >=16.0.0"
16
+ "@angular/cdk": "^16.0.0 || >=16.0.0",
17
+ "@angular/common": "^16.0.0 || >=16.0.0",
18
+ "@angular/core": "^16.0.0 || >=16.0.0",
19
+ "@angular/material": "^16.0.0 || >=16.0.0"
20
20
  },
21
21
  "dependencies": {
22
22
  "tslib": "^2.0.0 || >=2.0.0"
@@ -34,24 +34,21 @@
34
34
  "guachos images",
35
35
  "compress image"
36
36
  ],
37
- "module": "fesm2015/guajiritos-image-picker.mjs",
38
- "es2020": "fesm2020/guajiritos-image-picker.mjs",
39
- "esm2020": "esm2020/guajiritos-image-picker.mjs",
40
- "fesm2020": "fesm2020/guajiritos-image-picker.mjs",
41
- "fesm2015": "fesm2015/guajiritos-image-picker.mjs",
42
- "typings": "index.d.ts",
43
37
  "exports": {
38
+ "./theme": {
39
+ "sass": "./theme.scss"
40
+ },
44
41
  "./package.json": {
45
42
  "default": "./package.json"
46
43
  },
47
44
  ".": {
48
45
  "types": "./index.d.ts",
49
- "esm2020": "./esm2020/guajiritos-image-picker.mjs",
50
- "es2020": "./fesm2020/guajiritos-image-picker.mjs",
51
- "es2015": "./fesm2015/guajiritos-image-picker.mjs",
52
- "node": "./fesm2015/guajiritos-image-picker.mjs",
53
- "default": "./fesm2020/guajiritos-image-picker.mjs"
46
+ "esm2022": "./esm2022/guajiritos-image-picker.mjs",
47
+ "esm": "./esm2022/guajiritos-image-picker.mjs",
48
+ "default": "./fesm2022/guajiritos-image-picker.mjs"
54
49
  }
55
50
  },
51
+ "module": "fesm2022/guajiritos-image-picker.mjs",
52
+ "typings": "index.d.ts",
56
53
  "sideEffects": false
57
54
  }
package/theme.scss ADDED
@@ -0,0 +1,66 @@
1
+ @use '@angular/material' as mat;
2
+ @use 'sass:map';
3
+
4
+ @mixin theme-guajiritos-image-picker($theme) {
5
+ $config: mat.get-color-config($theme);
6
+ $primary: map.get($config, primary);
7
+ $accent: map.get($config, accent);
8
+ $warn: map.get($config, warn);
9
+ $foreground: map.get($config, foreground);
10
+
11
+ guajiritos-image-picker {
12
+ mat-mdc-checkbox:not(.mat-mdc-checkbox-checked) {
13
+ .mat-mdc-checkbox-layout {
14
+ .mat-mdc-checkbox-inner-container {
15
+ border: 1px solid mat.get-color-from-palette($foreground, 'icon');
16
+ }
17
+ }
18
+ }
19
+
20
+ mat-mdc-checkbox.mat-checkbox-checked {
21
+ .mat-mdc-checkbox-layout {
22
+ .mat-mdc-checkbox-inner-container {
23
+ border: none;
24
+ }
25
+ }
26
+ }
27
+
28
+ .image-caption {
29
+ &.warn {
30
+ color: mat.get-color-from-palette($warn, 500);
31
+ }
32
+ }
33
+
34
+ .place-image {
35
+ .image-holder {
36
+ border: 2px solid mat.get-color-from-palette($foreground, 'icon');
37
+ }
38
+
39
+ .image-holder-loaded {
40
+ background-color: mat.get-color-from-palette($foreground, 'divider');
41
+ }
42
+
43
+ .image-holder,
44
+ .image-holder-loaded {
45
+ .image-upload-btn {
46
+ color: mat.get-color-from-palette($foreground, 'icon');
47
+
48
+ .mat-icon {
49
+ color: mat.get-color-from-palette($foreground, 'icon');
50
+ }
51
+ }
52
+ }
53
+
54
+ .editing-bar-btn {
55
+ button,
56
+ a {
57
+ color: mat.get-color-from-palette($foreground, 'icon');
58
+ }
59
+ }
60
+ }
61
+
62
+ .popup {
63
+ background-color: mat.get-color-from-palette($foreground, 'text');
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,9 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class I18nPipe implements PipeTransform {
4
+ private en;
5
+ private es;
6
+ transform(key: string, language: string): string;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<I18nPipe, never>;
8
+ static ɵpipe: i0.ɵɵPipeDeclaration<I18nPipe, "i18n", false>;
9
+ }
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./i18n/i18n.pipe";
3
+ import * as i2 from "./calculate-size/calculate-size.pipe";
4
+ export declare class PipesModule {
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<PipesModule, never>;
6
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PipesModule, [typeof i1.I18nPipe, typeof i2.CalculateSizePipe], never, [typeof i1.I18nPipe, typeof i2.CalculateSizePipe]>;
7
+ static ɵinj: i0.ɵɵInjectorDeclaration<PipesModule>;
8
+ }