ng-zorro-antd-extension 17.0.2 → 17.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +1 -0
  2. package/configurable-query/configurable-query.component.d.ts +13 -14
  3. package/configurable-query/type.d.ts +2 -2
  4. package/esm2022/configurable-query/configurable-query.component.mjs +66 -42
  5. package/esm2022/configurable-query/type.mjs +1 -1
  6. package/esm2022/print/ng-zorro-antd-extension-print.mjs +5 -0
  7. package/esm2022/print/nzx-print-content.directive.mjs +22 -0
  8. package/esm2022/print/nzx-print-v.component.mjs +300 -0
  9. package/esm2022/print/nzx-print.component.mjs +189 -0
  10. package/esm2022/print/nzx-print.directive.mjs +91 -0
  11. package/esm2022/print/nzx-print.module.mjs +39 -0
  12. package/esm2022/print/public-api.mjs +10 -0
  13. package/esm2022/table-select/page-table-select/page-table-select.component.mjs +3 -3
  14. package/esm2022/table-select/table-select/table-select.component.mjs +3 -3
  15. package/esm2022/util/lib/getElementByTag.mjs +31 -0
  16. package/esm2022/util/public-api.mjs +2 -1
  17. package/fesm2022/ng-zorro-antd-extension-configurable-query.mjs +64 -40
  18. package/fesm2022/ng-zorro-antd-extension-configurable-query.mjs.map +1 -1
  19. package/fesm2022/ng-zorro-antd-extension-print.mjs +637 -0
  20. package/fesm2022/ng-zorro-antd-extension-print.mjs.map +1 -0
  21. package/fesm2022/ng-zorro-antd-extension-table-select.mjs +4 -4
  22. package/fesm2022/ng-zorro-antd-extension-table-select.mjs.map +1 -1
  23. package/fesm2022/ng-zorro-antd-extension-util.mjs +32 -1
  24. package/fesm2022/ng-zorro-antd-extension-util.mjs.map +1 -1
  25. package/package.json +14 -7
  26. package/pipes/safe-url.pipe.d.ts +1 -1
  27. package/print/index.d.ts +5 -0
  28. package/print/nzx-print-content.directive.d.ts +10 -0
  29. package/print/nzx-print-v.component.d.ts +45 -0
  30. package/print/nzx-print.component.d.ts +34 -0
  31. package/print/nzx-print.directive.d.ts +17 -0
  32. package/print/nzx-print.module.d.ts +13 -0
  33. package/print/public-api.d.ts +9 -0
  34. package/public-api.d.ts +1 -1
  35. package/table-select/abstract-table-select.d.ts +1 -1
  36. package/timer-button/timer-button.directive.d.ts +1 -1
  37. package/util/lib/getElementByTag.d.ts +8 -0
  38. package/util/public-api.d.ts +1 -0
@@ -0,0 +1,300 @@
1
+ import { Component, ContentChildren, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
+ import { CoreViewer, Navigation, PageViewMode, } from '@vivliostyle/core';
3
+ import { NzxPrintContentDirective } from './nzx-print-content.directive';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "ng-zorro-antd/grid";
7
+ import * as i3 from "ng-zorro-antd/pagination";
8
+ /**
9
+ * Vivliostyle 打印
10
+ */
11
+ export class NzxPrintVComponent {
12
+ constructor(cd) {
13
+ this.cd = cd;
14
+ this.printTitle = 'pdf';
15
+ /**
16
+ * a4 794px1123px
17
+ */
18
+ this.width = 814;
19
+ this.height = 1143;
20
+ this.enablePreview = true;
21
+ this.pixelRatio = 8;
22
+ this.pageRenderComplete = new EventEmitter();
23
+ this.pageTotal = 0;
24
+ this._title = document.title;
25
+ this._isRenderComplete = false;
26
+ this.handleError = (payload) => {
27
+ console.log('error::', payload);
28
+ };
29
+ this.handleReadyStateChange = (payload) => {
30
+ this._isRenderComplete = false;
31
+ this.pageRenderComplete.emit(false);
32
+ if (this.viewer && this.viewer.readyState === 'complete') {
33
+ const intervalTag = setInterval(() => {
34
+ if (this.iframeEl &&
35
+ this.iframeEl.contentWindow &&
36
+ this.iframeEl.contentWindow.document) {
37
+ const images = this.iframeEl.contentWindow.document.getElementsByTagName('img');
38
+ let allImagesLoaded = true;
39
+ for (let i = 0; i < images.length; i++) {
40
+ if (!images[i].complete) {
41
+ allImagesLoaded = false;
42
+ break;
43
+ }
44
+ }
45
+ if (allImagesLoaded) {
46
+ console.log('All images in iframe loaded successfully');
47
+ this.pageRenderComplete.emit(true);
48
+ this._isRenderComplete = true;
49
+ clearInterval(intervalTag);
50
+ }
51
+ }
52
+ }, 1000);
53
+ }
54
+ };
55
+ this.handleHyperlink = (payload) => {
56
+ console.log('handleHyperlink::', payload);
57
+ };
58
+ this.handleLoaded = (payload) => {
59
+ console.log('handleLoaded::', payload);
60
+ };
61
+ this.handleNavigation = (payload) => {
62
+ this.pageTotal = payload.epageCount;
63
+ this.cd.markForCheck();
64
+ };
65
+ }
66
+ ngAfterViewInit() {
67
+ setTimeout(() => {
68
+ this.createIframeWrapper();
69
+ }, 1000);
70
+ }
71
+ ngOnDestroy() {
72
+ if (this.viewer) {
73
+ this.clearView();
74
+ }
75
+ }
76
+ onPageIndexChange(num) {
77
+ if (this.viewer) {
78
+ this.viewer.navigateToPage(Navigation.EPAGE, num - 1);
79
+ }
80
+ }
81
+ print() {
82
+ if (this._isRenderComplete) {
83
+ this.iframeEl.contentWindow.print();
84
+ }
85
+ else {
86
+ console.warn('rending...');
87
+ }
88
+ }
89
+ refresh() {
90
+ setTimeout(() => {
91
+ this.createIframeWrapper();
92
+ }, 100);
93
+ }
94
+ createIframeWrapper() {
95
+ if (this.vivViewRef) {
96
+ this.clearView();
97
+ this.iframeEl = document.createElement('iframe');
98
+ this.iframeEl.height = this.height + '';
99
+ this.iframeEl.width = this.width + '';
100
+ this.iframeEl.style.border = '1px solid #ccc';
101
+ this.iframeEl.style.background = '#fff';
102
+ const template = `
103
+ <!DOCTYPE html>
104
+ <html data-vivliostyle-paginated="true">
105
+ <head>
106
+ <meta charset="utf-8" />
107
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
108
+ <base href="/" />
109
+ <title>${this.printTitle}</title>
110
+ <style>
111
+ html[data-vivliostyle-paginated] {
112
+ width: 100%;
113
+ height: 100%;
114
+ }
115
+ html[data-vivliostyle-paginated] body,
116
+ html[data-vivliostyle-paginated] [data-vivliostyle-viewer-viewport] {
117
+ width: 100% !important;
118
+ height: 100% !important;
119
+ background: #fff;
120
+ }
121
+ html[data-vivliostyle-paginated],
122
+ html[data-vivliostyle-paginated] body {
123
+ margin: 0;
124
+ padding: 0;
125
+ }
126
+ </style>
127
+ <style id="vivliostyle-page-rules"></style>
128
+ </head>
129
+ <body>
130
+ <div id="vivliostyle-viewer-viewport"></div>
131
+ </body>
132
+ </html>
133
+ `;
134
+ this.iframeEl.srcdoc = template;
135
+ this.vivViewRef.nativeElement.appendChild(this.iframeEl);
136
+ this.iframeEl.contentWindow.onbeforeprint = () => {
137
+ this.iframeEl.contentWindow.parent.document.title = this.printTitle;
138
+ };
139
+ this.iframeEl.contentWindow.onafterprint = () => {
140
+ this.iframeEl.contentWindow.parent.document.title = this._title;
141
+ };
142
+ this.createVivViewer();
143
+ }
144
+ }
145
+ createVivViewer() {
146
+ this.iframeEl.onload = () => {
147
+ const els = this._printElQueryList.toArray();
148
+ const templates = this.getVivTemplates(els);
149
+ const options = [];
150
+ templates.forEach((template) => {
151
+ const docBlob = new Blob([template], {
152
+ type: 'text/html',
153
+ });
154
+ const docURL = URL.createObjectURL(docBlob);
155
+ options.push({ url: docURL });
156
+ });
157
+ this.viewer = new CoreViewer({
158
+ viewportElement: this.iframeEl.contentWindow?.document.body
159
+ .firstElementChild,
160
+ }, {
161
+ pageViewMode: PageViewMode.SINGLE_PAGE,
162
+ pixelRatio: this.pixelRatio,
163
+ });
164
+ this.viewer.loadDocument(options);
165
+ this.createListener(this.viewer);
166
+ };
167
+ }
168
+ createListener(viewer) {
169
+ viewer.addListener('error', this.handleError);
170
+ viewer.addListener('readystatechange', this.handleReadyStateChange);
171
+ viewer.addListener('loaded', this.handleLoaded);
172
+ viewer.addListener('hyperlink', this.handleHyperlink);
173
+ viewer.addListener('nav', this.handleNavigation);
174
+ }
175
+ removeListeners(viewer) {
176
+ viewer.removeListener('error', this.handleError);
177
+ viewer.removeListener('readystatechange', this.handleReadyStateChange);
178
+ viewer.removeListener('loaded', this.handleLoaded);
179
+ viewer.removeListener('hyperlink', this.handleHyperlink);
180
+ viewer.removeListener('nav', this.handleNavigation);
181
+ }
182
+ getStyles(identifierStr) {
183
+ const stylesArray = [];
184
+ const styleElements = document.getElementsByTagName('style');
185
+ const length = styleElements.length;
186
+ let identifiers = [];
187
+ if (Array.isArray(identifierStr)) {
188
+ identifiers = [...identifierStr];
189
+ }
190
+ else {
191
+ identifiers = [identifierStr];
192
+ }
193
+ for (let index = 0; index < length; index++) {
194
+ identifiers.forEach((s) => {
195
+ if (styleElements[index].outerHTML.includes(s)) {
196
+ const formateStr = styleElements[index].outerHTML.replace(/\/\*[\s\S]*?\*\//g, '');
197
+ stylesArray.push(formateStr);
198
+ }
199
+ });
200
+ }
201
+ return stylesArray.join('\r\n');
202
+ }
203
+ getVivTemplates(directives) {
204
+ const templates = [];
205
+ directives.forEach((d) => {
206
+ let styles = '';
207
+ if (d.identifierStr || d.identifierStr.length > 0) {
208
+ styles = this.getStyles(d.identifierStr);
209
+ }
210
+ const html = `
211
+ <!DOCTYPE html>
212
+ <html>
213
+ <head>
214
+ <meta charset="utf-8" />
215
+ <title>${this.printTitle}</title>
216
+ <base href="/" />
217
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
218
+ ${d.customStyle}
219
+ ${styles}
220
+ </head>
221
+ <body>
222
+ ${d.elementRef.nativeElement.outerHTML}
223
+ </body>
224
+ </html>
225
+ `;
226
+ templates.push(html);
227
+ });
228
+ return templates;
229
+ }
230
+ clearView() {
231
+ if (this.viewer) {
232
+ this.removeListeners(this.viewer);
233
+ }
234
+ this.vivViewRef.nativeElement.innerHTML = '';
235
+ this.viewer = undefined;
236
+ this._isRenderComplete = false;
237
+ }
238
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzxPrintVComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
239
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: NzxPrintVComponent, selector: "nzx-print-v", inputs: { printTitle: "printTitle", width: "width", height: "height", enablePreview: "enablePreview", pixelRatio: "pixelRatio" }, outputs: { pageRenderComplete: "pageRenderComplete" }, queries: [{ propertyName: "_printElQueryList", predicate: NzxPrintContentDirective }], viewQueries: [{ propertyName: "vivViewRef", first: true, predicate: ["vivView"], descendants: true }], ngImport: i0, template: `
240
+ <ng-content select="[nzxPrintHeader]"></ng-content>
241
+
242
+ <div #vivView [ngStyle]="{ margin: '10px 0' }"></div>
243
+
244
+ <div nz-row nzJustify="end">
245
+ <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>
246
+ <nz-pagination
247
+ [nzPageIndex]="1"
248
+ [nzTotal]="pageTotal"
249
+ [nzPageSize]="1"
250
+ [nzSize]="'small'"
251
+ [nzShowTotal]="totalTemplate"
252
+ nzShowQuickJumper
253
+ (nzPageIndexChange)="onPageIndexChange($event)"
254
+ ></nz-pagination>
255
+ </div>
256
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "component", type: i3.NzPaginationComponent, selector: "nz-pagination", inputs: ["nzShowTotal", "nzItemRender", "nzSize", "nzPageSizeOptions", "nzShowSizeChanger", "nzShowQuickJumper", "nzSimple", "nzDisabled", "nzResponsive", "nzHideOnSinglePage", "nzTotal", "nzPageIndex", "nzPageSize"], outputs: ["nzPageSizeChange", "nzPageIndexChange"], exportAs: ["nzPagination"] }] }); }
257
+ }
258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzxPrintVComponent, decorators: [{
259
+ type: Component,
260
+ args: [{
261
+ selector: 'nzx-print-v',
262
+ template: `
263
+ <ng-content select="[nzxPrintHeader]"></ng-content>
264
+
265
+ <div #vivView [ngStyle]="{ margin: '10px 0' }"></div>
266
+
267
+ <div nz-row nzJustify="end">
268
+ <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>
269
+ <nz-pagination
270
+ [nzPageIndex]="1"
271
+ [nzTotal]="pageTotal"
272
+ [nzPageSize]="1"
273
+ [nzSize]="'small'"
274
+ [nzShowTotal]="totalTemplate"
275
+ nzShowQuickJumper
276
+ (nzPageIndexChange)="onPageIndexChange($event)"
277
+ ></nz-pagination>
278
+ </div>
279
+ `,
280
+ }]
281
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { printTitle: [{
282
+ type: Input
283
+ }], width: [{
284
+ type: Input
285
+ }], height: [{
286
+ type: Input
287
+ }], enablePreview: [{
288
+ type: Input
289
+ }], pixelRatio: [{
290
+ type: Input
291
+ }], pageRenderComplete: [{
292
+ type: Output
293
+ }], vivViewRef: [{
294
+ type: ViewChild,
295
+ args: ['vivView']
296
+ }], _printElQueryList: [{
297
+ type: ContentChildren,
298
+ args: [NzxPrintContentDirective]
299
+ }] } });
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnp4LXByaW50LXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wcmludC9uengtcHJpbnQtdi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdOLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksR0FHWixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQUV6RTs7R0FFRztBQXNCSCxNQUFNLE9BQU8sa0JBQWtCO0lBdUI5QixZQUFvQixFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXRCaEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUM1Qjs7V0FFRztRQUNNLFVBQUssR0FBRyxHQUFHLENBQUM7UUFDWixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2Qsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNkLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHM0QsY0FBUyxHQUFHLENBQUMsQ0FBQztRQU9OLFdBQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBRXhCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQXNIMUIsZ0JBQVcsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUM7UUFFTSwyQkFBc0IsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNyRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FB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QUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxTQUFTLENBQUM7SUFDbEIsQ0FBQztJQUVPLFNBQVM7UUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7OEdBeFFXLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDhRQWlCYix3QkFBd0Isb0lBcEMvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQlQ7OzJGQUVXLGtCQUFrQjtrQkFyQjlCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQlQ7aUJBQ0Q7c0ZBRVMsVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBTUMsVUFBVTtzQkFEakIsU0FBUzt1QkFBQyxTQUFTO2dCQUlaLGlCQUFpQjtzQkFEeEIsZUFBZTt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRBZnRlclZpZXdJbml0LFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0Q29tcG9uZW50LFxuXHRDb250ZW50Q2hpbGRyZW4sXG5cdEVsZW1lbnRSZWYsXG5cdEV2ZW50RW1pdHRlcixcblx0SW5wdXQsXG5cdE9uRGVzdHJveSxcblx0T3V0cHV0LFxuXHRRdWVyeUxpc3QsXG5cdFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHRDb3JlVmlld2VyLFxuXHROYXZpZ2F0aW9uLFxuXHRQYWdlVmlld01vZGUsXG5cdFBheWxvYWQsXG5cdFNpbmdsZURvY3VtZW50T3B0aW9ucyxcbn0gZnJvbSAnQHZpdmxpb3N0eWxlL2NvcmUnO1xuaW1wb3J0IHsgTnp4UHJpbnRDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9uengtcHJpbnQtY29udGVudC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIFZpdmxpb3N0eWxlIOaJk+WNsFxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduengtcHJpbnQtdicsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiW256eFByaW50SGVhZGVyXVwiPjwvbmctY29udGVudD5cblxuXHRcdDxkaXYgI3ZpdlZpZXcgW25nU3R5bGVdPVwieyBtYXJnaW46ICcxMHB4IDAnIH1cIj48L2Rpdj5cblxuXHRcdDxkaXYgbnotcm93IG56SnVzdGlmeT1cImVuZFwiPlxuXHRcdFx0PG5nLXRlbXBsYXRlICN0b3RhbFRlbXBsYXRlIGxldC10b3RhbD7lhbEge3sgdG90YWwgfX0g6aG1PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDxuei1wYWdpbmF0aW9uXG5cdFx0XHRcdFtuelBhZ2VJbmRleF09XCIxXCJcblx0XHRcdFx0W256VG90YWxdPVwicGFnZVRvdGFsXCJcblx0XHRcdFx0W256UGFnZVNpemVdPVwiMVwiXG5cdFx0XHRcdFtuelNpemVdPVwiJ3NtYWxsJ1wiXG5cdFx0XHRcdFtuelNob3dUb3RhbF09XCJ0b3RhbFRlbXBsYXRlXCJcblx0XHRcdFx0bnpTaG93UXVpY2tKdW1wZXJcblx0XHRcdFx0KG56UGFnZUluZGV4Q2hhbmdlKT1cIm9uUGFnZUluZGV4Q2hhbmdlKCRldmVudClcIlxuXHRcdFx0PjwvbnotcGFnaW5hdGlvbj5cblx0XHQ8L2Rpdj5cblx0YCxcbn0pXG5leHBvcnQgY2xhc3MgTnp4UHJpbnRWQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcblx0QElucHV0KCkgcHJpbnRUaXRsZSA9ICdwZGYnO1xuXHQvKipcblx0ICogYTQgNzk0cHgxMTIzcHhcblx0ICovXG5cdEBJbnB1dCgpIHdpZHRoID0gODE0O1xuXHRASW5wdXQoKSBoZWlnaHQgPSAxMTQzO1xuXHRASW5wdXQoKSBlbmFibGVQcmV2aWV3ID0gdHJ1ZTtcblx0QElucHV0KCkgcGl4ZWxSYXRpbyA9IDg7XG5cdEBPdXRwdXQoKSBwYWdlUmVuZGVyQ29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cblx0dmlld2VyOiBDb3JlVmlld2VyIHwgdW5kZWZpbmVkO1xuXHRwYWdlVG90YWwgPSAwO1xuXG5cdEBWaWV3Q2hpbGQoJ3ZpdlZpZXcnKVxuXHRwcml2YXRlIHZpdlZpZXdSZWYhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuXHRAQ29udGVudENoaWxkcmVuKE56eFByaW50Q29udGVudERpcmVjdGl2ZSlcblx0cHJpdmF0ZSBfcHJpbnRFbFF1ZXJ5TGlzdCE6IFF1ZXJ5TGlzdDxOenhQcmludENvbnRlbnREaXJlY3RpdmU+O1xuXHRwcml2YXRlIF90aXRsZSA9IGRvY3VtZW50LnRpdGxlO1xuXHRwcml2YXRlIGlmcmFtZUVsITogSFRNTElGcmFtZUVsZW1lbnQ7XG5cdHByaXZhdGUgX2lzUmVuZGVyQ29tcGxldGUgPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLmNyZWF0ZUlmcmFtZVdyYXBwZXIoKTtcblx0XHR9LCAxMDAwKTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnZpZXdlcikge1xuXHRcdFx0dGhpcy5jbGVhclZpZXcoKTtcblx0XHR9XG5cdH1cblxuXHRvblBhZ2VJbmRleENoYW5nZShudW06IG51bWJlcikge1xuXHRcdGlmICh0aGlzLnZpZXdlcikge1xuXHRcdFx0dGhpcy52aWV3ZXIubmF2aWdhdGVUb1BhZ2UoTmF2aWdhdGlvbi5FUEFHRSwgbnVtIC0gMSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpbnQoKSB7XG5cdFx0aWYgKHRoaXMuX2lzUmVuZGVyQ29tcGxldGUpIHtcblx0XHRcdHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdyEucHJpbnQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc29sZS53YXJuKCdyZW5kaW5nLi4uJyk7XG5cdFx0fVxuXHR9XG5cblx0cmVmcmVzaCgpIHtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuY3JlYXRlSWZyYW1lV3JhcHBlcigpO1xuXHRcdH0sIDEwMCk7XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZUlmcmFtZVdyYXBwZXIoKSB7XG5cdFx0aWYgKHRoaXMudml2Vmlld1JlZikge1xuXHRcdFx0dGhpcy5jbGVhclZpZXcoKTtcblxuXHRcdFx0dGhpcy5pZnJhbWVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuXHRcdFx0dGhpcy5pZnJhbWVFbC5oZWlnaHQgPSB0aGlzLmhlaWdodCArICcnO1xuXHRcdFx0dGhpcy5pZnJhbWVFbC53aWR0aCA9IHRoaXMud2lkdGggKyAnJztcblx0XHRcdHRoaXMuaWZyYW1lRWwuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjY2NjJztcblx0XHRcdHRoaXMuaWZyYW1lRWwuc3R5bGUuYmFja2dyb3VuZCA9ICcjZmZmJztcblxuXHRcdFx0Y29uc3QgdGVtcGxhdGUgPSBgXG4gICAgICAgIDwhRE9DVFlQRSBodG1sPlxuICAgICAgICA8aHRtbCBkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZD1cInRydWVcIj5cbiAgICAgICAgICA8aGVhZD5cbiAgICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiIC8+XG4gICAgICAgICAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMFwiIC8+XG4gICAgICAgICAgICA8YmFzZSBocmVmPVwiL1wiIC8+XG4gICAgICAgICAgICA8dGl0bGU+JHt0aGlzLnByaW50VGl0bGV9PC90aXRsZT5cbiAgICAgICAgICAgIDxzdHlsZT5cbiAgICAgICAgICAgICAgaHRtbFtkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZF0ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBodG1sW2RhdGEtdml2bGlvc3R5bGUtcGFnaW5hdGVkXSBib2R5LFxuICAgICAgICAgICAgICBodG1sW2RhdGEtdml2bGlvc3R5bGUtcGFnaW5hdGVkXSBbZGF0YS12aXZsaW9zdHlsZS12aWV3ZXItdmlld3BvcnRdIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaHRtbFtkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZF0sXG4gICAgICAgICAgICAgIGh0bWxbZGF0YS12aXZsaW9zdHlsZS1wYWdpbmF0ZWRdIGJvZHkge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3N0eWxlPlxuICAgICAgICAgICAgPHN0eWxlIGlkPVwidml2bGlvc3R5bGUtcGFnZS1ydWxlc1wiPjwvc3R5bGU+XG4gICAgICAgICAgPC9oZWFkPlxuICAgICAgICAgIDxib2R5PlxuICAgICAgICAgICAgPGRpdiBpZD1cInZpdmxpb3N0eWxlLXZpZXdlci12aWV3cG9ydFwiPjwvZGl2PlxuICAgICAgICAgIDwvYm9keT5cbiAgICAgICAgPC9odG1sPlxuICAgICAgYDtcblxuXHRcdFx0dGhpcy5pZnJhbWVFbC5zcmNkb2MgPSB0ZW1wbGF0ZTtcblx0XHRcdHRoaXMudml2Vmlld1JlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaWZyYW1lRWwpO1xuXHRcdFx0dGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93IS5vbmJlZm9yZXByaW50ID0gKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3chLnBhcmVudC5kb2N1bWVudC50aXRsZSA9IHRoaXMucHJpbnRUaXRsZTtcblx0XHRcdH07XG5cdFx0XHR0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3chLm9uYWZ0ZXJwcmludCA9ICgpID0+IHtcblx0XHRcdFx0dGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93IS5wYXJlbnQuZG9jdW1lbnQudGl0bGUgPSB0aGlzLl90aXRsZTtcblx0XHRcdH07XG5cdFx0XHR0aGlzLmNyZWF0ZVZpdlZpZXdlcigpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlVml2Vmlld2VyKCkge1xuXHRcdHRoaXMuaWZyYW1lRWwub25sb2FkID0gKCkgPT4ge1xuXHRcdFx0Y29uc3QgZWxzOiBOenhQcmludENvbnRlbnREaXJlY3RpdmVbXSA9IHRoaXMuX3ByaW50RWxRdWVyeUxpc3QudG9BcnJheSgpO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVzID0gdGhpcy5nZXRWaXZUZW1wbGF0ZXMoZWxzKTtcblx0XHRcdGNvbnN0IG9wdGlvbnM6IFNpbmdsZURvY3VtZW50T3B0aW9uc1tdID0gW107XG5cdFx0XHR0ZW1wbGF0ZXMuZm9yRWFjaCgodGVtcGxhdGUpID0+IHtcblx0XHRcdFx0Y29uc3QgZG9jQmxvYiA9IG5ldyBCbG9iKFt0ZW1wbGF0ZV0sIHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dC9odG1sJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGNvbnN0IGRvY1VSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZG9jQmxvYik7XG5cdFx0XHRcdG9wdGlvbnMucHVzaCh7IHVybDogZG9jVVJMIH0pO1xuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLnZpZXdlciA9IG5ldyBDb3JlVmlld2VyKFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dmlld3BvcnRFbGVtZW50OiB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3c/LmRvY3VtZW50LmJvZHlcblx0XHRcdFx0XHRcdC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHBhZ2VWaWV3TW9kZTogUGFnZVZpZXdNb2RlLlNJTkdMRV9QQUdFLFxuXHRcdFx0XHRcdHBpeGVsUmF0aW86IHRoaXMucGl4ZWxSYXRpbyxcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHRcdHRoaXMudmlld2VyLmxvYWREb2N1bWVudChvcHRpb25zKTtcblx0XHRcdHRoaXMuY3JlYXRlTGlzdGVuZXIodGhpcy52aWV3ZXIpO1xuXHRcdH07XG5cdH1cblxuXHRwcml2YXRlIGhhbmRsZUVycm9yID0gKHBheWxvYWQ6IFBheWxvYWQpID0+IHtcblx0XHRjb25zb2xlLmxvZygnZXJyb3I6OicsIHBheWxvYWQpO1xuXHR9O1xuXG5cdHByaXZhdGUgaGFuZGxlUmVhZHlTdGF0ZUNoYW5nZSA9IChwYXlsb2FkOiBQYXlsb2FkKSA9PiB7XG5cdFx0dGhpcy5faXNSZW5kZXJDb21wbGV0ZSA9IGZhbHNlO1xuXHRcdHRoaXMucGFnZVJlbmRlckNvbXBsZXRlLmVtaXQoZmFsc2UpO1xuXHRcdGlmICh0aGlzLnZpZXdlciAmJiB0aGlzLnZpZXdlci5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7XG5cdFx0XHRjb25zdCBpbnRlcnZhbFRhZyA9IHNldEludGVydmFsKCgpID0+IHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHRoaXMuaWZyYW1lRWwgJiZcblx0XHRcdFx0XHR0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cgJiZcblx0XHRcdFx0XHR0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Y29uc3QgaW1hZ2VzID1cblx0XHRcdFx0XHRcdHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJyk7XG5cblx0XHRcdFx0XHRsZXQgYWxsSW1hZ2VzTG9hZGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGltYWdlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0aWYgKCFpbWFnZXNbaV0uY29tcGxldGUpIHtcblx0XHRcdFx0XHRcdFx0YWxsSW1hZ2VzTG9hZGVkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoYWxsSW1hZ2VzTG9hZGVkKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnQWxsIGltYWdlcyBpbiBpZnJhbWUgbG9hZGVkIHN1Y2Nlc3NmdWxseScpO1xuXHRcdFx0XHRcdFx0dGhpcy5wYWdlUmVuZGVyQ29tcGxldGUuZW1pdCh0cnVlKTtcblx0XHRcdFx0XHRcdHRoaXMuX2lzUmVuZGVyQ29tcGxldGUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbChpbnRlcnZhbFRhZyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LCAxMDAwKTtcblx0XHR9XG5cdH07XG5cblx0cHJpdmF0ZSBoYW5kbGVIeXBlcmxpbmsgPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuXHRcdGNvbnNvbGUubG9nKCdoYW5kbGVIeXBlcmxpbms6OicsIHBheWxvYWQpO1xuXHR9O1xuXG5cdHByaXZhdGUgaGFuZGxlTG9hZGVkID0gKHBheWxvYWQ6IFBheWxvYWQpID0+IHtcblx0XHRjb25zb2xlLmxvZygnaGFuZGxlTG9hZGVkOjonLCBwYXlsb2FkKTtcblx0fTtcblxuXHRwcml2YXRlIGhhbmRsZU5hdmlnYXRpb24gPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuXHRcdHRoaXMucGFnZVRvdGFsID0gcGF5bG9hZC5lcGFnZUNvdW50O1xuXHRcdHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG5cdH07XG5cblx0cHJpdmF0ZSBjcmVhdGVMaXN0ZW5lcih2aWV3ZXI6IENvcmVWaWV3ZXIpIHtcblx0XHR2aWV3ZXIuYWRkTGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5oYW5kbGVFcnJvcik7XG5cdFx0dmlld2VyLmFkZExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgdGhpcy5oYW5kbGVSZWFkeVN0YXRlQ2hhbmdlKTtcblx0XHR2aWV3ZXIuYWRkTGlzdGVuZXIoJ2xvYWRlZCcsIHRoaXMuaGFuZGxlTG9hZGVkKTtcblx0XHR2aWV3ZXIuYWRkTGlzdGVuZXIoJ2h5cGVybGluaycsIHRoaXMuaGFuZGxlSHlwZXJsaW5rKTtcblx0XHR2aWV3ZXIuYWRkTGlzdGVuZXIoJ25hdicsIHRoaXMuaGFuZGxlTmF2aWdhdGlvbik7XG5cdH1cblxuXHRwcml2YXRlIHJlbW92ZUxpc3RlbmVycyh2aWV3ZXI6IENvcmVWaWV3ZXIpIHtcblx0XHR2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5oYW5kbGVFcnJvcik7XG5cdFx0dmlld2VyLnJlbW92ZUxpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgdGhpcy5oYW5kbGVSZWFkeVN0YXRlQ2hhbmdlKTtcblx0XHR2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ2xvYWRlZCcsIHRoaXMuaGFuZGxlTG9hZGVkKTtcblx0XHR2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ2h5cGVybGluaycsIHRoaXMuaGFuZGxlSHlwZXJsaW5rKTtcblx0XHR2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ25hdicsIHRoaXMuaGFuZGxlTmF2aWdhdGlvbik7XG5cdH1cblxuXHRwcml2YXRlIGdldFN0eWxlcyhpZGVudGlmaWVyU3RyOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZyB7XG5cdFx0Y29uc3Qgc3R5bGVzQXJyYXk6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgc3R5bGVFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScpO1xuXHRcdGNvbnN0IGxlbmd0aCA9IHN0eWxlRWxlbWVudHMubGVuZ3RoO1xuXHRcdGxldCBpZGVudGlmaWVyczogc3RyaW5nW10gPSBbXTtcblx0XHRpZiAoQXJyYXkuaXNBcnJheShpZGVudGlmaWVyU3RyKSkge1xuXHRcdFx0aWRlbnRpZmllcnMgPSBbLi4uaWRlbnRpZmllclN0cl07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlkZW50aWZpZXJzID0gW2lkZW50aWZpZXJTdHJdO1xuXHRcdH1cblx0XHRmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG5cdFx0XHRpZGVudGlmaWVycy5mb3JFYWNoKChzKSA9PiB7XG5cdFx0XHRcdGlmIChzdHlsZUVsZW1lbnRzW2luZGV4XS5vdXRlckhUTUwuaW5jbHVkZXMocykpIHtcblx0XHRcdFx0XHRjb25zdCBmb3JtYXRlU3RyID0gc3R5bGVFbGVtZW50c1tpbmRleF0ub3V0ZXJIVE1MLnJlcGxhY2UoXG5cdFx0XHRcdFx0XHQvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nLFxuXHRcdFx0XHRcdFx0Jydcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHN0eWxlc0FycmF5LnB1c2goZm9ybWF0ZVN0cik7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gc3R5bGVzQXJyYXkuam9pbignXFxyXFxuJyk7XG5cdH1cblxuXHRwcml2YXRlIGdldFZpdlRlbXBsYXRlcyhkaXJlY3RpdmVzOiBOenhQcmludENvbnRlbnREaXJlY3RpdmVbXSkge1xuXHRcdGNvbnN0IHRlbXBsYXRlczogc3RyaW5nW10gPSBbXTtcblx0XHRkaXJlY3RpdmVzLmZvckVhY2goKGQpID0+IHtcblx0XHRcdGxldCBzdHlsZXMgPSAnJztcblx0XHRcdGlmIChkLmlkZW50aWZpZXJTdHIgfHwgZC5pZGVudGlmaWVyU3RyLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0c3R5bGVzID0gdGhpcy5nZXRTdHlsZXMoZC5pZGVudGlmaWVyU3RyKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgaHRtbCA9IGBcbiAgICAgICAgICA8IURPQ1RZUEUgaHRtbD5cbiAgICAgICAgICA8aHRtbD5cbiAgICAgICAgICAgIDxoZWFkPlxuICAgICAgICAgICAgPG1ldGEgY2hhcnNldD1cInV0Zi04XCIgLz5cbiAgICAgICAgICAgIDx0aXRsZT4ke3RoaXMucHJpbnRUaXRsZX08L3RpdGxlPlxuICAgICAgICAgICAgPGJhc2UgaHJlZj1cIi9cIiAvPlxuICAgICAgICAgICAgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCIgLz5cbiAgICAgICAgICAgICAke2QuY3VzdG9tU3R5bGV9XG4gICAgICAgICAgICAgJHtzdHlsZXN9XG4gICAgICAgICAgICA8L2hlYWQ+XG4gICAgICAgICAgICA8Ym9keT5cbiAgICAgICAgICAgICAgJHtkLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vdXRlckhUTUx9XG4gICAgICAgICAgICA8L2JvZHk+XG4gICAgICAgICAgPC9odG1sPlxuICAgICAgICBgO1xuXHRcdFx0dGVtcGxhdGVzLnB1c2goaHRtbCk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gdGVtcGxhdGVzO1xuXHR9XG5cblx0cHJpdmF0ZSBjbGVhclZpZXcoKSB7XG5cdFx0aWYgKHRoaXMudmlld2VyKSB7XG5cdFx0XHR0aGlzLnJlbW92ZUxpc3RlbmVycyh0aGlzLnZpZXdlcik7XG5cdFx0fVxuXHRcdHRoaXMudml2Vmlld1JlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuXHRcdHRoaXMudmlld2VyID0gdW5kZWZpbmVkO1xuXHRcdHRoaXMuX2lzUmVuZGVyQ29tcGxldGUgPSBmYWxzZTtcblx0fVxufVxuIl19
@@ -0,0 +1,189 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Component, ContentChild, ElementRef, Inject, Input, ViewChild, } from '@angular/core';
3
+ import { getElementByTag } from 'ng-zorro-antd-extension/util';
4
+ import { NzxPrintContentDirective } from './nzx-print-content.directive';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/cdk/platform";
7
+ /**
8
+ * 使用Paged.js打印
9
+ */
10
+ export class NzxPrintComponent {
11
+ constructor(platform, document) {
12
+ this.platform = platform;
13
+ this.document = document;
14
+ this.printTitle = 'pdf';
15
+ /**
16
+ * a4 794px1123px
17
+ */
18
+ this.width = 814;
19
+ this.height = 1143;
20
+ this.enablePreview = true;
21
+ this.identifierStr = '';
22
+ this.pagedCDN = '';
23
+ this._title = this.document.title;
24
+ this.afterPrint = () => {
25
+ this.iframeEl.contentWindow.parent.document.title = this._title;
26
+ };
27
+ this.beforePrint = () => {
28
+ this.iframeEl.contentWindow.parent.document.title = this.printTitle;
29
+ };
30
+ }
31
+ ngOnInit() {
32
+ if (!this.pagedCDN) {
33
+ throw new Error('pagedCDN is required');
34
+ }
35
+ }
36
+ ngAfterViewInit() {
37
+ this.render();
38
+ }
39
+ print() {
40
+ if (this.iframeEl.contentWindow) {
41
+ this.iframeEl.contentWindow.focus();
42
+ this.iframeEl.contentWindow.print();
43
+ }
44
+ }
45
+ refresh() {
46
+ setTimeout(() => {
47
+ this.render();
48
+ }, 100);
49
+ }
50
+ render() {
51
+ this.iframeEl = this.document.createElement('iframe');
52
+ this.iframeEl.height = this.height + '';
53
+ this.iframeEl.width = this.width + '';
54
+ this.iframeEl.style.border = '1px solid #ccc';
55
+ this.iframeEl.style.background = '#fff';
56
+ if (!this.enablePreview) {
57
+ this.iframeEl.style.visibility = 'hidden';
58
+ if (this.platform.FIREFOX) {
59
+ this.iframeEl.setAttribute('style', 'width: 1px; height: 100px; position: fixed; left: 0; top: 0; opacity: 0; border-width: 0; margin: 0; padding: 0');
60
+ }
61
+ else {
62
+ this.iframeEl.setAttribute('style', 'visibility: hidden; height: 0; width: 0; position: absolute; border: 0');
63
+ }
64
+ }
65
+ if (this.containerRef) {
66
+ this.containerRef.nativeElement.innerHTML = '';
67
+ this.containerRef.nativeElement.appendChild(this.iframeEl);
68
+ }
69
+ if (this.iframeEl.contentWindow) {
70
+ this.iframeEl.contentWindow.document.open();
71
+ this.iframeEl.contentWindow.document.write(this.getTemplateStr());
72
+ this.iframeEl.contentWindow.document.close();
73
+ // chorme bug
74
+ this.iframeEl.contentWindow.onbeforeprint = this.beforePrint;
75
+ this.iframeEl.contentWindow.onafterprint = this.afterPrint;
76
+ }
77
+ }
78
+ getTemplateStr() {
79
+ const styles = getElementByTag('style', this.identifierStr);
80
+ const scripts = `
81
+ <script src="${this.pagedCDN}"></script>
82
+ <script>
83
+ class RepeatingTableHeaders extends Paged.Handler {
84
+ constructor(chunker, polisher, caller) {
85
+ super(chunker, polisher, caller);
86
+ }
87
+
88
+ afterPageLayout(pageElement, page, breakToken, chunker) {
89
+ let tables = pageElement.querySelectorAll('table[data-split-from]');
90
+ tables.forEach((table) => {
91
+ let ref = table.dataset.ref;
92
+ let sourceTable = chunker.source.querySelector(
93
+ "[data-ref='" + ref + "']"
94
+ );
95
+ let header = sourceTable.querySelector('thead');
96
+ if (header) {
97
+ let clonedHeader = header.cloneNode(true);
98
+ table.insertBefore(clonedHeader, table.firstChild);
99
+ }
100
+ });
101
+ }
102
+ }
103
+ Paged.registerHandlers(RepeatingTableHeaders);
104
+ </script>
105
+ `;
106
+ const html = `
107
+ <!DOCTYPE html>
108
+ <html>
109
+ <head>
110
+ <meta charset="utf-8" />
111
+ <title>${this.printTitle}</title>
112
+ <base href="/" />
113
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
114
+ <link
115
+ rel="preconnect"
116
+ href="https://winkong-frontend.oss-cn-qingdao.aliyuncs.com"
117
+ />
118
+ <style>
119
+ ::-webkit-scrollbar {
120
+ width: 5px;
121
+ height: 5px;
122
+ }
123
+ ::-webkit-scrollbar-thumb {
124
+ background-color: #999;
125
+ -webkit-border-radius: 5px;
126
+ border-radius: 5px;
127
+ }
128
+ ::-webkit-scrollbar-thumb:vertical:hover {
129
+ background-color: #666;
130
+ }
131
+ ::-webkit-scrollbar-thumb:vertical:active {
132
+ background-color: #666;
133
+ }
134
+ ::-webkit-scrollbar-button {
135
+ display: none;
136
+ }
137
+ ::-webkit-scrollbar-track {
138
+ background-color: #f1f1f1;
139
+ }
140
+ </style>
141
+
142
+ ${styles}
143
+ ${scripts}
144
+ </head>
145
+ <body>
146
+ ${this._printEl.nativeElement.outerHTML}
147
+ </body>
148
+ </html>
149
+ `;
150
+ return html;
151
+ }
152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzxPrintComponent, deps: [{ token: i1.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: NzxPrintComponent, selector: "nzx-print", inputs: { printTitle: "printTitle", width: "width", height: "height", enablePreview: "enablePreview", identifierStr: "identifierStr", pagedCDN: "pagedCDN" }, queries: [{ propertyName: "_printEl", first: true, predicate: NzxPrintContentDirective, descendants: true, read: ElementRef, static: true }], viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["iframeContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: `
154
+ <ng-content select="[nzxPrintHeader]"></ng-content>
155
+ <div #iframeContainer></div>
156
+ `, isInline: true }); }
157
+ }
158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzxPrintComponent, decorators: [{
159
+ type: Component,
160
+ args: [{
161
+ selector: 'nzx-print',
162
+ template: `
163
+ <ng-content select="[nzxPrintHeader]"></ng-content>
164
+ <div #iframeContainer></div>
165
+ `,
166
+ }]
167
+ }], ctorParameters: () => [{ type: i1.Platform }, { type: Document, decorators: [{
168
+ type: Inject,
169
+ args: [DOCUMENT]
170
+ }] }], propDecorators: { printTitle: [{
171
+ type: Input
172
+ }], width: [{
173
+ type: Input
174
+ }], height: [{
175
+ type: Input
176
+ }], enablePreview: [{
177
+ type: Input
178
+ }], identifierStr: [{
179
+ type: Input
180
+ }], pagedCDN: [{
181
+ type: Input
182
+ }], containerRef: [{
183
+ type: ViewChild,
184
+ args: ['iframeContainer', { read: ElementRef, static: true }]
185
+ }], _printEl: [{
186
+ type: ContentChild,
187
+ args: [NzxPrintContentDirective, { read: ElementRef, static: true }]
188
+ }] } });
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnp4LXByaW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvcHJpbnQvbnp4LXByaW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBRVosVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBRXpFOztHQUVHO0FBUUgsTUFBTSxPQUFPLGlCQUFpQjtJQTBCN0IsWUFDUyxRQUFrQixFQUNBLFFBQWtCO1FBRHBDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDQSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBM0JwQyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzVCOztXQUVHO1FBQ00sVUFBSyxHQUFHLEdBQUcsQ0FBQztRQUNaLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixrQkFBYSxHQUFzQixFQUFFLENBQUM7UUFDdEMsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQVFmLFdBQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUU3QixlQUFVLEdBQUcsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbEUsQ0FBQyxDQUFDO1FBQ00sZ0JBQVcsR0FBRyxHQUFHLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFjLENBQUMsTUFBTSxDQUFD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Ozs7Ozs7Ozs7Ozs7Ozs7T0F3QjdCLENBQUM7UUFFTixNQUFNLElBQUksR0FBRzs7Ozs7bUJBS0ksSUFBSSxDQUFDLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Y0ErQnBCLE1BQU07Y0FDTixPQUFPOzs7Y0FHUCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTOzs7T0FHNUMsQ0FBQztRQUVOLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQzs4R0F0S1csaUJBQWlCLDBDQTRCcEIsUUFBUTtrR0E1QkwsaUJBQWlCLHFQQWNmLHdCQUF3QiwyQkFBVSxVQUFVLHVJQUhwQixVQUFVLDJDQWhCdEM7OztFQUdUOzsyRkFFVyxpQkFBaUI7a0JBUDdCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRTs7O0VBR1Q7aUJBQ0Q7OzBCQTZCRSxNQUFNOzJCQUFDLFFBQVE7eUNBM0JSLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRSxZQUFZO3NCQURuQixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl4RCxRQUFRO3NCQURmLFlBQVk7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRBZnRlclZpZXdJbml0LFxuXHRDb21wb25lbnQsXG5cdENvbnRlbnRDaGlsZCxcblx0RGlyZWN0aXZlLFxuXHRFbGVtZW50UmVmLFxuXHRJbmplY3QsXG5cdElucHV0LFxuXHRPbkluaXQsXG5cdFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRFbGVtZW50QnlUYWcgfSBmcm9tICduZy16b3Jyby1hbnRkLWV4dGVuc2lvbi91dGlsJztcbmltcG9ydCB7IE56eFByaW50Q29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vbnp4LXByaW50LWNvbnRlbnQuZGlyZWN0aXZlJztcblxuLyoqXG4gKiDkvb/nlKhQYWdlZC5qc+aJk+WNsFxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduengtcHJpbnQnLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZy1jb250ZW50IHNlbGVjdD1cIltuenhQcmludEhlYWRlcl1cIj48L25nLWNvbnRlbnQ+XG5cdFx0PGRpdiAjaWZyYW1lQ29udGFpbmVyPjwvZGl2PlxuXHRgLFxufSlcbmV4cG9ydCBjbGFzcyBOenhQcmludENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cdEBJbnB1dCgpIHByaW50VGl0bGUgPSAncGRmJztcblx0LyoqXG5cdCAqIGE0IDc5NHB4MTEyM3B4XG5cdCAqL1xuXHRASW5wdXQoKSB3aWR0aCA9IDgxNDtcblx0QElucHV0KCkgaGVpZ2h0ID0gMTE0Mztcblx0QElucHV0KCkgZW5hYmxlUHJldmlldyA9IHRydWU7XG5cdEBJbnB1dCgpIGlkZW50aWZpZXJTdHI6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XG5cdEBJbnB1dCgpIHBhZ2VkQ0ROID0gJyc7XG5cblx0QFZpZXdDaGlsZCgnaWZyYW1lQ29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcblx0cHJpdmF0ZSBjb250YWluZXJSZWYhOiBFbGVtZW50UmVmO1xuXG5cdEBDb250ZW50Q2hpbGQoTnp4UHJpbnRDb250ZW50RGlyZWN0aXZlLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIF9wcmludEVsITogRWxlbWVudFJlZjtcblx0cHJpdmF0ZSBpZnJhbWVFbCE6IEhUTUxJRnJhbWVFbGVtZW50O1xuXHRwcml2YXRlIF90aXRsZSA9IHRoaXMuZG9jdW1lbnQudGl0bGU7XG5cblx0cHJpdmF0ZSBhZnRlclByaW50ID0gKCkgPT4ge1xuXHRcdHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdyEucGFyZW50LmRvY3VtZW50LnRpdGxlID0gdGhpcy5fdGl0bGU7XG5cdH07XG5cdHByaXZhdGUgYmVmb3JlUHJpbnQgPSAoKSA9PiB7XG5cdFx0dGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93IS5wYXJlbnQuZG9jdW1lbnQudGl0bGUgPSB0aGlzLnByaW50VGl0bGU7XG5cdH07XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXG5cdFx0QEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnRcblx0KSB7fVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5wYWdlZENETikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdwYWdlZENETiBpcyByZXF1aXJlZCcpO1xuXHRcdH1cblx0fVxuXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLnJlbmRlcigpO1xuXHR9XG5cblx0cHJpbnQoKSB7XG5cdFx0aWYgKHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdykge1xuXHRcdFx0dGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93LmZvY3VzKCk7XG5cdFx0XHR0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cucHJpbnQoKTtcblx0XHR9XG5cdH1cblxuXHRyZWZyZXNoKCkge1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5yZW5kZXIoKTtcblx0XHR9LCAxMDApO1xuXHR9XG5cblx0cHJpdmF0ZSByZW5kZXIoKSB7XG5cdFx0dGhpcy5pZnJhbWVFbCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG5cdFx0dGhpcy5pZnJhbWVFbC5oZWlnaHQgPSB0aGlzLmhlaWdodCArICcnO1xuXHRcdHRoaXMuaWZyYW1lRWwud2lkdGggPSB0aGlzLndpZHRoICsgJyc7XG5cdFx0dGhpcy5pZnJhbWVFbC5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNjY2MnO1xuXHRcdHRoaXMuaWZyYW1lRWwuc3R5bGUuYmFja2dyb3VuZCA9ICcjZmZmJztcblxuXHRcdGlmICghdGhpcy5lbmFibGVQcmV2aWV3KSB7XG5cdFx0XHR0aGlzLmlmcmFtZUVsLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcblx0XHRcdGlmICh0aGlzLnBsYXRmb3JtLkZJUkVGT1gpIHtcblx0XHRcdFx0dGhpcy5pZnJhbWVFbC5zZXRBdHRyaWJ1dGUoXG5cdFx0XHRcdFx0J3N0eWxlJyxcblx0XHRcdFx0XHQnd2lkdGg6IDFweDsgaGVpZ2h0OiAxMDBweDsgcG9zaXRpb246IGZpeGVkOyBsZWZ0OiAwOyB0b3A6IDA7IG9wYWNpdHk6IDA7IGJvcmRlci13aWR0aDogMDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwJ1xuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5pZnJhbWVFbC5zZXRBdHRyaWJ1dGUoXG5cdFx0XHRcdFx0J3N0eWxlJyxcblx0XHRcdFx0XHQndmlzaWJpbGl0eTogaGlkZGVuOyBoZWlnaHQ6IDA7IHdpZHRoOiAwOyBwb3NpdGlvbjogYWJzb2x1dGU7IGJvcmRlcjogMCdcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHRoaXMuY29udGFpbmVyUmVmKSB7XG5cdFx0XHR0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuXHRcdFx0dGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmlmcmFtZUVsKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93KSB7XG5cdFx0XHR0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQub3BlbigpO1xuXHRcdFx0dGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93LmRvY3VtZW50LndyaXRlKHRoaXMuZ2V0VGVtcGxhdGVTdHIoKSk7XG5cdFx0XHR0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuY2xvc2UoKTtcblx0XHRcdC8vIGNob3JtZSBidWdcblx0XHRcdHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdy5vbmJlZm9yZXByaW50ID0gdGhpcy5iZWZvcmVQcmludDtcblx0XHRcdHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdy5vbmFmdGVycHJpbnQgPSB0aGlzLmFmdGVyUHJpbnQ7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBnZXRUZW1wbGF0ZVN0cigpIHtcblx0XHRjb25zdCBzdHlsZXMgPSBnZXRFbGVtZW50QnlUYWcoJ3N0eWxlJywgdGhpcy5pZGVudGlmaWVyU3RyKTtcblxuXHRcdGNvbnN0IHNjcmlwdHMgPSBgXG4gICAgICAgIDxzY3JpcHQgc3JjPVwiJHt0aGlzLnBhZ2VkQ0ROfVwiPjwvc2NyaXB0PlxuICAgICAgICA8c2NyaXB0PlxuICAgICAgICAgIGNsYXNzIFJlcGVhdGluZ1RhYmxlSGVhZGVycyBleHRlbmRzIFBhZ2VkLkhhbmRsZXIge1xuICAgICAgICAgICAgY29uc3RydWN0b3IoY2h1bmtlciwgcG9saXNoZXIsIGNhbGxlcikge1xuICAgICAgICAgICAgICBzdXBlcihjaHVua2VyLCBwb2xpc2hlciwgY2FsbGVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWZ0ZXJQYWdlTGF5b3V0KHBhZ2VFbGVtZW50LCBwYWdlLCBicmVha1Rva2VuLCBjaHVua2VyKSB7XG4gICAgICAgICAgICAgIGxldCB0YWJsZXMgPSBwYWdlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZVtkYXRhLXNwbGl0LWZyb21dJyk7XG4gICAgICAgICAgICAgIHRhYmxlcy5mb3JFYWNoKCh0YWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByZWYgPSB0YWJsZS5kYXRhc2V0LnJlZjtcbiAgICAgICAgICAgICAgICBsZXQgc291cmNlVGFibGUgPSBjaHVua2VyLnNvdXJjZS5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgXCJbZGF0YS1yZWY9J1wiICsgcmVmICsgXCInXVwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBsZXQgaGVhZGVyID0gc291cmNlVGFibGUucXVlcnlTZWxlY3RvcigndGhlYWQnKTtcbiAgICAgICAgICAgICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgICBsZXQgY2xvbmVkSGVhZGVyID0gaGVhZGVyLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgIHRhYmxlLmluc2VydEJlZm9yZShjbG9uZWRIZWFkZXIsIHRhYmxlLmZpcnN0Q2hpbGQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIFBhZ2VkLnJlZ2lzdGVySGFuZGxlcnMoUmVwZWF0aW5nVGFibGVIZWFkZXJzKTtcbiAgICAgICAgPC9zY3JpcHQ+XG4gICAgICBgO1xuXG5cdFx0Y29uc3QgaHRtbCA9IGBcbiAgICAgICAgPCFET0NUWVBFIGh0bWw+XG4gICAgICAgIDxodG1sPlxuICAgICAgICAgIDxoZWFkPlxuICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiIC8+XG4gICAgICAgICAgPHRpdGxlPiR7dGhpcy5wcmludFRpdGxlfTwvdGl0bGU+XG4gICAgICAgICAgPGJhc2UgaHJlZj1cIi9cIiAvPlxuICAgICAgICAgIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MVwiIC8+XG4gICAgICAgICAgPGxpbmtcbiAgICAgICAgICAgIHJlbD1cInByZWNvbm5lY3RcIlxuICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vd2lua29uZy1mcm9udGVuZC5vc3MtY24tcWluZ2Rhby5hbGl5dW5jcy5jb21cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHN0eWxlPlxuICAgICAgICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNXB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogNXB4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk7XG4gICAgICAgICAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWw6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM2NjY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNhbDphY3RpdmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM2NjY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc3R5bGU+XG5cbiAgICAgICAgICAgICR7c3R5bGVzfVxuICAgICAgICAgICAgJHtzY3JpcHRzfVxuICAgICAgICAgIDwvaGVhZD5cbiAgICAgICAgICA8Ym9keT5cbiAgICAgICAgICAgICR7dGhpcy5fcHJpbnRFbC5uYXRpdmVFbGVtZW50Lm91dGVySFRNTH1cbiAgICAgICAgICA8L2JvZHk+XG4gICAgICAgIDwvaHRtbD5cbiAgICAgIGA7XG5cblx0XHRyZXR1cm4gaHRtbDtcblx0fVxufVxuIl19
@@ -0,0 +1,91 @@
1
+ import { Directive, HostListener, Input, } from '@angular/core';
2
+ import { getElementByTag } from 'ng-zorro-antd-extension/util';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * 常规打印
6
+ */
7
+ export class NzxPrintDirective {
8
+ constructor() {
9
+ this.printTitle = 'pdf';
10
+ this.identifierStr = '';
11
+ }
12
+ ngOnInit() {
13
+ if (!this.printEl) {
14
+ throw new Error('The "printEl" input is required for the nzxPrint directive.');
15
+ }
16
+ }
17
+ ngAfterViewInit() {
18
+ this.getElement();
19
+ }
20
+ print() {
21
+ const newWin = window.open('', '_blank');
22
+ if (newWin) {
23
+ const styles = getElementByTag('style', this.identifierStr);
24
+ const links = getElementByTag('link');
25
+ const baseTag = getElementByTag('base');
26
+ const scripts = `
27
+ <script>
28
+ window.onload = function () {
29
+ window.print();
30
+ };
31
+ window.onafterprint = function () {
32
+ window.close();
33
+ };
34
+ </script>
35
+ `;
36
+ const html = `
37
+ <!DOCTYPE html>
38
+ <html>
39
+ <head>
40
+ <title>${this.printTitle}</title>
41
+ ${baseTag}
42
+ ${links}
43
+ ${styles}
44
+ ${scripts}
45
+ </head>
46
+ <body>
47
+ ${this._printEl.outerHTML}
48
+ </body>
49
+ </html>
50
+ `;
51
+ newWin.document.open();
52
+ newWin.document.write(html);
53
+ newWin.document.close();
54
+ }
55
+ }
56
+ getElement() {
57
+ if (typeof this.printEl === 'string') {
58
+ const el = document.querySelector(this.printEl);
59
+ if (el) {
60
+ this._printEl = el;
61
+ }
62
+ else {
63
+ throw new Error('printEl is not find');
64
+ }
65
+ }
66
+ else if (this.printEl instanceof HTMLElement) {
67
+ this._printEl = this.printEl;
68
+ }
69
+ else {
70
+ throw new Error('printEl is invalid');
71
+ }
72
+ }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzxPrintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
74
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.3", type: NzxPrintDirective, selector: "button[nzxPrint]", inputs: { printEl: "printEl", printTitle: "printTitle", identifierStr: "identifierStr" }, host: { listeners: { "click": "print()" } }, ngImport: i0 }); }
75
+ }
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzxPrintDirective, decorators: [{
77
+ type: Directive,
78
+ args: [{
79
+ selector: 'button[nzxPrint]',
80
+ }]
81
+ }], propDecorators: { printEl: [{
82
+ type: Input
83
+ }], printTitle: [{
84
+ type: Input
85
+ }], identifierStr: [{
86
+ type: Input
87
+ }], print: [{
88
+ type: HostListener,
89
+ args: ['click']
90
+ }] } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnp4LXByaW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvcHJpbnQvbnp4LXByaW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUUvRDs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFIOUI7UUFLVyxlQUFVLEdBQXVCLEtBQUssQ0FBQztRQUN2QyxrQkFBYSxHQUFzQixFQUFFLENBQUM7S0FzRWhEO0lBbkVDLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUNiLDZEQUE2RCxDQUM5RCxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBR08sS0FBSztRQUNYLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXpDLElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDNUQsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUV4QyxNQUFNLE9BQU8sR0FBRzs7Ozs7Ozs7O09BU2YsQ0FBQztZQUVGLE1BQU0sSUFBSSxHQUFHOzs7O3FCQUlFLElBQUksQ0FBQyxVQUFVO2NBQ3RCLE9BQU87Y0FDUCxLQUFLO2NBQ0wsTUFBTTtjQUNOLE9BQU87OztjQUdQLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUzs7O09BRzlCLENBQUM7WUFDRixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDcEMsTUFBTSxFQUFFLEdBQXVCLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BFLElBQUksRUFBRSxFQUFFO2dCQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO2FBQ3BCO2lCQUFNO2dCQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQzthQUN4QztTQUNGO2FBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxZQUFZLFdBQVcsRUFBRTtZQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDOUI7YUFBTTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7OEdBeEVVLGlCQUFpQjtrR0FBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCOzhCQUVVLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBZ0JFLEtBQUs7c0JBRFosWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0RWxlbWVudEJ5VGFnIH0gZnJvbSAnbmctem9ycm8tYW50ZC1leHRlbnNpb24vdXRpbCc7XG5cbi8qKlxuICog5bi46KeE5omT5Y2wXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2J1dHRvbltuenhQcmludF0nLFxufSlcbmV4cG9ydCBjbGFzcyBOenhQcmludERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHByaW50RWw6IEhUTUxFbGVtZW50IHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBwcmludFRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAncGRmJztcbiAgQElucHV0KCkgaWRlbnRpZmllclN0cjogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcbiAgcHJpdmF0ZSBfcHJpbnRFbCE6IEhUTUxFbGVtZW50O1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcmludEVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdUaGUgXCJwcmludEVsXCIgaW5wdXQgaXMgcmVxdWlyZWQgZm9yIHRoZSBuenhQcmludCBkaXJlY3RpdmUuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRFbGVtZW50KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHByaXZhdGUgcHJpbnQoKTogdm9pZCB7XG4gICAgY29uc3QgbmV3V2luID0gd2luZG93Lm9wZW4oJycsICdfYmxhbmsnKTtcblxuICAgIGlmIChuZXdXaW4pIHtcbiAgICAgIGNvbnN0IHN0eWxlcyA9IGdldEVsZW1lbnRCeVRhZygnc3R5bGUnLCB0aGlzLmlkZW50aWZpZXJTdHIpO1xuICAgICAgY29uc3QgbGlua3MgPSBnZXRFbGVtZW50QnlUYWcoJ2xpbmsnKTtcbiAgICAgIGNvbnN0IGJhc2VUYWcgPSBnZXRFbGVtZW50QnlUYWcoJ2Jhc2UnKTtcblxuICAgICAgY29uc3Qgc2NyaXB0cyA9IGBcbiAgICAgIDxzY3JpcHQ+XG4gICAgICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgd2luZG93LnByaW50KCk7XG4gICAgICAgIH07XG4gICAgICAgIHdpbmRvdy5vbmFmdGVycHJpbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgd2luZG93LmNsb3NlKCk7XG4gICAgICAgIH07XG4gICAgICA8L3NjcmlwdD5cbiAgICAgIGA7XG5cbiAgICAgIGNvbnN0IGh0bWwgPSBgXG4gICAgICA8IURPQ1RZUEUgaHRtbD5cbiAgICAgICAgPGh0bWw+XG4gICAgICAgICAgPGhlYWQ+XG4gICAgICAgICAgICA8dGl0bGU+JHt0aGlzLnByaW50VGl0bGV9PC90aXRsZT5cbiAgICAgICAgICAgICR7YmFzZVRhZ31cbiAgICAgICAgICAgICR7bGlua3N9XG4gICAgICAgICAgICAke3N0eWxlc31cbiAgICAgICAgICAgICR7c2NyaXB0c31cbiAgICAgICAgICA8L2hlYWQ+XG4gICAgICAgICAgPGJvZHk+XG4gICAgICAgICAgICAke3RoaXMuX3ByaW50RWwub3V0ZXJIVE1MfVxuICAgICAgICAgIDwvYm9keT5cbiAgICAgICAgPC9odG1sPlxuICAgICAgYDtcbiAgICAgIG5ld1dpbi5kb2N1bWVudC5vcGVuKCk7XG4gICAgICBuZXdXaW4uZG9jdW1lbnQud3JpdGUoaHRtbCk7XG4gICAgICBuZXdXaW4uZG9jdW1lbnQuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEVsZW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnByaW50RWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBlbDogSFRNTEVsZW1lbnQgfCBudWxsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLnByaW50RWwpO1xuICAgICAgaWYgKGVsKSB7XG4gICAgICAgIHRoaXMuX3ByaW50RWwgPSBlbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncHJpbnRFbCBpcyBub3QgZmluZCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5wcmludEVsIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX3ByaW50RWwgPSB0aGlzLnByaW50RWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncHJpbnRFbCBpcyBpbnZhbGlkJyk7XG4gICAgfVxuICB9XG59XG4iXX0=