ng-feedback
Version:
An angular directive for sending feedback featuring Angular 6, Html2canvas, Angular Material, Rxjs, inspired by Google send feedback, based on angular-cli.
154 lines (153 loc) • 11.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import html2canvas from 'html2canvas';
import { Subject } from 'rxjs';
var FeedbackService = /** @class */ (function () {
function FeedbackService() {
this.initialVariables = {};
this.highlightedColor = 'yellow';
this.hiddenColor = 'black';
this.screenshotCanvasSource = new Subject();
this.screenshotCanvas$ = this.screenshotCanvasSource.asObservable();
this.feedbackSource = new Subject();
this.feedback$ = this.feedbackSource.asObservable();
this.isDraggingToolbarSource = new Subject();
this.isDraggingToolbar$ = this.isDraggingToolbarSource.asObservable();
}
/**
* @return {?}
*/
FeedbackService.prototype.initScreenshotCanvas = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var that = this;
/** @type {?} */
var body = document.body;
html2canvas(body, {
logging: false,
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight,
x: document.documentElement.scrollLeft,
y: document.documentElement.scrollTop,
allowTaint: true
}).then(function (bodyCanvas) {
_this.screenshotCanvasSource.next(bodyCanvas);
});
};
/**
* @param {?} canvas
* @return {?}
*/
FeedbackService.prototype.setCanvas = /**
* @param {?} canvas
* @return {?}
*/
function (canvas) {
this.screenshotCanvasSource.next(canvas);
};
/**
* @param {?} feedback
* @return {?}
*/
FeedbackService.prototype.setFeedback = /**
* @param {?} feedback
* @return {?}
*/
function (feedback) {
this.feedbackSource.next(feedback);
};
/**
* @param {?} isDragging
* @return {?}
*/
FeedbackService.prototype.setIsDraggingToolbar = /**
* @param {?} isDragging
* @return {?}
*/
function (isDragging) {
this.isDraggingToolbarSource.next(isDragging);
};
/**
* @param {?} canvas
* @return {?}
*/
FeedbackService.prototype.getImgEle = /**
* @param {?} canvas
* @return {?}
*/
function (canvas) {
/** @type {?} */
var img = canvas.toDataURL('image/png');
/** @type {?} */
var imageEle = document.createElement('img');
imageEle.setAttribute('src', img);
Object.assign(imageEle.style, {
position: 'absolute',
top: '50%',
right: '0',
left: '0',
margin: '0 auto',
maxHeight: '100%',
maxWidth: '100%',
transform: 'translateY(-50%)'
});
return imageEle;
};
/**
* @return {?}
*/
FeedbackService.prototype.hideBackDrop = /**
* @return {?}
*/
function () {
/** @type {?} */
var dialogBackDrop = /** @type {?} */ (document.getElementsByClassName('dialogBackDrop')[0]);
dialogBackDrop.style.backgroundColor = 'initial';
};
/**
* @return {?}
*/
FeedbackService.prototype.showBackDrop = /**
* @return {?}
*/
function () {
/** @type {?} */
var dialogBackDrop = /** @type {?} */ (document.getElementsByClassName('dialogBackDrop')[0]);
if (!dialogBackDrop.getAttribute('data-html2canvas-ignore')) {
dialogBackDrop.setAttribute('data-html2canvas-ignore', 'true');
}
dialogBackDrop.style.backgroundColor = 'rgba(0, 0, 0, .288)';
};
FeedbackService.decorators = [
{ type: Injectable }
];
return FeedbackService;
}());
export { FeedbackService };
if (false) {
/** @type {?} */
FeedbackService.prototype.initialVariables;
/** @type {?} */
FeedbackService.prototype.highlightedColor;
/** @type {?} */
FeedbackService.prototype.hiddenColor;
/** @type {?} */
FeedbackService.prototype.screenshotCanvasSource;
/** @type {?} */
FeedbackService.prototype.screenshotCanvas$;
/** @type {?} */
FeedbackService.prototype.feedbackSource;
/** @type {?} */
FeedbackService.prototype.feedback$;
/** @type {?} */
FeedbackService.prototype.isDraggingToolbarSource;
/** @type {?} */
FeedbackService.prototype.isDraggingToolbar$;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZGJhY2suc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWZlZWRiYWNrLyIsInNvdXJjZXMiOlsibGliL2ZlZWRiYWNrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxXQUFXLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxPQUFPLEVBQWEsTUFBTSxNQUFNLENBQUM7OztnQ0FLTCxFQUFFO2dDQUNWLFFBQVE7MkJBQ2IsT0FBTztzQ0FDSyxJQUFJLE9BQU8sRUFBcUI7aUNBQ1AsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRTs4QkFFM0UsSUFBSSxPQUFPLEVBQVk7eUJBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUU7dUNBRXpDLElBQUksT0FBTyxFQUFXO2tDQUNQLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUU7Ozs7O0lBR3JGLDhDQUFvQjs7Ozs7O1FBQ3pCLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQzs7UUFDbEIsSUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUMzQixXQUFXLENBQUMsSUFBSSxFQUFFO1lBQ2hCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsS0FBSyxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVztZQUMzQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZO1lBQzdDLENBQUMsRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLFVBQVU7WUFDdEMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUztZQUNyQyxVQUFVLEVBQUcsSUFBSTtTQUNsQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUEsVUFBVTtZQUNoQixLQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzlDLENBQUMsQ0FBQzs7Ozs7O0lBR0UsbUNBQVM7Ozs7Y0FBQyxNQUF5QjtRQUN4QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDOzs7Ozs7SUFHcEMscUNBQVc7Ozs7Y0FBQyxRQUFrQjtRQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs7Ozs7O0lBRzlCLDhDQUFvQjs7OztjQUFDLFVBQW1CO1FBQzdDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Ozs7OztJQUd6QyxtQ0FBUzs7OztjQUFDLE1BQU07O1FBQ3JCLElBQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQ007O1FBRC9DLElBQ00sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFO1lBQzVCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLEdBQUcsRUFBRSxLQUFLO1lBQ1YsS0FBSyxFQUFFLEdBQUc7WUFDVixJQUFJLEVBQUUsR0FBRztZQUNULE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFNBQVMsRUFBRSxrQkFBa0I7U0FDOUIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxRQUFRLENBQUM7Ozs7O0lBR1gsc0NBQVk7Ozs7O1FBQ2pCLElBQU0sY0FBYyxxQkFBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQWdCLEVBQUM7UUFDM0YsY0FBYyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDOzs7OztJQUc1QyxzQ0FBWTs7Ozs7UUFDakIsSUFBTSxjQUFjLHFCQUFHLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBZ0IsRUFBQztRQUMzRixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFO1lBQzNELGNBQWMsQ0FBQyxZQUFZLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDaEU7UUFDRCxjQUFjLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQzs7O2dCQXJFaEUsVUFBVTs7MEJBTFg7O1NBTWEsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBodG1sMmNhbnZhcyBmcm9tICdodG1sMmNhbnZhcyc7XHJcbmltcG9ydCB7U3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7RmVlZGJhY2t9IGZyb20gJy4vZW50aXR5L2ZlZWRiYWNrJzsgLy8gaW1wb3J0IE9ic2VydmFibGUgdG8gc29sdmUgYnVpbGQgaXNzdWVcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEZlZWRiYWNrU2VydmljZSB7XHJcbiAgcHVibGljIGluaXRpYWxWYXJpYWJsZXM6IG9iamVjdCA9IHt9O1xyXG4gIHB1YmxpYyBoaWdobGlnaHRlZENvbG9yID0gJ3llbGxvdyc7XHJcbiAgcHVibGljIGhpZGRlbkNvbG9yID0gJ2JsYWNrJztcclxuICBwcml2YXRlIHNjcmVlbnNob3RDYW52YXNTb3VyY2UgPSBuZXcgU3ViamVjdDxIVE1MQ2FudmFzRWxlbWVudD4oKTtcclxuICBwdWJsaWMgc2NyZWVuc2hvdENhbnZhcyQ6IE9ic2VydmFibGU8SFRNTENhbnZhc0VsZW1lbnQ+ID0gdGhpcy5zY3JlZW5zaG90Q2FudmFzU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIGZlZWRiYWNrU291cmNlID0gbmV3IFN1YmplY3Q8RmVlZGJhY2s+KCk7XHJcbiAgcHVibGljIGZlZWRiYWNrJDogT2JzZXJ2YWJsZTxGZWVkYmFjaz4gPSB0aGlzLmZlZWRiYWNrU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIGlzRHJhZ2dpbmdUb29sYmFyU291cmNlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBwdWJsaWMgaXNEcmFnZ2luZ1Rvb2xiYXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5pc0RyYWdnaW5nVG9vbGJhclNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcblxyXG4gIHB1YmxpYyBpbml0U2NyZWVuc2hvdENhbnZhcygpIHtcclxuICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xyXG4gICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XHJcbiAgICBodG1sMmNhbnZhcyhib2R5LCB7XHJcbiAgICAgIGxvZ2dpbmc6IGZhbHNlLFxyXG4gICAgICB3aWR0aDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLFxyXG4gICAgICBoZWlnaHQ6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsXHJcbiAgICAgIHg6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0LFxyXG4gICAgICB5OiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLFxyXG4gICAgICBhbGxvd1RhaW50IDogdHJ1ZVxyXG4gICAgfSkudGhlbihib2R5Q2FudmFzID0+IHtcclxuICAgICAgdGhpcy5zY3JlZW5zaG90Q2FudmFzU291cmNlLm5leHQoYm9keUNhbnZhcyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDYW52YXMoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5zY3JlZW5zaG90Q2FudmFzU291cmNlLm5leHQoY2FudmFzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRGZWVkYmFjayhmZWVkYmFjazogRmVlZGJhY2spOiB2b2lkIHtcclxuICAgIHRoaXMuZmVlZGJhY2tTb3VyY2UubmV4dChmZWVkYmFjayk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0SXNEcmFnZ2luZ1Rvb2xiYXIoaXNEcmFnZ2luZzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0RyYWdnaW5nVG9vbGJhclNvdXJjZS5uZXh0KGlzRHJhZ2dpbmcpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEltZ0VsZShjYW52YXMpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBjb25zdCBpbWcgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKSxcclxuICAgICAgICAgIGltYWdlRWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XHJcbiAgICBpbWFnZUVsZS5zZXRBdHRyaWJ1dGUoJ3NyYycsIGltZyk7XHJcbiAgICBPYmplY3QuYXNzaWduKGltYWdlRWxlLnN0eWxlLCB7XHJcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxyXG4gICAgICB0b3A6ICc1MCUnLFxyXG4gICAgICByaWdodDogJzAnLFxyXG4gICAgICBsZWZ0OiAnMCcsXHJcbiAgICAgIG1hcmdpbjogJzAgYXV0bycsXHJcbiAgICAgIG1heEhlaWdodDogJzEwMCUnLFxyXG4gICAgICBtYXhXaWR0aDogJzEwMCUnLFxyXG4gICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC01MCUpJ1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaW1hZ2VFbGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGlkZUJhY2tEcm9wKCkge1xyXG4gICAgY29uc3QgZGlhbG9nQmFja0Ryb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkaWFsb2dCYWNrRHJvcCcpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgZGlhbG9nQmFja0Ryb3Auc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ2luaXRpYWwnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dCYWNrRHJvcCgpIHtcclxuICAgIGNvbnN0IGRpYWxvZ0JhY2tEcm9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZGlhbG9nQmFja0Ryb3AnKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICghZGlhbG9nQmFja0Ryb3AuZ2V0QXR0cmlidXRlKCdkYXRhLWh0bWwyY2FudmFzLWlnbm9yZScpKSB7XHJcbiAgICAgIGRpYWxvZ0JhY2tEcm9wLnNldEF0dHJpYnV0ZSgnZGF0YS1odG1sMmNhbnZhcy1pZ25vcmUnLCAndHJ1ZScpO1xyXG4gICAgfVxyXG4gICAgZGlhbG9nQmFja0Ryb3Auc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3JnYmEoMCwgMCwgMCwgLjI4OCknO1xyXG4gIH1cclxufVxyXG4iXX0=