@asoftwareworld/form-builder-pro
Version:
ASW Form Builder Pro helps you with rapid development and designed web forms which includes several controls. The key feature of Form Builder is to make your content attractive and effective. We can customize our control at run time and preview the same b
1 lines • 33.2 kB
Source Map (JSON)
{"version":3,"file":"asoftwareworld-form-builder-pro-image-drawing.mjs","sources":["../../src/components/image-drawing/image-drawing.ts","../../src/components/image-drawing/image-drawing.html","../../src/components/image-drawing/image-drawing.module.ts","../../src/components/image-drawing/public_api.ts","../../src/components/image-drawing/asoftwareworld-form-builder-pro-image-drawing.ts"],"sourcesContent":["/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\nimport { Component, EventEmitter, Inject, Input, OnChanges, OnInit, Output, SimpleChanges, TemplateRef } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Constants, Icons } from '@asoftwareworld/form-builder-pro/common';\nimport { fabric } from 'fabric';\n\n@Component({\n selector: 'asw-image-drawing',\n styleUrls: ['./image-drawing.scss'],\n templateUrl: './image-drawing.html'\n})\nexport class AswImageDrawing implements OnInit, OnChanges {\n @Input() public src?: string;\n @Input() public width = 680;\n @Input() public height = 250;\n\n @Input() public forceSizeCanvas = true;\n @Input() public forceSizeExport = true;\n @Input() public enableRemoveImage = true;\n @Input() public enableLoadAnotherImage = true;\n @Input() public enableTooltip = true;\n @Input() public showCancelButton = true;\n\n /* @deprecated Use i18n.saveBtn */\n @Input() public saveBtnText = 'Save';\n /* @deprecated Use i18n.cancelBtn */\n @Input() public cancelBtnText = 'Cancel';\n /* @deprecated Use i18n.loading */\n @Input() public loadingText = 'Loading…';\n\n @Input() public loadingTemplate?: TemplateRef<any>;\n @Input() public errorTemplate?: TemplateRef<any>;\n\n @Input() public outputMimeType = 'image/jpeg';\n @Input() public outputQuality = 0.8;\n\n @Output() public save: EventEmitter<Blob> = new EventEmitter<Blob>();\n @Output() public cancel: EventEmitter<void> = new EventEmitter<void>();\n\n constant = Constants;\n icons = Icons;\n public currentTool = 'brush';\n public currentSize = 3;\n public currentColor = '#000105';\n\n public canUndo = false;\n public canRedo = false;\n\n public isLoading = false;\n public hasError = false;\n public errorMessage = '';\n\n private canvas!: fabric.Canvas;\n private stack: fabric.Object[] = [];\n\n public colorsName: string[] = [];\n\n private imageUsed?: fabric.Image;\n\n constructor(\n public dialogRef: MatDialogRef<AswImageDrawing>,\n @Inject(MAT_DIALOG_DATA) public control: any\n ) {}\n\n public ngOnInit(): void {\n if (this.control.controlType === 'signature') {\n this.enableLoadAnotherImage = false;\n }\n this.src = this.control.imageUrl;\n this.colorsName = Object.keys(this.constant.colors);\n this.canvas = new fabric.Canvas('aswCanvas', {\n hoverCursor: 'pointer',\n isDrawingMode: true\n });\n this.canvas.backgroundColor = 'white';\n\n if (this.src) {\n this.importPhotoFromSrc(this.src);\n } else {\n if (!this.width || !this.height) {\n throw new Error('No width or hight given !');\n }\n\n this.canvas.setWidth(this.width);\n this.canvas.setHeight(this.height);\n }\n\n this.canvas.on('path:created', () => {\n this.stack = [];\n this.setUndoRedo();\n });\n\n this.selectTool(this.currentTool);\n this.selectColor(this.currentColor);\n this.selectDrawingSize(this.currentSize);\n }\n\n // Tools\n public selectTool(tool: string): void {\n this.currentTool = tool;\n }\n\n public selectDrawingSize(size: number): void {\n this.currentSize = size;\n if (this.canvas) {\n this.canvas.freeDrawingBrush.width = size;\n }\n }\n\n public selectColor(color: string): void {\n this.currentColor = color;\n if (this.canvas) {\n this.canvas.freeDrawingBrush.color = color;\n }\n }\n\n /**\n * Change color from input\n */\n public changeColorManual(color: string): void {\n const isValid = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(color);\n\n if (isValid) {\n this.currentColor = color;\n this.selectColor(this.currentColor);\n }\n }\n\n // Actions\n\n public undo(): void {\n if (this.canUndo) {\n const lastId = this.canvas.getObjects().length - 1;\n const lastObj = this.canvas.getObjects()[lastId];\n this.stack.push(lastObj);\n this.canvas.remove(lastObj);\n this.setUndoRedo();\n }\n }\n\n public redo(): void {\n if (this.canRedo) {\n const firstInStack = this.stack.splice(-1, 1)[0];\n if (firstInStack) {\n this.canvas.insertAt(firstInStack, this.canvas.getObjects().length - 1, false);\n }\n this.setUndoRedo();\n }\n }\n\n public clearCanvas(): void {\n if (this.canvas) {\n this.canvas.remove(...this.canvas.getObjects());\n this.setUndoRedo();\n }\n }\n\n public saveImage(): void {\n this.canvas.getElement().toBlob(\n (data: any) => {\n const reader = new FileReader();\n reader.readAsDataURL(data);\n reader.onloadend = () => {\n const base64data = reader.result;\n this.control.imageUrl = base64data;\n };\n },\n this.outputMimeType,\n this.outputQuality\n );\n }\n\n private setUndoRedo(): void {\n this.canUndo = this.canvas.getObjects().length > 0;\n this.canRedo = this.stack.length > 0;\n // this.canvas.renderAll();\n }\n\n public importPhotoFromFile(event: Event | any): void {\n if (event.target.files && event.target.files.length > 0) {\n const file = event.target.files[0];\n if (file.type.match('image.*')) {\n this.importPhotoFromBlob(file);\n } else {\n throw new Error('Not an image !');\n }\n }\n }\n\n public removeImage(): void {\n if (this.imageUsed) {\n this.imageUsed.dispose();\n this.imageUsed = null as any;\n }\n this.canvas.backgroundImage = null as any;\n\n if (this.width && this.height) {\n this.canvas.setWidth(this.width);\n this.canvas.setHeight(this.height);\n }\n\n this.canvas.renderAll();\n }\n\n public get hasImage(): boolean {\n return !!this.canvas.backgroundImage;\n }\n\n private importPhotoFromSrc(src: string): void {\n this.isLoading = true;\n let isFirstTry = true;\n const imgEl = new Image();\n imgEl.setAttribute('crossOrigin', 'anonymous');\n imgEl.src = src;\n imgEl.onerror = () => {\n // Retry with cors proxy\n if (isFirstTry) {\n imgEl.src = 'https://cors-anywhere.herokuapp.com/' + this.src;\n isFirstTry = false;\n } else {\n this.isLoading = false;\n this.hasError = true;\n // this.errorMessage = this.getTextTranslated('loadError').replace('%@', this.src as string);\n }\n };\n imgEl.onload = () => {\n this.isLoading = false;\n this.imageUsed = new fabric.Image(imgEl);\n\n this.imageUsed.cloneAsImage((image: any) => {\n let width = imgEl.width;\n let height = imgEl.height;\n const ratio = 640 / width < 480 / height ? 640 / width : 480 / width;\n width = width * ratio;\n height = height * ratio;\n\n image.scaleToWidth(width, false);\n image.scaleToHeight(height, false);\n\n this.canvas.setBackgroundImage(\n image,\n (img: HTMLImageElement) => {\n if (img) {\n if (this.forceSizeCanvas) {\n this.canvas.setWidth(width);\n this.canvas.setHeight(height);\n } else {\n this.canvas.setWidth(image.getScaledWidth());\n this.canvas.setHeight(image.getScaledHeight());\n }\n }\n },\n {\n crossOrigin: 'anonymous',\n originX: 'left',\n originY: 'top'\n }\n );\n });\n };\n }\n\n private importPhotoFromBlob(file: Blob | File): void {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = (evtReader: any) => {\n if (evtReader.target.readyState === FileReader.DONE) {\n this.importPhotoFromSrc(evtReader.target.result);\n }\n };\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.src && !changes.src.firstChange && changes.src.currentValue) {\n if (typeof changes.src.currentValue === 'string') {\n this.importPhotoFromSrc(changes.src.currentValue);\n } else if (changes.src.currentValue instanceof Blob) {\n this.importPhotoFromBlob(changes.src.currentValue);\n }\n }\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n onSubmit(aswEditPropertyForm: NgForm): void {\n if (aswEditPropertyForm.invalid) {\n return;\n }\n this.saveImage();\n this.dialogRef.close(this.control);\n }\n}\n","<div class=\"asw-dialog-header\">\r\n <div class=\"asw-edit-row-dialog\">\r\n <div class=\"asw-dialog-header clearfix\">\r\n <div class=\"asw-dialog-about\">\r\n <h1 mat-dialog-title class=\"asw-m-0\">{{'FormControl.Edit' | aswTranslate}} {{control.label | aswTranslate}}</h1>\r\n </div>\r\n </div>\r\n </div>\r\n <button mat-icon-button (click)=\"onNoClick()\" aria-label=\"Close dialog\" class=\"asw-mt-2 asw-me-2\">\r\n <div [innerHTML]=\"icons.close | aswSafeHtml\"></div>\r\n </button>\r\n</div>\r\n<form #aswEditPropertyForm=\"ngForm\" (ngSubmit)=\"onSubmit(aswEditPropertyForm)\" novalidate>\r\n <mat-dialog-content class=\"mat-typography\">\r\n <div class=\"asw-row asw-p-2\">\r\n <div class=\"asw-col-md-9\">\r\n <mat-card>\r\n <mat-card-content>\r\n <div class=\"loading\" *ngIf=\"isLoading\">\r\n <ng-container *ngTemplateOutlet=\"loadingTemplate ? loadingTemplate : defaultLoading\"></ng-container>\r\n </div>\r\n <div class=\"error\" *ngIf=\"hasError\">\r\n <ng-container *ngTemplateOutlet=\"errorTemplate ? errorTemplate : defaultError\"></ng-container>\r\n </div> \r\n <ng-template #defaultLoading><p>{{ loadingText }}</p></ng-template>\r\n <ng-template #defaultError> <p>{{ errorMessage }}</p> </ng-template>\r\n <canvas #aswCanvas id=\"aswCanvas\" class=\"asw-drawing-canvas\"></canvas>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n <div class=\"asw-col-md-3\" *ngIf=\"!isLoading\">\r\n <div class=\"asw-sticky-top\">\r\n <mat-card>\r\n <mat-card-content>\r\n <h6 class=\"asw-fs-6 asw-my-2\">{{'FormControl.Options' | aswTranslate}}:</h6>\r\n <div class=\"asw-row\">\r\n <div class=\"asw-col-md-12 asw-d-grid\">\r\n <button class=\"asw-button asw-button-primary\" type=\"button\"\r\n *ngIf=\"enableLoadAnotherImage && !hasImage\" \r\n (click)=\"fileInput.click();\"\r\n matTooltip=\"{{'FormControl.LoadImage' | aswTranslate}}\">\r\n <input style=\"display: none\" \r\n type=\"file\" \r\n #fileInput \r\n (change)=\"importPhotoFromFile($event)\"\r\n accept=\"image/*\"/>\r\n {{'FormControl.LoadImage' | aswTranslate}}\r\n </button>\r\n <button class=\"asw-button asw-button-primary\" type=\"button\"\r\n *ngIf=\"enableRemoveImage && hasImage\" \r\n (click)=\"removeImage()\"\r\n matTooltip=\"{{'FormControl.RemoveImage' | aswTranslate}}\">\r\n {{'FormControl.RemoveImage' | aswTranslate}}\r\n </button>\r\n </div>\r\n <h6 class=\"asw-fs-6 asw-my-2\">{{'FormControl.BrushSize' | aswTranslate}}:</h6>\r\n <ul class=\"asw-options\">\r\n <li class=\"option tool\" style=\"display: none\"\r\n [class.selected]=\"currentTool == 'brush'\" \r\n (click)=\"selectTool('brush')\"\r\n id=\"brush\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14.445\" height=\"14.462\" viewBox=\"0 0 14.445 14.462\">\r\n <path id=\"Path_153\" data-name=\"Path 153\" d=\"M8.319,8.378l6.014-6.535a.4.4,0,0,0-.024-.577L13.155.111a.4.4,0,0,0-.553,0L6.066,6.125a.4.4,0,0,0,0,.577L7.742,8.378a.4.4,0,0,0,.577,0Zm-3.44-.89,2.093,2.1a.8.8,0,0,1,.249.457v.393a3.208,3.208,0,0,1-.938,2.277,6.223,6.223,0,0,1-4.739,1.732,2.326,2.326,0,0,1-1.427-.481.4.4,0,0,1-.048-.505,4.772,4.772,0,0,0,.714-2.609A3.626,3.626,0,0,1,1.744,8.17a3.208,3.208,0,0,1,2.269-.938,3.134,3.134,0,0,1,.393,0A.874.874,0,0,1,4.879,7.488Z\" fill=\"#5a6168\" fill-rule=\"evenodd\"/>\r\n </svg>\r\n <span>{{'FormControl.Brush' | aswTranslate}}</span>\r\n </li>\r\n <li class=\"option\">\r\n <input type=\"range\" \r\n [(ngModel)]=\"currentSize\"\r\n #input=\"ngModel\"\r\n name=\"sliders\"\r\n id=\"size-slider\"\r\n (change)=\"selectDrawingSize(currentSize)\"\r\n max=\"30\">\r\n </li>\r\n </ul>\r\n </div>\r\n <br>\r\n <div class=\"asw-pb-2\">\r\n <mat-button-toggle-group class=\"asw-width-100\">\r\n <mat-button-toggle matTooltip=\"{{'editor.Undo' | aswTranslate}}\"\r\n [disabled]=\"!canUndo\"\r\n class=\"asw-width-100\"\r\n (change)=\"undo()\">\r\n <span [ngClass]=\"{'asw-icon-disabled': !canUndo }\" [innerHTML]=\"icons.undo | aswSafeHtml\"></span>\r\n {{'editor.Undo' | aswTranslate}}\r\n </mat-button-toggle>\r\n <mat-button-toggle matTooltip=\"{{'editor.Redo' | aswTranslate}}\"\r\n [disabled]=\"!canRedo\"\r\n class=\"asw-width-100\"\r\n (change)=\"redo()\">\r\n <span [ngClass]=\"{'asw-icon-disabled': !canRedo }\" [innerHTML]=\"icons.redo | aswSafeHtml\"></span>\r\n {{'editor.Redo' | aswTranslate}}\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <h6 class=\"asw-fs-6 asw-my-2\">{{'FormControl.Colors' | aswTranslate}}:</h6>\r\n <div class=\"asw-color-picker\">\r\n <div class=\"opened\">\r\n <div class=\"colors\">\r\n <div [ngClass]=\"colorName\" \r\n [class.selected]=\"currentColor == constant.colors[colorName]\"\r\n (click)=\"selectColor(constant.colors[colorName])\" \r\n *ngFor=\"let colorName of colorsName\" \r\n class=\"circle\"\r\n [style.background]=\"constant.colors[colorName]\">\r\n </div>\r\n </div>\r\n <div class=\"asw-hex-code\">\r\n <p>Hex Code</p>\r\n <div class=\"asw-input\">\r\n <input type=\"text\" maxlength=\"7\" [value]=\"currentColor\"\r\n (keyup)=\"changeColorManual(paintInput.value)\"\r\n #paintInput/>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"asw-row asw-pt-2\">\r\n <div class=\"asw-col-md-12 asw-d-grid\">\r\n <button class=\"asw-button asw-button-outline-secondary\" \r\n type=\"button\"\r\n matTooltip=\"{{'FormControl.ClearCanvas' | aswTranslate}}\"\r\n (click)=\"clearCanvas()\">\r\n {{'FormControl.ClearCanvas' | aswTranslate}}\r\n </button>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions align=\"end\">\r\n <button type=\"button\"\r\n class=\"asw-button asw-button-danger asw-me-2 asw-mb-1\"\r\n (click)=\"onNoClick()\">\r\n No\r\n </button>\r\n <button type=\"submit\"\r\n class=\"asw-button asw-button-primary asw-mb-1\"\r\n cdkFocusInitial>\r\n Yes\r\n </button>\r\n </mat-dialog-actions>\r\n</form>\r\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AswPipeModule, MaterialModule } from '@asoftwareworld/form-builder-pro/common';\nimport { AswTranslateModule } from '@asoftwareworld/form-builder-pro/core';\nimport { AswImageDrawing } from './image-drawing';\n\n@NgModule({\n declarations: [AswImageDrawing],\n exports: [AswImageDrawing],\n imports: [CommonModule, FormsModule, MaterialModule, AswTranslateModule, AswPipeModule]\n})\nexport class AswImageDrawingModule {}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nexport * from './image-drawing.module';\nexport * from './image-drawing';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}