UNPKG

72.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"lib-sketch-tool.js.map","sources":["ng://lib-sketch-tool/app/lib-sketch-tool/constants/shape-data.ts","ng://lib-sketch-tool/app/lib-sketch-tool/services/canvas-manager.service.ts","ng://lib-sketch-tool/app/lib-sketch-tool/mobile-component/mobile-sketch-tool.component.ts","ng://lib-sketch-tool/app/lib-sketch-tool/sketch-tool.module.ts"],"sourcesContent":["export const SHAPE_DATA = {\n width: 200,\n height: 200,\n left: 50,\n top: 50,\n radius: 100,\n stroke: 10,\n freeDrawingBrushWidth: 10,\n cornerSize: 20\n};\n","import { Injectable } from '@angular/core';\nimport { fabric } from 'fabric';\n\nimport { AvailableGeometricShape } from './../constants/available-geometric-shapes';\nimport { SHAPE_DATA } from './../constants/shape-data';\n\ninterface ScaleData {\n scaleFactor: number;\n left: number;\n top: number;\n}\n\ninterface Position {\n x: number;\n y: number;\n}\n\n@Injectable()\nexport class CanvasManagerService {\n public canvas;\n\n private cropRectangle: fabric.Rect;\n private mousePosition: Position;\n private cropStartingPosition: Position;\n private lastPanPosition: fabric.Point;\n\n constructor() {\n this.emptyCanvas();\n this.mousePosition = {x: 0, y: 0};\n this.cropStartingPosition = {x: 0, y: 0};\n this.canvas.freeDrawingBrush.width = SHAPE_DATA.freeDrawingBrushWidth;\n }\n\n get backgroundImage() {\n return this.canvas;\n }\n\n get canvasObjects() {\n return this.canvas.getObjects();\n }\n\n get canvasBackgroundImage() {\n return this.canvas.backgroundImage;\n }\n\n get activeObject() {\n return this.canvas.getActiveObject();\n }\n\n get activeGroup() {\n return this.canvas.getActiveObjects();\n }\n\n public emptyCanvas(): void {\n if (this.canvas) {\n this.canvas.dispose();\n }\n this.canvas = new fabric.Canvas('canvas');\n this.canvas.clear();\n this.canvas.remove(this.canvas.getObjects());\n }\n\n public loadNewImage(backgroundImageURL?: string): void {\n this.emptyCanvas();\n if (backgroundImageURL) {\n this.setBackgroundFromURL(backgroundImageURL);\n }\n }\n\n public renderCanvas(): void {\n this.markSelectedObjectsDirty();\n this.canvas.renderAll();\n }\n\n public addGeometricShape(strokeColor: string, fillColor: string, shape: AvailableGeometricShape): void {\n switch (shape) {\n case AvailableGeometricShape.Rectangle:\n this.addRectangle(strokeColor, fillColor);\n break;\n case AvailableGeometricShape.Circle:\n this.addCircle(strokeColor, fillColor);\n break;\n case AvailableGeometricShape.Triangle:\n this.addTriangle(strokeColor, fillColor);\n break;\n case AvailableGeometricShape.Line:\n this.addHorizontalLine(strokeColor, fillColor);\n break;\n case AvailableGeometricShape.Cross:\n this.addCross(strokeColor, fillColor);\n break;\n }\n }\n\n private addRectangle(strokeColor: string, fillColor: string): void {\n this.canvas.add(\n new fabric.Rect({\n width: SHAPE_DATA.width,\n height: SHAPE_DATA.height,\n left: SHAPE_DATA.left,\n top: SHAPE_DATA.top,\n fill: fillColor,\n stroke: strokeColor,\n strokeWidth: SHAPE_DATA.stroke,\n cornerSize: SHAPE_DATA.cornerSize\n })\n );\n }\n\n private addCircle(strokeColor: string, fillColor: string): void {\n this.canvas.add(\n new fabric.Circle({\n left: SHAPE_DATA.left,\n top: SHAPE_DATA.top,\n radius: SHAPE_DATA.radius,\n stroke: strokeColor,\n strokeWidth: SHAPE_DATA.stroke,\n fill: fillColor,\n cornerSize: SHAPE_DATA.cornerSize\n })\n );\n }\n\n private addTriangle(strokeColor: string, fillColor: string): void {\n this.canvas.add(\n new fabric.Triangle({\n width: SHAPE_DATA.width,\n height: SHAPE_DATA.height,\n left: SHAPE_DATA.left,\n top: SHAPE_DATA.top,\n fill: fillColor,\n stroke: strokeColor,\n strokeWidth: SHAPE_DATA.stroke,\n cornerSize: SHAPE_DATA.cornerSize\n })\n );\n }\n\n private addHorizontalLine(strokeColor: string, fillColor: string): void {\n this.canvas.add(this.createHorizontalLine(strokeColor));\n }\n\n private createHorizontalLine(strokeColor: string): fabric.Line {\n const line = new fabric.Line([100, 150, 200, 150], {\n left: 50,\n top: 100,\n stroke: strokeColor,\n strokeWidth: 5,\n cornerSize: SHAPE_DATA.cornerSize\n });\n\n line.setControlsVisibility({\n bl: false,\n br: false,\n tl: false,\n tr: false,\n mt: false,\n mb: false\n });\n\n return line;\n }\n\n private createVerticalLine(strokeColor: string): fabric.Line {\n const line = new fabric.Line([150, 100, 150, 200], {\n left: 100,\n top: 50,\n stroke: strokeColor,\n strokeWidth: 5,\n cornerSize: SHAPE_DATA.cornerSize\n });\n\n line.setControlsVisibility({\n bl: false,\n br: false,\n tl: false,\n tr: false,\n ml: false,\n mr: false\n });\n\n return line;\n }\n\n private addCross(strokeColor: string, fillColor: string): void {\n const horizontalLine = this.createHorizontalLine(strokeColor);\n const verticalLine = this.createVerticalLine(strokeColor);\n this.canvas.add(horizontalLine);\n this.canvas.add(verticalLine);\n }\n\n public toggleFreeDrawing(): void {\n this.canvas.isDrawingMode = !this.canvas.isDrawingMode;\n }\n\n public setFreeDrawingBrushColor(color: string): void {\n this.canvas.freeDrawingBrush.color = color;\n }\n\n set freeDrawingBrushWidthFromZoom(zoom) {\n this.canvas.freeDrawingBrush.width = SHAPE_DATA.freeDrawingBrushWidth * (1 / zoom);\n }\n\n public addText(color: string, inputText: string): void {\n const text = new fabric.IText('text', {\n fontFamily: 'arial black',\n fontStyle: 'bold',\n left: SHAPE_DATA.left,\n top: SHAPE_DATA.top,\n cornerSize: SHAPE_DATA.cornerSize\n });\n\n text.setColor(color);\n\n this.canvas.add(text);\n }\n\n public addImage(imageURL: string): Promise<void> {\n return new Promise(\n (resolve, reject): void => {\n const canvas = this.canvas;\n\n const image = new Image();\n image.onload = function(img) {\n const fabricImage = new fabric.Image(image, {\n angle: 0,\n width: image.width,\n height: image.height,\n left: SHAPE_DATA.left,\n top: SHAPE_DATA.top,\n scaleX: 1,\n scaleY: 1,\n cornerSize: SHAPE_DATA.cornerSize\n });\n canvas.add(fabricImage);\n resolve();\n };\n image.src = imageURL;\n }\n );\n }\n\n public setBackgroundFromURL(backgroundImageURL: string): Promise<void> {\n const canvas = this.canvas;\n const resize = this.resizeCanvasAndComputeScaleFactor;\n\n return new Promise(\n (resolve, reject): void => {\n if (backgroundImageURL == null) {\n return reject();\n }\n const image = new Image();\n image.onload = function() {\n const f_img = new fabric.Image(image, {});\n\n const scaleData = resize(f_img, canvas);\n\n canvas.setBackgroundImage(f_img, canvas.renderAll.bind(canvas), {\n scaleX: scaleData.scaleFactor,\n scaleY: scaleData.scaleFactor\n });\n\n canvas.renderAll();\n resolve();\n };\n image.src = backgroundImageURL;\n }\n );\n }\n\n private resizeCanvasAndComputeScaleFactor(f_img: fabric.Image, canvas: fabric.Canvas): ScaleData {\n const container = document.getElementsByClassName(\n 'div-canvas-container'\n )[0];\n\n canvas.setWidth(container.clientWidth);\n canvas.setHeight(container.clientHeight);\n\n const canvasWidth = canvas.getWidth();\n const canvasHeight = canvas.getHeight();\n\n const canvasAspect = canvasWidth / canvasHeight;\n const imgAspect = f_img.width / f_img.height;\n let left, top, scaleFactor;\n\n if (canvasAspect <= imgAspect) {\n scaleFactor = canvasWidth / f_img.width;\n left = 0;\n top = -(f_img.height * scaleFactor - canvasHeight) / 2;\n } else {\n scaleFactor = canvasHeight / f_img.height;\n top = 0;\n left = -(f_img.width * scaleFactor - canvasWidth) / 2;\n }\n return { scaleFactor: scaleFactor, left: left, top: top };\n }\n\n public onOrientationChange() {\n this.mousePosition = {x: this.canvas.getWidth, y: this.canvas.getHeight };\n this.cropImage();\n }\n\n public changeSelectedObjectsFillColor(color: string): void {\n const activeObjects = this.canvas.getActiveObjects();\n\n if (activeObjects) {\n for (const object of activeObjects) {\n object.setColor(color);\n this.canvas.renderAll();\n }\n }\n }\n\n public changeSelectedObjectsStrokeColor(color: string): void {\n const activeObjects = this.canvas.getActiveObjects();\n\n if (activeObjects) {\n for (const object of activeObjects) {\n if (object.type === 'i-text') {\n object.setColor(color);\n } else {\n object.stroke = color;\n object.set('dirty', true);\n }\n }\n this.canvas.renderAll();\n }\n }\n\n public deleteSelectedObjects(): void {\n const activeObjects = this.canvas.getActiveObjects();\n\n if (activeObjects) {\n for (const object of activeObjects) {\n this.canvas.remove(object);\n }\n this.canvas.discardActiveObject();\n this.canvas.renderAll();\n }\n }\n\n public bringSelectedObjectsToFront(): void {\n const activeObjects = this.canvas.getActiveObjects();\n\n if (activeObjects) {\n for (const object of activeObjects) {\n this.canvas.bringToFront(object);\n }\n }\n }\n\n public sendSelectedObjectsToBack(): void {\n const activeObjects = this.canvas.getActiveObjects();\n\n if (activeObjects) {\n for (const object of activeObjects) {\n this.canvas.sendToBack(object);\n }\n }\n }\n\n public jsonFromCanvas(): JSON {\n return this.canvas.toJSON();\n }\n\n public loadfromJson(json: JSON): Promise<void> {\n const container = document.getElementsByClassName(\n 'div-canvas-container'\n )[0];\n\n this.canvas.setWidth(container.clientWidth);\n this.canvas.setHeight(container.clientHeight);\n\n return new Promise(\n (resolve, reject): void => {\n this.adjustCanvas(json);\n this.canvas.loadFromJSON(json, this.canvas.renderAll.bind(this.canvas));\n resolve();\n }\n );\n }\n\n public adjustCanvas(json: JSON): void {\n const backgroundImage = json['backgroundImage'];\n\n const container = document.getElementsByClassName(\n 'div-canvas-container'\n )[0];\n\n const width = backgroundImage['width'];\n const height = backgroundImage['height'];\n\n const canvasWidth = container.clientWidth;\n const canvasHeight = container.clientHeight;\n\n const canvasAspect = canvasWidth / canvasHeight;\n const imgAspect = width / height;\n let scaleFactor;\n\n if (canvasAspect <= imgAspect) {\n scaleFactor = canvasWidth / width;\n } else {\n scaleFactor = canvasHeight / height;\n }\n\n const objectScale = scaleFactor / backgroundImage['scaleX'];\n\n backgroundImage['scaleX'] = scaleFactor;\n backgroundImage['scaleY'] = scaleFactor;\n\n this.canvas.setWidth(width * scaleFactor);\n this.canvas.setHeight(height * scaleFactor);\n\n const objects = json['objects'];\n\n for (let i = 0; i < objects.length; i++) {\n objects[i]['left'] *= objectScale;\n objects[i]['top'] *= objectScale;\n objects[i]['scaleX'] *= objectScale;\n objects[i]['scaleY'] *= objectScale;\n }\n\n this.canvas.selectable = true;\n this.canvas.selection = true;\n\n this.canvas.renderAll();\n }\n\n public exportImageAsDataURL(): string {\n return this.canvas.toDataURL('image/png');\n }\n\n public selectItem(itemNumber: number): void {\n this.canvas.setActiveObject(this.canvas.item(itemNumber));\n }\n\n public getIndexOf(activeObject): number {\n return this.canvas.getObjects().indexOf(activeObject);\n }\n\n private selectLastObject(): void {\n const itemNumber = this.canvas.getObjects().length - 1;\n const object = this.canvas.item(itemNumber);\n this.canvas.setActiveObject(object);\n object.enterEditing();\n }\n\n private markSelectedObjectsDirty(): void {\n const activeObjects = this.canvas.getActiveObjects();\n\n if (activeObjects) {\n for (const object of activeObjects) {\n object.set('dirty', true);\n }\n }\n }\n\n public addSelectionRectangle(): void {\n this.cropRectangle = new fabric.Rect({\n fill: 'transparent',\n originX: 'left',\n originY: 'top',\n stroke: '#ccc',\n strokeDashArray: [2, 2],\n opacity: 1,\n width: 1,\n height: 1\n });\n\n this.cropRectangle.visible = false;\n this.canvas.add(this.cropRectangle);\n }\n\n public ajustCropRectangleFromMouse(event: MouseEvent): boolean {\n const x = Math.min(event.layerX, this.mousePosition.x),\n y = Math.min(event.layerY, this.mousePosition.y),\n w = Math.abs(event.layerX - this.mousePosition.x),\n h = Math.abs(event.layerY - this.mousePosition.y);\n\n if (!w || !h) {\n return false;\n }\n\n this.cropRectangle\n .set('top', y)\n .set('left', x)\n .set('width', w)\n .set('height', h);\n\n this.canvas.renderAll();\n\n return true;\n }\n\n public startSelectingCropRectangleFromMouse(event: MouseEvent): void {\n this.cropStartingPosition = { x: this.canvas.left, y: this.canvas.top };\n\n this.cropRectangle.left = event.layerX;\n this.cropRectangle.top = event.layerY;\n this.cropRectangle.setCoords();\n\n this.mousePosition = {x: event.layerX, y: event.layerY };\n\n this.canvas.renderAll();\n this.cropRectangle.visible = true;\n this.canvas.bringToFront(this.cropRectangle);\n }\n\n public cropImage(): void {\n const left = this.cropRectangle.left;\n const top = this.cropRectangle.top;\n\n const width = this.cropRectangle.width;\n const height = this.cropRectangle.height;\n\n const container = document.getElementsByClassName(\n 'div-canvas-container'\n )[0];\n\n const canvasWidth = container.clientWidth;\n const canvasHeight = container.clientHeight;\n\n const canvasAspect = canvasWidth / canvasHeight;\n const imgAspect = width / height;\n let scaleFactor;\n\n if (canvasAspect <= imgAspect) {\n scaleFactor = canvasWidth / width;\n } else {\n scaleFactor = canvasHeight / height;\n }\n\n this.canvas.setWidth(width * scaleFactor);\n this.canvas.setHeight(height * scaleFactor);\n\n this.canvas.backgroundImage.scaleX *= scaleFactor;\n this.canvas.backgroundImage.scaleY *= scaleFactor;\n\n this.canvas.backgroundImage.left -= left;\n this.canvas.backgroundImage.left *= scaleFactor;\n this.canvas.backgroundImage.top -= top - scaleFactor;\n this.canvas.backgroundImage.top *= scaleFactor;\n\n this.moveAllObjectsInCanvas(-1 * left, -1 * top, scaleFactor);\n\n this.canvas.selectable = true;\n this.canvas.selection = true;\n this.cropRectangle.visible = false;\n\n this.canvas.remove(this.cropRectangle);\n\n this.canvas.renderAll();\n }\n\n public ajustCropRectangle(event): boolean {\n const touch = event.touches[0];\n\n const rect = event.target.getBoundingClientRect();\n\n const x = Math.min(touch.clientX - rect.left, this.mousePosition.x),\n y = Math.min(touch.clientY - rect.top, this.mousePosition.y),\n w = Math.abs(touch.clientX - rect.left - this.mousePosition.x),\n h = Math.abs(touch.clientY - rect.top - this.mousePosition.y);\n\n if (!w || !h) {\n return false;\n }\n\n this.cropRectangle\n .set('left', x)\n .set('top', y)\n .set('width', w)\n .set('height', h);\n\n this.canvas.renderAll();\n\n return true;\n }\n\n public startSelectingCropRectangle(event): void {\n this.cropStartingPosition = { x: this.canvas.left, y: this.canvas.top };\n\n const touch = event.touches[0];\n const rect = event.target.getBoundingClientRect();\n\n this.cropRectangle.left = touch.clientX - rect.left;\n this.cropRectangle.top = touch.clientY - rect.top;\n this.cropRectangle.setCoords();\n\n this.mousePosition = { x: touch.clientX - rect.left, y: touch.clientY - rect.top };\n\n this.canvas.renderAll();\n this.cropRectangle.visible = true;\n this.canvas.bringToFront(this.cropRectangle);\n }\n\n public disableSelection() {\n this.canvas.selection = false;\n }\n\n private moveAllObjectsInCanvas(x: number, y: number, scaleFactor: number): void {\n const objects = this.canvas.getObjects();\n for (const obj of objects) {\n obj.left += x;\n obj.left *= scaleFactor;\n obj.scaleX *= scaleFactor;\n obj.top += y;\n obj.scaleY *= scaleFactor;\n obj.top *= scaleFactor;\n obj.setCoords();\n }\n }\n\n public groupSelectedObjects(): void {\n const activeObjects = this.canvas.getActiveObjects();\n\n if (activeObjects) {\n const objects = [];\n\n for (const object of activeObjects) {\n objects.push(object);\n }\n this.deleteSelectedObjects();\n\n const group = new fabric.Group(objects);\n this.canvas.add(group);\n group.setCoords();\n\n this.canvas.setActiveObject(group);\n\n this.canvas.renderAll();\n }\n }\n\n public setLastPanPosition(event) {\n this.lastPanPosition = new fabric.Point(event.touches[0].clientX, event.touches[0].clientY);\n }\n\n public panCanvas(event): void {\n const delta = new fabric.Point(\n event.touches[0].clientX - this.lastPanPosition.x,\n event.touches[0].clientY - this.lastPanPosition.y\n );\n\n this.canvas.relativePan(delta);\n this.preventPanOutsideCanvas();\n\n this.canvas.renderAll();\n this.setLastPanPosition(event);\n }\n\n private preventPanOutsideCanvas() {\n const canvasViewPort = this.canvas.viewportTransform;\n\n const imageHeight = this.canvas.height * canvasViewPort[0];\n const imageWidth = this.canvas.width * canvasViewPort[0];\n\n const bottomEndPoint = this.canvas.height * (canvasViewPort[0] - 1);\n if (canvasViewPort[5] >= 0 || -bottomEndPoint > canvasViewPort[5]) {\n canvasViewPort[5] = (canvasViewPort[5] >= 0) ? 0 : -bottomEndPoint;\n }\n\n const rightEndPoint = this.canvas.width * (canvasViewPort[0] - 1);\n if (canvasViewPort[4] >= 0 || -rightEndPoint > canvasViewPort[4]) {\n canvasViewPort[4] = (canvasViewPort[4] >= 0) ? 0 : -rightEndPoint;\n }\n }\n\n public zoom(event): void {\n const point = new fabric.Point(event.center.x, event.center.y);\n\n let zoom = this.canvas.getZoom();\n if (event.additionalEvent === 'pinchout') {\n zoom *= 1.05;\n }\n if (event.additionalEvent === 'pinchin') {\n zoom /= 1.05;\n }\n\n if (zoom < 1) {\n zoom = 1;\n this.canvas.zoomToPoint(new fabric.Point(0, 0), zoom);\n this.canvas.absolutePan(new fabric.Point(0, 0));\n } else {\n if (zoom > 10) {\n zoom = 10;\n }\n this.canvas.zoomToPoint(point, zoom);\n }\n\n this.freeDrawingBrushWidthFromZoom(zoom);\n this.canvas.renderAll();\n }\n}\n","import { Component, Input, Output, OnInit, OnChanges, AfterViewInit, EventEmitter, transition, ElementRef, ViewChild, OnDestroy } from '@angular/core';\nimport { ActionSheetController } from 'ionic-angular';\nimport { Gesture } from 'ionic-angular/gestures/gesture';\nimport { AvailableGeometricShape } from './../constants/available-geometric-shapes';\nimport { CanvasManagerService } from './../services/canvas-manager.service';\nimport { fabric } from 'fabric';\nimport { TranslateService } from \"@ngx-translate/core\";\n\nconst Black = '#000000';\nconst Transparent = 'transparent';\n\n@Component({\n selector: 'lib-mobile-sketch-tool',\n template: `<ion-content>\n <div\n class=\"div-canvas-container\"\n (touchstart)=\"mouseDown($event)\"\n (touchmove)=\"mouseMove($event)\"\n (touchend)=\"mouseUp($event)\"\n #pinchElement\n >\n <canvas id=\"canvas\"></canvas>\n\n <div\n class=\"color-picker\"\n *ngIf=\"isSelectingColor\"\n >\n <ion-grid fixed>\n <ion-row>\n <ion-col\n style=\"background:#660000\"\n (tap)=\"setColor('#660000')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#663300\"\n (tap)=\"setColor('#663300')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#666600\"\n (tap)=\"setColor('#666600')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#006600\"\n (tap)=\"setColor('#006600')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#000066\"\n (tap)=\"setColor('#000066')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#660066\"\n (tap)=\"setColor('#660066')\"\n > \n </ion-col>\n\n </ion-row>\n <ion-row>\n <ion-col\n style=\"background:#CC0000\"\n (tap)=\"setColor('#CC0000')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#CC6600\"\n (tap)=\"setColor('#CC6600')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#CCCC00\"\n (tap)=\"setColor('#CCCC00')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#00CC00\"\n (tap)=\"setColor('#00CC00')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#0000CC\"\n (tap)=\"setColor('#0000CC')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#CC00CC\"\n (tap)=\"setColor('#CC00CC')\"\n > \n </ion-col>\n\n </ion-row>\n <ion-row>\n <ion-col\n style=\"background:#FF0000\"\n (tap)=\"setColor('#FF0000')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#FF8000\"\n (tap)=\"setColor('#FF8000')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#FFFF00\"\n (tap)=\"setColor('#FFFF00')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#00FF00\"\n (tap)=\"setColor('#00FF00')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#0000FF\"\n (tap)=\"setColor('#0000FF')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#FF00FF\"\n (tap)=\"setColor('#FF00FF')\"\n > \n </ion-col>\n\n </ion-row>\n <ion-row>\n <ion-col\n style=\"background:#FF6666\"\n (tap)=\"setColor('#FF6666')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#FFB266\"\n (tap)=\"setColor('#FFB266')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#FFFF66\"\n (tap)=\"setColor('#FFFF66')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#66FF66\"\n (tap)=\"setColor('#66FF66')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#6666FF\"\n (tap)=\"setColor('#6666FF')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#FF66FF\"\n (tap)=\"setColor('#FF66FF')\"\n > \n </ion-col>\n\n </ion-row>\n <ion-row>\n <ion-col\n style=\"background:#FF9999\"\n (tap)=\"setColor('#FF9999')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#FFCC99\"\n (tap)=\"setColor('#FFCC99')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#FFFF99\"\n (tap)=\"setColor('#FFFF99')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#99FF99\"\n (tap)=\"setColor('#99FF99')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#9999FF\"\n (tap)=\"setColor('#9999FF')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#FF99FF\"\n (tap)=\"setColor('#FF99FF')\"\n > \n </ion-col>\n\n </ion-row>\n <ion-row>\n <ion-col\n style=\"background:#FFFFFF\"\n (tap)=\"setColor('#FFFFFF')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#C0C0C0\"\n (tap)=\"setColor('#C0C0C0')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#808080\"\n (tap)=\"setColor('#808080')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#606060\"\n (tap)=\"setColor('#606060')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#303030\"\n (tap)=\"setColor('#606060')\"\n > \n </ion-col>\n <ion-col\n style=\"background:#000000\"\n (tap)=\"setColor('#000000')\"\n > \n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ion-toolbar>\n <div class=\"div-edit-toolbar\">\n <button\n class=\"button-edit-toolbar\"\n ion-button\n large\n [clear]=\"true\"\n (click)=\"presentShapeActionSheet()\"\n >\n <i\n class=\"fas fa-shapes\"\n id=\"icon\"\n ></i>\n </button>\n\n <button\n class=\"button-edit-toolbar\"\n ion-button\n large\n [clear]=\"true\"\n (click)=\"presentPictogramsActionSheet()\"\n *ngIf=\"hasPictograms\"\n >\n <i\n class=\"fas fa-images\"\n id=\"icon\"\n ></i>\n </button>\n\n <button\n class=\"button-edit-toolbar\"\n ion-button\n large\n [clear]=\"true\"\n (click)=\"presentEditActionSheet()\"\n >\n <i\n class=\"fas fa-edit\"\n id=\"icon\"\n ></i>\n </button>\n\n <button\n class=\"button-edit-toolbar\"\n ion-button\n large\n [clear]=\"true\"\n (click)=\"draw()\"\n >\n <i\n class=\"fas fa-pencil-alt\"\n id=\"icon\"\n ></i>\n </button>\n\n <button\n class=\"button-edit-toolbar\"\n ion-button\n large\n [clear]=\"true\"\n (click)=\"onColorClicked()\"\n >\n <i\n class=\"fas fa-palette\"\n id=\"icon\"\n ></i>\n </button>\n\n <button\n class=\"button-edit-toolbar\"\n ion-button\n large\n [clear]=\"true\"\n (click)=\"undo()\"\n *ngIf=\"isUndoAvailable\"\n >\n <i\n class=\"fas fa-undo\"\n id=\"icon\"\n ></i>\n </button>\n\n </div>\n </ion-toolbar>\n</ion-footer>\n`,\n styles: [`.div-canvas-container{text-align:center;height:100%;width:100%;-o-object-fit:contain;object-fit:contain}.scroll-content{padding:0!important;overflow-y:hidden}.div-edit-toolbar{text-align:center}.button-edit-toolbar{padding:4%!important;margin:0!important}.action-sheet-button{font-family:FontAwesome,Arial}.color-picker{position:absolute;width:100%;height:auto;bottom:0;left:0}#icon{color:#b32017}`],\n providers: [CanvasManagerService]\n})\nexport class MobileSketchToolComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n private gesture: Gesture;\n @ViewChild('pinchElement') element;\n\n public fillColor: string;\n public strokeColor: string;\n public isCropping: boolean;\n public isUndoAvailable: boolean;\n public isSelectingColor: boolean;\n public isDrawing: boolean;\n\n @Input() public imageData: string;\n @Input() public loadedJson: string;\n @Input() public iconsPath: string;\n @Input() public icons: [string];\n\n @Output() public canvas = new EventEmitter<fabric.Canvas>();\n\n private isLoaded: boolean;\n private isPanning: boolean;\n private previousImageData: string;\n private currentJson: JSON;\n private previousJson: JSON;\n\n constructor(\n public actionSheetCtrl: ActionSheetController,\n private canvasManagerService: CanvasManagerService,\n private translate: TranslateService\n ) {\n this.strokeColor = Black;\n this.fillColor = Transparent;\n this.isCropping = false;\n this.isLoaded = false;\n this.isUndoAvailable = false;\n this.isSelectingColor = false;\n }\n\n ngOnInit() {\n if (this.imageData) {\n this.canvasManagerService.emptyCanvas();\n if (this.loadedJson == null || this.loadedJson.length < 10) {\n this.canvasManagerService.setBackgroundFromURL(this.imageData);\n } else {\n this.previousJson = JSON.parse(this.loadedJson);\n this.currentJson = this.previousJson;\n this.canvasManagerService\n .loadfromJson(JSON.parse(this.loadedJson));\n }\n this.isLoaded = true;\n this.previousImageData = this.imageData;\n }\n this.emitCanvas();\n }\n\n ngOnChanges() {\n if (this.isLoaded) {\n if (this.loadedJson === null || this.loadedJson.length < 10 || this.imageData !== this.previousImageData) {\n this.canvasManagerService.emptyCanvas();\n this.canvasManagerService.setBackgroundFromURL(this.imageData);\n this.previousImageData = this.imageData;\n this.currentJson = null;\n } else if (this.loadedJson !== JSON.stringify(this.currentJson)) {\n this.previousJson = JSON.parse(this.loadedJson);\n this.currentJson = this.previousJson;\n this.canvasManagerService\n .loadfromJson(JSON.parse(this.loadedJson));\n }\n }\n this.emitCanvas();\n }\n\n ngAfterViewInit() {\n this.gesture = new Gesture(this.element.nativeElement);\n this.gesture.listen();\n this.gesture.on('pinch', $event => this.pinch($event));\n }\n\n ngOnDestroy() {\n this.gesture.destroy();\n}\n\n private pinchEvent(event) {\n this.canvasManagerService.emptyCanvas();\n }\n\n get hasPictograms(): boolean {\n return !(!this.icons);\n }\n\n public addText() {\n this.canvasManagerService.addText(this.strokeColor, 'text ');\n this.emitCanvas();\n }\n\n public addShape(shape: string) {\n this.canvasManagerService.addGeometricShape(\n this.strokeColor,\n this.fillColor,\n AvailableGeometricShape[shape]\n );\n this.emitCanvas();\n }\n\n public addImage(source: string) {\n this.canvasManagerService.addImage(this.iconsPath + source);\n this.emitCanvas();\n }\n\n public changeStrokeColor() {\n this.canvasManagerService.changeSelectedObjectsStrokeColor(\n this.strokeColor\n );\n this.canvasManagerService.setFreeDrawingBrushColor(this.strokeColor);\n this.emitCanvas();\n }\n\n public bringFoward() {\n this.canvasManagerService.bringSelectedObjectsToFront();\n this.emitCanvas();\n }\n\n public sendToBack() {\n this.canvasManagerService.sendSelectedObjectsToBack();\n this.emitCanvas();\n }\n\n public crop() {\n this.isCropping = true;\n this.canvasManagerService.disableSelection();\n this.canvasManagerService.addSelectionRectangle();\n this.isUndoAvailable = true;\n this.previousJson = this.canvasManagerService.jsonFromCanvas();\n this.emitCanvas();\n }\n\n public deleteSelection() {\n this.canvasManagerService.deleteSelectedObjects();\n this.emitCanvas();\n }\n\n public mouseUp(event) {\n if (this.isCropping) {\n this.isCropping = false;\n this.canvasManagerService.cropImage();\n this.isUndoAvailable = true;\n this.emitCanvas();\n }\n }\n\n public mouseMove(event) {\n if (this.isCropping) {\n this.canvasManagerService.ajustCropRectangle(event);\n } else if (event.touches.length === 3) {\n this.canvasManagerService.panCanvas(event);\n }\n }\n\n public mouseDown(event) {\n if (this.isCropping) {\n this.canvasManagerService.startSelectingCropRectangle(event);\n } else if (event.touches.length === 3) {\n this.canvasManagerService.setLastPanPosition(event);\n }\n }\n\n public pinch(event) {\n event.preventDefault();\n this.canvasManagerService.zoom(event);\n }\n\n public group() {\n this.canvasManagerService.groupSelectedObjects();\n this.emitCanvas();\n }\n\n public undo() {\n this.canvasManagerService.loadfromJson(this.previousJson);\n this.isUndoAvailable = false;\n this.emitCanvas();\n }\n\n public onColorClicked() {\n this.isSelectingColor = true;\n }\n\n public setColor(color: string) {\n this.strokeColor = color;\n this.changeStrokeColor();\n this.isSelectingColor = false;\n this.emitCanvas();\n }\n\n public draw() {\n this.isDrawing = !this.isDrawing;\n this.canvasManagerService.toggleFreeDrawing();\n this.canvasManagerService.setFreeDrawingBrushColor(this.strokeColor);\n }\n\n private disableDrawing() {\n if (this.isDrawing) {\n this.isDrawing = false;\n this.canvasManagerService.toggleFreeDrawing();\n }\n }\n\n private translateShapeButtonsText(): Array<String> {\n const translationArray = [];\n translationArray.push(this.translate.instant('rectangle'));\n translationArray.push(this.translate.instant('triangle'));\n translationArray.push(this.translate.instant('circle'));\n translationArray.push(this.translate.instant('line'));\n translationArray.push(this.translate.instant('cross'));\n translationArray.push(this.translate.instant('text'));\n return translationArray;\n }\n\n public presentShapeActionSheet() {\n this.disableDrawing();\n\n const titleText = this.translate.instant('addGeometricShape');\n const buttonsText = this.translateShapeButtonsText();\n let i = 0;\n\n const actionSheet = this.actionSheetCtrl.create({\n title: titleText,\n buttons: [\n {\n text: '\\uf0c8 ' + buttonsText[i++],\n handler: () => {\n this.canvasManagerService.addGeometricShape(\n this.strokeColor,\n this.fillColor,\n AvailableGeometricShape.Rectangle\n );\n }\n },\n {\n text: '\\uf0d8 ' + buttonsText[i++],\n handler: () => {\n this.canvasManagerService.addGeometricShape(\n this.strokeColor,\n this.fillColor,\n AvailableGeometricShape.Triangle\n );\n }\n },\n {\n text: '\\uf111 ' + buttonsText[i++],\n handler: () => {\n this.canvasManagerService.addGeometricShape(\n this.strokeColor,\n this.fillColor,\n AvailableGeometricShape.Circle\n );\n }\n },\n {\n text: '\\uf068 ' + buttonsText[i++],\n handler: () => {\n this.canvasManagerService.addGeometricShape(\n this.strokeColor,\n this.fillColor,\n AvailableGeometricShape.Line\n );\n }\n },\n {\n text: '\\uf067 ' + buttonsText[i++],\n handler: () => {\n this.canvasManagerService.addGeometricShape(\n this.strokeColor,\n this.fillColor,\n AvailableGeometricShape.Cross\n );\n }\n },\n {\n text: '\\uf031 ' + buttonsText[i++],\n handler: () => {\n this.canvasManagerService.addText(this.strokeColor, '');\n }\n }\n ]\n });\n actionSheet.present();\n }\n\n private translateEditButtonsText(): Array<String> {\n const translationArray = [];\n translationArray.push(this.translate.instant('crop'));\n translationArray.push(this.translate.instant('group'));\n translationArray.push(this.translate.instant('bringToFront'));\n translationArray.push(this.translate.instant('sendToBack'));\n translationArray.push(this.translate.instant('delete'));\n return translationArray;\n }\n\n public presentEditActionSheet() {\n this.disableDrawing();\n\n const titleText = this.translate.instant('edition');\n\n const buttonsText = this.translateEditButtonsText();\n let i = 0;\n\n const actionSheet = this.actionSheetCtrl.create({\n title: titleText,\n buttons: [\n {\n text: '\\uf125 ' + buttonsText[i++],\n handler: () => {\n this.crop();\n }\n },\n {\n text: '\\uf247 ' + buttonsText[i++],\n handler: () => {\n this.group();\n }\n },\n {\n text: '\\uf0de ' + buttonsText[i++],\n handler: () => {\n this.bringFoward();\n }\n },\n {\n text: '\\uf0dd ' + buttonsText[i++],\n handler: () => {\n this.sendToBack();\n }\n },\n {\n text: '\\uf1f8 ' + buttonsText[i++],\n handler: () => {\n this.deleteSelection();\n }\n }\n ]\n });\n actionSheet.present();\n }\n\n public presentPictogramsActionSheet() {\n this.disableDrawing();\n\n const buttons = [];\n const actionSheetStyles = [];\n const images = this.icons;\n for (let i = 0; i < images.length; i++) {\n const style = document.createElement('style');\n style.type = 'text/css';\n style.innerHTML =\n '.customCSSClass' +\n i +\n '{background: url(' +\n \"'\" +\n this.iconsPath +\n images[i] +\n \"'\" +\n ') no-repeat !important;padding-left:50px !important;height:80px; background-position: left center !important;}';\n document.getElementsByTagName('head')[0].appendChild(style);\n actionSheetStyles.push(style);\n buttons.push({\n role: 'destructive',\n text: images[i],\n cssClass: 'customCSSClass' + i,\n handler: () => {\n this.addImage(images[i]);\n }\n });\n }\n\n const titleText = this.translate.instant('addPictogram');\n\n const actionSheet = this.actionSheetCtrl.create({\n title: titleText,\n buttons: buttons\n });\n actionSheet.onDidDismiss(() => {\n for (let i = 0; i < actionSheetStyles.length; i++) {\n if (actionSheetStyles[i].parentNode != null) {\n actionSheetStyles[i].parentNode.removeChild(actionSheetStyles[i]);\n }\n }\n });\n\n actionSheet.present();\n }\n\n public emitCanvas() {\n this.canvas.emit(this.canvasManagerService.canvas);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IonicModule } from 'ionic-angular';\n\nimport { MobileSketchToolComponent } from './mobile-component/mobile-sketch-tool.component';\nimport { CanvasManagerService } from './services/canvas-manager.service';\n\n@NgModule({\n imports: [CommonModule, IonicModule],\n declarations: [\n MobileSketchToolComponent,\n ],\n providers: [\n CanvasManagerService,\n ],\n exports: [MobileSketchToolComponent]\n})\nexport class SketchToolModule {}\n"],"names":["tslib_1.__values"],"mappings":"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"}