UNPKG

ngx-feedback

Version:

Angular Feedback Library

132 lines 9.62 kB
/** * @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==