{"version":3,"file":"depyronick-ng-feedback.mjs","sources":["../../../projects/ng-feedback/src/lib/entity/feedback.ts","../../../projects/ng-feedback/src/lib/entity/rectangle.ts","../../../projects/ng-feedback/src/lib/feedback.service.ts","../../../projects/ng-feedback/src/lib/feedback-toolbar/feedback-toolbar.component.ts","../../../projects/ng-feedback/src/lib/feedback-toolbar/feedback-toolbar.component.html","../../../projects/ng-feedback/src/lib/feedback-rectangle/feedback-rectangle.component.ts","../../../projects/ng-feedback/src/lib/feedback-rectangle/feedback-rectangle.component.html","../../../projects/ng-feedback/src/lib/feedback-dialog/feedback-dialog.component.ts","../../../projects/ng-feedback/src/lib/feedback-dialog/feedback-dialog.component.html","../../../projects/ng-feedback/src/lib/feedback.directive.ts","../../../projects/ng-feedback/src/lib/feedback.module.ts","../../../projects/ng-feedback/src/public_api.ts","../../../projects/ng-feedback/src/depyronick-ng-feedback.ts"],"sourcesContent":["export class Feedback {\n  public description: string;\n  public screenshot: string;\n}\n","export class Rectangle {\n  public startX: number;\n  public startY: number;\n  public width: number;\n  public height: number;\n  public color: string;\n  public windowScrollY: number = window.scrollY;\n  public windowScrollX: number = window.scrollX;\n}\n","import { Injectable } from '@angular/core';\nimport html2canvas from 'html2canvas';\nimport { Subject, Observable } from 'rxjs';\nimport { Feedback } from './entity/feedback';\n\n@Injectable()\nexport class FeedbackService {\n  public initialVariables: object = {};\n  public highlightedColor = 'yellow';\n  public hiddenColor = 'black';\n  private screenshotCanvasSource = new Subject<HTMLCanvasElement>();\n  public screenshotCanvas$: Observable<HTMLCanvasElement> = this.screenshotCanvasSource.asObservable();\n\n  private feedbackSource = new Subject<Feedback>();\n  public feedback$: Observable<Feedback> = this.feedbackSource.asObservable();\n\n  private isDraggingToolbarSource = new Subject<boolean>();\n  public isDraggingToolbar$: Observable<boolean> = this.isDraggingToolbarSource.asObservable();\n\n  public initScreenshotCanvas() {\n    const body = document.body;\n    html2canvas(body, {\n      logging: false,\n      width: document.documentElement.clientWidth,\n      height: document.documentElement.clientHeight,\n      x: document.documentElement.scrollLeft,\n      y: document.documentElement.scrollTop,\n      allowTaint : true,\n      useCORS: true\n    }).then(bodyCanvas => {\n      this.screenshotCanvasSource.next(bodyCanvas);\n    });\n  }\n\n  public setCanvas(canvas: HTMLCanvasElement): void {\n    this.screenshotCanvasSource.next(canvas);\n  }\n\n  public setFeedback(feedback: Feedback): void {\n    this.feedbackSource.next(feedback);\n  }\n\n  public setIsDraggingToolbar(isDragging: boolean): void {\n    this.isDraggingToolbarSource.next(isDragging);\n  }\n\n  public getImgEle(canvas): HTMLElement {\n    const img = canvas.toDataURL('image/png'),\n          imageEle = document.createElement('img');\n    imageEle.setAttribute('src', img);\n    Object.assign(imageEle.style, {\n      position: 'absolute',\n      top: '50%',\n      right: '0',\n      left: '0',\n      margin: '0 auto',\n      maxHeight: '100%',\n      maxWidth: '100%',\n      transform: 'translateY(-50%)'\n    });\n    return imageEle;\n  }\n\n  public hideBackDrop() {\n    const dialogBackDrop = document.getElementsByClassName('dialogBackDrop')[0] as HTMLElement;\n    dialogBackDrop.style.backgroundColor = 'initial';\n  }\n\n  public showBackDrop() {\n    const dialogBackDrop = document.getElementsByClassName('dialogBackDrop')[0] as HTMLElement;\n    if (!dialogBackDrop.getAttribute('data-html2canvas-ignore')) {\n      dialogBackDrop.setAttribute('data-html2canvas-ignore', 'true');\n    }\n    dialogBackDrop.style.backgroundColor = 'rgba(0, 0, 0, .288)';\n  }\n}\n","import { Component, ElementRef, Input, Output, EventEmitter, AfterViewInit, ViewChild, OnChanges } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { takeUntil, finalize, map, mergeMap } from 'rxjs/operators';\nimport { FeedbackService } from '../feedback.service';\n\n@Component({\n  selector: 'feedback-toolbar',\n  templateUrl: './feedback-toolbar.component.html',\n  styleUrls: ['./feedback-toolbar.component.css']\n})\nexport class FeedbackToolbarComponent implements AfterViewInit, OnChanges {\n  @Input()\n  public drawColor: string;\n  @Output()\n  public manipulate = new EventEmitter<string>();\n  public disableToolbarTips = false;\n  @ViewChild('toggleMove', { static: true })\n  private toggleMoveBtn: ElementRef;\n  public isSwitch = false;\n  public isDragging = false;\n  public vars: object = {};\n\n  constructor(public el: ElementRef, private feedbackService: FeedbackService) {\n    this.vars = feedbackService.initialVariables;\n  }\n\n  public ngAfterViewInit() {\n    const elStyle = this.el.nativeElement.style;\n    elStyle.position = 'absolute';\n    elStyle.left = '43%';\n    elStyle.top = '60%';\n    this.addDragListenerOnMoveBtn();\n  }\n\n  public ngOnChanges() {\n    this.isSwitch = this.drawColor !== this.feedbackService.highlightedColor;\n  }\n\n  public done() {\n    this.manipulate.emit('done');\n  }\n\n  public toggleHighlight() {\n    this.isSwitch = false;\n    this.manipulate.emit(this.feedbackService.highlightedColor);\n  }\n\n  public toggleHide() {\n    this.isSwitch = true;\n    this.manipulate.emit(this.feedbackService.hiddenColor);\n  }\n\n  public addDragListenerOnMoveBtn() {\n    const mouseUp = fromEvent(this.toggleMoveBtn.nativeElement, 'mouseup');\n    const mouseMove = fromEvent(document.documentElement, 'mousemove');\n    const mouseDown = fromEvent(this.toggleMoveBtn.nativeElement, 'mousedown');\n    const mouseDrag = mouseDown.pipe(mergeMap((md: MouseEvent) => {\n      this.feedbackService.setIsDraggingToolbar(true);\n      const startX = md.offsetX;\n      const startY = md.offsetY;\n      this.disableToolbarTips = true;\n      this.isDragging = true;\n      // Calculate dif with mousemove until mouseup\n      return mouseMove.pipe(\n        map((mm: MouseEvent) => {\n          mm.preventDefault();\n          return {\n            left: mm.clientX - startX,\n            top: mm.clientY - startY\n          };\n        }),\n        finalize(() => {\n          this.isDragging = false;\n          this.disableToolbarTips = false;\n          this.feedbackService.setIsDraggingToolbar(false);\n        }),\n        takeUntil(mouseUp));\n    }));\n    mouseDrag.subscribe(\n      (pos) => {\n        this.el.nativeElement.style.left = pos.left + 'px';\n        this.el.nativeElement.style.top = pos.top + 'px';\n      });\n  }\n}\n","<div exclude-rect=\"true\" class=\"toolbar\">\n  <div class=\"move-toolbar\" #toggleMove [matTooltip]=\"vars['moveToolbarTip']\" [matTooltipDisabled]=\"disableToolbarTips\">\n    <svg focusable=\"false\" aria-label=\"Drag\" fill=\"#BDBDBD\" height=\"56\" width=\"16\"\n         viewBox=\"-2 2 12 12\">\n      <circle cx=\"1.5\" cy=\"1.5\" r=\"1.5\"></circle>\n      <circle cx=\"1.5\" cy=\"7.5\" r=\"1.5\"></circle>\n      <circle cx=\"1.5\" cy=\"13.5\" r=\"1.5\"></circle>\n      <circle cx=\"6.5\" cy=\"1.5\" r=\"1.5\"></circle>\n      <circle cx=\"6.5\" cy=\"7.5\" r=\"1.5\"></circle>\n      <circle cx=\"6.5\" cy=\"13.5\" r=\"1.5\"></circle>\n    </svg>\n  </div>\n  <button #highlightBtn (click)=\"toggleHighlight()\" [matTooltip]=\"vars['highlightTip']\"\n          [matTooltipDisabled]=\"disableToolbarTips\" class=\"highlight-toggle\" [ngClass]=\"{'deepen-color': !isSwitch}\">\n    <span class=\"toggle\">\n      <svg focusable=\"false\" aria-label=\"\" viewBox=\"0 0 24 24\" height=\"36\" width=\"36\"\n           fill=\"#ffd740\">\n        <path d=\"M3 3h18v18H3z\"></path>\n      </svg>\n\n      <svg focusable=\"false\" aria-label=\"\" fill=\"#757575\" viewBox=\"0 0 24 24\"\n           height=\"36\" width=\"36\" [ngClass]=\"{'toggle-decorator': !isSwitch}\" *ngIf=\"!isSwitch\">\n        <path\n          d=\"M21 17h-2.58l2.51 2.56c-.18.69-.73 1.26-1.41 1.44L17 18.5V21h-2v-6h6v2zM19 7h2v2h-2V7zm2-2h-2V3.08c1.1 0 2 .92 2 1.92zm-6-2h2v2h-2V3zm4 8h2v2h-2v-2zM9 21H7v-2h2v2zM5 9H3V7h2v2zm0-5.92V5H3c0-1 1-1.92 2-1.92zM5 17H3v-2h2v2zM9 5H7V3h2v2zm4 0h-2V3h2v2zm0 16h-2v-2h2v2zm-8-8H3v-2h2v2zm0 8.08C3.9 21.08 3 20 3 19h2v2.08z\"></path>\n      </svg>\n    </span>\n  </button>\n  <button (click)=\"toggleHide()\" [matTooltip]=\"vars['hideTip']\" [matTooltipDisabled]=\"disableToolbarTips\"\n          class=\"hide-toggle\" [ngClass]=\"{'deepen-color': isSwitch}\">\n    <span class=\"toggle\">\n      <svg focusable=\"false\" aria-label=\"\" viewBox=\"0 0 24 24\" height=\"36\" width=\"36\"\n           fill=\"#000\">\n        <path d=\"M3 3h18v18H3z\"></path>\n      </svg>\n      <svg focusable=\"false\" aria-label=\"\" fill=\"#757575\" viewBox=\"0 0 24 24\"\n           height=\"36\" width=\"36\" [ngClass]=\"{'toggle-decorator': isSwitch}\" *ngIf=\"isSwitch\">\n        <path\n          d=\"M21 17h-2.58l2.51 2.56c-.18.69-.73 1.26-1.41 1.44L17 18.5V21h-2v-6h6v2zM19 7h2v2h-2V7zm2-2h-2V3.08c1.1 0 2 .92 2 1.92zm-6-2h2v2h-2V3zm4 8h2v2h-2v-2zM9 21H7v-2h2v2zM5 9H3V7h2v2zm0-5.92V5H3c0-1 1-1.92 2-1.92zM5 17H3v-2h2v2zM9 5H7V3h2v2zm4 0h-2V3h2v2zm0 16h-2v-2h2v2zm-8-8H3v-2h2v2zm0 8.08C3.9 21.08 3 20 3 19h2v2.08z\"></path>\n      </svg>\n    </span>\n  </button>\n  <button mat-button class=\"merge-button\" (click)=\"done()\">{{vars['editDoneLabel']}}</button>\n</div>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { Rectangle } from '../entity/rectangle';\nimport { FeedbackService } from '../feedback.service';\n\n@Component({\n  selector: 'feedback-rectangle',\n  templateUrl: './feedback-rectangle.component.html',\n  styleUrls: ['./feedback-rectangle.component.css']\n})\nexport class FeedbackRectangleComponent {\n  @Input()\n  public rectangle: Rectangle;\n  @Input()\n  public noHover: boolean;\n  @Output()\n  public close = new EventEmitter<boolean>();\n  public showCloseTag: boolean = false;\n\n  constructor(public feedbackService: FeedbackService) {\n  }\n\n  @HostListener('mouseenter')\n  public onMouseEnter(): void {\n    this.showCloseTag = this.noHover === false;\n  }\n\n  @HostListener('mouseleave')\n  public onMouseLeave(): void {\n    this.showCloseTag = false;\n  }\n\n  public onClose(): void {\n    this.close.emit();\n  }\n}\n","<div exclude-rect=\"true\" class=\"rect\" [ngStyle]=\"{'left.px': rectangle.startX,\n                              'top.px': rectangle.startY,\n                              'width.px': rectangle.width ,\n                              'height.px': rectangle.height }\"\n    [ngClass]=\"{'highlight': rectangle.color === feedbackService.highlightedColor,\n                'hide': rectangle.color !== feedbackService.highlightedColor,\n                'noHover': noHover}\">\n  <span exclude-rect=\"true\" class=\"close\" *ngIf=\"showCloseTag\" (click)=\"onClose()\">\n    <svg viewBox=\"0 0 1024 1024\"\n         width=\"16\" height=\"16\">\n        <path\n          d=\"M896 224l-96-96-288 288-288-288-96 96 288 288-288 288 96 96 288-288 288 288 96-96-288-288 288-288z\"></path>\n    </svg>\n  </span>\n</div>\n","import { Component, AfterViewInit, ViewChild, ElementRef, ChangeDetectorRef, HostListener } from '@angular/core';\nimport { Observable, Subscription, fromEvent } from 'rxjs';\nimport { takeUntil, finalize, map, mergeMap } from 'rxjs/operators';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { Feedback } from '../entity/feedback';\nimport { Rectangle } from '../entity/rectangle';\nimport { FeedbackService } from '../feedback.service';\n\n@Component({\n  selector: 'feedback-dialog',\n  templateUrl: './feedback-dialog.component.html',\n  styleUrls: ['./feedback-dialog.component.css']\n})\nexport class FeedbackDialogComponent implements AfterViewInit {\n  public showToolbar = false;\n  public vars: object = {};\n  public feedback = new Feedback();\n  public includeScreenshot: boolean = false;\n  public showSpinner = true;\n  public screenshotEle: HTMLElement;\n  public drawCanvas: HTMLCanvasElement;\n  public showToolbarTips: boolean = true;\n  @ViewChild('screenshotParent')\n  public screenshotParent: ElementRef;\n  public drawColor: string = this.feedbackService.highlightedColor;\n  public rectangles: Rectangle[] = [];\n  private scrollWidth = document.documentElement.scrollWidth;\n  private scrollHeight = document.documentElement.scrollHeight;\n  private elCouldBeHighlighted = ['button', 'a', 'span', 'em', 'i', 'h1', 'h2', 'h3', 'h4',\n    'h5', 'h6', 'p', 'strong', 'small', 'sub', 'sup', 'b', 'time', 'img',\n    'video', 'input', 'label', 'select', 'textarea', 'article', 'summary', 'section'];\n  // the flag field 'isManuallyDrawRect' to solve conflict between manually draw and auto draw\n  private manuallyDrawRect$: Subscription;\n  private autoDrawRect$: Subscription;\n  public isDrawingRect: boolean = false;\n\n  constructor(public dialogRef: MatDialogRef<FeedbackDialogComponent>,\n    private feedbackService: FeedbackService,\n    private detector: ChangeDetectorRef,\n    private el: ElementRef) {\n    this.feedback = new Feedback();\n    this.feedback.description = '';\n    this.vars = this.feedbackService.initialVariables;\n  }\n\n  public ngAfterViewInit() {\n    this.feedbackService.screenshotCanvas$.subscribe((canvas) => {\n      this.showSpinner = false;\n      this.feedback.screenshot = canvas.toDataURL('image/png');\n      this.screenshotEle = this.feedbackService.getImgEle(canvas);\n      this.appendScreenshot();\n    });\n\n    this.feedbackService.isDraggingToolbar$.subscribe((isDragging) => {\n      if (isDragging) {\n        this.destroyCanvasListeners();\n      } else {\n        this.addCanvasListeners();\n      }\n    });\n\n    this.dialogRef.afterClosed().subscribe((sendNow) => {\n      if (sendNow === true) {\n        this.feedbackService.setFeedback(this.feedback);\n      }\n    });\n    this.feedbackService.showBackDrop();\n  }\n\n  public expandDrawingBoard() {\n    this.showToolbar = true;\n    if (!this.drawCanvas) {\n      this.detector.detectChanges();\n      this.initBackgroundCanvas();\n      this.feedbackService.hideBackDrop();\n    }\n    this.addCanvasListeners();\n    this.el.nativeElement.appendChild(this.drawCanvas);\n    this.feedbackService.hideBackDrop();\n    console.log('expand the board');\n  }\n\n  @HostListener('document:keydown.escape', ['$event'])\n  public onEscapeKeyDownHandler(evt: KeyboardEvent) {\n    this.showToolbar = false;\n    this.includeScreenshot = false;\n    this.detector.detectChanges();\n    this.dialogRef.close('key down esc to close');\n  }\n\n  public manipulate(manipulation: string) {\n    if (manipulation === 'done') {\n      this.showToolbarTips = false;\n      this.showSpinner = true;\n      this.destroyCanvasListeners();\n      this.showToolbar = false;\n      this.detector.detectChanges();\n      this.feedbackService.initScreenshotCanvas();\n    } else {\n      this.startDraw(manipulation);\n    }\n  }\n\n  public startDraw(color: string) {\n    this.drawColor = color;\n  }\n\n  public isIncludeScreenshot() {\n    if (this.includeScreenshot) {\n      this.feedbackService.initScreenshotCanvas();\n\n      setTimeout(() => {\n        this.detector.detectChanges();\n        this.showSpinner = false;\n        this.appendScreenshot();\n        this.feedback.screenshot = this.screenshotEle.getAttribute('src');\n      }, 1500);\n    } else {\n      delete this.feedback['screenshot'];\n      this.showSpinner = true;\n    }\n  }\n\n  private appendScreenshot() {\n    if (this.screenshotParent) { this.screenshotParent.nativeElement.appendChild(this.screenshotEle); }\n  }\n\n  private initBackgroundCanvas() {\n    this.drawCanvas = document.getElementById('draw-canvas') as HTMLCanvasElement;\n    // The canvas to draw, must use this way to initial the height and width\n    this.drawCanvas.style.height = this.scrollHeight + '';\n    this.drawCanvas.style.width = this.scrollWidth + '';\n    this.drawCanvas.height = this.scrollHeight;\n    this.drawCanvas.width = this.scrollWidth;\n    this.drawContainerRect();\n  }\n\n  private drawContainerRect() {\n    const drawContext = this.drawCanvas.getContext('2d'),\n      width = this.scrollWidth,\n      height = this.scrollHeight;\n    drawContext.beginPath();\n    drawContext.fillStyle = 'rgba(0,0,0,0.3)';\n    drawContext.clearRect(0, 0, width, height);\n    drawContext.fillRect(0, 0, width, height); // draw the rectangle\n  }\n\n  private drawRectangle(rect: Rectangle) {\n    const context = this.drawCanvas.getContext('2d');\n    context.lineJoin = 'round';\n    context.beginPath();\n    if (rect.color === this.feedbackService.hiddenColor) {\n      context.fillStyle = 'rgba(31, 31, 31, 0.75)';\n      context.fillRect(rect.startX, rect.startY, rect.width, rect.height);\n      context.rect(rect.startX, rect.startY, rect.width, rect.height);\n    } else {\n      context.clearRect(rect.startX, rect.startY, rect.width, rect.height);\n      context.lineWidth = 5;\n      context.strokeStyle = rect.color;\n      context.rect(rect.startX, rect.startY, rect.width, rect.height);\n      context.stroke();\n      context.clearRect(rect.startX, rect.startY, rect.width, rect.height);\n      this.rectangles.forEach(tmpRect => {\n        if (tmpRect.color === this.feedbackService.highlightedColor) {\n          context.clearRect(tmpRect.startX, tmpRect.startY, tmpRect.width, tmpRect.height);\n        }\n      });\n    }\n  }\n\n  private addCanvasListeners(): void {\n    const mouseUp = fromEvent(document.documentElement, 'mouseup'),\n      mouseMove = fromEvent(document.documentElement, 'mousemove'),\n      mouseDown = fromEvent(document.documentElement, 'mousedown'),\n      scroll = fromEvent(window, 'scroll');\n\n    this.manuallyDrawRect(mouseDown, mouseMove, mouseUp);\n    this.autoDrawRect(mouseMove);\n    this.changeRectPosition(scroll);\n  }\n\n  private changeRectPosition(scroll: Observable<Event>) {\n    scroll.subscribe(\n      event => {\n        const currentWindowScrollX = window.scrollX,\n          currentWindowScrollY = window.scrollY;\n        this.rectangles.forEach(rect => {\n          rect.startY = rect.startY - (currentWindowScrollY - rect.windowScrollY);\n          rect.startX = rect.startX - (currentWindowScrollX - rect.windowScrollX);\n          rect.windowScrollY = currentWindowScrollY;\n          rect.windowScrollX = currentWindowScrollX;\n        });\n        this.drawPersistCanvasRectangles();\n      },\n      error => console.error(error)\n    );\n  }\n\n  private destroyCanvasListeners(): void {\n    if (this.manuallyDrawRect$) { this.manuallyDrawRect$.unsubscribe(); }\n    if (this.autoDrawRect$) { this.autoDrawRect$.unsubscribe(); }\n  }\n\n  private manuallyDrawRect(mouseDown: Observable<Event>, mouseMove: Observable<Event>, mouseUp: Observable<Event>): void {\n    const mouseDrag = mouseDown.pipe(mergeMap((mouseDownEvent: MouseEvent) => {\n      if (this.showToolbarTips) { this.showToolbarTips = false; }\n      this.autoDrawRect$.unsubscribe();\n      this.isDrawingRect = true;\n\n      const newRectangle = new Rectangle();\n      newRectangle.startX = mouseDownEvent.clientX;\n      newRectangle.startY = mouseDownEvent.clientY;\n      newRectangle.color = this.drawColor;\n\n      return mouseMove.pipe(\n        map((mouseMoveEvent: MouseEvent) => {\n          newRectangle.width = mouseMoveEvent.clientX - mouseDownEvent.clientX;\n          newRectangle.height = mouseMoveEvent.clientY - mouseDownEvent.clientY;\n          return newRectangle;\n        }),\n        finalize(() => {\n          // click to draw rectangle\n          if (newRectangle.width === undefined || newRectangle.height === undefined ||\n            newRectangle.width === 0 || newRectangle.height === 0) {\n            const rect = this.drawTempCanvasRectangle(mouseDownEvent);\n            if (rect) { this.rectangles.push(rect); }\n          } else {\n            // drag to draw rectangle\n            if (newRectangle.height < 0) {\n              newRectangle.startY = newRectangle.startY + newRectangle.height;\n              newRectangle.height = Math.abs(newRectangle.height);\n            }\n            if (newRectangle.width < 0) {\n              newRectangle.startX = newRectangle.startX + newRectangle.width;\n              newRectangle.width = Math.abs(newRectangle.width);\n            }\n            this.rectangles.push(newRectangle);\n          }\n          this.drawPersistCanvasRectangles();\n          this.autoDrawRect(mouseMove);\n          this.isDrawingRect = false;\n        }),\n        takeUntil(mouseUp));\n    }));\n\n    this.manuallyDrawRect$ = mouseDrag.subscribe(\n      (rec) => {\n        this.drawPersistCanvasRectangles();\n        this.drawRectangle(rec);\n      }\n    );\n  }\n\n  private autoDrawRect(mouseMove: Observable<Event>): void {\n    this.autoDrawRect$ = mouseMove.subscribe({\n      next: (mouseMoveEvent: MouseEvent) => {\n        this.drawPersistCanvasRectangles();\n        this.drawTempCanvasRectangle(mouseMoveEvent);\n      },\n      error: err => console.error('something wrong occurred: ' + err),\n    });\n  }\n\n  private drawPersistCanvasRectangles() {\n    this.drawContainerRect();\n    this.rectangles.forEach(tmpRect => {\n      this.drawRectangle(tmpRect);\n    });\n  }\n\n  private drawTempCanvasRectangle(event: MouseEvent) {\n    let rectangle: Rectangle = null;\n    const clientX = event.clientX,\n      clientY = event.clientY,\n      els = document.elementsFromPoint(clientX, clientY),\n      el = els[2];\n    if ((!this.isExcludeRect(els)) && el && this.elCouldBeHighlighted.indexOf(el.nodeName.toLowerCase()) > -1) {\n      rectangle = new Rectangle();\n      const rect = el.getBoundingClientRect();\n      this.drawCanvas.style.cursor = 'pointer';\n\n      Object.assign(rectangle, {\n        startX: rect.left,\n        startY: rect.top,\n        width: rect.width,\n        height: rect.height,\n        color: this.drawColor\n      });\n      this.drawRectangle(rectangle);\n    } else {\n      this.drawCanvas.style.cursor = 'crosshair';\n    }\n    return rectangle;\n  }\n\n  public closeRect(index: number) {\n    this.rectangles.splice(index, 1);\n    this.drawPersistCanvasRectangles();\n  }\n\n  private isExcludeRect(elements: Element[]): boolean {\n    const result = elements.some(el => {\n      return el.getAttribute('exclude-rect') === 'true';\n    });\n    return result;\n  }\n}\n","<div class=\"dialog\" *ngIf=\"!showToolbar\" data-html2canvas-ignore=\"true\">\n  <div class=\"dialog-title\">\n    <div class=\"title-font\">\n      {{vars['title']}}\n    </div>\n  </div>\n  <div class=\"dialog-content\">\n    <div class=\"description-tips\">\n      <div *ngIf=\"feedback.description==''\">{{vars['placeholder']}}</div>\n    </div>\n    <textarea autofocus class=\"description\" [(ngModel)]=\"feedback.description\"></textarea>\n  </div>\n  <div class=\"screenshot-checkbox\">\n    <mat-checkbox [(ngModel)]=\"includeScreenshot\" (change)=\"isIncludeScreenshot()\">{{vars['checkboxLabel']}}</mat-checkbox>\n  </div>\n\n  <div #screenshotParent class=\"screenshot-content\" (click)=\"expandDrawingBoard()\" [style.display]=\"includeScreenshot ? 'block' : 'none'\">\n    <mat-spinner class=\"loading\" [diameter]=\"30\"></mat-spinner>\n    <div></div>\n    <div class=\"screenshot-tips\" *ngIf=\"!showSpinner\">\n      <svg focusable=\"false\" aria-label=\"\" viewBox=\"0 0 24 24\">\n        <path\n          d=\"M21 17h-2.58l2.51 2.56c-.18.69-.73 1.26-1.41 1.44L17 18.5V21h-2v-6h6v2zM19 7h2v2h-2V7zm2-2h-2V3.08c1.1 0 2 .92 2 1.92zm-6-2h2v2h-2V3zm4 8h2v2h-2v-2zM9 21H7v-2h2v2zM5 9H3V7h2v2zm0-5.92V5H3c0-1 1-1.92 2-1.92zM5 17H3v-2h2v2zM9 5H7V3h2v2zm4 0h-2V3h2v2zm0 16h-2v-2h2v2zm-8-8H3v-2h2v2zm0 8.08C3.9 21.08 3 20 3 19h2v2.08z\">\n        </path>\n      </svg>\n      <span class=\"screenshot-tips-content\">{{vars['editTip']}}</span>\n    </div>\n  </div>\n\n  <mat-dialog-actions class=\"dialog-actions\" align=\"end\">\n    <button mat-button (click)=\"dialogRef.close()\" class=\"action-button\">{{vars['cancelLabel']}}</button>\n    <button mat-button (click)=\"dialogRef.close(true)\" class=\"submit-button action-button\">{{vars['sendLabel']}}</button>\n  </mat-dialog-actions>\n</div>\n<div *ngIf=\"showToolbar\" data-html2canvas-ignore=\"true\">\n  <div class=\"toolbar-tips\" *ngIf=\"showToolbarTips\">\n    {{vars['drawRectTip']}}\n  </div>\n\n  <feedback-toolbar [drawColor]=\"drawColor\" (manipulate)=\"manipulate($event)\"></feedback-toolbar>\n</div>\n<div *ngFor=\"let rectangle of rectangles; index as index\">\n  <feedback-rectangle [rectangle]=\"rectangle\" [noHover]=\"!showToolbar || isDrawingRect\" (close)=\"closeRect(index)\">\n  </feedback-rectangle>\n</div>\n<canvas id=\"draw-canvas\" class=\"drawCanvas\" [ngClass]=\"{'pointerCursor': !showToolbar}\"></canvas>\n","import { Directive, HostListener, EventEmitter, Output, Input, OnInit } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { MatDialog } from '@angular/material/dialog';\nimport { FeedbackDialogComponent } from './feedback-dialog/feedback-dialog.component';\nimport { FeedbackService } from './feedback.service';\n\n@Directive({ selector: '[feedback]' })\nexport class FeedbackDirective implements OnInit {\n  private overlay: Overlay;\n  @Input() title: string = 'Send feedback';\n  @Input() placeholder: string = 'Describe your issue or share your ideas';\n  @Input() editTip = 'Click to highlight or hide info';\n  @Input() checkboxLabel = 'Include screenshot';\n  @Input() cancelLabel = 'CANCEL';\n  @Input() sendLabel = 'SEND';\n  @Input() moveToolbarTip = 'move toolbar';\n  @Input() drawRectTip = 'Draw using yellow to highlight issues or black to hide sensitive info';\n  @Input() highlightTip = 'highlight issues';\n  @Input() hideTip = 'hide sensitive info';\n  @Input() editDoneLabel = 'DONE';\n  @Output() public send = new EventEmitter<object>();\n\n  public constructor(private dialogRef: MatDialog, private feedbackService: FeedbackService, overlay: Overlay) {\n    this.feedbackService.feedback$.subscribe(\n      (feedback) => {\n        this.send.emit(feedback);\n      }\n    );\n    this.overlay = overlay;\n  }\n\n  @HostListener('click')\n  public onClick() {\n    this.openFeedbackDialog();\n  }\n\n  public openFeedbackDialog() {\n    // this.feedbackService.initScreenshotCanvas();\n\n    this.dialogRef.open(FeedbackDialogComponent, {\n      panelClass: 'feedbackDialog',\n      backdropClass: 'dialogBackDrop',\n      disableClose: true,\n      height: 'auto',\n      width: 'auto',\n      scrollStrategy: this.overlay.scrollStrategies.reposition()\n    });\n  }\n\n  ngOnInit(): void {\n    this.feedbackService.initialVariables = {\n      title: this.title,\n      placeholder: this.placeholder,\n      editTip: this.editTip,\n      checkboxLabel: this.checkboxLabel,\n      cancelLabel: this.cancelLabel,\n      sendLabel: this.sendLabel,\n      moveToolbarTip: this.moveToolbarTip,\n      drawRectTip: this.drawRectTip,\n      highlightTip: this.highlightTip,\n      hideTip: this.hideTip,\n      editDoneLabel: this.editDoneLabel\n    };\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FeedbackDialogComponent } from './feedback-dialog/feedback-dialog.component';\nimport { FeedbackToolbarComponent } from './feedback-toolbar/feedback-toolbar.component';\nimport { FeedbackRectangleComponent } from './feedback-rectangle/feedback-rectangle.component';\nimport { FeedbackService } from './feedback.service';\nimport { FeedbackDirective } from './feedback.directive';\n\n@NgModule({\n    declarations: [\n        FeedbackDialogComponent,\n        FeedbackToolbarComponent,\n        FeedbackRectangleComponent,\n        FeedbackDirective\n    ],\n    imports: [\n        MatDialogModule,\n        MatButtonModule,\n        MatIconModule,\n        MatInputModule,\n        MatTooltipModule,\n        CommonModule,\n        FormsModule,\n        MatCheckboxModule,\n        MatProgressSpinnerModule\n    ],\n    exports: [\n        FeedbackDirective\n    ],\n    providers: [\n        FeedbackService\n    ]\n})\nexport class FeedbackModule {\n}\n","/*\n * Public API Surface of ng-feedback\n */\n\nexport { FeedbackDirective } from './lib/feedback.directive'\nexport { FeedbackModule } from './lib/feedback.module';\nexport { Feedback } from './lib/entity/feedback';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.FeedbackService","i2","i2.FeedbackService","i3","i8.FeedbackToolbarComponent","i9.FeedbackRectangleComponent"],"mappings":"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"}