🚀 Big News:Socket Has Acquired Secure Annex.Learn More
Socket
Book a DemoSign in
Socket

ngx-print-element

Package Overview
Dependencies
Maintainers
1
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngx-print-element - npm Package Compare versions

Package version was removed
This package version has been unpublished, mostly likely due to security reasons
Comparing version
2.1.3
to
2.1.4-beta.1
+4
-4
esm2022/lib/ngx-print-element.component.mjs

@@ -17,7 +17,7 @@ import { Component } from '@angular/core';

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementComponent, deps: [{ token: i1.NgxPrintElementService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgxPrintElementComponent, selector: "ngx-print-element", exportAs: ["element"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementComponent, deps: [{ token: i1.NgxPrintElementService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgxPrintElementComponent, selector: "ngx-print-element", exportAs: ["element"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
}
export { NgxPrintElementComponent };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementComponent, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementComponent, decorators: [{
type: Component,

@@ -30,2 +30,2 @@ args: [{

}], ctorParameters: function () { return [{ type: i1.NgxPrintElementService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXByaW50LWVsZW1lbnQvc3JjL2xpYi9uZ3gtcHJpbnQtZWxlbWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQzs7O0FBSXRELE1BS2Esd0JBQXdCO0lBRW5DLFlBQW9CLE1BQThCO1FBQTlCLFdBQU0sR0FBTixNQUFNLENBQXdCO0lBQUksQ0FBQztJQUV2RDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxVQUEyQixFQUFFLE1BQWU7UUFDdkQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0MsQ0FBQzs4R0FaVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixnRkFIekIsMkJBQTJCOztTQUcxQix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFMcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxRQUFRLEVBQUUsU0FBUztpQkFDcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25maWcsIE5neFByaW50RWxlbWVudFNlcnZpY2UgfSBmcm9tICcuL25neC1wcmludC1lbGVtZW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtcHJpbnQtZWxlbWVudCcsXHJcbiAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcclxuICBleHBvcnRBczogJ2VsZW1lbnQnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hQcmludEVsZW1lbnRDb21wb25lbnQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByaW50czogTmd4UHJpbnRFbGVtZW50U2VydmljZSkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByaW50XHJcbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgXHJcbiAgICogQHBhcmFtIGNvbmZpZyBcclxuICAgKiBAcmV0dXJucyBcclxuICAgKi9cclxuICBwdWJsaWMgcHJpbnQoZWxlbWVudFJlZjogRWxlbWVudFJlZjxhbnk+LCBjb25maWc/OiBDb25maWcpOiBTdWJqZWN0PGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJpbnRzLnByaW50KGVsZW1lbnRSZWYsIGNvbmZpZyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXByaW50LWVsZW1lbnQvc3JjL2xpYi9uZ3gtcHJpbnQtZWxlbWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQzs7O0FBSXRELE1BS2Esd0JBQXdCO0lBRW5DLFlBQW9CLE1BQThCO1FBQTlCLFdBQU0sR0FBTixNQUFNLENBQXdCO0lBQUksQ0FBQztJQUV2RDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxVQUEyQixFQUFFLE1BQWU7UUFDdkQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0MsQ0FBQzsrR0FaVSx3QkFBd0I7bUdBQXhCLHdCQUF3QixnRkFIekIsMkJBQTJCOztTQUcxQix3QkFBd0I7NEZBQXhCLHdCQUF3QjtrQkFMcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxRQUFRLEVBQUUsU0FBUztpQkFDcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25maWcsIE5neFByaW50RWxlbWVudFNlcnZpY2UgfSBmcm9tICcuL25neC1wcmludC1lbGVtZW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtcHJpbnQtZWxlbWVudCcsXHJcbiAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcclxuICBleHBvcnRBczogJ2VsZW1lbnQnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hQcmludEVsZW1lbnRDb21wb25lbnQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByaW50czogTmd4UHJpbnRFbGVtZW50U2VydmljZSkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByaW50XHJcbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgXHJcbiAgICogQHBhcmFtIGNvbmZpZyBcclxuICAgKiBAcmV0dXJucyBcclxuICAgKi9cclxuICBwdWJsaWMgcHJpbnQoZWxlbWVudFJlZjogRWxlbWVudFJlZjxhbnk+LCBjb25maWc/OiBDb25maWcpOiBTdWJqZWN0PGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJpbnRzLnByaW50KGVsZW1lbnRSZWYsIGNvbmZpZyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==

@@ -12,7 +12,7 @@ import { Directive } from '@angular/core';

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementDirective, deps: [{ token: i0.Renderer2 }, { token: i1.NgxPrintElementService }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: NgxPrintElementDirective, selector: "[ngxPrintElement]", ngImport: i0 }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementDirective, deps: [{ token: i0.Renderer2 }, { token: i1.NgxPrintElementService }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: NgxPrintElementDirective, selector: "[ngxPrintElement]", ngImport: i0 }); }
}
export { NgxPrintElementDirective };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementDirective, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementDirective, decorators: [{
type: Directive,

@@ -23,2 +23,2 @@ args: [{

}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.NgxPrintElementService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXByaW50LWVsZW1lbnQvc3JjL2xpYi9uZ3gtcHJpbnQtZWxlbWVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7OztBQUc3RCxNQUdhLHdCQUF3QjtJQUVuQyxZQUNVLFFBQW1CLEVBQ25CLE1BQThCO1FBRDlCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7SUFFeEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUM7OEdBVlUsd0JBQXdCO2tHQUF4Qix3QkFBd0I7O1NBQXhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ3hQcmludEVsZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtcHJpbnQtZWxlbWVudC5zZXJ2aWNlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW25neFByaW50RWxlbWVudF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hQcmludEVsZW1lbnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgcHJpbnRzOiBOZ3hQcmludEVsZW1lbnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucHJpbnRzLnJlbmRlcmVyID0gdGhpcy5yZW5kZXJlcjtcclxuICB9XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXByaW50LWVsZW1lbnQvc3JjL2xpYi9uZ3gtcHJpbnQtZWxlbWVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7OztBQUc3RCxNQUdhLHdCQUF3QjtJQUVuQyxZQUNVLFFBQW1CLEVBQ25CLE1BQThCO1FBRDlCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7SUFFeEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUM7K0dBVlUsd0JBQXdCO21HQUF4Qix3QkFBd0I7O1NBQXhCLHdCQUF3Qjs0RkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ3hQcmludEVsZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtcHJpbnQtZWxlbWVudC5zZXJ2aWNlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW25neFByaW50RWxlbWVudF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hQcmludEVsZW1lbnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgcHJpbnRzOiBOZ3hQcmludEVsZW1lbnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucHJpbnRzLnJlbmRlcmVyID0gdGhpcy5yZW5kZXJlcjtcclxuICB9XHJcbn1cclxuIl19

@@ -243,2 +243,3 @@ const defaultOptions = {

const onPrintFinished = (printed) => {
// window.close();
// Clear visibility: hidden

@@ -268,2 +269,2 @@ bodyEl && (bodyEl.style.visibility = '');

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXByaW50LWVsZW1lbnQvc3JjL2xpYi9uZ3gtcHJpbnQtZWxlbWVudC5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxjQUFjLEdBQVc7SUFDN0IsUUFBUSxFQUFFLFFBQVE7SUFDbEIsU0FBUyxFQUFFLFVBQVU7SUFDckIsU0FBUyxFQUFFLEVBQUU7SUFDYixjQUFjLEVBQUUsRUFBRTtJQUNsQixlQUFlLEVBQUUsRUFBRTtJQUNuQixXQUFXLEVBQUUsRUFBRTtJQUNmLE1BQU0sRUFBRSxFQUFFO0lBQ1YsUUFBUSxFQUFFLEVBQUU7Q0FDYixDQUFDO0FBU0Y7OztHQUdHO0FBQ0gsTUFBTSxJQUFJLEdBQUcsR0FBTyxFQUFFO0lBQ3BCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUQsTUFBTSxZQUFZLEdBQUcscUJBQXFCLEVBQUUsRUFBRSxDQUFDO0lBQy9DLE1BQU0sYUFBYSxHQUFHLDBCQUEwQixFQUFFLEVBQUUsQ0FBQztJQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsQ0FBQztBQUMvQyxDQUFDLENBQUE7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUFDLEVBQU0sRUFBRSxFQUFFO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFD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dkMsMkJBQTJCO1lBQzNCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUYsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDO1FBRUYsUUFBUTtRQUNSLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNoQyxNQUFNLENBQUMsYUFBYSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlELE1BQU0sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDOUQ7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDeEI7QUFDSCxDQUFDLENBQUE7QUFHRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQWdCLEVBQUUsSUFBUyxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsRUFBRTtJQUN2RSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgUmVuZGVyZXIyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gXCIuL25neC1wcmludC1lbGVtZW50LnNlcnZpY2VcIjtcclxuXHJcbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBDb25maWcgPSB7XHJcbiAgaHRtbFR5cGU6ICdkb21PYmonLFxyXG4gIHByaW50TW9kZTogJ3RlbXBsYXRlJyxcclxuICBwYWdlVGl0bGU6ICcnLFxyXG4gIHRlbXBsYXRlU3RyaW5nOiAnJyxcclxuICBwb3B1cFByb3BlcnRpZXM6ICcnLFxyXG4gIHN0eWxlc2hlZXRzOiBbXSxcclxuICBzdHlsZXM6IFtdLFxyXG4gIGJhc2VIcmVmOiAnJ1xyXG59O1xyXG5cclxuXHJcbmludGVyZmFjZSBfSCB7XHJcbiAgaGVhZDogSFRNTEhlYWRFbGVtZW50O1xyXG4gIGNsYXNzTmFtZVVJRDogc3RyaW5nO1xyXG4gIGlkTmFtZUhlYWRVSUQ6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIEhFQUQgRWxlbWVudFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmNvbnN0IEhFQUQgPSAoKTogX0ggPT4ge1xyXG4gIGNvbnN0IGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xyXG4gIGNvbnN0IElEID0gKE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk5OTk5OTkpKS50b1N0cmluZygpO1xyXG4gIGNvbnN0IGNsYXNzTmFtZVVJRCA9IGBuZ3gtcHJpbnQtZWxlbWVudC0ke0lEfWA7XHJcbiAgY29uc3QgaWROYW1lSGVhZFVJRCA9IGBuZ3gtcHJpbnQtZWxlbWVudC1oZWFkLSR7SUR9YDtcclxuICByZXR1cm4geyBoZWFkLCBjbGFzc05hbWVVSUQsIGlkTmFtZUhlYWRVSUQgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFERF9TVFlMRV9IRUFEXHJcbiAqIEBwYXJhbSBfSCBcclxuICovXHJcbmNvbnN0IEFERF9TVFlMRV9IRUFEID0gKF9IOiBfSCkgPT4ge1xyXG4gIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICBzdHlsZS5pbm5lckhUTUwgPSBCVUlMRF9TVFlMRShfSCk7XHJcbiAgc3R5bGUuaWQgPSBgJHtfSC5pZE5hbWVIZWFkVUlEfWA7XHJcbiAgX0guaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCVUlMRF9TVFlMRVxyXG4gKiBAcGFyYW0gX0ggXHJcbiAqIEByZXR1cm5zIFxyXG4gKi9cclxuY29uc3QgQlVJTERfU1RZTEUgPSAoX0g6IF9IKTogc3RyaW5nID0+IHtcclxuICByZXR1cm4gYFxyXG4gIEBtZWRpYSBwcmludCB7XHJcbiAgICAuJHtfSC5jbGFzc05hbWVVSUR9LFxyXG4gICAgLiR7X0guY2xhc3NOYW1lVUlEfSAqIHtcclxuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gICAgfVxyXG4gICAgLiR7X0guY2xhc3NOYW1lVUlEfSB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgfVxyXG4gICAgLiR7X0guY2xhc3NOYW1lVUlEfSAucHJpbnQtbm9uZSB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gICAgLyogLS0tLS0gQXV0aG9yOiBEYWlESCAtLS0tLSAqL1xyXG4gICAgLyogQ29weXJpZ2h0IChDKSAyMDIyIC0gJHtuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCl9ICovXHJcbiAgfWBcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSRU1PVkVfU1RZTEVfSEVBRFxyXG4gKiBAcGFyYW0gX0ggXHJcbiAqL1xyXG5jb25zdCBSRU1PVkVfU1RZTEVfSEVBRCA9IChfSDogX0gpID0+IHtcclxuICBjb25zdCBzdHlsZVRvUmVtb3ZlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoX0guaWROYW1lSGVhZFVJRCk7XHJcbiAgaWYgKHN0eWxlVG9SZW1vdmUpIHtcclxuICAgIF9ILmhlYWQucmVtb3ZlQ2hpbGQoc3R5bGVUb1JlbW92ZSk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogZ2V0QmFzZUhyZWZcclxuICogQHBhcmFtIG9wdGlvbnMgXHJcbiAqIEByZXR1cm5zIFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGdldEJhc2VIcmVmID0gKG9wdGlvbnM6IENvbmZpZykgPT4ge1xyXG4gIGNvbnN0IHBvcnQgPSAod2luZG93LmxvY2F0aW9uLnBvcnQpID8gYDoke3dpbmRvdy5sb2NhdGlvbi5wb3J0fWAgOiAnJztcclxuICBjb25zdCBidWlsZFVSTCA9IGAke3dpbmRvdy5sb2NhdGlvbi5wcm90b2NvbH0vLyR7d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lfSR7cG9ydH0ke3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX1gO1xyXG4gIGNvbnN0IGZpbmFsVVJMID0gb3B0aW9ucy5iYXNlSHJlZiA/IG9wdGlvbnMuYmFzZUhyZWYgOiBidWlsZFVSTDtcclxuICByZXR1cm4gZmluYWxVUkw7XHJcbn07XHJcblxyXG4vKipcclxuICogZ2V0TWFya3VwXHJcbiAqIHByaW50LWh0bWwtZWxlbWVudFxyXG4gKiBAcGFyYW0gZWxlbWVudCBcclxuICogQHBhcmFtIG9wdGlvbnMgXHJcbiAqIEBwYXJhbSBfSCBcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZ2V0TWFya3VwID0gKGVsZW1lbnQ6IGFueSwgb3B0aW9uczogQ29uZmlnLCBfSDogX0gpID0+IHtcclxuICBjb25zdCB0ZW1wbGF0ZSA9IG9wdGlvbnMudGVtcGxhdGVTdHJpbmc7XHJcbiAgY29uc3QgdGVtcGxhdGVSZWdleCA9IG5ldyBSZWdFeHAoL3t7XFxzKnByaW50Qm9keVxccyp9fS9naSk7XHJcbiAgbGV0IHN0eWxlc2hlZXRzO1xyXG4gIGxldCBzdHlsZXM7XHJcbiAgY29uc3QgaHRtbCA9IFtdO1xyXG5cclxuICBpZiAob3B0aW9ucy5odG1sVHlwZSA9PT0gJ2RvbU9iaicpIHtcclxuICAgIGVsZW1lbnQgPSBlbGVtZW50Lm91dGVySFRNTDtcclxuICB9XHJcblxyXG4gIGlmIChvcHRpb25zLmh0bWxUeXBlID09PSAndGV4dCcpIHtcclxuICAgIGVsZW1lbnQgPSBlbGVtZW50LmlubmVyVGV4dDtcclxuICB9XHJcblxyXG4gIGlmICh0ZW1wbGF0ZSAmJiB0ZW1wbGF0ZVJlZ2V4LnRlc3QodGVtcGxhdGUpKSB7XHJcbiAgICBlbGVtZW50ID0gdGVtcGxhdGUucmVwbGFjZSh0ZW1wbGF0ZVJlZ2V4LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGh0bWwucHVzaChgPGh0bWw+PGhlYWQ+PHRpdGxlPiR7b3B0aW9ucy5wYWdlVGl0bGUgfHwgJyd9PC90aXRsZT5gKTtcclxuXHJcbiAgLy8gSWYgc3R5bGVzaGVldCBVUkwncyBvciBsaXN0IG9mIHN0eWxlc2hlZXQgVVJMJ3MgYXJlIHNwZWNpZmllZCwgb3ZlcnJpZGUgcGFnZSBzdHlsZXNoZWV0c1xyXG4gIGlmIChvcHRpb25zLnN0eWxlc2hlZXRzKSB7XHJcbiAgICBzdHlsZXNoZWV0cyA9IEFycmF5LmlzQXJyYXkob3B0aW9ucy5zdHlsZXNoZWV0cykgPyBvcHRpb25zLnN0eWxlc2hlZXRzIDogW29wdGlvbnMuc3R5bGVzaGVldHNdO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBzdHlsZXNoZWV0cyA9IEFycmF5LnByb3RvdHlwZS5zbGljZVxyXG4gICAgICAuY2FsbChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGluaycpKVxyXG4gICAgICAubWFwKGxpbmsgPT4gbGluayk7XHJcbiAgfVxyXG5cclxuICBzdHlsZXNoZWV0cy5mb3JFYWNoKChmOiBhbnkpID0+IHtcclxuICAgIGh0bWwucHVzaChgPGxpbmsgcmVsPVwiJHtmLnJlbH1cIiBocmVmPVwiJHtmLmhyZWZ9XCI+YCk7XHJcbiAgfSk7XHJcblxyXG4gIC8vIElmIGlubGluZSBzdHlsZXMgb3IgbGlzdCBvZiBpbmxpbmUgc3R5bGVzIGFyZSBzcGVjaWZpZWQsIG92ZXJyaWRlIGlubGluZSBzdHlsZXNcclxuICBpZiAob3B0aW9ucy5zdHlsZXMpIHtcclxuICAgIHN0eWxlcyA9IEFycmF5LmlzQXJyYXkob3B0aW9ucy5zdHlsZXMpID8gWy4uLm9wdGlvbnMuc3R5bGVzLCBCVUlMRF9TVFlMRShfSCldIDogW29wdGlvbnMuc3R5bGVzICsgQlVJTERfU1RZTEUoX0gpXTtcclxuICB9IGVsc2Uge1xyXG4gICAgc3R5bGVzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlXHJcbiAgICAgIC5jYWxsKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScpKVxyXG4gICAgICAubWFwKHN0eWxlID0+IHN0eWxlLmlubmVySFRNTCk7XHJcbiAgfVxyXG5cclxuICBzdHlsZXMuZm9yRWFjaCgoc3R5bGU6IGFueSkgPT4ge1xyXG4gICAgaHRtbC5wdXNoKGA8c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+JHtzdHlsZX08L3N0eWxlPmApO1xyXG4gIH0pO1xyXG5cclxuICBodG1sLnB1c2goYDxiYXNlIGhyZWY9XCIke2dldEJhc2VIcmVmKG9wdGlvbnMpfVwiLz5gKTtcclxuICBodG1sLnB1c2goYDwvaGVhZD48Ym9keSBjbGFzcz1cIiR7X0guY2xhc3NOYW1lVUlEfVwiPmApO1xyXG4gIGh0bWwucHVzaChlbGVtZW50KTtcclxuICBodG1sLnB1c2goJzwvYm9keT48L2h0bWw+Jyk7XHJcblxyXG4gIHJldHVybiBodG1sLmpvaW4oJycpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFByaW50IHdpbmRvdy5vcGVuXHJcbiAqIEBwYXJhbSBlbGVtZW50IFxyXG4gKiBAcGFyYW0gc2VsZk9wdGlvbnMgXHJcbiAqIEBwYXJhbSBhcyBcclxuICovXHJcbmV4cG9ydCBjb25zdCBwcmludEVsZW1lbnRXaW5kb3cgPSAoZWxlbWVudDogRWxlbWVudFJlZjxhbnk+LCBzZWxmT3B0aW9ucyA9IHt9LCBhczogU3ViamVjdDxhbnk+KSA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5zZWxmT3B0aW9ucyB9O1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgX0ggPSBIRUFEKCk7XHJcblxyXG4gICAgLy8gTmV3IHdpbmRvd1xyXG4gICAgY29uc3QgcHJpbnRXaW5kb3cgPSB3aW5kb3cub3BlbignYWJvdXQ6YmxhbmsnLCAncHJpbnRFbGVtZW50V2luZG93Jywgb3B0aW9ucy5wb3B1cFByb3BlcnRpZXMpIGFzIGFueTtcclxuICAgIGNvbnN0IHByaW50RG9jdW1lbnQgPSBwcmludFdpbmRvdyAmJiBwcmludFdpbmRvdy5kb2N1bWVudCBhcyBhbnk7XHJcblxyXG4gICAgLy8gR2V0IG1hcmt1cCB0byBiZSBwcmludGVkXHJcbiAgICBjb25zdCBtYXJrdXAgPSBnZXRNYXJrdXAoY29udGFpbmVyLCBvcHRpb25zLCBfSCk7XHJcblxyXG4gICAgQUREX1NUWUxFX0hFQUQoX0gpO1xyXG5cclxuICAgIC8vIENsb3NlXHJcbiAgICBjb25zdCBvblByaW50RmluaXNoZWQgPSAocHJpbnRlZDogYW55KSA9PiB7XHJcbiAgICAgIHByaW50RG9jdW1lbnQuY2xvc2UoKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgcHJpbnRXaW5kb3cuY2xvc2UoKTtcclxuICAgICAgICBSRU1PVkVfU1RZTEVfSEVBRChfSCk7XHJcbiAgICAgIH0sIDEwMDApO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBQcmludFxyXG4gICAgcHJpbnRXaW5kb3cuZm9jdXMoKTtcclxuICAgIHByaW50RG9jdW1lbnQud3JpdGUobWFya3VwKTtcclxuICAgIG9uUHJpbnRGaW5pc2hlZChwcmludFdpbmRvdy5wcmludCgpKTtcclxuICAgIHByaW50V2luZG93Lm9uYmVmb3JlcHJpbnQgPSAoZXZlbnQ6IGFueSkgPT4gQVNfQ09NUExFVEUoYXMsIGV2ZW50KTtcclxuICAgIHByaW50V2luZG93Lm9uYWZ0ZXJwcmludCA9IChldmVudDogYW55KSA9PiBBU19DT01QTEVURShhcywgZXZlbnQpO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBBU19DT01QTEVURShhcywgZXJyb3IpO1xyXG4gIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBQcmludCBpRnJhbWVcclxuICogQHBhcmFtIGVsZW1lbnQgXHJcbiAqIEBwYXJhbSBzZWxmT3B0aW9ucyBcclxuICogQHBhcmFtIGFzIFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHByaW50SUZyYW1lID0gKGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55Piwgc2VsZk9wdGlvbnMgPSB7fSwgYXM6IFN1YmplY3Q8YW55PiwpID0+IHtcclxuICB0cnkge1xyXG4gICAgLy8gRGVjbGFyZVxyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgLi4uZGVmYXVsdE9wdGlvbnMsIC4uLnNlbGZPcHRpb25zIH07XHJcbiAgICBjb25zdCBjb250YWluZXIgPSBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBfSCA9IEhFQUQoKTtcclxuXHJcbiAgICAvLyBHZXQgbWFya3VwIHRvIGJlIHByaW50ZWRcclxuICAgIGNvbnN0IG1hcmt1cCA9IGdldE1hcmt1cChjb250YWluZXIsIG9wdGlvbnMsIF9IKTtcclxuXHJcbiAgICAvLyBDcmVhdGUgaWZyYW1lXHJcbiAgICBsZXQgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJykgYXMgSFRNTElGcmFtZUVsZW1lbnQgfCBhbnk7XHJcbiAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdpZCcsICdpZnJhbWUtJyArIF9ILmNsYXNzTmFtZVVJRCk7XHJcbiAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdjbGFzcycsICdpZnJhbWUtJyArIF9ILmNsYXNzTmFtZVVJRCk7XHJcbiAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdzcmMnLCAnYWJvdXQ6YmxhbmsnKTtcclxuICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ2ZyYW1lQm9yZGVyJywgJzAnKTtcclxuICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ3Njcm9sbGluZycsICdubycpO1xyXG4gICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAncG9zaXRpb246Zml4ZWQ7Ym90dG9tOjEwMCU7cmlnaHQ6MTAwJTsnKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcclxuXHJcbiAgICBsZXQgaURvY3VtZW50OiBhbnkgPSBudWxsO1xyXG4gICAgaWYgKGlmcmFtZS5jb250ZW50RG9jdW1lbnQpIHtcclxuICAgICAgaURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnREb2N1bWVudDtcclxuICAgIH0gZWxzZSBpZiAoaWZyYW1lLmNvbnRlbnRXaW5kb3cpIHtcclxuICAgICAgaURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgQUREX1NUWUxFX0hFQUQoX0gpO1xyXG5cclxuICAgIC8vIFNldFRpbWVvdXQgZml4ZXNpZnJhbWUgcHJpbnRNb2RlIGRvZXMgbm90IHdvcmsgaW4gZmlyZWZveFxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICAvLyBDbG9zZVxyXG4gICAgICBjb25zdCBvblByaW50RmluaXNoZWQgPSAocHJpbnRlZDogYW55KSA9PiB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBpRG9jdW1lbnQuY2xvc2UoKTtcclxuICAgICAgICAgIFJFTU9WRV9TVFlMRV9IRUFEKF9IKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vIFByaW50XHJcbiAgICAgIGlmcmFtZS5jb250ZW50V2luZG93LmZvY3VzKCk7XHJcbiAgICAgIG9uUHJpbnRGaW5pc2hlZChpZnJhbWUuY29udGVudFdpbmRvdy5wcmludCgpKTtcclxuICAgICAgaURvY3VtZW50Lm9wZW4oKTtcclxuICAgICAgaURvY3VtZW50LndyaXRlKG1hcmt1cCk7XHJcbiAgICAgIGlmcmFtZS5jb250ZW50V2luZG93Lm9uYmVmb3JlcHJpbnQgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpZnJhbWUpKTtcclxuICAgICAgICBBU19DT01QTEVURShhcywgZXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmcmFtZS5jb250ZW50V2luZG93Lm9uYWZ0ZXJwcmludCA9IChldmVudDogYW55KSA9PiBBU19DT01QTEVURShhcywgZXZlbnQpO1xyXG4gICAgfSk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIEFTX0NPTVBMRVRFKGFzLCBlcnJvcik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogUHJpbnQgZGVmYXVsdFxyXG4gKiBAcGFyYW0gZWxlbWVudCBcclxuICogQHBhcmFtIHJlbmRlcmVyIFxyXG4gKiBAcGFyYW0gYXMgXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgcHJpbnREZWZhdWx0ID0gKGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55PiwgcmVuZGVyZXI6IFJlbmRlcmVyMiwgYXM6IFN1YmplY3Q8YW55PikgPT4ge1xyXG4gIHRyeSB7XHJcbiAgICAvLyBEZWNsYXJlXHJcbiAgICBjb25zdCBjb250YWluZXIgPSBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBfSCA9IEhFQUQoKTtcclxuXHJcbiAgICAvLyBBZGQgdmlzaWJpbGl0eSBoaWRkZW4gaW50byBib2R5XHJcbiAgICBjb25zdCBib2R5RWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5Jyk7XHJcbiAgICBpZiAoYm9keUVsKSB7XHJcbiAgICAgIGJvZHlFbC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGNvbnRhaW5lciwgX0guY2xhc3NOYW1lVUlEKTtcclxuICAgICAgQUREX1NUWUxFX0hFQUQoX0gpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENsb3NlXHJcbiAgICBjb25zdCBvblByaW50RmluaXNoZWQgPSAocHJpbnRlZDogYW55KSA9PiB7XHJcbiAgICAgIC8vIENsZWFyIHZpc2liaWxpdHk6IGhpZGRlblxyXG4gICAgICBib2R5RWwgJiYgKGJvZHlFbC5zdHlsZS52aXNpYmlsaXR5ID0gJycpO1xyXG4gICAgICByZW5kZXJlci5zZXRBdHRyaWJ1dGUoY29udGFpbmVyLCAnY2xhc3MnLCBjb250YWluZXIuY2xhc3NOYW1lLnJlcGxhY2UoX0guY2xhc3NOYW1lVUlELCAnJykpO1xyXG4gICAgICBSRU1PVkVfU1RZTEVfSEVBRChfSCk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIFByaW50XHJcbiAgICB3aW5kb3cuZm9jdXMoKTtcclxuICAgIG9uUHJpbnRGaW5pc2hlZCh3aW5kb3cucHJpbnQoKSk7XHJcbiAgICB3aW5kb3cub25iZWZvcmVwcmludCA9IChldmVudDogYW55KSA9PiBBU19DT01QTEVURShhcywgZXZlbnQpO1xyXG4gICAgd2luZG93Lm9uYWZ0ZXJwcmludCA9IChldmVudDogYW55KSA9PiBBU19DT01QTEVURShhcywgZXZlbnQpO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBBU19DT01QTEVURShhcywgZXJyb3IpO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBSeGpzIGNvbXBsZXRlXHJcbiAqIEBwYXJhbSBhcyBcclxuICogQHBhcmFtIGRhdGEgXHJcbiAqIEBwYXJhbSBlcnJvciBcclxuICovXHJcbmV4cG9ydCBjb25zdCBBU19DT01QTEVURSA9IChhczogU3ViamVjdDxhbnk+LCBkYXRhOiBhbnksIGVycm9yID0gbnVsbCkgPT4ge1xyXG4gIGVycm9yID8gYXMuZXJyb3IoZXJyb3IpIDogYXMubmV4dChkYXRhKTtcclxufTtcclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXByaW50LWVsZW1lbnQvc3JjL2xpYi9uZ3gtcHJpbnQtZWxlbWVudC5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxjQUFjLEdBQVc7SUFDN0IsUUFBUSxFQUFFLFFBQVE7SUFDbEIsU0FBUyxFQUFFLFVBQVU7SUFDckIsU0FBUyxFQUFFLEVBQUU7SUFDYixjQUFjLEVBQUUsRUFBRTtJQUNsQixlQUFlLEVBQUUsRUFBRTtJQUNuQixXQUFXLEVBQUUsRUFBRTtJQUNmLE1BQU0sRUFBRSxFQUFFO0lBQ1YsUUFBUSxFQUFFLEVBQUU7Q0FDYixDQUFDO0FBU0Y7OztHQUdHO0FBQ0gsTUFBTSxJQUFJLEdBQUcsR0FBTyxFQUFFO0lBQ3BCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUQsTUFBTSxZQUFZLEdBQUcscUJBQXFCLEVBQUUsRUFBRSxDQUFDO0lBQy9DLE1BQU0sYUFBYSxHQUFHLDBCQUEwQixFQUFFLEVBQUUsQ0FBQztJQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsQ0FBQztBQUMvQyxDQUFDLENBQUE7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUFDLEVBQU0sRUFBRSxFQUFFO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFD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dkMsa0JBQWtCO1lBQ2xCLDJCQUEyQjtZQUMzQixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN6QyxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVGLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQztRQUVGLFFBQVE7UUFDUixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLGFBQWEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5RCxNQUFNLENBQUMsWUFBWSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzlEO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ3hCO0FBQ0gsQ0FBQyxDQUFBO0FBR0Q7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFnQixFQUFFLElBQVMsRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLEVBQUU7SUFDdkUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIFJlbmRlcmVyMiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBDb25maWcgfSBmcm9tIFwiLi9uZ3gtcHJpbnQtZWxlbWVudC5zZXJ2aWNlXCI7XHJcblxyXG5jb25zdCBkZWZhdWx0T3B0aW9uczogQ29uZmlnID0ge1xyXG4gIGh0bWxUeXBlOiAnZG9tT2JqJyxcclxuICBwcmludE1vZGU6ICd0ZW1wbGF0ZScsXHJcbiAgcGFnZVRpdGxlOiAnJyxcclxuICB0ZW1wbGF0ZVN0cmluZzogJycsXHJcbiAgcG9wdXBQcm9wZXJ0aWVzOiAnJyxcclxuICBzdHlsZXNoZWV0czogW10sXHJcbiAgc3R5bGVzOiBbXSxcclxuICBiYXNlSHJlZjogJydcclxufTtcclxuXHJcblxyXG5pbnRlcmZhY2UgX0gge1xyXG4gIGhlYWQ6IEhUTUxIZWFkRWxlbWVudDtcclxuICBjbGFzc05hbWVVSUQ6IHN0cmluZztcclxuICBpZE5hbWVIZWFkVUlEOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIRUFEIEVsZW1lbnRcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5jb25zdCBIRUFEID0gKCk6IF9IID0+IHtcclxuICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcclxuICBjb25zdCBJRCA9IChNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5OTk5OTk5KSkudG9TdHJpbmcoKTtcclxuICBjb25zdCBjbGFzc05hbWVVSUQgPSBgbmd4LXByaW50LWVsZW1lbnQtJHtJRH1gO1xyXG4gIGNvbnN0IGlkTmFtZUhlYWRVSUQgPSBgbmd4LXByaW50LWVsZW1lbnQtaGVhZC0ke0lEfWA7XHJcbiAgcmV0dXJuIHsgaGVhZCwgY2xhc3NOYW1lVUlELCBpZE5hbWVIZWFkVUlEIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBRERfU1RZTEVfSEVBRFxyXG4gKiBAcGFyYW0gX0ggXHJcbiAqL1xyXG5jb25zdCBBRERfU1RZTEVfSEVBRCA9IChfSDogX0gpID0+IHtcclxuICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcbiAgc3R5bGUuaW5uZXJIVE1MID0gQlVJTERfU1RZTEUoX0gpO1xyXG4gIHN0eWxlLmlkID0gYCR7X0guaWROYW1lSGVhZFVJRH1gO1xyXG4gIF9ILmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xyXG59XHJcblxyXG4vKipcclxuICogQlVJTERfU1RZTEVcclxuICogQHBhcmFtIF9IIFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmNvbnN0IEJVSUxEX1NUWUxFID0gKF9IOiBfSCk6IHN0cmluZyA9PiB7XHJcbiAgcmV0dXJuIGBcclxuICBAbWVkaWEgcHJpbnQge1xyXG4gICAgLiR7X0guY2xhc3NOYW1lVUlEfSxcclxuICAgIC4ke19ILmNsYXNzTmFtZVVJRH0gKiB7XHJcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgIH1cclxuICAgIC4ke19ILmNsYXNzTmFtZVVJRH0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgIH1cclxuICAgIC4ke19ILmNsYXNzTmFtZVVJRH0gLnByaW50LW5vbmUge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuICAgIC8qIC0tLS0tIEF1dGhvcjogRGFpREggLS0tLS0gKi9cclxuICAgIC8qIENvcHlyaWdodCAoQykgMjAyMiAtICR7bmV3IERhdGUoKS5nZXRGdWxsWWVhcigpfSAqL1xyXG4gIH1gXHJcbn07XHJcblxyXG4vKipcclxuICogUkVNT1ZFX1NUWUxFX0hFQURcclxuICogQHBhcmFtIF9IIFxyXG4gKi9cclxuY29uc3QgUkVNT1ZFX1NUWUxFX0hFQUQgPSAoX0g6IF9IKSA9PiB7XHJcbiAgY29uc3Qgc3R5bGVUb1JlbW92ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKF9ILmlkTmFtZUhlYWRVSUQpO1xyXG4gIGlmIChzdHlsZVRvUmVtb3ZlKSB7XHJcbiAgICBfSC5oZWFkLnJlbW92ZUNoaWxkKHN0eWxlVG9SZW1vdmUpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIGdldEJhc2VIcmVmXHJcbiAqIEBwYXJhbSBvcHRpb25zIFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmV4cG9ydCBjb25zdCBnZXRCYXNlSHJlZiA9IChvcHRpb25zOiBDb25maWcpID0+IHtcclxuICBjb25zdCBwb3J0ID0gKHdpbmRvdy5sb2NhdGlvbi5wb3J0KSA/IGA6JHt3aW5kb3cubG9jYXRpb24ucG9ydH1gIDogJyc7XHJcbiAgY29uc3QgYnVpbGRVUkwgPSBgJHt3aW5kb3cubG9jYXRpb24ucHJvdG9jb2x9Ly8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZX0ke3BvcnR9JHt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9YDtcclxuICBjb25zdCBmaW5hbFVSTCA9IG9wdGlvbnMuYmFzZUhyZWYgPyBvcHRpb25zLmJhc2VIcmVmIDogYnVpbGRVUkw7XHJcbiAgcmV0dXJuIGZpbmFsVVJMO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIGdldE1hcmt1cFxyXG4gKiBwcmludC1odG1sLWVsZW1lbnRcclxuICogQHBhcmFtIGVsZW1lbnQgXHJcbiAqIEBwYXJhbSBvcHRpb25zIFxyXG4gKiBAcGFyYW0gX0ggXHJcbiAqIEByZXR1cm5zIFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGdldE1hcmt1cCA9IChlbGVtZW50OiBhbnksIG9wdGlvbnM6IENvbmZpZywgX0g6IF9IKSA9PiB7XHJcbiAgY29uc3QgdGVtcGxhdGUgPSBvcHRpb25zLnRlbXBsYXRlU3RyaW5nO1xyXG4gIGNvbnN0IHRlbXBsYXRlUmVnZXggPSBuZXcgUmVnRXhwKC97e1xccypwcmludEJvZHlcXHMqfX0vZ2kpO1xyXG4gIGxldCBzdHlsZXNoZWV0cztcclxuICBsZXQgc3R5bGVzO1xyXG4gIGNvbnN0IGh0bWwgPSBbXTtcclxuXHJcbiAgaWYgKG9wdGlvbnMuaHRtbFR5cGUgPT09ICdkb21PYmonKSB7XHJcbiAgICBlbGVtZW50ID0gZWxlbWVudC5vdXRlckhUTUw7XHJcbiAgfVxyXG5cclxuICBpZiAob3B0aW9ucy5odG1sVHlwZSA9PT0gJ3RleHQnKSB7XHJcbiAgICBlbGVtZW50ID0gZWxlbWVudC5pbm5lclRleHQ7XHJcbiAgfVxyXG5cclxuICBpZiAodGVtcGxhdGUgJiYgdGVtcGxhdGVSZWdleC50ZXN0KHRlbXBsYXRlKSkge1xyXG4gICAgZWxlbWVudCA9IHRlbXBsYXRlLnJlcGxhY2UodGVtcGxhdGVSZWdleCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBodG1sLnB1c2goYDxodG1sPjxoZWFkPjx0aXRsZT4ke29wdGlvbnMucGFnZVRpdGxlIHx8ICcnfTwvdGl0bGU+YCk7XHJcblxyXG4gIC8vIElmIHN0eWxlc2hlZXQgVVJMJ3Mgb3IgbGlzdCBvZiBzdHlsZXNoZWV0IFVSTCdzIGFyZSBzcGVjaWZpZWQsIG92ZXJyaWRlIHBhZ2Ugc3R5bGVzaGVldHNcclxuICBpZiAob3B0aW9ucy5zdHlsZXNoZWV0cykge1xyXG4gICAgc3R5bGVzaGVldHMgPSBBcnJheS5pc0FycmF5KG9wdGlvbnMuc3R5bGVzaGVldHMpID8gb3B0aW9ucy5zdHlsZXNoZWV0cyA6IFtvcHRpb25zLnN0eWxlc2hlZXRzXTtcclxuICB9IGVsc2Uge1xyXG4gICAgc3R5bGVzaGVldHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2VcclxuICAgICAgLmNhbGwoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xpbmsnKSlcclxuICAgICAgLm1hcChsaW5rID0+IGxpbmspO1xyXG4gIH1cclxuXHJcbiAgc3R5bGVzaGVldHMuZm9yRWFjaCgoZjogYW55KSA9PiB7XHJcbiAgICBodG1sLnB1c2goYDxsaW5rIHJlbD1cIiR7Zi5yZWx9XCIgaHJlZj1cIiR7Zi5ocmVmfVwiPmApO1xyXG4gIH0pO1xyXG5cclxuICAvLyBJZiBpbmxpbmUgc3R5bGVzIG9yIGxpc3Qgb2YgaW5saW5lIHN0eWxlcyBhcmUgc3BlY2lmaWVkLCBvdmVycmlkZSBpbmxpbmUgc3R5bGVzXHJcbiAgaWYgKG9wdGlvbnMuc3R5bGVzKSB7XHJcbiAgICBzdHlsZXMgPSBBcnJheS5pc0FycmF5KG9wdGlvbnMuc3R5bGVzKSA/IFsuLi5vcHRpb25zLnN0eWxlcywgQlVJTERfU1RZTEUoX0gpXSA6IFtvcHRpb25zLnN0eWxlcyArIEJVSUxEX1NUWUxFKF9IKV07XHJcbiAgfSBlbHNlIHtcclxuICAgIHN0eWxlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZVxyXG4gICAgICAuY2FsbChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3R5bGUnKSlcclxuICAgICAgLm1hcChzdHlsZSA9PiBzdHlsZS5pbm5lckhUTUwpO1xyXG4gIH1cclxuXHJcbiAgc3R5bGVzLmZvckVhY2goKHN0eWxlOiBhbnkpID0+IHtcclxuICAgIGh0bWwucHVzaChgPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiPiR7c3R5bGV9PC9zdHlsZT5gKTtcclxuICB9KTtcclxuXHJcbiAgaHRtbC5wdXNoKGA8YmFzZSBocmVmPVwiJHtnZXRCYXNlSHJlZihvcHRpb25zKX1cIi8+YCk7XHJcbiAgaHRtbC5wdXNoKGA8L2hlYWQ+PGJvZHkgY2xhc3M9XCIke19ILmNsYXNzTmFtZVVJRH1cIj5gKTtcclxuICBodG1sLnB1c2goZWxlbWVudCk7XHJcbiAgaHRtbC5wdXNoKCc8L2JvZHk+PC9odG1sPicpO1xyXG5cclxuICByZXR1cm4gaHRtbC5qb2luKCcnKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBQcmludCB3aW5kb3cub3BlblxyXG4gKiBAcGFyYW0gZWxlbWVudCBcclxuICogQHBhcmFtIHNlbGZPcHRpb25zIFxyXG4gKiBAcGFyYW0gYXMgXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgcHJpbnRFbGVtZW50V2luZG93ID0gKGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55Piwgc2VsZk9wdGlvbnMgPSB7fSwgYXM6IFN1YmplY3Q8YW55PikgPT4ge1xyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0geyAuLi5kZWZhdWx0T3B0aW9ucywgLi4uc2VsZk9wdGlvbnMgfTtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IF9IID0gSEVBRCgpO1xyXG5cclxuICAgIC8vIE5ldyB3aW5kb3dcclxuICAgIGNvbnN0IHByaW50V2luZG93ID0gd2luZG93Lm9wZW4oJ2Fib3V0OmJsYW5rJywgJ3ByaW50RWxlbWVudFdpbmRvdycsIG9wdGlvbnMucG9wdXBQcm9wZXJ0aWVzKSBhcyBhbnk7XHJcbiAgICBjb25zdCBwcmludERvY3VtZW50ID0gcHJpbnRXaW5kb3cgJiYgcHJpbnRXaW5kb3cuZG9jdW1lbnQgYXMgYW55O1xyXG5cclxuICAgIC8vIEdldCBtYXJrdXAgdG8gYmUgcHJpbnRlZFxyXG4gICAgY29uc3QgbWFya3VwID0gZ2V0TWFya3VwKGNvbnRhaW5lciwgb3B0aW9ucywgX0gpO1xyXG5cclxuICAgIEFERF9TVFlMRV9IRUFEKF9IKTtcclxuXHJcbiAgICAvLyBDbG9zZVxyXG4gICAgY29uc3Qgb25QcmludEZpbmlzaGVkID0gKHByaW50ZWQ6IGFueSkgPT4ge1xyXG4gICAgICBwcmludERvY3VtZW50LmNsb3NlKCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHByaW50V2luZG93LmNsb3NlKCk7XHJcbiAgICAgICAgUkVNT1ZFX1NUWUxFX0hFQUQoX0gpO1xyXG4gICAgICB9LCAxMDAwKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gUHJpbnRcclxuICAgIHByaW50V2luZG93LmZvY3VzKCk7XHJcbiAgICBwcmludERvY3VtZW50LndyaXRlKG1hcmt1cCk7XHJcbiAgICBvblByaW50RmluaXNoZWQocHJpbnRXaW5kb3cucHJpbnQoKSk7XHJcbiAgICBwcmludFdpbmRvdy5vbmJlZm9yZXByaW50ID0gKGV2ZW50OiBhbnkpID0+IEFTX0NPTVBMRVRFKGFzLCBldmVudCk7XHJcbiAgICBwcmludFdpbmRvdy5vbmFmdGVycHJpbnQgPSAoZXZlbnQ6IGFueSkgPT4gQVNfQ09NUExFVEUoYXMsIGV2ZW50KTtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgQVNfQ09NUExFVEUoYXMsIGVycm9yKTtcclxuICB9XHJcbn07XHJcblxyXG4vKipcclxuICogUHJpbnQgaUZyYW1lXHJcbiAqIEBwYXJhbSBlbGVtZW50IFxyXG4gKiBAcGFyYW0gc2VsZk9wdGlvbnMgXHJcbiAqIEBwYXJhbSBhcyBcclxuICovXHJcbmV4cG9ydCBjb25zdCBwcmludElGcmFtZSA9IChlbGVtZW50OiBFbGVtZW50UmVmPGFueT4sIHNlbGZPcHRpb25zID0ge30sIGFzOiBTdWJqZWN0PGFueT4sKSA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIC8vIERlY2xhcmVcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5zZWxmT3B0aW9ucyB9O1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgX0ggPSBIRUFEKCk7XHJcblxyXG4gICAgLy8gR2V0IG1hcmt1cCB0byBiZSBwcmludGVkXHJcbiAgICBjb25zdCBtYXJrdXAgPSBnZXRNYXJrdXAoY29udGFpbmVyLCBvcHRpb25zLCBfSCk7XHJcblxyXG4gICAgLy8gQ3JlYXRlIGlmcmFtZVxyXG4gICAgbGV0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpIGFzIEhUTUxJRnJhbWVFbGVtZW50IHwgYW55O1xyXG4gICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnaWQnLCAnaWZyYW1lLScgKyBfSC5jbGFzc05hbWVVSUQpO1xyXG4gICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnaWZyYW1lLScgKyBfSC5jbGFzc05hbWVVSUQpO1xyXG4gICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnc3JjJywgJ2Fib3V0OmJsYW5rJyk7XHJcbiAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdmcmFtZUJvcmRlcicsICcwJyk7XHJcbiAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdzY3JvbGxpbmcnLCAnbm8nKTtcclxuICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3Bvc2l0aW9uOmZpeGVkO2JvdHRvbToxMDAlO3JpZ2h0OjEwMCU7Jyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7XHJcblxyXG4gICAgbGV0IGlEb2N1bWVudDogYW55ID0gbnVsbDtcclxuICAgIGlmIChpZnJhbWUuY29udGVudERvY3VtZW50KSB7XHJcbiAgICAgIGlEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50RG9jdW1lbnQ7XHJcbiAgICB9IGVsc2UgaWYgKGlmcmFtZS5jb250ZW50V2luZG93KSB7XHJcbiAgICAgIGlEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIEFERF9TVFlMRV9IRUFEKF9IKTtcclxuXHJcbiAgICAvLyBTZXRUaW1lb3V0IGZpeGVzaWZyYW1lIHByaW50TW9kZSBkb2VzIG5vdCB3b3JrIGluIGZpcmVmb3hcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgLy8gQ2xvc2VcclxuICAgICAgY29uc3Qgb25QcmludEZpbmlzaGVkID0gKHByaW50ZWQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgaURvY3VtZW50LmNsb3NlKCk7XHJcbiAgICAgICAgICBSRU1PVkVfU1RZTEVfSEVBRChfSCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICAvLyBQcmludFxyXG4gICAgICBpZnJhbWUuY29udGVudFdpbmRvdy5mb2N1cygpO1xyXG4gICAgICBvblByaW50RmluaXNoZWQoaWZyYW1lLmNvbnRlbnRXaW5kb3cucHJpbnQoKSk7XHJcbiAgICAgIGlEb2N1bWVudC5vcGVuKCk7XHJcbiAgICAgIGlEb2N1bWVudC53cml0ZShtYXJrdXApO1xyXG4gICAgICBpZnJhbWUuY29udGVudFdpbmRvdy5vbmJlZm9yZXByaW50ID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaWZyYW1lKSk7XHJcbiAgICAgICAgQVNfQ09NUExFVEUoYXMsIGV2ZW50KTtcclxuICAgICAgfVxyXG4gICAgICBpZnJhbWUuY29udGVudFdpbmRvdy5vbmFmdGVycHJpbnQgPSAoZXZlbnQ6IGFueSkgPT4gQVNfQ09NUExFVEUoYXMsIGV2ZW50KTtcclxuICAgIH0pO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBBU19DT01QTEVURShhcywgZXJyb3IpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFByaW50IGRlZmF1bHRcclxuICogQHBhcmFtIGVsZW1lbnQgXHJcbiAqIEBwYXJhbSByZW5kZXJlciBcclxuICogQHBhcmFtIGFzIFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHByaW50RGVmYXVsdCA9IChlbGVtZW50OiBFbGVtZW50UmVmPGFueT4sIHJlbmRlcmVyOiBSZW5kZXJlcjIsIGFzOiBTdWJqZWN0PGFueT4pID0+IHtcclxuICB0cnkge1xyXG4gICAgLy8gRGVjbGFyZVxyXG4gICAgY29uc3QgY29udGFpbmVyID0gZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgX0ggPSBIRUFEKCk7XHJcblxyXG4gICAgLy8gQWRkIHZpc2liaWxpdHkgaGlkZGVuIGludG8gYm9keVxyXG4gICAgY29uc3QgYm9keUVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xyXG4gICAgaWYgKGJvZHlFbCkge1xyXG4gICAgICBib2R5RWwuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xyXG4gICAgICByZW5kZXJlci5hZGRDbGFzcyhjb250YWluZXIsIF9ILmNsYXNzTmFtZVVJRCk7XHJcbiAgICAgIEFERF9TVFlMRV9IRUFEKF9IKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDbG9zZVxyXG4gICAgY29uc3Qgb25QcmludEZpbmlzaGVkID0gKHByaW50ZWQ6IGFueSkgPT4ge1xyXG4gICAgICAvLyB3aW5kb3cuY2xvc2UoKTtcclxuICAgICAgLy8gQ2xlYXIgdmlzaWJpbGl0eTogaGlkZGVuXHJcbiAgICAgIGJvZHlFbCAmJiAoYm9keUVsLnN0eWxlLnZpc2liaWxpdHkgPSAnJyk7XHJcbiAgICAgIHJlbmRlcmVyLnNldEF0dHJpYnV0ZShjb250YWluZXIsICdjbGFzcycsIGNvbnRhaW5lci5jbGFzc05hbWUucmVwbGFjZShfSC5jbGFzc05hbWVVSUQsICcnKSk7XHJcbiAgICAgIFJFTU9WRV9TVFlMRV9IRUFEKF9IKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gUHJpbnRcclxuICAgIHdpbmRvdy5mb2N1cygpO1xyXG4gICAgb25QcmludEZpbmlzaGVkKHdpbmRvdy5wcmludCgpKTtcclxuICAgIHdpbmRvdy5vbmJlZm9yZXByaW50ID0gKGV2ZW50OiBhbnkpID0+IEFTX0NPTVBMRVRFKGFzLCBldmVudCk7XHJcbiAgICB3aW5kb3cub25hZnRlcnByaW50ID0gKGV2ZW50OiBhbnkpID0+IEFTX0NPTVBMRVRFKGFzLCBldmVudCk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIEFTX0NPTVBMRVRFKGFzLCBlcnJvcik7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFJ4anMgY29tcGxldGVcclxuICogQHBhcmFtIGFzIFxyXG4gKiBAcGFyYW0gZGF0YSBcclxuICogQHBhcmFtIGVycm9yIFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IEFTX0NPTVBMRVRFID0gKGFzOiBTdWJqZWN0PGFueT4sIGRhdGE6IGFueSwgZXJyb3IgPSBudWxsKSA9PiB7XHJcbiAgZXJyb3IgPyBhcy5lcnJvcihlcnJvcikgOiBhcy5uZXh0KGRhdGEpO1xyXG59O1xyXG4iXX0=

@@ -6,10 +6,10 @@ import { NgModule } from '@angular/core';

class NgxPrintElementModule {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementModule, declarations: [NgxPrintElementComponent,
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementModule, declarations: [NgxPrintElementComponent,
NgxPrintElementDirective], exports: [NgxPrintElementComponent,
NgxPrintElementDirective] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementModule }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementModule }); }
}
export { NgxPrintElementModule };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementModule, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementModule, decorators: [{
type: NgModule,

@@ -27,2 +27,2 @@ args: [{

}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXByaW50LWVsZW1lbnQvc3JjL2xpYi9uZ3gtcHJpbnQtZWxlbWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFHekUsTUFVYSxxQkFBcUI7OEdBQXJCLHFCQUFxQjsrR0FBckIscUJBQXFCLGlCQVI5Qix3QkFBd0I7WUFDeEIsd0JBQXdCLGFBR3hCLHdCQUF3QjtZQUN4Qix3QkFBd0I7K0dBR2YscUJBQXFCOztTQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFWakMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osd0JBQXdCO3dCQUN4Qix3QkFBd0I7cUJBQ3pCO29CQUNELE9BQU8sRUFBRTt3QkFDUCx3QkFBd0I7d0JBQ3hCLHdCQUF3QjtxQkFDekI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ3hQcmludEVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuL25neC1wcmludC1lbGVtZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5neFByaW50RWxlbWVudERpcmVjdGl2ZSB9IGZyb20gJy4vbmd4LXByaW50LWVsZW1lbnQuZGlyZWN0aXZlJztcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgTmd4UHJpbnRFbGVtZW50Q29tcG9uZW50LFxyXG4gICAgTmd4UHJpbnRFbGVtZW50RGlyZWN0aXZlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBOZ3hQcmludEVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBOZ3hQcmludEVsZW1lbnREaXJlY3RpdmVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hQcmludEVsZW1lbnRNb2R1bGUgeyB9Il19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXByaW50LWVsZW1lbnQvc3JjL2xpYi9uZ3gtcHJpbnQtZWxlbWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFHekUsTUFVYSxxQkFBcUI7K0dBQXJCLHFCQUFxQjtnSEFBckIscUJBQXFCLGlCQVI5Qix3QkFBd0I7WUFDeEIsd0JBQXdCLGFBR3hCLHdCQUF3QjtZQUN4Qix3QkFBd0I7Z0hBR2YscUJBQXFCOztTQUFyQixxQkFBcUI7NEZBQXJCLHFCQUFxQjtrQkFWakMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osd0JBQXdCO3dCQUN4Qix3QkFBd0I7cUJBQ3pCO29CQUNELE9BQU8sRUFBRTt3QkFDUCx3QkFBd0I7d0JBQ3hCLHdCQUF3QjtxQkFDekI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ3hQcmludEVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuL25neC1wcmludC1lbGVtZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5neFByaW50RWxlbWVudERpcmVjdGl2ZSB9IGZyb20gJy4vbmd4LXByaW50LWVsZW1lbnQuZGlyZWN0aXZlJztcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgTmd4UHJpbnRFbGVtZW50Q29tcG9uZW50LFxyXG4gICAgTmd4UHJpbnRFbGVtZW50RGlyZWN0aXZlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBOZ3hQcmludEVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBOZ3hQcmludEVsZW1lbnREaXJlY3RpdmVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hQcmludEVsZW1lbnRNb2R1bGUgeyB9Il19

@@ -35,7 +35,7 @@ import { Injectable } from '@angular/core';

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementService, providedIn: 'root' }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementService, providedIn: 'root' }); }
}
export { NgxPrintElementService };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementService, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementService, decorators: [{
type: Injectable,

@@ -46,2 +46,2 @@ args: [{

}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1wcmludC1lbGVtZW50L3NyYy9saWIvbmd4LXByaW50LWVsZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFnQjNGLE1BR2Esc0JBQXNCO0lBSWpDOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLE9BQXdCLEVBQUUsTUFBZTtRQUNwRCxNQUFNLEVBQUUsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLHNDQUFzQztRQUN0QyxJQUFJLE9BQU8sRUFBRTtZQUNYLFVBQVU7WUFDVixJQUFJLE1BQU0sRUFBRTtnQkFDVixTQUFTO2dCQUNULElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUU7b0JBQ25DLFNBQVM7b0JBQ1QsV0FBVyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQ2xDO2dCQUNELElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxnQkFBZ0IsRUFBRTtvQkFDekMsVUFBVTtvQkFDVixrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUN6QzthQUNGO2lCQUFNO2dCQUNMLFlBQVk7Z0JBQ1osWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7OEdBL0JVLHNCQUFzQjtrSEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07O1NBRVAsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgcHJpbnREZWZhdWx0LCBwcmludEVsZW1lbnRXaW5kb3csIHByaW50SUZyYW1lIH0gZnJvbSAnLi9uZ3gtcHJpbnQtZWxlbWVudC5oZWxwZXInO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25maWcge1xyXG4gIGh0bWxUeXBlPzogc3RyaW5nO1xyXG4gIHByaW50TW9kZT86IHN0cmluZztcclxuICBwYWdlVGl0bGU/OiBzdHJpbmc7XHJcbiAgdGVtcGxhdGVTdHJpbmc/OiBzdHJpbmc7XHJcbiAgcG9wdXBQcm9wZXJ0aWVzPzogc3RyaW5nO1xyXG4gIHN0eWxlc2hlZXRzPzoge1xyXG4gICAgcmVsPzogc3RyaW5nLFxyXG4gICAgaHJlZj86IHN0cmluZ1xyXG4gIH1bXSxcclxuICBzdHlsZXM/OiBzdHJpbmdbXTtcclxuICBiYXNlSHJlZj86IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4UHJpbnRFbGVtZW50U2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyByZW5kZXJlciE6IFJlbmRlcmVyMjtcclxuXHJcbiAgLyoqXHJcbiAgICogUHJpbnRcclxuICAgKiBAcGFyYW0gZWxlbWVudCBcclxuICAgKiBAcGFyYW0gY29uZmlnIFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwcmludChlbGVtZW50OiBFbGVtZW50UmVmPGFueT4sIGNvbmZpZz86IENvbmZpZyk6IFN1YmplY3Q8YW55PiB7XHJcbiAgICBjb25zdCBhcyA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICAvLyBDcmVhdGUgYW5kIGluc2VydCBuZXcgcHJpbnQgc2VjdGlvblxyXG4gICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgLy8gRWxlbWVudFxyXG4gICAgICBpZiAoY29uZmlnKSB7XHJcbiAgICAgICAgLy8gQ29uZmlnXHJcbiAgICAgICAgaWYgKGNvbmZpZy5wcmludE1vZGUgPT09ICd0ZW1wbGF0ZScpIHtcclxuICAgICAgICAgIC8vIGlmcmFtZVxyXG4gICAgICAgICAgcHJpbnRJRnJhbWUoZWxlbWVudCwgY29uZmlnLCBhcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb25maWcucHJpbnRNb2RlID09PSAndGVtcGxhdGUtcG9wdXAnKSB7XHJcbiAgICAgICAgICAvLyB3aW5kb3dzXHJcbiAgICAgICAgICBwcmludEVsZW1lbnRXaW5kb3coZWxlbWVudCwgY29uZmlnLCBhcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIE5vIGNvbmZpZ1xyXG4gICAgICAgIHByaW50RGVmYXVsdChlbGVtZW50LCB0aGlzLnJlbmRlcmVyLCBhcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcztcclxuICB9XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1wcmludC1lbGVtZW50L3NyYy9saWIvbmd4LXByaW50LWVsZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFnQjNGLE1BR2Esc0JBQXNCO0lBSWpDOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLE9BQXdCLEVBQUUsTUFBZTtRQUNwRCxNQUFNLEVBQUUsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLHNDQUFzQztRQUN0QyxJQUFJLE9BQU8sRUFBRTtZQUNYLFVBQVU7WUFDVixJQUFJLE1BQU0sRUFBRTtnQkFDVixTQUFTO2dCQUNULElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUU7b0JBQ25DLFNBQVM7b0JBQ1QsV0FBVyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQ2xDO2dCQUNELElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxnQkFBZ0IsRUFBRTtvQkFDekMsVUFBVTtvQkFDVixrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUN6QzthQUNGO2lCQUFNO2dCQUNMLFlBQVk7Z0JBQ1osWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7K0dBL0JVLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07O1NBRVAsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgcHJpbnREZWZhdWx0LCBwcmludEVsZW1lbnRXaW5kb3csIHByaW50SUZyYW1lIH0gZnJvbSAnLi9uZ3gtcHJpbnQtZWxlbWVudC5oZWxwZXInO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25maWcge1xyXG4gIGh0bWxUeXBlPzogc3RyaW5nO1xyXG4gIHByaW50TW9kZT86IHN0cmluZztcclxuICBwYWdlVGl0bGU/OiBzdHJpbmc7XHJcbiAgdGVtcGxhdGVTdHJpbmc/OiBzdHJpbmc7XHJcbiAgcG9wdXBQcm9wZXJ0aWVzPzogc3RyaW5nO1xyXG4gIHN0eWxlc2hlZXRzPzoge1xyXG4gICAgcmVsPzogc3RyaW5nLFxyXG4gICAgaHJlZj86IHN0cmluZ1xyXG4gIH1bXSxcclxuICBzdHlsZXM/OiBzdHJpbmdbXTtcclxuICBiYXNlSHJlZj86IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4UHJpbnRFbGVtZW50U2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyByZW5kZXJlciE6IFJlbmRlcmVyMjtcclxuXHJcbiAgLyoqXHJcbiAgICogUHJpbnRcclxuICAgKiBAcGFyYW0gZWxlbWVudCBcclxuICAgKiBAcGFyYW0gY29uZmlnIFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwcmludChlbGVtZW50OiBFbGVtZW50UmVmPGFueT4sIGNvbmZpZz86IENvbmZpZyk6IFN1YmplY3Q8YW55PiB7XHJcbiAgICBjb25zdCBhcyA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICAvLyBDcmVhdGUgYW5kIGluc2VydCBuZXcgcHJpbnQgc2VjdGlvblxyXG4gICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgLy8gRWxlbWVudFxyXG4gICAgICBpZiAoY29uZmlnKSB7XHJcbiAgICAgICAgLy8gQ29uZmlnXHJcbiAgICAgICAgaWYgKGNvbmZpZy5wcmludE1vZGUgPT09ICd0ZW1wbGF0ZScpIHtcclxuICAgICAgICAgIC8vIGlmcmFtZVxyXG4gICAgICAgICAgcHJpbnRJRnJhbWUoZWxlbWVudCwgY29uZmlnLCBhcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb25maWcucHJpbnRNb2RlID09PSAndGVtcGxhdGUtcG9wdXAnKSB7XHJcbiAgICAgICAgICAvLyB3aW5kb3dzXHJcbiAgICAgICAgICBwcmludEVsZW1lbnRXaW5kb3coZWxlbWVudCwgY29uZmlnLCBhcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIE5vIGNvbmZpZ1xyXG4gICAgICAgIHByaW50RGVmYXVsdChlbGVtZW50LCB0aGlzLnJlbmRlcmVyLCBhcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcztcclxuICB9XHJcbn1cclxuIl19

@@ -247,2 +247,3 @@ import * as i0 from '@angular/core';

const onPrintFinished = (printed) => {
// window.close();
// Clear visibility: hidden

@@ -303,6 +304,6 @@ bodyEl && (bodyEl.style.visibility = '');

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementService, providedIn: 'root' }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementService, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementService, decorators: [{
type: Injectable,

@@ -322,6 +323,6 @@ args: [{

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementDirective, deps: [{ token: i0.Renderer2 }, { token: NgxPrintElementService }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: NgxPrintElementDirective, selector: "[ngxPrintElement]", ngImport: i0 }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementDirective, deps: [{ token: i0.Renderer2 }, { token: NgxPrintElementService }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: NgxPrintElementDirective, selector: "[ngxPrintElement]", ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementDirective, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementDirective, decorators: [{
type: Directive,

@@ -346,6 +347,6 @@ args: [{

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementComponent, deps: [{ token: NgxPrintElementService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgxPrintElementComponent, selector: "ngx-print-element", exportAs: ["element"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementComponent, deps: [{ token: NgxPrintElementService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgxPrintElementComponent, selector: "ngx-print-element", exportAs: ["element"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementComponent, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementComponent, decorators: [{
type: Component,

@@ -360,9 +361,9 @@ args: [{

class NgxPrintElementModule {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementModule, declarations: [NgxPrintElementComponent,
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementModule, declarations: [NgxPrintElementComponent,
NgxPrintElementDirective], exports: [NgxPrintElementComponent,
NgxPrintElementDirective] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementModule }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementModule }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgxPrintElementModule, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxPrintElementModule, decorators: [{
type: NgModule,

@@ -369,0 +370,0 @@ args: [{

@@ -1,1 +0,1 @@

{"version":3,"file":"ngx-print-element.mjs","sources":["../../../projects/ngx-print-element/src/lib/ngx-print-element.helper.ts","../../../projects/ngx-print-element/src/lib/ngx-print-element.service.ts","../../../projects/ngx-print-element/src/lib/ngx-print-element.directive.ts","../../../projects/ngx-print-element/src/lib/ngx-print-element.component.ts","../../../projects/ngx-print-element/src/lib/ngx-print-element.module.ts","../../../projects/ngx-print-element/src/public-api.ts","../../../projects/ngx-print-element/src/ngx-print-element.ts"],"sourcesContent":["import { ElementRef, Renderer2 } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\nimport { Config } from \"./ngx-print-element.service\";\r\n\r\nconst defaultOptions: Config = {\r\n htmlType: 'domObj',\r\n printMode: 'template',\r\n pageTitle: '',\r\n templateString: '',\r\n popupProperties: '',\r\n stylesheets: [],\r\n styles: [],\r\n baseHref: ''\r\n};\r\n\r\n\r\ninterface _H {\r\n head: HTMLHeadElement;\r\n classNameUID: string;\r\n idNameHeadUID: string;\r\n}\r\n\r\n/**\r\n * HEAD Element\r\n * @returns \r\n */\r\nconst HEAD = (): _H => {\r\n const head = document.getElementsByTagName('head')[0];\r\n const ID = (Math.round(Math.random() * 9999999)).toString();\r\n const classNameUID = `ngx-print-element-${ID}`;\r\n const idNameHeadUID = `ngx-print-element-head-${ID}`;\r\n return { head, classNameUID, idNameHeadUID };\r\n}\r\n\r\n/**\r\n * ADD_STYLE_HEAD\r\n * @param _H \r\n */\r\nconst ADD_STYLE_HEAD = (_H: _H) => {\r\n const style = document.createElement('style');\r\n style.innerHTML = BUILD_STYLE(_H);\r\n style.id = `${_H.idNameHeadUID}`;\r\n _H.head.appendChild(style);\r\n}\r\n\r\n/**\r\n * BUILD_STYLE\r\n * @param _H \r\n * @returns \r\n */\r\nconst BUILD_STYLE = (_H: _H): string => {\r\n return `\r\n @media print {\r\n .${_H.classNameUID},\r\n .${_H.classNameUID} * {\r\n visibility: visible;\r\n }\r\n .${_H.classNameUID} {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n }\r\n .${_H.classNameUID} .print-none {\r\n display: none !important;\r\n }\r\n /* ----- Author: DaiDH ----- */\r\n /* Copyright (C) 2022 - ${new Date().getFullYear()} */\r\n }`\r\n};\r\n\r\n/**\r\n * REMOVE_STYLE_HEAD\r\n * @param _H \r\n */\r\nconst REMOVE_STYLE_HEAD = (_H: _H) => {\r\n const styleToRemove = document.getElementById(_H.idNameHeadUID);\r\n if (styleToRemove) {\r\n _H.head.removeChild(styleToRemove);\r\n }\r\n}\r\n\r\n/**\r\n * getBaseHref\r\n * @param options \r\n * @returns \r\n */\r\nexport const getBaseHref = (options: Config) => {\r\n const port = (window.location.port) ? `:${window.location.port}` : '';\r\n const buildURL = `${window.location.protocol}//${window.location.hostname}${port}${window.location.pathname}`;\r\n const finalURL = options.baseHref ? options.baseHref : buildURL;\r\n return finalURL;\r\n};\r\n\r\n/**\r\n * getMarkup\r\n * print-html-element\r\n * @param element \r\n * @param options \r\n * @param _H \r\n * @returns \r\n */\r\nexport const getMarkup = (element: any, options: Config, _H: _H) => {\r\n const template = options.templateString;\r\n const templateRegex = new RegExp(/{{\\s*printBody\\s*}}/gi);\r\n let stylesheets;\r\n let styles;\r\n const html = [];\r\n\r\n if (options.htmlType === 'domObj') {\r\n element = element.outerHTML;\r\n }\r\n\r\n if (options.htmlType === 'text') {\r\n element = element.innerText;\r\n }\r\n\r\n if (template && templateRegex.test(template)) {\r\n element = template.replace(templateRegex, element);\r\n }\r\n\r\n html.push(`<html><head><title>${options.pageTitle || ''}</title>`);\r\n\r\n // If stylesheet URL's or list of stylesheet URL's are specified, override page stylesheets\r\n if (options.stylesheets) {\r\n stylesheets = Array.isArray(options.stylesheets) ? options.stylesheets : [options.stylesheets];\r\n } else {\r\n stylesheets = Array.prototype.slice\r\n .call(document.getElementsByTagName('link'))\r\n .map(link => link);\r\n }\r\n\r\n stylesheets.forEach((f: any) => {\r\n html.push(`<link rel=\"${f.rel}\" href=\"${f.href}\">`);\r\n });\r\n\r\n // If inline styles or list of inline styles are specified, override inline styles\r\n if (options.styles) {\r\n styles = Array.isArray(options.styles) ? [...options.styles, BUILD_STYLE(_H)] : [options.styles + BUILD_STYLE(_H)];\r\n } else {\r\n styles = Array.prototype.slice\r\n .call(document.getElementsByTagName('style'))\r\n .map(style => style.innerHTML);\r\n }\r\n\r\n styles.forEach((style: any) => {\r\n html.push(`<style type=\"text/css\">${style}</style>`);\r\n });\r\n\r\n html.push(`<base href=\"${getBaseHref(options)}\"/>`);\r\n html.push(`</head><body class=\"${_H.classNameUID}\">`);\r\n html.push(element);\r\n html.push('</body></html>');\r\n\r\n return html.join('');\r\n};\r\n\r\n/**\r\n * Print window.open\r\n * @param element \r\n * @param selfOptions \r\n * @param as \r\n */\r\nexport const printElementWindow = (element: ElementRef<any>, selfOptions = {}, as: Subject<any>) => {\r\n try {\r\n const options = { ...defaultOptions, ...selfOptions };\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // New window\r\n const printWindow = window.open('about:blank', 'printElementWindow', options.popupProperties) as any;\r\n const printDocument = printWindow && printWindow.document as any;\r\n\r\n // Get markup to be printed\r\n const markup = getMarkup(container, options, _H);\r\n\r\n ADD_STYLE_HEAD(_H);\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n printDocument.close();\r\n setTimeout(() => {\r\n printWindow.close();\r\n REMOVE_STYLE_HEAD(_H);\r\n }, 1000);\r\n };\r\n\r\n // Print\r\n printWindow.focus();\r\n printDocument.write(markup);\r\n onPrintFinished(printWindow.print());\r\n printWindow.onbeforeprint = (event: any) => AS_COMPLETE(as, event);\r\n printWindow.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n};\r\n\r\n/**\r\n * Print iFrame\r\n * @param element \r\n * @param selfOptions \r\n * @param as \r\n */\r\nexport const printIFrame = (element: ElementRef<any>, selfOptions = {}, as: Subject<any>,) => {\r\n try {\r\n // Declare\r\n const options = { ...defaultOptions, ...selfOptions };\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // Get markup to be printed\r\n const markup = getMarkup(container, options, _H);\r\n\r\n // Create iframe\r\n let iframe = document.createElement('iframe') as HTMLIFrameElement | any;\r\n iframe.setAttribute('id', 'iframe-' + _H.classNameUID);\r\n iframe.setAttribute('class', 'iframe-' + _H.classNameUID);\r\n iframe.setAttribute('src', 'about:blank');\r\n iframe.setAttribute('frameBorder', '0');\r\n iframe.setAttribute('scrolling', 'no');\r\n iframe.setAttribute('style', 'position:fixed;bottom:100%;right:100%;');\r\n document.body.appendChild(iframe);\r\n\r\n let iDocument: any = null;\r\n if (iframe.contentDocument) {\r\n iDocument = iframe.contentDocument;\r\n } else if (iframe.contentWindow) {\r\n iDocument = iframe.contentWindow.document;\r\n }\r\n\r\n ADD_STYLE_HEAD(_H);\r\n\r\n // SetTimeout fixesiframe printMode does not work in firefox\r\n setTimeout(() => {\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n setTimeout(() => {\r\n iDocument.close();\r\n REMOVE_STYLE_HEAD(_H);\r\n });\r\n };\r\n\r\n // Print\r\n iframe.contentWindow.focus();\r\n onPrintFinished(iframe.contentWindow.print());\r\n iDocument.open();\r\n iDocument.write(markup);\r\n iframe.contentWindow.onbeforeprint = (event: any) => {\r\n setTimeout(() => document.body.removeChild(iframe));\r\n AS_COMPLETE(as, event);\r\n }\r\n iframe.contentWindow.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n });\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n}\r\n\r\n/**\r\n * Print default\r\n * @param element \r\n * @param renderer \r\n * @param as \r\n */\r\nexport const printDefault = (element: ElementRef<any>, renderer: Renderer2, as: Subject<any>) => {\r\n try {\r\n // Declare\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // Add visibility hidden into body\r\n const bodyEl = document.querySelector('body');\r\n if (bodyEl) {\r\n bodyEl.style.visibility = 'hidden';\r\n renderer.addClass(container, _H.classNameUID);\r\n ADD_STYLE_HEAD(_H);\r\n }\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n // Clear visibility: hidden\r\n bodyEl && (bodyEl.style.visibility = '');\r\n renderer.setAttribute(container, 'class', container.className.replace(_H.classNameUID, ''));\r\n REMOVE_STYLE_HEAD(_H);\r\n };\r\n\r\n // Print\r\n window.focus();\r\n onPrintFinished(window.print());\r\n window.onbeforeprint = (event: any) => AS_COMPLETE(as, event);\r\n window.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Rxjs complete\r\n * @param as \r\n * @param data \r\n * @param error \r\n */\r\nexport const AS_COMPLETE = (as: Subject<any>, data: any, error = null) => {\r\n error ? as.error(error) : as.next(data);\r\n};\r\n","import { ElementRef, Injectable, Renderer2 } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { printDefault, printElementWindow, printIFrame } from './ngx-print-element.helper';\r\n\r\nexport interface Config {\r\n htmlType?: string;\r\n printMode?: string;\r\n pageTitle?: string;\r\n templateString?: string;\r\n popupProperties?: string;\r\n stylesheets?: {\r\n rel?: string,\r\n href?: string\r\n }[],\r\n styles?: string[];\r\n baseHref?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxPrintElementService {\r\n\r\n public renderer!: Renderer2;\r\n\r\n /**\r\n * Print\r\n * @param element \r\n * @param config \r\n * @returns \r\n */\r\n public print(element: ElementRef<any>, config?: Config): Subject<any> {\r\n const as = new Subject();\r\n // Create and insert new print section\r\n if (element) {\r\n // Element\r\n if (config) {\r\n // Config\r\n if (config.printMode === 'template') {\r\n // iframe\r\n printIFrame(element, config, as);\r\n }\r\n if (config.printMode === 'template-popup') {\r\n // windows\r\n printElementWindow(element, config, as);\r\n }\r\n } else {\r\n // No config\r\n printDefault(element, this.renderer, as);\r\n }\r\n }\r\n return as;\r\n }\r\n}\r\n","import { Directive, OnInit, Renderer2 } from '@angular/core';\r\nimport { NgxPrintElementService } from './ngx-print-element.service';\r\n\r\n@Directive({\r\n selector: '[ngxPrintElement]'\r\n})\r\nexport class NgxPrintElementDirective implements OnInit {\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n private prints: NgxPrintElementService\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.prints.renderer = this.renderer;\r\n }\r\n}\r\n","import { Component, ElementRef } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Config, NgxPrintElementService } from './ngx-print-element.service';\r\n\r\n@Component({\r\n selector: 'ngx-print-element',\r\n template: `<ng-content></ng-content>`,\r\n exportAs: 'element'\r\n})\r\nexport class NgxPrintElementComponent {\r\n\r\n constructor(private prints: NgxPrintElementService) { }\r\n\r\n /**\r\n * Print\r\n * @param elementRef \r\n * @param config \r\n * @returns \r\n */\r\n public print(elementRef: ElementRef<any>, config?: Config): Subject<any> {\r\n return this.prints.print(elementRef, config);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { NgxPrintElementComponent } from './ngx-print-element.component';\r\nimport { NgxPrintElementDirective } from './ngx-print-element.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxPrintElementComponent,\r\n NgxPrintElementDirective\r\n ],\r\n exports: [\r\n NgxPrintElementComponent,\r\n NgxPrintElementDirective\r\n ]\r\n})\r\nexport class NgxPrintElementModule { }","/*\r\n * Public API Surface of ngx-print-element\r\n */\r\n\r\nexport * from './lib/ngx-print-element.directive';\r\nexport * from './lib/ngx-print-element.service';\r\nexport * from './lib/ngx-print-element.component';\r\nexport * from './lib/ngx-print-element.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxPrintElementService"],"mappings":";;;;AAIA,MAAM,cAAc,GAAW;AAC7B,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,SAAS,EAAE,UAAU;AACrB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,cAAc,EAAE,EAAE;AAClB,IAAA,eAAe,EAAE,EAAE;AACnB,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,QAAQ,EAAE,EAAE;CACb,CAAC;AASF;;;AAGG;AACH,MAAM,IAAI,GAAG,MAAS;IACpB,MAAM,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,IAAA,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC5D,IAAA,MAAM,YAAY,GAAG,CAAqB,kBAAA,EAAA,EAAE,EAAE,CAAC;AAC/C,IAAA,MAAM,aAAa,GAAG,CAA0B,uBAAA,EAAA,EAAE,EAAE,CAAC;AACrD,IAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AAC/C,CAAC,CAAA;AAED;;;AAGG;AACH,MAAM,cAAc,GAAG,CAAC,EAAM,KAAI;IAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,IAAA,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,EAAE,CAAC;AACjC,IAAA,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC,CAAA;AAED;;;;AAIG;AACH,MAAM,WAAW,GAAG,CAAC,EAAM,KAAY;IACrC,OAAO,CAAA;;AAEF,KAAA,EAAA,EAAE,CAAC,YAAY,CAAA;AACf,KAAA,EAAA,EAAE,CAAC,YAAY,CAAA;;;AAGf,KAAA,EAAA,EAAE,CAAC,YAAY,CAAA;;;;;AAKf,KAAA,EAAA,EAAE,CAAC,YAAY,CAAA;;;;AAIQ,4BAAA,EAAA,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAClD,CAAA;AACJ,CAAC,CAAC;AAEF;;;AAGG;AACH,MAAM,iBAAiB,GAAG,CAAC,EAAM,KAAI;IACnC,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;AAChE,IAAA,IAAI,aAAa,EAAE;AACjB,QAAA,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACpC,KAAA;AACH,CAAC,CAAA;AAED;;;;AAIG;AACI,MAAM,WAAW,GAAG,CAAC,OAAe,KAAI;IAC7C,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAI,CAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;IACtE,MAAM,QAAQ,GAAG,CAAG,EAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAA,EAAA,EAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAG,EAAA,IAAI,CAAG,EAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAA,CAAE,CAAC;AAC9G,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAChE,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF;;;;;;;AAOG;AACI,MAAM,SAAS,GAAG,CAAC,OAAY,EAAE,OAAe,EAAE,EAAM,KAAI;AACjE,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;AACxC,IAAA,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAC1D,IAAA,IAAI,WAAW,CAAC;AAChB,IAAA,IAAI,MAAM,CAAC;IACX,MAAM,IAAI,GAAG,EAAE,CAAC;AAEhB,IAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACjC,QAAA,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;AAC7B,KAAA;AAED,IAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE;AAC/B,QAAA,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;AAC7B,KAAA;IAED,IAAI,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAC5C,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACpD,KAAA;IAED,IAAI,CAAC,IAAI,CAAC,CAAsB,mBAAA,EAAA,OAAO,CAAC,SAAS,IAAI,EAAE,CAAU,QAAA,CAAA,CAAC,CAAC;;IAGnE,IAAI,OAAO,CAAC,WAAW,EAAE;QACvB,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAChG,KAAA;AAAM,SAAA;AACL,QAAA,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK;AAChC,aAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC3C,aAAA,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AACtB,KAAA;AAED,IAAA,WAAW,CAAC,OAAO,CAAC,CAAC,CAAM,KAAI;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,CAAA,WAAA,EAAc,CAAC,CAAC,GAAG,CAAA,QAAA,EAAW,CAAC,CAAC,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;AACtD,KAAC,CAAC,CAAC;;IAGH,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,QAAA,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AACpH,KAAA;AAAM,SAAA;AACL,QAAA,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK;AAC3B,aAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;aAC5C,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;AAClC,KAAA;AAED,IAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAU,KAAI;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAA,QAAA,CAAU,CAAC,CAAC;AACvD,KAAC,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,CAAC,CAAe,YAAA,EAAA,WAAW,CAAC,OAAO,CAAC,CAAK,GAAA,CAAA,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI,CAAC,CAAA,oBAAA,EAAuB,EAAE,CAAC,YAAY,CAAI,EAAA,CAAA,CAAC,CAAC;AACtD,IAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,IAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAE5B,IAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF;;;;;AAKG;AACI,MAAM,kBAAkB,GAAG,CAAC,OAAwB,EAAE,WAAW,GAAG,EAAE,EAAE,EAAgB,KAAI;IACjG,IAAI;QACF,MAAM,OAAO,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;AACtD,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;AACxC,QAAA,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;;AAGlB,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,OAAO,CAAC,eAAe,CAAQ,CAAC;AACrG,QAAA,MAAM,aAAa,GAAG,WAAW,IAAI,WAAW,CAAC,QAAe,CAAC;;QAGjE,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAEjD,cAAc,CAAC,EAAE,CAAC,CAAC;;AAGnB,QAAA,MAAM,eAAe,GAAG,CAAC,OAAY,KAAI;YACvC,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,UAAU,CAAC,MAAK;gBACd,WAAW,CAAC,KAAK,EAAE,CAAC;gBACpB,iBAAiB,CAAC,EAAE,CAAC,CAAC;aACvB,EAAE,IAAI,CAAC,CAAC;AACX,SAAC,CAAC;;QAGF,WAAW,CAAC,KAAK,EAAE,CAAC;AACpB,QAAA,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5B,QAAA,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AACrC,QAAA,WAAW,CAAC,aAAa,GAAG,CAAC,KAAU,KAAK,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACnE,QAAA,WAAW,CAAC,YAAY,GAAG,CAAC,KAAU,KAAK,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACnE,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACd,QAAA,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACxB,KAAA;AACH,CAAC,CAAC;AAEF;;;;;AAKG;AACI,MAAM,WAAW,GAAG,CAAC,OAAwB,EAAE,WAAW,GAAG,EAAE,EAAE,EAAgB,KAAK;IAC3F,IAAI;;QAEF,MAAM,OAAO,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;AACtD,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;AACxC,QAAA,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;;QAGlB,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;;QAGjD,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAA4B,CAAC;QACzE,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;AAC1D,QAAA,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC1C,QAAA,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACxC,QAAA,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACvC,QAAA,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,wCAAwC,CAAC,CAAC;AACvE,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,SAAS,GAAQ,IAAI,CAAC;QAC1B,IAAI,MAAM,CAAC,eAAe,EAAE;AAC1B,YAAA,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC;AACpC,SAAA;aAAM,IAAI,MAAM,CAAC,aAAa,EAAE;AAC/B,YAAA,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC3C,SAAA;QAED,cAAc,CAAC,EAAE,CAAC,CAAC;;QAGnB,UAAU,CAAC,MAAK;;AAGd,YAAA,MAAM,eAAe,GAAG,CAAC,OAAY,KAAI;gBACvC,UAAU,CAAC,MAAK;oBACd,SAAS,CAAC,KAAK,EAAE,CAAC;oBAClB,iBAAiB,CAAC,EAAE,CAAC,CAAC;AACxB,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC;;AAGF,YAAA,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC7B,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9C,SAAS,CAAC,IAAI,EAAE,CAAC;AACjB,YAAA,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxB,MAAM,CAAC,aAAa,CAAC,aAAa,GAAG,CAAC,KAAU,KAAI;AAClD,gBAAA,UAAU,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,gBAAA,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACzB,aAAC,CAAA;AACD,YAAA,MAAM,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC,KAAU,KAAK,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7E,SAAC,CAAC,CAAC;AACJ,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACd,QAAA,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACxB,KAAA;AACH,CAAC,CAAA;AAED;;;;;AAKG;AACI,MAAM,YAAY,GAAG,CAAC,OAAwB,EAAE,QAAmB,EAAE,EAAgB,KAAI;IAC9F,IAAI;;AAEF,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;AACxC,QAAA,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;;QAGlB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9C,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;YACnC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;YAC9C,cAAc,CAAC,EAAE,CAAC,CAAC;AACpB,SAAA;;AAGD,QAAA,MAAM,eAAe,GAAG,CAAC,OAAY,KAAI;;YAEvC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;YACzC,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5F,iBAAiB,CAAC,EAAE,CAAC,CAAC;AACxB,SAAC,CAAC;;QAGF,MAAM,CAAC,KAAK,EAAE,CAAC;AACf,QAAA,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAChC,QAAA,MAAM,CAAC,aAAa,GAAG,CAAC,KAAU,KAAK,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9D,QAAA,MAAM,CAAC,YAAY,GAAG,CAAC,KAAU,KAAK,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9D,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACd,QAAA,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACxB,KAAA;AACH,CAAC,CAAA;AAGD;;;;;AAKG;AACI,MAAM,WAAW,GAAG,CAAC,EAAgB,EAAE,IAAS,EAAE,KAAK,GAAG,IAAI,KAAI;AACvE,IAAA,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;;AChSD,MAGa,sBAAsB,CAAA;AAIjC;;;;;AAKG;IACI,KAAK,CAAC,OAAwB,EAAE,MAAe,EAAA;AACpD,QAAA,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;;AAEzB,QAAA,IAAI,OAAO,EAAE;;AAEX,YAAA,IAAI,MAAM,EAAE;;AAEV,gBAAA,IAAI,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE;;AAEnC,oBAAA,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAClC,iBAAA;AACD,gBAAA,IAAI,MAAM,CAAC,SAAS,KAAK,gBAAgB,EAAE;;AAEzC,oBAAA,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACzC,iBAAA;AACF,aAAA;AAAM,iBAAA;;gBAEL,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC1C,aAAA;AACF,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACX;8GA/BU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACjBD,MAGa,wBAAwB,CAAA;IAEnC,WACU,CAAA,QAAmB,EACnB,MAA8B,EAAA;QAD9B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAwB;KAEvC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;KACtC;8GAVU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAxB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA,CAAA;;;ACDD,MAKa,wBAAwB,CAAA;AAEnC,IAAA,WAAA,CAAoB,MAA8B,EAAA;QAA9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAwB;KAAK;AAEvD;;;;;AAKG;IACI,KAAK,CAAC,UAA2B,EAAE,MAAe,EAAA;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;KAC9C;8GAZU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,gFAHzB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAG1B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,QAAQ,EAAE,SAAS;AACpB,iBAAA,CAAA;;;ACHD,MAUa,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAR9B,wBAAwB;AACxB,YAAA,wBAAwB,aAGxB,wBAAwB;YACxB,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAGf,qBAAqB,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,wBAAwB;wBACxB,wBAAwB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,wBAAwB;wBACxB,wBAAwB;AACzB,qBAAA;AACF,iBAAA,CAAA;;;ACdD;;AAEG;;ACFH;;AAEG;;;;"}
{"version":3,"file":"ngx-print-element.mjs","sources":["../../../projects/ngx-print-element/src/lib/ngx-print-element.helper.ts","../../../projects/ngx-print-element/src/lib/ngx-print-element.service.ts","../../../projects/ngx-print-element/src/lib/ngx-print-element.directive.ts","../../../projects/ngx-print-element/src/lib/ngx-print-element.component.ts","../../../projects/ngx-print-element/src/lib/ngx-print-element.module.ts","../../../projects/ngx-print-element/src/public-api.ts","../../../projects/ngx-print-element/src/ngx-print-element.ts"],"sourcesContent":["import { ElementRef, Renderer2 } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\nimport { Config } from \"./ngx-print-element.service\";\r\n\r\nconst defaultOptions: Config = {\r\n htmlType: 'domObj',\r\n printMode: 'template',\r\n pageTitle: '',\r\n templateString: '',\r\n popupProperties: '',\r\n stylesheets: [],\r\n styles: [],\r\n baseHref: ''\r\n};\r\n\r\n\r\ninterface _H {\r\n head: HTMLHeadElement;\r\n classNameUID: string;\r\n idNameHeadUID: string;\r\n}\r\n\r\n/**\r\n * HEAD Element\r\n * @returns \r\n */\r\nconst HEAD = (): _H => {\r\n const head = document.getElementsByTagName('head')[0];\r\n const ID = (Math.round(Math.random() * 9999999)).toString();\r\n const classNameUID = `ngx-print-element-${ID}`;\r\n const idNameHeadUID = `ngx-print-element-head-${ID}`;\r\n return { head, classNameUID, idNameHeadUID };\r\n}\r\n\r\n/**\r\n * ADD_STYLE_HEAD\r\n * @param _H \r\n */\r\nconst ADD_STYLE_HEAD = (_H: _H) => {\r\n const style = document.createElement('style');\r\n style.innerHTML = BUILD_STYLE(_H);\r\n style.id = `${_H.idNameHeadUID}`;\r\n _H.head.appendChild(style);\r\n}\r\n\r\n/**\r\n * BUILD_STYLE\r\n * @param _H \r\n * @returns \r\n */\r\nconst BUILD_STYLE = (_H: _H): string => {\r\n return `\r\n @media print {\r\n .${_H.classNameUID},\r\n .${_H.classNameUID} * {\r\n visibility: visible;\r\n }\r\n .${_H.classNameUID} {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n }\r\n .${_H.classNameUID} .print-none {\r\n display: none !important;\r\n }\r\n /* ----- Author: DaiDH ----- */\r\n /* Copyright (C) 2022 - ${new Date().getFullYear()} */\r\n }`\r\n};\r\n\r\n/**\r\n * REMOVE_STYLE_HEAD\r\n * @param _H \r\n */\r\nconst REMOVE_STYLE_HEAD = (_H: _H) => {\r\n const styleToRemove = document.getElementById(_H.idNameHeadUID);\r\n if (styleToRemove) {\r\n _H.head.removeChild(styleToRemove);\r\n }\r\n}\r\n\r\n/**\r\n * getBaseHref\r\n * @param options \r\n * @returns \r\n */\r\nexport const getBaseHref = (options: Config) => {\r\n const port = (window.location.port) ? `:${window.location.port}` : '';\r\n const buildURL = `${window.location.protocol}//${window.location.hostname}${port}${window.location.pathname}`;\r\n const finalURL = options.baseHref ? options.baseHref : buildURL;\r\n return finalURL;\r\n};\r\n\r\n/**\r\n * getMarkup\r\n * print-html-element\r\n * @param element \r\n * @param options \r\n * @param _H \r\n * @returns \r\n */\r\nexport const getMarkup = (element: any, options: Config, _H: _H) => {\r\n const template = options.templateString;\r\n const templateRegex = new RegExp(/{{\\s*printBody\\s*}}/gi);\r\n let stylesheets;\r\n let styles;\r\n const html = [];\r\n\r\n if (options.htmlType === 'domObj') {\r\n element = element.outerHTML;\r\n }\r\n\r\n if (options.htmlType === 'text') {\r\n element = element.innerText;\r\n }\r\n\r\n if (template && templateRegex.test(template)) {\r\n element = template.replace(templateRegex, element);\r\n }\r\n\r\n html.push(`<html><head><title>${options.pageTitle || ''}</title>`);\r\n\r\n // If stylesheet URL's or list of stylesheet URL's are specified, override page stylesheets\r\n if (options.stylesheets) {\r\n stylesheets = Array.isArray(options.stylesheets) ? options.stylesheets : [options.stylesheets];\r\n } else {\r\n stylesheets = Array.prototype.slice\r\n .call(document.getElementsByTagName('link'))\r\n .map(link => link);\r\n }\r\n\r\n stylesheets.forEach((f: any) => {\r\n html.push(`<link rel=\"${f.rel}\" href=\"${f.href}\">`);\r\n });\r\n\r\n // If inline styles or list of inline styles are specified, override inline styles\r\n if (options.styles) {\r\n styles = Array.isArray(options.styles) ? [...options.styles, BUILD_STYLE(_H)] : [options.styles + BUILD_STYLE(_H)];\r\n } else {\r\n styles = Array.prototype.slice\r\n .call(document.getElementsByTagName('style'))\r\n .map(style => style.innerHTML);\r\n }\r\n\r\n styles.forEach((style: any) => {\r\n html.push(`<style type=\"text/css\">${style}</style>`);\r\n });\r\n\r\n html.push(`<base href=\"${getBaseHref(options)}\"/>`);\r\n html.push(`</head><body class=\"${_H.classNameUID}\">`);\r\n html.push(element);\r\n html.push('</body></html>');\r\n\r\n return html.join('');\r\n};\r\n\r\n/**\r\n * Print window.open\r\n * @param element \r\n * @param selfOptions \r\n * @param as \r\n */\r\nexport const printElementWindow = (element: ElementRef<any>, selfOptions = {}, as: Subject<any>) => {\r\n try {\r\n const options = { ...defaultOptions, ...selfOptions };\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // New window\r\n const printWindow = window.open('about:blank', 'printElementWindow', options.popupProperties) as any;\r\n const printDocument = printWindow && printWindow.document as any;\r\n\r\n // Get markup to be printed\r\n const markup = getMarkup(container, options, _H);\r\n\r\n ADD_STYLE_HEAD(_H);\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n printDocument.close();\r\n setTimeout(() => {\r\n printWindow.close();\r\n REMOVE_STYLE_HEAD(_H);\r\n }, 1000);\r\n };\r\n\r\n // Print\r\n printWindow.focus();\r\n printDocument.write(markup);\r\n onPrintFinished(printWindow.print());\r\n printWindow.onbeforeprint = (event: any) => AS_COMPLETE(as, event);\r\n printWindow.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n};\r\n\r\n/**\r\n * Print iFrame\r\n * @param element \r\n * @param selfOptions \r\n * @param as \r\n */\r\nexport const printIFrame = (element: ElementRef<any>, selfOptions = {}, as: Subject<any>,) => {\r\n try {\r\n // Declare\r\n const options = { ...defaultOptions, ...selfOptions };\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // Get markup to be printed\r\n const markup = getMarkup(container, options, _H);\r\n\r\n // Create iframe\r\n let iframe = document.createElement('iframe') as HTMLIFrameElement | any;\r\n iframe.setAttribute('id', 'iframe-' + _H.classNameUID);\r\n iframe.setAttribute('class', 'iframe-' + _H.classNameUID);\r\n iframe.setAttribute('src', 'about:blank');\r\n iframe.setAttribute('frameBorder', '0');\r\n iframe.setAttribute('scrolling', 'no');\r\n iframe.setAttribute('style', 'position:fixed;bottom:100%;right:100%;');\r\n document.body.appendChild(iframe);\r\n\r\n let iDocument: any = null;\r\n if (iframe.contentDocument) {\r\n iDocument = iframe.contentDocument;\r\n } else if (iframe.contentWindow) {\r\n iDocument = iframe.contentWindow.document;\r\n }\r\n\r\n ADD_STYLE_HEAD(_H);\r\n\r\n // SetTimeout fixesiframe printMode does not work in firefox\r\n setTimeout(() => {\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n setTimeout(() => {\r\n iDocument.close();\r\n REMOVE_STYLE_HEAD(_H);\r\n });\r\n };\r\n\r\n // Print\r\n iframe.contentWindow.focus();\r\n onPrintFinished(iframe.contentWindow.print());\r\n iDocument.open();\r\n iDocument.write(markup);\r\n iframe.contentWindow.onbeforeprint = (event: any) => {\r\n setTimeout(() => document.body.removeChild(iframe));\r\n AS_COMPLETE(as, event);\r\n }\r\n iframe.contentWindow.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n });\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n}\r\n\r\n/**\r\n * Print default\r\n * @param element \r\n * @param renderer \r\n * @param as \r\n */\r\nexport const printDefault = (element: ElementRef<any>, renderer: Renderer2, as: Subject<any>) => {\r\n try {\r\n // Declare\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // Add visibility hidden into body\r\n const bodyEl = document.querySelector('body');\r\n if (bodyEl) {\r\n bodyEl.style.visibility = 'hidden';\r\n renderer.addClass(container, _H.classNameUID);\r\n ADD_STYLE_HEAD(_H);\r\n }\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n // window.close();\r\n // Clear visibility: hidden\r\n bodyEl && (bodyEl.style.visibility = '');\r\n renderer.setAttribute(container, 'class', container.className.replace(_H.classNameUID, ''));\r\n REMOVE_STYLE_HEAD(_H);\r\n };\r\n\r\n // Print\r\n window.focus();\r\n onPrintFinished(window.print());\r\n window.onbeforeprint = (event: any) => AS_COMPLETE(as, event);\r\n window.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Rxjs complete\r\n * @param as \r\n * @param data \r\n * @param error \r\n */\r\nexport const AS_COMPLETE = (as: Subject<any>, data: any, error = null) => {\r\n error ? as.error(error) : as.next(data);\r\n};\r\n","import { ElementRef, Injectable, Renderer2 } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { printDefault, printElementWindow, printIFrame } from './ngx-print-element.helper';\r\n\r\nexport interface Config {\r\n htmlType?: string;\r\n printMode?: string;\r\n pageTitle?: string;\r\n templateString?: string;\r\n popupProperties?: string;\r\n stylesheets?: {\r\n rel?: string,\r\n href?: string\r\n }[],\r\n styles?: string[];\r\n baseHref?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxPrintElementService {\r\n\r\n public renderer!: Renderer2;\r\n\r\n /**\r\n * Print\r\n * @param element \r\n * @param config \r\n * @returns \r\n */\r\n public print(element: ElementRef<any>, config?: Config): Subject<any> {\r\n const as = new Subject();\r\n // Create and insert new print section\r\n if (element) {\r\n // Element\r\n if (config) {\r\n // Config\r\n if (config.printMode === 'template') {\r\n // iframe\r\n printIFrame(element, config, as);\r\n }\r\n if (config.printMode === 'template-popup') {\r\n // windows\r\n printElementWindow(element, config, as);\r\n }\r\n } else {\r\n // No config\r\n printDefault(element, this.renderer, as);\r\n }\r\n }\r\n return as;\r\n }\r\n}\r\n","import { Directive, OnInit, Renderer2 } from '@angular/core';\r\nimport { NgxPrintElementService } from './ngx-print-element.service';\r\n\r\n@Directive({\r\n selector: '[ngxPrintElement]'\r\n})\r\nexport class NgxPrintElementDirective implements OnInit {\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n private prints: NgxPrintElementService\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.prints.renderer = this.renderer;\r\n }\r\n}\r\n","import { Component, ElementRef } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Config, NgxPrintElementService } from './ngx-print-element.service';\r\n\r\n@Component({\r\n selector: 'ngx-print-element',\r\n template: `<ng-content></ng-content>`,\r\n exportAs: 'element'\r\n})\r\nexport class NgxPrintElementComponent {\r\n\r\n constructor(private prints: NgxPrintElementService) { }\r\n\r\n /**\r\n * Print\r\n * @param elementRef \r\n * @param config \r\n * @returns \r\n */\r\n public print(elementRef: ElementRef<any>, config?: Config): Subject<any> {\r\n return this.prints.print(elementRef, config);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { NgxPrintElementComponent } from './ngx-print-element.component';\r\nimport { NgxPrintElementDirective } from './ngx-print-element.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxPrintElementComponent,\r\n NgxPrintElementDirective\r\n ],\r\n exports: [\r\n NgxPrintElementComponent,\r\n NgxPrintElementDirective\r\n ]\r\n})\r\nexport class NgxPrintElementModule { }","/*\r\n * Public API Surface of ngx-print-element\r\n */\r\n\r\nexport * from './lib/ngx-print-element.directive';\r\nexport * from './lib/ngx-print-element.service';\r\nexport * from './lib/ngx-print-element.component';\r\nexport * from './lib/ngx-print-element.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxPrintElementService"],"mappings":";;;;AAIA,MAAM,cAAc,GAAW;AAC7B,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,SAAS,EAAE,UAAU;AACrB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,cAAc,EAAE,EAAE;AAClB,IAAA,eAAe,EAAE,EAAE;AACnB,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,QAAQ,EAAE,EAAE;CACb,CAAC;AASF;;;AAGG;AACH,MAAM,IAAI,GAAG,MAAS;IACpB,MAAM,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,IAAA,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC5D,IAAA,MAAM,YAAY,GAAG,CAAqB,kBAAA,EAAA,EAAE,EAAE,CAAC;AAC/C,IAAA,MAAM,aAAa,GAAG,CAA0B,uBAAA,EAAA,EAAE,EAAE,CAAC;AACrD,IAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AAC/C,CAAC,CAAA;AAED;;;AAGG;AACH,MAAM,cAAc,GAAG,CAAC,EAAM,KAAI;IAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,IAAA,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,EAAE,CAAC;AACjC,IAAA,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC,CAAA;AAED;;;;AAIG;AACH,MAAM,WAAW,GAAG,CAAC,EAAM,KAAY;IACrC,OAAO,CAAA;;AAEF,KAAA,EAAA,EAAE,CAAC,YAAY,CAAA;AACf,KAAA,EAAA,EAAE,CAAC,YAAY,CAAA;;;AAGf,KAAA,EAAA,EAAE,CAAC,YAAY,CAAA;;;;;AAKf,KAAA,EAAA,EAAE,CAAC,YAAY,CAAA;;;;AAIQ,4BAAA,EAAA,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAClD,CAAA;AACJ,CAAC,CAAC;AAEF;;;AAGG;AACH,MAAM,iBAAiB,GAAG,CAAC,EAAM,KAAI;IACnC,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;AAChE,IAAA,IAAI,aAAa,EAAE;AACjB,QAAA,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACpC,KAAA;AACH,CAAC,CAAA;AAED;;;;AAIG;AACI,MAAM,WAAW,GAAG,CAAC,OAAe,KAAI;IAC7C,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAI,CAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;IACtE,MAAM,QAAQ,GAAG,CAAG,EAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAA,EAAA,EAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAG,EAAA,IAAI,CAAG,EAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAA,CAAE,CAAC;AAC9G,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAChE,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF;;;;;;;AAOG;AACI,MAAM,SAAS,GAAG,CAAC,OAAY,EAAE,OAAe,EAAE,EAAM,KAAI;AACjE,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;AACxC,IAAA,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAC1D,IAAA,IAAI,WAAW,CAAC;AAChB,IAAA,IAAI,MAAM,CAAC;IACX,MAAM,IAAI,GAAG,EAAE,CAAC;AAEhB,IAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACjC,QAAA,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;AAC7B,KAAA;AAED,IAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE;AAC/B,QAAA,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;AAC7B,KAAA;IAED,IAAI,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAC5C,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACpD,KAAA;IAED,IAAI,CAAC,IAAI,CAAC,CAAsB,mBAAA,EAAA,OAAO,CAAC,SAAS,IAAI,EAAE,CAAU,QAAA,CAAA,CAAC,CAAC;;IAGnE,IAAI,OAAO,CAAC,WAAW,EAAE;QACvB,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAChG,KAAA;AAAM,SAAA;AACL,QAAA,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK;AAChC,aAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC3C,aAAA,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AACtB,KAAA;AAED,IAAA,WAAW,CAAC,OAAO,CAAC,CAAC,CAAM,KAAI;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,CAAA,WAAA,EAAc,CAAC,CAAC,GAAG,CAAA,QAAA,EAAW,CAAC,CAAC,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;AACtD,KAAC,CAAC,CAAC;;IAGH,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,QAAA,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AACpH,KAAA;AAAM,SAAA;AACL,QAAA,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK;AAC3B,aAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;aAC5C,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;AAClC,KAAA;AAED,IAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAU,KAAI;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAA,QAAA,CAAU,CAAC,CAAC;AACvD,KAAC,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,CAAC,CAAe,YAAA,EAAA,WAAW,CAAC,OAAO,CAAC,CAAK,GAAA,CAAA,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI,CAAC,CAAA,oBAAA,EAAuB,EAAE,CAAC,YAAY,CAAI,EAAA,CAAA,CAAC,CAAC;AACtD,IAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,IAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAE5B,IAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF;;;;;AAKG;AACI,MAAM,kBAAkB,GAAG,CAAC,OAAwB,EAAE,WAAW,GAAG,EAAE,EAAE,EAAgB,KAAI;IACjG,IAAI;QACF,MAAM,OAAO,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;AACtD,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;AACxC,QAAA,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;;AAGlB,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,OAAO,CAAC,eAAe,CAAQ,CAAC;AACrG,QAAA,MAAM,aAAa,GAAG,WAAW,IAAI,WAAW,CAAC,QAAe,CAAC;;QAGjE,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAEjD,cAAc,CAAC,EAAE,CAAC,CAAC;;AAGnB,QAAA,MAAM,eAAe,GAAG,CAAC,OAAY,KAAI;YACvC,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,UAAU,CAAC,MAAK;gBACd,WAAW,CAAC,KAAK,EAAE,CAAC;gBACpB,iBAAiB,CAAC,EAAE,CAAC,CAAC;aACvB,EAAE,IAAI,CAAC,CAAC;AACX,SAAC,CAAC;;QAGF,WAAW,CAAC,KAAK,EAAE,CAAC;AACpB,QAAA,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5B,QAAA,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AACrC,QAAA,WAAW,CAAC,aAAa,GAAG,CAAC,KAAU,KAAK,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACnE,QAAA,WAAW,CAAC,YAAY,GAAG,CAAC,KAAU,KAAK,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACnE,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACd,QAAA,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACxB,KAAA;AACH,CAAC,CAAC;AAEF;;;;;AAKG;AACI,MAAM,WAAW,GAAG,CAAC,OAAwB,EAAE,WAAW,GAAG,EAAE,EAAE,EAAgB,KAAK;IAC3F,IAAI;;QAEF,MAAM,OAAO,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;AACtD,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;AACxC,QAAA,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;;QAGlB,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;;QAGjD,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAA4B,CAAC;QACzE,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;AAC1D,QAAA,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC1C,QAAA,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACxC,QAAA,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACvC,QAAA,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,wCAAwC,CAAC,CAAC;AACvE,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,SAAS,GAAQ,IAAI,CAAC;QAC1B,IAAI,MAAM,CAAC,eAAe,EAAE;AAC1B,YAAA,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC;AACpC,SAAA;aAAM,IAAI,MAAM,CAAC,aAAa,EAAE;AAC/B,YAAA,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC3C,SAAA;QAED,cAAc,CAAC,EAAE,CAAC,CAAC;;QAGnB,UAAU,CAAC,MAAK;;AAGd,YAAA,MAAM,eAAe,GAAG,CAAC,OAAY,KAAI;gBACvC,UAAU,CAAC,MAAK;oBACd,SAAS,CAAC,KAAK,EAAE,CAAC;oBAClB,iBAAiB,CAAC,EAAE,CAAC,CAAC;AACxB,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC;;AAGF,YAAA,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC7B,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9C,SAAS,CAAC,IAAI,EAAE,CAAC;AACjB,YAAA,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxB,MAAM,CAAC,aAAa,CAAC,aAAa,GAAG,CAAC,KAAU,KAAI;AAClD,gBAAA,UAAU,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,gBAAA,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACzB,aAAC,CAAA;AACD,YAAA,MAAM,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC,KAAU,KAAK,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7E,SAAC,CAAC,CAAC;AACJ,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACd,QAAA,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACxB,KAAA;AACH,CAAC,CAAA;AAED;;;;;AAKG;AACI,MAAM,YAAY,GAAG,CAAC,OAAwB,EAAE,QAAmB,EAAE,EAAgB,KAAI;IAC9F,IAAI;;AAEF,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;AACxC,QAAA,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;;QAGlB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9C,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;YACnC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;YAC9C,cAAc,CAAC,EAAE,CAAC,CAAC;AACpB,SAAA;;AAGD,QAAA,MAAM,eAAe,GAAG,CAAC,OAAY,KAAI;;;YAGvC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;YACzC,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5F,iBAAiB,CAAC,EAAE,CAAC,CAAC;AACxB,SAAC,CAAC;;QAGF,MAAM,CAAC,KAAK,EAAE,CAAC;AACf,QAAA,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAChC,QAAA,MAAM,CAAC,aAAa,GAAG,CAAC,KAAU,KAAK,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9D,QAAA,MAAM,CAAC,YAAY,GAAG,CAAC,KAAU,KAAK,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9D,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACd,QAAA,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACxB,KAAA;AACH,CAAC,CAAA;AAGD;;;;;AAKG;AACI,MAAM,WAAW,GAAG,CAAC,EAAgB,EAAE,IAAS,EAAE,KAAK,GAAG,IAAI,KAAI;AACvE,IAAA,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;;ACjSD,MAGa,sBAAsB,CAAA;AAIjC;;;;;AAKG;IACI,KAAK,CAAC,OAAwB,EAAE,MAAe,EAAA;AACpD,QAAA,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;;AAEzB,QAAA,IAAI,OAAO,EAAE;;AAEX,YAAA,IAAI,MAAM,EAAE;;AAEV,gBAAA,IAAI,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE;;AAEnC,oBAAA,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAClC,iBAAA;AACD,gBAAA,IAAI,MAAM,CAAC,SAAS,KAAK,gBAAgB,EAAE;;AAEzC,oBAAA,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACzC,iBAAA;AACF,aAAA;AAAM,iBAAA;;gBAEL,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC1C,aAAA;AACF,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GA/BU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACjBD,MAGa,wBAAwB,CAAA;IAEnC,WACU,CAAA,QAAmB,EACnB,MAA8B,EAAA;QAD9B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAwB;KAEvC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;KACtC;+GAVU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAxB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA,CAAA;;;ACDD,MAKa,wBAAwB,CAAA;AAEnC,IAAA,WAAA,CAAoB,MAA8B,EAAA;QAA9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAwB;KAAK;AAEvD;;;;;AAKG;IACI,KAAK,CAAC,UAA2B,EAAE,MAAe,EAAA;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;KAC9C;+GAZU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,gFAHzB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAG1B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,QAAQ,EAAE,SAAS;AACpB,iBAAA,CAAA;;;ACHD,MAUa,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAR9B,wBAAwB;AACxB,YAAA,wBAAwB,aAGxB,wBAAwB;YACxB,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAGf,qBAAqB,EAAA,CAAA,CAAA,EAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,wBAAwB;wBACxB,wBAAwB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,wBAAwB;wBACxB,wBAAwB;AACzB,qBAAA;AACF,iBAAA,CAAA;;;ACdD;;AAEG;;ACFH;;AAEG;;;;"}
import { ElementRef } from '@angular/core';
import { Subject } from 'rxjs';
import { Config, NgxPrintElementService } from './ngx-print-element.service';
import * as i0 from "@angular/core";
export declare class NgxPrintElementComponent {

@@ -14,2 +15,4 @@ private prints;

print(elementRef: ElementRef<any>, config?: Config): Subject<any>;
static ɵfac: i0.ɵɵFactoryDeclaration<NgxPrintElementComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<NgxPrintElementComponent, "ngx-print-element", ["element"], {}, {}, never, ["*"], false, never>;
}
import { OnInit, Renderer2 } from '@angular/core';
import { NgxPrintElementService } from './ngx-print-element.service';
import * as i0 from "@angular/core";
export declare class NgxPrintElementDirective implements OnInit {

@@ -8,2 +9,4 @@ private renderer;

ngOnInit(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<NgxPrintElementDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NgxPrintElementDirective, "[ngxPrintElement]", never, {}, {}, never, never, false, never>;
}

@@ -30,3 +30,3 @@ import { ElementRef, Renderer2 } from "@angular/core";

*/
export declare const printElementWindow: (element: ElementRef<any>, selfOptions: {}, as: Subject<any>) => void;
export declare const printElementWindow: (element: ElementRef<any>, selfOptions: {} | undefined, as: Subject<any>) => void;
/**

@@ -38,3 +38,3 @@ * Print iFrame

*/
export declare const printIFrame: (element: ElementRef<any>, selfOptions: {}, as: Subject<any>) => void;
export declare const printIFrame: (element: ElementRef<any>, selfOptions: {} | undefined, as: Subject<any>) => void;
/**

@@ -53,3 +53,3 @@ * Print default

*/
export declare const AS_COMPLETE: (as: Subject<any>, data: any, error?: any) => void;
export declare const AS_COMPLETE: (as: Subject<any>, data: any, error?: null) => void;
export {};

@@ -0,2 +1,8 @@

import * as i0 from "@angular/core";
import * as i1 from "./ngx-print-element.component";
import * as i2 from "./ngx-print-element.directive";
export declare class NgxPrintElementModule {
static ɵfac: i0.ɵɵFactoryDeclaration<NgxPrintElementModule, never>;
static ɵmod: i0.ɵɵNgModuleDeclaration<NgxPrintElementModule, [typeof i1.NgxPrintElementComponent, typeof i2.NgxPrintElementDirective], never, [typeof i1.NgxPrintElementComponent, typeof i2.NgxPrintElementDirective]>;
static ɵinj: i0.ɵɵInjectorDeclaration<NgxPrintElementModule>;
}
import { ElementRef, Renderer2 } from '@angular/core';
import { Subject } from 'rxjs';
import * as i0 from "@angular/core";
export interface Config {

@@ -25,2 +26,4 @@ htmlType?: string;

print(element: ElementRef<any>, config?: Config): Subject<any>;
static ɵfac: i0.ɵɵFactoryDeclaration<NgxPrintElementService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<NgxPrintElementService>;
}
{
"name": "ngx-print-element",
"version": "2.1.3",
"version": "2.1.4-beta.1",
"description": "This library is built to provide a solution for printing on html elements.",

@@ -48,18 +48,22 @@ "keywords": [

"peerDependencies": {
"@angular/common": "^6.0.0-rc.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0",
"@angular/core": "^6.0.0-rc.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
"@angular/common": "^16.0.0 || ^17.0.0",
"@angular/core": "^16.0.0 || ^17.0.0"
},
"main": "bundles/ngx-print-element.umd.js",
"module": "fesm5/ngx-print-element.js",
"es2015": "fesm2015/ngx-print-element.js",
"esm5": "esm5/ngx-print-element.js",
"esm2015": "esm2015/ngx-print-element.js",
"fesm5": "fesm5/ngx-print-element.js",
"fesm2015": "fesm2015/ngx-print-element.js",
"typings": "ngx-print-element.d.ts",
"metadata": "ngx-print-element.metadata.json",
"dependencies": {
"tslib": "^2.3.0"
},
"sideEffects": false,
"dependencies": {
"tslib": "^1.9.0"
"module": "fesm2022/ngx-print-element.mjs",
"typings": "index.d.ts",
"exports": {
"./package.json": {
"default": "./package.json"
},
".": {
"types": "./index.d.ts",
"esm2022": "./esm2022/ngx-print-element.mjs",
"esm": "./esm2022/ngx-print-element.mjs",
"default": "./fesm2022/ngx-print-element.mjs"
}
}
}
}

@@ -136,2 +136,6 @@ # ngx-print-element

<tr>
<td>Angular 16</td>
<td>2.1.4</td>
</tr>
<tr>
<td>Angular 6</td>

@@ -179,2 +183,2 @@ <td>2.1.3</td>

[MIT License](https://github.com/id1945/ngx-print-element/blob/master/LICENSE). Copyright (c) 2022 DaiDH
[MIT License](https://github.com/id1945/ngx-print-element/blob/master/LICENSE). Copyright (c) 2022 DaiDH
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('rxjs'), require('@angular/core')) :
typeof define === 'function' && define.amd ? define('ngx-print-element', ['exports', 'rxjs', '@angular/core'], factory) :
(factory((global['ngx-print-element'] = {}),global.rxjs,global.ng.core));
}(this, (function (exports,rxjs,i0) { 'use strict';
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var __assign = function () {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m)
return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
ar.push(r.value);
}
catch (error) {
e = { error: error };
}
finally {
try {
if (r && !r.done && (m = i["return"]))
m.call(i);
}
finally {
if (e)
throw e.error;
}
}
return ar;
}
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var defaultOptions = {
htmlType: 'domObj',
printMode: 'template',
pageTitle: '',
templateString: '',
popupProperties: '',
stylesheets: [],
styles: [],
baseHref: ''
};
/**
* HEAD Element
* \@return
* @type {?}
*/
var HEAD = ( /**
* @return {?}
*/function () {
/** @type {?} */
var head = document.getElementsByTagName('head')[0];
/** @type {?} */
var ID = (Math.round(Math.random() * 9999999)).toString();
/** @type {?} */
var classNameUID = "ngx-print-element-" + ID;
/** @type {?} */
var idNameHeadUID = "ngx-print-element-head-" + ID;
return { head: head, classNameUID: classNameUID, idNameHeadUID: idNameHeadUID };
});
/**
* ADD_STYLE_HEAD
* \@param _H
* @type {?}
*/
var ADD_STYLE_HEAD = ( /**
* @param {?} _H
* @return {?}
*/function (_H) {
/** @type {?} */
var style = document.createElement('style');
style.innerHTML = BUILD_STYLE(_H);
style.id = "" + _H.idNameHeadUID;
_H.head.appendChild(style);
});
/**
* BUILD_STYLE
* \@param _H
* \@return
* @type {?}
*/
var BUILD_STYLE = ( /**
* @param {?} _H
* @return {?}
*/function (_H) {
return "\n @media print {\n ." + _H.classNameUID + ",\n ." + _H.classNameUID + " * {\n visibility: visible;\n }\n ." + _H.classNameUID + " {\n position: absolute;\n left: 0;\n top: 0;\n }\n ." + _H.classNameUID + " .print-none {\n display: none !important;\n }\n /* ----- Author: DaiDH ----- */\n /* Copyright (C) 2022 - " + new Date().getFullYear() + " */\n }";
});
/**
* REMOVE_STYLE_HEAD
* \@param _H
* @type {?}
*/
var REMOVE_STYLE_HEAD = ( /**
* @param {?} _H
* @return {?}
*/function (_H) {
/** @type {?} */
var styleToRemove = document.getElementById(_H.idNameHeadUID);
if (styleToRemove) {
_H.head.removeChild(styleToRemove);
}
});
/**
* getBaseHref
* \@param options
* \@return
* @type {?}
*/
var getBaseHref = ( /**
* @param {?} options
* @return {?}
*/function (options) {
/** @type {?} */
var port = (window.location.port) ? ":" + window.location.port : '';
/** @type {?} */
var buildURL = window.location.protocol + "//" + window.location.hostname + port + window.location.pathname;
/** @type {?} */
var finalURL = options.baseHref ? options.baseHref : buildURL;
return finalURL;
});
/**
* getMarkup
* print-html-element
* \@param element
* \@param options
* \@param _H
* \@return
* @type {?}
*/
var getMarkup = ( /**
* @param {?} element
* @param {?} options
* @param {?} _H
* @return {?}
*/function (element, options, _H) {
/** @type {?} */
var template = options.templateString;
/** @type {?} */
var templateRegex = new RegExp(/{{\s*printBody\s*}}/gi);
/** @type {?} */
var stylesheets;
/** @type {?} */
var styles;
/** @type {?} */
var html = [];
if (options.htmlType === 'domObj') {
element = element.outerHTML;
}
if (options.htmlType === 'text') {
element = element.innerText;
}
if (template && templateRegex.test(template)) {
element = template.replace(templateRegex, element);
}
html.push("<html><head><title>" + (options.pageTitle || '') + "</title>");
// If stylesheet URL's or list of stylesheet URL's are specified, override page stylesheets
if (options.stylesheets) {
stylesheets = Array.isArray(options.stylesheets) ? options.stylesheets : [options.stylesheets];
}
else {
stylesheets = Array.prototype.slice
.call(document.getElementsByTagName('link'))
.map(( /**
* @param {?} link
* @return {?}
*/function (link) { return link; }));
}
stylesheets.forEach(( /**
* @param {?} f
* @return {?}
*/function (f) {
html.push("<link rel=\"" + f.rel + "\" href=\"" + f.href + "\">");
}));
// If inline styles or list of inline styles are specified, override inline styles
if (options.styles) {
styles = Array.isArray(options.styles) ? __spread(options.styles, [BUILD_STYLE(_H)]) : [options.styles + BUILD_STYLE(_H)];
}
else {
styles = Array.prototype.slice
.call(document.getElementsByTagName('style'))
.map(( /**
* @param {?} style
* @return {?}
*/function (style) { return style.innerHTML; }));
}
styles.forEach(( /**
* @param {?} style
* @return {?}
*/function (style) {
html.push("<style type=\"text/css\">" + style + "</style>");
}));
html.push("<base href=\"" + getBaseHref(options) + "\"/>");
html.push("</head><body class=\"" + _H.classNameUID + "\">");
html.push(element);
html.push('</body></html>');
return html.join('');
});
/**
* Print window.open
* \@param element
* \@param selfOptions
* \@param as
* @type {?}
*/
var printElementWindow = ( /**
* @param {?} element
* @param {?=} selfOptions
* @param {?=} as
* @return {?}
*/function (element, selfOptions, as) {
if (selfOptions === void 0) {
selfOptions = {};
}
try {
/** @type {?} */
var options = __assign({}, defaultOptions, selfOptions);
/** @type {?} */
var container = element.nativeElement;
/** @type {?} */
var _H_1 = HEAD();
// New window
/** @type {?} */
var printWindow_1 = ( /** @type {?} */(window.open('about:blank', 'printElementWindow', options.popupProperties)));
/** @type {?} */
var printDocument_1 = printWindow_1 && ( /** @type {?} */(printWindow_1.document));
// Get markup to be printed
/** @type {?} */
var markup = getMarkup(container, options, _H_1);
ADD_STYLE_HEAD(_H_1);
// Close
/** @type {?} */
var onPrintFinished = ( /**
* @param {?} printed
* @return {?}
*/function (printed) {
printDocument_1.close();
setTimeout(( /**
* @return {?}
*/function () {
printWindow_1.close();
REMOVE_STYLE_HEAD(_H_1);
}), 1000);
});
// Print
printWindow_1.focus();
printDocument_1.write(markup);
onPrintFinished(printWindow_1.print());
printWindow_1.onbeforeprint = ( /**
* @param {?} event
* @return {?}
*/function (event) { return AS_COMPLETE(as, event); });
printWindow_1.onafterprint = ( /**
* @param {?} event
* @return {?}
*/function (event) { return AS_COMPLETE(as, event); });
}
catch (error) {
AS_COMPLETE(as, error);
}
});
/**
* Print iFrame
* \@param element
* \@param selfOptions
* \@param as
* @type {?}
*/
var printIFrame = ( /**
* @param {?} element
* @param {?=} selfOptions
* @param {?=} as
* @return {?}
*/function (element, selfOptions, as) {
if (selfOptions === void 0) {
selfOptions = {};
}
try {
// Declare
/** @type {?} */
var options = __assign({}, defaultOptions, selfOptions);
/** @type {?} */
var container = element.nativeElement;
/** @type {?} */
var _H_2 = HEAD();
// Get markup to be printed
/** @type {?} */
var markup_1 = getMarkup(container, options, _H_2);
// Create iframe
/** @type {?} */
var iframe_1 = ( /** @type {?} */(document.createElement('iframe')));
iframe_1.setAttribute('id', 'iframe-' + _H_2.classNameUID);
iframe_1.setAttribute('class', 'iframe-' + _H_2.classNameUID);
iframe_1.setAttribute('src', 'about:blank');
iframe_1.setAttribute('frameBorder', '0');
iframe_1.setAttribute('scrolling', 'no');
iframe_1.setAttribute('style', 'position:fixed;bottom:100%;right:100%;');
document.body.appendChild(iframe_1);
/** @type {?} */
var iDocument_1 = null;
if (iframe_1.contentDocument) {
iDocument_1 = iframe_1.contentDocument;
}
else if (iframe_1.contentWindow) {
iDocument_1 = iframe_1.contentWindow.document;
}
ADD_STYLE_HEAD(_H_2);
// SetTimeout fixesiframe printMode does not work in firefox
setTimeout(( /**
* @return {?}
*/function () {
// Close
/** @type {?} */
var onPrintFinished = ( /**
* @param {?} printed
* @return {?}
*/function (printed) {
setTimeout(( /**
* @return {?}
*/function () {
iDocument_1.close();
REMOVE_STYLE_HEAD(_H_2);
}));
});
// Print
iframe_1.contentWindow.focus();
onPrintFinished(iframe_1.contentWindow.print());
iDocument_1.open();
iDocument_1.write(markup_1);
iframe_1.contentWindow.onbeforeprint = ( /**
* @param {?} event
* @return {?}
*/function (event) {
setTimeout(( /**
* @return {?}
*/function () { return document.body.removeChild(iframe_1); }));
AS_COMPLETE(as, event);
});
iframe_1.contentWindow.onafterprint = ( /**
* @param {?} event
* @return {?}
*/function (event) { return AS_COMPLETE(as, event); });
}));
}
catch (error) {
AS_COMPLETE(as, error);
}
});
/**
* Print default
* \@param element
* \@param renderer
* \@param as
* @type {?}
*/
var printDefault = ( /**
* @param {?} element
* @param {?} renderer
* @param {?} as
* @return {?}
*/function (element, renderer, as) {
try {
// Declare
/** @type {?} */
var container_1 = element.nativeElement;
/** @type {?} */
var _H_3 = HEAD();
// Add visibility hidden into body
/** @type {?} */
var bodyEl_1 = document.querySelector('body');
if (bodyEl_1) {
bodyEl_1.style.visibility = 'hidden';
renderer.addClass(container_1, _H_3.classNameUID);
ADD_STYLE_HEAD(_H_3);
}
// Close
/** @type {?} */
var onPrintFinished = ( /**
* @param {?} printed
* @return {?}
*/function (printed) {
// window.close();
// Clear visibility: hidden
bodyEl_1 && (bodyEl_1.style.visibility = '');
renderer.setAttribute(container_1, 'class', container_1.className.replace(_H_3.classNameUID, ''));
REMOVE_STYLE_HEAD(_H_3);
});
// Print
window.focus();
onPrintFinished(window.print());
window.onbeforeprint = ( /**
* @param {?} event
* @return {?}
*/function (event) { return AS_COMPLETE(as, event); });
window.onafterprint = ( /**
* @param {?} event
* @return {?}
*/function (event) { return AS_COMPLETE(as, event); });
}
catch (error) {
AS_COMPLETE(as, error);
}
});
/**
* Rxjs complete
* \@param as
* \@param data
* \@param error
* @type {?}
*/
var AS_COMPLETE = ( /**
* @param {?} as
* @param {?} data
* @param {?=} error
* @return {?}
*/function (as, data, error) {
if (error === void 0) {
error = null;
}
error ? as.error(error) : as.next(data);
});
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NgxPrintElementService = /** @class */ (function () {
function NgxPrintElementService() {
}
/**
* Print
* @param element
* @param config
* @returns
*/
/**
* Print
* @param {?} element
* @param {?=} config
* @return {?}
*/
NgxPrintElementService.prototype.print = /**
* Print
* @param {?} element
* @param {?=} config
* @return {?}
*/
function (element, config) {
/** @type {?} */
var as = new rxjs.Subject();
// Create and insert new print section
if (element) {
// Element
if (config) {
// Config
if (config.printMode === 'template') {
// iframe
printIFrame(element, config, as);
}
if (config.printMode === 'template-popup') {
// windows
printElementWindow(element, config, as);
}
}
else {
// No config
printDefault(element, this.renderer, as);
}
}
return as;
};
NgxPrintElementService.decorators = [
{ type: i0.Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */ NgxPrintElementService.ngInjectableDef = i0.defineInjectable({ factory: function NgxPrintElementService_Factory() { return new NgxPrintElementService(); }, token: NgxPrintElementService, providedIn: "root" });
return NgxPrintElementService;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NgxPrintElementDirective = /** @class */ (function () {
function NgxPrintElementDirective(renderer, prints) {
this.renderer = renderer;
this.prints = prints;
}
/**
* @return {?}
*/
NgxPrintElementDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.prints.renderer = this.renderer;
};
NgxPrintElementDirective.decorators = [
{ type: i0.Directive, args: [{
selector: '[ngxPrintElement]'
},] }
];
NgxPrintElementDirective.ctorParameters = function () {
return [
{ type: i0.Renderer2 },
{ type: NgxPrintElementService }
];
};
return NgxPrintElementDirective;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NgxPrintElementComponent = /** @class */ (function () {
function NgxPrintElementComponent(prints) {
this.prints = prints;
}
/**
* Print
* @param elementRef
* @param config
* @returns
*/
/**
* Print
* @param {?} elementRef
* @param {?=} config
* @return {?}
*/
NgxPrintElementComponent.prototype.print = /**
* Print
* @param {?} elementRef
* @param {?=} config
* @return {?}
*/
function (elementRef, config) {
return this.prints.print(elementRef, config);
};
NgxPrintElementComponent.decorators = [
{ type: i0.Component, args: [{
selector: 'ngx-print-element',
template: "<ng-content></ng-content>",
exportAs: 'element'
}] }
];
NgxPrintElementComponent.ctorParameters = function () {
return [
{ type: NgxPrintElementService }
];
};
return NgxPrintElementComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NgxPrintElementModule = /** @class */ (function () {
function NgxPrintElementModule() {
}
NgxPrintElementModule.decorators = [
{ type: i0.NgModule, args: [{
declarations: [
NgxPrintElementComponent,
NgxPrintElementDirective
],
exports: [
NgxPrintElementComponent,
NgxPrintElementDirective
]
},] }
];
return NgxPrintElementModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
exports.NgxPrintElementDirective = NgxPrintElementDirective;
exports.NgxPrintElementService = NgxPrintElementService;
exports.NgxPrintElementComponent = NgxPrintElementComponent;
exports.NgxPrintElementModule = NgxPrintElementModule;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=ngx-print-element.umd.js.map
{"version":3,"file":"ngx-print-element.umd.js.map","sources":["node_modules/tslib/tslib.es6.js","ng://ngx-print-element/lib/ngx-print-element.helper.ts","ng://ngx-print-element/lib/ngx-print-element.service.ts","ng://ngx-print-element/lib/ngx-print-element.directive.ts","ng://ngx-print-element/lib/ngx-print-element.component.ts","ng://ngx-print-element/lib/ngx-print-element.module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { ElementRef, Renderer2 } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\nimport { Config } from \"./ngx-print-element.service\";\r\n\r\nconst defaultOptions: Config = {\r\n htmlType: 'domObj',\r\n printMode: 'template',\r\n pageTitle: '',\r\n templateString: '',\r\n popupProperties: '',\r\n stylesheets: [],\r\n styles: [],\r\n baseHref: ''\r\n};\r\n\r\n\r\ninterface _H {\r\n head: HTMLHeadElement;\r\n classNameUID: string;\r\n idNameHeadUID: string;\r\n}\r\n\r\n/**\r\n * HEAD Element\r\n * @returns \r\n */\r\nconst HEAD = (): _H => {\r\n const head = document.getElementsByTagName('head')[0];\r\n const ID = (Math.round(Math.random() * 9999999)).toString();\r\n const classNameUID = `ngx-print-element-${ID}`;\r\n const idNameHeadUID = `ngx-print-element-head-${ID}`;\r\n return { head, classNameUID, idNameHeadUID };\r\n}\r\n\r\n/**\r\n * ADD_STYLE_HEAD\r\n * @param _H \r\n */\r\nconst ADD_STYLE_HEAD = (_H: _H) => {\r\n const style = document.createElement('style');\r\n style.innerHTML = BUILD_STYLE(_H);\r\n style.id = `${_H.idNameHeadUID}`;\r\n _H.head.appendChild(style);\r\n}\r\n\r\n/**\r\n * BUILD_STYLE\r\n * @param _H \r\n * @returns \r\n */\r\nconst BUILD_STYLE = (_H: _H): string => {\r\n return `\r\n @media print {\r\n .${_H.classNameUID},\r\n .${_H.classNameUID} * {\r\n visibility: visible;\r\n }\r\n .${_H.classNameUID} {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n }\r\n .${_H.classNameUID} .print-none {\r\n display: none !important;\r\n }\r\n /* ----- Author: DaiDH ----- */\r\n /* Copyright (C) 2022 - ${new Date().getFullYear()} */\r\n }`\r\n};\r\n\r\n/**\r\n * REMOVE_STYLE_HEAD\r\n * @param _H \r\n */\r\nconst REMOVE_STYLE_HEAD = (_H: _H) => {\r\n const styleToRemove = document.getElementById(_H.idNameHeadUID);\r\n if (styleToRemove) {\r\n _H.head.removeChild(styleToRemove);\r\n }\r\n}\r\n\r\n/**\r\n * getBaseHref\r\n * @param options \r\n * @returns \r\n */\r\nexport const getBaseHref = (options: Config) => {\r\n const port = (window.location.port) ? `:${window.location.port}` : '';\r\n const buildURL = `${window.location.protocol}//${window.location.hostname}${port}${window.location.pathname}`;\r\n const finalURL = options.baseHref ? options.baseHref : buildURL;\r\n return finalURL;\r\n};\r\n\r\n/**\r\n * getMarkup\r\n * print-html-element\r\n * @param element \r\n * @param options \r\n * @param _H \r\n * @returns \r\n */\r\nexport const getMarkup = (element: any, options: Config, _H: _H) => {\r\n const template = options.templateString;\r\n const templateRegex = new RegExp(/{{\\s*printBody\\s*}}/gi);\r\n let stylesheets;\r\n let styles;\r\n const html = [];\r\n\r\n if (options.htmlType === 'domObj') {\r\n element = element.outerHTML;\r\n }\r\n\r\n if (options.htmlType === 'text') {\r\n element = element.innerText;\r\n }\r\n\r\n if (template && templateRegex.test(template)) {\r\n element = template.replace(templateRegex, element);\r\n }\r\n\r\n html.push(`<html><head><title>${options.pageTitle || ''}</title>`);\r\n\r\n // If stylesheet URL's or list of stylesheet URL's are specified, override page stylesheets\r\n if (options.stylesheets) {\r\n stylesheets = Array.isArray(options.stylesheets) ? options.stylesheets : [options.stylesheets];\r\n } else {\r\n stylesheets = Array.prototype.slice\r\n .call(document.getElementsByTagName('link'))\r\n .map(link => link);\r\n }\r\n\r\n stylesheets.forEach((f: any) => {\r\n html.push(`<link rel=\"${f.rel}\" href=\"${f.href}\">`);\r\n });\r\n\r\n // If inline styles or list of inline styles are specified, override inline styles\r\n if (options.styles) {\r\n styles = Array.isArray(options.styles) ? [...options.styles, BUILD_STYLE(_H)] : [options.styles + BUILD_STYLE(_H)];\r\n } else {\r\n styles = Array.prototype.slice\r\n .call(document.getElementsByTagName('style'))\r\n .map(style => style.innerHTML);\r\n }\r\n\r\n styles.forEach((style: any) => {\r\n html.push(`<style type=\"text/css\">${style}</style>`);\r\n });\r\n\r\n html.push(`<base href=\"${getBaseHref(options)}\"/>`);\r\n html.push(`</head><body class=\"${_H.classNameUID}\">`);\r\n html.push(element);\r\n html.push('</body></html>');\r\n\r\n return html.join('');\r\n};\r\n\r\n/**\r\n * Print window.open\r\n * @param element \r\n * @param selfOptions \r\n * @param as \r\n */\r\nexport const printElementWindow = (element: ElementRef<any>, selfOptions = {}, as: Subject<any>) => {\r\n try {\r\n const options = { ...defaultOptions, ...selfOptions };\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // New window\r\n const printWindow = window.open('about:blank', 'printElementWindow', options.popupProperties) as any;\r\n const printDocument = printWindow && printWindow.document as any;\r\n\r\n // Get markup to be printed\r\n const markup = getMarkup(container, options, _H);\r\n\r\n ADD_STYLE_HEAD(_H);\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n printDocument.close();\r\n setTimeout(() => {\r\n printWindow.close();\r\n REMOVE_STYLE_HEAD(_H);\r\n }, 1000);\r\n };\r\n\r\n // Print\r\n printWindow.focus();\r\n printDocument.write(markup);\r\n onPrintFinished(printWindow.print());\r\n printWindow.onbeforeprint = (event: any) => AS_COMPLETE(as, event);\r\n printWindow.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n};\r\n\r\n/**\r\n * Print iFrame\r\n * @param element \r\n * @param selfOptions \r\n * @param as \r\n */\r\nexport const printIFrame = (element: ElementRef<any>, selfOptions = {}, as: Subject<any>,) => {\r\n try {\r\n // Declare\r\n const options = { ...defaultOptions, ...selfOptions };\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // Get markup to be printed\r\n const markup = getMarkup(container, options, _H);\r\n\r\n // Create iframe\r\n let iframe = document.createElement('iframe') as HTMLIFrameElement | any;\r\n iframe.setAttribute('id', 'iframe-' + _H.classNameUID);\r\n iframe.setAttribute('class', 'iframe-' + _H.classNameUID);\r\n iframe.setAttribute('src', 'about:blank');\r\n iframe.setAttribute('frameBorder', '0');\r\n iframe.setAttribute('scrolling', 'no');\r\n iframe.setAttribute('style', 'position:fixed;bottom:100%;right:100%;');\r\n document.body.appendChild(iframe);\r\n\r\n let iDocument: any = null;\r\n if (iframe.contentDocument) {\r\n iDocument = iframe.contentDocument;\r\n } else if (iframe.contentWindow) {\r\n iDocument = iframe.contentWindow.document;\r\n }\r\n\r\n ADD_STYLE_HEAD(_H);\r\n\r\n // SetTimeout fixesiframe printMode does not work in firefox\r\n setTimeout(() => {\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n setTimeout(() => {\r\n iDocument.close();\r\n REMOVE_STYLE_HEAD(_H);\r\n });\r\n };\r\n\r\n // Print\r\n iframe.contentWindow.focus();\r\n onPrintFinished(iframe.contentWindow.print());\r\n iDocument.open();\r\n iDocument.write(markup);\r\n iframe.contentWindow.onbeforeprint = (event: any) => {\r\n setTimeout(() => document.body.removeChild(iframe));\r\n AS_COMPLETE(as, event);\r\n }\r\n iframe.contentWindow.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n });\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n}\r\n\r\n/**\r\n * Print default\r\n * @param element \r\n * @param renderer \r\n * @param as \r\n */\r\nexport const printDefault = (element: ElementRef<any>, renderer: Renderer2, as: Subject<any>) => {\r\n try {\r\n // Declare\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // Add visibility hidden into body\r\n const bodyEl = document.querySelector('body');\r\n if (bodyEl) {\r\n bodyEl.style.visibility = 'hidden';\r\n renderer.addClass(container, _H.classNameUID);\r\n ADD_STYLE_HEAD(_H);\r\n }\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n // window.close();\r\n // Clear visibility: hidden\r\n bodyEl && (bodyEl.style.visibility = '');\r\n renderer.setAttribute(container, 'class', container.className.replace(_H.classNameUID, ''));\r\n REMOVE_STYLE_HEAD(_H);\r\n };\r\n\r\n // Print\r\n window.focus();\r\n onPrintFinished(window.print());\r\n window.onbeforeprint = (event: any) => AS_COMPLETE(as, event);\r\n window.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Rxjs complete\r\n * @param as \r\n * @param data \r\n * @param error \r\n */\r\nexport const AS_COMPLETE = (as: Subject<any>, data: any, error = null) => {\r\n error ? as.error(error) : as.next(data);\r\n};\r\n","import { ElementRef, Injectable, Renderer2 } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { printDefault, printElementWindow, printIFrame } from './ngx-print-element.helper';\r\n\r\nexport interface Config {\r\n htmlType?: string;\r\n printMode?: string;\r\n pageTitle?: string;\r\n templateString?: string;\r\n popupProperties?: string;\r\n stylesheets?: {\r\n rel?: string,\r\n href?: string\r\n }[],\r\n styles?: string[];\r\n baseHref?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxPrintElementService {\r\n\r\n public renderer!: Renderer2;\r\n\r\n /**\r\n * Print\r\n * @param element \r\n * @param config \r\n * @returns \r\n */\r\n public print(element: ElementRef<any>, config?: Config): Subject<any> {\r\n const as = new Subject();\r\n // Create and insert new print section\r\n if (element) {\r\n // Element\r\n if (config) {\r\n // Config\r\n if (config.printMode === 'template') {\r\n // iframe\r\n printIFrame(element, config, as);\r\n }\r\n if (config.printMode === 'template-popup') {\r\n // windows\r\n printElementWindow(element, config, as);\r\n }\r\n } else {\r\n // No config\r\n printDefault(element, this.renderer, as);\r\n }\r\n }\r\n return as;\r\n }\r\n}\r\n","import { Directive, OnInit, Renderer2 } from '@angular/core';\r\nimport { NgxPrintElementService } from './ngx-print-element.service';\r\n\r\n@Directive({\r\n selector: '[ngxPrintElement]'\r\n})\r\nexport class NgxPrintElementDirective implements OnInit {\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n private prints: NgxPrintElementService\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.prints.renderer = this.renderer;\r\n }\r\n}\r\n","import { Component, ElementRef } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Config, NgxPrintElementService } from './ngx-print-element.service';\r\n\r\n@Component({\r\n selector: 'ngx-print-element',\r\n template: `<ng-content></ng-content>`,\r\n exportAs: 'element'\r\n})\r\nexport class NgxPrintElementComponent {\r\n\r\n constructor(private prints: NgxPrintElementService) { }\r\n\r\n /**\r\n * Print\r\n * @param elementRef \r\n * @param config \r\n * @returns \r\n */\r\n public print(elementRef: ElementRef<any>, config?: Config): Subject<any> {\r\n return this.prints.print(elementRef, config);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { NgxPrintElementComponent } from './ngx-print-element.component';\r\nimport { NgxPrintElementDirective } from './ngx-print-element.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxPrintElementComponent,\r\n NgxPrintElementDirective\r\n ],\r\n exports: [\r\n NgxPrintElementComponent,\r\n NgxPrintElementDirective\r\n ]\r\n})\r\n\r\nexport class NgxPrintElementModule {\r\n}\r\n"],"names":["Subject","Injectable","Directive","Renderer2","Component","NgModule"],"mappings":"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"}
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("rxjs"),require("@angular/core")):"function"==typeof define&&define.amd?define("ngx-print-element",["exports","rxjs","@angular/core"],t):t(e["ngx-print-element"]={},e.rxjs,e.ng.core)}(this,function(e,r,t){"use strict";var u=function(){return(u=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function p(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||0<t--)&&!(r=i.next()).done;)a.push(r.value)}catch(s){o={error:s}}finally{try{r&&!r.done&&(n=i["return"])&&n.call(i)}finally{if(o)throw o.error}}return a}var d={htmlType:"domObj",printMode:"template",pageTitle:"",templateString:"",popupProperties:"",stylesheets:[],styles:[],baseHref:""},m=function(){var e=document.getElementsByTagName("head")[0],t=Math.round(9999999*Math.random()).toString();return{head:e,classNameUID:"ngx-print-element-"+t,idNameHeadUID:"ngx-print-element-head-"+t}},f=function(e){var t=document.createElement("style");t.innerHTML=y(e),t.id=""+e.idNameHeadUID,e.head.appendChild(t)},y=function(e){return"\n @media print {\n ."+e.classNameUID+",\n ."+e.classNameUID+" * {\n visibility: visible;\n }\n ."+e.classNameUID+" {\n position: absolute;\n left: 0;\n top: 0;\n }\n ."+e.classNameUID+" .print-none {\n display: none !important;\n }\n /* ----- Author: DaiDH ----- */\n /* Copyright (C) 2022 - "+(new Date).getFullYear()+" */\n }"},h=function(e){var t=document.getElementById(e.idNameHeadUID);t&&e.head.removeChild(t)},g=function(e,t,n){var r,o,i,a=t.templateString,s=new RegExp(/{{\s*printBody\s*}}/gi),c=[];return"domObj"===t.htmlType&&(e=e.outerHTML),"text"===t.htmlType&&(e=e.innerText),a&&s.test(a)&&(e=a.replace(s,e)),c.push("<html><head><title>"+(t.pageTitle||"")+"</title>"),(t.stylesheets?Array.isArray(t.stylesheets)?t.stylesheets:[t.stylesheets]:Array.prototype.slice.call(document.getElementsByTagName("link")).map(function(e){return e})).forEach(function(e){c.push('<link rel="'+e.rel+'" href="'+e.href+'">')}),(t.styles?Array.isArray(t.styles)?function l(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(p(arguments[t]));return e}(t.styles,[y(n)]):[t.styles+y(n)]:Array.prototype.slice.call(document.getElementsByTagName("style")).map(function(e){return e.innerHTML})).forEach(function(e){c.push('<style type="text/css">'+e+"</style>")}),c.push('<base href="'+(r=t,o=window.location.port?":"+window.location.port:"",i=window.location.protocol+"//"+window.location.hostname+o+window.location.pathname,r.baseHref?r.baseHref:i)+'"/>'),c.push('</head><body class="'+n.classNameUID+'">'),c.push(e),c.push("</body></html>"),c.join("")},b=function(e,t,n){void 0===n&&(n=null),n?e.error(n):e.next(t)},n=function(){function e(){}return e.prototype.print=function(e,t){var n=new r.Subject;return e&&(t?("template"===t.printMode&&function(e,t,n){void 0===t&&(t={});try{var r=u({},d,t),o=e.nativeElement,i=m(),a=g(o,r,i),s=document.createElement("iframe");s.setAttribute("id","iframe-"+i.classNameUID),s.setAttribute("class","iframe-"+i.classNameUID),s.setAttribute("src","about:blank"),s.setAttribute("frameBorder","0"),s.setAttribute("scrolling","no"),s.setAttribute("style","position:fixed;bottom:100%;right:100%;"),document.body.appendChild(s);var c=null;s.contentDocument?c=s.contentDocument:s.contentWindow&&(c=s.contentWindow.document),f(i),setTimeout(function(){s.contentWindow.focus(),s.contentWindow.print(),setTimeout(function(){c.close(),h(i)}),c.open(),c.write(a),s.contentWindow.onbeforeprint=function(e){setTimeout(function(){return document.body.removeChild(s)}),b(n,e)},s.contentWindow.onafterprint=function(e){return b(n,e)}})}catch(l){b(n,l)}}(e,t,n),"template-popup"===t.printMode&&function(e,t,n){void 0===t&&(t={});try{var r=u({},d,t),o=e.nativeElement,i=m(),a=window.open("about:blank","printElementWindow",r.popupProperties),s=a&&a.document,c=g(o,r,i);f(i),a.focus(),s.write(c),a.print(),s.close(),setTimeout(function(){a.close(),h(i)},1e3),a.onbeforeprint=function(e){return b(n,e)},a.onafterprint=function(e){return b(n,e)}}catch(l){b(n,l)}}(e,t,n)):function(e,t,n){try{var r=e.nativeElement,o=m(),i=document.querySelector("body");i&&(i.style.visibility="hidden",t.addClass(r,o.classNameUID),f(o)),window.focus(),window.print(),i&&(i.style.visibility=""),t.setAttribute(r,"class",r.className.replace(o.classNameUID,"")),h(o),window.onbeforeprint=function(e){return b(n,e)},window.onafterprint=function(e){return b(n,e)}}catch(a){b(n,a)}}(e,this.renderer,n)),n},e.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],e.ngInjectableDef=t.defineInjectable({factory:function(){return new e},token:e,providedIn:"root"}),e}(),o=function(){function e(e,t){this.renderer=e,this.prints=t}return e.prototype.ngOnInit=function(){this.prints.renderer=this.renderer},e.decorators=[{type:t.Directive,args:[{selector:"[ngxPrintElement]"}]}],e.ctorParameters=function(){return[{type:t.Renderer2},{type:n}]},e}(),i=function(){function e(e){this.prints=e}return e.prototype.print=function(e,t){return this.prints.print(e,t)},e.decorators=[{type:t.Component,args:[{selector:"ngx-print-element",template:"<ng-content></ng-content>",exportAs:"element"}]}],e.ctorParameters=function(){return[{type:n}]},e}(),a=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{declarations:[i,o],exports:[i,o]}]}],e}();e.NgxPrintElementDirective=o,e.NgxPrintElementService=n,e.NgxPrintElementComponent=i,e.NgxPrintElementModule=a,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=ngx-print-element.umd.min.js.map
{"version":3,"sources":["node_modules/tslib/tslib.es6.js","ng://ngx-print-element/lib/ngx-print-element.helper.ts","ng://ngx-print-element/lib/ngx-print-element.service.ts","ng://ngx-print-element/lib/ngx-print-element.directive.ts","ng://ngx-print-element/lib/ngx-print-element.component.ts","ng://ngx-print-element/lib/ngx-print-element.module.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__read","o","m","Symbol","iterator","r","e","ar","next","done","push","value","error","defaultOptions","htmlType","printMode","pageTitle","templateString","popupProperties","stylesheets","styles","baseHref","HEAD","head","document","getElementsByTagName","ID","Math","round","random","toString","classNameUID","idNameHeadUID","ADD_STYLE_HEAD","_H","style","createElement","innerHTML","BUILD_STYLE","id","appendChild","Date","getFullYear","REMOVE_STYLE_HEAD","styleToRemove","getElementById","removeChild","getMarkup","element","options","port","buildURL","template","templateRegex","RegExp","html","outerHTML","innerText","test","replace","Array","isArray","slice","map","link","forEach","f","rel","href","__spread","concat","window","location","protocol","hostname","pathname","join","AS_COMPLETE","as","data","NgxPrintElementService","print","config","Subject","selfOptions","container","nativeElement","_H_2","markup_1","iframe_1","setAttribute","body","iDocument_1","contentDocument","contentWindow","setTimeout","focus","close","open","write","onbeforeprint","event","onafterprint","printIFrame","_H_1","printWindow_1","printDocument_1","markup","printElementWindow","renderer","container_1","_H_3","bodyEl_1","querySelector","visibility","addClass","className","printDefault","Injectable","args","providedIn","NgxPrintElementDirective","prints","ngOnInit","Directive","selector","Renderer2","NgxPrintElementComponent","elementRef","Component","exportAs","NgxPrintElementModule","NgModule","declarations","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { ElementRef, Renderer2 } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\nimport { Config } from \"./ngx-print-element.service\";\r\n\r\nconst defaultOptions: Config = {\r\n htmlType: 'domObj',\r\n printMode: 'template',\r\n pageTitle: '',\r\n templateString: '',\r\n popupProperties: '',\r\n stylesheets: [],\r\n styles: [],\r\n baseHref: ''\r\n};\r\n\r\n\r\ninterface _H {\r\n head: HTMLHeadElement;\r\n classNameUID: string;\r\n idNameHeadUID: string;\r\n}\r\n\r\n/**\r\n * HEAD Element\r\n * @returns \r\n */\r\nconst HEAD = (): _H => {\r\n const head = document.getElementsByTagName('head')[0];\r\n const ID = (Math.round(Math.random() * 9999999)).toString();\r\n const classNameUID = `ngx-print-element-${ID}`;\r\n const idNameHeadUID = `ngx-print-element-head-${ID}`;\r\n return { head, classNameUID, idNameHeadUID };\r\n}\r\n\r\n/**\r\n * ADD_STYLE_HEAD\r\n * @param _H \r\n */\r\nconst ADD_STYLE_HEAD = (_H: _H) => {\r\n const style = document.createElement('style');\r\n style.innerHTML = BUILD_STYLE(_H);\r\n style.id = `${_H.idNameHeadUID}`;\r\n _H.head.appendChild(style);\r\n}\r\n\r\n/**\r\n * BUILD_STYLE\r\n * @param _H \r\n * @returns \r\n */\r\nconst BUILD_STYLE = (_H: _H): string => {\r\n return `\r\n @media print {\r\n .${_H.classNameUID},\r\n .${_H.classNameUID} * {\r\n visibility: visible;\r\n }\r\n .${_H.classNameUID} {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n }\r\n .${_H.classNameUID} .print-none {\r\n display: none !important;\r\n }\r\n /* ----- Author: DaiDH ----- */\r\n /* Copyright (C) 2022 - ${new Date().getFullYear()} */\r\n }`\r\n};\r\n\r\n/**\r\n * REMOVE_STYLE_HEAD\r\n * @param _H \r\n */\r\nconst REMOVE_STYLE_HEAD = (_H: _H) => {\r\n const styleToRemove = document.getElementById(_H.idNameHeadUID);\r\n if (styleToRemove) {\r\n _H.head.removeChild(styleToRemove);\r\n }\r\n}\r\n\r\n/**\r\n * getBaseHref\r\n * @param options \r\n * @returns \r\n */\r\nexport const getBaseHref = (options: Config) => {\r\n const port = (window.location.port) ? `:${window.location.port}` : '';\r\n const buildURL = `${window.location.protocol}//${window.location.hostname}${port}${window.location.pathname}`;\r\n const finalURL = options.baseHref ? options.baseHref : buildURL;\r\n return finalURL;\r\n};\r\n\r\n/**\r\n * getMarkup\r\n * print-html-element\r\n * @param element \r\n * @param options \r\n * @param _H \r\n * @returns \r\n */\r\nexport const getMarkup = (element: any, options: Config, _H: _H) => {\r\n const template = options.templateString;\r\n const templateRegex = new RegExp(/{{\\s*printBody\\s*}}/gi);\r\n let stylesheets;\r\n let styles;\r\n const html = [];\r\n\r\n if (options.htmlType === 'domObj') {\r\n element = element.outerHTML;\r\n }\r\n\r\n if (options.htmlType === 'text') {\r\n element = element.innerText;\r\n }\r\n\r\n if (template && templateRegex.test(template)) {\r\n element = template.replace(templateRegex, element);\r\n }\r\n\r\n html.push(`<html><head><title>${options.pageTitle || ''}</title>`);\r\n\r\n // If stylesheet URL's or list of stylesheet URL's are specified, override page stylesheets\r\n if (options.stylesheets) {\r\n stylesheets = Array.isArray(options.stylesheets) ? options.stylesheets : [options.stylesheets];\r\n } else {\r\n stylesheets = Array.prototype.slice\r\n .call(document.getElementsByTagName('link'))\r\n .map(link => link);\r\n }\r\n\r\n stylesheets.forEach((f: any) => {\r\n html.push(`<link rel=\"${f.rel}\" href=\"${f.href}\">`);\r\n });\r\n\r\n // If inline styles or list of inline styles are specified, override inline styles\r\n if (options.styles) {\r\n styles = Array.isArray(options.styles) ? [...options.styles, BUILD_STYLE(_H)] : [options.styles + BUILD_STYLE(_H)];\r\n } else {\r\n styles = Array.prototype.slice\r\n .call(document.getElementsByTagName('style'))\r\n .map(style => style.innerHTML);\r\n }\r\n\r\n styles.forEach((style: any) => {\r\n html.push(`<style type=\"text/css\">${style}</style>`);\r\n });\r\n\r\n html.push(`<base href=\"${getBaseHref(options)}\"/>`);\r\n html.push(`</head><body class=\"${_H.classNameUID}\">`);\r\n html.push(element);\r\n html.push('</body></html>');\r\n\r\n return html.join('');\r\n};\r\n\r\n/**\r\n * Print window.open\r\n * @param element \r\n * @param selfOptions \r\n * @param as \r\n */\r\nexport const printElementWindow = (element: ElementRef<any>, selfOptions = {}, as: Subject<any>) => {\r\n try {\r\n const options = { ...defaultOptions, ...selfOptions };\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // New window\r\n const printWindow = window.open('about:blank', 'printElementWindow', options.popupProperties) as any;\r\n const printDocument = printWindow && printWindow.document as any;\r\n\r\n // Get markup to be printed\r\n const markup = getMarkup(container, options, _H);\r\n\r\n ADD_STYLE_HEAD(_H);\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n printDocument.close();\r\n setTimeout(() => {\r\n printWindow.close();\r\n REMOVE_STYLE_HEAD(_H);\r\n }, 1000);\r\n };\r\n\r\n // Print\r\n printWindow.focus();\r\n printDocument.write(markup);\r\n onPrintFinished(printWindow.print());\r\n printWindow.onbeforeprint = (event: any) => AS_COMPLETE(as, event);\r\n printWindow.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n};\r\n\r\n/**\r\n * Print iFrame\r\n * @param element \r\n * @param selfOptions \r\n * @param as \r\n */\r\nexport const printIFrame = (element: ElementRef<any>, selfOptions = {}, as: Subject<any>,) => {\r\n try {\r\n // Declare\r\n const options = { ...defaultOptions, ...selfOptions };\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // Get markup to be printed\r\n const markup = getMarkup(container, options, _H);\r\n\r\n // Create iframe\r\n let iframe = document.createElement('iframe') as HTMLIFrameElement | any;\r\n iframe.setAttribute('id', 'iframe-' + _H.classNameUID);\r\n iframe.setAttribute('class', 'iframe-' + _H.classNameUID);\r\n iframe.setAttribute('src', 'about:blank');\r\n iframe.setAttribute('frameBorder', '0');\r\n iframe.setAttribute('scrolling', 'no');\r\n iframe.setAttribute('style', 'position:fixed;bottom:100%;right:100%;');\r\n document.body.appendChild(iframe);\r\n\r\n let iDocument: any = null;\r\n if (iframe.contentDocument) {\r\n iDocument = iframe.contentDocument;\r\n } else if (iframe.contentWindow) {\r\n iDocument = iframe.contentWindow.document;\r\n }\r\n\r\n ADD_STYLE_HEAD(_H);\r\n\r\n // SetTimeout fixesiframe printMode does not work in firefox\r\n setTimeout(() => {\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n setTimeout(() => {\r\n iDocument.close();\r\n REMOVE_STYLE_HEAD(_H);\r\n });\r\n };\r\n\r\n // Print\r\n iframe.contentWindow.focus();\r\n onPrintFinished(iframe.contentWindow.print());\r\n iDocument.open();\r\n iDocument.write(markup);\r\n iframe.contentWindow.onbeforeprint = (event: any) => {\r\n setTimeout(() => document.body.removeChild(iframe));\r\n AS_COMPLETE(as, event);\r\n }\r\n iframe.contentWindow.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n });\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n}\r\n\r\n/**\r\n * Print default\r\n * @param element \r\n * @param renderer \r\n * @param as \r\n */\r\nexport const printDefault = (element: ElementRef<any>, renderer: Renderer2, as: Subject<any>) => {\r\n try {\r\n // Declare\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // Add visibility hidden into body\r\n const bodyEl = document.querySelector('body');\r\n if (bodyEl) {\r\n bodyEl.style.visibility = 'hidden';\r\n renderer.addClass(container, _H.classNameUID);\r\n ADD_STYLE_HEAD(_H);\r\n }\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n // window.close();\r\n // Clear visibility: hidden\r\n bodyEl && (bodyEl.style.visibility = '');\r\n renderer.setAttribute(container, 'class', container.className.replace(_H.classNameUID, ''));\r\n REMOVE_STYLE_HEAD(_H);\r\n };\r\n\r\n // Print\r\n window.focus();\r\n onPrintFinished(window.print());\r\n window.onbeforeprint = (event: any) => AS_COMPLETE(as, event);\r\n window.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Rxjs complete\r\n * @param as \r\n * @param data \r\n * @param error \r\n */\r\nexport const AS_COMPLETE = (as: Subject<any>, data: any, error = null) => {\r\n error ? as.error(error) : as.next(data);\r\n};\r\n","import { ElementRef, Injectable, Renderer2 } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { printDefault, printElementWindow, printIFrame } from './ngx-print-element.helper';\r\n\r\nexport interface Config {\r\n htmlType?: string;\r\n printMode?: string;\r\n pageTitle?: string;\r\n templateString?: string;\r\n popupProperties?: string;\r\n stylesheets?: {\r\n rel?: string,\r\n href?: string\r\n }[],\r\n styles?: string[];\r\n baseHref?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxPrintElementService {\r\n\r\n public renderer!: Renderer2;\r\n\r\n /**\r\n * Print\r\n * @param element \r\n * @param config \r\n * @returns \r\n */\r\n public print(element: ElementRef<any>, config?: Config): Subject<any> {\r\n const as = new Subject();\r\n // Create and insert new print section\r\n if (element) {\r\n // Element\r\n if (config) {\r\n // Config\r\n if (config.printMode === 'template') {\r\n // iframe\r\n printIFrame(element, config, as);\r\n }\r\n if (config.printMode === 'template-popup') {\r\n // windows\r\n printElementWindow(element, config, as);\r\n }\r\n } else {\r\n // No config\r\n printDefault(element, this.renderer, as);\r\n }\r\n }\r\n return as;\r\n }\r\n}\r\n","import { Directive, OnInit, Renderer2 } from '@angular/core';\r\nimport { NgxPrintElementService } from './ngx-print-element.service';\r\n\r\n@Directive({\r\n selector: '[ngxPrintElement]'\r\n})\r\nexport class NgxPrintElementDirective implements OnInit {\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n private prints: NgxPrintElementService\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.prints.renderer = this.renderer;\r\n }\r\n}\r\n","import { Component, ElementRef } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Config, NgxPrintElementService } from './ngx-print-element.service';\r\n\r\n@Component({\r\n selector: 'ngx-print-element',\r\n template: `<ng-content></ng-content>`,\r\n exportAs: 'element'\r\n})\r\nexport class NgxPrintElementComponent {\r\n\r\n constructor(private prints: NgxPrintElementService) { }\r\n\r\n /**\r\n * Print\r\n * @param elementRef \r\n * @param config \r\n * @returns \r\n */\r\n public print(elementRef: ElementRef<any>, config?: Config): Subject<any> {\r\n return this.prints.print(elementRef, config);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { NgxPrintElementComponent } from './ngx-print-element.component';\r\nimport { NgxPrintElementDirective } from './ngx-print-element.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxPrintElementComponent,\r\n NgxPrintElementDirective\r\n ],\r\n exports: [\r\n NgxPrintElementComponent,\r\n NgxPrintElementDirective\r\n ]\r\n})\r\n\r\nexport class NgxPrintElementModule {\r\n}\r\n"]}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component } from '@angular/core';
import { NgxPrintElementService } from './ngx-print-element.service';
export class NgxPrintElementComponent {
/**
* @param {?} prints
*/
constructor(prints) {
this.prints = prints;
}
/**
* Print
* @param {?} elementRef
* @param {?=} config
* @return {?}
*/
print(elementRef, config) {
return this.prints.print(elementRef, config);
}
}
NgxPrintElementComponent.decorators = [
{ type: Component, args: [{
selector: 'ngx-print-element',
template: `<ng-content></ng-content>`,
exportAs: 'element'
}] }
];
NgxPrintElementComponent.ctorParameters = () => [
{ type: NgxPrintElementService }
];
if (false) {
/**
* @type {?}
* @private
*/
NgxPrintElementComponent.prototype.prints;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXByaW50LWVsZW1lbnQvIiwic291cmNlcyI6WyJsaWIvbmd4LXByaW50LWVsZW1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBVSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBTzdFLE1BQU07Ozs7SUFFSixZQUFvQixNQUE4QjtRQUE5QixXQUFNLEdBQU4sTUFBTSxDQUF3QjtJQUFJLENBQUM7Ozs7Ozs7SUFRaEQsS0FBSyxDQUFDLFVBQTJCLEVBQUUsTUFBZTtRQUN2RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvQyxDQUFDOzs7WUFqQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLFFBQVEsRUFBRSxTQUFTO2FBQ3BCOzs7WUFOZ0Isc0JBQXNCOzs7Ozs7O0lBU3pCLDBDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbmZpZywgTmd4UHJpbnRFbGVtZW50U2VydmljZSB9IGZyb20gJy4vbmd4LXByaW50LWVsZW1lbnQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1wcmludC1lbGVtZW50JyxcclxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxyXG4gIGV4cG9ydEFzOiAnZWxlbWVudCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5neFByaW50RWxlbWVudENvbXBvbmVudCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJpbnRzOiBOZ3hQcmludEVsZW1lbnRTZXJ2aWNlKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJpbnRcclxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiBcclxuICAgKiBAcGFyYW0gY29uZmlnIFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwcmludChlbGVtZW50UmVmOiBFbGVtZW50UmVmPGFueT4sIGNvbmZpZz86IENvbmZpZyk6IFN1YmplY3Q8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmludHMucHJpbnQoZWxlbWVudFJlZiwgY29uZmlnKTtcclxuICB9XHJcbn1cclxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, Renderer2 } from '@angular/core';
import { NgxPrintElementService } from './ngx-print-element.service';
export class NgxPrintElementDirective {
/**
* @param {?} renderer
* @param {?} prints
*/
constructor(renderer, prints) {
this.renderer = renderer;
this.prints = prints;
}
/**
* @return {?}
*/
ngOnInit() {
this.prints.renderer = this.renderer;
}
}
NgxPrintElementDirective.decorators = [
{ type: Directive, args: [{
selector: '[ngxPrintElement]'
},] }
];
NgxPrintElementDirective.ctorParameters = () => [
{ type: Renderer2 },
{ type: NgxPrintElementService }
];
if (false) {
/**
* @type {?}
* @private
*/
NgxPrintElementDirective.prototype.renderer;
/**
* @type {?}
* @private
*/
NgxPrintElementDirective.prototype.prints;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXByaW50LWVsZW1lbnQvIiwic291cmNlcyI6WyJsaWIvbmd4LXByaW50LWVsZW1lbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUtyRSxNQUFNOzs7OztJQUVKLFlBQ1UsUUFBbUIsRUFDbkIsTUFBOEI7UUFEOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUF3QjtJQUV4QyxDQUFDOzs7O0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkMsQ0FBQzs7O1lBYkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7YUFDOUI7OztZQUwyQixTQUFTO1lBQzVCLHNCQUFzQjs7Ozs7OztJQVEzQiw0Q0FBMkI7Ozs7O0lBQzNCLDBDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmd4UHJpbnRFbGVtZW50U2VydmljZSB9IGZyb20gJy4vbmd4LXByaW50LWVsZW1lbnQuc2VydmljZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tuZ3hQcmludEVsZW1lbnRdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4UHJpbnRFbGVtZW50RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIHByaW50czogTmd4UHJpbnRFbGVtZW50U2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnByaW50cy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
const defaultOptions = {
htmlType: 'domObj',
printMode: 'template',
pageTitle: '',
templateString: '',
popupProperties: '',
stylesheets: [],
styles: [],
baseHref: ''
};
/**
* @record
*/
function _H() { }
if (false) {
/** @type {?} */
_H.prototype.head;
/** @type {?} */
_H.prototype.classNameUID;
/** @type {?} */
_H.prototype.idNameHeadUID;
}
/**
* HEAD Element
* \@return
* @type {?}
*/
const HEAD = (/**
* @return {?}
*/
() => {
/** @type {?} */
const head = document.getElementsByTagName('head')[0];
/** @type {?} */
const ID = (Math.round(Math.random() * 9999999)).toString();
/** @type {?} */
const classNameUID = `ngx-print-element-${ID}`;
/** @type {?} */
const idNameHeadUID = `ngx-print-element-head-${ID}`;
return { head, classNameUID, idNameHeadUID };
})
/**
* ADD_STYLE_HEAD
* @param _H
*/
;
const ɵ0 = HEAD;
/**
* ADD_STYLE_HEAD
* \@param _H
* @type {?}
*/
const ADD_STYLE_HEAD = (/**
* @param {?} _H
* @return {?}
*/
(_H) => {
/** @type {?} */
const style = document.createElement('style');
style.innerHTML = BUILD_STYLE(_H);
style.id = `${_H.idNameHeadUID}`;
_H.head.appendChild(style);
})
/**
* BUILD_STYLE
* @param _H
* @returns
*/
;
const ɵ1 = ADD_STYLE_HEAD;
/**
* BUILD_STYLE
* \@param _H
* \@return
* @type {?}
*/
const BUILD_STYLE = (/**
* @param {?} _H
* @return {?}
*/
(_H) => {
return `
@media print {
.${_H.classNameUID},
.${_H.classNameUID} * {
visibility: visible;
}
.${_H.classNameUID} {
position: absolute;
left: 0;
top: 0;
}
.${_H.classNameUID} .print-none {
display: none !important;
}
/* ----- Author: DaiDH ----- */
/* Copyright (C) 2022 - ${new Date().getFullYear()} */
}`;
});
const ɵ2 = BUILD_STYLE;
/**
* REMOVE_STYLE_HEAD
* \@param _H
* @type {?}
*/
const REMOVE_STYLE_HEAD = (/**
* @param {?} _H
* @return {?}
*/
(_H) => {
/** @type {?} */
const styleToRemove = document.getElementById(_H.idNameHeadUID);
if (styleToRemove) {
_H.head.removeChild(styleToRemove);
}
})
/**
* getBaseHref
* @param options
* @returns
*/
;
const ɵ3 = REMOVE_STYLE_HEAD;
/**
* getBaseHref
* \@param options
* \@return
* @type {?}
*/
export const getBaseHref = (/**
* @param {?} options
* @return {?}
*/
(options) => {
/** @type {?} */
const port = (window.location.port) ? `:${window.location.port}` : '';
/** @type {?} */
const buildURL = `${window.location.protocol}//${window.location.hostname}${port}${window.location.pathname}`;
/** @type {?} */
const finalURL = options.baseHref ? options.baseHref : buildURL;
return finalURL;
});
/**
* getMarkup
* print-html-element
* \@param element
* \@param options
* \@param _H
* \@return
* @type {?}
*/
export const getMarkup = (/**
* @param {?} element
* @param {?} options
* @param {?} _H
* @return {?}
*/
(element, options, _H) => {
/** @type {?} */
const template = options.templateString;
/** @type {?} */
const templateRegex = new RegExp(/{{\s*printBody\s*}}/gi);
/** @type {?} */
let stylesheets;
/** @type {?} */
let styles;
/** @type {?} */
const html = [];
if (options.htmlType === 'domObj') {
element = element.outerHTML;
}
if (options.htmlType === 'text') {
element = element.innerText;
}
if (template && templateRegex.test(template)) {
element = template.replace(templateRegex, element);
}
html.push(`<html><head><title>${options.pageTitle || ''}</title>`);
// If stylesheet URL's or list of stylesheet URL's are specified, override page stylesheets
if (options.stylesheets) {
stylesheets = Array.isArray(options.stylesheets) ? options.stylesheets : [options.stylesheets];
}
else {
stylesheets = Array.prototype.slice
.call(document.getElementsByTagName('link'))
.map((/**
* @param {?} link
* @return {?}
*/
link => link));
}
stylesheets.forEach((/**
* @param {?} f
* @return {?}
*/
(f) => {
html.push(`<link rel="${f.rel}" href="${f.href}">`);
}));
// If inline styles or list of inline styles are specified, override inline styles
if (options.styles) {
styles = Array.isArray(options.styles) ? [...options.styles, BUILD_STYLE(_H)] : [options.styles + BUILD_STYLE(_H)];
}
else {
styles = Array.prototype.slice
.call(document.getElementsByTagName('style'))
.map((/**
* @param {?} style
* @return {?}
*/
style => style.innerHTML));
}
styles.forEach((/**
* @param {?} style
* @return {?}
*/
(style) => {
html.push(`<style type="text/css">${style}</style>`);
}));
html.push(`<base href="${getBaseHref(options)}"/>`);
html.push(`</head><body class="${_H.classNameUID}">`);
html.push(element);
html.push('</body></html>');
return html.join('');
});
/**
* Print window.open
* \@param element
* \@param selfOptions
* \@param as
* @type {?}
*/
export const printElementWindow = (/**
* @param {?} element
* @param {?=} selfOptions
* @param {?=} as
* @return {?}
*/
(element, selfOptions = {}, as) => {
try {
/** @type {?} */
const options = Object.assign({}, defaultOptions, selfOptions);
/** @type {?} */
const container = element.nativeElement;
/** @type {?} */
const _H = HEAD();
// New window
/** @type {?} */
const printWindow = (/** @type {?} */ (window.open('about:blank', 'printElementWindow', options.popupProperties)));
/** @type {?} */
const printDocument = printWindow && (/** @type {?} */ (printWindow.document));
// Get markup to be printed
/** @type {?} */
const markup = getMarkup(container, options, _H);
ADD_STYLE_HEAD(_H);
// Close
/** @type {?} */
const onPrintFinished = (/**
* @param {?} printed
* @return {?}
*/
(printed) => {
printDocument.close();
setTimeout((/**
* @return {?}
*/
() => {
printWindow.close();
REMOVE_STYLE_HEAD(_H);
}), 1000);
});
// Print
printWindow.focus();
printDocument.write(markup);
onPrintFinished(printWindow.print());
printWindow.onbeforeprint = (/**
* @param {?} event
* @return {?}
*/
(event) => AS_COMPLETE(as, event));
printWindow.onafterprint = (/**
* @param {?} event
* @return {?}
*/
(event) => AS_COMPLETE(as, event));
}
catch (error) {
AS_COMPLETE(as, error);
}
});
/**
* Print iFrame
* \@param element
* \@param selfOptions
* \@param as
* @type {?}
*/
export const printIFrame = (/**
* @param {?} element
* @param {?=} selfOptions
* @param {?=} as
* @return {?}
*/
(element, selfOptions = {}, as) => {
try {
// Declare
/** @type {?} */
const options = Object.assign({}, defaultOptions, selfOptions);
/** @type {?} */
const container = element.nativeElement;
/** @type {?} */
const _H = HEAD();
// Get markup to be printed
/** @type {?} */
const markup = getMarkup(container, options, _H);
// Create iframe
/** @type {?} */
let iframe = (/** @type {?} */ (document.createElement('iframe')));
iframe.setAttribute('id', 'iframe-' + _H.classNameUID);
iframe.setAttribute('class', 'iframe-' + _H.classNameUID);
iframe.setAttribute('src', 'about:blank');
iframe.setAttribute('frameBorder', '0');
iframe.setAttribute('scrolling', 'no');
iframe.setAttribute('style', 'position:fixed;bottom:100%;right:100%;');
document.body.appendChild(iframe);
/** @type {?} */
let iDocument = null;
if (iframe.contentDocument) {
iDocument = iframe.contentDocument;
}
else if (iframe.contentWindow) {
iDocument = iframe.contentWindow.document;
}
ADD_STYLE_HEAD(_H);
// SetTimeout fixesiframe printMode does not work in firefox
setTimeout((/**
* @return {?}
*/
() => {
// Close
/** @type {?} */
const onPrintFinished = (/**
* @param {?} printed
* @return {?}
*/
(printed) => {
setTimeout((/**
* @return {?}
*/
() => {
iDocument.close();
REMOVE_STYLE_HEAD(_H);
}));
});
// Print
iframe.contentWindow.focus();
onPrintFinished(iframe.contentWindow.print());
iDocument.open();
iDocument.write(markup);
iframe.contentWindow.onbeforeprint = (/**
* @param {?} event
* @return {?}
*/
(event) => {
setTimeout((/**
* @return {?}
*/
() => document.body.removeChild(iframe)));
AS_COMPLETE(as, event);
});
iframe.contentWindow.onafterprint = (/**
* @param {?} event
* @return {?}
*/
(event) => AS_COMPLETE(as, event));
}));
}
catch (error) {
AS_COMPLETE(as, error);
}
})
/**
* Print default
* @param element
* @param renderer
* @param as
*/
;
/**
* Print default
* \@param element
* \@param renderer
* \@param as
* @type {?}
*/
export const printDefault = (/**
* @param {?} element
* @param {?} renderer
* @param {?} as
* @return {?}
*/
(element, renderer, as) => {
try {
// Declare
/** @type {?} */
const container = element.nativeElement;
/** @type {?} */
const _H = HEAD();
// Add visibility hidden into body
/** @type {?} */
const bodyEl = document.querySelector('body');
if (bodyEl) {
bodyEl.style.visibility = 'hidden';
renderer.addClass(container, _H.classNameUID);
ADD_STYLE_HEAD(_H);
}
// Close
/** @type {?} */
const onPrintFinished = (/**
* @param {?} printed
* @return {?}
*/
(printed) => {
// window.close();
// Clear visibility: hidden
bodyEl && (bodyEl.style.visibility = '');
renderer.setAttribute(container, 'class', container.className.replace(_H.classNameUID, ''));
REMOVE_STYLE_HEAD(_H);
});
// Print
window.focus();
onPrintFinished(window.print());
window.onbeforeprint = (/**
* @param {?} event
* @return {?}
*/
(event) => AS_COMPLETE(as, event));
window.onafterprint = (/**
* @param {?} event
* @return {?}
*/
(event) => AS_COMPLETE(as, event));
}
catch (error) {
AS_COMPLETE(as, error);
}
})
/**
* Rxjs complete
* @param as
* @param data
* @param error
*/
;
/**
* Rxjs complete
* \@param as
* \@param data
* \@param error
* @type {?}
*/
export const AS_COMPLETE = (/**
* @param {?} as
* @param {?} data
* @param {?=} error
* @return {?}
*/
(as, data, error = null) => {
error ? as.error(error) : as.next(data);
});
export { ɵ0, ɵ1, ɵ2, ɵ3 };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuaGVscGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXByaW50LWVsZW1lbnQvIiwic291cmNlcyI6WyJsaWIvbmd4LXByaW50LWVsZW1lbnQuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O01BSU0sY0FBYyxHQUFXO0lBQzdCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLFNBQVMsRUFBRSxFQUFFO0lBQ2IsY0FBYyxFQUFFLEVBQUU7SUFDbEIsZUFBZSxFQUFFLEVBQUU7SUFDbkIsV0FBVyxFQUFFLEVBQUU7SUFDZixNQUFNLEVBQUUsRUFBRTtJQUNWLFFBQVEsRUFBRSxFQUFFO0NBQ2I7Ozs7QUFHRCxpQkFJQzs7O0lBSEMsa0JBQXNCOztJQUN0QiwwQkFBcUI7O0lBQ3JCLDJCQUFzQjs7Ozs7OztNQU9sQixJQUFJOzs7QUFBRyxHQUFPLEVBQUU7O1VBQ2QsSUFBSSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7O1VBQy9DLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFOztVQUNyRCxZQUFZLEdBQUcscUJBQXFCLEVBQUUsRUFBRTs7VUFDeEMsYUFBYSxHQUFHLDBCQUEwQixFQUFFLEVBQUU7SUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLENBQUM7QUFDL0MsQ0FBQyxDQUFBO0FBRUQ7OztHQUdHOzs7Ozs7OztNQUNHLGNBQWM7Ozs7QUFBRyxDQUFDLEVBQU0sRUFBRSxFQUFFOztVQUMxQixLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7SUFDN0MsS0FBSyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsS0FBSyxD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UUFDZixlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLGFBQWE7Ozs7UUFBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQSxDQUFDO1FBQzlELE1BQU0sQ0FBQyxZQUFZOzs7O1FBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQztLQUM5RDtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN4QjtBQUNILENBQUMsQ0FBQTtBQUdEOzs7OztHQUtHOzs7Ozs7Ozs7QUFDSCxNQUFNLE9BQU8sV0FBVzs7Ozs7O0FBQUcsQ0FBQyxFQUFnQixFQUFFLElBQVMsRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLEVBQUU7SUFDdkUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIFJlbmRlcmVyMiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBDb25maWcgfSBmcm9tIFwiLi9uZ3gtcHJpbnQtZWxlbWVudC5zZXJ2aWNlXCI7XHJcblxyXG5jb25zdCBkZWZhdWx0T3B0aW9uczogQ29uZmlnID0ge1xyXG4gIGh0bWxUeXBlOiAnZG9tT2JqJyxcclxuICBwcmludE1vZGU6ICd0ZW1wbGF0ZScsXHJcbiAgcGFnZVRpdGxlOiAnJyxcclxuICB0ZW1wbGF0ZVN0cmluZzogJycsXHJcbiAgcG9wdXBQcm9wZXJ0aWVzOiAnJyxcclxuICBzdHlsZXNoZWV0czogW10sXHJcbiAgc3R5bGVzOiBbXSxcclxuICBiYXNlSHJlZjogJydcclxufTtcclxuXHJcblxyXG5pbnRlcmZhY2UgX0gge1xyXG4gIGhlYWQ6IEhUTUxIZWFkRWxlbWVudDtcclxuICBjbGFzc05hbWVVSUQ6IHN0cmluZztcclxuICBpZE5hbWVIZWFkVUlEOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIRUFEIEVsZW1lbnRcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5jb25zdCBIRUFEID0gKCk6IF9IID0+IHtcclxuICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcclxuICBjb25zdCBJRCA9IChNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5OTk5OTk5KSkudG9TdHJpbmcoKTtcclxuICBjb25zdCBjbGFzc05hbWVVSUQgPSBgbmd4LXByaW50LWVsZW1lbnQtJHtJRH1gO1xyXG4gIGNvbnN0IGlkTmFtZUhlYWRVSUQgPSBgbmd4LXByaW50LWVsZW1lbnQtaGVhZC0ke0lEfWA7XHJcbiAgcmV0dXJuIHsgaGVhZCwgY2xhc3NOYW1lVUlELCBpZE5hbWVIZWFkVUlEIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBRERfU1RZTEVfSEVBRFxyXG4gKiBAcGFyYW0gX0ggXHJcbiAqL1xyXG5jb25zdCBBRERfU1RZTEVfSEVBRCA9IChfSDogX0gpID0+IHtcclxuICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcbiAgc3R5bGUuaW5uZXJIVE1MID0gQlVJTERfU1RZTEUoX0gpO1xyXG4gIHN0eWxlLmlkID0gYCR7X0guaWROYW1lSGVhZFVJRH1gO1xyXG4gIF9ILmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xyXG59XHJcblxyXG4vKipcclxuICogQlVJTERfU1RZTEVcclxuICogQHBhcmFtIF9IIFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmNvbnN0IEJVSUxEX1NUWUxFID0gKF9IOiBfSCk6IHN0cmluZyA9PiB7XHJcbiAgcmV0dXJuIGBcclxuICBAbWVkaWEgcHJpbnQge1xyXG4gICAgLiR7X0guY2xhc3NOYW1lVUlEfSxcclxuICAgIC4ke19ILmNsYXNzTmFtZVVJRH0gKiB7XHJcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgIH1cclxuICAgIC4ke19ILmNsYXNzTmFtZVVJRH0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgIH1cclxuICAgIC4ke19ILmNsYXNzTmFtZVVJRH0gLnByaW50LW5vbmUge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuICAgIC8qIC0tLS0tIEF1dGhvcjogRGFpREggLS0tLS0gKi9cclxuICAgIC8qIENvcHlyaWdodCAoQykgMjAyMiAtICR7bmV3IERhdGUoKS5nZXRGdWxsWWVhcigpfSAqL1xyXG4gIH1gXHJcbn07XHJcblxyXG4vKipcclxuICogUkVNT1ZFX1NUWUxFX0hFQURcclxuICogQHBhcmFtIF9IIFxyXG4gKi9cclxuY29uc3QgUkVNT1ZFX1NUWUxFX0hFQUQgPSAoX0g6IF9IKSA9PiB7XHJcbiAgY29uc3Qgc3R5bGVUb1JlbW92ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKF9ILmlkTmFtZUhlYWRVSUQpO1xyXG4gIGlmIChzdHlsZVRvUmVtb3ZlKSB7XHJcbiAgICBfSC5oZWFkLnJlbW92ZUNoaWxkKHN0eWxlVG9SZW1vdmUpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIGdldEJhc2VIcmVmXHJcbiAqIEBwYXJhbSBvcHRpb25zIFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmV4cG9ydCBjb25zdCBnZXRCYXNlSHJlZiA9IChvcHRpb25zOiBDb25maWcpID0+IHtcclxuICBjb25zdCBwb3J0ID0gKHdpbmRvdy5sb2NhdGlvbi5wb3J0KSA/IGA6JHt3aW5kb3cubG9jYXRpb24ucG9ydH1gIDogJyc7XHJcbiAgY29uc3QgYnVpbGRVUkwgPSBgJHt3aW5kb3cubG9jYXRpb24ucHJvdG9jb2x9Ly8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZX0ke3BvcnR9JHt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9YDtcclxuICBjb25zdCBmaW5hbFVSTCA9IG9wdGlvbnMuYmFzZUhyZWYgPyBvcHRpb25zLmJhc2VIcmVmIDogYnVpbGRVUkw7XHJcbiAgcmV0dXJuIGZpbmFsVVJMO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIGdldE1hcmt1cFxyXG4gKiBwcmludC1odG1sLWVsZW1lbnRcclxuICogQHBhcmFtIGVsZW1lbnQgXHJcbiAqIEBwYXJhbSBvcHRpb25zIFxyXG4gKiBAcGFyYW0gX0ggXHJcbiAqIEByZXR1cm5zIFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGdldE1hcmt1cCA9IChlbGVtZW50OiBhbnksIG9wdGlvbnM6IENvbmZpZywgX0g6IF9IKSA9PiB7XHJcbiAgY29uc3QgdGVtcGxhdGUgPSBvcHRpb25zLnRlbXBsYXRlU3RyaW5nO1xyXG4gIGNvbnN0IHRlbXBsYXRlUmVnZXggPSBuZXcgUmVnRXhwKC97e1xccypwcmludEJvZHlcXHMqfX0vZ2kpO1xyXG4gIGxldCBzdHlsZXNoZWV0cztcclxuICBsZXQgc3R5bGVzO1xyXG4gIGNvbnN0IGh0bWwgPSBbXTtcclxuXHJcbiAgaWYgKG9wdGlvbnMuaHRtbFR5cGUgPT09ICdkb21PYmonKSB7XHJcbiAgICBlbGVtZW50ID0gZWxlbWVudC5vdXRlckhUTUw7XHJcbiAgfVxyXG5cclxuICBpZiAob3B0aW9ucy5odG1sVHlwZSA9PT0gJ3RleHQnKSB7XHJcbiAgICBlbGVtZW50ID0gZWxlbWVudC5pbm5lclRleHQ7XHJcbiAgfVxyXG5cclxuICBpZiAodGVtcGxhdGUgJiYgdGVtcGxhdGVSZWdleC50ZXN0KHRlbXBsYXRlKSkge1xyXG4gICAgZWxlbWVudCA9IHRlbXBsYXRlLnJlcGxhY2UodGVtcGxhdGVSZWdleCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBodG1sLnB1c2goYDxodG1sPjxoZWFkPjx0aXRsZT4ke29wdGlvbnMucGFnZVRpdGxlIHx8ICcnfTwvdGl0bGU+YCk7XHJcblxyXG4gIC8vIElmIHN0eWxlc2hlZXQgVVJMJ3Mgb3IgbGlzdCBvZiBzdHlsZXNoZWV0IFVSTCdzIGFyZSBzcGVjaWZpZWQsIG92ZXJyaWRlIHBhZ2Ugc3R5bGVzaGVldHNcclxuICBpZiAob3B0aW9ucy5zdHlsZXNoZWV0cykge1xyXG4gICAgc3R5bGVzaGVldHMgPSBBcnJheS5pc0FycmF5KG9wdGlvbnMuc3R5bGVzaGVldHMpID8gb3B0aW9ucy5zdHlsZXNoZWV0cyA6IFtvcHRpb25zLnN0eWxlc2hlZXRzXTtcclxuICB9IGVsc2Uge1xyXG4gICAgc3R5bGVzaGVldHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2VcclxuICAgICAgLmNhbGwoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xpbmsnKSlcclxuICAgICAgLm1hcChsaW5rID0+IGxpbmspO1xyXG4gIH1cclxuXHJcbiAgc3R5bGVzaGVldHMuZm9yRWFjaCgoZjogYW55KSA9PiB7XHJcbiAgICBodG1sLnB1c2goYDxsaW5rIHJlbD1cIiR7Zi5yZWx9XCIgaHJlZj1cIiR7Zi5ocmVmfVwiPmApO1xyXG4gIH0pO1xyXG5cclxuICAvLyBJZiBpbmxpbmUgc3R5bGVzIG9yIGxpc3Qgb2YgaW5saW5lIHN0eWxlcyBhcmUgc3BlY2lmaWVkLCBvdmVycmlkZSBpbmxpbmUgc3R5bGVzXHJcbiAgaWYgKG9wdGlvbnMuc3R5bGVzKSB7XHJcbiAgICBzdHlsZXMgPSBBcnJheS5pc0FycmF5KG9wdGlvbnMuc3R5bGVzKSA/IFsuLi5vcHRpb25zLnN0eWxlcywgQlVJTERfU1RZTEUoX0gpXSA6IFtvcHRpb25zLnN0eWxlcyArIEJVSUxEX1NUWUxFKF9IKV07XHJcbiAgfSBlbHNlIHtcclxuICAgIHN0eWxlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZVxyXG4gICAgICAuY2FsbChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3R5bGUnKSlcclxuICAgICAgLm1hcChzdHlsZSA9PiBzdHlsZS5pbm5lckhUTUwpO1xyXG4gIH1cclxuXHJcbiAgc3R5bGVzLmZvckVhY2goKHN0eWxlOiBhbnkpID0+IHtcclxuICAgIGh0bWwucHVzaChgPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiPiR7c3R5bGV9PC9zdHlsZT5gKTtcclxuICB9KTtcclxuXHJcbiAgaHRtbC5wdXNoKGA8YmFzZSBocmVmPVwiJHtnZXRCYXNlSHJlZihvcHRpb25zKX1cIi8+YCk7XHJcbiAgaHRtbC5wdXNoKGA8L2hlYWQ+PGJvZHkgY2xhc3M9XCIke19ILmNsYXNzTmFtZVVJRH1cIj5gKTtcclxuICBodG1sLnB1c2goZWxlbWVudCk7XHJcbiAgaHRtbC5wdXNoKCc8L2JvZHk+PC9odG1sPicpO1xyXG5cclxuICByZXR1cm4gaHRtbC5qb2luKCcnKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBQcmludCB3aW5kb3cub3BlblxyXG4gKiBAcGFyYW0gZWxlbWVudCBcclxuICogQHBhcmFtIHNlbGZPcHRpb25zIFxyXG4gKiBAcGFyYW0gYXMgXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgcHJpbnRFbGVtZW50V2luZG93ID0gKGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55Piwgc2VsZk9wdGlvbnMgPSB7fSwgYXM6IFN1YmplY3Q8YW55PikgPT4ge1xyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0geyAuLi5kZWZhdWx0T3B0aW9ucywgLi4uc2VsZk9wdGlvbnMgfTtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IF9IID0gSEVBRCgpO1xyXG5cclxuICAgIC8vIE5ldyB3aW5kb3dcclxuICAgIGNvbnN0IHByaW50V2luZG93ID0gd2luZG93Lm9wZW4oJ2Fib3V0OmJsYW5rJywgJ3ByaW50RWxlbWVudFdpbmRvdycsIG9wdGlvbnMucG9wdXBQcm9wZXJ0aWVzKSBhcyBhbnk7XHJcbiAgICBjb25zdCBwcmludERvY3VtZW50ID0gcHJpbnRXaW5kb3cgJiYgcHJpbnRXaW5kb3cuZG9jdW1lbnQgYXMgYW55O1xyXG5cclxuICAgIC8vIEdldCBtYXJrdXAgdG8gYmUgcHJpbnRlZFxyXG4gICAgY29uc3QgbWFya3VwID0gZ2V0TWFya3VwKGNvbnRhaW5lciwgb3B0aW9ucywgX0gpO1xyXG5cclxuICAgIEFERF9TVFlMRV9IRUFEKF9IKTtcclxuXHJcbiAgICAvLyBDbG9zZVxyXG4gICAgY29uc3Qgb25QcmludEZpbmlzaGVkID0gKHByaW50ZWQ6IGFueSkgPT4ge1xyXG4gICAgICBwcmludERvY3VtZW50LmNsb3NlKCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHByaW50V2luZG93LmNsb3NlKCk7XHJcbiAgICAgICAgUkVNT1ZFX1NUWUxFX0hFQUQoX0gpO1xyXG4gICAgICB9LCAxMDAwKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gUHJpbnRcclxuICAgIHByaW50V2luZG93LmZvY3VzKCk7XHJcbiAgICBwcmludERvY3VtZW50LndyaXRlKG1hcmt1cCk7XHJcbiAgICBvblByaW50RmluaXNoZWQocHJpbnRXaW5kb3cucHJpbnQoKSk7XHJcbiAgICBwcmludFdpbmRvdy5vbmJlZm9yZXByaW50ID0gKGV2ZW50OiBhbnkpID0+IEFTX0NPTVBMRVRFKGFzLCBldmVudCk7XHJcbiAgICBwcmludFdpbmRvdy5vbmFmdGVycHJpbnQgPSAoZXZlbnQ6IGFueSkgPT4gQVNfQ09NUExFVEUoYXMsIGV2ZW50KTtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgQVNfQ09NUExFVEUoYXMsIGVycm9yKTtcclxuICB9XHJcbn07XHJcblxyXG4vKipcclxuICogUHJpbnQgaUZyYW1lXHJcbiAqIEBwYXJhbSBlbGVtZW50IFxyXG4gKiBAcGFyYW0gc2VsZk9wdGlvbnMgXHJcbiAqIEBwYXJhbSBhcyBcclxuICovXHJcbmV4cG9ydCBjb25zdCBwcmludElGcmFtZSA9IChlbGVtZW50OiBFbGVtZW50UmVmPGFueT4sIHNlbGZPcHRpb25zID0ge30sIGFzOiBTdWJqZWN0PGFueT4sKSA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIC8vIERlY2xhcmVcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5zZWxmT3B0aW9ucyB9O1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgX0ggPSBIRUFEKCk7XHJcblxyXG4gICAgLy8gR2V0IG1hcmt1cCB0byBiZSBwcmludGVkXHJcbiAgICBjb25zdCBtYXJrdXAgPSBnZXRNYXJrdXAoY29udGFpbmVyLCBvcHRpb25zLCBfSCk7XHJcblxyXG4gICAgLy8gQ3JlYXRlIGlmcmFtZVxyXG4gICAgbGV0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpIGFzIEhUTUxJRnJhbWVFbGVtZW50IHwgYW55O1xyXG4gICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnaWQnLCAnaWZyYW1lLScgKyBfSC5jbGFzc05hbWVVSUQpO1xyXG4gICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnaWZyYW1lLScgKyBfSC5jbGFzc05hbWVVSUQpO1xyXG4gICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnc3JjJywgJ2Fib3V0OmJsYW5rJyk7XHJcbiAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdmcmFtZUJvcmRlcicsICcwJyk7XHJcbiAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdzY3JvbGxpbmcnLCAnbm8nKTtcclxuICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3Bvc2l0aW9uOmZpeGVkO2JvdHRvbToxMDAlO3JpZ2h0OjEwMCU7Jyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7XHJcblxyXG4gICAgbGV0IGlEb2N1bWVudDogYW55ID0gbnVsbDtcclxuICAgIGlmIChpZnJhbWUuY29udGVudERvY3VtZW50KSB7XHJcbiAgICAgIGlEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50RG9jdW1lbnQ7XHJcbiAgICB9IGVsc2UgaWYgKGlmcmFtZS5jb250ZW50V2luZG93KSB7XHJcbiAgICAgIGlEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIEFERF9TVFlMRV9IRUFEKF9IKTtcclxuXHJcbiAgICAvLyBTZXRUaW1lb3V0IGZpeGVzaWZyYW1lIHByaW50TW9kZSBkb2VzIG5vdCB3b3JrIGluIGZpcmVmb3hcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgLy8gQ2xvc2VcclxuICAgICAgY29uc3Qgb25QcmludEZpbmlzaGVkID0gKHByaW50ZWQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgaURvY3VtZW50LmNsb3NlKCk7XHJcbiAgICAgICAgICBSRU1PVkVfU1RZTEVfSEVBRChfSCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICAvLyBQcmludFxyXG4gICAgICBpZnJhbWUuY29udGVudFdpbmRvdy5mb2N1cygpO1xyXG4gICAgICBvblByaW50RmluaXNoZWQoaWZyYW1lLmNvbnRlbnRXaW5kb3cucHJpbnQoKSk7XHJcbiAgICAgIGlEb2N1bWVudC5vcGVuKCk7XHJcbiAgICAgIGlEb2N1bWVudC53cml0ZShtYXJrdXApO1xyXG4gICAgICBpZnJhbWUuY29udGVudFdpbmRvdy5vbmJlZm9yZXByaW50ID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaWZyYW1lKSk7XHJcbiAgICAgICAgQVNfQ09NUExFVEUoYXMsIGV2ZW50KTtcclxuICAgICAgfVxyXG4gICAgICBpZnJhbWUuY29udGVudFdpbmRvdy5vbmFmdGVycHJpbnQgPSAoZXZlbnQ6IGFueSkgPT4gQVNfQ09NUExFVEUoYXMsIGV2ZW50KTtcclxuICAgIH0pO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBBU19DT01QTEVURShhcywgZXJyb3IpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFByaW50IGRlZmF1bHRcclxuICogQHBhcmFtIGVsZW1lbnQgXHJcbiAqIEBwYXJhbSByZW5kZXJlciBcclxuICogQHBhcmFtIGFzIFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHByaW50RGVmYXVsdCA9IChlbGVtZW50OiBFbGVtZW50UmVmPGFueT4sIHJlbmRlcmVyOiBSZW5kZXJlcjIsIGFzOiBTdWJqZWN0PGFueT4pID0+IHtcclxuICB0cnkge1xyXG4gICAgLy8gRGVjbGFyZVxyXG4gICAgY29uc3QgY29udGFpbmVyID0gZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgX0ggPSBIRUFEKCk7XHJcblxyXG4gICAgLy8gQWRkIHZpc2liaWxpdHkgaGlkZGVuIGludG8gYm9keVxyXG4gICAgY29uc3QgYm9keUVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xyXG4gICAgaWYgKGJvZHlFbCkge1xyXG4gICAgICBib2R5RWwuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xyXG4gICAgICByZW5kZXJlci5hZGRDbGFzcyhjb250YWluZXIsIF9ILmNsYXNzTmFtZVVJRCk7XHJcbiAgICAgIEFERF9TVFlMRV9IRUFEKF9IKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDbG9zZVxyXG4gICAgY29uc3Qgb25QcmludEZpbmlzaGVkID0gKHByaW50ZWQ6IGFueSkgPT4ge1xyXG4gICAgICAvLyB3aW5kb3cuY2xvc2UoKTtcclxuICAgICAgLy8gQ2xlYXIgdmlzaWJpbGl0eTogaGlkZGVuXHJcbiAgICAgIGJvZHlFbCAmJiAoYm9keUVsLnN0eWxlLnZpc2liaWxpdHkgPSAnJyk7XHJcbiAgICAgIHJlbmRlcmVyLnNldEF0dHJpYnV0ZShjb250YWluZXIsICdjbGFzcycsIGNvbnRhaW5lci5jbGFzc05hbWUucmVwbGFjZShfSC5jbGFzc05hbWVVSUQsICcnKSk7XHJcbiAgICAgIFJFTU9WRV9TVFlMRV9IRUFEKF9IKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gUHJpbnRcclxuICAgIHdpbmRvdy5mb2N1cygpO1xyXG4gICAgb25QcmludEZpbmlzaGVkKHdpbmRvdy5wcmludCgpKTtcclxuICAgIHdpbmRvdy5vbmJlZm9yZXByaW50ID0gKGV2ZW50OiBhbnkpID0+IEFTX0NPTVBMRVRFKGFzLCBldmVudCk7XHJcbiAgICB3aW5kb3cub25hZnRlcnByaW50ID0gKGV2ZW50OiBhbnkpID0+IEFTX0NPTVBMRVRFKGFzLCBldmVudCk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIEFTX0NPTVBMRVRFKGFzLCBlcnJvcik7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFJ4anMgY29tcGxldGVcclxuICogQHBhcmFtIGFzIFxyXG4gKiBAcGFyYW0gZGF0YSBcclxuICogQHBhcmFtIGVycm9yIFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IEFTX0NPTVBMRVRFID0gKGFzOiBTdWJqZWN0PGFueT4sIGRhdGE6IGFueSwgZXJyb3IgPSBudWxsKSA9PiB7XHJcbiAgZXJyb3IgPyBhcy5lcnJvcihlcnJvcikgOiBhcy5uZXh0KGRhdGEpO1xyXG59O1xyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { NgModule } from '@angular/core';
import { NgxPrintElementComponent } from './ngx-print-element.component';
import { NgxPrintElementDirective } from './ngx-print-element.directive';
export class NgxPrintElementModule {
}
NgxPrintElementModule.decorators = [
{ type: NgModule, args: [{
declarations: [
NgxPrintElementComponent,
NgxPrintElementDirective
],
exports: [
NgxPrintElementComponent,
NgxPrintElementDirective
]
},] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXByaW50LWVsZW1lbnQvIiwic291cmNlcyI6WyJsaWIvbmd4LXByaW50LWVsZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBY3pFLE1BQU07OztZQVhMLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUU7b0JBQ1osd0JBQXdCO29CQUN4Qix3QkFBd0I7aUJBQ3pCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCx3QkFBd0I7b0JBQ3hCLHdCQUF3QjtpQkFDekI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5neFByaW50RWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4vbmd4LXByaW50LWVsZW1lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmd4UHJpbnRFbGVtZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9uZ3gtcHJpbnQtZWxlbWVudC5kaXJlY3RpdmUnO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBOZ3hQcmludEVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBOZ3hQcmludEVsZW1lbnREaXJlY3RpdmVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIE5neFByaW50RWxlbWVudENvbXBvbmVudCxcclxuICAgIE5neFByaW50RWxlbWVudERpcmVjdGl2ZVxyXG4gIF1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBOZ3hQcmludEVsZW1lbnRNb2R1bGUge1xyXG59XHJcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { printDefault, printElementWindow, printIFrame } from './ngx-print-element.helper';
import * as i0 from "@angular/core";
/**
* @record
*/
export function Config() { }
if (false) {
/** @type {?|undefined} */
Config.prototype.htmlType;
/** @type {?|undefined} */
Config.prototype.printMode;
/** @type {?|undefined} */
Config.prototype.pageTitle;
/** @type {?|undefined} */
Config.prototype.templateString;
/** @type {?|undefined} */
Config.prototype.popupProperties;
/** @type {?|undefined} */
Config.prototype.stylesheets;
/** @type {?|undefined} */
Config.prototype.styles;
/** @type {?|undefined} */
Config.prototype.baseHref;
}
export class NgxPrintElementService {
/**
* Print
* @param {?} element
* @param {?=} config
* @return {?}
*/
print(element, config) {
/** @type {?} */
const as = new Subject();
// Create and insert new print section
if (element) {
// Element
if (config) {
// Config
if (config.printMode === 'template') {
// iframe
printIFrame(element, config, as);
}
if (config.printMode === 'template-popup') {
// windows
printElementWindow(element, config, as);
}
}
else {
// No config
printDefault(element, this.renderer, as);
}
}
return as;
}
}
NgxPrintElementService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */ NgxPrintElementService.ngInjectableDef = i0.defineInjectable({ factory: function NgxPrintElementService_Factory() { return new NgxPrintElementService(); }, token: NgxPrintElementService, providedIn: "root" });
if (false) {
/** @type {?} */
NgxPrintElementService.prototype.renderer;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1wcmludC1lbGVtZW50LyIsInNvdXJjZXMiOlsibGliL25neC1wcmludC1lbGVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQUUzRiw0QkFZQzs7O0lBWEMsMEJBQWtCOztJQUNsQiwyQkFBbUI7O0lBQ25CLDJCQUFtQjs7SUFDbkIsZ0NBQXdCOztJQUN4QixpQ0FBeUI7O0lBQ3pCLDZCQUdJOztJQUNKLHdCQUFrQjs7SUFDbEIsMEJBQWtCOztBQU1wQixNQUFNOzs7Ozs7O0lBVUcsS0FBSyxDQUFDLE9BQXdCLEVBQUUsTUFBZTs7Y0FDOUMsRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFO1FBQ3hCLHNDQUFzQztRQUN0QyxJQUFJLE9BQU8sRUFBRTtZQUNYLFVBQVU7WUFDVixJQUFJLE1BQU0sRUFBRTtnQkFDVixTQUFTO2dCQUNULElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUU7b0JBQ25DLFNBQVM7b0JBQ1QsV0FBVyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQ2xDO2dCQUNELElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxnQkFBZ0IsRUFBRTtvQkFDekMsVUFBVTtvQkFDVixrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUN6QzthQUNGO2lCQUFNO2dCQUNMLFlBQVk7Z0JBQ1osWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7OztZQWxDRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7O0lBR0MsMENBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgcHJpbnREZWZhdWx0LCBwcmludEVsZW1lbnRXaW5kb3csIHByaW50SUZyYW1lIH0gZnJvbSAnLi9uZ3gtcHJpbnQtZWxlbWVudC5oZWxwZXInO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25maWcge1xyXG4gIGh0bWxUeXBlPzogc3RyaW5nO1xyXG4gIHByaW50TW9kZT86IHN0cmluZztcclxuICBwYWdlVGl0bGU/OiBzdHJpbmc7XHJcbiAgdGVtcGxhdGVTdHJpbmc/OiBzdHJpbmc7XHJcbiAgcG9wdXBQcm9wZXJ0aWVzPzogc3RyaW5nO1xyXG4gIHN0eWxlc2hlZXRzPzoge1xyXG4gICAgcmVsPzogc3RyaW5nLFxyXG4gICAgaHJlZj86IHN0cmluZ1xyXG4gIH1bXSxcclxuICBzdHlsZXM/OiBzdHJpbmdbXTtcclxuICBiYXNlSHJlZj86IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4UHJpbnRFbGVtZW50U2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyByZW5kZXJlciE6IFJlbmRlcmVyMjtcclxuXHJcbiAgLyoqXHJcbiAgICogUHJpbnRcclxuICAgKiBAcGFyYW0gZWxlbWVudCBcclxuICAgKiBAcGFyYW0gY29uZmlnIFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwcmludChlbGVtZW50OiBFbGVtZW50UmVmPGFueT4sIGNvbmZpZz86IENvbmZpZyk6IFN1YmplY3Q8YW55PiB7XHJcbiAgICBjb25zdCBhcyA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICAvLyBDcmVhdGUgYW5kIGluc2VydCBuZXcgcHJpbnQgc2VjdGlvblxyXG4gICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgLy8gRWxlbWVudFxyXG4gICAgICBpZiAoY29uZmlnKSB7XHJcbiAgICAgICAgLy8gQ29uZmlnXHJcbiAgICAgICAgaWYgKGNvbmZpZy5wcmludE1vZGUgPT09ICd0ZW1wbGF0ZScpIHtcclxuICAgICAgICAgIC8vIGlmcmFtZVxyXG4gICAgICAgICAgcHJpbnRJRnJhbWUoZWxlbWVudCwgY29uZmlnLCBhcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb25maWcucHJpbnRNb2RlID09PSAndGVtcGxhdGUtcG9wdXAnKSB7XHJcbiAgICAgICAgICAvLyB3aW5kb3dzXHJcbiAgICAgICAgICBwcmludEVsZW1lbnRXaW5kb3coZWxlbWVudCwgY29uZmlnLCBhcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIE5vIGNvbmZpZ1xyXG4gICAgICAgIHByaW50RGVmYXVsdChlbGVtZW50LCB0aGlzLnJlbmRlcmVyLCBhcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcztcclxuICB9XHJcbn1cclxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* Generated bundle index. Do not edit.
*/
export { NgxPrintElementDirective, NgxPrintElementService, NgxPrintElementComponent, NgxPrintElementModule } from './public_api';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtcHJpbnQtZWxlbWVudC8iLCJzb3VyY2VzIjpbIm5neC1wcmludC1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxrSEFBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* Public API Surface of ngx-print-element
*/
export { NgxPrintElementDirective } from './lib/ngx-print-element.directive';
export { NgxPrintElementService } from './lib/ngx-print-element.service';
export { NgxPrintElementComponent } from './lib/ngx-print-element.component';
export { NgxPrintElementModule } from './lib/ngx-print-element.module';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1wcmludC1lbGVtZW50LyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEseUNBQWMsbUNBQW1DLENBQUM7QUFDbEQsdUNBQWMsaUNBQWlDLENBQUM7QUFDaEQseUNBQWMsbUNBQW1DLENBQUM7QUFDbEQsc0NBQWMsZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LXByaW50LWVsZW1lbnRcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtcHJpbnQtZWxlbWVudC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtcHJpbnQtZWxlbWVudC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LXByaW50LWVsZW1lbnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LXByaW50LWVsZW1lbnQubW9kdWxlJztcclxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component } from '@angular/core';
import { NgxPrintElementService } from './ngx-print-element.service';
var NgxPrintElementComponent = /** @class */ (function () {
function NgxPrintElementComponent(prints) {
this.prints = prints;
}
/**
* Print
* @param elementRef
* @param config
* @returns
*/
/**
* Print
* @param {?} elementRef
* @param {?=} config
* @return {?}
*/
NgxPrintElementComponent.prototype.print = /**
* Print
* @param {?} elementRef
* @param {?=} config
* @return {?}
*/
function (elementRef, config) {
return this.prints.print(elementRef, config);
};
NgxPrintElementComponent.decorators = [
{ type: Component, args: [{
selector: 'ngx-print-element',
template: "<ng-content></ng-content>",
exportAs: 'element'
}] }
];
NgxPrintElementComponent.ctorParameters = function () { return [
{ type: NgxPrintElementService }
]; };
return NgxPrintElementComponent;
}());
export { NgxPrintElementComponent };
if (false) {
/**
* @type {?}
* @private
*/
NgxPrintElementComponent.prototype.prints;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXByaW50LWVsZW1lbnQvIiwic291cmNlcyI6WyJsaWIvbmd4LXByaW50LWVsZW1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBVSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdFO0lBT0Usa0NBQW9CLE1BQThCO1FBQTlCLFdBQU0sR0FBTixNQUFNLENBQXdCO0lBQUksQ0FBQztJQUV2RDs7Ozs7T0FLRzs7Ozs7OztJQUNJLHdDQUFLOzs7Ozs7SUFBWixVQUFhLFVBQTJCLEVBQUUsTUFBZTtRQUN2RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvQyxDQUFDOztnQkFqQkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFFBQVEsRUFBRSxTQUFTO2lCQUNwQjs7O2dCQU5nQixzQkFBc0I7O0lBb0J2QywrQkFBQztDQUFBLEFBbEJELElBa0JDO1NBYlksd0JBQXdCOzs7Ozs7SUFFdkIsMENBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29uZmlnLCBOZ3hQcmludEVsZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtcHJpbnQtZWxlbWVudC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmd4LXByaW50LWVsZW1lbnQnLFxyXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXHJcbiAgZXhwb3J0QXM6ICdlbGVtZW50J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4UHJpbnRFbGVtZW50Q29tcG9uZW50IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwcmludHM6IE5neFByaW50RWxlbWVudFNlcnZpY2UpIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBQcmludFxyXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIFxyXG4gICAqIEBwYXJhbSBjb25maWcgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgcHVibGljIHByaW50KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8YW55PiwgY29uZmlnPzogQ29uZmlnKTogU3ViamVjdDxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByaW50cy5wcmludChlbGVtZW50UmVmLCBjb25maWcpO1xyXG4gIH1cclxufVxyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, Renderer2 } from '@angular/core';
import { NgxPrintElementService } from './ngx-print-element.service';
var NgxPrintElementDirective = /** @class */ (function () {
function NgxPrintElementDirective(renderer, prints) {
this.renderer = renderer;
this.prints = prints;
}
/**
* @return {?}
*/
NgxPrintElementDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.prints.renderer = this.renderer;
};
NgxPrintElementDirective.decorators = [
{ type: Directive, args: [{
selector: '[ngxPrintElement]'
},] }
];
NgxPrintElementDirective.ctorParameters = function () { return [
{ type: Renderer2 },
{ type: NgxPrintElementService }
]; };
return NgxPrintElementDirective;
}());
export { NgxPrintElementDirective };
if (false) {
/**
* @type {?}
* @private
*/
NgxPrintElementDirective.prototype.renderer;
/**
* @type {?}
* @private
*/
NgxPrintElementDirective.prototype.prints;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXByaW50LWVsZW1lbnQvIiwic291cmNlcyI6WyJsaWIvbmd4LXByaW50LWVsZW1lbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVyRTtJQUtFLGtDQUNVLFFBQW1CLEVBQ25CLE1BQThCO1FBRDlCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7SUFFeEMsQ0FBQzs7OztJQUVELDJDQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkMsQ0FBQzs7Z0JBYkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCOzs7Z0JBTDJCLFNBQVM7Z0JBQzVCLHNCQUFzQjs7SUFnQi9CLCtCQUFDO0NBQUEsQUFkRCxJQWNDO1NBWFksd0JBQXdCOzs7Ozs7SUFHakMsNENBQTJCOzs7OztJQUMzQiwwQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5neFByaW50RWxlbWVudFNlcnZpY2UgfSBmcm9tICcuL25neC1wcmludC1lbGVtZW50LnNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbbmd4UHJpbnRFbGVtZW50XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5neFByaW50RWxlbWVudERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBwcmludHM6IE5neFByaW50RWxlbWVudFNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wcmludHMucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyO1xyXG4gIH1cclxufVxyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
/** @type {?} */
var defaultOptions = {
htmlType: 'domObj',
printMode: 'template',
pageTitle: '',
templateString: '',
popupProperties: '',
stylesheets: [],
styles: [],
baseHref: ''
};
/**
* @record
*/
function _H() { }
if (false) {
/** @type {?} */
_H.prototype.head;
/** @type {?} */
_H.prototype.classNameUID;
/** @type {?} */
_H.prototype.idNameHeadUID;
}
/**
* HEAD Element
* \@return
* @type {?}
*/
var HEAD = (/**
* @return {?}
*/
function () {
/** @type {?} */
var head = document.getElementsByTagName('head')[0];
/** @type {?} */
var ID = (Math.round(Math.random() * 9999999)).toString();
/** @type {?} */
var classNameUID = "ngx-print-element-" + ID;
/** @type {?} */
var idNameHeadUID = "ngx-print-element-head-" + ID;
return { head: head, classNameUID: classNameUID, idNameHeadUID: idNameHeadUID };
})
/**
* ADD_STYLE_HEAD
* @param _H
*/
;
var ɵ0 = HEAD;
/**
* ADD_STYLE_HEAD
* \@param _H
* @type {?}
*/
var ADD_STYLE_HEAD = (/**
* @param {?} _H
* @return {?}
*/
function (_H) {
/** @type {?} */
var style = document.createElement('style');
style.innerHTML = BUILD_STYLE(_H);
style.id = "" + _H.idNameHeadUID;
_H.head.appendChild(style);
})
/**
* BUILD_STYLE
* @param _H
* @returns
*/
;
var ɵ1 = ADD_STYLE_HEAD;
/**
* BUILD_STYLE
* \@param _H
* \@return
* @type {?}
*/
var BUILD_STYLE = (/**
* @param {?} _H
* @return {?}
*/
function (_H) {
return "\n @media print {\n ." + _H.classNameUID + ",\n ." + _H.classNameUID + " * {\n visibility: visible;\n }\n ." + _H.classNameUID + " {\n position: absolute;\n left: 0;\n top: 0;\n }\n ." + _H.classNameUID + " .print-none {\n display: none !important;\n }\n /* ----- Author: DaiDH ----- */\n /* Copyright (C) 2022 - " + new Date().getFullYear() + " */\n }";
});
var ɵ2 = BUILD_STYLE;
/**
* REMOVE_STYLE_HEAD
* \@param _H
* @type {?}
*/
var REMOVE_STYLE_HEAD = (/**
* @param {?} _H
* @return {?}
*/
function (_H) {
/** @type {?} */
var styleToRemove = document.getElementById(_H.idNameHeadUID);
if (styleToRemove) {
_H.head.removeChild(styleToRemove);
}
})
/**
* getBaseHref
* @param options
* @returns
*/
;
var ɵ3 = REMOVE_STYLE_HEAD;
/**
* getBaseHref
* \@param options
* \@return
* @type {?}
*/
export var getBaseHref = (/**
* @param {?} options
* @return {?}
*/
function (options) {
/** @type {?} */
var port = (window.location.port) ? ":" + window.location.port : '';
/** @type {?} */
var buildURL = window.location.protocol + "//" + window.location.hostname + port + window.location.pathname;
/** @type {?} */
var finalURL = options.baseHref ? options.baseHref : buildURL;
return finalURL;
});
/**
* getMarkup
* print-html-element
* \@param element
* \@param options
* \@param _H
* \@return
* @type {?}
*/
export var getMarkup = (/**
* @param {?} element
* @param {?} options
* @param {?} _H
* @return {?}
*/
function (element, options, _H) {
/** @type {?} */
var template = options.templateString;
/** @type {?} */
var templateRegex = new RegExp(/{{\s*printBody\s*}}/gi);
/** @type {?} */
var stylesheets;
/** @type {?} */
var styles;
/** @type {?} */
var html = [];
if (options.htmlType === 'domObj') {
element = element.outerHTML;
}
if (options.htmlType === 'text') {
element = element.innerText;
}
if (template && templateRegex.test(template)) {
element = template.replace(templateRegex, element);
}
html.push("<html><head><title>" + (options.pageTitle || '') + "</title>");
// If stylesheet URL's or list of stylesheet URL's are specified, override page stylesheets
if (options.stylesheets) {
stylesheets = Array.isArray(options.stylesheets) ? options.stylesheets : [options.stylesheets];
}
else {
stylesheets = Array.prototype.slice
.call(document.getElementsByTagName('link'))
.map((/**
* @param {?} link
* @return {?}
*/
function (link) { return link; }));
}
stylesheets.forEach((/**
* @param {?} f
* @return {?}
*/
function (f) {
html.push("<link rel=\"" + f.rel + "\" href=\"" + f.href + "\">");
}));
// If inline styles or list of inline styles are specified, override inline styles
if (options.styles) {
styles = Array.isArray(options.styles) ? tslib_1.__spread(options.styles, [BUILD_STYLE(_H)]) : [options.styles + BUILD_STYLE(_H)];
}
else {
styles = Array.prototype.slice
.call(document.getElementsByTagName('style'))
.map((/**
* @param {?} style
* @return {?}
*/
function (style) { return style.innerHTML; }));
}
styles.forEach((/**
* @param {?} style
* @return {?}
*/
function (style) {
html.push("<style type=\"text/css\">" + style + "</style>");
}));
html.push("<base href=\"" + getBaseHref(options) + "\"/>");
html.push("</head><body class=\"" + _H.classNameUID + "\">");
html.push(element);
html.push('</body></html>');
return html.join('');
});
/**
* Print window.open
* \@param element
* \@param selfOptions
* \@param as
* @type {?}
*/
export var printElementWindow = (/**
* @param {?} element
* @param {?=} selfOptions
* @param {?=} as
* @return {?}
*/
function (element, selfOptions, as) {
if (selfOptions === void 0) { selfOptions = {}; }
try {
/** @type {?} */
var options = tslib_1.__assign({}, defaultOptions, selfOptions);
/** @type {?} */
var container = element.nativeElement;
/** @type {?} */
var _H_1 = HEAD();
// New window
/** @type {?} */
var printWindow_1 = (/** @type {?} */ (window.open('about:blank', 'printElementWindow', options.popupProperties)));
/** @type {?} */
var printDocument_1 = printWindow_1 && (/** @type {?} */ (printWindow_1.document));
// Get markup to be printed
/** @type {?} */
var markup = getMarkup(container, options, _H_1);
ADD_STYLE_HEAD(_H_1);
// Close
/** @type {?} */
var onPrintFinished = (/**
* @param {?} printed
* @return {?}
*/
function (printed) {
printDocument_1.close();
setTimeout((/**
* @return {?}
*/
function () {
printWindow_1.close();
REMOVE_STYLE_HEAD(_H_1);
}), 1000);
});
// Print
printWindow_1.focus();
printDocument_1.write(markup);
onPrintFinished(printWindow_1.print());
printWindow_1.onbeforeprint = (/**
* @param {?} event
* @return {?}
*/
function (event) { return AS_COMPLETE(as, event); });
printWindow_1.onafterprint = (/**
* @param {?} event
* @return {?}
*/
function (event) { return AS_COMPLETE(as, event); });
}
catch (error) {
AS_COMPLETE(as, error);
}
});
/**
* Print iFrame
* \@param element
* \@param selfOptions
* \@param as
* @type {?}
*/
export var printIFrame = (/**
* @param {?} element
* @param {?=} selfOptions
* @param {?=} as
* @return {?}
*/
function (element, selfOptions, as) {
if (selfOptions === void 0) { selfOptions = {}; }
try {
// Declare
/** @type {?} */
var options = tslib_1.__assign({}, defaultOptions, selfOptions);
/** @type {?} */
var container = element.nativeElement;
/** @type {?} */
var _H_2 = HEAD();
// Get markup to be printed
/** @type {?} */
var markup_1 = getMarkup(container, options, _H_2);
// Create iframe
/** @type {?} */
var iframe_1 = (/** @type {?} */ (document.createElement('iframe')));
iframe_1.setAttribute('id', 'iframe-' + _H_2.classNameUID);
iframe_1.setAttribute('class', 'iframe-' + _H_2.classNameUID);
iframe_1.setAttribute('src', 'about:blank');
iframe_1.setAttribute('frameBorder', '0');
iframe_1.setAttribute('scrolling', 'no');
iframe_1.setAttribute('style', 'position:fixed;bottom:100%;right:100%;');
document.body.appendChild(iframe_1);
/** @type {?} */
var iDocument_1 = null;
if (iframe_1.contentDocument) {
iDocument_1 = iframe_1.contentDocument;
}
else if (iframe_1.contentWindow) {
iDocument_1 = iframe_1.contentWindow.document;
}
ADD_STYLE_HEAD(_H_2);
// SetTimeout fixesiframe printMode does not work in firefox
setTimeout((/**
* @return {?}
*/
function () {
// Close
/** @type {?} */
var onPrintFinished = (/**
* @param {?} printed
* @return {?}
*/
function (printed) {
setTimeout((/**
* @return {?}
*/
function () {
iDocument_1.close();
REMOVE_STYLE_HEAD(_H_2);
}));
});
// Print
iframe_1.contentWindow.focus();
onPrintFinished(iframe_1.contentWindow.print());
iDocument_1.open();
iDocument_1.write(markup_1);
iframe_1.contentWindow.onbeforeprint = (/**
* @param {?} event
* @return {?}
*/
function (event) {
setTimeout((/**
* @return {?}
*/
function () { return document.body.removeChild(iframe_1); }));
AS_COMPLETE(as, event);
});
iframe_1.contentWindow.onafterprint = (/**
* @param {?} event
* @return {?}
*/
function (event) { return AS_COMPLETE(as, event); });
}));
}
catch (error) {
AS_COMPLETE(as, error);
}
})
/**
* Print default
* @param element
* @param renderer
* @param as
*/
;
/**
* Print default
* \@param element
* \@param renderer
* \@param as
* @type {?}
*/
export var printDefault = (/**
* @param {?} element
* @param {?} renderer
* @param {?} as
* @return {?}
*/
function (element, renderer, as) {
try {
// Declare
/** @type {?} */
var container_1 = element.nativeElement;
/** @type {?} */
var _H_3 = HEAD();
// Add visibility hidden into body
/** @type {?} */
var bodyEl_1 = document.querySelector('body');
if (bodyEl_1) {
bodyEl_1.style.visibility = 'hidden';
renderer.addClass(container_1, _H_3.classNameUID);
ADD_STYLE_HEAD(_H_3);
}
// Close
/** @type {?} */
var onPrintFinished = (/**
* @param {?} printed
* @return {?}
*/
function (printed) {
// window.close();
// Clear visibility: hidden
bodyEl_1 && (bodyEl_1.style.visibility = '');
renderer.setAttribute(container_1, 'class', container_1.className.replace(_H_3.classNameUID, ''));
REMOVE_STYLE_HEAD(_H_3);
});
// Print
window.focus();
onPrintFinished(window.print());
window.onbeforeprint = (/**
* @param {?} event
* @return {?}
*/
function (event) { return AS_COMPLETE(as, event); });
window.onafterprint = (/**
* @param {?} event
* @return {?}
*/
function (event) { return AS_COMPLETE(as, event); });
}
catch (error) {
AS_COMPLETE(as, error);
}
})
/**
* Rxjs complete
* @param as
* @param data
* @param error
*/
;
/**
* Rxjs complete
* \@param as
* \@param data
* \@param error
* @type {?}
*/
export var AS_COMPLETE = (/**
* @param {?} as
* @param {?} data
* @param {?=} error
* @return {?}
*/
function (as, data, error) {
if (error === void 0) { error = null; }
error ? as.error(error) : as.next(data);
});
export { ɵ0, ɵ1, ɵ2, ɵ3 };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuaGVscGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXByaW50LWVsZW1lbnQvIiwic291cmNlcyI6WyJsaWIvbmd4LXByaW50LWVsZW1lbnQuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztJQUlNLGNBQWMsR0FBVztJQUM3QixRQUFRLEVBQUUsUUFBUTtJQUNsQixTQUFTLEVBQUUsVUFBVTtJQUNyQixTQUFTLEVBQUUsRUFBRTtJQUNiLGNBQWMsRUFBRSxFQUFFO0lBQ2xCLGVBQWUsRUFBRSxFQUFFO0lBQ25CLFdBQVcsRUFBRSxFQUFFO0lBQ2YsTUFBTSxFQUFFLEVBQUU7SUFDVixRQUFRLEVBQUUsRUFBRTtDQUNiOzs7O0FBR0QsaUJBSUM7OztJQUhDLGtCQUFzQjs7SUFDdEIsMEJBQXFCOztJQUNyQiwyQkFBc0I7Ozs7Ozs7SUFPbEIsSUFBSTs7O0FBQUc7O1FBQ0wsSUFBSSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7O1FBQy9DLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFOztRQUNyRCxZQUFZLEdBQUcsdUJBQXFCLEVBQUk7O1FBQ3hDLGFBQWEsR0FBRyw0QkFBMEIsRUFBSTtJQUNwRCxPQUFPLEVBQUUsSUFBSSxNQUFBLEVBQUUsWUFBWSxjQUFBLEVBQUUsYUFBYSxlQUFBLEVBQUUsQ0FBQztBQUMvQyxDQUFDLENBQUE7QUFFRDs7O0dBR0c7Ozs7Ozs7O0lBQ0csY0FBYzs7OztBQUFHLFVBQUMsRUFBTTs7UUFDdEIsS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQzdDLEtBQUssQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLEtBQUssQ0FBQyxFQUFFLEdBQUcsS0FBRyxFQUFFLENBQUMsYUFBZSxDQUFDO0lBQ2pDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQTtBQUVEOzs7O0dBSUc7Ozs7Ozs7OztJQUNHLFdBQVc7Ozs7QUFBRyxVQUFDLEVBQU07SUFDekIsT0FBTyw4QkFFRixFQUFFLENBQUMsWUFBWSxnQkFDZixFQUFFLENBQUMsWUFBWSx3REFHZixFQUFFLENBQUMsWUFBWSx3RkFLZixFQUFFLENBQUMsWUFBWSxtSUFJUSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxhQUNsRCxDQUFBO0FBQ0osQ0FBQyxDQUFBOzs7Ozs7O0lBTUssaUJBQWlCOzs7O0FBQUcsVUFBQyxFQUFNOztRQUN6QixhQUFhLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO0lBQy9ELElBQUksYUFBYSxFQUFFO1FBQ2pCLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQ3BDO0FBQ0gsQ0FBQyxDQUFBO0FBRUQ7Ozs7R0FJRzs7Ozs7Ozs7O0FBQ0gsTUFBTSxLQUFPLFdBQVc7Ozs7QUFBRyxVQUFDLE9BQWU7O1FBQ25DLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7O1FBQy9ELFFBQVEsR0FBTSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsVUFBSyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFVOztRQUN2RyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUTtJQUMvRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUE7Ozs7Ozs7Ozs7QUFVRCxNQUFNLEtBQU8sU0FBUzs7Ozs7O0FBQUcsVUFBQyxPQUFZLEVBQUUsT0FBZSxFQUFFLEVBQU07O1FBQ3ZELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYzs7UUFDakMsYUFBYSxHQUFHLElBQUksTUFBTSxDQUFDLHVCQUF1QixDQUFDOztRQUNyRCxXQUFXOztRQUNYLE1BQU07O1FBQ0osSUFBSSxHQUFHLEVBQUU7SUFFZixJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO1FBQ2pDLE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO0tBQzdCO0lBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLE1BQU0sRUFBRTtRQUMvQixPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztLQUM3QjtJQUVELElBQUksUUFBUSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDNUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3BEO0lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBc0IsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLGNBQVUsQ0FBQyxDQUFDO0lBRW5FLDJGQUEyRjtJQUMzRixJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUU7UUFDdkIsV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUNoRztTQUFNO1FBQ0wsV0FBVyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSzthQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzNDLEdBQUc7Ozs7UUFBQyxVQUFBLElBQUksSUFBSSxPQUFBLElBQUksRUFBSixDQUFJLEVBQUMsQ0FBQztLQUN0QjtJQUVELFdBQVcsQ0FBQyxPQUFPOzs7O0lBQUMsVUFBQyxDQUFNO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWMsQ0FBQyxDQUFDLEdBQUcsa0JBQVcsQ0FBQyxDQUFDLElBQUksUUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQyxFQUFDLENBQUM7SUFFSCxrRkFBa0Y7SUFDbEYsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ2xCLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGtCQUFLLE9BQU8sQ0FBQyxNQUFNLEdBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDcEg7U0FBTTtRQUNMLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUs7YUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM1QyxHQUFHOzs7O1FBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLENBQUMsU0FBUyxFQUFmLENBQWUsRUFBQyxDQUFDO0tBQ2xDO0lBRUQsTUFBTSxDQUFDLE9BQU87Ozs7SUFBQyxVQUFDLEtBQVU7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyw4QkFBMEIsS0FBSyxhQUFVLENBQUMsQ0FBQztJQUN2RCxDQUFDLEVBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFLLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUF1QixFQUFFLENBQUMsWUFBWSxRQUFJLENBQUMsQ0FBQztJQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFBOzs7Ozs7OztBQVFELE1BQU0sS0FBTyxrQkFBa0I7Ozs7OztBQUFHLFVBQUMsT0FBd0IsRUFBRSxXQUFnQixFQUFFLEVBQWdCO0lBQWxDLDRCQUFBLEVBQUEsZ0JBQWdCO0lBQzNFLElBQUk7O1lBQ0ksT0FBTyx3QkFBUSxjQUFjLEVBQUssV0FBVyxDQUFFOztZQUMvQyxTQUFTLEdBQUcsT0FBTyxDQUFDLGFBQWE7O1lBQ2pDLElBQUUsR0FBRyxJQUFJLEVBQUU7OztZQUdYLGFBQVcsR0FBRyxtQkFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQU87O1lBQzlGLGVBQWEsR0FBRyxhQUFXLElBQUksbUJBQUEsYUFBVyxDQUFDLFFBQVEsRUFBTzs7O1lBRzFELE1BQU0sR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFFLENBQUM7UUFFaEQsY0FBYyxDQUFDLElBQUUsQ0FBQyxDQUFDOzs7WUFHYixlQUFlOzs7O1FBQUcsVUFBQyxPQUFZO1lBQ25DLGVBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QixVQUFVOzs7WUFBQztnQkFDVCxhQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3BCLGlCQUFpQixDQUFDLElBQUUsQ0FBQyxDQUFDO1lBQ3hCLENBQUMsR0FBRSxJQUFJLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQTtRQUVELFFBQVE7UUFDUixhQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsZUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixlQUFlLENBQUMsYUFBVyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDckMsYUFBVyxDQUFDLGFBQWE7Ozs7UUFBRyxVQUFDLEtBQVUsSUFBSyxPQUFBLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQXRCLENBQXNCLENBQUEsQ0FBQztRQUNuRSxhQUFXLENBQUMsWUFBWTs7OztRQUFHLFVBQUMsS0FBVSxJQUFLLE9BQUEsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBdEIsQ0FBc0IsQ0FBQSxDQUFDO0tBQ25FO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ3hCO0FBQ0gsQ0FBQyxDQUFBOzs7Ozs7OztBQVFELE1BQU0sS0FBTyxXQUFXOzs7Ozs7QUFBRyxVQUFDLE9BQXdCLEVBQUUsV0FBZ0IsRUFBRSxFQUFnQjtJQUFsQyw0QkFBQSxFQUFBLGdCQUFnQjtJQUNwRSxJQUFJOzs7WUFFSSxPQUFPLHdCQUFRLGNBQWMsRUFBSyxXQUFXLENBQUU7O1lBQy9DLFNBQVMsR0FBRyxPQUFPLENBQUMsYUFBYTs7WUFDakMsSUFBRSxHQUFHLElBQUksRUFBRTs7O1lBR1gsUUFBTSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUUsQ0FBQzs7O1lBRzVDLFFBQU0sR0FBRyxtQkFBQSxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUEyQjtRQUN4RSxRQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLEdBQUcsSUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZELFFBQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFNBQVMsR0FBRyxJQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUQsUUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDMUMsUUFBTSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDeEMsUUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsUUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsd0NBQXdDLENBQUMsQ0FBQztRQUN2RSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFNLENBQUMsQ0FBQzs7WUFFOUIsV0FBUyxHQUFRLElBQUk7UUFDekIsSUFBSSxRQUFNLENBQUMsZUFBZSxFQUFFO1lBQzFCLFdBQVMsR0FBRyxRQUFNLENBQUMsZUFBZSxDQUFDO1NBQ3BDO2FBQU0sSUFBSSxRQUFNLENBQUMsYUFBYSxFQUFFO1lBQy9CLFdBQVMsR0FBRyxRQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztTQUMzQztRQUVELGNBQWMsQ0FBQyxJQUFFLENBQUMsQ0FBQztRQUVuQiw0REFBNEQ7UUFDNUQsVUFBVTs7O1FBQUM7OztnQkFHSCxlQUFlOzs7O1lBQUcsVUFBQyxPQUFZO2dCQUNuQyxVQUFVOzs7Z0JBQUM7b0JBQ1QsV0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNsQixpQkFBaUIsQ0FBQyxJQUFFLENBQUMsQ0FBQztnQkFDeEIsQ0FBQyxFQUFDLENBQUM7WUFDTCxDQUFDLENBQUE7WUFFRCxRQUFRO1lBQ1IsUUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixlQUFlLENBQUMsUUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLFdBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixXQUFTLENBQUMsS0FBSyxDQUFDLFFBQU0sQ0FBQyxDQUFDO1lBQ3hCLFFBQU0sQ0FBQyxhQUFhLENBQUMsYUFBYTs7OztZQUFHLFVBQUMsS0FBVTtnQkFDOUMsVUFBVTs7O2dCQUFDLGNBQU0sT0FBQSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFNLENBQUMsRUFBakMsQ0FBaUMsRUFBQyxDQUFDO2dCQUNwRCxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQSxDQUFBO1lBQ0QsUUFBTSxDQUFDLGFBQWEsQ0FBQyxZQUFZOzs7O1lBQUcsVUFBQyxLQUFVLElBQUssT0FBQSxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUF0QixDQUFzQixDQUFBLENBQUM7UUFDN0UsQ0FBQyxFQUFDLENBQUM7S0FDSjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN4QjtBQUNILENBQUMsQ0FBQTtBQUVEOzs7OztHQUtHOzs7Ozs7Ozs7QUFDSCxNQUFNLEtBQU8sWUFBWTs7Ozs7O0FBQUcsVUFBQyxPQUF3QixFQUFFLFFBQW1CLEVBQUUsRUFBZ0I7SUFDMUYsSUFBSTs7O1lBRUksV0FBUyxHQUFHLE9BQU8sQ0FBQyxhQUFhOztZQUNqQyxJQUFFLEdBQUcsSUFBSSxFQUFFOzs7WUFHWCxRQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDN0MsSUFBSSxRQUFNLEVBQUU7WUFDVixRQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7WUFDbkMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFTLEVBQUUsSUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzlDLGNBQWMsQ0FBQyxJQUFFLENBQUMsQ0FBQztTQUNwQjs7O1lBR0ssZUFBZTs7OztRQUFHLFVBQUMsT0FBWTtZQUNuQyxrQkFBa0I7WUFDbEIsMkJBQTJCO1lBQzNCLFFBQU0sSUFBSSxDQUFDLFFBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLFFBQVEsQ0FBQyxZQUFZLENBQUMsV0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFFLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUYsaUJBQWlCLENBQUMsSUFBRSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFBO1FBRUQsUUFBUTtRQUNSLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNoQyxNQUFNLENBQUMsYUFBYTs7OztRQUFHLFVBQUMsS0FBVSxJQUFLLE9BQUEsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBdEIsQ0FBc0IsQ0FBQSxDQUFDO1FBQzlELE1BQU0sQ0FBQyxZQUFZOzs7O1FBQUcsVUFBQyxLQUFVLElBQUssT0FBQSxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUF0QixDQUFzQixDQUFBLENBQUM7S0FDOUQ7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDeEI7QUFDSCxDQUFDLENBQUE7QUFHRDs7Ozs7R0FLRzs7Ozs7Ozs7O0FBQ0gsTUFBTSxLQUFPLFdBQVc7Ozs7OztBQUFHLFVBQUMsRUFBZ0IsRUFBRSxJQUFTLEVBQUUsS0FBWTtJQUFaLHNCQUFBLEVBQUEsWUFBWTtJQUNuRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgUmVuZGVyZXIyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gXCIuL25neC1wcmludC1lbGVtZW50LnNlcnZpY2VcIjtcclxuXHJcbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBDb25maWcgPSB7XHJcbiAgaHRtbFR5cGU6ICdkb21PYmonLFxyXG4gIHByaW50TW9kZTogJ3RlbXBsYXRlJyxcclxuICBwYWdlVGl0bGU6ICcnLFxyXG4gIHRlbXBsYXRlU3RyaW5nOiAnJyxcclxuICBwb3B1cFByb3BlcnRpZXM6ICcnLFxyXG4gIHN0eWxlc2hlZXRzOiBbXSxcclxuICBzdHlsZXM6IFtdLFxyXG4gIGJhc2VIcmVmOiAnJ1xyXG59O1xyXG5cclxuXHJcbmludGVyZmFjZSBfSCB7XHJcbiAgaGVhZDogSFRNTEhlYWRFbGVtZW50O1xyXG4gIGNsYXNzTmFtZVVJRDogc3RyaW5nO1xyXG4gIGlkTmFtZUhlYWRVSUQ6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIEhFQUQgRWxlbWVudFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmNvbnN0IEhFQUQgPSAoKTogX0ggPT4ge1xyXG4gIGNvbnN0IGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xyXG4gIGNvbnN0IElEID0gKE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk5OTk5OTkpKS50b1N0cmluZygpO1xyXG4gIGNvbnN0IGNsYXNzTmFtZVVJRCA9IGBuZ3gtcHJpbnQtZWxlbWVudC0ke0lEfWA7XHJcbiAgY29uc3QgaWROYW1lSGVhZFVJRCA9IGBuZ3gtcHJpbnQtZWxlbWVudC1oZWFkLSR7SUR9YDtcclxuICByZXR1cm4geyBoZWFkLCBjbGFzc05hbWVVSUQsIGlkTmFtZUhlYWRVSUQgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFERF9TVFlMRV9IRUFEXHJcbiAqIEBwYXJhbSBfSCBcclxuICovXHJcbmNvbnN0IEFERF9TVFlMRV9IRUFEID0gKF9IOiBfSCkgPT4ge1xyXG4gIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICBzdHlsZS5pbm5lckhUTUwgPSBCVUlMRF9TVFlMRShfSCk7XHJcbiAgc3R5bGUuaWQgPSBgJHtfSC5pZE5hbWVIZWFkVUlEfWA7XHJcbiAgX0guaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCVUlMRF9TVFlMRVxyXG4gKiBAcGFyYW0gX0ggXHJcbiAqIEByZXR1cm5zIFxyXG4gKi9cclxuY29uc3QgQlVJTERfU1RZTEUgPSAoX0g6IF9IKTogc3RyaW5nID0+IHtcclxuICByZXR1cm4gYFxyXG4gIEBtZWRpYSBwcmludCB7XHJcbiAgICAuJHtfSC5jbGFzc05hbWVVSUR9LFxyXG4gICAgLiR7X0guY2xhc3NOYW1lVUlEfSAqIHtcclxuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gICAgfVxyXG4gICAgLiR7X0guY2xhc3NOYW1lVUlEfSB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgfVxyXG4gICAgLiR7X0guY2xhc3NOYW1lVUlEfSAucHJpbnQtbm9uZSB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gICAgLyogLS0tLS0gQXV0aG9yOiBEYWlESCAtLS0tLSAqL1xyXG4gICAgLyogQ29weXJpZ2h0IChDKSAyMDIyIC0gJHtuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCl9ICovXHJcbiAgfWBcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSRU1PVkVfU1RZTEVfSEVBRFxyXG4gKiBAcGFyYW0gX0ggXHJcbiAqL1xyXG5jb25zdCBSRU1PVkVfU1RZTEVfSEVBRCA9IChfSDogX0gpID0+IHtcclxuICBjb25zdCBzdHlsZVRvUmVtb3ZlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoX0guaWROYW1lSGVhZFVJRCk7XHJcbiAgaWYgKHN0eWxlVG9SZW1vdmUpIHtcclxuICAgIF9ILmhlYWQucmVtb3ZlQ2hpbGQoc3R5bGVUb1JlbW92ZSk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogZ2V0QmFzZUhyZWZcclxuICogQHBhcmFtIG9wdGlvbnMgXHJcbiAqIEByZXR1cm5zIFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGdldEJhc2VIcmVmID0gKG9wdGlvbnM6IENvbmZpZykgPT4ge1xyXG4gIGNvbnN0IHBvcnQgPSAod2luZG93LmxvY2F0aW9uLnBvcnQpID8gYDoke3dpbmRvdy5sb2NhdGlvbi5wb3J0fWAgOiAnJztcclxuICBjb25zdCBidWlsZFVSTCA9IGAke3dpbmRvdy5sb2NhdGlvbi5wcm90b2NvbH0vLyR7d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lfSR7cG9ydH0ke3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX1gO1xyXG4gIGNvbnN0IGZpbmFsVVJMID0gb3B0aW9ucy5iYXNlSHJlZiA/IG9wdGlvbnMuYmFzZUhyZWYgOiBidWlsZFVSTDtcclxuICByZXR1cm4gZmluYWxVUkw7XHJcbn07XHJcblxyXG4vKipcclxuICogZ2V0TWFya3VwXHJcbiAqIHByaW50LWh0bWwtZWxlbWVudFxyXG4gKiBAcGFyYW0gZWxlbWVudCBcclxuICogQHBhcmFtIG9wdGlvbnMgXHJcbiAqIEBwYXJhbSBfSCBcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZ2V0TWFya3VwID0gKGVsZW1lbnQ6IGFueSwgb3B0aW9uczogQ29uZmlnLCBfSDogX0gpID0+IHtcclxuICBjb25zdCB0ZW1wbGF0ZSA9IG9wdGlvbnMudGVtcGxhdGVTdHJpbmc7XHJcbiAgY29uc3QgdGVtcGxhdGVSZWdleCA9IG5ldyBSZWdFeHAoL3t7XFxzKnByaW50Qm9keVxccyp9fS9naSk7XHJcbiAgbGV0IHN0eWxlc2hlZXRzO1xyXG4gIGxldCBzdHlsZXM7XHJcbiAgY29uc3QgaHRtbCA9IFtdO1xyXG5cclxuICBpZiAob3B0aW9ucy5odG1sVHlwZSA9PT0gJ2RvbU9iaicpIHtcclxuICAgIGVsZW1lbnQgPSBlbGVtZW50Lm91dGVySFRNTDtcclxuICB9XHJcblxyXG4gIGlmIChvcHRpb25zLmh0bWxUeXBlID09PSAndGV4dCcpIHtcclxuICAgIGVsZW1lbnQgPSBlbGVtZW50LmlubmVyVGV4dDtcclxuICB9XHJcblxyXG4gIGlmICh0ZW1wbGF0ZSAmJiB0ZW1wbGF0ZVJlZ2V4LnRlc3QodGVtcGxhdGUpKSB7XHJcbiAgICBlbGVtZW50ID0gdGVtcGxhdGUucmVwbGFjZSh0ZW1wbGF0ZVJlZ2V4LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGh0bWwucHVzaChgPGh0bWw+PGhlYWQ+PHRpdGxlPiR7b3B0aW9ucy5wYWdlVGl0bGUgfHwgJyd9PC90aXRsZT5gKTtcclxuXHJcbiAgLy8gSWYgc3R5bGVzaGVldCBVUkwncyBvciBsaXN0IG9mIHN0eWxlc2hlZXQgVVJMJ3MgYXJlIHNwZWNpZmllZCwgb3ZlcnJpZGUgcGFnZSBzdHlsZXNoZWV0c1xyXG4gIGlmIChvcHRpb25zLnN0eWxlc2hlZXRzKSB7XHJcbiAgICBzdHlsZXNoZWV0cyA9IEFycmF5LmlzQXJyYXkob3B0aW9ucy5zdHlsZXNoZWV0cykgPyBvcHRpb25zLnN0eWxlc2hlZXRzIDogW29wdGlvbnMuc3R5bGVzaGVldHNdO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBzdHlsZXNoZWV0cyA9IEFycmF5LnByb3RvdHlwZS5zbGljZVxyXG4gICAgICAuY2FsbChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGluaycpKVxyXG4gICAgICAubWFwKGxpbmsgPT4gbGluayk7XHJcbiAgfVxyXG5cclxuICBzdHlsZXNoZWV0cy5mb3JFYWNoKChmOiBhbnkpID0+IHtcclxuICAgIGh0bWwucHVzaChgPGxpbmsgcmVsPVwiJHtmLnJlbH1cIiBocmVmPVwiJHtmLmhyZWZ9XCI+YCk7XHJcbiAgfSk7XHJcblxyXG4gIC8vIElmIGlubGluZSBzdHlsZXMgb3IgbGlzdCBvZiBpbmxpbmUgc3R5bGVzIGFyZSBzcGVjaWZpZWQsIG92ZXJyaWRlIGlubGluZSBzdHlsZXNcclxuICBpZiAob3B0aW9ucy5zdHlsZXMpIHtcclxuICAgIHN0eWxlcyA9IEFycmF5LmlzQXJyYXkob3B0aW9ucy5zdHlsZXMpID8gWy4uLm9wdGlvbnMuc3R5bGVzLCBCVUlMRF9TVFlMRShfSCldIDogW29wdGlvbnMuc3R5bGVzICsgQlVJTERfU1RZTEUoX0gpXTtcclxuICB9IGVsc2Uge1xyXG4gICAgc3R5bGVzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlXHJcbiAgICAgIC5jYWxsKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScpKVxyXG4gICAgICAubWFwKHN0eWxlID0+IHN0eWxlLmlubmVySFRNTCk7XHJcbiAgfVxyXG5cclxuICBzdHlsZXMuZm9yRWFjaCgoc3R5bGU6IGFueSkgPT4ge1xyXG4gICAgaHRtbC5wdXNoKGA8c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+JHtzdHlsZX08L3N0eWxlPmApO1xyXG4gIH0pO1xyXG5cclxuICBodG1sLnB1c2goYDxiYXNlIGhyZWY9XCIke2dldEJhc2VIcmVmKG9wdGlvbnMpfVwiLz5gKTtcclxuICBodG1sLnB1c2goYDwvaGVhZD48Ym9keSBjbGFzcz1cIiR7X0guY2xhc3NOYW1lVUlEfVwiPmApO1xyXG4gIGh0bWwucHVzaChlbGVtZW50KTtcclxuICBodG1sLnB1c2goJzwvYm9keT48L2h0bWw+Jyk7XHJcblxyXG4gIHJldHVybiBodG1sLmpvaW4oJycpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFByaW50IHdpbmRvdy5vcGVuXHJcbiAqIEBwYXJhbSBlbGVtZW50IFxyXG4gKiBAcGFyYW0gc2VsZk9wdGlvbnMgXHJcbiAqIEBwYXJhbSBhcyBcclxuICovXHJcbmV4cG9ydCBjb25zdCBwcmludEVsZW1lbnRXaW5kb3cgPSAoZWxlbWVudDogRWxlbWVudFJlZjxhbnk+LCBzZWxmT3B0aW9ucyA9IHt9LCBhczogU3ViamVjdDxhbnk+KSA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5zZWxmT3B0aW9ucyB9O1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgX0ggPSBIRUFEKCk7XHJcblxyXG4gICAgLy8gTmV3IHdpbmRvd1xyXG4gICAgY29uc3QgcHJpbnRXaW5kb3cgPSB3aW5kb3cub3BlbignYWJvdXQ6YmxhbmsnLCAncHJpbnRFbGVtZW50V2luZG93Jywgb3B0aW9ucy5wb3B1cFByb3BlcnRpZXMpIGFzIGFueTtcclxuICAgIGNvbnN0IHByaW50RG9jdW1lbnQgPSBwcmludFdpbmRvdyAmJiBwcmludFdpbmRvdy5kb2N1bWVudCBhcyBhbnk7XHJcblxyXG4gICAgLy8gR2V0IG1hcmt1cCB0byBiZSBwcmludGVkXHJcbiAgICBjb25zdCBtYXJrdXAgPSBnZXRNYXJrdXAoY29udGFpbmVyLCBvcHRpb25zLCBfSCk7XHJcblxyXG4gICAgQUREX1NUWUxFX0hFQUQoX0gpO1xyXG5cclxuICAgIC8vIENsb3NlXHJcbiAgICBjb25zdCBvblByaW50RmluaXNoZWQgPSAocHJpbnRlZDogYW55KSA9PiB7XHJcbiAgICAgIHByaW50RG9jdW1lbnQuY2xvc2UoKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgcHJpbnRXaW5kb3cuY2xvc2UoKTtcclxuICAgICAgICBSRU1PVkVfU1RZTEVfSEVBRChfSCk7XHJcbiAgICAgIH0sIDEwMDApO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBQcmludFxyXG4gICAgcHJpbnRXaW5kb3cuZm9jdXMoKTtcclxuICAgIHByaW50RG9jdW1lbnQud3JpdGUobWFya3VwKTtcclxuICAgIG9uUHJpbnRGaW5pc2hlZChwcmludFdpbmRvdy5wcmludCgpKTtcclxuICAgIHByaW50V2luZG93Lm9uYmVmb3JlcHJpbnQgPSAoZXZlbnQ6IGFueSkgPT4gQVNfQ09NUExFVEUoYXMsIGV2ZW50KTtcclxuICAgIHByaW50V2luZG93Lm9uYWZ0ZXJwcmludCA9IChldmVudDogYW55KSA9PiBBU19DT01QTEVURShhcywgZXZlbnQpO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBBU19DT01QTEVURShhcywgZXJyb3IpO1xyXG4gIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBQcmludCBpRnJhbWVcclxuICogQHBhcmFtIGVsZW1lbnQgXHJcbiAqIEBwYXJhbSBzZWxmT3B0aW9ucyBcclxuICogQHBhcmFtIGFzIFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHByaW50SUZyYW1lID0gKGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55Piwgc2VsZk9wdGlvbnMgPSB7fSwgYXM6IFN1YmplY3Q8YW55PiwpID0+IHtcclxuICB0cnkge1xyXG4gICAgLy8gRGVjbGFyZVxyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgLi4uZGVmYXVsdE9wdGlvbnMsIC4uLnNlbGZPcHRpb25zIH07XHJcbiAgICBjb25zdCBjb250YWluZXIgPSBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBfSCA9IEhFQUQoKTtcclxuXHJcbiAgICAvLyBHZXQgbWFya3VwIHRvIGJlIHByaW50ZWRcclxuICAgIGNvbnN0IG1hcmt1cCA9IGdldE1hcmt1cChjb250YWluZXIsIG9wdGlvbnMsIF9IKTtcclxuXHJcbiAgICAvLyBDcmVhdGUgaWZyYW1lXHJcbiAgICBsZXQgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJykgYXMgSFRNTElGcmFtZUVsZW1lbnQgfCBhbnk7XHJcbiAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdpZCcsICdpZnJhbWUtJyArIF9ILmNsYXNzTmFtZVVJRCk7XHJcbiAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdjbGFzcycsICdpZnJhbWUtJyArIF9ILmNsYXNzTmFtZVVJRCk7XHJcbiAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdzcmMnLCAnYWJvdXQ6YmxhbmsnKTtcclxuICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ2ZyYW1lQm9yZGVyJywgJzAnKTtcclxuICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ3Njcm9sbGluZycsICdubycpO1xyXG4gICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAncG9zaXRpb246Zml4ZWQ7Ym90dG9tOjEwMCU7cmlnaHQ6MTAwJTsnKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcclxuXHJcbiAgICBsZXQgaURvY3VtZW50OiBhbnkgPSBudWxsO1xyXG4gICAgaWYgKGlmcmFtZS5jb250ZW50RG9jdW1lbnQpIHtcclxuICAgICAgaURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnREb2N1bWVudDtcclxuICAgIH0gZWxzZSBpZiAoaWZyYW1lLmNvbnRlbnRXaW5kb3cpIHtcclxuICAgICAgaURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgQUREX1NUWUxFX0hFQUQoX0gpO1xyXG5cclxuICAgIC8vIFNldFRpbWVvdXQgZml4ZXNpZnJhbWUgcHJpbnRNb2RlIGRvZXMgbm90IHdvcmsgaW4gZmlyZWZveFxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICAvLyBDbG9zZVxyXG4gICAgICBjb25zdCBvblByaW50RmluaXNoZWQgPSAocHJpbnRlZDogYW55KSA9PiB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBpRG9jdW1lbnQuY2xvc2UoKTtcclxuICAgICAgICAgIFJFTU9WRV9TVFlMRV9IRUFEKF9IKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vIFByaW50XHJcbiAgICAgIGlmcmFtZS5jb250ZW50V2luZG93LmZvY3VzKCk7XHJcbiAgICAgIG9uUHJpbnRGaW5pc2hlZChpZnJhbWUuY29udGVudFdpbmRvdy5wcmludCgpKTtcclxuICAgICAgaURvY3VtZW50Lm9wZW4oKTtcclxuICAgICAgaURvY3VtZW50LndyaXRlKG1hcmt1cCk7XHJcbiAgICAgIGlmcmFtZS5jb250ZW50V2luZG93Lm9uYmVmb3JlcHJpbnQgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpZnJhbWUpKTtcclxuICAgICAgICBBU19DT01QTEVURShhcywgZXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmcmFtZS5jb250ZW50V2luZG93Lm9uYWZ0ZXJwcmludCA9IChldmVudDogYW55KSA9PiBBU19DT01QTEVURShhcywgZXZlbnQpO1xyXG4gICAgfSk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIEFTX0NPTVBMRVRFKGFzLCBlcnJvcik7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogUHJpbnQgZGVmYXVsdFxyXG4gKiBAcGFyYW0gZWxlbWVudCBcclxuICogQHBhcmFtIHJlbmRlcmVyIFxyXG4gKiBAcGFyYW0gYXMgXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgcHJpbnREZWZhdWx0ID0gKGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55PiwgcmVuZGVyZXI6IFJlbmRlcmVyMiwgYXM6IFN1YmplY3Q8YW55PikgPT4ge1xyXG4gIHRyeSB7XHJcbiAgICAvLyBEZWNsYXJlXHJcbiAgICBjb25zdCBjb250YWluZXIgPSBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBfSCA9IEhFQUQoKTtcclxuXHJcbiAgICAvLyBBZGQgdmlzaWJpbGl0eSBoaWRkZW4gaW50byBib2R5XHJcbiAgICBjb25zdCBib2R5RWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5Jyk7XHJcbiAgICBpZiAoYm9keUVsKSB7XHJcbiAgICAgIGJvZHlFbC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGNvbnRhaW5lciwgX0guY2xhc3NOYW1lVUlEKTtcclxuICAgICAgQUREX1NUWUxFX0hFQUQoX0gpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENsb3NlXHJcbiAgICBjb25zdCBvblByaW50RmluaXNoZWQgPSAocHJpbnRlZDogYW55KSA9PiB7XHJcbiAgICAgIC8vIHdpbmRvdy5jbG9zZSgpO1xyXG4gICAgICAvLyBDbGVhciB2aXNpYmlsaXR5OiBoaWRkZW5cclxuICAgICAgYm9keUVsICYmIChib2R5RWwuc3R5bGUudmlzaWJpbGl0eSA9ICcnKTtcclxuICAgICAgcmVuZGVyZXIuc2V0QXR0cmlidXRlKGNvbnRhaW5lciwgJ2NsYXNzJywgY29udGFpbmVyLmNsYXNzTmFtZS5yZXBsYWNlKF9ILmNsYXNzTmFtZVVJRCwgJycpKTtcclxuICAgICAgUkVNT1ZFX1NUWUxFX0hFQUQoX0gpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBQcmludFxyXG4gICAgd2luZG93LmZvY3VzKCk7XHJcbiAgICBvblByaW50RmluaXNoZWQod2luZG93LnByaW50KCkpO1xyXG4gICAgd2luZG93Lm9uYmVmb3JlcHJpbnQgPSAoZXZlbnQ6IGFueSkgPT4gQVNfQ09NUExFVEUoYXMsIGV2ZW50KTtcclxuICAgIHdpbmRvdy5vbmFmdGVycHJpbnQgPSAoZXZlbnQ6IGFueSkgPT4gQVNfQ09NUExFVEUoYXMsIGV2ZW50KTtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgQVNfQ09NUExFVEUoYXMsIGVycm9yKTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogUnhqcyBjb21wbGV0ZVxyXG4gKiBAcGFyYW0gYXMgXHJcbiAqIEBwYXJhbSBkYXRhIFxyXG4gKiBAcGFyYW0gZXJyb3IgXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgQVNfQ09NUExFVEUgPSAoYXM6IFN1YmplY3Q8YW55PiwgZGF0YTogYW55LCBlcnJvciA9IG51bGwpID0+IHtcclxuICBlcnJvciA/IGFzLmVycm9yKGVycm9yKSA6IGFzLm5leHQoZGF0YSk7XHJcbn07XHJcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { NgModule } from '@angular/core';
import { NgxPrintElementComponent } from './ngx-print-element.component';
import { NgxPrintElementDirective } from './ngx-print-element.directive';
var NgxPrintElementModule = /** @class */ (function () {
function NgxPrintElementModule() {
}
NgxPrintElementModule.decorators = [
{ type: NgModule, args: [{
declarations: [
NgxPrintElementComponent,
NgxPrintElementDirective
],
exports: [
NgxPrintElementComponent,
NgxPrintElementDirective
]
},] }
];
return NgxPrintElementModule;
}());
export { NgxPrintElementModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXByaW50LWVsZW1lbnQvIiwic291cmNlcyI6WyJsaWIvbmd4LXByaW50LWVsZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3pFO0lBQUE7SUFZQSxDQUFDOztnQkFaQSxRQUFRLFNBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3FCQUN6QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asd0JBQXdCO3dCQUN4Qix3QkFBd0I7cUJBQ3pCO2lCQUNGOztJQUdELDRCQUFDO0NBQUEsQUFaRCxJQVlDO1NBRFkscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmd4UHJpbnRFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtcHJpbnQtZWxlbWVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ3hQcmludEVsZW1lbnREaXJlY3RpdmUgfSBmcm9tICcuL25neC1wcmludC1lbGVtZW50LmRpcmVjdGl2ZSc7XHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIE5neFByaW50RWxlbWVudENvbXBvbmVudCxcclxuICAgIE5neFByaW50RWxlbWVudERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgTmd4UHJpbnRFbGVtZW50Q29tcG9uZW50LFxyXG4gICAgTmd4UHJpbnRFbGVtZW50RGlyZWN0aXZlXHJcbiAgXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIE5neFByaW50RWxlbWVudE1vZHVsZSB7XHJcbn1cclxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { printDefault, printElementWindow, printIFrame } from './ngx-print-element.helper';
import * as i0 from "@angular/core";
/**
* @record
*/
export function Config() { }
if (false) {
/** @type {?|undefined} */
Config.prototype.htmlType;
/** @type {?|undefined} */
Config.prototype.printMode;
/** @type {?|undefined} */
Config.prototype.pageTitle;
/** @type {?|undefined} */
Config.prototype.templateString;
/** @type {?|undefined} */
Config.prototype.popupProperties;
/** @type {?|undefined} */
Config.prototype.stylesheets;
/** @type {?|undefined} */
Config.prototype.styles;
/** @type {?|undefined} */
Config.prototype.baseHref;
}
var NgxPrintElementService = /** @class */ (function () {
function NgxPrintElementService() {
}
/**
* Print
* @param element
* @param config
* @returns
*/
/**
* Print
* @param {?} element
* @param {?=} config
* @return {?}
*/
NgxPrintElementService.prototype.print = /**
* Print
* @param {?} element
* @param {?=} config
* @return {?}
*/
function (element, config) {
/** @type {?} */
var as = new Subject();
// Create and insert new print section
if (element) {
// Element
if (config) {
// Config
if (config.printMode === 'template') {
// iframe
printIFrame(element, config, as);
}
if (config.printMode === 'template-popup') {
// windows
printElementWindow(element, config, as);
}
}
else {
// No config
printDefault(element, this.renderer, as);
}
}
return as;
};
NgxPrintElementService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */ NgxPrintElementService.ngInjectableDef = i0.defineInjectable({ factory: function NgxPrintElementService_Factory() { return new NgxPrintElementService(); }, token: NgxPrintElementService, providedIn: "root" });
return NgxPrintElementService;
}());
export { NgxPrintElementService };
if (false) {
/** @type {?} */
NgxPrintElementService.prototype.renderer;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1wcmludC1lbGVtZW50LyIsInNvdXJjZXMiOlsibGliL25neC1wcmludC1lbGVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQUUzRiw0QkFZQzs7O0lBWEMsMEJBQWtCOztJQUNsQiwyQkFBbUI7O0lBQ25CLDJCQUFtQjs7SUFDbkIsZ0NBQXdCOztJQUN4QixpQ0FBeUI7O0lBQ3pCLDZCQUdJOztJQUNKLHdCQUFrQjs7SUFDbEIsMEJBQWtCOztBQUdwQjtJQUFBO0tBbUNDO0lBNUJDOzs7OztPQUtHOzs7Ozs7O0lBQ0ksc0NBQUs7Ozs7OztJQUFaLFVBQWEsT0FBd0IsRUFBRSxNQUFlOztZQUM5QyxFQUFFLEdBQUcsSUFBSSxPQUFPLEVBQUU7UUFDeEIsc0NBQXNDO1FBQ3RDLElBQUksT0FBTyxFQUFFO1lBQ1gsVUFBVTtZQUNWLElBQUksTUFBTSxFQUFFO2dCQUNWLFNBQVM7Z0JBQ1QsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRTtvQkFDbkMsU0FBUztvQkFDVCxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDbEM7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLGdCQUFnQixFQUFFO29CQUN6QyxVQUFVO29CQUNWLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQ3pDO2FBQ0Y7aUJBQU07Z0JBQ0wsWUFBWTtnQkFDWixZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDMUM7U0FDRjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7Z0JBbENGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OztpQ0FwQkQ7Q0FxREMsQUFuQ0QsSUFtQ0M7U0FoQ1ksc0JBQXNCOzs7SUFFakMsMENBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgcHJpbnREZWZhdWx0LCBwcmludEVsZW1lbnRXaW5kb3csIHByaW50SUZyYW1lIH0gZnJvbSAnLi9uZ3gtcHJpbnQtZWxlbWVudC5oZWxwZXInO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25maWcge1xyXG4gIGh0bWxUeXBlPzogc3RyaW5nO1xyXG4gIHByaW50TW9kZT86IHN0cmluZztcclxuICBwYWdlVGl0bGU/OiBzdHJpbmc7XHJcbiAgdGVtcGxhdGVTdHJpbmc/OiBzdHJpbmc7XHJcbiAgcG9wdXBQcm9wZXJ0aWVzPzogc3RyaW5nO1xyXG4gIHN0eWxlc2hlZXRzPzoge1xyXG4gICAgcmVsPzogc3RyaW5nLFxyXG4gICAgaHJlZj86IHN0cmluZ1xyXG4gIH1bXSxcclxuICBzdHlsZXM/OiBzdHJpbmdbXTtcclxuICBiYXNlSHJlZj86IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4UHJpbnRFbGVtZW50U2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyByZW5kZXJlciE6IFJlbmRlcmVyMjtcclxuXHJcbiAgLyoqXHJcbiAgICogUHJpbnRcclxuICAgKiBAcGFyYW0gZWxlbWVudCBcclxuICAgKiBAcGFyYW0gY29uZmlnIFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwcmludChlbGVtZW50OiBFbGVtZW50UmVmPGFueT4sIGNvbmZpZz86IENvbmZpZyk6IFN1YmplY3Q8YW55PiB7XHJcbiAgICBjb25zdCBhcyA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICAvLyBDcmVhdGUgYW5kIGluc2VydCBuZXcgcHJpbnQgc2VjdGlvblxyXG4gICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgLy8gRWxlbWVudFxyXG4gICAgICBpZiAoY29uZmlnKSB7XHJcbiAgICAgICAgLy8gQ29uZmlnXHJcbiAgICAgICAgaWYgKGNvbmZpZy5wcmludE1vZGUgPT09ICd0ZW1wbGF0ZScpIHtcclxuICAgICAgICAgIC8vIGlmcmFtZVxyXG4gICAgICAgICAgcHJpbnRJRnJhbWUoZWxlbWVudCwgY29uZmlnLCBhcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb25maWcucHJpbnRNb2RlID09PSAndGVtcGxhdGUtcG9wdXAnKSB7XHJcbiAgICAgICAgICAvLyB3aW5kb3dzXHJcbiAgICAgICAgICBwcmludEVsZW1lbnRXaW5kb3coZWxlbWVudCwgY29uZmlnLCBhcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIE5vIGNvbmZpZ1xyXG4gICAgICAgIHByaW50RGVmYXVsdChlbGVtZW50LCB0aGlzLnJlbmRlcmVyLCBhcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcztcclxuICB9XHJcbn1cclxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* Generated bundle index. Do not edit.
*/
export { NgxPrintElementDirective, NgxPrintElementService, NgxPrintElementComponent, NgxPrintElementModule } from './public_api';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LWVsZW1lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtcHJpbnQtZWxlbWVudC8iLCJzb3VyY2VzIjpbIm5neC1wcmludC1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxrSEFBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* Public API Surface of ngx-print-element
*/
export { NgxPrintElementDirective } from './lib/ngx-print-element.directive';
export { NgxPrintElementService } from './lib/ngx-print-element.service';
export { NgxPrintElementComponent } from './lib/ngx-print-element.component';
export { NgxPrintElementModule } from './lib/ngx-print-element.module';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1wcmludC1lbGVtZW50LyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEseUNBQWMsbUNBQW1DLENBQUM7QUFDbEQsdUNBQWMsaUNBQWlDLENBQUM7QUFDaEQseUNBQWMsbUNBQW1DLENBQUM7QUFDbEQsc0NBQWMsZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LXByaW50LWVsZW1lbnRcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtcHJpbnQtZWxlbWVudC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtcHJpbnQtZWxlbWVudC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LXByaW50LWVsZW1lbnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LXByaW50LWVsZW1lbnQubW9kdWxlJztcclxuIl19
import { Subject } from 'rxjs';
import { Injectable, Directive, Renderer2, Component, NgModule, defineInjectable } from '@angular/core';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
const defaultOptions = {
htmlType: 'domObj',
printMode: 'template',
pageTitle: '',
templateString: '',
popupProperties: '',
stylesheets: [],
styles: [],
baseHref: ''
};
/**
* HEAD Element
* \@return
* @type {?}
*/
const HEAD = (/**
* @return {?}
*/
() => {
/** @type {?} */
const head = document.getElementsByTagName('head')[0];
/** @type {?} */
const ID = (Math.round(Math.random() * 9999999)).toString();
/** @type {?} */
const classNameUID = `ngx-print-element-${ID}`;
/** @type {?} */
const idNameHeadUID = `ngx-print-element-head-${ID}`;
return { head, classNameUID, idNameHeadUID };
})
/**
* ADD_STYLE_HEAD
* @param _H
*/
;
/**
* ADD_STYLE_HEAD
* \@param _H
* @type {?}
*/
const ADD_STYLE_HEAD = (/**
* @param {?} _H
* @return {?}
*/
(_H) => {
/** @type {?} */
const style = document.createElement('style');
style.innerHTML = BUILD_STYLE(_H);
style.id = `${_H.idNameHeadUID}`;
_H.head.appendChild(style);
})
/**
* BUILD_STYLE
* @param _H
* @returns
*/
;
/**
* BUILD_STYLE
* \@param _H
* \@return
* @type {?}
*/
const BUILD_STYLE = (/**
* @param {?} _H
* @return {?}
*/
(_H) => {
return `
@media print {
.${_H.classNameUID},
.${_H.classNameUID} * {
visibility: visible;
}
.${_H.classNameUID} {
position: absolute;
left: 0;
top: 0;
}
.${_H.classNameUID} .print-none {
display: none !important;
}
/* ----- Author: DaiDH ----- */
/* Copyright (C) 2022 - ${new Date().getFullYear()} */
}`;
});
/**
* REMOVE_STYLE_HEAD
* \@param _H
* @type {?}
*/
const REMOVE_STYLE_HEAD = (/**
* @param {?} _H
* @return {?}
*/
(_H) => {
/** @type {?} */
const styleToRemove = document.getElementById(_H.idNameHeadUID);
if (styleToRemove) {
_H.head.removeChild(styleToRemove);
}
})
/**
* getBaseHref
* @param options
* @returns
*/
;
/**
* getBaseHref
* \@param options
* \@return
* @type {?}
*/
const getBaseHref = (/**
* @param {?} options
* @return {?}
*/
(options) => {
/** @type {?} */
const port = (window.location.port) ? `:${window.location.port}` : '';
/** @type {?} */
const buildURL = `${window.location.protocol}//${window.location.hostname}${port}${window.location.pathname}`;
/** @type {?} */
const finalURL = options.baseHref ? options.baseHref : buildURL;
return finalURL;
});
/**
* getMarkup
* print-html-element
* \@param element
* \@param options
* \@param _H
* \@return
* @type {?}
*/
const getMarkup = (/**
* @param {?} element
* @param {?} options
* @param {?} _H
* @return {?}
*/
(element, options, _H) => {
/** @type {?} */
const template = options.templateString;
/** @type {?} */
const templateRegex = new RegExp(/{{\s*printBody\s*}}/gi);
/** @type {?} */
let stylesheets;
/** @type {?} */
let styles;
/** @type {?} */
const html = [];
if (options.htmlType === 'domObj') {
element = element.outerHTML;
}
if (options.htmlType === 'text') {
element = element.innerText;
}
if (template && templateRegex.test(template)) {
element = template.replace(templateRegex, element);
}
html.push(`<html><head><title>${options.pageTitle || ''}</title>`);
// If stylesheet URL's or list of stylesheet URL's are specified, override page stylesheets
if (options.stylesheets) {
stylesheets = Array.isArray(options.stylesheets) ? options.stylesheets : [options.stylesheets];
}
else {
stylesheets = Array.prototype.slice
.call(document.getElementsByTagName('link'))
.map((/**
* @param {?} link
* @return {?}
*/
link => link));
}
stylesheets.forEach((/**
* @param {?} f
* @return {?}
*/
(f) => {
html.push(`<link rel="${f.rel}" href="${f.href}">`);
}));
// If inline styles or list of inline styles are specified, override inline styles
if (options.styles) {
styles = Array.isArray(options.styles) ? [...options.styles, BUILD_STYLE(_H)] : [options.styles + BUILD_STYLE(_H)];
}
else {
styles = Array.prototype.slice
.call(document.getElementsByTagName('style'))
.map((/**
* @param {?} style
* @return {?}
*/
style => style.innerHTML));
}
styles.forEach((/**
* @param {?} style
* @return {?}
*/
(style) => {
html.push(`<style type="text/css">${style}</style>`);
}));
html.push(`<base href="${getBaseHref(options)}"/>`);
html.push(`</head><body class="${_H.classNameUID}">`);
html.push(element);
html.push('</body></html>');
return html.join('');
});
/**
* Print window.open
* \@param element
* \@param selfOptions
* \@param as
* @type {?}
*/
const printElementWindow = (/**
* @param {?} element
* @param {?=} selfOptions
* @param {?=} as
* @return {?}
*/
(element, selfOptions = {}, as) => {
try {
/** @type {?} */
const options = Object.assign({}, defaultOptions, selfOptions);
/** @type {?} */
const container = element.nativeElement;
/** @type {?} */
const _H = HEAD();
// New window
/** @type {?} */
const printWindow = (/** @type {?} */ (window.open('about:blank', 'printElementWindow', options.popupProperties)));
/** @type {?} */
const printDocument = printWindow && (/** @type {?} */ (printWindow.document));
// Get markup to be printed
/** @type {?} */
const markup = getMarkup(container, options, _H);
ADD_STYLE_HEAD(_H);
// Close
/** @type {?} */
const onPrintFinished = (/**
* @param {?} printed
* @return {?}
*/
(printed) => {
printDocument.close();
setTimeout((/**
* @return {?}
*/
() => {
printWindow.close();
REMOVE_STYLE_HEAD(_H);
}), 1000);
});
// Print
printWindow.focus();
printDocument.write(markup);
onPrintFinished(printWindow.print());
printWindow.onbeforeprint = (/**
* @param {?} event
* @return {?}
*/
(event) => AS_COMPLETE(as, event));
printWindow.onafterprint = (/**
* @param {?} event
* @return {?}
*/
(event) => AS_COMPLETE(as, event));
}
catch (error) {
AS_COMPLETE(as, error);
}
});
/**
* Print iFrame
* \@param element
* \@param selfOptions
* \@param as
* @type {?}
*/
const printIFrame = (/**
* @param {?} element
* @param {?=} selfOptions
* @param {?=} as
* @return {?}
*/
(element, selfOptions = {}, as) => {
try {
// Declare
/** @type {?} */
const options = Object.assign({}, defaultOptions, selfOptions);
/** @type {?} */
const container = element.nativeElement;
/** @type {?} */
const _H = HEAD();
// Get markup to be printed
/** @type {?} */
const markup = getMarkup(container, options, _H);
// Create iframe
/** @type {?} */
let iframe = (/** @type {?} */ (document.createElement('iframe')));
iframe.setAttribute('id', 'iframe-' + _H.classNameUID);
iframe.setAttribute('class', 'iframe-' + _H.classNameUID);
iframe.setAttribute('src', 'about:blank');
iframe.setAttribute('frameBorder', '0');
iframe.setAttribute('scrolling', 'no');
iframe.setAttribute('style', 'position:fixed;bottom:100%;right:100%;');
document.body.appendChild(iframe);
/** @type {?} */
let iDocument = null;
if (iframe.contentDocument) {
iDocument = iframe.contentDocument;
}
else if (iframe.contentWindow) {
iDocument = iframe.contentWindow.document;
}
ADD_STYLE_HEAD(_H);
// SetTimeout fixesiframe printMode does not work in firefox
setTimeout((/**
* @return {?}
*/
() => {
// Close
/** @type {?} */
const onPrintFinished = (/**
* @param {?} printed
* @return {?}
*/
(printed) => {
setTimeout((/**
* @return {?}
*/
() => {
iDocument.close();
REMOVE_STYLE_HEAD(_H);
}));
});
// Print
iframe.contentWindow.focus();
onPrintFinished(iframe.contentWindow.print());
iDocument.open();
iDocument.write(markup);
iframe.contentWindow.onbeforeprint = (/**
* @param {?} event
* @return {?}
*/
(event) => {
setTimeout((/**
* @return {?}
*/
() => document.body.removeChild(iframe)));
AS_COMPLETE(as, event);
});
iframe.contentWindow.onafterprint = (/**
* @param {?} event
* @return {?}
*/
(event) => AS_COMPLETE(as, event));
}));
}
catch (error) {
AS_COMPLETE(as, error);
}
})
/**
* Print default
* @param element
* @param renderer
* @param as
*/
;
/**
* Print default
* \@param element
* \@param renderer
* \@param as
* @type {?}
*/
const printDefault = (/**
* @param {?} element
* @param {?} renderer
* @param {?} as
* @return {?}
*/
(element, renderer, as) => {
try {
// Declare
/** @type {?} */
const container = element.nativeElement;
/** @type {?} */
const _H = HEAD();
// Add visibility hidden into body
/** @type {?} */
const bodyEl = document.querySelector('body');
if (bodyEl) {
bodyEl.style.visibility = 'hidden';
renderer.addClass(container, _H.classNameUID);
ADD_STYLE_HEAD(_H);
}
// Close
/** @type {?} */
const onPrintFinished = (/**
* @param {?} printed
* @return {?}
*/
(printed) => {
// window.close();
// Clear visibility: hidden
bodyEl && (bodyEl.style.visibility = '');
renderer.setAttribute(container, 'class', container.className.replace(_H.classNameUID, ''));
REMOVE_STYLE_HEAD(_H);
});
// Print
window.focus();
onPrintFinished(window.print());
window.onbeforeprint = (/**
* @param {?} event
* @return {?}
*/
(event) => AS_COMPLETE(as, event));
window.onafterprint = (/**
* @param {?} event
* @return {?}
*/
(event) => AS_COMPLETE(as, event));
}
catch (error) {
AS_COMPLETE(as, error);
}
})
/**
* Rxjs complete
* @param as
* @param data
* @param error
*/
;
/**
* Rxjs complete
* \@param as
* \@param data
* \@param error
* @type {?}
*/
const AS_COMPLETE = (/**
* @param {?} as
* @param {?} data
* @param {?=} error
* @return {?}
*/
(as, data, error = null) => {
error ? as.error(error) : as.next(data);
});
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NgxPrintElementService {
/**
* Print
* @param {?} element
* @param {?=} config
* @return {?}
*/
print(element, config) {
/** @type {?} */
const as = new Subject();
// Create and insert new print section
if (element) {
// Element
if (config) {
// Config
if (config.printMode === 'template') {
// iframe
printIFrame(element, config, as);
}
if (config.printMode === 'template-popup') {
// windows
printElementWindow(element, config, as);
}
}
else {
// No config
printDefault(element, this.renderer, as);
}
}
return as;
}
}
NgxPrintElementService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */ NgxPrintElementService.ngInjectableDef = defineInjectable({ factory: function NgxPrintElementService_Factory() { return new NgxPrintElementService(); }, token: NgxPrintElementService, providedIn: "root" });
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NgxPrintElementDirective {
/**
* @param {?} renderer
* @param {?} prints
*/
constructor(renderer, prints) {
this.renderer = renderer;
this.prints = prints;
}
/**
* @return {?}
*/
ngOnInit() {
this.prints.renderer = this.renderer;
}
}
NgxPrintElementDirective.decorators = [
{ type: Directive, args: [{
selector: '[ngxPrintElement]'
},] }
];
NgxPrintElementDirective.ctorParameters = () => [
{ type: Renderer2 },
{ type: NgxPrintElementService }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NgxPrintElementComponent {
/**
* @param {?} prints
*/
constructor(prints) {
this.prints = prints;
}
/**
* Print
* @param {?} elementRef
* @param {?=} config
* @return {?}
*/
print(elementRef, config) {
return this.prints.print(elementRef, config);
}
}
NgxPrintElementComponent.decorators = [
{ type: Component, args: [{
selector: 'ngx-print-element',
template: `<ng-content></ng-content>`,
exportAs: 'element'
}] }
];
NgxPrintElementComponent.ctorParameters = () => [
{ type: NgxPrintElementService }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NgxPrintElementModule {
}
NgxPrintElementModule.decorators = [
{ type: NgModule, args: [{
declarations: [
NgxPrintElementComponent,
NgxPrintElementDirective
],
exports: [
NgxPrintElementComponent,
NgxPrintElementDirective
]
},] }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { NgxPrintElementDirective, NgxPrintElementService, NgxPrintElementComponent, NgxPrintElementModule };
//# sourceMappingURL=ngx-print-element.js.map
{"version":3,"file":"ngx-print-element.js.map","sources":["ng://ngx-print-element/lib/ngx-print-element.helper.ts","ng://ngx-print-element/lib/ngx-print-element.service.ts","ng://ngx-print-element/lib/ngx-print-element.directive.ts","ng://ngx-print-element/lib/ngx-print-element.component.ts","ng://ngx-print-element/lib/ngx-print-element.module.ts"],"sourcesContent":["import { ElementRef, Renderer2 } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\nimport { Config } from \"./ngx-print-element.service\";\r\n\r\nconst defaultOptions: Config = {\r\n htmlType: 'domObj',\r\n printMode: 'template',\r\n pageTitle: '',\r\n templateString: '',\r\n popupProperties: '',\r\n stylesheets: [],\r\n styles: [],\r\n baseHref: ''\r\n};\r\n\r\n\r\ninterface _H {\r\n head: HTMLHeadElement;\r\n classNameUID: string;\r\n idNameHeadUID: string;\r\n}\r\n\r\n/**\r\n * HEAD Element\r\n * @returns \r\n */\r\nconst HEAD = (): _H => {\r\n const head = document.getElementsByTagName('head')[0];\r\n const ID = (Math.round(Math.random() * 9999999)).toString();\r\n const classNameUID = `ngx-print-element-${ID}`;\r\n const idNameHeadUID = `ngx-print-element-head-${ID}`;\r\n return { head, classNameUID, idNameHeadUID };\r\n}\r\n\r\n/**\r\n * ADD_STYLE_HEAD\r\n * @param _H \r\n */\r\nconst ADD_STYLE_HEAD = (_H: _H) => {\r\n const style = document.createElement('style');\r\n style.innerHTML = BUILD_STYLE(_H);\r\n style.id = `${_H.idNameHeadUID}`;\r\n _H.head.appendChild(style);\r\n}\r\n\r\n/**\r\n * BUILD_STYLE\r\n * @param _H \r\n * @returns \r\n */\r\nconst BUILD_STYLE = (_H: _H): string => {\r\n return `\r\n @media print {\r\n .${_H.classNameUID},\r\n .${_H.classNameUID} * {\r\n visibility: visible;\r\n }\r\n .${_H.classNameUID} {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n }\r\n .${_H.classNameUID} .print-none {\r\n display: none !important;\r\n }\r\n /* ----- Author: DaiDH ----- */\r\n /* Copyright (C) 2022 - ${new Date().getFullYear()} */\r\n }`\r\n};\r\n\r\n/**\r\n * REMOVE_STYLE_HEAD\r\n * @param _H \r\n */\r\nconst REMOVE_STYLE_HEAD = (_H: _H) => {\r\n const styleToRemove = document.getElementById(_H.idNameHeadUID);\r\n if (styleToRemove) {\r\n _H.head.removeChild(styleToRemove);\r\n }\r\n}\r\n\r\n/**\r\n * getBaseHref\r\n * @param options \r\n * @returns \r\n */\r\nexport const getBaseHref = (options: Config) => {\r\n const port = (window.location.port) ? `:${window.location.port}` : '';\r\n const buildURL = `${window.location.protocol}//${window.location.hostname}${port}${window.location.pathname}`;\r\n const finalURL = options.baseHref ? options.baseHref : buildURL;\r\n return finalURL;\r\n};\r\n\r\n/**\r\n * getMarkup\r\n * print-html-element\r\n * @param element \r\n * @param options \r\n * @param _H \r\n * @returns \r\n */\r\nexport const getMarkup = (element: any, options: Config, _H: _H) => {\r\n const template = options.templateString;\r\n const templateRegex = new RegExp(/{{\\s*printBody\\s*}}/gi);\r\n let stylesheets;\r\n let styles;\r\n const html = [];\r\n\r\n if (options.htmlType === 'domObj') {\r\n element = element.outerHTML;\r\n }\r\n\r\n if (options.htmlType === 'text') {\r\n element = element.innerText;\r\n }\r\n\r\n if (template && templateRegex.test(template)) {\r\n element = template.replace(templateRegex, element);\r\n }\r\n\r\n html.push(`<html><head><title>${options.pageTitle || ''}</title>`);\r\n\r\n // If stylesheet URL's or list of stylesheet URL's are specified, override page stylesheets\r\n if (options.stylesheets) {\r\n stylesheets = Array.isArray(options.stylesheets) ? options.stylesheets : [options.stylesheets];\r\n } else {\r\n stylesheets = Array.prototype.slice\r\n .call(document.getElementsByTagName('link'))\r\n .map(link => link);\r\n }\r\n\r\n stylesheets.forEach((f: any) => {\r\n html.push(`<link rel=\"${f.rel}\" href=\"${f.href}\">`);\r\n });\r\n\r\n // If inline styles or list of inline styles are specified, override inline styles\r\n if (options.styles) {\r\n styles = Array.isArray(options.styles) ? [...options.styles, BUILD_STYLE(_H)] : [options.styles + BUILD_STYLE(_H)];\r\n } else {\r\n styles = Array.prototype.slice\r\n .call(document.getElementsByTagName('style'))\r\n .map(style => style.innerHTML);\r\n }\r\n\r\n styles.forEach((style: any) => {\r\n html.push(`<style type=\"text/css\">${style}</style>`);\r\n });\r\n\r\n html.push(`<base href=\"${getBaseHref(options)}\"/>`);\r\n html.push(`</head><body class=\"${_H.classNameUID}\">`);\r\n html.push(element);\r\n html.push('</body></html>');\r\n\r\n return html.join('');\r\n};\r\n\r\n/**\r\n * Print window.open\r\n * @param element \r\n * @param selfOptions \r\n * @param as \r\n */\r\nexport const printElementWindow = (element: ElementRef<any>, selfOptions = {}, as: Subject<any>) => {\r\n try {\r\n const options = { ...defaultOptions, ...selfOptions };\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // New window\r\n const printWindow = window.open('about:blank', 'printElementWindow', options.popupProperties) as any;\r\n const printDocument = printWindow && printWindow.document as any;\r\n\r\n // Get markup to be printed\r\n const markup = getMarkup(container, options, _H);\r\n\r\n ADD_STYLE_HEAD(_H);\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n printDocument.close();\r\n setTimeout(() => {\r\n printWindow.close();\r\n REMOVE_STYLE_HEAD(_H);\r\n }, 1000);\r\n };\r\n\r\n // Print\r\n printWindow.focus();\r\n printDocument.write(markup);\r\n onPrintFinished(printWindow.print());\r\n printWindow.onbeforeprint = (event: any) => AS_COMPLETE(as, event);\r\n printWindow.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n};\r\n\r\n/**\r\n * Print iFrame\r\n * @param element \r\n * @param selfOptions \r\n * @param as \r\n */\r\nexport const printIFrame = (element: ElementRef<any>, selfOptions = {}, as: Subject<any>,) => {\r\n try {\r\n // Declare\r\n const options = { ...defaultOptions, ...selfOptions };\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // Get markup to be printed\r\n const markup = getMarkup(container, options, _H);\r\n\r\n // Create iframe\r\n let iframe = document.createElement('iframe') as HTMLIFrameElement | any;\r\n iframe.setAttribute('id', 'iframe-' + _H.classNameUID);\r\n iframe.setAttribute('class', 'iframe-' + _H.classNameUID);\r\n iframe.setAttribute('src', 'about:blank');\r\n iframe.setAttribute('frameBorder', '0');\r\n iframe.setAttribute('scrolling', 'no');\r\n iframe.setAttribute('style', 'position:fixed;bottom:100%;right:100%;');\r\n document.body.appendChild(iframe);\r\n\r\n let iDocument: any = null;\r\n if (iframe.contentDocument) {\r\n iDocument = iframe.contentDocument;\r\n } else if (iframe.contentWindow) {\r\n iDocument = iframe.contentWindow.document;\r\n }\r\n\r\n ADD_STYLE_HEAD(_H);\r\n\r\n // SetTimeout fixesiframe printMode does not work in firefox\r\n setTimeout(() => {\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n setTimeout(() => {\r\n iDocument.close();\r\n REMOVE_STYLE_HEAD(_H);\r\n });\r\n };\r\n\r\n // Print\r\n iframe.contentWindow.focus();\r\n onPrintFinished(iframe.contentWindow.print());\r\n iDocument.open();\r\n iDocument.write(markup);\r\n iframe.contentWindow.onbeforeprint = (event: any) => {\r\n setTimeout(() => document.body.removeChild(iframe));\r\n AS_COMPLETE(as, event);\r\n }\r\n iframe.contentWindow.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n });\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n}\r\n\r\n/**\r\n * Print default\r\n * @param element \r\n * @param renderer \r\n * @param as \r\n */\r\nexport const printDefault = (element: ElementRef<any>, renderer: Renderer2, as: Subject<any>) => {\r\n try {\r\n // Declare\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // Add visibility hidden into body\r\n const bodyEl = document.querySelector('body');\r\n if (bodyEl) {\r\n bodyEl.style.visibility = 'hidden';\r\n renderer.addClass(container, _H.classNameUID);\r\n ADD_STYLE_HEAD(_H);\r\n }\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n // window.close();\r\n // Clear visibility: hidden\r\n bodyEl && (bodyEl.style.visibility = '');\r\n renderer.setAttribute(container, 'class', container.className.replace(_H.classNameUID, ''));\r\n REMOVE_STYLE_HEAD(_H);\r\n };\r\n\r\n // Print\r\n window.focus();\r\n onPrintFinished(window.print());\r\n window.onbeforeprint = (event: any) => AS_COMPLETE(as, event);\r\n window.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Rxjs complete\r\n * @param as \r\n * @param data \r\n * @param error \r\n */\r\nexport const AS_COMPLETE = (as: Subject<any>, data: any, error = null) => {\r\n error ? as.error(error) : as.next(data);\r\n};\r\n","import { ElementRef, Injectable, Renderer2 } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { printDefault, printElementWindow, printIFrame } from './ngx-print-element.helper';\r\n\r\nexport interface Config {\r\n htmlType?: string;\r\n printMode?: string;\r\n pageTitle?: string;\r\n templateString?: string;\r\n popupProperties?: string;\r\n stylesheets?: {\r\n rel?: string,\r\n href?: string\r\n }[],\r\n styles?: string[];\r\n baseHref?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxPrintElementService {\r\n\r\n public renderer!: Renderer2;\r\n\r\n /**\r\n * Print\r\n * @param element \r\n * @param config \r\n * @returns \r\n */\r\n public print(element: ElementRef<any>, config?: Config): Subject<any> {\r\n const as = new Subject();\r\n // Create and insert new print section\r\n if (element) {\r\n // Element\r\n if (config) {\r\n // Config\r\n if (config.printMode === 'template') {\r\n // iframe\r\n printIFrame(element, config, as);\r\n }\r\n if (config.printMode === 'template-popup') {\r\n // windows\r\n printElementWindow(element, config, as);\r\n }\r\n } else {\r\n // No config\r\n printDefault(element, this.renderer, as);\r\n }\r\n }\r\n return as;\r\n }\r\n}\r\n","import { Directive, OnInit, Renderer2 } from '@angular/core';\r\nimport { NgxPrintElementService } from './ngx-print-element.service';\r\n\r\n@Directive({\r\n selector: '[ngxPrintElement]'\r\n})\r\nexport class NgxPrintElementDirective implements OnInit {\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n private prints: NgxPrintElementService\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.prints.renderer = this.renderer;\r\n }\r\n}\r\n","import { Component, ElementRef } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Config, NgxPrintElementService } from './ngx-print-element.service';\r\n\r\n@Component({\r\n selector: 'ngx-print-element',\r\n template: `<ng-content></ng-content>`,\r\n exportAs: 'element'\r\n})\r\nexport class NgxPrintElementComponent {\r\n\r\n constructor(private prints: NgxPrintElementService) { }\r\n\r\n /**\r\n * Print\r\n * @param elementRef \r\n * @param config \r\n * @returns \r\n */\r\n public print(elementRef: ElementRef<any>, config?: Config): Subject<any> {\r\n return this.prints.print(elementRef, config);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { NgxPrintElementComponent } from './ngx-print-element.component';\r\nimport { NgxPrintElementDirective } from './ngx-print-element.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxPrintElementComponent,\r\n NgxPrintElementDirective\r\n ],\r\n exports: [\r\n NgxPrintElementComponent,\r\n NgxPrintElementDirective\r\n ]\r\n})\r\n\r\nexport class NgxPrintElementModule {\r\n}\r\n"],"names":[],"mappings":"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"}
import { Subject } from 'rxjs';
import { __spread, __assign } from 'tslib';
import { Injectable, Directive, Renderer2, Component, NgModule, defineInjectable } from '@angular/core';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var defaultOptions = {
htmlType: 'domObj',
printMode: 'template',
pageTitle: '',
templateString: '',
popupProperties: '',
stylesheets: [],
styles: [],
baseHref: ''
};
/**
* HEAD Element
* \@return
* @type {?}
*/
var HEAD = (/**
* @return {?}
*/
function () {
/** @type {?} */
var head = document.getElementsByTagName('head')[0];
/** @type {?} */
var ID = (Math.round(Math.random() * 9999999)).toString();
/** @type {?} */
var classNameUID = "ngx-print-element-" + ID;
/** @type {?} */
var idNameHeadUID = "ngx-print-element-head-" + ID;
return { head: head, classNameUID: classNameUID, idNameHeadUID: idNameHeadUID };
})
/**
* ADD_STYLE_HEAD
* @param _H
*/
;
/**
* ADD_STYLE_HEAD
* \@param _H
* @type {?}
*/
var ADD_STYLE_HEAD = (/**
* @param {?} _H
* @return {?}
*/
function (_H) {
/** @type {?} */
var style = document.createElement('style');
style.innerHTML = BUILD_STYLE(_H);
style.id = "" + _H.idNameHeadUID;
_H.head.appendChild(style);
})
/**
* BUILD_STYLE
* @param _H
* @returns
*/
;
/**
* BUILD_STYLE
* \@param _H
* \@return
* @type {?}
*/
var BUILD_STYLE = (/**
* @param {?} _H
* @return {?}
*/
function (_H) {
return "\n @media print {\n ." + _H.classNameUID + ",\n ." + _H.classNameUID + " * {\n visibility: visible;\n }\n ." + _H.classNameUID + " {\n position: absolute;\n left: 0;\n top: 0;\n }\n ." + _H.classNameUID + " .print-none {\n display: none !important;\n }\n /* ----- Author: DaiDH ----- */\n /* Copyright (C) 2022 - " + new Date().getFullYear() + " */\n }";
});
/**
* REMOVE_STYLE_HEAD
* \@param _H
* @type {?}
*/
var REMOVE_STYLE_HEAD = (/**
* @param {?} _H
* @return {?}
*/
function (_H) {
/** @type {?} */
var styleToRemove = document.getElementById(_H.idNameHeadUID);
if (styleToRemove) {
_H.head.removeChild(styleToRemove);
}
})
/**
* getBaseHref
* @param options
* @returns
*/
;
/**
* getBaseHref
* \@param options
* \@return
* @type {?}
*/
var getBaseHref = (/**
* @param {?} options
* @return {?}
*/
function (options) {
/** @type {?} */
var port = (window.location.port) ? ":" + window.location.port : '';
/** @type {?} */
var buildURL = window.location.protocol + "//" + window.location.hostname + port + window.location.pathname;
/** @type {?} */
var finalURL = options.baseHref ? options.baseHref : buildURL;
return finalURL;
});
/**
* getMarkup
* print-html-element
* \@param element
* \@param options
* \@param _H
* \@return
* @type {?}
*/
var getMarkup = (/**
* @param {?} element
* @param {?} options
* @param {?} _H
* @return {?}
*/
function (element, options, _H) {
/** @type {?} */
var template = options.templateString;
/** @type {?} */
var templateRegex = new RegExp(/{{\s*printBody\s*}}/gi);
/** @type {?} */
var stylesheets;
/** @type {?} */
var styles;
/** @type {?} */
var html = [];
if (options.htmlType === 'domObj') {
element = element.outerHTML;
}
if (options.htmlType === 'text') {
element = element.innerText;
}
if (template && templateRegex.test(template)) {
element = template.replace(templateRegex, element);
}
html.push("<html><head><title>" + (options.pageTitle || '') + "</title>");
// If stylesheet URL's or list of stylesheet URL's are specified, override page stylesheets
if (options.stylesheets) {
stylesheets = Array.isArray(options.stylesheets) ? options.stylesheets : [options.stylesheets];
}
else {
stylesheets = Array.prototype.slice
.call(document.getElementsByTagName('link'))
.map((/**
* @param {?} link
* @return {?}
*/
function (link) { return link; }));
}
stylesheets.forEach((/**
* @param {?} f
* @return {?}
*/
function (f) {
html.push("<link rel=\"" + f.rel + "\" href=\"" + f.href + "\">");
}));
// If inline styles or list of inline styles are specified, override inline styles
if (options.styles) {
styles = Array.isArray(options.styles) ? __spread(options.styles, [BUILD_STYLE(_H)]) : [options.styles + BUILD_STYLE(_H)];
}
else {
styles = Array.prototype.slice
.call(document.getElementsByTagName('style'))
.map((/**
* @param {?} style
* @return {?}
*/
function (style) { return style.innerHTML; }));
}
styles.forEach((/**
* @param {?} style
* @return {?}
*/
function (style) {
html.push("<style type=\"text/css\">" + style + "</style>");
}));
html.push("<base href=\"" + getBaseHref(options) + "\"/>");
html.push("</head><body class=\"" + _H.classNameUID + "\">");
html.push(element);
html.push('</body></html>');
return html.join('');
});
/**
* Print window.open
* \@param element
* \@param selfOptions
* \@param as
* @type {?}
*/
var printElementWindow = (/**
* @param {?} element
* @param {?=} selfOptions
* @param {?=} as
* @return {?}
*/
function (element, selfOptions, as) {
if (selfOptions === void 0) { selfOptions = {}; }
try {
/** @type {?} */
var options = __assign({}, defaultOptions, selfOptions);
/** @type {?} */
var container = element.nativeElement;
/** @type {?} */
var _H_1 = HEAD();
// New window
/** @type {?} */
var printWindow_1 = (/** @type {?} */ (window.open('about:blank', 'printElementWindow', options.popupProperties)));
/** @type {?} */
var printDocument_1 = printWindow_1 && (/** @type {?} */ (printWindow_1.document));
// Get markup to be printed
/** @type {?} */
var markup = getMarkup(container, options, _H_1);
ADD_STYLE_HEAD(_H_1);
// Close
/** @type {?} */
var onPrintFinished = (/**
* @param {?} printed
* @return {?}
*/
function (printed) {
printDocument_1.close();
setTimeout((/**
* @return {?}
*/
function () {
printWindow_1.close();
REMOVE_STYLE_HEAD(_H_1);
}), 1000);
});
// Print
printWindow_1.focus();
printDocument_1.write(markup);
onPrintFinished(printWindow_1.print());
printWindow_1.onbeforeprint = (/**
* @param {?} event
* @return {?}
*/
function (event) { return AS_COMPLETE(as, event); });
printWindow_1.onafterprint = (/**
* @param {?} event
* @return {?}
*/
function (event) { return AS_COMPLETE(as, event); });
}
catch (error) {
AS_COMPLETE(as, error);
}
});
/**
* Print iFrame
* \@param element
* \@param selfOptions
* \@param as
* @type {?}
*/
var printIFrame = (/**
* @param {?} element
* @param {?=} selfOptions
* @param {?=} as
* @return {?}
*/
function (element, selfOptions, as) {
if (selfOptions === void 0) { selfOptions = {}; }
try {
// Declare
/** @type {?} */
var options = __assign({}, defaultOptions, selfOptions);
/** @type {?} */
var container = element.nativeElement;
/** @type {?} */
var _H_2 = HEAD();
// Get markup to be printed
/** @type {?} */
var markup_1 = getMarkup(container, options, _H_2);
// Create iframe
/** @type {?} */
var iframe_1 = (/** @type {?} */ (document.createElement('iframe')));
iframe_1.setAttribute('id', 'iframe-' + _H_2.classNameUID);
iframe_1.setAttribute('class', 'iframe-' + _H_2.classNameUID);
iframe_1.setAttribute('src', 'about:blank');
iframe_1.setAttribute('frameBorder', '0');
iframe_1.setAttribute('scrolling', 'no');
iframe_1.setAttribute('style', 'position:fixed;bottom:100%;right:100%;');
document.body.appendChild(iframe_1);
/** @type {?} */
var iDocument_1 = null;
if (iframe_1.contentDocument) {
iDocument_1 = iframe_1.contentDocument;
}
else if (iframe_1.contentWindow) {
iDocument_1 = iframe_1.contentWindow.document;
}
ADD_STYLE_HEAD(_H_2);
// SetTimeout fixesiframe printMode does not work in firefox
setTimeout((/**
* @return {?}
*/
function () {
// Close
/** @type {?} */
var onPrintFinished = (/**
* @param {?} printed
* @return {?}
*/
function (printed) {
setTimeout((/**
* @return {?}
*/
function () {
iDocument_1.close();
REMOVE_STYLE_HEAD(_H_2);
}));
});
// Print
iframe_1.contentWindow.focus();
onPrintFinished(iframe_1.contentWindow.print());
iDocument_1.open();
iDocument_1.write(markup_1);
iframe_1.contentWindow.onbeforeprint = (/**
* @param {?} event
* @return {?}
*/
function (event) {
setTimeout((/**
* @return {?}
*/
function () { return document.body.removeChild(iframe_1); }));
AS_COMPLETE(as, event);
});
iframe_1.contentWindow.onafterprint = (/**
* @param {?} event
* @return {?}
*/
function (event) { return AS_COMPLETE(as, event); });
}));
}
catch (error) {
AS_COMPLETE(as, error);
}
})
/**
* Print default
* @param element
* @param renderer
* @param as
*/
;
/**
* Print default
* \@param element
* \@param renderer
* \@param as
* @type {?}
*/
var printDefault = (/**
* @param {?} element
* @param {?} renderer
* @param {?} as
* @return {?}
*/
function (element, renderer, as) {
try {
// Declare
/** @type {?} */
var container_1 = element.nativeElement;
/** @type {?} */
var _H_3 = HEAD();
// Add visibility hidden into body
/** @type {?} */
var bodyEl_1 = document.querySelector('body');
if (bodyEl_1) {
bodyEl_1.style.visibility = 'hidden';
renderer.addClass(container_1, _H_3.classNameUID);
ADD_STYLE_HEAD(_H_3);
}
// Close
/** @type {?} */
var onPrintFinished = (/**
* @param {?} printed
* @return {?}
*/
function (printed) {
// window.close();
// Clear visibility: hidden
bodyEl_1 && (bodyEl_1.style.visibility = '');
renderer.setAttribute(container_1, 'class', container_1.className.replace(_H_3.classNameUID, ''));
REMOVE_STYLE_HEAD(_H_3);
});
// Print
window.focus();
onPrintFinished(window.print());
window.onbeforeprint = (/**
* @param {?} event
* @return {?}
*/
function (event) { return AS_COMPLETE(as, event); });
window.onafterprint = (/**
* @param {?} event
* @return {?}
*/
function (event) { return AS_COMPLETE(as, event); });
}
catch (error) {
AS_COMPLETE(as, error);
}
})
/**
* Rxjs complete
* @param as
* @param data
* @param error
*/
;
/**
* Rxjs complete
* \@param as
* \@param data
* \@param error
* @type {?}
*/
var AS_COMPLETE = (/**
* @param {?} as
* @param {?} data
* @param {?=} error
* @return {?}
*/
function (as, data, error) {
if (error === void 0) { error = null; }
error ? as.error(error) : as.next(data);
});
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NgxPrintElementService = /** @class */ (function () {
function NgxPrintElementService() {
}
/**
* Print
* @param element
* @param config
* @returns
*/
/**
* Print
* @param {?} element
* @param {?=} config
* @return {?}
*/
NgxPrintElementService.prototype.print = /**
* Print
* @param {?} element
* @param {?=} config
* @return {?}
*/
function (element, config) {
/** @type {?} */
var as = new Subject();
// Create and insert new print section
if (element) {
// Element
if (config) {
// Config
if (config.printMode === 'template') {
// iframe
printIFrame(element, config, as);
}
if (config.printMode === 'template-popup') {
// windows
printElementWindow(element, config, as);
}
}
else {
// No config
printDefault(element, this.renderer, as);
}
}
return as;
};
NgxPrintElementService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */ NgxPrintElementService.ngInjectableDef = defineInjectable({ factory: function NgxPrintElementService_Factory() { return new NgxPrintElementService(); }, token: NgxPrintElementService, providedIn: "root" });
return NgxPrintElementService;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NgxPrintElementDirective = /** @class */ (function () {
function NgxPrintElementDirective(renderer, prints) {
this.renderer = renderer;
this.prints = prints;
}
/**
* @return {?}
*/
NgxPrintElementDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.prints.renderer = this.renderer;
};
NgxPrintElementDirective.decorators = [
{ type: Directive, args: [{
selector: '[ngxPrintElement]'
},] }
];
NgxPrintElementDirective.ctorParameters = function () { return [
{ type: Renderer2 },
{ type: NgxPrintElementService }
]; };
return NgxPrintElementDirective;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NgxPrintElementComponent = /** @class */ (function () {
function NgxPrintElementComponent(prints) {
this.prints = prints;
}
/**
* Print
* @param elementRef
* @param config
* @returns
*/
/**
* Print
* @param {?} elementRef
* @param {?=} config
* @return {?}
*/
NgxPrintElementComponent.prototype.print = /**
* Print
* @param {?} elementRef
* @param {?=} config
* @return {?}
*/
function (elementRef, config) {
return this.prints.print(elementRef, config);
};
NgxPrintElementComponent.decorators = [
{ type: Component, args: [{
selector: 'ngx-print-element',
template: "<ng-content></ng-content>",
exportAs: 'element'
}] }
];
NgxPrintElementComponent.ctorParameters = function () { return [
{ type: NgxPrintElementService }
]; };
return NgxPrintElementComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NgxPrintElementModule = /** @class */ (function () {
function NgxPrintElementModule() {
}
NgxPrintElementModule.decorators = [
{ type: NgModule, args: [{
declarations: [
NgxPrintElementComponent,
NgxPrintElementDirective
],
exports: [
NgxPrintElementComponent,
NgxPrintElementDirective
]
},] }
];
return NgxPrintElementModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { NgxPrintElementDirective, NgxPrintElementService, NgxPrintElementComponent, NgxPrintElementModule };
//# sourceMappingURL=ngx-print-element.js.map
{"version":3,"file":"ngx-print-element.js.map","sources":["ng://ngx-print-element/lib/ngx-print-element.helper.ts","ng://ngx-print-element/lib/ngx-print-element.service.ts","ng://ngx-print-element/lib/ngx-print-element.directive.ts","ng://ngx-print-element/lib/ngx-print-element.component.ts","ng://ngx-print-element/lib/ngx-print-element.module.ts"],"sourcesContent":["import { ElementRef, Renderer2 } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\nimport { Config } from \"./ngx-print-element.service\";\r\n\r\nconst defaultOptions: Config = {\r\n htmlType: 'domObj',\r\n printMode: 'template',\r\n pageTitle: '',\r\n templateString: '',\r\n popupProperties: '',\r\n stylesheets: [],\r\n styles: [],\r\n baseHref: ''\r\n};\r\n\r\n\r\ninterface _H {\r\n head: HTMLHeadElement;\r\n classNameUID: string;\r\n idNameHeadUID: string;\r\n}\r\n\r\n/**\r\n * HEAD Element\r\n * @returns \r\n */\r\nconst HEAD = (): _H => {\r\n const head = document.getElementsByTagName('head')[0];\r\n const ID = (Math.round(Math.random() * 9999999)).toString();\r\n const classNameUID = `ngx-print-element-${ID}`;\r\n const idNameHeadUID = `ngx-print-element-head-${ID}`;\r\n return { head, classNameUID, idNameHeadUID };\r\n}\r\n\r\n/**\r\n * ADD_STYLE_HEAD\r\n * @param _H \r\n */\r\nconst ADD_STYLE_HEAD = (_H: _H) => {\r\n const style = document.createElement('style');\r\n style.innerHTML = BUILD_STYLE(_H);\r\n style.id = `${_H.idNameHeadUID}`;\r\n _H.head.appendChild(style);\r\n}\r\n\r\n/**\r\n * BUILD_STYLE\r\n * @param _H \r\n * @returns \r\n */\r\nconst BUILD_STYLE = (_H: _H): string => {\r\n return `\r\n @media print {\r\n .${_H.classNameUID},\r\n .${_H.classNameUID} * {\r\n visibility: visible;\r\n }\r\n .${_H.classNameUID} {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n }\r\n .${_H.classNameUID} .print-none {\r\n display: none !important;\r\n }\r\n /* ----- Author: DaiDH ----- */\r\n /* Copyright (C) 2022 - ${new Date().getFullYear()} */\r\n }`\r\n};\r\n\r\n/**\r\n * REMOVE_STYLE_HEAD\r\n * @param _H \r\n */\r\nconst REMOVE_STYLE_HEAD = (_H: _H) => {\r\n const styleToRemove = document.getElementById(_H.idNameHeadUID);\r\n if (styleToRemove) {\r\n _H.head.removeChild(styleToRemove);\r\n }\r\n}\r\n\r\n/**\r\n * getBaseHref\r\n * @param options \r\n * @returns \r\n */\r\nexport const getBaseHref = (options: Config) => {\r\n const port = (window.location.port) ? `:${window.location.port}` : '';\r\n const buildURL = `${window.location.protocol}//${window.location.hostname}${port}${window.location.pathname}`;\r\n const finalURL = options.baseHref ? options.baseHref : buildURL;\r\n return finalURL;\r\n};\r\n\r\n/**\r\n * getMarkup\r\n * print-html-element\r\n * @param element \r\n * @param options \r\n * @param _H \r\n * @returns \r\n */\r\nexport const getMarkup = (element: any, options: Config, _H: _H) => {\r\n const template = options.templateString;\r\n const templateRegex = new RegExp(/{{\\s*printBody\\s*}}/gi);\r\n let stylesheets;\r\n let styles;\r\n const html = [];\r\n\r\n if (options.htmlType === 'domObj') {\r\n element = element.outerHTML;\r\n }\r\n\r\n if (options.htmlType === 'text') {\r\n element = element.innerText;\r\n }\r\n\r\n if (template && templateRegex.test(template)) {\r\n element = template.replace(templateRegex, element);\r\n }\r\n\r\n html.push(`<html><head><title>${options.pageTitle || ''}</title>`);\r\n\r\n // If stylesheet URL's or list of stylesheet URL's are specified, override page stylesheets\r\n if (options.stylesheets) {\r\n stylesheets = Array.isArray(options.stylesheets) ? options.stylesheets : [options.stylesheets];\r\n } else {\r\n stylesheets = Array.prototype.slice\r\n .call(document.getElementsByTagName('link'))\r\n .map(link => link);\r\n }\r\n\r\n stylesheets.forEach((f: any) => {\r\n html.push(`<link rel=\"${f.rel}\" href=\"${f.href}\">`);\r\n });\r\n\r\n // If inline styles or list of inline styles are specified, override inline styles\r\n if (options.styles) {\r\n styles = Array.isArray(options.styles) ? [...options.styles, BUILD_STYLE(_H)] : [options.styles + BUILD_STYLE(_H)];\r\n } else {\r\n styles = Array.prototype.slice\r\n .call(document.getElementsByTagName('style'))\r\n .map(style => style.innerHTML);\r\n }\r\n\r\n styles.forEach((style: any) => {\r\n html.push(`<style type=\"text/css\">${style}</style>`);\r\n });\r\n\r\n html.push(`<base href=\"${getBaseHref(options)}\"/>`);\r\n html.push(`</head><body class=\"${_H.classNameUID}\">`);\r\n html.push(element);\r\n html.push('</body></html>');\r\n\r\n return html.join('');\r\n};\r\n\r\n/**\r\n * Print window.open\r\n * @param element \r\n * @param selfOptions \r\n * @param as \r\n */\r\nexport const printElementWindow = (element: ElementRef<any>, selfOptions = {}, as: Subject<any>) => {\r\n try {\r\n const options = { ...defaultOptions, ...selfOptions };\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // New window\r\n const printWindow = window.open('about:blank', 'printElementWindow', options.popupProperties) as any;\r\n const printDocument = printWindow && printWindow.document as any;\r\n\r\n // Get markup to be printed\r\n const markup = getMarkup(container, options, _H);\r\n\r\n ADD_STYLE_HEAD(_H);\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n printDocument.close();\r\n setTimeout(() => {\r\n printWindow.close();\r\n REMOVE_STYLE_HEAD(_H);\r\n }, 1000);\r\n };\r\n\r\n // Print\r\n printWindow.focus();\r\n printDocument.write(markup);\r\n onPrintFinished(printWindow.print());\r\n printWindow.onbeforeprint = (event: any) => AS_COMPLETE(as, event);\r\n printWindow.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n};\r\n\r\n/**\r\n * Print iFrame\r\n * @param element \r\n * @param selfOptions \r\n * @param as \r\n */\r\nexport const printIFrame = (element: ElementRef<any>, selfOptions = {}, as: Subject<any>,) => {\r\n try {\r\n // Declare\r\n const options = { ...defaultOptions, ...selfOptions };\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // Get markup to be printed\r\n const markup = getMarkup(container, options, _H);\r\n\r\n // Create iframe\r\n let iframe = document.createElement('iframe') as HTMLIFrameElement | any;\r\n iframe.setAttribute('id', 'iframe-' + _H.classNameUID);\r\n iframe.setAttribute('class', 'iframe-' + _H.classNameUID);\r\n iframe.setAttribute('src', 'about:blank');\r\n iframe.setAttribute('frameBorder', '0');\r\n iframe.setAttribute('scrolling', 'no');\r\n iframe.setAttribute('style', 'position:fixed;bottom:100%;right:100%;');\r\n document.body.appendChild(iframe);\r\n\r\n let iDocument: any = null;\r\n if (iframe.contentDocument) {\r\n iDocument = iframe.contentDocument;\r\n } else if (iframe.contentWindow) {\r\n iDocument = iframe.contentWindow.document;\r\n }\r\n\r\n ADD_STYLE_HEAD(_H);\r\n\r\n // SetTimeout fixesiframe printMode does not work in firefox\r\n setTimeout(() => {\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n setTimeout(() => {\r\n iDocument.close();\r\n REMOVE_STYLE_HEAD(_H);\r\n });\r\n };\r\n\r\n // Print\r\n iframe.contentWindow.focus();\r\n onPrintFinished(iframe.contentWindow.print());\r\n iDocument.open();\r\n iDocument.write(markup);\r\n iframe.contentWindow.onbeforeprint = (event: any) => {\r\n setTimeout(() => document.body.removeChild(iframe));\r\n AS_COMPLETE(as, event);\r\n }\r\n iframe.contentWindow.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n });\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n}\r\n\r\n/**\r\n * Print default\r\n * @param element \r\n * @param renderer \r\n * @param as \r\n */\r\nexport const printDefault = (element: ElementRef<any>, renderer: Renderer2, as: Subject<any>) => {\r\n try {\r\n // Declare\r\n const container = element.nativeElement;\r\n const _H = HEAD();\r\n\r\n // Add visibility hidden into body\r\n const bodyEl = document.querySelector('body');\r\n if (bodyEl) {\r\n bodyEl.style.visibility = 'hidden';\r\n renderer.addClass(container, _H.classNameUID);\r\n ADD_STYLE_HEAD(_H);\r\n }\r\n\r\n // Close\r\n const onPrintFinished = (printed: any) => {\r\n // window.close();\r\n // Clear visibility: hidden\r\n bodyEl && (bodyEl.style.visibility = '');\r\n renderer.setAttribute(container, 'class', container.className.replace(_H.classNameUID, ''));\r\n REMOVE_STYLE_HEAD(_H);\r\n };\r\n\r\n // Print\r\n window.focus();\r\n onPrintFinished(window.print());\r\n window.onbeforeprint = (event: any) => AS_COMPLETE(as, event);\r\n window.onafterprint = (event: any) => AS_COMPLETE(as, event);\r\n } catch (error) {\r\n AS_COMPLETE(as, error);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Rxjs complete\r\n * @param as \r\n * @param data \r\n * @param error \r\n */\r\nexport const AS_COMPLETE = (as: Subject<any>, data: any, error = null) => {\r\n error ? as.error(error) : as.next(data);\r\n};\r\n","import { ElementRef, Injectable, Renderer2 } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { printDefault, printElementWindow, printIFrame } from './ngx-print-element.helper';\r\n\r\nexport interface Config {\r\n htmlType?: string;\r\n printMode?: string;\r\n pageTitle?: string;\r\n templateString?: string;\r\n popupProperties?: string;\r\n stylesheets?: {\r\n rel?: string,\r\n href?: string\r\n }[],\r\n styles?: string[];\r\n baseHref?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxPrintElementService {\r\n\r\n public renderer!: Renderer2;\r\n\r\n /**\r\n * Print\r\n * @param element \r\n * @param config \r\n * @returns \r\n */\r\n public print(element: ElementRef<any>, config?: Config): Subject<any> {\r\n const as = new Subject();\r\n // Create and insert new print section\r\n if (element) {\r\n // Element\r\n if (config) {\r\n // Config\r\n if (config.printMode === 'template') {\r\n // iframe\r\n printIFrame(element, config, as);\r\n }\r\n if (config.printMode === 'template-popup') {\r\n // windows\r\n printElementWindow(element, config, as);\r\n }\r\n } else {\r\n // No config\r\n printDefault(element, this.renderer, as);\r\n }\r\n }\r\n return as;\r\n }\r\n}\r\n","import { Directive, OnInit, Renderer2 } from '@angular/core';\r\nimport { NgxPrintElementService } from './ngx-print-element.service';\r\n\r\n@Directive({\r\n selector: '[ngxPrintElement]'\r\n})\r\nexport class NgxPrintElementDirective implements OnInit {\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n private prints: NgxPrintElementService\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.prints.renderer = this.renderer;\r\n }\r\n}\r\n","import { Component, ElementRef } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Config, NgxPrintElementService } from './ngx-print-element.service';\r\n\r\n@Component({\r\n selector: 'ngx-print-element',\r\n template: `<ng-content></ng-content>`,\r\n exportAs: 'element'\r\n})\r\nexport class NgxPrintElementComponent {\r\n\r\n constructor(private prints: NgxPrintElementService) { }\r\n\r\n /**\r\n * Print\r\n * @param elementRef \r\n * @param config \r\n * @returns \r\n */\r\n public print(elementRef: ElementRef<any>, config?: Config): Subject<any> {\r\n return this.prints.print(elementRef, config);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { NgxPrintElementComponent } from './ngx-print-element.component';\r\nimport { NgxPrintElementDirective } from './ngx-print-element.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxPrintElementComponent,\r\n NgxPrintElementDirective\r\n ],\r\n exports: [\r\n NgxPrintElementComponent,\r\n NgxPrintElementDirective\r\n ]\r\n})\r\n\r\nexport class NgxPrintElementModule {\r\n}\r\n"],"names":[],"mappings":"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"}
/**
* Generated bundle index. Do not edit.
*/
export * from './public_api';
{"__symbolic":"module","version":4,"metadata":{"NgxPrintElementDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":3,"character":1},"arguments":[{"selector":"[ngxPrintElement]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":9,"character":22},{"__symbolic":"reference","name":"NgxPrintElementService"}]}],"ngOnInit":[{"__symbolic":"method"}]}},"Config":{"__symbolic":"interface"},"NgxPrintElementService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"print":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"NgxPrintElementComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"ngx-print-element","template":"<ng-content></ng-content>","exportAs":"element"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"NgxPrintElementService"}]}],"print":[{"__symbolic":"method"}]}},"NgxPrintElementModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"NgxPrintElementComponent"},{"__symbolic":"reference","name":"NgxPrintElementDirective"}],"exports":[{"__symbolic":"reference","name":"NgxPrintElementComponent"},{"__symbolic":"reference","name":"NgxPrintElementDirective"}]}]}],"members":{}}},"origins":{"NgxPrintElementDirective":"./lib/ngx-print-element.directive","Config":"./lib/ngx-print-element.service","NgxPrintElementService":"./lib/ngx-print-element.service","NgxPrintElementComponent":"./lib/ngx-print-element.component","NgxPrintElementModule":"./lib/ngx-print-element.module"},"importAs":"ngx-print-element"}
export * from './lib/ngx-print-element.directive';
export * from './lib/ngx-print-element.service';
export * from './lib/ngx-print-element.component';
export * from './lib/ngx-print-element.module';