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.
- package/README.md +1 -0
- package/configurable-query/configurable-query.component.d.ts +13 -14
- package/configurable-query/type.d.ts +2 -2
- package/esm2022/configurable-query/configurable-query.component.mjs +66 -42
- package/esm2022/configurable-query/type.mjs +1 -1
- package/esm2022/print/ng-zorro-antd-extension-print.mjs +5 -0
- package/esm2022/print/nzx-print-content.directive.mjs +22 -0
- package/esm2022/print/nzx-print-v.component.mjs +300 -0
- package/esm2022/print/nzx-print.component.mjs +189 -0
- package/esm2022/print/nzx-print.directive.mjs +91 -0
- package/esm2022/print/nzx-print.module.mjs +39 -0
- package/esm2022/print/public-api.mjs +10 -0
- package/esm2022/table-select/page-table-select/page-table-select.component.mjs +3 -3
- package/esm2022/table-select/table-select/table-select.component.mjs +3 -3
- package/esm2022/util/lib/getElementByTag.mjs +31 -0
- package/esm2022/util/public-api.mjs +2 -1
- package/fesm2022/ng-zorro-antd-extension-configurable-query.mjs +64 -40
- package/fesm2022/ng-zorro-antd-extension-configurable-query.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-print.mjs +637 -0
- package/fesm2022/ng-zorro-antd-extension-print.mjs.map +1 -0
- package/fesm2022/ng-zorro-antd-extension-table-select.mjs +4 -4
- package/fesm2022/ng-zorro-antd-extension-table-select.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-util.mjs +32 -1
- package/fesm2022/ng-zorro-antd-extension-util.mjs.map +1 -1
- package/package.json +14 -7
- package/pipes/safe-url.pipe.d.ts +1 -1
- package/print/index.d.ts +5 -0
- package/print/nzx-print-content.directive.d.ts +10 -0
- package/print/nzx-print-v.component.d.ts +45 -0
- package/print/nzx-print.component.d.ts +34 -0
- package/print/nzx-print.directive.d.ts +17 -0
- package/print/nzx-print.module.d.ts +13 -0
- package/print/public-api.d.ts +9 -0
- package/public-api.d.ts +1 -1
- package/table-select/abstract-table-select.d.ts +1 -1
- package/timer-button/timer-button.directive.d.ts +1 -1
- package/util/lib/getElementByTag.d.ts +8 -0
- 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=
|