ngx-feedback
Version:
Angular Feedback Library
132 lines • 9.62 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, RendererFactory2 } from '@angular/core';
import { fromEvent, Subject } from 'rxjs';
import html2canvas from 'html2canvas';
import * as i0 from "@angular/core";
var SelectorsService = /** @class */ (function () {
function SelectorsService(rendererFactory) {
this.rendererFactory = rendererFactory;
this.preview = new Subject();
this.subs = [];
this.renderer = this.rendererFactory.createRenderer(null, null);
}
/**
* @return {?}
*/
SelectorsService.prototype.pageScreenshot = /**
* @return {?}
*/
function () {
this.screenshot(document.body);
};
/**
* @return {?}
*/
SelectorsService.prototype.elementsHighlight = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var element;
/** @type {?} */
var elements = [];
this.source = fromEvent(document, 'mousemove').subscribe((/**
* @param {?} ev
* @return {?}
*/
function (ev) {
if (element) {
_this.renderer.removeClass(element, 'ngx-feedback__highlight');
}
element = document.elementFromPoint(ev.x, ev.y);
if (elements.findIndex((/**
* @param {?} el
* @return {?}
*/
function (el) { return el === element; })) === -1) {
elements.push(element);
_this.subs.push(fromEvent(element, 'click').subscribe((/**
* @param {?} evt
* @return {?}
*/
function (evt) {
evt.stopPropagation();
_this.screenshot(element);
})));
}
_this.renderer.addClass(element, 'ngx-feedback__highlight');
}));
};
/**
* @param {?} element
* @return {?}
*/
SelectorsService.prototype.screenshot = /**
* @param {?} element
* @return {?}
*/
function (element) {
var _this = this;
/** @type {?} */
var image;
html2canvas(element).then((/**
* @param {?} canvas
* @return {?}
*/
function (canvas) {
image = ((/** @type {?} */ (canvas))).toDataURL();
_this.preview.next(image);
}));
this.renderer.removeClass(element, 'ngx-feedback__highlight');
this.clean();
};
/**
* @return {?}
*/
SelectorsService.prototype.clean = /**
* @return {?}
*/
function () {
if (this.source) {
this.source.unsubscribe();
}
this.subs.forEach((/**
* @param {?} sub
* @return {?}
*/
function (sub) { return sub.unsubscribe(); }));
};
SelectorsService.decorators = [
{ type: Injectable, args: [{ providedIn: 'root' },] }
];
/** @nocollapse */
SelectorsService.ctorParameters = function () { return [
{ type: RendererFactory2 }
]; };
/** @nocollapse */ SelectorsService.ngInjectableDef = i0.defineInjectable({ factory: function SelectorsService_Factory() { return new SelectorsService(i0.inject(i0.RendererFactory2)); }, token: SelectorsService, providedIn: "root" });
return SelectorsService;
}());
export { SelectorsService };
if (false) {
/** @type {?} */
SelectorsService.prototype.preview;
/** @type {?} */
SelectorsService.prototype.subs;
/** @type {?} */
SelectorsService.prototype.source;
/**
* @type {?}
* @private
*/
SelectorsService.prototype.renderer;
/**
* @type {?}
* @private
*/
SelectorsService.prototype.rendererFactory;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3JzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZmVlZGJhY2svIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvc2VsZWN0b3JzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sV0FBVyxNQUFNLGFBQWEsQ0FBQzs7QUFFdEM7SUFTSSwwQkFBNkIsZUFBaUM7UUFBakMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBUDlELFlBQU8sR0FBaUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN0QyxTQUFJLEdBQW1CLEVBQUUsQ0FBQztRQU90QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRSxDQUFDOzs7O0lBRUQseUNBQWM7OztJQUFkO1FBQ0ksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7OztJQUNELDRDQUFpQjs7O0lBQWpCO1FBQUEsaUJBbUJDOztZQWxCTyxPQUFnQjs7WUFDZCxRQUFRLEdBQUcsRUFBRTtRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsU0FBUzs7OztRQUFDLFVBQUMsRUFBYztZQUNwRSxJQUFJLE9BQU8sRUFBRTtnQkFDVCxLQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUseUJBQXlCLENBQUMsQ0FBQzthQUNqRTtZQUNELE9BQU8sR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsSUFBSSxRQUFRLENBQUMsU0FBUzs7OztZQUFDLFVBQUEsRUFBRSxJQUFJLE9BQUEsRUFBRSxLQUFLLE9BQU8sRUFBZCxDQUFjLEVBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDakQsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdkIsS0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ1YsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTOzs7O2dCQUFDLFVBQUMsR0FBZTtvQkFDbEQsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUN0QixLQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QixDQUFDLEVBQUMsQ0FDTCxDQUFDO2FBQ0w7WUFDRCxLQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUMvRCxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7O0lBRUQscUNBQVU7Ozs7SUFBVixVQUFXLE9BQVk7UUFBdkIsaUJBU0M7O1lBUk8sS0FBSztRQUNULFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJOzs7O1FBQUMsVUFBQSxNQUFNO1lBQzVCLEtBQUssR0FBRyxDQUFDLG1CQUFBLE1BQU0sRUFBcUIsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xELEtBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7Ozs7SUFFRCxnQ0FBSzs7O0lBQUw7UUFDSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPOzs7O1FBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxHQUFHLENBQUMsV0FBVyxFQUFFLEVBQWpCLENBQWlCLEVBQUMsQ0FBQztJQUNoRCxDQUFDOztnQkFyREosVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7OztnQkFKRixnQkFBZ0I7OzsyQkFBaEQ7Q0EwREMsQUF0REQsSUFzREM7U0FyRFksZ0JBQWdCOzs7SUFDekIsbUNBQXNDOztJQUN0QyxnQ0FBMEI7O0lBRTFCLGtDQUFxQjs7Ozs7SUFFckIsb0NBQTRCOzs7OztJQUVoQiwyQ0FBa0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24sIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IGh0bWwyY2FudmFzIGZyb20gJ2h0bWwyY2FudmFzJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3RvcnNTZXJ2aWNlIHtcclxuICAgIHByZXZpZXc6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICBzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAgIHNvdXJjZTogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5Mikge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICBwYWdlU2NyZWVuc2hvdCgpIHtcclxuICAgICAgICB0aGlzLnNjcmVlbnNob3QoZG9jdW1lbnQuYm9keSk7XHJcbiAgICB9XHJcbiAgICBlbGVtZW50c0hpZ2hsaWdodCgpIHtcclxuICAgICAgICBsZXQgZWxlbWVudDogRWxlbWVudDtcclxuICAgICAgICBjb25zdCBlbGVtZW50cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuc291cmNlID0gZnJvbUV2ZW50KGRvY3VtZW50LCAnbW91c2Vtb3ZlJykuc3Vic2NyaWJlKChldjogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50LCAnbmd4LWZlZWRiYWNrX19oaWdobGlnaHQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldi54LCBldi55KTtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzLmZpbmRJbmRleChlbCA9PiBlbCA9PT0gZWxlbWVudCkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgZnJvbUV2ZW50KGVsZW1lbnQsICdjbGljaycpLnN1YnNjcmliZSgoZXZ0OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5zaG90KGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZWxlbWVudCwgJ25neC1mZWVkYmFja19faGlnaGxpZ2h0Jyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2NyZWVuc2hvdChlbGVtZW50OiBhbnkpIHtcclxuICAgICAgICBsZXQgaW1hZ2U7XHJcbiAgICAgICAgaHRtbDJjYW52YXMoZWxlbWVudCkudGhlbihjYW52YXMgPT4ge1xyXG4gICAgICAgICAgICBpbWFnZSA9IChjYW52YXMgYXMgSFRNTENhbnZhc0VsZW1lbnQpLnRvRGF0YVVSTCgpO1xyXG4gICAgICAgICAgICB0aGlzLnByZXZpZXcubmV4dChpbWFnZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50LCAnbmd4LWZlZWRiYWNrX19oaWdobGlnaHQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5jbGVhbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFuKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNvdXJjZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNvdXJjZS51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN1YnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==