ng-zorro-antd-extension 17.4.4 → 17.4.5

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.
@@ -2,14 +2,16 @@ import { Component, ContentChildren, EventEmitter, Input, Output, ViewChild, } f
2
2
  import { CoreViewer, Navigation, PageViewMode, } from '@vivliostyle/core';
3
3
  import { NzxPrintContentDirective } from './nzx-print-content.directive';
4
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";
5
+ import * as i1 from "@angular/cdk/platform";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "ng-zorro-antd/grid";
8
+ import * as i4 from "ng-zorro-antd/pagination";
8
9
  /**
9
10
  * Vivliostyle 打印
10
11
  */
11
12
  export class NzxPrintVComponent {
12
- constructor(cd) {
13
+ constructor(platform, cd) {
14
+ this.platform = platform;
13
15
  this.cd = cd;
14
16
  this.printTitle = 'pdf';
15
17
  /**
@@ -94,6 +96,15 @@ export class NzxPrintVComponent {
94
96
  createIframeWrapper() {
95
97
  if (this.vivViewRef) {
96
98
  this.clearView();
99
+ if (!this.enablePreview) {
100
+ this.vivViewRef.nativeElement.style.visibility = 'hidden';
101
+ if (this.platform.FIREFOX) {
102
+ this.vivViewRef.nativeElement.setAttribute('style', 'width: 1px; height: 100px; position: fixed; left: 0; top: 0; opacity: 0; border-width: 0; margin: 0; padding: 0');
103
+ }
104
+ else {
105
+ this.vivViewRef.nativeElement.setAttribute('style', 'visibility: hidden; height: 0; width: 0; position: absolute; border: 0');
106
+ }
107
+ }
97
108
  this.iframeEl = document.createElement('iframe');
98
109
  this.iframeEl.height = this.height + '';
99
110
  this.iframeEl.width = this.width + '';
@@ -236,13 +247,13 @@ export class NzxPrintVComponent {
236
247
  this.viewer = undefined;
237
248
  this._isRenderComplete = false;
238
249
  }
239
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxPrintVComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
250
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxPrintVComponent, deps: [{ token: i1.Platform }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
240
251
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", 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: `
241
252
  <ng-content select="[nzxPrintHeader]"></ng-content>
242
253
 
243
254
  <div #vivView [ngStyle]="{ margin: '10px 0' }"></div>
244
255
 
245
- <div nz-row nzJustify="end">
256
+ <div nz-row nzJustify="end" *ngIf="enablePreview">
246
257
  <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>
247
258
  <nz-pagination
248
259
  [nzPageIndex]="1"
@@ -254,7 +265,7 @@ export class NzxPrintVComponent {
254
265
  (nzPageIndexChange)="onPageIndexChange($event)"
255
266
  ></nz-pagination>
256
267
  </div>
257
- `, 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"] }] }); }
268
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "component", type: i4.NzPaginationComponent, selector: "nz-pagination", inputs: ["nzShowTotal", "nzItemRender", "nzSize", "nzPageSizeOptions", "nzShowSizeChanger", "nzShowQuickJumper", "nzSimple", "nzDisabled", "nzResponsive", "nzHideOnSinglePage", "nzTotal", "nzPageIndex", "nzPageSize"], outputs: ["nzPageSizeChange", "nzPageIndexChange"], exportAs: ["nzPagination"] }] }); }
258
269
  }
259
270
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxPrintVComponent, decorators: [{
260
271
  type: Component,
@@ -265,7 +276,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
265
276
 
266
277
  <div #vivView [ngStyle]="{ margin: '10px 0' }"></div>
267
278
 
268
- <div nz-row nzJustify="end">
279
+ <div nz-row nzJustify="end" *ngIf="enablePreview">
269
280
  <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>
270
281
  <nz-pagination
271
282
  [nzPageIndex]="1"
@@ -279,7 +290,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
279
290
  </div>
280
291
  `,
281
292
  }]
282
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { printTitle: [{
293
+ }], ctorParameters: () => [{ type: i1.Platform }, { type: i0.ChangeDetectorRef }], propDecorators: { printTitle: [{
283
294
  type: Input
284
295
  }], width: [{
285
296
  type: Input
@@ -298,4 +309,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
298
309
  type: ContentChildren,
299
310
  args: [NzxPrintContentDirective]
300
311
  }] } });
301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnp4LXByaW50LXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wcmludC9uengtcHJpbnQtdi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksR0FHYixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQUV6RTs7R0FFRztBQXNCSCxNQUFNLE9BQU8sa0JBQWtCO0lBdUI3QixZQUFvQixFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXRCaEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUM1Qjs7V0FFRztRQUNNLFVBQUssR0FBRyxHQUFHLENBQUM7UUFDWixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2Qsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNkLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHM0QsY0FBUyxHQUFHLENBQUMsQ0FBQztRQU9OLFdBQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBRXhCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQXNIMUIsZ0JBQVcsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUM7UUFFTSwyQkFBc0IsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNwRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FB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QyxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7K0dBelFVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDhRQWlCWix3QkFBd0Isb0lBcEMvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQ7OzRGQUVVLGtCQUFrQjtrQkFyQjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQ7aUJBQ0Y7c0ZBRVUsVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBTUMsVUFBVTtzQkFEakIsU0FBUzt1QkFBQyxTQUFTO2dCQUlaLGlCQUFpQjtzQkFEeEIsZUFBZTt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb3JlVmlld2VyLFxuICBOYXZpZ2F0aW9uLFxuICBQYWdlVmlld01vZGUsXG4gIFBheWxvYWQsXG4gIFNpbmdsZURvY3VtZW50T3B0aW9ucyxcbn0gZnJvbSAnQHZpdmxpb3N0eWxlL2NvcmUnO1xuaW1wb3J0IHsgTnp4UHJpbnRDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9uengtcHJpbnQtY29udGVudC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIFZpdmxpb3N0eWxlIOaJk+WNsFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduengtcHJpbnQtdicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW256eFByaW50SGVhZGVyXVwiPjwvbmctY29udGVudD5cblxuICAgIDxkaXYgI3ZpdlZpZXcgW25nU3R5bGVdPVwieyBtYXJnaW46ICcxMHB4IDAnIH1cIj48L2Rpdj5cblxuICAgIDxkaXYgbnotcm93IG56SnVzdGlmeT1cImVuZFwiPlxuICAgICAgPG5nLXRlbXBsYXRlICN0b3RhbFRlbXBsYXRlIGxldC10b3RhbD7lhbEge3sgdG90YWwgfX0g6aG1PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuei1wYWdpbmF0aW9uXG4gICAgICAgIFtuelBhZ2VJbmRleF09XCIxXCJcbiAgICAgICAgW256VG90YWxdPVwicGFnZVRvdGFsXCJcbiAgICAgICAgW256UGFnZVNpemVdPVwiMVwiXG4gICAgICAgIFtuelNpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgIFtuelNob3dUb3RhbF09XCJ0b3RhbFRlbXBsYXRlXCJcbiAgICAgICAgbnpTaG93UXVpY2tKdW1wZXJcbiAgICAgICAgKG56UGFnZUluZGV4Q2hhbmdlKT1cIm9uUGFnZUluZGV4Q2hhbmdlKCRldmVudClcIlxuICAgICAgPjwvbnotcGFnaW5hdGlvbj5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgTnp4UHJpbnRWQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgcHJpbnRUaXRsZSA9ICdwZGYnO1xuICAvKipcbiAgICogYTQgNzk0cHgxMTIzcHhcbiAgICovXG4gIEBJbnB1dCgpIHdpZHRoID0gODE0O1xuICBASW5wdXQoKSBoZWlnaHQgPSAxMTQzO1xuICBASW5wdXQoKSBlbmFibGVQcmV2aWV3ID0gdHJ1ZTtcbiAgQElucHV0KCkgcGl4ZWxSYXRpbyA9IDg7XG4gIEBPdXRwdXQoKSBwYWdlUmVuZGVyQ29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgdmlld2VyOiBDb3JlVmlld2VyIHwgdW5kZWZpbmVkO1xuICBwYWdlVG90YWwgPSAwO1xuXG4gIEBWaWV3Q2hpbGQoJ3ZpdlZpZXcnKVxuICBwcml2YXRlIHZpdlZpZXdSZWYhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKE56eFByaW50Q29udGVudERpcmVjdGl2ZSlcbiAgcHJpdmF0ZSBfcHJpbnRFbFF1ZXJ5TGlzdCE6IFF1ZXJ5TGlzdDxOenhQcmludENvbnRlbnREaXJlY3RpdmU+O1xuICBwcml2YXRlIF90aXRsZSA9IGRvY3VtZW50LnRpdGxlO1xuICBwcml2YXRlIGlmcmFtZUVsITogSFRNTElGcmFtZUVsZW1lbnQ7XG4gIHByaXZhdGUgX2lzUmVuZGVyQ29tcGxldGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNyZWF0ZUlmcmFtZVdyYXBwZXIoKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpZXdlcikge1xuICAgICAgdGhpcy5jbGVhclZpZXcoKTtcbiAgICB9XG4gIH1cblxuICBvblBhZ2VJbmRleENoYW5nZShudW06IG51bWJlcikge1xuICAgIGlmICh0aGlzLnZpZXdlcikge1xuICAgICAgdGhpcy52aWV3ZXIubmF2aWdhdGVUb1BhZ2UoTmF2aWdhdGlvbi5FUEFHRSwgbnVtIC0gMSk7XG4gICAgfVxuICB9XG5cbiAgcHJpbnQoKSB7XG4gICAgaWYgKHRoaXMuX2lzUmVuZGVyQ29tcGxldGUpIHtcbiAgICAgIHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdyEucHJpbnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdyZW5kaW5nLi4uJyk7XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY3JlYXRlSWZyYW1lV3JhcHBlcigpO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUlmcmFtZVdyYXBwZXIoKSB7XG4gICAgaWYgKHRoaXMudml2Vmlld1JlZikge1xuICAgICAgdGhpcy5jbGVhclZpZXcoKTtcblxuICAgICAgdGhpcy5pZnJhbWVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgICAgdGhpcy5pZnJhbWVFbC5oZWlnaHQgPSB0aGlzLmhlaWdodCArICcnO1xuICAgICAgdGhpcy5pZnJhbWVFbC53aWR0aCA9IHRoaXMud2lkdGggKyAnJztcbiAgICAgIHRoaXMuaWZyYW1lRWwuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjY2NjJztcbiAgICAgIHRoaXMuaWZyYW1lRWwuc3R5bGUuYmFja2dyb3VuZCA9ICcjZmZmJztcblxuICAgICAgY29uc3QgdGVtcGxhdGUgPSBgXG4gICAgICAgIDwhRE9DVFlQRSBodG1sPlxuICAgICAgICA8aHRtbCBkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZD1cInRydWVcIj5cbiAgICAgICAgICA8aGVhZD5cbiAgICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiIC8+XG4gICAgICAgICAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMFwiIC8+XG4gICAgICAgICAgICA8YmFzZSBocmVmPVwiL1wiIC8+XG4gICAgICAgICAgICA8dGl0bGU+JHt0aGlzLnByaW50VGl0bGV9PC90aXRsZT5cbiAgICAgICAgICAgIDxzdHlsZT5cbiAgICAgICAgICAgICAgaHRtbFtkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZF0ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBodG1sW2RhdGEtdml2bGlvc3R5bGUtcGFnaW5hdGVkXSBib2R5LFxuICAgICAgICAgICAgICBodG1sW2RhdGEtdml2bGlvc3R5bGUtcGFnaW5hdGVkXSBbZGF0YS12aXZsaW9zdHlsZS12aWV3ZXItdmlld3BvcnRdIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaHRtbFtkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZF0sXG4gICAgICAgICAgICAgIGh0bWxbZGF0YS12aXZsaW9zdHlsZS1wYWdpbmF0ZWRdIGJvZHkge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3N0eWxlPlxuICAgICAgICAgICAgPHN0eWxlIGlkPVwidml2bGlvc3R5bGUtcGFnZS1ydWxlc1wiPjwvc3R5bGU+XG4gICAgICAgICAgPC9oZWFkPlxuICAgICAgICAgIDxib2R5PlxuICAgICAgICAgICAgPGRpdiBpZD1cInZpdmxpb3N0eWxlLXZpZXdlci12aWV3cG9ydFwiPjwvZGl2PlxuICAgICAgICAgIDwvYm9keT5cbiAgICAgICAgPC9odG1sPlxuICAgICAgYDtcblxuICAgICAgdGhpcy5pZnJhbWVFbC5zcmNkb2MgPSB0ZW1wbGF0ZTtcbiAgICAgIHRoaXMudml2Vmlld1JlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaWZyYW1lRWwpO1xuICAgICAgdGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93IS5vbmJlZm9yZXByaW50ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3chLnBhcmVudC5kb2N1bWVudC50aXRsZSA9IHRoaXMucHJpbnRUaXRsZTtcbiAgICAgIH07XG4gICAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3chLm9uYWZ0ZXJwcmludCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93IS5wYXJlbnQuZG9jdW1lbnQudGl0bGUgPSB0aGlzLl90aXRsZTtcbiAgICAgIH07XG4gICAgICB0aGlzLmNyZWF0ZVZpdlZpZXdlcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVml2Vmlld2VyKCkge1xuICAgIHRoaXMuaWZyYW1lRWwub25sb2FkID0gKCkgPT4ge1xuICAgICAgY29uc3QgZWxzOiBOenhQcmludENvbnRlbnREaXJlY3RpdmVbXSA9IHRoaXMuX3ByaW50RWxRdWVyeUxpc3QudG9BcnJheSgpO1xuICAgICAgY29uc3QgdGVtcGxhdGVzID0gdGhpcy5nZXRWaXZUZW1wbGF0ZXMoZWxzKTtcbiAgICAgIGNvbnN0IG9wdGlvbnM6IFNpbmdsZURvY3VtZW50T3B0aW9uc1tdID0gW107XG4gICAgICB0ZW1wbGF0ZXMuZm9yRWFjaCgodGVtcGxhdGUpID0+IHtcbiAgICAgICAgY29uc3QgZG9jQmxvYiA9IG5ldyBCbG9iKFt0ZW1wbGF0ZV0sIHtcbiAgICAgICAgICB0eXBlOiAndGV4dC9odG1sJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGRvY1VSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZG9jQmxvYik7XG4gICAgICAgIG9wdGlvbnMucHVzaCh7IHVybDogZG9jVVJMIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnZpZXdlciA9IG5ldyBDb3JlVmlld2VyKFxuICAgICAgICB7XG4gICAgICAgICAgdmlld3BvcnRFbGVtZW50OiB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3c/LmRvY3VtZW50LmJvZHlcbiAgICAgICAgICAgIC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2VWaWV3TW9kZTogUGFnZVZpZXdNb2RlLlNJTkdMRV9QQUdFLFxuICAgICAgICAgIHBpeGVsUmF0aW86IHRoaXMucGl4ZWxSYXRpbyxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMudmlld2VyLmxvYWREb2N1bWVudChvcHRpb25zKTtcbiAgICAgIHRoaXMuY3JlYXRlTGlzdGVuZXIodGhpcy52aWV3ZXIpO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yID0gKHBheWxvYWQ6IFBheWxvYWQpID0+IHtcbiAgICBjb25zb2xlLmxvZygnZXJyb3I6OicsIHBheWxvYWQpO1xuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlUmVhZHlTdGF0ZUNoYW5nZSA9IChwYXlsb2FkOiBQYXlsb2FkKSA9PiB7XG4gICAgdGhpcy5faXNSZW5kZXJDb21wbGV0ZSA9IGZhbHNlO1xuICAgIHRoaXMucGFnZVJlbmRlckNvbXBsZXRlLmVtaXQoZmFsc2UpO1xuICAgIGlmICh0aGlzLnZpZXdlciAmJiB0aGlzLnZpZXdlci5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7XG4gICAgICBjb25zdCBpbnRlcnZhbFRhZyA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuaWZyYW1lRWwgJiZcbiAgICAgICAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cgJiZcbiAgICAgICAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgaW1hZ2VzID1cbiAgICAgICAgICAgIHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJyk7XG5cbiAgICAgICAgICBsZXQgYWxsSW1hZ2VzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGltYWdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKCFpbWFnZXNbaV0uY29tcGxldGUpIHtcbiAgICAgICAgICAgICAgYWxsSW1hZ2VzTG9hZGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYWxsSW1hZ2VzTG9hZGVkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQWxsIGltYWdlcyBpbiBpZnJhbWUgbG9hZGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgdGhpcy5wYWdlUmVuZGVyQ29tcGxldGUuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuX2lzUmVuZGVyQ29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbFRhZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCAxMDAwKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVIeXBlcmxpbmsgPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdoYW5kbGVIeXBlcmxpbms6OicsIHBheWxvYWQpO1xuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlTG9hZGVkID0gKHBheWxvYWQ6IFBheWxvYWQpID0+IHtcbiAgICBjb25zb2xlLmxvZygnaGFuZGxlTG9hZGVkOjonLCBwYXlsb2FkKTtcbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZU5hdmlnYXRpb24gPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuICAgIHRoaXMucGFnZVRvdGFsID0gcGF5bG9hZC5lcGFnZUNvdW50O1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBjcmVhdGVMaXN0ZW5lcih2aWV3ZXI6IENvcmVWaWV3ZXIpIHtcbiAgICB2aWV3ZXIuYWRkTGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5oYW5kbGVFcnJvcik7XG4gICAgdmlld2VyLmFkZExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgdGhpcy5oYW5kbGVSZWFkeVN0YXRlQ2hhbmdlKTtcbiAgICB2aWV3ZXIuYWRkTGlzdGVuZXIoJ2xvYWRlZCcsIHRoaXMuaGFuZGxlTG9hZGVkKTtcbiAgICB2aWV3ZXIuYWRkTGlzdGVuZXIoJ2h5cGVybGluaycsIHRoaXMuaGFuZGxlSHlwZXJsaW5rKTtcbiAgICB2aWV3ZXIuYWRkTGlzdGVuZXIoJ25hdicsIHRoaXMuaGFuZGxlTmF2aWdhdGlvbik7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxpc3RlbmVycyh2aWV3ZXI6IENvcmVWaWV3ZXIpIHtcbiAgICB2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5oYW5kbGVFcnJvcik7XG4gICAgdmlld2VyLnJlbW92ZUxpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgdGhpcy5oYW5kbGVSZWFkeVN0YXRlQ2hhbmdlKTtcbiAgICB2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ2xvYWRlZCcsIHRoaXMuaGFuZGxlTG9hZGVkKTtcbiAgICB2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ2h5cGVybGluaycsIHRoaXMuaGFuZGxlSHlwZXJsaW5rKTtcbiAgICB2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ25hdicsIHRoaXMuaGFuZGxlTmF2aWdhdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGdldFN0eWxlcyhpZGVudGlmaWVyU3RyOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3R5bGVzQXJyYXk6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3Qgc3R5bGVFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScpO1xuICAgIGNvbnN0IGxlbmd0aCA9IHN0eWxlRWxlbWVudHMubGVuZ3RoO1xuICAgIGxldCBpZGVudGlmaWVyczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShpZGVudGlmaWVyU3RyKSkge1xuICAgICAgaWRlbnRpZmllcnMgPSBbLi4uaWRlbnRpZmllclN0cl07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkZW50aWZpZXJzID0gW2lkZW50aWZpZXJTdHJdO1xuICAgIH1cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBpZGVudGlmaWVycy5mb3JFYWNoKChzKSA9PiB7XG4gICAgICAgIGlmIChzdHlsZUVsZW1lbnRzW2luZGV4XS5vdXRlckhUTUwuaW5jbHVkZXMocykpIHtcbiAgICAgICAgICBjb25zdCBmb3JtYXRlU3RyID0gc3R5bGVFbGVtZW50c1tpbmRleF0ub3V0ZXJIVE1MLnJlcGxhY2UoXG4gICAgICAgICAgICAvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nLFxuICAgICAgICAgICAgJydcbiAgICAgICAgICApO1xuICAgICAgICAgIHN0eWxlc0FycmF5LnB1c2goZm9ybWF0ZVN0cik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3R5bGVzQXJyYXkuam9pbignXFxyXFxuJyk7XG4gIH1cblxuICBwcml2YXRlIGdldFZpdlRlbXBsYXRlcyhkaXJlY3RpdmVzOiBOenhQcmludENvbnRlbnREaXJlY3RpdmVbXSkge1xuICAgIGNvbnN0IHRlbXBsYXRlczogc3RyaW5nW10gPSBbXTtcbiAgICBkaXJlY3RpdmVzLmZvckVhY2goKGQpID0+IHtcbiAgICAgIGxldCBzdHlsZXMgPSAnJztcbiAgICAgIGlmIChkLmlkZW50aWZpZXJTdHIgfHwgZC5pZGVudGlmaWVyU3RyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgc3R5bGVzID0gdGhpcy5nZXRTdHlsZXMoZC5pZGVudGlmaWVyU3RyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGh0bWwgPSBgXG4gICAgICAgICAgPCFET0NUWVBFIGh0bWw+XG4gICAgICAgICAgPGh0bWw+XG4gICAgICAgICAgICA8aGVhZD5cbiAgICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiIC8+XG4gICAgICAgICAgICA8dGl0bGU+JHt0aGlzLnByaW50VGl0bGV9PC90aXRsZT5cbiAgICAgICAgICAgIDxiYXNlIGhyZWY9XCIvXCIgLz5cbiAgICAgICAgICAgIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MVwiIC8+XG4gICAgICAgICAgICAgJHtkLmN1c3RvbVN0eWxlfVxuICAgICAgICAgICAgICR7c3R5bGVzfVxuICAgICAgICAgICAgPC9oZWFkPlxuICAgICAgICAgICAgPGJvZHk+XG4gICAgICAgICAgICAgICR7ZC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub3V0ZXJIVE1MfVxuICAgICAgICAgICAgPC9ib2R5PlxuICAgICAgICAgIDwvaHRtbD5cbiAgICAgICAgYDtcbiAgICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoLzwhLS0tLT4vZywgJyAnKTtcbiAgICAgIHRlbXBsYXRlcy5wdXNoKGh0bWwpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRlbXBsYXRlcztcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJWaWV3KCkge1xuICAgIGlmICh0aGlzLnZpZXdlcikge1xuICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcnModGhpcy52aWV3ZXIpO1xuICAgIH1cbiAgICB0aGlzLnZpdlZpZXdSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICB0aGlzLnZpZXdlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9pc1JlbmRlckNvbXBsZXRlID0gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnp4LXByaW50LXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wcmludC9uengtcHJpbnQtdi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksR0FHYixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7QUFFekU7O0dBRUc7QUFzQkgsTUFBTSxPQUFPLGtCQUFrQjtJQXVCN0IsWUFBb0IsUUFBa0IsRUFBVSxFQUFxQjtRQUFqRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUF0QjVELGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDNUI7O1dBRUc7UUFDTSxVQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ1osV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRzNELGNBQVMsR0FBRyxDQUFDLENBQUM7UUFPTixXQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUV4QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFvSTFCLGdCQUFXLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUU7WUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDO1FBRU0sMkJBQXNCLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUU7WUFDcEQsSUFBSSxDQUFD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QVU7c0JBQWxCLEtBQUs7Z0JBSUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNO2dCQU1DLFVBQVU7c0JBRGpCLFNBQVM7dUJBQUMsU0FBUztnQkFJWixpQkFBaUI7c0JBRHhCLGVBQWU7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHtcbiAgQ29yZVZpZXdlcixcbiAgTmF2aWdhdGlvbixcbiAgUGFnZVZpZXdNb2RlLFxuICBQYXlsb2FkLFxuICBTaW5nbGVEb2N1bWVudE9wdGlvbnMsXG59IGZyb20gJ0B2aXZsaW9zdHlsZS9jb3JlJztcbmltcG9ydCB7IE56eFByaW50Q29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vbnp4LXByaW50LWNvbnRlbnQuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBWaXZsaW9zdHlsZSDmiZPljbBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnp4LXByaW50LXYnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltuenhQcmludEhlYWRlcl1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICA8ZGl2ICN2aXZWaWV3IFtuZ1N0eWxlXT1cInsgbWFyZ2luOiAnMTBweCAwJyB9XCI+PC9kaXY+XG5cbiAgICA8ZGl2IG56LXJvdyBuekp1c3RpZnk9XCJlbmRcIiAqbmdJZj1cImVuYWJsZVByZXZpZXdcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdG90YWxUZW1wbGF0ZSBsZXQtdG90YWw+5YWxIHt7IHRvdGFsIH19IOmhtTwvbmctdGVtcGxhdGU+XG4gICAgICA8bnotcGFnaW5hdGlvblxuICAgICAgICBbbnpQYWdlSW5kZXhdPVwiMVwiXG4gICAgICAgIFtuelRvdGFsXT1cInBhZ2VUb3RhbFwiXG4gICAgICAgIFtuelBhZ2VTaXplXT1cIjFcIlxuICAgICAgICBbbnpTaXplXT1cIidzbWFsbCdcIlxuICAgICAgICBbbnpTaG93VG90YWxdPVwidG90YWxUZW1wbGF0ZVwiXG4gICAgICAgIG56U2hvd1F1aWNrSnVtcGVyXG4gICAgICAgIChuelBhZ2VJbmRleENoYW5nZSk9XCJvblBhZ2VJbmRleENoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L256LXBhZ2luYXRpb24+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIE56eFByaW50VkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHByaW50VGl0bGUgPSAncGRmJztcbiAgLyoqXG4gICAqIGE0IDc5NHB4MTEyM3B4XG4gICAqL1xuICBASW5wdXQoKSB3aWR0aCA9IDgxNDtcbiAgQElucHV0KCkgaGVpZ2h0ID0gMTE0MztcbiAgQElucHV0KCkgZW5hYmxlUHJldmlldyA9IHRydWU7XG4gIEBJbnB1dCgpIHBpeGVsUmF0aW8gPSA4O1xuICBAT3V0cHV0KCkgcGFnZVJlbmRlckNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHZpZXdlcjogQ29yZVZpZXdlciB8IHVuZGVmaW5lZDtcbiAgcGFnZVRvdGFsID0gMDtcblxuICBAVmlld0NoaWxkKCd2aXZWaWV3JylcbiAgcHJpdmF0ZSB2aXZWaWV3UmVmITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihOenhQcmludENvbnRlbnREaXJlY3RpdmUpXG4gIHByaXZhdGUgX3ByaW50RWxRdWVyeUxpc3QhOiBRdWVyeUxpc3Q8Tnp4UHJpbnRDb250ZW50RGlyZWN0aXZlPjtcbiAgcHJpdmF0ZSBfdGl0bGUgPSBkb2N1bWVudC50aXRsZTtcbiAgcHJpdmF0ZSBpZnJhbWVFbCE6IEhUTUxJRnJhbWVFbGVtZW50O1xuICBwcml2YXRlIF9pc1JlbmRlckNvbXBsZXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY3JlYXRlSWZyYW1lV3JhcHBlcigpO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmlld2VyKSB7XG4gICAgICB0aGlzLmNsZWFyVmlldygpO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFnZUluZGV4Q2hhbmdlKG51bTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMudmlld2VyKSB7XG4gICAgICB0aGlzLnZpZXdlci5uYXZpZ2F0ZVRvUGFnZShOYXZpZ2F0aW9uLkVQQUdFLCBudW0gLSAxKTtcbiAgICB9XG4gIH1cblxuICBwcmludCgpIHtcbiAgICBpZiAodGhpcy5faXNSZW5kZXJDb21wbGV0ZSkge1xuICAgICAgdGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93IS5wcmludCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ3JlbmRpbmcuLi4nKTtcbiAgICB9XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jcmVhdGVJZnJhbWVXcmFwcGVyKCk7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSWZyYW1lV3JhcHBlcigpIHtcbiAgICBpZiAodGhpcy52aXZWaWV3UmVmKSB7XG4gICAgICB0aGlzLmNsZWFyVmlldygpO1xuICAgICAgaWYgKCF0aGlzLmVuYWJsZVByZXZpZXcpIHtcbiAgICAgICAgdGhpcy52aXZWaWV3UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybS5GSVJFRk9YKSB7XG4gICAgICAgICAgdGhpcy52aXZWaWV3UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKFxuICAgICAgICAgICAgJ3N0eWxlJyxcbiAgICAgICAgICAgICd3aWR0aDogMXB4OyBoZWlnaHQ6IDEwMHB4OyBwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6IDA7IHRvcDogMDsgb3BhY2l0eTogMDsgYm9yZGVyLXdpZHRoOiAwOyBtYXJnaW46IDA7IHBhZGRpbmc6IDAnXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpdlZpZXdSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAnc3R5bGUnLFxuICAgICAgICAgICAgJ3Zpc2liaWxpdHk6IGhpZGRlbjsgaGVpZ2h0OiAwOyB3aWR0aDogMDsgcG9zaXRpb246IGFic29sdXRlOyBib3JkZXI6IDAnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmlmcmFtZUVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gICAgICB0aGlzLmlmcmFtZUVsLmhlaWdodCA9IHRoaXMuaGVpZ2h0ICsgJyc7XG4gICAgICB0aGlzLmlmcmFtZUVsLndpZHRoID0gdGhpcy53aWR0aCArICcnO1xuICAgICAgdGhpcy5pZnJhbWVFbC5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNjY2MnO1xuICAgICAgdGhpcy5pZnJhbWVFbC5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmZmYnO1xuXG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IGBcbiAgICAgICAgPCFET0NUWVBFIGh0bWw+XG4gICAgICAgIDxodG1sIGRhdGEtdml2bGlvc3R5bGUtcGFnaW5hdGVkPVwidHJ1ZVwiPlxuICAgICAgICAgIDxoZWFkPlxuICAgICAgICAgICAgPG1ldGEgY2hhcnNldD1cInV0Zi04XCIgLz5cbiAgICAgICAgICAgIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wXCIgLz5cbiAgICAgICAgICAgIDxiYXNlIGhyZWY9XCIvXCIgLz5cbiAgICAgICAgICAgIDx0aXRsZT4ke3RoaXMucHJpbnRUaXRsZX08L3RpdGxlPlxuICAgICAgICAgICAgPHN0eWxlPlxuICAgICAgICAgICAgICBodG1sW2RhdGEtdml2bGlvc3R5bGUtcGFnaW5hdGVkXSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGh0bWxbZGF0YS12aXZsaW9zdHlsZS1wYWdpbmF0ZWRdIGJvZHksXG4gICAgICAgICAgICAgIGh0bWxbZGF0YS12aXZsaW9zdHlsZS1wYWdpbmF0ZWRdIFtkYXRhLXZpdmxpb3N0eWxlLXZpZXdlci12aWV3cG9ydF0ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBodG1sW2RhdGEtdml2bGlvc3R5bGUtcGFnaW5hdGVkXSxcbiAgICAgICAgICAgICAgaHRtbFtkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZF0gYm9keSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc3R5bGU+XG4gICAgICAgICAgICA8c3R5bGUgaWQ9XCJ2aXZsaW9zdHlsZS1wYWdlLXJ1bGVzXCI+PC9zdHlsZT5cbiAgICAgICAgICA8L2hlYWQ+XG4gICAgICAgICAgPGJvZHk+XG4gICAgICAgICAgICA8ZGl2IGlkPVwidml2bGlvc3R5bGUtdmlld2VyLXZpZXdwb3J0XCI+PC9kaXY+XG4gICAgICAgICAgPC9ib2R5PlxuICAgICAgICA8L2h0bWw+XG4gICAgICBgO1xuXG4gICAgICB0aGlzLmlmcmFtZUVsLnNyY2RvYyA9IHRlbXBsYXRlO1xuICAgICAgdGhpcy52aXZWaWV3UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5pZnJhbWVFbCk7XG4gICAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3chLm9uYmVmb3JlcHJpbnQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdyEucGFyZW50LmRvY3VtZW50LnRpdGxlID0gdGhpcy5wcmludFRpdGxlO1xuICAgICAgfTtcbiAgICAgIHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdyEub25hZnRlcnByaW50ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3chLnBhcmVudC5kb2N1bWVudC50aXRsZSA9IHRoaXMuX3RpdGxlO1xuICAgICAgfTtcbiAgICAgIHRoaXMuY3JlYXRlVml2Vmlld2VyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVWaXZWaWV3ZXIoKSB7XG4gICAgdGhpcy5pZnJhbWVFbC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBjb25zdCBlbHM6IE56eFByaW50Q29udGVudERpcmVjdGl2ZVtdID0gdGhpcy5fcHJpbnRFbFF1ZXJ5TGlzdC50b0FycmF5KCk7XG4gICAgICBjb25zdCB0ZW1wbGF0ZXMgPSB0aGlzLmdldFZpdlRlbXBsYXRlcyhlbHMpO1xuICAgICAgY29uc3Qgb3B0aW9uczogU2luZ2xlRG9jdW1lbnRPcHRpb25zW10gPSBbXTtcbiAgICAgIHRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBkb2NCbG9iID0gbmV3IEJsb2IoW3RlbXBsYXRlXSwge1xuICAgICAgICAgIHR5cGU6ICd0ZXh0L2h0bWwnLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZG9jVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChkb2NCbG9iKTtcbiAgICAgICAgb3B0aW9ucy5wdXNoKHsgdXJsOiBkb2NVUkwgfSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudmlld2VyID0gbmV3IENvcmVWaWV3ZXIoXG4gICAgICAgIHtcbiAgICAgICAgICB2aWV3cG9ydEVsZW1lbnQ6IHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdz8uZG9jdW1lbnQuYm9keVxuICAgICAgICAgICAgLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFnZVZpZXdNb2RlOiBQYWdlVmlld01vZGUuU0lOR0xFX1BBR0UsXG4gICAgICAgICAgcGl4ZWxSYXRpbzogdGhpcy5waXhlbFJhdGlvLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhpcy52aWV3ZXIubG9hZERvY3VtZW50KG9wdGlvbnMpO1xuICAgICAgdGhpcy5jcmVhdGVMaXN0ZW5lcih0aGlzLnZpZXdlcik7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IgPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdlcnJvcjo6JywgcGF5bG9hZCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVSZWFkeVN0YXRlQ2hhbmdlID0gKHBheWxvYWQ6IFBheWxvYWQpID0+IHtcbiAgICB0aGlzLl9pc1JlbmRlckNvbXBsZXRlID0gZmFsc2U7XG4gICAgdGhpcy5wYWdlUmVuZGVyQ29tcGxldGUuZW1pdChmYWxzZSk7XG4gICAgaWYgKHRoaXMudmlld2VyICYmIHRoaXMudmlld2VyLnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgIGNvbnN0IGludGVydmFsVGFnID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5pZnJhbWVFbCAmJlxuICAgICAgICAgIHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdyAmJlxuICAgICAgICAgIHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdy5kb2N1bWVudFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBpbWFnZXMgPVxuICAgICAgICAgICAgdGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbWcnKTtcblxuICAgICAgICAgIGxldCBhbGxJbWFnZXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIWltYWdlc1tpXS5jb21wbGV0ZSkge1xuICAgICAgICAgICAgICBhbGxJbWFnZXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhbGxJbWFnZXNMb2FkZWQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBbGwgaW1hZ2VzIGluIGlmcmFtZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICB0aGlzLnBhZ2VSZW5kZXJDb21wbGV0ZS5lbWl0KHRydWUpO1xuICAgICAgICAgICAgdGhpcy5faXNSZW5kZXJDb21wbGV0ZSA9IHRydWU7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsVGFnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMDApO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZUh5cGVybGluayA9IChwYXlsb2FkOiBQYXlsb2FkKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ2hhbmRsZUh5cGVybGluazo6JywgcGF5bG9hZCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVMb2FkZWQgPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdoYW5kbGVMb2FkZWQ6OicsIHBheWxvYWQpO1xuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlTmF2aWdhdGlvbiA9IChwYXlsb2FkOiBQYXlsb2FkKSA9PiB7XG4gICAgdGhpcy5wYWdlVG90YWwgPSBwYXlsb2FkLmVwYWdlQ291bnQ7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfTtcblxuICBwcml2YXRlIGNyZWF0ZUxpc3RlbmVyKHZpZXdlcjogQ29yZVZpZXdlcikge1xuICAgIHZpZXdlci5hZGRMaXN0ZW5lcignZXJyb3InLCB0aGlzLmhhbmRsZUVycm9yKTtcbiAgICB2aWV3ZXIuYWRkTGlzdGVuZXIoJ3JlYWR5c3RhdGVjaGFuZ2UnLCB0aGlzLmhhbmRsZVJlYWR5U3RhdGVDaGFuZ2UpO1xuICAgIHZpZXdlci5hZGRMaXN0ZW5lcignbG9hZGVkJywgdGhpcy5oYW5kbGVMb2FkZWQpO1xuICAgIHZpZXdlci5hZGRMaXN0ZW5lcignaHlwZXJsaW5rJywgdGhpcy5oYW5kbGVIeXBlcmxpbmspO1xuICAgIHZpZXdlci5hZGRMaXN0ZW5lcignbmF2JywgdGhpcy5oYW5kbGVOYXZpZ2F0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTGlzdGVuZXJzKHZpZXdlcjogQ29yZVZpZXdlcikge1xuICAgIHZpZXdlci5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCB0aGlzLmhhbmRsZUVycm9yKTtcbiAgICB2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ3JlYWR5c3RhdGVjaGFuZ2UnLCB0aGlzLmhhbmRsZVJlYWR5U3RhdGVDaGFuZ2UpO1xuICAgIHZpZXdlci5yZW1vdmVMaXN0ZW5lcignbG9hZGVkJywgdGhpcy5oYW5kbGVMb2FkZWQpO1xuICAgIHZpZXdlci5yZW1vdmVMaXN0ZW5lcignaHlwZXJsaW5rJywgdGhpcy5oYW5kbGVIeXBlcmxpbmspO1xuICAgIHZpZXdlci5yZW1vdmVMaXN0ZW5lcignbmF2JywgdGhpcy5oYW5kbGVOYXZpZ2F0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3R5bGVzKGlkZW50aWZpZXJTdHI6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHlsZXNBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBzdHlsZUVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3N0eWxlJyk7XG4gICAgY29uc3QgbGVuZ3RoID0gc3R5bGVFbGVtZW50cy5sZW5ndGg7XG4gICAgbGV0IGlkZW50aWZpZXJzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGlkZW50aWZpZXJTdHIpKSB7XG4gICAgICBpZGVudGlmaWVycyA9IFsuLi5pZGVudGlmaWVyU3RyXTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWRlbnRpZmllcnMgPSBbaWRlbnRpZmllclN0cl07XG4gICAgfVxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlkZW50aWZpZXJzLmZvckVhY2goKHMpID0+IHtcbiAgICAgICAgaWYgKHN0eWxlRWxlbWVudHNbaW5kZXhdLm91dGVySFRNTC5pbmNsdWRlcyhzKSkge1xuICAgICAgICAgIGNvbnN0IGZvcm1hdGVTdHIgPSBzdHlsZUVsZW1lbnRzW2luZGV4XS5vdXRlckhUTUwucmVwbGFjZShcbiAgICAgICAgICAgIC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2csXG4gICAgICAgICAgICAnJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgc3R5bGVzQXJyYXkucHVzaChmb3JtYXRlU3RyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBzdHlsZXNBcnJheS5qb2luKCdcXHJcXG4nKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Vml2VGVtcGxhdGVzKGRpcmVjdGl2ZXM6IE56eFByaW50Q29udGVudERpcmVjdGl2ZVtdKSB7XG4gICAgY29uc3QgdGVtcGxhdGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGRpcmVjdGl2ZXMuZm9yRWFjaCgoZCkgPT4ge1xuICAgICAgbGV0IHN0eWxlcyA9ICcnO1xuICAgICAgaWYgKGQuaWRlbnRpZmllclN0ciB8fCBkLmlkZW50aWZpZXJTdHIubGVuZ3RoID4gMCkge1xuICAgICAgICBzdHlsZXMgPSB0aGlzLmdldFN0eWxlcyhkLmlkZW50aWZpZXJTdHIpO1xuICAgICAgfVxuXG4gICAgICBsZXQgaHRtbCA9IGBcbiAgICAgICAgICA8IURPQ1RZUEUgaHRtbD5cbiAgICAgICAgICA8aHRtbD5cbiAgICAgICAgICAgIDxoZWFkPlxuICAgICAgICAgICAgPG1ldGEgY2hhcnNldD1cInV0Zi04XCIgLz5cbiAgICAgICAgICAgIDx0aXRsZT4ke3RoaXMucHJpbnRUaXRsZX08L3RpdGxlPlxuICAgICAgICAgICAgPGJhc2UgaHJlZj1cIi9cIiAvPlxuICAgICAgICAgICAgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCIgLz5cbiAgICAgICAgICAgICAke2QuY3VzdG9tU3R5bGV9XG4gICAgICAgICAgICAgJHtzdHlsZXN9XG4gICAgICAgICAgICA8L2hlYWQ+XG4gICAgICAgICAgICA8Ym9keT5cbiAgICAgICAgICAgICAgJHtkLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vdXRlckhUTUx9XG4gICAgICAgICAgICA8L2JvZHk+XG4gICAgICAgICAgPC9odG1sPlxuICAgICAgICBgO1xuICAgICAgaHRtbCA9IGh0bWwucmVwbGFjZSgvPCEtLS0tPi9nLCAnICcpO1xuICAgICAgdGVtcGxhdGVzLnB1c2goaHRtbCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGVtcGxhdGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclZpZXcoKSB7XG4gICAgaWYgKHRoaXMudmlld2VyKSB7XG4gICAgICB0aGlzLnJlbW92ZUxpc3RlbmVycyh0aGlzLnZpZXdlcik7XG4gICAgfVxuICAgIHRoaXMudml2Vmlld1JlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgIHRoaXMudmlld2VyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2lzUmVuZGVyQ29tcGxldGUgPSBmYWxzZTtcbiAgfVxufVxuIl19
@@ -1,13 +1,13 @@
1
- import * as i1$1 from '@angular/common';
1
+ import * as i2 from '@angular/common';
2
2
  import { DOCUMENT, CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Directive, Input, ElementRef, Component, Inject, ViewChild, ContentChild, EventEmitter, Output, ContentChildren, HostListener, NgModule } from '@angular/core';
5
5
  import { getElementByTag } from 'ng-zorro-antd-extension/util';
6
6
  import * as i1 from '@angular/cdk/platform';
7
7
  import { Navigation, CoreViewer, PageViewMode } from '@vivliostyle/core';
8
- import * as i2 from 'ng-zorro-antd/grid';
8
+ import * as i3 from 'ng-zorro-antd/grid';
9
9
  import { NzGridModule } from 'ng-zorro-antd/grid';
10
- import * as i3 from 'ng-zorro-antd/pagination';
10
+ import * as i4 from 'ng-zorro-antd/pagination';
11
11
  import { NzPaginationModule } from 'ng-zorro-antd/pagination';
12
12
 
13
13
  class NzxPrintContentDirective {
@@ -218,7 +218,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
218
218
  * Vivliostyle 打印
219
219
  */
220
220
  class NzxPrintVComponent {
221
- constructor(cd) {
221
+ constructor(platform, cd) {
222
+ this.platform = platform;
222
223
  this.cd = cd;
223
224
  this.printTitle = 'pdf';
224
225
  /**
@@ -303,6 +304,15 @@ class NzxPrintVComponent {
303
304
  createIframeWrapper() {
304
305
  if (this.vivViewRef) {
305
306
  this.clearView();
307
+ if (!this.enablePreview) {
308
+ this.vivViewRef.nativeElement.style.visibility = 'hidden';
309
+ if (this.platform.FIREFOX) {
310
+ this.vivViewRef.nativeElement.setAttribute('style', 'width: 1px; height: 100px; position: fixed; left: 0; top: 0; opacity: 0; border-width: 0; margin: 0; padding: 0');
311
+ }
312
+ else {
313
+ this.vivViewRef.nativeElement.setAttribute('style', 'visibility: hidden; height: 0; width: 0; position: absolute; border: 0');
314
+ }
315
+ }
306
316
  this.iframeEl = document.createElement('iframe');
307
317
  this.iframeEl.height = this.height + '';
308
318
  this.iframeEl.width = this.width + '';
@@ -445,13 +455,13 @@ class NzxPrintVComponent {
445
455
  this.viewer = undefined;
446
456
  this._isRenderComplete = false;
447
457
  }
448
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxPrintVComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
458
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxPrintVComponent, deps: [{ token: i1.Platform }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
449
459
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", 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: `
450
460
  <ng-content select="[nzxPrintHeader]"></ng-content>
451
461
 
452
462
  <div #vivView [ngStyle]="{ margin: '10px 0' }"></div>
453
463
 
454
- <div nz-row nzJustify="end">
464
+ <div nz-row nzJustify="end" *ngIf="enablePreview">
455
465
  <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>
456
466
  <nz-pagination
457
467
  [nzPageIndex]="1"
@@ -463,7 +473,7 @@ class NzxPrintVComponent {
463
473
  (nzPageIndexChange)="onPageIndexChange($event)"
464
474
  ></nz-pagination>
465
475
  </div>
466
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$1.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"] }] }); }
476
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "component", type: i4.NzPaginationComponent, selector: "nz-pagination", inputs: ["nzShowTotal", "nzItemRender", "nzSize", "nzPageSizeOptions", "nzShowSizeChanger", "nzShowQuickJumper", "nzSimple", "nzDisabled", "nzResponsive", "nzHideOnSinglePage", "nzTotal", "nzPageIndex", "nzPageSize"], outputs: ["nzPageSizeChange", "nzPageIndexChange"], exportAs: ["nzPagination"] }] }); }
467
477
  }
468
478
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxPrintVComponent, decorators: [{
469
479
  type: Component,
@@ -474,7 +484,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
474
484
 
475
485
  <div #vivView [ngStyle]="{ margin: '10px 0' }"></div>
476
486
 
477
- <div nz-row nzJustify="end">
487
+ <div nz-row nzJustify="end" *ngIf="enablePreview">
478
488
  <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>
479
489
  <nz-pagination
480
490
  [nzPageIndex]="1"
@@ -488,7 +498,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
488
498
  </div>
489
499
  `,
490
500
  }]
491
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { printTitle: [{
501
+ }], ctorParameters: () => [{ type: i1.Platform }, { type: i0.ChangeDetectorRef }], propDecorators: { printTitle: [{
492
502
  type: Input
493
503
  }], width: [{
494
504
  type: Input
@@ -1 +1 @@
1
- {"version":3,"file":"ng-zorro-antd-extension-print.mjs","sources":["../../../components/print/nzx-print-content.directive.ts","../../../components/print/nzx-print.component.ts","../../../components/print/nzx-print-v.component.ts","../../../components/print/nzx-print.directive.ts","../../../components/print/nzx-print.module.ts","../../../components/print/public-api.ts","../../../components/print/ng-zorro-antd-extension-print.ts"],"sourcesContent":["import { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[nzxPrintContent]',\n})\nexport class NzxPrintContentDirective {\n @Input() identifierStr: string | string[] = '';\n @Input() customStyle = '';\n constructor(public elementRef: ElementRef) {}\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ContentChild,\n ElementRef,\n Inject,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { getElementByTag } from 'ng-zorro-antd-extension/util';\nimport { NzxPrintContentDirective } from './nzx-print-content.directive';\n\n/**\n * 使用Paged.js打印\n */\n@Component({\n selector: 'nzx-print',\n template: `\n <ng-content select=\"[nzxPrintHeader]\"></ng-content>\n <div #iframeContainer></div>\n `,\n})\nexport class NzxPrintComponent implements OnInit, AfterViewInit {\n @Input() printTitle = 'pdf';\n /**\n * a4 794px1123px\n */\n @Input() width = 814;\n @Input() height = 1143;\n @Input() enablePreview = true;\n @Input() identifierStr: string | string[] = '';\n @Input() pagedCDN = '';\n\n @ViewChild('iframeContainer', { read: ElementRef, static: true })\n private containerRef!: ElementRef;\n\n @ContentChild(NzxPrintContentDirective, { read: ElementRef, static: true })\n private _printEl!: ElementRef;\n private iframeEl!: HTMLIFrameElement;\n private _title = this.document.title;\n\n private afterPrint = () => {\n this.iframeEl.contentWindow!.parent.document.title = this._title;\n };\n private beforePrint = () => {\n this.iframeEl.contentWindow!.parent.document.title = this.printTitle;\n };\n\n constructor(\n private platform: Platform,\n @Inject(DOCUMENT) private document: Document\n ) {}\n\n ngOnInit(): void {\n if (!this.pagedCDN) {\n throw new Error('pagedCDN is required');\n }\n }\n\n ngAfterViewInit(): void {\n this.render();\n }\n\n print() {\n if (this.iframeEl.contentWindow) {\n this.iframeEl.contentWindow.focus();\n this.iframeEl.contentWindow.print();\n }\n }\n\n refresh() {\n setTimeout(() => {\n this.render();\n }, 100);\n }\n\n private render() {\n this.iframeEl = this.document.createElement('iframe');\n this.iframeEl.height = this.height + '';\n this.iframeEl.width = this.width + '';\n this.iframeEl.style.border = '1px solid #ccc';\n this.iframeEl.style.background = '#fff';\n\n if (!this.enablePreview) {\n this.iframeEl.style.visibility = 'hidden';\n if (this.platform.FIREFOX) {\n this.iframeEl.setAttribute(\n 'style',\n 'width: 1px; height: 100px; position: fixed; left: 0; top: 0; opacity: 0; border-width: 0; margin: 0; padding: 0'\n );\n } else {\n this.iframeEl.setAttribute(\n 'style',\n 'visibility: hidden; height: 0; width: 0; position: absolute; border: 0'\n );\n }\n }\n if (this.containerRef) {\n this.containerRef.nativeElement.innerHTML = '';\n this.containerRef.nativeElement.appendChild(this.iframeEl);\n }\n\n if (this.iframeEl.contentWindow) {\n this.iframeEl.contentWindow.document.open();\n this.iframeEl.contentWindow.document.write(this.getTemplateStr());\n this.iframeEl.contentWindow.document.close();\n // chorme bug\n this.iframeEl.contentWindow.onbeforeprint = this.beforePrint;\n this.iframeEl.contentWindow.onafterprint = this.afterPrint;\n }\n }\n\n private getTemplateStr() {\n const styles = getElementByTag('style', this.identifierStr);\n\n const scripts = `\n <script src=\"${this.pagedCDN}\"></script>\n <script>\n class RepeatingTableHeaders extends Paged.Handler {\n constructor(chunker, polisher, caller) {\n super(chunker, polisher, caller);\n }\n\n afterPageLayout(pageElement, page, breakToken, chunker) {\n let tables = pageElement.querySelectorAll('table[data-split-from]');\n tables.forEach((table) => {\n let ref = table.dataset.ref;\n let sourceTable = chunker.source.querySelector(\n \"[data-ref='\" + ref + \"']\"\n );\n let header = sourceTable.querySelector('thead');\n if (header) {\n let clonedHeader = header.cloneNode(true);\n table.insertBefore(clonedHeader, table.firstChild);\n }\n });\n }\n }\n Paged.registerHandlers(RepeatingTableHeaders);\n </script>\n `;\n\n let html = `\n <!DOCTYPE html>\n <html>\n <head>\n <meta charset=\"utf-8\" />\n <title>${this.printTitle}</title>\n <base href=\"/\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link\n rel=\"preconnect\"\n href=\"https://winkong-frontend.oss-cn-qingdao.aliyuncs.com\"\n />\n <style>\n ::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n }\n ::-webkit-scrollbar-thumb {\n background-color: #999;\n -webkit-border-radius: 5px;\n border-radius: 5px;\n }\n ::-webkit-scrollbar-thumb:vertical:hover {\n background-color: #666;\n }\n ::-webkit-scrollbar-thumb:vertical:active {\n background-color: #666;\n }\n ::-webkit-scrollbar-button {\n display: none;\n }\n ::-webkit-scrollbar-track {\n background-color: #f1f1f1;\n }\n </style>\n\n ${styles}\n ${scripts}\n </head>\n <body>\n ${this._printEl.nativeElement.outerHTML}\n </body>\n </html>\n `;\n html = html.replace(/<!---->/g, ' ');\n return html;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport {\n CoreViewer,\n Navigation,\n PageViewMode,\n Payload,\n SingleDocumentOptions,\n} from '@vivliostyle/core';\nimport { NzxPrintContentDirective } from './nzx-print-content.directive';\n\n/**\n * Vivliostyle 打印\n */\n@Component({\n selector: 'nzx-print-v',\n template: `\n <ng-content select=\"[nzxPrintHeader]\"></ng-content>\n\n <div #vivView [ngStyle]=\"{ margin: '10px 0' }\"></div>\n\n <div nz-row nzJustify=\"end\">\n <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>\n <nz-pagination\n [nzPageIndex]=\"1\"\n [nzTotal]=\"pageTotal\"\n [nzPageSize]=\"1\"\n [nzSize]=\"'small'\"\n [nzShowTotal]=\"totalTemplate\"\n nzShowQuickJumper\n (nzPageIndexChange)=\"onPageIndexChange($event)\"\n ></nz-pagination>\n </div>\n `,\n})\nexport class NzxPrintVComponent implements OnDestroy, AfterViewInit {\n @Input() printTitle = 'pdf';\n /**\n * a4 794px1123px\n */\n @Input() width = 814;\n @Input() height = 1143;\n @Input() enablePreview = true;\n @Input() pixelRatio = 8;\n @Output() pageRenderComplete = new EventEmitter<boolean>();\n\n viewer: CoreViewer | undefined;\n pageTotal = 0;\n\n @ViewChild('vivView')\n private vivViewRef!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(NzxPrintContentDirective)\n private _printElQueryList!: QueryList<NzxPrintContentDirective>;\n private _title = document.title;\n private iframeEl!: HTMLIFrameElement;\n private _isRenderComplete = false;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.createIframeWrapper();\n }, 1000);\n }\n\n ngOnDestroy(): void {\n if (this.viewer) {\n this.clearView();\n }\n }\n\n onPageIndexChange(num: number) {\n if (this.viewer) {\n this.viewer.navigateToPage(Navigation.EPAGE, num - 1);\n }\n }\n\n print() {\n if (this._isRenderComplete) {\n this.iframeEl.contentWindow!.print();\n } else {\n console.warn('rending...');\n }\n }\n\n refresh() {\n setTimeout(() => {\n this.createIframeWrapper();\n }, 100);\n }\n\n private createIframeWrapper() {\n if (this.vivViewRef) {\n this.clearView();\n\n this.iframeEl = document.createElement('iframe');\n this.iframeEl.height = this.height + '';\n this.iframeEl.width = this.width + '';\n this.iframeEl.style.border = '1px solid #ccc';\n this.iframeEl.style.background = '#fff';\n\n const template = `\n <!DOCTYPE html>\n <html data-vivliostyle-paginated=\"true\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <base href=\"/\" />\n <title>${this.printTitle}</title>\n <style>\n html[data-vivliostyle-paginated] {\n width: 100%;\n height: 100%;\n }\n html[data-vivliostyle-paginated] body,\n html[data-vivliostyle-paginated] [data-vivliostyle-viewer-viewport] {\n width: 100% !important;\n height: 100% !important;\n background: #fff;\n }\n html[data-vivliostyle-paginated],\n html[data-vivliostyle-paginated] body {\n margin: 0;\n padding: 0;\n }\n </style>\n <style id=\"vivliostyle-page-rules\"></style>\n </head>\n <body>\n <div id=\"vivliostyle-viewer-viewport\"></div>\n </body>\n </html>\n `;\n\n this.iframeEl.srcdoc = template;\n this.vivViewRef.nativeElement.appendChild(this.iframeEl);\n this.iframeEl.contentWindow!.onbeforeprint = () => {\n this.iframeEl.contentWindow!.parent.document.title = this.printTitle;\n };\n this.iframeEl.contentWindow!.onafterprint = () => {\n this.iframeEl.contentWindow!.parent.document.title = this._title;\n };\n this.createVivViewer();\n }\n }\n\n private createVivViewer() {\n this.iframeEl.onload = () => {\n const els: NzxPrintContentDirective[] = this._printElQueryList.toArray();\n const templates = this.getVivTemplates(els);\n const options: SingleDocumentOptions[] = [];\n templates.forEach((template) => {\n const docBlob = new Blob([template], {\n type: 'text/html',\n });\n const docURL = URL.createObjectURL(docBlob);\n options.push({ url: docURL });\n });\n this.viewer = new CoreViewer(\n {\n viewportElement: this.iframeEl.contentWindow?.document.body\n .firstElementChild as HTMLElement,\n },\n {\n pageViewMode: PageViewMode.SINGLE_PAGE,\n pixelRatio: this.pixelRatio,\n }\n );\n this.viewer.loadDocument(options);\n this.createListener(this.viewer);\n };\n }\n\n private handleError = (payload: Payload) => {\n console.log('error::', payload);\n };\n\n private handleReadyStateChange = (payload: Payload) => {\n this._isRenderComplete = false;\n this.pageRenderComplete.emit(false);\n if (this.viewer && this.viewer.readyState === 'complete') {\n const intervalTag = setInterval(() => {\n if (\n this.iframeEl &&\n this.iframeEl.contentWindow &&\n this.iframeEl.contentWindow.document\n ) {\n const images =\n this.iframeEl.contentWindow.document.getElementsByTagName('img');\n\n let allImagesLoaded = true;\n for (let i = 0; i < images.length; i++) {\n if (!images[i].complete) {\n allImagesLoaded = false;\n break;\n }\n }\n if (allImagesLoaded) {\n console.log('All images in iframe loaded successfully');\n this.pageRenderComplete.emit(true);\n this._isRenderComplete = true;\n clearInterval(intervalTag);\n }\n }\n }, 1000);\n }\n };\n\n private handleHyperlink = (payload: Payload) => {\n console.log('handleHyperlink::', payload);\n };\n\n private handleLoaded = (payload: Payload) => {\n console.log('handleLoaded::', payload);\n };\n\n private handleNavigation = (payload: Payload) => {\n this.pageTotal = payload.epageCount;\n this.cd.markForCheck();\n };\n\n private createListener(viewer: CoreViewer) {\n viewer.addListener('error', this.handleError);\n viewer.addListener('readystatechange', this.handleReadyStateChange);\n viewer.addListener('loaded', this.handleLoaded);\n viewer.addListener('hyperlink', this.handleHyperlink);\n viewer.addListener('nav', this.handleNavigation);\n }\n\n private removeListeners(viewer: CoreViewer) {\n viewer.removeListener('error', this.handleError);\n viewer.removeListener('readystatechange', this.handleReadyStateChange);\n viewer.removeListener('loaded', this.handleLoaded);\n viewer.removeListener('hyperlink', this.handleHyperlink);\n viewer.removeListener('nav', this.handleNavigation);\n }\n\n private getStyles(identifierStr: string | string[]): string {\n const stylesArray: string[] = [];\n const styleElements = document.getElementsByTagName('style');\n const length = styleElements.length;\n let identifiers: string[] = [];\n if (Array.isArray(identifierStr)) {\n identifiers = [...identifierStr];\n } else {\n identifiers = [identifierStr];\n }\n for (let index = 0; index < length; index++) {\n identifiers.forEach((s) => {\n if (styleElements[index].outerHTML.includes(s)) {\n const formateStr = styleElements[index].outerHTML.replace(\n /\\/\\*[\\s\\S]*?\\*\\//g,\n ''\n );\n stylesArray.push(formateStr);\n }\n });\n }\n return stylesArray.join('\\r\\n');\n }\n\n private getVivTemplates(directives: NzxPrintContentDirective[]) {\n const templates: string[] = [];\n directives.forEach((d) => {\n let styles = '';\n if (d.identifierStr || d.identifierStr.length > 0) {\n styles = this.getStyles(d.identifierStr);\n }\n\n let html = `\n <!DOCTYPE html>\n <html>\n <head>\n <meta charset=\"utf-8\" />\n <title>${this.printTitle}</title>\n <base href=\"/\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n ${d.customStyle}\n ${styles}\n </head>\n <body>\n ${d.elementRef.nativeElement.outerHTML}\n </body>\n </html>\n `;\n html = html.replace(/<!---->/g, ' ');\n templates.push(html);\n });\n\n return templates;\n }\n\n private clearView() {\n if (this.viewer) {\n this.removeListeners(this.viewer);\n }\n this.vivViewRef.nativeElement.innerHTML = '';\n this.viewer = undefined;\n this._isRenderComplete = false;\n }\n}\n","import {\n AfterViewInit,\n Directive,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport { getElementByTag } from 'ng-zorro-antd-extension/util';\n\n/**\n * 常规打印\n */\n@Directive({\n selector: 'button[nzxPrint]',\n})\nexport class NzxPrintDirective implements OnInit, AfterViewInit {\n @Input() printEl: HTMLElement | string | undefined;\n @Input() printTitle: string | undefined = 'pdf';\n @Input() identifierStr: string | string[] = '';\n private _printEl!: HTMLElement;\n\n ngOnInit(): void {\n if (!this.printEl) {\n throw new Error(\n 'The \"printEl\" input is required for the nzxPrint directive.'\n );\n }\n }\n\n ngAfterViewInit(): void {\n this.getElement();\n }\n\n @HostListener('click')\n private print(): void {\n const newWin = window.open('', '_blank');\n\n if (newWin) {\n const styles = getElementByTag('style', this.identifierStr);\n const links = getElementByTag('link');\n const baseTag = getElementByTag('base');\n\n const scripts = `\n <script>\n window.onload = function () {\n window.print();\n };\n window.onafterprint = function () {\n window.close();\n };\n </script>\n `;\n\n let html = `\n <!DOCTYPE html>\n <html>\n <head>\n <title>${this.printTitle}</title>\n ${baseTag}\n ${links}\n ${styles}\n ${scripts}\n </head>\n <body>\n ${this._printEl.outerHTML}\n </body>\n </html>\n `;\n html = html.replace(/<!---->/g, ' ');\n newWin.document.open();\n newWin.document.write(html);\n newWin.document.close();\n }\n }\n\n private getElement(): void {\n if (typeof this.printEl === 'string') {\n const el: HTMLElement | null = document.querySelector(this.printEl);\n if (el) {\n this._printEl = el;\n } else {\n throw new Error('printEl is not find');\n }\n } else if (this.printEl instanceof HTMLElement) {\n this._printEl = this.printEl;\n } else {\n throw new Error('printEl is invalid');\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NzxPrintComponent } from './nzx-print.component';\nimport { NzxPrintDirective } from './nzx-print.directive';\nimport { NzxPrintVComponent } from './nzx-print-v.component';\nimport { NzPaginationModule } from 'ng-zorro-antd/pagination';\nimport { NzGridModule } from 'ng-zorro-antd/grid';\nimport { NzxPrintContentDirective } from './nzx-print-content.directive';\n\n@NgModule({\n declarations: [\n NzxPrintComponent,\n NzxPrintVComponent,\n NzxPrintDirective,\n NzxPrintContentDirective,\n ],\n imports: [CommonModule, NzGridModule, NzPaginationModule],\n exports: [\n NzxPrintComponent,\n NzxPrintVComponent,\n NzxPrintContentDirective,\n NzxPrintDirective,\n ],\n})\nexport class NzxPrintModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nexport * from './nzx-print.component';\nexport * from './nzx-print-v.component';\nexport * from './nzx-print.directive';\nexport * from './nzx-print.module';\nexport * from './nzx-print-content.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"ng-zorro-antd-extension-print.mjs","sources":["../../../components/print/nzx-print-content.directive.ts","../../../components/print/nzx-print.component.ts","../../../components/print/nzx-print-v.component.ts","../../../components/print/nzx-print.directive.ts","../../../components/print/nzx-print.module.ts","../../../components/print/public-api.ts","../../../components/print/ng-zorro-antd-extension-print.ts"],"sourcesContent":["import { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[nzxPrintContent]',\n})\nexport class NzxPrintContentDirective {\n @Input() identifierStr: string | string[] = '';\n @Input() customStyle = '';\n constructor(public elementRef: ElementRef) {}\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ContentChild,\n ElementRef,\n Inject,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { getElementByTag } from 'ng-zorro-antd-extension/util';\nimport { NzxPrintContentDirective } from './nzx-print-content.directive';\n\n/**\n * 使用Paged.js打印\n */\n@Component({\n selector: 'nzx-print',\n template: `\n <ng-content select=\"[nzxPrintHeader]\"></ng-content>\n <div #iframeContainer></div>\n `,\n})\nexport class NzxPrintComponent implements OnInit, AfterViewInit {\n @Input() printTitle = 'pdf';\n /**\n * a4 794px1123px\n */\n @Input() width = 814;\n @Input() height = 1143;\n @Input() enablePreview = true;\n @Input() identifierStr: string | string[] = '';\n @Input() pagedCDN = '';\n\n @ViewChild('iframeContainer', { read: ElementRef, static: true })\n private containerRef!: ElementRef;\n\n @ContentChild(NzxPrintContentDirective, { read: ElementRef, static: true })\n private _printEl!: ElementRef;\n private iframeEl!: HTMLIFrameElement;\n private _title = this.document.title;\n\n private afterPrint = () => {\n this.iframeEl.contentWindow!.parent.document.title = this._title;\n };\n private beforePrint = () => {\n this.iframeEl.contentWindow!.parent.document.title = this.printTitle;\n };\n\n constructor(\n private platform: Platform,\n @Inject(DOCUMENT) private document: Document\n ) {}\n\n ngOnInit(): void {\n if (!this.pagedCDN) {\n throw new Error('pagedCDN is required');\n }\n }\n\n ngAfterViewInit(): void {\n this.render();\n }\n\n print() {\n if (this.iframeEl.contentWindow) {\n this.iframeEl.contentWindow.focus();\n this.iframeEl.contentWindow.print();\n }\n }\n\n refresh() {\n setTimeout(() => {\n this.render();\n }, 100);\n }\n\n private render() {\n this.iframeEl = this.document.createElement('iframe');\n this.iframeEl.height = this.height + '';\n this.iframeEl.width = this.width + '';\n this.iframeEl.style.border = '1px solid #ccc';\n this.iframeEl.style.background = '#fff';\n\n if (!this.enablePreview) {\n this.iframeEl.style.visibility = 'hidden';\n if (this.platform.FIREFOX) {\n this.iframeEl.setAttribute(\n 'style',\n 'width: 1px; height: 100px; position: fixed; left: 0; top: 0; opacity: 0; border-width: 0; margin: 0; padding: 0'\n );\n } else {\n this.iframeEl.setAttribute(\n 'style',\n 'visibility: hidden; height: 0; width: 0; position: absolute; border: 0'\n );\n }\n }\n if (this.containerRef) {\n this.containerRef.nativeElement.innerHTML = '';\n this.containerRef.nativeElement.appendChild(this.iframeEl);\n }\n\n if (this.iframeEl.contentWindow) {\n this.iframeEl.contentWindow.document.open();\n this.iframeEl.contentWindow.document.write(this.getTemplateStr());\n this.iframeEl.contentWindow.document.close();\n // chorme bug\n this.iframeEl.contentWindow.onbeforeprint = this.beforePrint;\n this.iframeEl.contentWindow.onafterprint = this.afterPrint;\n }\n }\n\n private getTemplateStr() {\n const styles = getElementByTag('style', this.identifierStr);\n\n const scripts = `\n <script src=\"${this.pagedCDN}\"></script>\n <script>\n class RepeatingTableHeaders extends Paged.Handler {\n constructor(chunker, polisher, caller) {\n super(chunker, polisher, caller);\n }\n\n afterPageLayout(pageElement, page, breakToken, chunker) {\n let tables = pageElement.querySelectorAll('table[data-split-from]');\n tables.forEach((table) => {\n let ref = table.dataset.ref;\n let sourceTable = chunker.source.querySelector(\n \"[data-ref='\" + ref + \"']\"\n );\n let header = sourceTable.querySelector('thead');\n if (header) {\n let clonedHeader = header.cloneNode(true);\n table.insertBefore(clonedHeader, table.firstChild);\n }\n });\n }\n }\n Paged.registerHandlers(RepeatingTableHeaders);\n </script>\n `;\n\n let html = `\n <!DOCTYPE html>\n <html>\n <head>\n <meta charset=\"utf-8\" />\n <title>${this.printTitle}</title>\n <base href=\"/\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link\n rel=\"preconnect\"\n href=\"https://winkong-frontend.oss-cn-qingdao.aliyuncs.com\"\n />\n <style>\n ::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n }\n ::-webkit-scrollbar-thumb {\n background-color: #999;\n -webkit-border-radius: 5px;\n border-radius: 5px;\n }\n ::-webkit-scrollbar-thumb:vertical:hover {\n background-color: #666;\n }\n ::-webkit-scrollbar-thumb:vertical:active {\n background-color: #666;\n }\n ::-webkit-scrollbar-button {\n display: none;\n }\n ::-webkit-scrollbar-track {\n background-color: #f1f1f1;\n }\n </style>\n\n ${styles}\n ${scripts}\n </head>\n <body>\n ${this._printEl.nativeElement.outerHTML}\n </body>\n </html>\n `;\n html = html.replace(/<!---->/g, ' ');\n return html;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n CoreViewer,\n Navigation,\n PageViewMode,\n Payload,\n SingleDocumentOptions,\n} from '@vivliostyle/core';\nimport { NzxPrintContentDirective } from './nzx-print-content.directive';\n\n/**\n * Vivliostyle 打印\n */\n@Component({\n selector: 'nzx-print-v',\n template: `\n <ng-content select=\"[nzxPrintHeader]\"></ng-content>\n\n <div #vivView [ngStyle]=\"{ margin: '10px 0' }\"></div>\n\n <div nz-row nzJustify=\"end\" *ngIf=\"enablePreview\">\n <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>\n <nz-pagination\n [nzPageIndex]=\"1\"\n [nzTotal]=\"pageTotal\"\n [nzPageSize]=\"1\"\n [nzSize]=\"'small'\"\n [nzShowTotal]=\"totalTemplate\"\n nzShowQuickJumper\n (nzPageIndexChange)=\"onPageIndexChange($event)\"\n ></nz-pagination>\n </div>\n `,\n})\nexport class NzxPrintVComponent implements OnDestroy, AfterViewInit {\n @Input() printTitle = 'pdf';\n /**\n * a4 794px1123px\n */\n @Input() width = 814;\n @Input() height = 1143;\n @Input() enablePreview = true;\n @Input() pixelRatio = 8;\n @Output() pageRenderComplete = new EventEmitter<boolean>();\n\n viewer: CoreViewer | undefined;\n pageTotal = 0;\n\n @ViewChild('vivView')\n private vivViewRef!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(NzxPrintContentDirective)\n private _printElQueryList!: QueryList<NzxPrintContentDirective>;\n private _title = document.title;\n private iframeEl!: HTMLIFrameElement;\n private _isRenderComplete = false;\n\n constructor(private platform: Platform, private cd: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.createIframeWrapper();\n }, 1000);\n }\n\n ngOnDestroy(): void {\n if (this.viewer) {\n this.clearView();\n }\n }\n\n onPageIndexChange(num: number) {\n if (this.viewer) {\n this.viewer.navigateToPage(Navigation.EPAGE, num - 1);\n }\n }\n\n print() {\n if (this._isRenderComplete) {\n this.iframeEl.contentWindow!.print();\n } else {\n console.warn('rending...');\n }\n }\n\n refresh() {\n setTimeout(() => {\n this.createIframeWrapper();\n }, 100);\n }\n\n private createIframeWrapper() {\n if (this.vivViewRef) {\n this.clearView();\n if (!this.enablePreview) {\n this.vivViewRef.nativeElement.style.visibility = 'hidden';\n if (this.platform.FIREFOX) {\n this.vivViewRef.nativeElement.setAttribute(\n 'style',\n 'width: 1px; height: 100px; position: fixed; left: 0; top: 0; opacity: 0; border-width: 0; margin: 0; padding: 0'\n );\n } else {\n this.vivViewRef.nativeElement.setAttribute(\n 'style',\n 'visibility: hidden; height: 0; width: 0; position: absolute; border: 0'\n );\n }\n }\n\n this.iframeEl = document.createElement('iframe');\n this.iframeEl.height = this.height + '';\n this.iframeEl.width = this.width + '';\n this.iframeEl.style.border = '1px solid #ccc';\n this.iframeEl.style.background = '#fff';\n\n const template = `\n <!DOCTYPE html>\n <html data-vivliostyle-paginated=\"true\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <base href=\"/\" />\n <title>${this.printTitle}</title>\n <style>\n html[data-vivliostyle-paginated] {\n width: 100%;\n height: 100%;\n }\n html[data-vivliostyle-paginated] body,\n html[data-vivliostyle-paginated] [data-vivliostyle-viewer-viewport] {\n width: 100% !important;\n height: 100% !important;\n background: #fff;\n }\n html[data-vivliostyle-paginated],\n html[data-vivliostyle-paginated] body {\n margin: 0;\n padding: 0;\n }\n </style>\n <style id=\"vivliostyle-page-rules\"></style>\n </head>\n <body>\n <div id=\"vivliostyle-viewer-viewport\"></div>\n </body>\n </html>\n `;\n\n this.iframeEl.srcdoc = template;\n this.vivViewRef.nativeElement.appendChild(this.iframeEl);\n this.iframeEl.contentWindow!.onbeforeprint = () => {\n this.iframeEl.contentWindow!.parent.document.title = this.printTitle;\n };\n this.iframeEl.contentWindow!.onafterprint = () => {\n this.iframeEl.contentWindow!.parent.document.title = this._title;\n };\n this.createVivViewer();\n }\n }\n\n private createVivViewer() {\n this.iframeEl.onload = () => {\n const els: NzxPrintContentDirective[] = this._printElQueryList.toArray();\n const templates = this.getVivTemplates(els);\n const options: SingleDocumentOptions[] = [];\n templates.forEach((template) => {\n const docBlob = new Blob([template], {\n type: 'text/html',\n });\n const docURL = URL.createObjectURL(docBlob);\n options.push({ url: docURL });\n });\n this.viewer = new CoreViewer(\n {\n viewportElement: this.iframeEl.contentWindow?.document.body\n .firstElementChild as HTMLElement,\n },\n {\n pageViewMode: PageViewMode.SINGLE_PAGE,\n pixelRatio: this.pixelRatio,\n }\n );\n this.viewer.loadDocument(options);\n this.createListener(this.viewer);\n };\n }\n\n private handleError = (payload: Payload) => {\n console.log('error::', payload);\n };\n\n private handleReadyStateChange = (payload: Payload) => {\n this._isRenderComplete = false;\n this.pageRenderComplete.emit(false);\n if (this.viewer && this.viewer.readyState === 'complete') {\n const intervalTag = setInterval(() => {\n if (\n this.iframeEl &&\n this.iframeEl.contentWindow &&\n this.iframeEl.contentWindow.document\n ) {\n const images =\n this.iframeEl.contentWindow.document.getElementsByTagName('img');\n\n let allImagesLoaded = true;\n for (let i = 0; i < images.length; i++) {\n if (!images[i].complete) {\n allImagesLoaded = false;\n break;\n }\n }\n if (allImagesLoaded) {\n console.log('All images in iframe loaded successfully');\n this.pageRenderComplete.emit(true);\n this._isRenderComplete = true;\n clearInterval(intervalTag);\n }\n }\n }, 1000);\n }\n };\n\n private handleHyperlink = (payload: Payload) => {\n console.log('handleHyperlink::', payload);\n };\n\n private handleLoaded = (payload: Payload) => {\n console.log('handleLoaded::', payload);\n };\n\n private handleNavigation = (payload: Payload) => {\n this.pageTotal = payload.epageCount;\n this.cd.markForCheck();\n };\n\n private createListener(viewer: CoreViewer) {\n viewer.addListener('error', this.handleError);\n viewer.addListener('readystatechange', this.handleReadyStateChange);\n viewer.addListener('loaded', this.handleLoaded);\n viewer.addListener('hyperlink', this.handleHyperlink);\n viewer.addListener('nav', this.handleNavigation);\n }\n\n private removeListeners(viewer: CoreViewer) {\n viewer.removeListener('error', this.handleError);\n viewer.removeListener('readystatechange', this.handleReadyStateChange);\n viewer.removeListener('loaded', this.handleLoaded);\n viewer.removeListener('hyperlink', this.handleHyperlink);\n viewer.removeListener('nav', this.handleNavigation);\n }\n\n private getStyles(identifierStr: string | string[]): string {\n const stylesArray: string[] = [];\n const styleElements = document.getElementsByTagName('style');\n const length = styleElements.length;\n let identifiers: string[] = [];\n if (Array.isArray(identifierStr)) {\n identifiers = [...identifierStr];\n } else {\n identifiers = [identifierStr];\n }\n for (let index = 0; index < length; index++) {\n identifiers.forEach((s) => {\n if (styleElements[index].outerHTML.includes(s)) {\n const formateStr = styleElements[index].outerHTML.replace(\n /\\/\\*[\\s\\S]*?\\*\\//g,\n ''\n );\n stylesArray.push(formateStr);\n }\n });\n }\n return stylesArray.join('\\r\\n');\n }\n\n private getVivTemplates(directives: NzxPrintContentDirective[]) {\n const templates: string[] = [];\n directives.forEach((d) => {\n let styles = '';\n if (d.identifierStr || d.identifierStr.length > 0) {\n styles = this.getStyles(d.identifierStr);\n }\n\n let html = `\n <!DOCTYPE html>\n <html>\n <head>\n <meta charset=\"utf-8\" />\n <title>${this.printTitle}</title>\n <base href=\"/\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n ${d.customStyle}\n ${styles}\n </head>\n <body>\n ${d.elementRef.nativeElement.outerHTML}\n </body>\n </html>\n `;\n html = html.replace(/<!---->/g, ' ');\n templates.push(html);\n });\n\n return templates;\n }\n\n private clearView() {\n if (this.viewer) {\n this.removeListeners(this.viewer);\n }\n this.vivViewRef.nativeElement.innerHTML = '';\n this.viewer = undefined;\n this._isRenderComplete = false;\n }\n}\n","import {\n AfterViewInit,\n Directive,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport { getElementByTag } from 'ng-zorro-antd-extension/util';\n\n/**\n * 常规打印\n */\n@Directive({\n selector: 'button[nzxPrint]',\n})\nexport class NzxPrintDirective implements OnInit, AfterViewInit {\n @Input() printEl: HTMLElement | string | undefined;\n @Input() printTitle: string | undefined = 'pdf';\n @Input() identifierStr: string | string[] = '';\n private _printEl!: HTMLElement;\n\n ngOnInit(): void {\n if (!this.printEl) {\n throw new Error(\n 'The \"printEl\" input is required for the nzxPrint directive.'\n );\n }\n }\n\n ngAfterViewInit(): void {\n this.getElement();\n }\n\n @HostListener('click')\n private print(): void {\n const newWin = window.open('', '_blank');\n\n if (newWin) {\n const styles = getElementByTag('style', this.identifierStr);\n const links = getElementByTag('link');\n const baseTag = getElementByTag('base');\n\n const scripts = `\n <script>\n window.onload = function () {\n window.print();\n };\n window.onafterprint = function () {\n window.close();\n };\n </script>\n `;\n\n let html = `\n <!DOCTYPE html>\n <html>\n <head>\n <title>${this.printTitle}</title>\n ${baseTag}\n ${links}\n ${styles}\n ${scripts}\n </head>\n <body>\n ${this._printEl.outerHTML}\n </body>\n </html>\n `;\n html = html.replace(/<!---->/g, ' ');\n newWin.document.open();\n newWin.document.write(html);\n newWin.document.close();\n }\n }\n\n private getElement(): void {\n if (typeof this.printEl === 'string') {\n const el: HTMLElement | null = document.querySelector(this.printEl);\n if (el) {\n this._printEl = el;\n } else {\n throw new Error('printEl is not find');\n }\n } else if (this.printEl instanceof HTMLElement) {\n this._printEl = this.printEl;\n } else {\n throw new Error('printEl is invalid');\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NzxPrintComponent } from './nzx-print.component';\nimport { NzxPrintDirective } from './nzx-print.directive';\nimport { NzxPrintVComponent } from './nzx-print-v.component';\nimport { NzPaginationModule } from 'ng-zorro-antd/pagination';\nimport { NzGridModule } from 'ng-zorro-antd/grid';\nimport { NzxPrintContentDirective } from './nzx-print-content.directive';\n\n@NgModule({\n declarations: [\n NzxPrintComponent,\n NzxPrintVComponent,\n NzxPrintDirective,\n NzxPrintContentDirective,\n ],\n imports: [CommonModule, NzGridModule, NzPaginationModule],\n exports: [\n NzxPrintComponent,\n NzxPrintVComponent,\n NzxPrintContentDirective,\n NzxPrintDirective,\n ],\n})\nexport class NzxPrintModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nexport * from './nzx-print.component';\nexport * from './nzx-print-v.component';\nexport * from './nzx-print.directive';\nexport * from './nzx-print.module';\nexport * from './nzx-print-content.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-zorro-antd-extension",
3
- "version": "17.4.4",
3
+ "version": "17.4.5",
4
4
  "license": "MIT",
5
5
  "description": "An extension based on ng-zorro-antd",
6
6
  "keywords": [
@@ -1,10 +1,12 @@
1
1
  import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnDestroy } from '@angular/core';
2
+ import { Platform } from '@angular/cdk/platform';
2
3
  import { CoreViewer } from '@vivliostyle/core';
3
4
  import * as i0 from "@angular/core";
4
5
  /**
5
6
  * Vivliostyle 打印
6
7
  */
7
8
  export declare class NzxPrintVComponent implements OnDestroy, AfterViewInit {
9
+ private platform;
8
10
  private cd;
9
11
  printTitle: string;
10
12
  /**
@@ -22,7 +24,7 @@ export declare class NzxPrintVComponent implements OnDestroy, AfterViewInit {
22
24
  private _title;
23
25
  private iframeEl;
24
26
  private _isRenderComplete;
25
- constructor(cd: ChangeDetectorRef);
27
+ constructor(platform: Platform, cd: ChangeDetectorRef);
26
28
  ngAfterViewInit(): void;
27
29
  ngOnDestroy(): void;
28
30
  onPageIndexChange(num: number): void;
@@ -16,7 +16,7 @@ export declare abstract class NzxAbstractTableSelect<T extends PageTableRequire>
16
16
  nzxBtnSpan: number;
17
17
  nzxCollapse: boolean;
18
18
  list: T[];
19
- nzxQueryParamsChange: EventEmitter<NzxTableQueryParams | NzxQueryParams>;
19
+ nzxQueryParamsChange: EventEmitter<NzxQueryParams | NzxTableQueryParams>;
20
20
  /**
21
21
  * 组件模式,支持多选单选,默认单选
22
22
  * - single 单选