ng-zorro-antd-extension 17.4.4 → 17.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/blank-field/blank-field.component.d.ts +1 -0
  2. package/esm2022/blank-field/blank-field.component.mjs +20 -10
  3. package/esm2022/print/nzx-print-v.component.mjs +15 -10
  4. package/esm2022/util/lib/scrollToInvalidControl.mjs +29 -0
  5. package/esm2022/util/public-api.mjs +2 -1
  6. package/esm2022/wang-editor-next/ng-zorro-antd-extension-wang-editor-next.mjs +5 -0
  7. package/esm2022/wang-editor-next/public-api.mjs +9 -0
  8. package/esm2022/wang-editor-next/type.mjs +2 -0
  9. package/esm2022/wang-editor-next/wang-editor.component.mjs +247 -0
  10. package/esm2022/wang-editor-next/wang-editor.module.mjs +19 -0
  11. package/esm2022/wang-editor-next/wang-toolbar.component.mjs +57 -0
  12. package/fesm2022/ng-zorro-antd-extension-blank-field.mjs +19 -9
  13. package/fesm2022/ng-zorro-antd-extension-blank-field.mjs.map +1 -1
  14. package/fesm2022/ng-zorro-antd-extension-print.mjs +13 -9
  15. package/fesm2022/ng-zorro-antd-extension-print.mjs.map +1 -1
  16. package/fesm2022/ng-zorro-antd-extension-util.mjs +30 -1
  17. package/fesm2022/ng-zorro-antd-extension-util.mjs.map +1 -1
  18. package/fesm2022/ng-zorro-antd-extension-wang-editor-next.mjs +328 -0
  19. package/fesm2022/ng-zorro-antd-extension-wang-editor-next.mjs.map +1 -0
  20. package/package.json +14 -7
  21. package/print/nzx-print-v.component.d.ts +3 -1
  22. package/util/lib/scrollToInvalidControl.d.ts +7 -0
  23. package/util/public-api.d.ts +1 -0
  24. package/wang-editor-next/index.d.ts +5 -0
  25. package/wang-editor-next/public-api.d.ts +8 -0
  26. package/wang-editor-next/type.d.ts +3 -0
  27. package/wang-editor-next/wang-editor.component.d.ts +43 -0
  28. package/wang-editor-next/wang-editor.module.d.ts +9 -0
  29. package/wang-editor-next/wang-toolbar.component.d.ts +19 -0
@@ -0,0 +1,19 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { NzxWangEditorDirective } from './wang-editor.component';
4
+ import { NzxWangToolbarDirective } from './wang-toolbar.component';
5
+ import * as i0 from "@angular/core";
6
+ export class NzxWangEditorModule {
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxWangEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: NzxWangEditorModule, declarations: [NzxWangToolbarDirective, NzxWangEditorDirective], imports: [CommonModule], exports: [NzxWangToolbarDirective, NzxWangEditorDirective] }); }
9
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxWangEditorModule, imports: [CommonModule] }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxWangEditorModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ declarations: [NzxWangToolbarDirective, NzxWangEditorDirective],
15
+ imports: [CommonModule],
16
+ exports: [NzxWangToolbarDirective, NzxWangEditorDirective],
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FuZy1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy93YW5nLWVkaXRvci1uZXh0L3dhbmctZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFPbkUsTUFBTSxPQUFPLG1CQUFtQjsrR0FBbkIsbUJBQW1CO2dIQUFuQixtQkFBbUIsaUJBSmYsdUJBQXVCLEVBQUUsc0JBQXNCLGFBQ3BELFlBQVksYUFDWix1QkFBdUIsRUFBRSxzQkFBc0I7Z0hBRTlDLG1CQUFtQixZQUhwQixZQUFZOzs0RkFHWCxtQkFBbUI7a0JBTC9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsdUJBQXVCLEVBQUUsc0JBQXNCLENBQUM7b0JBQy9ELE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsdUJBQXVCLEVBQUUsc0JBQXNCLENBQUM7aUJBQzNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE56eFdhbmdFZGl0b3JEaXJlY3RpdmUgfSBmcm9tICcuL3dhbmctZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOenhXYW5nVG9vbGJhckRpcmVjdGl2ZSB9IGZyb20gJy4vd2FuZy10b29sYmFyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW056eFdhbmdUb29sYmFyRGlyZWN0aXZlLCBOenhXYW5nRWRpdG9yRGlyZWN0aXZlXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtOenhXYW5nVG9vbGJhckRpcmVjdGl2ZSwgTnp4V2FuZ0VkaXRvckRpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIE56eFdhbmdFZGl0b3JNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,57 @@
1
+ import { Directive, HostBinding, Input, } from '@angular/core';
2
+ import { createToolbar, DomEditor, } from '@wangeditor-next/editor';
3
+ import * as i0 from "@angular/core";
4
+ export class NzxWangToolbarDirective {
5
+ constructor(toolbarRef) {
6
+ this.toolbarRef = toolbarRef;
7
+ this.mode = 'default';
8
+ this.defaultConfig = {};
9
+ this.display = 'display:block';
10
+ }
11
+ ngOnInit() {
12
+ this.initToolbar();
13
+ }
14
+ ngOnChanges(changes) {
15
+ if (changes['editor'] && !changes['editor'].isFirstChange()) {
16
+ this.initToolbar();
17
+ }
18
+ }
19
+ initToolbar() {
20
+ if (!this.toolbarRef)
21
+ return;
22
+ if (!this.editor)
23
+ return;
24
+ if (DomEditor.getToolbar(this.editor))
25
+ return; // 不重复创建
26
+ this.toolbar = createToolbar({
27
+ editor: this.editor,
28
+ selector: this.toolbarRef.nativeElement || '<div></div>',
29
+ mode: this.mode,
30
+ config: this.defaultConfig,
31
+ });
32
+ }
33
+ ngOnDestroy() {
34
+ if (this.toolbar) {
35
+ this.toolbar.destroy();
36
+ }
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxWangToolbarDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
39
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NzxWangToolbarDirective, selector: "nzx-wang-toolbar,[nzxWangToolbar]", inputs: { mode: "mode", editor: "editor", defaultConfig: "defaultConfig" }, host: { properties: { "style": "this.display" } }, exportAs: ["NzxWangToolbar"], usesOnChanges: true, ngImport: i0 }); }
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxWangToolbarDirective, decorators: [{
42
+ type: Directive,
43
+ args: [{
44
+ selector: 'nzx-wang-toolbar,[nzxWangToolbar]',
45
+ exportAs: 'NzxWangToolbar',
46
+ }]
47
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { mode: [{
48
+ type: Input
49
+ }], editor: [{
50
+ type: Input
51
+ }], defaultConfig: [{
52
+ type: Input
53
+ }], display: [{
54
+ type: HostBinding,
55
+ args: ['style']
56
+ }] } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FuZy10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvd2FuZy1lZGl0b3ItbmV4dC93YW5nLXRvb2xiYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsYUFBYSxFQUNiLFNBQVMsR0FJVixNQUFNLHlCQUF5QixDQUFDOztBQU9qQyxNQUFNLE9BQU8sdUJBQXVCO0lBU2xDLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFSakMsU0FBSSxHQUFTLFNBQVMsQ0FBQztRQUV2QixrQkFBYSxHQUE0QixFQUFFLENBQUM7UUFFL0IsWUFBTyxHQUFHLGVBQWUsQ0FBQztJQUlILENBQUM7SUFFOUMsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQzNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUN6QixJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sQ0FBQyxRQUFRO1FBQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDO1lBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLElBQUksYUFBYTtZQUN4RCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDM0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7K0dBckNVLHVCQUF1QjttR0FBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQ0FBbUM7b0JBQzdDLFFBQVEsRUFBRSxnQkFBZ0I7aUJBQzNCOytFQUVVLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFZ0IsT0FBTztzQkFBNUIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgY3JlYXRlVG9vbGJhcixcbiAgRG9tRWRpdG9yLFxuICBJRG9tRWRpdG9yLFxuICBJVG9vbGJhckNvbmZpZyxcbiAgVG9vbGJhcixcbn0gZnJvbSAnQHdhbmdlZGl0b3ItbmV4dC9lZGl0b3InO1xuaW1wb3J0IHsgTW9kZSB9IGZyb20gJy4vdHlwZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ256eC13YW5nLXRvb2xiYXIsW256eFdhbmdUb29sYmFyXScsXG4gIGV4cG9ydEFzOiAnTnp4V2FuZ1Rvb2xiYXInLFxufSlcbmV4cG9ydCBjbGFzcyBOenhXYW5nVG9vbGJhckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBtb2RlOiBNb2RlID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBlZGl0b3IhOiBJRG9tRWRpdG9yO1xuICBASW5wdXQoKSBkZWZhdWx0Q29uZmlnOiBQYXJ0aWFsPElUb29sYmFyQ29uZmlnPiA9IHt9O1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUnKSBkaXNwbGF5ID0gJ2Rpc3BsYXk6YmxvY2snO1xuXG4gIHRvb2xiYXIhOiBUb29sYmFyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9vbGJhclJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRUb29sYmFyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2VkaXRvciddICYmICFjaGFuZ2VzWydlZGl0b3InXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgIHRoaXMuaW5pdFRvb2xiYXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRUb29sYmFyKCkge1xuICAgIGlmICghdGhpcy50b29sYmFyUmVmKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmVkaXRvcikgcmV0dXJuO1xuICAgIGlmIChEb21FZGl0b3IuZ2V0VG9vbGJhcih0aGlzLmVkaXRvcikpIHJldHVybjsgLy8g5LiN6YeN5aSN5Yib5bu6XG4gICAgdGhpcy50b29sYmFyID0gY3JlYXRlVG9vbGJhcih7XG4gICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yLFxuICAgICAgc2VsZWN0b3I6IHRoaXMudG9vbGJhclJlZi5uYXRpdmVFbGVtZW50IHx8ICc8ZGl2PjwvZGl2PicsXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICBjb25maWc6IHRoaXMuZGVmYXVsdENvbmZpZyxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvb2xiYXIpIHtcbiAgICAgIHRoaXMudG9vbGJhci5kZXN0cm95KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,24 +1,30 @@
1
1
  import * as i1 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { forwardRef, TemplateRef, Component, ChangeDetectionStrategy, ContentChild, NgModule } from '@angular/core';
4
+ import { inject, ChangeDetectorRef, forwardRef, TemplateRef, Component, ChangeDetectionStrategy, ContentChild, NgModule } from '@angular/core';
5
5
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
6
 
7
7
  /* eslint-disable @angular-eslint/component-selector */
8
8
  class NzxBlankFieldComponent {
9
9
  constructor() {
10
- this.contextExp = {};
10
+ this.cd = inject(ChangeDetectorRef);
11
+ this.contextExp = {
12
+ disabled: false,
13
+ $implicit: null,
14
+ };
11
15
  this.propagateChange = (_) => { };
12
16
  }
13
17
  registerOnChange(fn) {
14
- // this.propagateChange = fn;
18
+ this.propagateChange = fn;
15
19
  }
16
20
  registerOnTouched(fn) { }
17
21
  setDisabledState(isDisabled) {
18
22
  this.contextExp.disabled = isDisabled;
23
+ this.cd.markForCheck();
19
24
  }
20
25
  writeValue(obj) {
21
26
  this.contextExp.$implicit = obj;
27
+ this.cd.markForCheck();
22
28
  }
23
29
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxBlankFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
30
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NzxBlankFieldComponent, selector: "nzx-blank-field", providers: [
@@ -27,17 +33,21 @@ class NzxBlankFieldComponent {
27
33
  useExisting: forwardRef(() => NzxBlankFieldComponent),
28
34
  multi: true,
29
35
  },
30
- ], queries: [{ propertyName: "templateRefExp", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: ` <ng-container
31
- *ngTemplateOutlet="templateRefExp; context: contextExp"
32
- ></ng-container>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36
+ ], queries: [{ propertyName: "templateRefExp", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: `
37
+ <ng-container
38
+ *ngTemplateOutlet="templateRefExp; context: contextExp"
39
+ ></ng-container>
40
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33
41
  }
34
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxBlankFieldComponent, decorators: [{
35
43
  type: Component,
36
44
  args: [{
37
45
  selector: 'nzx-blank-field',
38
- template: ` <ng-container
39
- *ngTemplateOutlet="templateRefExp; context: contextExp"
40
- ></ng-container>`,
46
+ template: `
47
+ <ng-container
48
+ *ngTemplateOutlet="templateRefExp; context: contextExp"
49
+ ></ng-container>
50
+ `,
41
51
  changeDetection: ChangeDetectionStrategy.OnPush,
42
52
  providers: [
43
53
  {
@@ -1 +1 @@
1
- {"version":3,"file":"ng-zorro-antd-extension-blank-field.mjs","sources":["../../../components/blank-field/blank-field.component.ts","../../../components/blank-field/blank-field.module.ts","../../../components/blank-field/public-api.ts","../../../components/blank-field/ng-zorro-antd-extension-blank-field.ts"],"sourcesContent":["/* eslint-disable @angular-eslint/component-selector */\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n forwardRef,\n TemplateRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\ninterface Context {\n disabled: boolean;\n $implicit: any;\n}\n@Component({\n selector: 'nzx-blank-field',\n template: ` <ng-container\n *ngTemplateOutlet=\"templateRefExp; context: contextExp\"\n ></ng-container>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzxBlankFieldComponent),\n multi: true,\n },\n ],\n})\nexport class NzxBlankFieldComponent implements ControlValueAccessor {\n contextExp: Context = {} as Context;\n @ContentChild(TemplateRef) templateRefExp!: TemplateRef<Context>;\n\n private propagateChange = (_: any) => {};\n\n registerOnChange(fn: any): void {\n // this.propagateChange = fn;\n }\n\n registerOnTouched(fn: any): void {}\n\n setDisabledState(isDisabled: boolean): void {\n this.contextExp.disabled = isDisabled;\n }\n\n writeValue(obj: any): void {\n this.contextExp.$implicit = obj;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzxBlankFieldComponent } from './blank-field.component';\n\n@NgModule({\n declarations: [NzxBlankFieldComponent],\n imports: [CommonModule],\n exports: [NzxBlankFieldComponent],\n})\nexport class NzxBlankFieldModule {}\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 */\n\nexport * from './blank-field.module';\n\nexport * from './blank-field.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-zorro-antd-extension-blank-field.mjs","sources":["../../../components/blank-field/blank-field.component.ts","../../../components/blank-field/blank-field.module.ts","../../../components/blank-field/public-api.ts","../../../components/blank-field/ng-zorro-antd-extension-blank-field.ts"],"sourcesContent":["/* eslint-disable @angular-eslint/component-selector */\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n forwardRef,\n inject,\n TemplateRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\ninterface Context {\n disabled: boolean;\n $implicit: any;\n}\n@Component({\n selector: 'nzx-blank-field',\n template: `\n <ng-container\n *ngTemplateOutlet=\"templateRefExp; context: contextExp\"\n ></ng-container>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzxBlankFieldComponent),\n multi: true,\n },\n ],\n})\nexport class NzxBlankFieldComponent implements ControlValueAccessor {\n private cd = inject(ChangeDetectorRef);\n\n contextExp: Context = {\n disabled: false,\n $implicit: null,\n } as Context;\n\n @ContentChild(TemplateRef) templateRefExp!: TemplateRef<Context>;\n\n private propagateChange = (_: any) => {};\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: any): void {}\n\n setDisabledState(isDisabled: boolean): void {\n this.contextExp.disabled = isDisabled;\n this.cd.markForCheck();\n }\n\n writeValue(obj: any): void {\n this.contextExp.$implicit = obj;\n this.cd.markForCheck();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzxBlankFieldComponent } from './blank-field.component';\n\n@NgModule({\n declarations: [NzxBlankFieldComponent],\n imports: [CommonModule],\n exports: [NzxBlankFieldComponent],\n})\nexport class NzxBlankFieldModule {}\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 */\n\nexport * from './blank-field.module';\n\nexport * from './blank-field.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAAA;MAgCa,sBAAsB,CAAA;AAhBnC,IAAA,WAAA,GAAA;AAiBU,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEtC,QAAA,IAAA,CAAA,UAAU,GAAY;AACpB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,SAAS,EAAE,IAAI;SACL;AAIJ,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,CAAM,KAAI,GAAG;AAiBzC;AAfC,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;;IAG3B,iBAAiB,CAAC,EAAO,EAAA;AAEzB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,UAAU;AACrC,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAGxB,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,GAAG;AAC/B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;+GAzBb,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EARtB,QAAA,EAAA,iBAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAUa,WAAW,EAtBf,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAUU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAhBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;;;;AAIT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;8BAS4B,cAAc,EAAA,CAAA;sBAAxC,YAAY;uBAAC,WAAW;;;MC9Bd,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAJf,YAAA,EAAA,CAAA,sBAAsB,CAC3B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAErB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHpB,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA;;;ACTD;;;AAGG;;ACHH;;AAEG;;;;"}
@@ -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
  /**
@@ -340,6 +341,9 @@ class NzxPrintVComponent {
340
341
  </body>
341
342
  </html>
342
343
  `;
344
+ if (!this.enablePreview) {
345
+ this.vivViewRef.nativeElement.setAttribute('style', 'visibility: hidden; height: 0; width: 0; position: absolute; border: 0');
346
+ }
343
347
  this.iframeEl.srcdoc = template;
344
348
  this.vivViewRef.nativeElement.appendChild(this.iframeEl);
345
349
  this.iframeEl.contentWindow.onbeforeprint = () => {
@@ -445,13 +449,13 @@ class NzxPrintVComponent {
445
449
  this.viewer = undefined;
446
450
  this._isRenderComplete = false;
447
451
  }
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 }); }
452
+ 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
453
  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
454
  <ng-content select="[nzxPrintHeader]"></ng-content>
451
455
 
452
456
  <div #vivView [ngStyle]="{ margin: '10px 0' }"></div>
453
457
 
454
- <div nz-row nzJustify="end">
458
+ <div nz-row nzJustify="end" *ngIf="enablePreview">
455
459
  <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>
456
460
  <nz-pagination
457
461
  [nzPageIndex]="1"
@@ -463,7 +467,7 @@ class NzxPrintVComponent {
463
467
  (nzPageIndexChange)="onPageIndexChange($event)"
464
468
  ></nz-pagination>
465
469
  </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"] }] }); }
470
+ `, 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
471
  }
468
472
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxPrintVComponent, decorators: [{
469
473
  type: Component,
@@ -474,7 +478,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
474
478
 
475
479
  <div #vivView [ngStyle]="{ margin: '10px 0' }"></div>
476
480
 
477
- <div nz-row nzJustify="end">
481
+ <div nz-row nzJustify="end" *ngIf="enablePreview">
478
482
  <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>
479
483
  <nz-pagination
480
484
  [nzPageIndex]="1"
@@ -488,7 +492,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
488
492
  </div>
489
493
  `,
490
494
  }]
491
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { printTitle: [{
495
+ }], ctorParameters: () => [{ type: i1.Platform }, { type: i0.ChangeDetectorRef }], propDecorators: { printTitle: [{
492
496
  type: Input
493
497
  }], width: [{
494
498
  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\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 if (!this.enablePreview) {\n this.vivViewRef.nativeElement.setAttribute(\n 'style',\n 'visibility: hidden; height: 0; width: 0; position: absolute; border: 0'\n );\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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"}
@@ -304,6 +304,35 @@ function getElementByTag(tagName, identifier) {
304
304
  return html.join('\r\n');
305
305
  }
306
306
 
307
+ /**
308
+ * 滚动到第一个校验失败的表单控件
309
+ *
310
+ * @param delay 延时默认100ms
311
+ * @param selector 选择器默认 .ant-form .ant-form-item .ant-form-item-control .ng-invalid.ng-dirty
312
+ */
313
+ function scrollToFirstInvalidControl(delay = 100, selector = '.ant-form .ant-form-item .ant-form-item-control .ng-invalid.ng-dirty') {
314
+ setTimeout(() => {
315
+ const firstInvalidControl = document.querySelector(selector);
316
+ if (firstInvalidControl) {
317
+ if (firstInvalidControl.hidden) {
318
+ firstInvalidControl.hidden = false;
319
+ firstInvalidControl.scrollIntoView({
320
+ behavior: 'smooth',
321
+ block: 'center',
322
+ inline: 'center',
323
+ });
324
+ firstInvalidControl.hidden = true;
325
+ return;
326
+ }
327
+ firstInvalidControl.scrollIntoView({
328
+ behavior: 'smooth',
329
+ block: 'center',
330
+ inline: 'center',
331
+ });
332
+ }
333
+ }, delay);
334
+ }
335
+
307
336
  /**
308
337
  * Use of this source code is governed by an MIT-style license that can be
309
338
  * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
@@ -313,5 +342,5 @@ function getElementByTag(tagName, identifier) {
313
342
  * Generated bundle index. Do not edit.
314
343
  */
315
344
 
316
- export { cloneDeep, downloadFile, downloadFileByUrl, getElementByTag, isArray, isDate, isEmpty, isNumber, isObject, isString, selectFile, toNumber, toString, trimObject, updateControlStatus };
345
+ export { cloneDeep, downloadFile, downloadFileByUrl, getElementByTag, isArray, isDate, isEmpty, isNumber, isObject, isString, scrollToFirstInvalidControl, selectFile, toNumber, toString, trimObject, updateControlStatus };
317
346
  //# sourceMappingURL=ng-zorro-antd-extension-util.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng-zorro-antd-extension-util.mjs","sources":["../../../components/util/lib/updateControlStatus.ts","../../../components/util/lib/isEmpty.ts","../../../components/util/lib/trimObject.ts","../../../components/util/lib/cloneDeep.ts","../../../components/util/lib/isArray.ts","../../../components/util/lib/isDate.ts","../../../components/util/lib/isNumber.ts","../../../components/util/lib/isObject.ts","../../../components/util/lib/isString.ts","../../../components/util/lib/toNumber.ts","../../../components/util/lib/toString.ts","../../../components/util/lib/fileUtil.ts","../../../components/util/lib/getElementByTag.ts","../../../components/util/public-api.ts","../../../components/util/ng-zorro-antd-extension-util.ts"],"sourcesContent":["import {\n AbstractControl,\n FormArray,\n FormControl,\n FormGroup,\n} from '@angular/forms';\n\nfunction updateControl(\n control: AbstractControl,\n markAsClean: boolean,\n customOperate?: (control: AbstractControl) => void\n) {\n if (markAsClean) {\n control.markAsPristine();\n if (customOperate) {\n customOperate(control);\n }\n control.updateValueAndValidity({\n onlySelf: true,\n });\n } else {\n if (control.invalid) {\n control.markAsDirty();\n control.updateValueAndValidity({ onlySelf: true });\n }\n }\n if ((control as any)?.controls) {\n updateControlStatus(control as any, markAsClean);\n }\n}\n\n/**\n * 用来更新控件的状态,默认标注控件以及子控件为dirty,通常用来更新ng zorro中表单错误及时更新错误提示\n *\n * @param abstractControl FormControl、FormArray、FormGroup实例\n * @param markAsClean 是否标记控件为干净状态,实际只设置pristine为true,如要设置更多参数请使用customOperate自定义\n * @param customOperate 当markAsClean为true时可以自定义操作,用来完全让control干净,比如markAsUntouched\n */\nexport function updateControlStatus(\n abstractControl: AbstractControl,\n markAsClean = false,\n customOperate?: (control: AbstractControl) => void\n) {\n if (abstractControl instanceof FormGroup) {\n for (const key in abstractControl.controls) {\n if (Object.prototype.hasOwnProperty.call(abstractControl.controls, key)) {\n const control = abstractControl.controls[key];\n updateControl(control, markAsClean, customOperate);\n }\n }\n } else if (abstractControl instanceof FormArray) {\n for (const control of abstractControl.controls) {\n updateControl(control, markAsClean, customOperate);\n }\n } else if (abstractControl instanceof FormControl) {\n updateControl(abstractControl, markAsClean, customOperate);\n }\n}\n","/**判断一个值是否为空,包括undefined、null、空字符串、空数组、空对象等情况 */\nexport function isEmpty(value: any) {\n if (value == null) {\n return true;\n }\n\n if (typeof value === 'string' || Array.isArray(value)) {\n return value.length === 0;\n }\n\n if (typeof value === 'object') {\n for (const key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","import { isEmpty } from './isEmpty';\n\n/** trim去空Object*/\nexport function trimObject(ob: any) {\n const result: any = {};\n for (const key in ob) {\n if (Object.prototype.hasOwnProperty.call(ob, key)) {\n const el = ob[key];\n if (!isEmpty(el)) {\n result[key] = el;\n }\n }\n }\n return result;\n}\n","/** 深克隆 */\nexport function cloneDeep(obj: any, hash = new WeakMap()) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (hash.has(obj)) {\n return hash.get(obj);\n }\n\n let clone;\n const Constructor = obj.constructor;\n\n switch (Constructor) {\n case RegExp:\n clone = new Constructor(obj);\n break;\n case Date:\n clone = new Constructor(obj.getTime());\n break;\n case Map:\n clone = new Constructor();\n for (const [key, value] of obj) {\n clone.set(cloneDeep(key, hash), cloneDeep(value, hash));\n }\n break;\n case Set:\n clone = new Constructor();\n for (const value of obj) {\n clone.add(cloneDeep(value, hash));\n }\n break;\n default:\n clone = Array.isArray(obj)\n ? []\n : Object.create(Object.getPrototypeOf(obj));\n break;\n }\n\n hash.set(obj, clone);\n\n const keys = Object.getOwnPropertyNames(obj).concat(\n Object.getOwnPropertySymbols(obj) as any\n );\n for (const key of keys) {\n const descriptor = Object.getOwnPropertyDescriptor(obj, key);\n if (descriptor) {\n if (descriptor.value && typeof descriptor.value === 'object') {\n descriptor.value = cloneDeep(descriptor.value, hash);\n }\n Object.defineProperty(clone, key, descriptor);\n }\n }\n return clone;\n}\n","/** 判断是否为数组 */\nexport function isArray(obj: any) {\n if (Array.isArray(obj)) {\n return true;\n }\n\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n const className = Object.prototype.toString.call(obj);\n return (\n className === '[object Array]' ||\n className === '[object HTMLCollection]' ||\n className === '[object NodeList]' ||\n (typeof obj.length === 'number' &&\n obj.item !== undefined &&\n (obj.length === 0 || (obj.length > 0 && obj.length - 1 in obj)))\n );\n}\n","export function isDate(value: any) {\n return Object.prototype.toString.call(value) === '[object Date]';\n}\n","export function isNumber(obj: any) {\n if (typeof obj === 'number' && isFinite(obj)) {\n return true;\n }\n\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n const className = Object.prototype.toString.call(obj);\n return (\n className === '[object Number]' ||\n (typeof obj === 'object' && obj.valueOf() !== obj.valueOf())\n );\n}\n","export function isObject(obj: any) {\n if (typeof obj === 'object' && obj !== null) {\n return true;\n }\n\n if (typeof obj === 'function' && typeof obj.nodeType === 'number') {\n return true;\n }\n\n return false;\n}\n","export function isString(obj: any) {\n if (typeof obj === 'string' || obj instanceof String) {\n return true;\n }\n\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n const className = Object.prototype.toString.call(obj);\n return className === '[object String]' || className === '[object DOMString]';\n}\n","export function toNumber(value: any) {\n if (typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n return isNaN(parsed) ? NaN : parsed;\n }\n\n if (typeof value === 'boolean') {\n return value ? 1 : 0;\n }\n\n if (Array.isArray(value)) {\n const parsed = parseFloat(value[0]);\n return isNaN(parsed) ? NaN : parsed;\n }\n\n return NaN;\n}\n","export function toString(value: any): string {\n if (value == null) {\n return '';\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map(toString).join(',');\n }\n\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n\n return String(value);\n}\n","import { Observable, fromEvent, map, take } from 'rxjs';\r\n\r\n/**选择文件*/\r\nexport function selectFile(\r\n accept?: string,\r\n multiple?: false\r\n): Observable<File | null>;\r\n\r\nexport function selectFile(\r\n accept?: string,\r\n multiple?: true\r\n): Observable<FileList | null>;\r\n\r\nexport function selectFile(\r\n accept: string = '*',\r\n multiple = false\r\n): Observable<FileList | File | null> {\r\n const input = document.createElement('input');\r\n input.type = 'file';\r\n input.accept = accept;\r\n input.multiple = multiple;\r\n input.click();\r\n input.remove();\r\n\r\n return fromEvent(input, 'change')\r\n .pipe(take(1))\r\n .pipe(\r\n map((e) => {\r\n if (input?.files) {\r\n if (input?.files.length) {\r\n if (multiple) {\r\n return input?.files;\r\n } else {\r\n return input.files[0];\r\n }\r\n }\r\n }\r\n return null;\r\n })\r\n );\r\n}\r\n\r\n/**\r\n * 文件下载\r\n ** 此方法只适合文件较小的情况下使用\r\n * 文件较大请使用downloadFileByUrl触发浏览器下载\r\n * 此方法只适合文件较小的情况下使用\r\n * 文件较大请使用downloadFileByUrl触发浏览器下载\r\n */\r\nexport function downloadFile(file: Blob, fileName = '') {\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(file);\r\n link.download = fileName;\r\n link.click();\r\n link.remove();\r\n URL.revokeObjectURL(link.href);\r\n}\r\n\r\n/**\r\n * 通过url下载文件\r\n */\r\nexport function downloadFileByUrl(\r\n url: string,\r\n fileName = '',\r\n target = '_blank'\r\n) {\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.target = target;\r\n link.download = fileName;\r\n link.click();\r\n link.remove();\r\n}\r\n","import { isString } from './isString';\n\n/**\n * 获取当前document下所有指定标签\n * @param tagName 标签名\n * @param identifier 唯一标识符,选取标签内容\n *\n * @returns string 标签字符串\n */\nexport function getElementByTag(\n tagName: keyof HTMLElementTagNameMap,\n identifier?: string | string[]\n): string {\n let identifiers: string[] = [];\n if (identifier) {\n if (Array.isArray(identifier)) {\n identifiers = [...identifier];\n } else if (isString(identifier)) {\n identifiers = [identifier];\n }\n }\n const html: string[] = [];\n const elements = document.getElementsByTagName(tagName);\n const length = elements.length;\n for (let index = 0; index < length; index++) {\n if (identifiers.length) {\n identifiers.forEach((s) => {\n if (elements[index].outerHTML.includes(s)) {\n const formateStr = elements[index].outerHTML.replace(\n /\\/\\*[\\s\\S]*?\\*\\//g,\n ''\n );\n html.push(formateStr);\n }\n });\n } else {\n const formateStr = elements[index].outerHTML.replace(\n /\\/\\*[\\s\\S]*?\\*\\//g,\n ''\n );\n html.push(formateStr);\n }\n }\n return html.join('\\r\\n');\n}\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 */\n\nexport * from './lib/updateControlStatus';\nexport * from './lib/trimObject';\nexport * from './lib/cloneDeep';\nexport * from './lib/isArray';\nexport * from './lib/isDate';\nexport * from './lib/isEmpty';\nexport * from './lib/isNumber';\nexport * from './lib/isObject';\nexport * from './lib/isString';\nexport * from './lib/toNumber';\nexport * from './lib/toString';\nexport * from './lib/fileUtil';\nexport * from './lib/getElementByTag';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAOA,SAAS,aAAa,CACpB,OAAwB,EACxB,WAAoB,EACpB,aAAkD,EAAA;AAElD,IAAA,IAAI,WAAW,EAAE;QACf,OAAO,CAAC,cAAc,EAAE;AACxB,QAAA,IAAI,aAAa,EAAE;YACjB,aAAa,CAAC,OAAO,CAAC;AACvB;QACD,OAAO,CAAC,sBAAsB,CAAC;AAC7B,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC;AACH;AAAM,SAAA;QACL,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,OAAO,CAAC,WAAW,EAAE;YACrB,OAAO,CAAC,sBAAsB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACnD;AACF;IACD,IAAK,OAAe,EAAE,QAAQ,EAAE;AAC9B,QAAA,mBAAmB,CAAC,OAAc,EAAE,WAAW,CAAC;AACjD;AACH;AAEA;;;;;;AAMG;AACG,SAAU,mBAAmB,CACjC,eAAgC,EAChC,WAAW,GAAG,KAAK,EACnB,aAAkD,EAAA;IAElD,IAAI,eAAe,YAAY,SAAS,EAAE;AACxC,QAAA,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,QAAQ,EAAE;AAC1C,YAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;gBACvE,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC7C,gBAAA,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC;AACnD;AACF;AACF;SAAM,IAAI,eAAe,YAAY,SAAS,EAAE;AAC/C,QAAA,KAAK,MAAM,OAAO,IAAI,eAAe,CAAC,QAAQ,EAAE;AAC9C,YAAA,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC;AACnD;AACF;SAAM,IAAI,eAAe,YAAY,WAAW,EAAE;AACjD,QAAA,aAAa,CAAC,eAAe,EAAE,WAAW,EAAE,aAAa,CAAC;AAC3D;AACH;;ACzDA;AACM,SAAU,OAAO,CAAC,KAAU,EAAA;IAChC,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,IAAI;AACZ;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrD,QAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAC1B;AAED,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACvB,YAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AACpD,gBAAA,OAAO,KAAK;AACb;AACF;AACD,QAAA,OAAO,IAAI;AACZ;AACD,IAAA,OAAO,KAAK;AACd;;ACjBA;AACM,SAAU,UAAU,CAAC,EAAO,EAAA;IAChC,MAAM,MAAM,GAAQ,EAAE;AACtB,IAAA,KAAK,MAAM,GAAG,IAAI,EAAE,EAAE;AACpB,QAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE;AACjD,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;AAClB,YAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AAChB,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;AACjB;AACF;AACF;AACD,IAAA,OAAO,MAAM;AACf;;ACdA;AACM,SAAU,SAAS,CAAC,GAAQ,EAAE,IAAI,GAAG,IAAI,OAAO,EAAE,EAAA;IACtD,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC3C,QAAA,OAAO,GAAG;AACX;AAED,IAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACjB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACrB;AAED,IAAA,IAAI,KAAK;AACT,IAAA,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW;AAEnC,IAAA,QAAQ,WAAW;AACjB,QAAA,KAAK,MAAM;AACT,YAAA,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC;YAC5B;AACF,QAAA,KAAK,IAAI;YACP,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACtC;AACF,QAAA,KAAK,GAAG;AACN,YAAA,KAAK,GAAG,IAAI,WAAW,EAAE;YACzB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,EAAE;AAC9B,gBAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACxD;YACD;AACF,QAAA,KAAK,GAAG;AACN,YAAA,KAAK,GAAG,IAAI,WAAW,EAAE;AACzB,YAAA,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE;gBACvB,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAClC;YACD;AACF,QAAA;AACE,YAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG;AACvB,kBAAE;AACF,kBAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC7C;AACH;AAED,IAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAEpB,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,CACjD,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAQ,CACzC;AACD,IAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC;AAC5D,QAAA,IAAI,UAAU,EAAE;YACd,IAAI,UAAU,CAAC,KAAK,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ,EAAE;gBAC5D,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AACrD;YACD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC;AAC9C;AACF;AACD,IAAA,OAAO,KAAK;AACd;;ACtDA;AACM,SAAU,OAAO,CAAC,GAAQ,EAAA;AAC9B,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACtB,QAAA,OAAO,IAAI;AACZ;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAC3C,QAAA,OAAO,KAAK;AACb;AAED,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;IACrD,QACE,SAAS,KAAK,gBAAgB;AAC9B,QAAA,SAAS,KAAK,yBAAyB;AACvC,QAAA,SAAS,KAAK,mBAAmB;AACjC,SAAC,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;YAC7B,GAAG,CAAC,IAAI,KAAK,SAAS;aACrB,GAAG,CAAC,MAAM,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AAEtE;;ACnBM,SAAU,MAAM,CAAC,KAAU,EAAA;AAC/B,IAAA,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAe;AAClE;;ACFM,SAAU,QAAQ,CAAC,GAAQ,EAAA;IAC/B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5C,QAAA,OAAO,IAAI;AACZ;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAC3C,QAAA,OAAO,KAAK;AACb;AAED,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;IACrD,QACE,SAAS,KAAK,iBAAiB;AAC/B,SAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;AAEhE;;ACdM,SAAU,QAAQ,CAAC,GAAQ,EAAA;IAC/B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAC3C,QAAA,OAAO,IAAI;AACZ;IAED,IAAI,OAAO,GAAG,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACjE,QAAA,OAAO,IAAI;AACZ;AAED,IAAA,OAAO,KAAK;AACd;;ACVM,SAAU,QAAQ,CAAC,GAAQ,EAAA;IAC/B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,MAAM,EAAE;AACpD,QAAA,OAAO,IAAI;AACZ;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAC3C,QAAA,OAAO,KAAK;AACb;AAED,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AACrD,IAAA,OAAO,SAAS,KAAK,iBAAiB,IAAI,SAAS,KAAK,oBAAoB;AAC9E;;ACXM,SAAU,QAAQ,CAAC,KAAU,EAAA;AACjC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK;AACb;AAED,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;AAChC,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM;AACpC;AAED,IAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;QAC9B,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC;AACrB;AAED,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM;AACpC;AAED,IAAA,OAAO,GAAG;AACZ;;ACpBM,SAAU,QAAQ,CAAC,KAAU,EAAA;IACjC,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,EAAE;AACV;AAED,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK;AACb;AAED,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC;AAED,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC7B;AAED,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB;;ACLM,SAAU,UAAU,CACxB,MAAA,GAAiB,GAAG,EACpB,QAAQ,GAAG,KAAK,EAAA;IAEhB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,IAAA,KAAK,CAAC,IAAI,GAAG,MAAM;AACnB,IAAA,KAAK,CAAC,MAAM,GAAG,MAAM;AACrB,IAAA,KAAK,CAAC,QAAQ,GAAG,QAAQ;IACzB,KAAK,CAAC,KAAK,EAAE;IACb,KAAK,CAAC,MAAM,EAAE;AAEd,IAAA,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ;AAC7B,SAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,SAAA,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,KAAI;QACR,IAAI,KAAK,EAAE,KAAK,EAAE;AAChB,YAAA,IAAI,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE;AACvB,gBAAA,IAAI,QAAQ,EAAE;oBACZ,OAAO,KAAK,EAAE,KAAK;AACpB;AAAM,qBAAA;AACL,oBAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACtB;AACF;AACF;AACD,QAAA,OAAO,IAAI;KACZ,CAAC,CACH;AACL;AAEA;;;;;;AAMG;SACa,YAAY,CAAC,IAAU,EAAE,QAAQ,GAAG,EAAE,EAAA;IACpD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;IACxC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;AACrC,IAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IACxB,IAAI,CAAC,KAAK,EAAE;IACZ,IAAI,CAAC,MAAM,EAAE;AACb,IAAA,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC;AAEA;;AAEG;AACG,SAAU,iBAAiB,CAC/B,GAAW,EACX,QAAQ,GAAG,EAAE,EACb,MAAM,GAAG,QAAQ,EAAA;IAEjB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACxC,IAAA,IAAI,CAAC,IAAI,GAAG,GAAG;AACf,IAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,IAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IACxB,IAAI,CAAC,KAAK,EAAE;IACZ,IAAI,CAAC,MAAM,EAAE;AACf;;ACtEA;;;;;;AAMG;AACa,SAAA,eAAe,CAC7B,OAAoC,EACpC,UAA8B,EAAA;IAE9B,IAAI,WAAW,GAAa,EAAE;AAC9B,IAAA,IAAI,UAAU,EAAE;AACd,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC7B,YAAA,WAAW,GAAG,CAAC,GAAG,UAAU,CAAC;AAC9B;AAAM,aAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;AAC/B,YAAA,WAAW,GAAG,CAAC,UAAU,CAAC;AAC3B;AACF;IACD,MAAM,IAAI,GAAa,EAAE;IACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC;AACvD,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM;IAC9B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;QAC3C,IAAI,WAAW,CAAC,MAAM,EAAE;AACtB,YAAA,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBACxB,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACzC,oBAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAClD,mBAAmB,EACnB,EAAE,CACH;AACD,oBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACtB;AACH,aAAC,CAAC;AACH;AAAM,aAAA;AACL,YAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAClD,mBAAmB,EACnB,EAAE,CACH;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACtB;AACF;AACD,IAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B;;AC5CA;;;AAGG;;ACHH;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-zorro-antd-extension-util.mjs","sources":["../../../components/util/lib/updateControlStatus.ts","../../../components/util/lib/isEmpty.ts","../../../components/util/lib/trimObject.ts","../../../components/util/lib/cloneDeep.ts","../../../components/util/lib/isArray.ts","../../../components/util/lib/isDate.ts","../../../components/util/lib/isNumber.ts","../../../components/util/lib/isObject.ts","../../../components/util/lib/isString.ts","../../../components/util/lib/toNumber.ts","../../../components/util/lib/toString.ts","../../../components/util/lib/fileUtil.ts","../../../components/util/lib/getElementByTag.ts","../../../components/util/lib/scrollToInvalidControl.ts","../../../components/util/public-api.ts","../../../components/util/ng-zorro-antd-extension-util.ts"],"sourcesContent":["import {\n AbstractControl,\n FormArray,\n FormControl,\n FormGroup,\n} from '@angular/forms';\n\nfunction updateControl(\n control: AbstractControl,\n markAsClean: boolean,\n customOperate?: (control: AbstractControl) => void\n) {\n if (markAsClean) {\n control.markAsPristine();\n if (customOperate) {\n customOperate(control);\n }\n control.updateValueAndValidity({\n onlySelf: true,\n });\n } else {\n if (control.invalid) {\n control.markAsDirty();\n control.updateValueAndValidity({ onlySelf: true });\n }\n }\n if ((control as any)?.controls) {\n updateControlStatus(control as any, markAsClean);\n }\n}\n\n/**\n * 用来更新控件的状态,默认标注控件以及子控件为dirty,通常用来更新ng zorro中表单错误及时更新错误提示\n *\n * @param abstractControl FormControl、FormArray、FormGroup实例\n * @param markAsClean 是否标记控件为干净状态,实际只设置pristine为true,如要设置更多参数请使用customOperate自定义\n * @param customOperate 当markAsClean为true时可以自定义操作,用来完全让control干净,比如markAsUntouched\n */\nexport function updateControlStatus(\n abstractControl: AbstractControl,\n markAsClean = false,\n customOperate?: (control: AbstractControl) => void\n) {\n if (abstractControl instanceof FormGroup) {\n for (const key in abstractControl.controls) {\n if (Object.prototype.hasOwnProperty.call(abstractControl.controls, key)) {\n const control = abstractControl.controls[key];\n updateControl(control, markAsClean, customOperate);\n }\n }\n } else if (abstractControl instanceof FormArray) {\n for (const control of abstractControl.controls) {\n updateControl(control, markAsClean, customOperate);\n }\n } else if (abstractControl instanceof FormControl) {\n updateControl(abstractControl, markAsClean, customOperate);\n }\n}\n","/**判断一个值是否为空,包括undefined、null、空字符串、空数组、空对象等情况 */\nexport function isEmpty(value: any) {\n if (value == null) {\n return true;\n }\n\n if (typeof value === 'string' || Array.isArray(value)) {\n return value.length === 0;\n }\n\n if (typeof value === 'object') {\n for (const key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","import { isEmpty } from './isEmpty';\n\n/** trim去空Object*/\nexport function trimObject(ob: any) {\n const result: any = {};\n for (const key in ob) {\n if (Object.prototype.hasOwnProperty.call(ob, key)) {\n const el = ob[key];\n if (!isEmpty(el)) {\n result[key] = el;\n }\n }\n }\n return result;\n}\n","/** 深克隆 */\nexport function cloneDeep(obj: any, hash = new WeakMap()) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (hash.has(obj)) {\n return hash.get(obj);\n }\n\n let clone;\n const Constructor = obj.constructor;\n\n switch (Constructor) {\n case RegExp:\n clone = new Constructor(obj);\n break;\n case Date:\n clone = new Constructor(obj.getTime());\n break;\n case Map:\n clone = new Constructor();\n for (const [key, value] of obj) {\n clone.set(cloneDeep(key, hash), cloneDeep(value, hash));\n }\n break;\n case Set:\n clone = new Constructor();\n for (const value of obj) {\n clone.add(cloneDeep(value, hash));\n }\n break;\n default:\n clone = Array.isArray(obj)\n ? []\n : Object.create(Object.getPrototypeOf(obj));\n break;\n }\n\n hash.set(obj, clone);\n\n const keys = Object.getOwnPropertyNames(obj).concat(\n Object.getOwnPropertySymbols(obj) as any\n );\n for (const key of keys) {\n const descriptor = Object.getOwnPropertyDescriptor(obj, key);\n if (descriptor) {\n if (descriptor.value && typeof descriptor.value === 'object') {\n descriptor.value = cloneDeep(descriptor.value, hash);\n }\n Object.defineProperty(clone, key, descriptor);\n }\n }\n return clone;\n}\n","/** 判断是否为数组 */\nexport function isArray(obj: any) {\n if (Array.isArray(obj)) {\n return true;\n }\n\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n const className = Object.prototype.toString.call(obj);\n return (\n className === '[object Array]' ||\n className === '[object HTMLCollection]' ||\n className === '[object NodeList]' ||\n (typeof obj.length === 'number' &&\n obj.item !== undefined &&\n (obj.length === 0 || (obj.length > 0 && obj.length - 1 in obj)))\n );\n}\n","export function isDate(value: any) {\n return Object.prototype.toString.call(value) === '[object Date]';\n}\n","export function isNumber(obj: any) {\n if (typeof obj === 'number' && isFinite(obj)) {\n return true;\n }\n\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n const className = Object.prototype.toString.call(obj);\n return (\n className === '[object Number]' ||\n (typeof obj === 'object' && obj.valueOf() !== obj.valueOf())\n );\n}\n","export function isObject(obj: any) {\n if (typeof obj === 'object' && obj !== null) {\n return true;\n }\n\n if (typeof obj === 'function' && typeof obj.nodeType === 'number') {\n return true;\n }\n\n return false;\n}\n","export function isString(obj: any) {\n if (typeof obj === 'string' || obj instanceof String) {\n return true;\n }\n\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n const className = Object.prototype.toString.call(obj);\n return className === '[object String]' || className === '[object DOMString]';\n}\n","export function toNumber(value: any) {\n if (typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n return isNaN(parsed) ? NaN : parsed;\n }\n\n if (typeof value === 'boolean') {\n return value ? 1 : 0;\n }\n\n if (Array.isArray(value)) {\n const parsed = parseFloat(value[0]);\n return isNaN(parsed) ? NaN : parsed;\n }\n\n return NaN;\n}\n","export function toString(value: any): string {\n if (value == null) {\n return '';\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map(toString).join(',');\n }\n\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n\n return String(value);\n}\n","import { Observable, fromEvent, map, take } from 'rxjs';\r\n\r\n/**选择文件*/\r\nexport function selectFile(\r\n accept?: string,\r\n multiple?: false\r\n): Observable<File | null>;\r\n\r\nexport function selectFile(\r\n accept?: string,\r\n multiple?: true\r\n): Observable<FileList | null>;\r\n\r\nexport function selectFile(\r\n accept: string = '*',\r\n multiple = false\r\n): Observable<FileList | File | null> {\r\n const input = document.createElement('input');\r\n input.type = 'file';\r\n input.accept = accept;\r\n input.multiple = multiple;\r\n input.click();\r\n input.remove();\r\n\r\n return fromEvent(input, 'change')\r\n .pipe(take(1))\r\n .pipe(\r\n map((e) => {\r\n if (input?.files) {\r\n if (input?.files.length) {\r\n if (multiple) {\r\n return input?.files;\r\n } else {\r\n return input.files[0];\r\n }\r\n }\r\n }\r\n return null;\r\n })\r\n );\r\n}\r\n\r\n/**\r\n * 文件下载\r\n ** 此方法只适合文件较小的情况下使用\r\n * 文件较大请使用downloadFileByUrl触发浏览器下载\r\n * 此方法只适合文件较小的情况下使用\r\n * 文件较大请使用downloadFileByUrl触发浏览器下载\r\n */\r\nexport function downloadFile(file: Blob, fileName = '') {\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(file);\r\n link.download = fileName;\r\n link.click();\r\n link.remove();\r\n URL.revokeObjectURL(link.href);\r\n}\r\n\r\n/**\r\n * 通过url下载文件\r\n */\r\nexport function downloadFileByUrl(\r\n url: string,\r\n fileName = '',\r\n target = '_blank'\r\n) {\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.target = target;\r\n link.download = fileName;\r\n link.click();\r\n link.remove();\r\n}\r\n","import { isString } from './isString';\n\n/**\n * 获取当前document下所有指定标签\n * @param tagName 标签名\n * @param identifier 唯一标识符,选取标签内容\n *\n * @returns string 标签字符串\n */\nexport function getElementByTag(\n tagName: keyof HTMLElementTagNameMap,\n identifier?: string | string[]\n): string {\n let identifiers: string[] = [];\n if (identifier) {\n if (Array.isArray(identifier)) {\n identifiers = [...identifier];\n } else if (isString(identifier)) {\n identifiers = [identifier];\n }\n }\n const html: string[] = [];\n const elements = document.getElementsByTagName(tagName);\n const length = elements.length;\n for (let index = 0; index < length; index++) {\n if (identifiers.length) {\n identifiers.forEach((s) => {\n if (elements[index].outerHTML.includes(s)) {\n const formateStr = elements[index].outerHTML.replace(\n /\\/\\*[\\s\\S]*?\\*\\//g,\n ''\n );\n html.push(formateStr);\n }\n });\n } else {\n const formateStr = elements[index].outerHTML.replace(\n /\\/\\*[\\s\\S]*?\\*\\//g,\n ''\n );\n html.push(formateStr);\n }\n }\n return html.join('\\r\\n');\n}\n","/**\n * 滚动到第一个校验失败的表单控件\n *\n * @param delay 延时默认100ms\n * @param selector 选择器默认 .ant-form .ant-form-item .ant-form-item-control .ng-invalid.ng-dirty\n */\nexport function scrollToFirstInvalidControl(\n delay = 100,\n selector = '.ant-form .ant-form-item .ant-form-item-control .ng-invalid.ng-dirty'\n) {\n setTimeout(() => {\n const firstInvalidControl = document.querySelector(selector) as HTMLElement;\n\n if (firstInvalidControl) {\n if (firstInvalidControl.hidden) {\n firstInvalidControl.hidden = false;\n firstInvalidControl.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n });\n firstInvalidControl.hidden = true;\n return;\n }\n firstInvalidControl.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n });\n }\n }, delay);\n}\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 */\n\nexport * from './lib/updateControlStatus';\nexport * from './lib/trimObject';\nexport * from './lib/cloneDeep';\nexport * from './lib/isArray';\nexport * from './lib/isDate';\nexport * from './lib/isEmpty';\nexport * from './lib/isNumber';\nexport * from './lib/isObject';\nexport * from './lib/isString';\nexport * from './lib/toNumber';\nexport * from './lib/toString';\nexport * from './lib/fileUtil';\nexport * from './lib/getElementByTag';\nexport * from './lib/scrollToInvalidControl'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}