ngx-capture
Version:
Screen capture library for Angular
46 lines • 5.81 kB
JavaScript
import { Injectable } from '@angular/core';
import html2canvas from 'html2canvas';
import { from, of } from 'rxjs';
import * as i0 from "@angular/core";
export class NgxCaptureService {
getImage(screen, fullCapture, cropDimensions) {
let options = {
logging: false,
useCORS: true,
scale: 1
};
if (!fullCapture && cropDimensions.width > 10 && cropDimensions.height > 10) {
options = { ...options, ...cropDimensions };
}
else if (!fullCapture) {
return of(null);
}
return from(html2canvas(screen, options)
.then((canv) => {
return canv.toDataURL('image/png');
}, (err) => {
throw new Error(err);
})
.catch((res) => {
throw new Error(res);
}));
}
downloadImage(img) {
const element = document.createElement('a');
element.setAttribute('href', img);
element.setAttribute('download', 'capture');
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
}
NgxCaptureService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgxCaptureService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
NgxCaptureService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgxCaptureService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgxCaptureService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNhcHR1cmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jYXB0dXJlL3NyYy9saWIvbmd4LWNhcHR1cmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sV0FBVyxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUMsSUFBSSxFQUFjLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFZMUMsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixRQUFRLENBQUMsTUFBbUIsRUFBRSxXQUFxQixFQUFFLGNBQStCO1FBQ2xGLElBQUksT0FBTyxHQUFHO1lBQ1osT0FBTyxFQUFFLEtBQUs7WUFDZCxPQUFPLEVBQUUsSUFBSTtZQUNiLEtBQUssRUFBRSxDQUFDO1NBQ1QsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLElBQUksY0FBYyxDQUFDLEtBQUssR0FBRyxFQUFFLElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUU7WUFDM0UsT0FBTyxHQUFHLEVBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxjQUFjLEVBQUMsQ0FBQztTQUMzQzthQUFNLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDdkIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakI7UUFFRCxPQUFPLElBQUksQ0FDVCxXQUFXLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQzthQUN6QixJQUFJLENBQ0gsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyQyxDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUNGO2FBQ0EsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQVc7UUFDdkIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsQyxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM1QyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OzhHQXRDVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgaHRtbDJjYW52YXMgZnJvbSAnaHRtbDJjYW52YXMnO1xyXG5pbXBvcnQge2Zyb20sIE9ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3JvcERpbWVuc2lvbnMge1xyXG4gIHg6IG51bWJlcjtcclxuICB5OiBudW1iZXI7XHJcbiAgd2lkdGg6IG51bWJlcjtcclxuICBoZWlnaHQ6IG51bWJlcjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5neENhcHR1cmVTZXJ2aWNlIHtcclxuICBnZXRJbWFnZShzY3JlZW46IEhUTUxFbGVtZW50LCBmdWxsQ2FwdHVyZT86IGJvb2xlYW4sIGNyb3BEaW1lbnNpb25zPzogQ3JvcERpbWVuc2lvbnMpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIGxvZ2dpbmc6IGZhbHNlLFxyXG4gICAgICB1c2VDT1JTOiB0cnVlLFxyXG4gICAgICBzY2FsZTogMVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoIWZ1bGxDYXB0dXJlICYmIGNyb3BEaW1lbnNpb25zLndpZHRoID4gMTAgJiYgY3JvcERpbWVuc2lvbnMuaGVpZ2h0ID4gMTApIHtcclxuICAgICAgb3B0aW9ucyA9IHsuLi5vcHRpb25zLCAuLi5jcm9wRGltZW5zaW9uc307XHJcbiAgICB9IGVsc2UgaWYgKCFmdWxsQ2FwdHVyZSkge1xyXG4gICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZyb20oXHJcbiAgICAgIGh0bWwyY2FudmFzKHNjcmVlbiwgb3B0aW9ucylcclxuICAgICAgICAudGhlbihcclxuICAgICAgICAgIChjYW52KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBjYW52LnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgICAgLmNhdGNoKChyZXMpID0+IHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXMpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRJbWFnZShpbWc6IHN0cmluZykge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdocmVmJywgaW1nKTtcclxuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsICdjYXB0dXJlJyk7XHJcbiAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xyXG4gICAgZWxlbWVudC5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTtcclxuICB9XHJcbn1cclxuIl19