ng-zorro-antd-extension 18.1.3 → 19.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/acl/nzx-acl.directive.d.ts +1 -1
- package/acl/nzx-acl.module.d.ts +1 -2
- package/blank-field/blank-field.component.d.ts +1 -1
- package/blank-field/blank-field.module.d.ts +1 -2
- package/checkbox/checkbox-group.component.d.ts +5 -16
- package/checkbox/checkbox.module.d.ts +1 -4
- package/configurable-query/configurable-query-item/configurable-query-item.component.d.ts +1 -1
- package/configurable-query/configurable-query.component.d.ts +1 -1
- package/configurable-query/configurable-query.module.d.ts +3 -21
- package/configurable-query/control.directive.d.ts +1 -1
- package/configurable-query/controls/abstract.control.d.ts +3 -2
- package/configurable-query/controls/date-picker.control.d.ts +1 -1
- package/configurable-query/controls/input.control.d.ts +1 -1
- package/configurable-query/controls/range-picker.control.d.ts +1 -1
- package/configurable-query/controls/select.control.d.ts +1 -1
- package/configurable-query/controls/template.control.d.ts +1 -1
- package/dynamic-form/config/dynamic-form-config.d.ts +18 -0
- package/dynamic-form/controls/abstract.control.d.ts +11 -0
- package/dynamic-form/controls/date-picker.control.d.ts +6 -0
- package/dynamic-form/controls/input.control.d.ts +6 -0
- package/dynamic-form/controls/range-picker.control.d.ts +6 -0
- package/dynamic-form/controls/select.control.d.ts +6 -0
- package/dynamic-form/controls/template.control.d.ts +6 -0
- package/dynamic-form/dynamic-form-item/dynamic-form-item.component.d.ts +12 -0
- package/dynamic-form/dynamic-form.component.d.ts +5 -0
- package/dynamic-form/dynamic-form.module.d.ts +17 -0
- package/dynamic-form/public-api.d.ts +3 -1
- package/dynamic-form/wrapper/control/abstract-control-wrapper.d.ts +12 -0
- package/dynamic-form/wrapper/control/built-in-control-wrapper.d.ts +7 -0
- package/dynamic-form/wrapper/item/abstract-item-wrapper.d.ts +14 -0
- package/dynamic-form/wrapper/item/built-in-item-wrapper.d.ts +6 -0
- package/dynamic-form/wrapper/label/abstract-label-wrapper.d.ts +5 -0
- package/dynamic-form/wrapper/label/built-in-label-wrapper.d.ts +6 -0
- package/editable/editable.component.d.ts +1 -1
- package/editable/editable.module.d.ts +1 -6
- package/fesm2022/ng-zorro-antd-extension-acl.mjs +11 -13
- package/fesm2022/ng-zorro-antd-extension-acl.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-blank-field.mjs +19 -17
- package/fesm2022/ng-zorro-antd-extension-blank-field.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-checkbox.mjs +28 -37
- package/fesm2022/ng-zorro-antd-extension-checkbox.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-configurable-query.mjs +98 -127
- package/fesm2022/ng-zorro-antd-extension-configurable-query.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-core-config.mjs +3 -3
- package/fesm2022/ng-zorro-antd-extension-core-config.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-dynamic-form.mjs +423 -10
- package/fesm2022/ng-zorro-antd-extension-dynamic-form.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-editable.mjs +23 -33
- package/fesm2022/ng-zorro-antd-extension-editable.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-jigsaw.mjs +9 -10
- package/fesm2022/ng-zorro-antd-extension-jigsaw.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-pipes.mjs +26 -26
- package/fesm2022/ng-zorro-antd-extension-pipes.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-print.mjs +23 -21
- package/fesm2022/ng-zorro-antd-extension-print.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-simple-table.mjs +22 -22
- package/fesm2022/ng-zorro-antd-extension-simple-table.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-table-adaptor.mjs +11 -12
- package/fesm2022/ng-zorro-antd-extension-table-adaptor.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-table-form.mjs +36 -53
- package/fesm2022/ng-zorro-antd-extension-table-form.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-table-select.mjs +38 -40
- package/fesm2022/ng-zorro-antd-extension-table-select.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-timer-button.mjs +8 -10
- package/fesm2022/ng-zorro-antd-extension-timer-button.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-trim.mjs +8 -9
- package/fesm2022/ng-zorro-antd-extension-trim.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-util.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-wang-editor.mjs +11 -13
- package/fesm2022/ng-zorro-antd-extension-wang-editor.mjs.map +1 -1
- package/jigsaw/jigsaw.component.d.ts +1 -1
- package/jigsaw/jigsaw.module.d.ts +1 -3
- package/package.json +9 -51
- package/pipes/map.pipe.d.ts +1 -1
- package/pipes/pipes.module.d.ts +1 -1
- package/pipes/safe-html.pipe.d.ts +1 -1
- package/pipes/safe-null.pipe.d.ts +1 -1
- package/pipes/safe-resource-url.pipe.d.ts +1 -1
- package/pipes/safe-script.pipe.d.ts +1 -1
- package/pipes/safe-style.pipe.d.ts +1 -1
- package/pipes/safe-url.pipe.d.ts +1 -1
- package/print/nzx-print-content.directive.d.ts +1 -1
- package/print/nzx-print-v.component.d.ts +1 -1
- package/print/nzx-print.component.d.ts +1 -1
- package/print/nzx-print.directive.d.ts +1 -1
- package/print/nzx-print.module.d.ts +1 -4
- package/schematics/ng-add/index.js +1 -2
- package/schematics/ng-add/index.js.map +1 -1
- package/simple-table/directive/expand.directive.d.ts +1 -1
- package/simple-table/directive/td.directive.d.ts +1 -1
- package/simple-table/directive/th.directive.d.ts +1 -1
- package/simple-table/simple-table.component.d.ts +1 -1
- package/simple-table/simple-table.module.d.ts +1 -3
- package/table-adaptor/page-table-basic.d.ts +1 -1
- package/table-adaptor/table-adaptor.directive.d.ts +1 -1
- package/table-adaptor/table-adaptor.module.d.ts +1 -1
- package/table-form/directive/table-expand.directive.d.ts +1 -1
- package/table-form/directive/table-td.directive.d.ts +1 -1
- package/table-form/directive/table-th.directive.d.ts +1 -1
- package/table-form/table-form.component.d.ts +1 -1
- package/table-form/table-form.module.d.ts +1 -10
- package/table-select/abstract-table-select.d.ts +2 -2
- package/table-select/key.directive.d.ts +1 -1
- package/table-select/nzx-table-select.module.d.ts +1 -6
- package/table-select/page-table-select/page-table-select.component.d.ts +1 -1
- package/table-select/table-select/table-select.component.d.ts +1 -1
- package/timer-button/timer-button.directive.d.ts +1 -1
- package/timer-button/timer-button.module.d.ts +1 -2
- package/trim/trim.directive.d.ts +1 -1
- package/trim/trim.module.d.ts +1 -1
- package/wang-editor/wang-editor.component.d.ts +1 -1
- package/wang-editor/wang-editor.module.d.ts +1 -2
- package/wang-editor/wang-toolbar.component.d.ts +1 -1
- package/dynamic-form/nzx-dynamic-form.module.d.ts +0 -9
- package/esm2022/acl/ng-zorro-antd-extension-acl.mjs +0 -5
- package/esm2022/acl/nzx-acl.directive.mjs +0 -80
- package/esm2022/acl/nzx-acl.module.mjs +0 -25
- package/esm2022/acl/nzx-acl.service.mjs +0 -45
- package/esm2022/acl/public-api.mjs +0 -8
- package/esm2022/blank-field/blank-field.component.mjs +0 -52
- package/esm2022/blank-field/blank-field.module.mjs +0 -18
- package/esm2022/blank-field/ng-zorro-antd-extension-blank-field.mjs +0 -5
- package/esm2022/blank-field/public-api.mjs +0 -7
- package/esm2022/checkbox/checkbox-group.component.mjs +0 -108
- package/esm2022/checkbox/checkbox.module.mjs +0 -20
- package/esm2022/checkbox/ng-zorro-antd-extension-checkbox.mjs +0 -5
- package/esm2022/checkbox/public-api.mjs +0 -7
- package/esm2022/configurable-query/configurable-query-item/configurable-query-item.component.mjs +0 -85
- package/esm2022/configurable-query/configurable-query.component.mjs +0 -309
- package/esm2022/configurable-query/configurable-query.module.mjs +0 -111
- package/esm2022/configurable-query/control.directive.mjs +0 -18
- package/esm2022/configurable-query/controls/abstract.control.mjs +0 -17
- package/esm2022/configurable-query/controls/date-picker.control.mjs +0 -36
- package/esm2022/configurable-query/controls/input.control.mjs +0 -35
- package/esm2022/configurable-query/controls/range-picker.control.mjs +0 -34
- package/esm2022/configurable-query/controls/select.control.mjs +0 -50
- package/esm2022/configurable-query/controls/template.control.mjs +0 -32
- package/esm2022/configurable-query/ng-zorro-antd-extension-configurable-query.mjs +0 -5
- package/esm2022/configurable-query/public-api.mjs +0 -7
- package/esm2022/configurable-query/query-config.service.mjs +0 -68
- package/esm2022/configurable-query/type.mjs +0 -2
- package/esm2022/core/config/config.mjs +0 -6
- package/esm2022/core/config/config.service.mjs +0 -84
- package/esm2022/core/config/ng-zorro-antd-extension-core-config.mjs +0 -5
- package/esm2022/core/config/public-api.mjs +0 -3
- package/esm2022/dynamic-form/ng-zorro-antd-extension-dynamic-form.mjs +0 -5
- package/esm2022/dynamic-form/nzx-dynamic-form.module.mjs +0 -23
- package/esm2022/dynamic-form/public-api.mjs +0 -6
- package/esm2022/editable/editable.component.mjs +0 -140
- package/esm2022/editable/editable.module.mjs +0 -36
- package/esm2022/editable/ng-zorro-antd-extension-editable.mjs +0 -5
- package/esm2022/editable/public-api.mjs +0 -3
- package/esm2022/i18n/languages/en_US.mjs +0 -10
- package/esm2022/i18n/languages/zh_CN.mjs +0 -10
- package/esm2022/i18n/ng-zorro-antd-extension-i18n.mjs +0 -5
- package/esm2022/i18n/nz-i18n.interface.mjs +0 -2
- package/esm2022/i18n/public-api.mjs +0 -4
- package/esm2022/jigsaw/jigsaw.component.mjs +0 -257
- package/esm2022/jigsaw/jigsaw.module.mjs +0 -19
- package/esm2022/jigsaw/ng-zorro-antd-extension-jigsaw.mjs +0 -5
- package/esm2022/jigsaw/public-api.mjs +0 -7
- package/esm2022/ng-zorro-antd-extension.mjs +0 -5
- package/esm2022/pipes/map.pipe.mjs +0 -24
- package/esm2022/pipes/ng-zorro-antd-extension-pipes.mjs +0 -5
- package/esm2022/pipes/pipes.module.mjs +0 -50
- package/esm2022/pipes/public-api.mjs +0 -13
- package/esm2022/pipes/safe-html.pipe.mjs +0 -20
- package/esm2022/pipes/safe-null.pipe.mjs +0 -30
- package/esm2022/pipes/safe-resource-url.pipe.mjs +0 -20
- package/esm2022/pipes/safe-script.pipe.mjs +0 -20
- package/esm2022/pipes/safe-style.pipe.mjs +0 -20
- package/esm2022/pipes/safe-url.pipe.mjs +0 -34
- package/esm2022/print/ng-zorro-antd-extension-print.mjs +0 -5
- package/esm2022/print/nzx-print-content.directive.mjs +0 -22
- package/esm2022/print/nzx-print-v.component.mjs +0 -301
- package/esm2022/print/nzx-print.component.mjs +0 -190
- package/esm2022/print/nzx-print.directive.mjs +0 -92
- package/esm2022/print/nzx-print.module.mjs +0 -39
- package/esm2022/print/public-api.mjs +0 -10
- package/esm2022/public-api.mjs +0 -5
- package/esm2022/simple-table/directive/expand.directive.mjs +0 -16
- package/esm2022/simple-table/directive/td.directive.mjs +0 -18
- package/esm2022/simple-table/directive/th.directive.mjs +0 -19
- package/esm2022/simple-table/ng-zorro-antd-extension-simple-table.mjs +0 -5
- package/esm2022/simple-table/public-api.mjs +0 -10
- package/esm2022/simple-table/simple-table.component.mjs +0 -229
- package/esm2022/simple-table/simple-table.module.mjs +0 -38
- package/esm2022/table-adaptor/ng-zorro-antd-extension-table-adaptor.mjs +0 -5
- package/esm2022/table-adaptor/page-table-basic.mjs +0 -22
- package/esm2022/table-adaptor/public-api.mjs +0 -8
- package/esm2022/table-adaptor/table-adaptor.directive.mjs +0 -173
- package/esm2022/table-adaptor/table-adaptor.module.mjs +0 -17
- package/esm2022/table-form/directive/table-expand.directive.mjs +0 -18
- package/esm2022/table-form/directive/table-td.directive.mjs +0 -18
- package/esm2022/table-form/directive/table-th.directive.mjs +0 -20
- package/esm2022/table-form/ng-zorro-antd-extension-table-form.mjs +0 -5
- package/esm2022/table-form/public-api.mjs +0 -11
- package/esm2022/table-form/table-form.component.mjs +0 -370
- package/esm2022/table-form/table-form.module.mjs +0 -71
- package/esm2022/table-form/type.mjs +0 -2
- package/esm2022/table-select/abstract-table-select.mjs +0 -140
- package/esm2022/table-select/key.directive.mjs +0 -21
- package/esm2022/table-select/ng-zorro-antd-extension-table-select.mjs +0 -5
- package/esm2022/table-select/nzx-table-select.module.mjs +0 -50
- package/esm2022/table-select/page-table-select/page-table-select.component.mjs +0 -58
- package/esm2022/table-select/public-api.mjs +0 -11
- package/esm2022/table-select/table-select/table-select.component.mjs +0 -39
- package/esm2022/table-select/type.mjs +0 -2
- package/esm2022/timer-button/ng-zorro-antd-extension-timer-button.mjs +0 -5
- package/esm2022/timer-button/public-api.mjs +0 -7
- package/esm2022/timer-button/timer-button.directive.mjs +0 -69
- package/esm2022/timer-button/timer-button.module.mjs +0 -18
- package/esm2022/trim/ng-zorro-antd-extension-trim.mjs +0 -5
- package/esm2022/trim/public-api.mjs +0 -7
- package/esm2022/trim/trim.directive.mjs +0 -123
- package/esm2022/trim/trim.module.mjs +0 -17
- package/esm2022/types/common.mjs +0 -2
- package/esm2022/types/ng-zorro-antd-extension-types.mjs +0 -5
- package/esm2022/types/public-api.mjs +0 -6
- package/esm2022/util/lib/cloneDeep.mjs +0 -49
- package/esm2022/util/lib/fileUtil.mjs +0 -51
- package/esm2022/util/lib/getElementByTag.mjs +0 -38
- package/esm2022/util/lib/isArray.mjs +0 -17
- package/esm2022/util/lib/isDate.mjs +0 -4
- package/esm2022/util/lib/isEmpty.mjs +0 -19
- package/esm2022/util/lib/isNumber.mjs +0 -12
- package/esm2022/util/lib/isObject.mjs +0 -10
- package/esm2022/util/lib/isString.mjs +0 -11
- package/esm2022/util/lib/toNumber.mjs +0 -18
- package/esm2022/util/lib/toString.mjs +0 -16
- package/esm2022/util/lib/trimObject.mjs +0 -15
- package/esm2022/util/lib/updateControlStatus.mjs +0 -47
- package/esm2022/util/ng-zorro-antd-extension-util.mjs +0 -5
- package/esm2022/util/public-api.mjs +0 -18
- package/esm2022/wang-editor/ng-zorro-antd-extension-wang-editor.mjs +0 -5
- package/esm2022/wang-editor/public-api.mjs +0 -9
- package/esm2022/wang-editor/type.mjs +0 -2
- package/esm2022/wang-editor/wang-editor.component.mjs +0 -235
- package/esm2022/wang-editor/wang-editor.module.mjs +0 -19
- package/esm2022/wang-editor/wang-toolbar.component.mjs +0 -57
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NzxDynamicFormModule {
|
|
5
|
-
static forRoot() {
|
|
6
|
-
return {
|
|
7
|
-
ngModule: NzxDynamicFormModule,
|
|
8
|
-
providers: [],
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxDynamicFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NzxDynamicFormModule, imports: [CommonModule] }); }
|
|
13
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxDynamicFormModule, imports: [CommonModule] }); }
|
|
14
|
-
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxDynamicFormModule, decorators: [{
|
|
16
|
-
type: NgModule,
|
|
17
|
-
args: [{
|
|
18
|
-
imports: [CommonModule],
|
|
19
|
-
declarations: [],
|
|
20
|
-
exports: [],
|
|
21
|
-
}]
|
|
22
|
-
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnp4LWR5bmFtaWMtZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9uengtZHluYW1pYy1mb3JtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTzlELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixTQUFTLEVBQUUsRUFBRTtTQUNkLENBQUM7SUFDSixDQUFDOytHQU5VLG9CQUFvQjtnSEFBcEIsb0JBQW9CLFlBSnJCLFlBQVk7Z0hBSVgsb0JBQW9CLFlBSnJCLFlBQVk7OzRGQUlYLG9CQUFvQjtrQkFMaEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsRUFBRTtpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgZXhwb3J0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIE56eER5bmFtaWNGb3JtTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOenhEeW5hbWljRm9ybU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTnp4RHluYW1pY0Zvcm1Nb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
3
|
-
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
|
|
4
|
-
*/
|
|
5
|
-
export * from './nzx-dynamic-form.module';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5leHBvcnQgKiBmcm9tICcuL256eC1keW5hbWljLWZvcm0ubW9kdWxlJztcbiJdfQ==
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @angular-eslint/directive-class-suffix */
|
|
2
|
-
/* eslint-disable @angular-eslint/directive-selector */
|
|
3
|
-
/* eslint-disable @angular-eslint/component-selector */
|
|
4
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
5
|
-
import { isNumber, isString, toNumber, toString, } from 'ng-zorro-antd-extension/util';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/common";
|
|
8
|
-
import * as i2 from "@angular/forms";
|
|
9
|
-
import * as i3 from "ng-zorro-antd/icon";
|
|
10
|
-
import * as i4 from "ng-zorro-antd/input";
|
|
11
|
-
import * as i5 from "ng-zorro-antd/core/trans-button";
|
|
12
|
-
export class NzxEditableComponent {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.nzxContent = '';
|
|
15
|
-
this.nzxShowBtn = true;
|
|
16
|
-
this.nzxContentChange = new EventEmitter();
|
|
17
|
-
this.class = 'nzx-editable-cell';
|
|
18
|
-
this._valueType = 'string';
|
|
19
|
-
}
|
|
20
|
-
dblclick() {
|
|
21
|
-
this.edit();
|
|
22
|
-
}
|
|
23
|
-
ngOnInit() {
|
|
24
|
-
if (this.nzxContentType) {
|
|
25
|
-
this._valueType = this.nzxContentType;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
if (isString(this.nzxContent)) {
|
|
29
|
-
this._valueType = 'string';
|
|
30
|
-
}
|
|
31
|
-
if (isNumber(this.nzxContent)) {
|
|
32
|
-
this._valueType = 'number';
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
this.detailContainerRef.clear();
|
|
36
|
-
const view = this.detailContainerRef.createEmbeddedView(this.detailTemplateRef);
|
|
37
|
-
view.markForCheck();
|
|
38
|
-
}
|
|
39
|
-
edit() {
|
|
40
|
-
this.detailContainerRef.clear();
|
|
41
|
-
const view = this.detailContainerRef.createEmbeddedView(this.editTemplateRef);
|
|
42
|
-
view.markForCheck();
|
|
43
|
-
view.rootNodes[0].focus();
|
|
44
|
-
}
|
|
45
|
-
blur() {
|
|
46
|
-
this.detailContainerRef.clear();
|
|
47
|
-
const view = this.detailContainerRef.createEmbeddedView(this.detailTemplateRef);
|
|
48
|
-
view.markForCheck();
|
|
49
|
-
}
|
|
50
|
-
valueChange(value) {
|
|
51
|
-
let result = value;
|
|
52
|
-
if (this._valueType === 'number') {
|
|
53
|
-
result = toNumber(value);
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
result = toString(value);
|
|
57
|
-
}
|
|
58
|
-
this.nzxContentChange.emit(result);
|
|
59
|
-
}
|
|
60
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxEditableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
61
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NzxEditableComponent, selector: "[nzx-editable]", inputs: { nzxContent: "nzxContent", nzxShowBtn: "nzxShowBtn", nzxContentType: "nzxContentType" }, outputs: { nzxContentChange: "nzxContentChange" }, host: { listeners: { "dblclick": "dblclick()" }, properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "detailTemplateRef", first: true, predicate: ["detailTemplate"], descendants: true, static: true }, { propertyName: "editTemplateRef", first: true, predicate: ["editTemplate"], descendants: true, static: true }, { propertyName: "detailContainerRef", first: true, predicate: ["detailContainer"], descendants: true, read: ViewContainerRef, static: true }], exportAs: ["NzxEditable"], ngImport: i0, template: `
|
|
62
|
-
<ng-container #detailContainer> </ng-container>
|
|
63
|
-
|
|
64
|
-
<ng-template #detailTemplate>
|
|
65
|
-
{{ nzxContent }}
|
|
66
|
-
<button
|
|
67
|
-
*ngIf="nzxShowBtn"
|
|
68
|
-
class="ant-typography-edit"
|
|
69
|
-
type="button"
|
|
70
|
-
nz-trans-button
|
|
71
|
-
(click)="edit()"
|
|
72
|
-
>
|
|
73
|
-
<span nz-icon nzType="edit" nzTheme="outline"></span>
|
|
74
|
-
</button>
|
|
75
|
-
</ng-template>
|
|
76
|
-
|
|
77
|
-
<ng-template #editTemplate>
|
|
78
|
-
<textarea
|
|
79
|
-
nz-input
|
|
80
|
-
[nzAutosize]="{ minRows: 1, maxRows: 4 }"
|
|
81
|
-
[ngModel]="nzxContent"
|
|
82
|
-
(ngModelChange)="valueChange($event)"
|
|
83
|
-
(blur)="blur()"
|
|
84
|
-
></textarea>
|
|
85
|
-
</ng-template>
|
|
86
|
-
`, isInline: true, styles: [".nzx-editable-cell{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "directive", type: i4.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "directive", type: i4.NzAutosizeDirective, selector: "textarea[nzAutosize]", inputs: ["nzAutosize"], exportAs: ["nzAutosize"] }, { kind: "directive", type: i5.NzTransButtonDirective, selector: "button[nz-trans-button]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
87
|
-
}
|
|
88
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxEditableComponent, decorators: [{
|
|
89
|
-
type: Component,
|
|
90
|
-
args: [{ selector: '[nzx-editable]', template: `
|
|
91
|
-
<ng-container #detailContainer> </ng-container>
|
|
92
|
-
|
|
93
|
-
<ng-template #detailTemplate>
|
|
94
|
-
{{ nzxContent }}
|
|
95
|
-
<button
|
|
96
|
-
*ngIf="nzxShowBtn"
|
|
97
|
-
class="ant-typography-edit"
|
|
98
|
-
type="button"
|
|
99
|
-
nz-trans-button
|
|
100
|
-
(click)="edit()"
|
|
101
|
-
>
|
|
102
|
-
<span nz-icon nzType="edit" nzTheme="outline"></span>
|
|
103
|
-
</button>
|
|
104
|
-
</ng-template>
|
|
105
|
-
|
|
106
|
-
<ng-template #editTemplate>
|
|
107
|
-
<textarea
|
|
108
|
-
nz-input
|
|
109
|
-
[nzAutosize]="{ minRows: 1, maxRows: 4 }"
|
|
110
|
-
[ngModel]="nzxContent"
|
|
111
|
-
(ngModelChange)="valueChange($event)"
|
|
112
|
-
(blur)="blur()"
|
|
113
|
-
></textarea>
|
|
114
|
-
</ng-template>
|
|
115
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'NzxEditable', styles: [".nzx-editable-cell{cursor:pointer}\n"] }]
|
|
116
|
-
}], propDecorators: { nzxContent: [{
|
|
117
|
-
type: Input
|
|
118
|
-
}], nzxShowBtn: [{
|
|
119
|
-
type: Input
|
|
120
|
-
}], nzxContentType: [{
|
|
121
|
-
type: Input
|
|
122
|
-
}], nzxContentChange: [{
|
|
123
|
-
type: Output
|
|
124
|
-
}], class: [{
|
|
125
|
-
type: HostBinding,
|
|
126
|
-
args: ['class']
|
|
127
|
-
}], detailTemplateRef: [{
|
|
128
|
-
type: ViewChild,
|
|
129
|
-
args: ['detailTemplate', { static: true }]
|
|
130
|
-
}], editTemplateRef: [{
|
|
131
|
-
type: ViewChild,
|
|
132
|
-
args: ['editTemplate', { static: true }]
|
|
133
|
-
}], detailContainerRef: [{
|
|
134
|
-
type: ViewChild,
|
|
135
|
-
args: ['detailContainer', { static: true, read: ViewContainerRef }]
|
|
136
|
-
}], dblclick: [{
|
|
137
|
-
type: HostListener,
|
|
138
|
-
args: ['dblclick']
|
|
139
|
-
}] } });
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9lZGl0YWJsZS9lZGl0YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkRBQTJEO0FBQzNELHVEQUF1RDtBQUN2RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEdBQ1QsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztBQXdDdEMsTUFBTSxPQUFPLG9CQUFvQjtJQXRDakM7UUF1Q1csZUFBVSxHQUEyQixFQUFFLENBQUM7UUFDeEMsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdqQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFCLFVBQUssR0FBRyxtQkFBbUIsQ0FBQztRQVUxQyxlQUFVLEdBQXdCLFFBQVEsQ0FBQztLQW9EcEQ7SUFqREMsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1lBQzdCLENBQUM7WUFDRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUNyRCxJQUFJLENBQUMsaUJBQWlCLENBQ3ZCLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUNyRCxJQUFJLENBQUMsZUFBZSxDQUNyQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUF5QixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FDckQsSUFBSSxDQUFDLGlCQUFpQixDQUN2QixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7K0dBcEVVLG9CQUFvQjttR0FBcEIsb0JBQW9CLDJtQkFlcUIsZ0JBQWdCLHNFQW5EMUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5QlQ7OzRGQVdVLG9CQUFvQjtrQkF0Q2hDLFNBQVM7K0JBQ0UsZ0JBQWdCLFlBQ2hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJULG1CQVFnQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLGFBQWE7OEJBR2QsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVlLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTztnQkFHWixpQkFBaUI7c0JBRHhCLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlyQyxlQUFlO3NCQUR0QixTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSW5DLGtCQUFrQjtzQkFEekIsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUt0RSxRQUFRO3NCQURQLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBpc051bWJlcixcbiAgaXNTdHJpbmcsXG4gIHRvTnVtYmVyLFxuICB0b1N0cmluZyxcbn0gZnJvbSAnbmctem9ycm8tYW50ZC1leHRlbnNpb24vdXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1tuengtZWRpdGFibGVdJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyICNkZXRhaWxDb250YWluZXI+IDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNkZXRhaWxUZW1wbGF0ZT5cbiAgICAgIHt7IG56eENvbnRlbnQgfX1cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJuenhTaG93QnRuXCJcbiAgICAgICAgY2xhc3M9XCJhbnQtdHlwb2dyYXBoeS1lZGl0XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIG56LXRyYW5zLWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiZWRpdCgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJlZGl0XCIgbnpUaGVtZT1cIm91dGxpbmVcIj48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNlZGl0VGVtcGxhdGU+XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgbnotaW5wdXRcbiAgICAgICAgW256QXV0b3NpemVdPVwieyBtaW5Sb3dzOiAxLCBtYXhSb3dzOiA0IH1cIlxuICAgICAgICBbbmdNb2RlbF09XCJuenhDb250ZW50XCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cImJsdXIoKVwiXG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAubnp4LWVkaXRhYmxlLWNlbGwge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGV4cG9ydEFzOiAnTnp4RWRpdGFibGUnLFxufSlcbmV4cG9ydCBjbGFzcyBOenhFZGl0YWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG56eENvbnRlbnQ6IHN0cmluZyB8IG51bWJlciB8IG51bGwgPSAnJztcbiAgQElucHV0KCkgbnp4U2hvd0J0biA9IHRydWU7XG4gIEBJbnB1dCgpIG56eENvbnRlbnRUeXBlOiAnc3RyaW5nJyB8ICdudW1iZXInIHwgdW5kZWZpbmVkO1xuXG4gIEBPdXRwdXQoKSBuenhDb250ZW50Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzcyA9ICduengtZWRpdGFibGUtY2VsbCc7XG5cbiAgQFZpZXdDaGlsZCgnZGV0YWlsVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIGRldGFpbFRlbXBsYXRlUmVmITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCdlZGl0VGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIGVkaXRUZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgnZGV0YWlsQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgcHJpdmF0ZSBkZXRhaWxDb250YWluZXJSZWYhOiBWaWV3Q29udGFpbmVyUmVmO1xuICBwcml2YXRlIF92YWx1ZVR5cGU6ICdzdHJpbmcnIHwgJ251bWJlcicgPSAnc3RyaW5nJztcblxuICBASG9zdExpc3RlbmVyKCdkYmxjbGljaycpXG4gIGRibGNsaWNrKCkge1xuICAgIHRoaXMuZWRpdCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubnp4Q29udGVudFR5cGUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlVHlwZSA9IHRoaXMubnp4Q29udGVudFR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1N0cmluZyh0aGlzLm56eENvbnRlbnQpKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlVHlwZSA9ICdzdHJpbmcnO1xuICAgICAgfVxuICAgICAgaWYgKGlzTnVtYmVyKHRoaXMubnp4Q29udGVudCkpIHtcbiAgICAgICAgdGhpcy5fdmFsdWVUeXBlID0gJ251bWJlcic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kZXRhaWxDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5kZXRhaWxDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KFxuICAgICAgdGhpcy5kZXRhaWxUZW1wbGF0ZVJlZlxuICAgICk7XG4gICAgdmlldy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGVkaXQoKSB7XG4gICAgdGhpcy5kZXRhaWxDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5kZXRhaWxDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KFxuICAgICAgdGhpcy5lZGl0VGVtcGxhdGVSZWZcbiAgICApO1xuICAgIHZpZXcubWFya0ZvckNoZWNrKCk7XG4gICAgKHZpZXcucm9vdE5vZGVzWzBdIGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQpLmZvY3VzKCk7XG4gIH1cblxuICBibHVyKCkge1xuICAgIHRoaXMuZGV0YWlsQ29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuZGV0YWlsQ29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhcbiAgICAgIHRoaXMuZGV0YWlsVGVtcGxhdGVSZWZcbiAgICApO1xuICAgIHZpZXcubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICB2YWx1ZUNoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgIGlmICh0aGlzLl92YWx1ZVR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXN1bHQgPSB0b051bWJlcih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IHRvU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5uenhDb250ZW50Q2hhbmdlLmVtaXQocmVzdWx0KTtcbiAgfVxufVxuIl19
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
|
-
import { NzTransButtonModule } from 'ng-zorro-antd/core/trans-button';
|
|
5
|
-
import { NzIconModule } from 'ng-zorro-antd/icon';
|
|
6
|
-
import { NzInputModule } from 'ng-zorro-antd/input';
|
|
7
|
-
import { NzxEditableComponent } from './editable.component';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export class NzxEditableModule {
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxEditableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
11
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NzxEditableModule, declarations: [NzxEditableComponent], imports: [CommonModule,
|
|
12
|
-
FormsModule,
|
|
13
|
-
NzIconModule,
|
|
14
|
-
NzInputModule,
|
|
15
|
-
NzTransButtonModule], exports: [NzxEditableComponent] }); }
|
|
16
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxEditableModule, imports: [CommonModule,
|
|
17
|
-
FormsModule,
|
|
18
|
-
NzIconModule,
|
|
19
|
-
NzInputModule,
|
|
20
|
-
NzTransButtonModule] }); }
|
|
21
|
-
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxEditableModule, decorators: [{
|
|
23
|
-
type: NgModule,
|
|
24
|
-
args: [{
|
|
25
|
-
declarations: [NzxEditableComponent],
|
|
26
|
-
imports: [
|
|
27
|
-
CommonModule,
|
|
28
|
-
FormsModule,
|
|
29
|
-
NzIconModule,
|
|
30
|
-
NzInputModule,
|
|
31
|
-
NzTransButtonModule,
|
|
32
|
-
],
|
|
33
|
-
exports: [NzxEditableComponent],
|
|
34
|
-
}]
|
|
35
|
-
}] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9lZGl0YWJsZS9lZGl0YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBWTVELE1BQU0sT0FBTyxpQkFBaUI7K0dBQWpCLGlCQUFpQjtnSEFBakIsaUJBQWlCLGlCQVZiLG9CQUFvQixhQUVqQyxZQUFZO1lBQ1osV0FBVztZQUNYLFlBQVk7WUFDWixhQUFhO1lBQ2IsbUJBQW1CLGFBRVgsb0JBQW9CO2dIQUVuQixpQkFBaUIsWUFSMUIsWUFBWTtZQUNaLFdBQVc7WUFDWCxZQUFZO1lBQ1osYUFBYTtZQUNiLG1CQUFtQjs7NEZBSVYsaUJBQWlCO2tCQVg3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUNwQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixtQkFBbUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOelRyYW5zQnV0dG9uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3RyYW5zLWJ1dHRvbic7XG5pbXBvcnQgeyBOekljb25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2ljb24nO1xuaW1wb3J0IHsgTnpJbnB1dE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaW5wdXQnO1xuaW1wb3J0IHsgTnp4RWRpdGFibGVDb21wb25lbnQgfSBmcm9tICcuL2VkaXRhYmxlLmNvbXBvbmVudCc7XG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtOenhFZGl0YWJsZUNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTnpJY29uTW9kdWxlLFxuICAgIE56SW5wdXRNb2R1bGUsXG4gICAgTnpUcmFuc0J1dHRvbk1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW056eEVkaXRhYmxlQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTnp4RWRpdGFibGVNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctem9ycm8tYW50ZC1leHRlbnNpb24tZWRpdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2VkaXRhYmxlL25nLXpvcnJvLWFudGQtZXh0ZW5zaW9uLWVkaXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './editable.component';
|
|
2
|
-
export * from './editable.module';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvZWRpdGFibGUvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VkaXRhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRhYmxlLm1vZHVsZSc7XG4iXX0=
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
locale: 'en',
|
|
3
|
-
Query: {
|
|
4
|
-
query: 'query',
|
|
5
|
-
reset: 'reset',
|
|
6
|
-
expand: 'expand',
|
|
7
|
-
collapse: 'collapse',
|
|
8
|
-
},
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5fVVMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzL2kxOG4vbGFuZ3VhZ2VzL2VuX1VTLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWU7SUFDYixNQUFNLEVBQUUsSUFBSTtJQUNaLEtBQUssRUFBRTtRQUNMLEtBQUssRUFBRSxPQUFPO1FBQ2QsS0FBSyxFQUFFLE9BQU87UUFDZCxNQUFNLEVBQUUsUUFBUTtRQUNoQixRQUFRLEVBQUUsVUFBVTtLQUNyQjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIGxvY2FsZTogJ2VuJyxcbiAgUXVlcnk6IHtcbiAgICBxdWVyeTogJ3F1ZXJ5JyxcbiAgICByZXNldDogJ3Jlc2V0JyxcbiAgICBleHBhbmQ6ICdleHBhbmQnLFxuICAgIGNvbGxhcHNlOiAnY29sbGFwc2UnLFxuICB9LFxufTtcbiJdfQ==
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
locale: 'zh-cn',
|
|
3
|
-
Query: {
|
|
4
|
-
query: '查询',
|
|
5
|
-
reset: '重置',
|
|
6
|
-
expand: '展开',
|
|
7
|
-
collapse: '收起',
|
|
8
|
-
},
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemhfQ04uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzL2kxOG4vbGFuZ3VhZ2VzL3poX0NOLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWU7SUFDYixNQUFNLEVBQUUsT0FBTztJQUNmLEtBQUssRUFBRTtRQUNMLEtBQUssRUFBRSxJQUFJO1FBQ1gsS0FBSyxFQUFFLElBQUk7UUFDWCxNQUFNLEVBQUUsSUFBSTtRQUNaLFFBQVEsRUFBRSxJQUFJO0tBQ2Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBsb2NhbGU6ICd6aC1jbicsXG4gIFF1ZXJ5OiB7XG4gICAgcXVlcnk6ICfmn6Xor6InLFxuICAgIHJlc2V0OiAn6YeN572uJyxcbiAgICBleHBhbmQ6ICflsZXlvIAnLFxuICAgIGNvbGxhcHNlOiAn5pS26LW3JyxcbiAgfSxcbn07XG4iXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctem9ycm8tYW50ZC1leHRlbnNpb24taTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvaTE4bi9uZy16b3Jyby1hbnRkLWV4dGVuc2lvbi1pMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnotaTE4bi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2kxOG4vbnotaTE4bi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTnp4UXVlcnlJMThuSW50ZXJmYWNlIHtcbiAgcXVlcnk6IHN0cmluZztcbiAgcmVzZXQ6IHN0cmluZztcbiAgZXhwYW5kOiBzdHJpbmc7XG4gIGNvbGxhcHNlOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from './nz-i18n.interface';
|
|
2
|
-
export { default as nzx_en_US } from './languages/en_US';
|
|
3
|
-
export { default as nzx_zh_CN } from './languages/zh_CN';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvaTE4bi9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFFcEMsT0FBTyxFQUFFLE9BQU8sSUFBSSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxJQUFJLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uei1pMThuLmludGVyZmFjZSc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgbnp4X2VuX1VTIH0gZnJvbSAnLi9sYW5ndWFnZXMvZW5fVVMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBuenhfemhfQ04gfSBmcm9tICcuL2xhbmd1YWdlcy96aF9DTic7XG4iXX0=
|
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
import * as i2 from "ng-zorro-antd/icon";
|
|
5
|
-
const l = 42; // 滑块边长
|
|
6
|
-
const r = 9; // 滑块半径
|
|
7
|
-
const PI = Math.PI;
|
|
8
|
-
const L = l + r * 2 + 3; // 滑块实际边长
|
|
9
|
-
export class NzxJigsawComponent {
|
|
10
|
-
constructor(cd) {
|
|
11
|
-
this.cd = cd;
|
|
12
|
-
this.width = 310;
|
|
13
|
-
this.height = 155;
|
|
14
|
-
this.nzxLoadingText = '加载中...';
|
|
15
|
-
this.nzxTipText = '向右滑动填充拼图';
|
|
16
|
-
this.nzxBgImgUrl = '';
|
|
17
|
-
this.nzxOnRefresh = new EventEmitter();
|
|
18
|
-
this.nzxOnSuccess = new EventEmitter();
|
|
19
|
-
this.nzxOnFail = new EventEmitter();
|
|
20
|
-
this.isLoading = false;
|
|
21
|
-
this.x = 0;
|
|
22
|
-
this.y = 0;
|
|
23
|
-
this.originX = 0;
|
|
24
|
-
this.originY = 0;
|
|
25
|
-
this.trail = [];
|
|
26
|
-
this.isMouseDown = false;
|
|
27
|
-
}
|
|
28
|
-
ngAfterViewInit() {
|
|
29
|
-
this.initImg();
|
|
30
|
-
const handleDragMove = (e) => {
|
|
31
|
-
if (!this.isMouseDown) {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
e.preventDefault();
|
|
35
|
-
const eventX = e.clientX || e.touches[0].clientX;
|
|
36
|
-
const eventY = e.clientY || e.touches[0].clientY;
|
|
37
|
-
const moveX = eventX - this.originX;
|
|
38
|
-
const moveY = eventY - this.originY;
|
|
39
|
-
if (moveX < 0 || moveX + 38 >= this.width)
|
|
40
|
-
return false;
|
|
41
|
-
this.sliderRef.nativeElement.style.left = moveX + 'px';
|
|
42
|
-
const blockLeft = ((this.width - 40 - 20) / (this.width - 40)) * moveX;
|
|
43
|
-
this.blockRef.nativeElement.style.left = blockLeft + 'px';
|
|
44
|
-
this.sliderContainerRef.nativeElement.classList.add('nzx-jigsaw-slider-container-active');
|
|
45
|
-
this.sliderMaskRef.nativeElement.style.width = moveX + 'px';
|
|
46
|
-
this.trail.push(moveY);
|
|
47
|
-
return false;
|
|
48
|
-
};
|
|
49
|
-
const handleDragEnd = (e) => {
|
|
50
|
-
if (!this.isMouseDown) {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
this.isMouseDown = false;
|
|
54
|
-
const eventX = e.clientX || e.changedTouches[0].clientX;
|
|
55
|
-
if (eventX === this.originX) {
|
|
56
|
-
return false;
|
|
57
|
-
}
|
|
58
|
-
this.sliderContainerRef.nativeElement.classList.remove('nzx-jigsaw-slider-container-active');
|
|
59
|
-
this.trail = this.trail;
|
|
60
|
-
const { spliced, verified } = this.verify();
|
|
61
|
-
if (spliced) {
|
|
62
|
-
if (verified) {
|
|
63
|
-
this.sliderContainerRef.nativeElement.classList.add('nzx-jigsaw-slider-container-success');
|
|
64
|
-
this.nzxOnSuccess.emit();
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
this.sliderContainerRef.nativeElement.classList.add('nzx-jigsaw-slider-container-fail');
|
|
68
|
-
this.nzxTipText = '请再试一次';
|
|
69
|
-
this.reset();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
this.sliderContainerRef.nativeElement.classList.add('nzx-jigsaw-slider-container-fail');
|
|
74
|
-
this.nzxOnFail.emit();
|
|
75
|
-
setTimeout(() => this.reset(), 1000);
|
|
76
|
-
}
|
|
77
|
-
return false;
|
|
78
|
-
};
|
|
79
|
-
document.addEventListener('mousemove', handleDragMove);
|
|
80
|
-
document.addEventListener('touchmove', handleDragMove);
|
|
81
|
-
document.addEventListener('mouseup', handleDragEnd);
|
|
82
|
-
document.addEventListener('touchend', handleDragEnd);
|
|
83
|
-
}
|
|
84
|
-
selectstart() {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
refresh() {
|
|
88
|
-
this.reset();
|
|
89
|
-
this.nzxOnRefresh.emit();
|
|
90
|
-
}
|
|
91
|
-
handleDragStart(e) {
|
|
92
|
-
this.originX = e.clientX || e.touches[0].clientX;
|
|
93
|
-
this.originY = e.clientY || e.touches[0].clientY;
|
|
94
|
-
this.isMouseDown = true;
|
|
95
|
-
}
|
|
96
|
-
verify() {
|
|
97
|
-
const arr = this.trail; // 拖动时y轴的移动距离
|
|
98
|
-
const average = arr.reduce((x, y) => x + y) / arr.length;
|
|
99
|
-
const deviations = arr.map((x) => x - average);
|
|
100
|
-
const stddev = Math.sqrt(deviations
|
|
101
|
-
.map((x) => x * x)
|
|
102
|
-
.reduce((x, y) => x + y) / arr.length);
|
|
103
|
-
const left = parseInt(this.blockRef.nativeElement.style.left);
|
|
104
|
-
return {
|
|
105
|
-
spliced: Math.abs(left - this.x) < 10,
|
|
106
|
-
verified: stddev !== 0, // 简单验证拖动轨迹,为零时表示Y轴上下没有波动,可能非人为操作
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
reset() {
|
|
110
|
-
const { width, height } = this;
|
|
111
|
-
// 重置样式
|
|
112
|
-
this.sliderContainerRef.nativeElement.className =
|
|
113
|
-
'nzx-jigsaw-slider-container';
|
|
114
|
-
this.sliderRef.nativeElement.style.left = 0 + 'px';
|
|
115
|
-
this.blockRef.nativeElement.width = width;
|
|
116
|
-
this.blockRef.nativeElement.style.left = 0 + 'px';
|
|
117
|
-
this.sliderMaskRef.nativeElement.style.width = 0 + 'px';
|
|
118
|
-
// 清空画布
|
|
119
|
-
this.canvasRef.nativeElement
|
|
120
|
-
.getContext('2d')
|
|
121
|
-
.clearRect(0, 0, width, height);
|
|
122
|
-
this.blockRef.nativeElement
|
|
123
|
-
.getContext('2d')
|
|
124
|
-
.clearRect(0, 0, width, height);
|
|
125
|
-
// 重新加载图片
|
|
126
|
-
this.isLoading = true;
|
|
127
|
-
this.cd.markForCheck();
|
|
128
|
-
this.setImageSrc(this.getRandomImgSrc(), this.img);
|
|
129
|
-
}
|
|
130
|
-
initImg() {
|
|
131
|
-
const img = new Image();
|
|
132
|
-
img.style.objectFit = 'cover';
|
|
133
|
-
img.crossOrigin = 'Anonymous';
|
|
134
|
-
img.onload = () => {
|
|
135
|
-
this.isLoading = false;
|
|
136
|
-
this.draw(img);
|
|
137
|
-
};
|
|
138
|
-
img.onerror = () => {
|
|
139
|
-
// 图片加载失败的时候重新加载其他图片
|
|
140
|
-
this.setImageSrc(this.getRandomImgSrc(), img);
|
|
141
|
-
};
|
|
142
|
-
this.setImageSrc(this.getRandomImgSrc(), img);
|
|
143
|
-
this.img = img;
|
|
144
|
-
}
|
|
145
|
-
draw(img) {
|
|
146
|
-
const { width, height } = this;
|
|
147
|
-
// 随机位置创建拼图形状
|
|
148
|
-
this.x = this.getRandomNumberByRange(L + 10, width - (L + 10));
|
|
149
|
-
this.y = this.getRandomNumberByRange(10 + r * 2, height - (L + 10));
|
|
150
|
-
this.drawPath(this.canvasRef.nativeElement.getContext('2d'), this.x, this.y, 'fill');
|
|
151
|
-
this.drawPath(this.blockRef.nativeElement.getContext('2d'), this.x, this.y, 'clip');
|
|
152
|
-
// 画入图片
|
|
153
|
-
this.canvasRef.nativeElement
|
|
154
|
-
.getContext('2d')
|
|
155
|
-
.drawImage(img, 0, 0, width, height);
|
|
156
|
-
this.blockRef.nativeElement
|
|
157
|
-
.getContext('2d')
|
|
158
|
-
.drawImage(img, 0, 0, width, height);
|
|
159
|
-
// 提取滑块并放到最左边
|
|
160
|
-
const y = this.y - r * 2 - 1;
|
|
161
|
-
const ImageData = this.blockRef.nativeElement
|
|
162
|
-
.getContext('2d')
|
|
163
|
-
.getImageData(this.x - 3, y, L, L);
|
|
164
|
-
this.blockRef.nativeElement.width = L;
|
|
165
|
-
this.blockRef.nativeElement.getContext('2d').putImageData(ImageData, 0, y);
|
|
166
|
-
this.cd.markForCheck();
|
|
167
|
-
}
|
|
168
|
-
setImageSrc(src, img) {
|
|
169
|
-
const isIE = window.navigator.userAgent.indexOf('Trident') > -1;
|
|
170
|
-
if (isIE) {
|
|
171
|
-
// IE浏览器无法通过img.crossOrigin跨域,使用ajax获取图片blob然后转为dataURL显示
|
|
172
|
-
const xhr = new XMLHttpRequest();
|
|
173
|
-
xhr.onloadend = (e) => {
|
|
174
|
-
const file = new FileReader(); // FileReader仅支持IE10+
|
|
175
|
-
file.readAsDataURL(e.target.response);
|
|
176
|
-
file.onloadend = (e) => {
|
|
177
|
-
img.src = e.target?.result;
|
|
178
|
-
};
|
|
179
|
-
};
|
|
180
|
-
xhr.open('GET', src);
|
|
181
|
-
xhr.responseType = 'blob';
|
|
182
|
-
xhr.send();
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
img.src = src;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
getRandomImgSrc() {
|
|
189
|
-
if (this.nzxBgImgUrl && typeof this.nzxBgImgUrl == 'string') {
|
|
190
|
-
return this.nzxBgImgUrl;
|
|
191
|
-
}
|
|
192
|
-
if (this.nzxBgImgUrl &&
|
|
193
|
-
Array.isArray(this.nzxBgImgUrl) &&
|
|
194
|
-
this.nzxBgImgUrl.length) {
|
|
195
|
-
return this.nzxBgImgUrl[this.getRandomNumberByRange(0, this.nzxBgImgUrl.length - 1)];
|
|
196
|
-
}
|
|
197
|
-
return `https://picsum.photos/id/${this.getRandomNumberByRange(0, 1084)}/${this.width}/${this.height}`;
|
|
198
|
-
}
|
|
199
|
-
getRandomNumberByRange(start, end) {
|
|
200
|
-
return Math.round(Math.random() * (end - start) + start);
|
|
201
|
-
}
|
|
202
|
-
drawPath(ctx, x, y, operation) {
|
|
203
|
-
ctx.beginPath();
|
|
204
|
-
ctx.moveTo(x, y);
|
|
205
|
-
ctx.arc(x + l / 2, y - r + 2, r, 0.72 * PI, 2.26 * PI);
|
|
206
|
-
ctx.lineTo(x + l, y);
|
|
207
|
-
ctx.arc(x + l + r - 2, y + l / 2, r, 1.21 * PI, 2.78 * PI);
|
|
208
|
-
ctx.lineTo(x + l, y + l);
|
|
209
|
-
ctx.lineTo(x, y + l);
|
|
210
|
-
ctx.arc(x + r - 2, y + l / 2, r + 0.4, 2.76 * PI, 1.24 * PI, true);
|
|
211
|
-
ctx.lineTo(x, y);
|
|
212
|
-
ctx.lineWidth = 2;
|
|
213
|
-
ctx.fillStyle = 'rgba(255, 255, 255, 0.7)';
|
|
214
|
-
ctx.strokeStyle = 'rgba(255, 255, 255, 0.7)';
|
|
215
|
-
ctx.stroke();
|
|
216
|
-
ctx.globalCompositeOperation = 'destination-over';
|
|
217
|
-
operation === 'fill' ? ctx.fill() : ctx.clip();
|
|
218
|
-
}
|
|
219
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxJigsawComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
220
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NzxJigsawComponent, selector: "nzx-jigsaw", inputs: { width: "width", height: "height", nzxLoadingText: "nzxLoadingText", nzxTipText: "nzxTipText", nzxBgImgUrl: "nzxBgImgUrl" }, outputs: { nzxOnRefresh: "nzxOnRefresh", nzxOnSuccess: "nzxOnSuccess", nzxOnFail: "nzxOnFail" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvasCtx"], descendants: true }, { propertyName: "blockRef", first: true, predicate: ["blockCtx"], descendants: true }, { propertyName: "sliderContainerRef", first: true, predicate: ["sliderContainer"], descendants: true }, { propertyName: "sliderRef", first: true, predicate: ["slider"], descendants: true }, { propertyName: "sliderMaskRef", first: true, predicate: ["sliderMask"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"nzx-jigsaw-container\"\r\n [ngStyle]=\"{\r\n width: width + 'px'\r\n }\"\r\n (selectstart)=\"selectstart()\"\r\n>\r\n <div\r\n class=\"nzx-jigsaw-loading-container\"\r\n [ngStyle]=\"{\r\n display: isLoading ? '' : 'none',\r\n width: width + 'px',\r\n height: height + 'px'\r\n }\"\r\n >\r\n <span class=\"nzx-jigsaw-loading-icon\" nz-icon [nzType]=\"'loading'\"></span>\r\n <span>{{ nzxLoadingText }}</span>\r\n </div>\r\n\r\n <canvas #canvasCtx [width]=\"width\" [height]=\"height\"></canvas>\r\n\r\n <span\r\n class=\"nzx-jigsaw-refresh-icon\"\r\n nz-icon\r\n nzType=\"redo\"\r\n nzTheme=\"outline\"\r\n [nzRotate]=\"-80\"\r\n (click)=\"refresh()\"\r\n ></span>\r\n\r\n <canvas\r\n #blockCtx\r\n class=\"nzx-jigsaw-block\"\r\n [width]=\"width\"\r\n [height]=\"height\"\r\n (touchstart)=\"handleDragStart($event)\"\r\n (mousedown)=\"handleDragStart($event)\"\r\n ></canvas>\r\n\r\n <div\r\n #sliderContainer\r\n class=\"nzx-jigsaw-slider-container\"\r\n [ngStyle]=\"{\r\n width: width + 'px',\r\n 'pointer-events': isLoading ? 'none' : ''\r\n }\"\r\n >\r\n <div #sliderMask class=\"nzx-jigsaw-slider-mask\">\r\n <div\r\n #slider\r\n class=\"nzx-jigsaw-slider\"\r\n (touchstart)=\"handleDragStart($event)\"\r\n (mousedown)=\"handleDragStart($event)\"\r\n >\r\n <span nz-icon nzType=\"arrow-right\" nzTheme=\"outline\"></span>\r\n </div>\r\n </div>\r\n <span class=\"nzx-jigsaw-slider-text\">{{ nzxTipText }}</span>\r\n </div>\r\n</div>\r\n", styles: [".nzx-jigsaw-container{position:relative}.nzx-jigsaw-block{position:absolute;left:0;top:0;cursor:pointer;cursor:grab}.nzx-jigsaw-block:active{cursor:grabbing}.nzx-jigsaw-slider-container{position:relative;text-align:center;line-height:40px;height:40px;background:#f7f9fa;color:#45494c;border:1px solid #e4e7eb}.nzx-jigsaw-slider-container-active .nzx-jigsaw-slider{top:-1px;border:1px solid #1991fa}.nzx-jigsaw-slider-container-active .nzx-jigsaw-slider-mask{border-width:1px}.nzx-jigsaw-slider-container-success .nzx-jigsaw-slider{top:-1px;border:1px solid #52ccba;background-color:#52ccba!important}.nzx-jigsaw-slider-container-success .nzx-jigsaw-slider-mask{border:1px solid #52ccba;background-color:#d2f4ef}.nzx-jigsaw-slider-container-fail .nzx-jigsaw-slider{top:-1px;border:1px solid #f57a7a;background-color:#f57a7a!important}.nzx-jigsaw-slider-container-fail .nzx-jigsaw-slider-mask{border:1px solid #f57a7a;background-color:#fce1e1}.nzx-jigsaw-slider-container-active .nzx-jigsaw-slider-text,.nzx-jigsaw-slider-container-success .nzx-jigsaw-slider-text,.nzx-jigsaw-slider-container-fail .nzx-jigsaw-slider-text{display:none}.nzx-jigsaw-slider-mask{position:absolute;left:0;top:0;height:40px;border:0 solid #1991fa;background:#d1e9fe}.nzx-jigsaw-slider{position:absolute;top:0;left:0;width:40px;height:40px;background:#fff;box-shadow:0 0 3px #0000004d;transition:background .2s linear;cursor:pointer;cursor:grab}.nzx-jigsaw-slider:active{cursor:grabbing}.nzx-jigsaw-slider:hover{background:#1991fa}.nzx-jigsaw-refresh-icon{position:absolute;right:5px;top:5px;font-size:24px;cursor:pointer;color:#fff}.nzx-jigsaw-loading-container{position:absolute;left:0;top:0;display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:14px;color:#45494c;z-index:2;background:#edf0f2}.nzx-jigsaw-loading-icon{font-size:32px;margin-bottom:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
221
|
-
}
|
|
222
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NzxJigsawComponent, decorators: [{
|
|
223
|
-
type: Component,
|
|
224
|
-
args: [{ selector: 'nzx-jigsaw', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"nzx-jigsaw-container\"\r\n [ngStyle]=\"{\r\n width: width + 'px'\r\n }\"\r\n (selectstart)=\"selectstart()\"\r\n>\r\n <div\r\n class=\"nzx-jigsaw-loading-container\"\r\n [ngStyle]=\"{\r\n display: isLoading ? '' : 'none',\r\n width: width + 'px',\r\n height: height + 'px'\r\n }\"\r\n >\r\n <span class=\"nzx-jigsaw-loading-icon\" nz-icon [nzType]=\"'loading'\"></span>\r\n <span>{{ nzxLoadingText }}</span>\r\n </div>\r\n\r\n <canvas #canvasCtx [width]=\"width\" [height]=\"height\"></canvas>\r\n\r\n <span\r\n class=\"nzx-jigsaw-refresh-icon\"\r\n nz-icon\r\n nzType=\"redo\"\r\n nzTheme=\"outline\"\r\n [nzRotate]=\"-80\"\r\n (click)=\"refresh()\"\r\n ></span>\r\n\r\n <canvas\r\n #blockCtx\r\n class=\"nzx-jigsaw-block\"\r\n [width]=\"width\"\r\n [height]=\"height\"\r\n (touchstart)=\"handleDragStart($event)\"\r\n (mousedown)=\"handleDragStart($event)\"\r\n ></canvas>\r\n\r\n <div\r\n #sliderContainer\r\n class=\"nzx-jigsaw-slider-container\"\r\n [ngStyle]=\"{\r\n width: width + 'px',\r\n 'pointer-events': isLoading ? 'none' : ''\r\n }\"\r\n >\r\n <div #sliderMask class=\"nzx-jigsaw-slider-mask\">\r\n <div\r\n #slider\r\n class=\"nzx-jigsaw-slider\"\r\n (touchstart)=\"handleDragStart($event)\"\r\n (mousedown)=\"handleDragStart($event)\"\r\n >\r\n <span nz-icon nzType=\"arrow-right\" nzTheme=\"outline\"></span>\r\n </div>\r\n </div>\r\n <span class=\"nzx-jigsaw-slider-text\">{{ nzxTipText }}</span>\r\n </div>\r\n</div>\r\n", styles: [".nzx-jigsaw-container{position:relative}.nzx-jigsaw-block{position:absolute;left:0;top:0;cursor:pointer;cursor:grab}.nzx-jigsaw-block:active{cursor:grabbing}.nzx-jigsaw-slider-container{position:relative;text-align:center;line-height:40px;height:40px;background:#f7f9fa;color:#45494c;border:1px solid #e4e7eb}.nzx-jigsaw-slider-container-active .nzx-jigsaw-slider{top:-1px;border:1px solid #1991fa}.nzx-jigsaw-slider-container-active .nzx-jigsaw-slider-mask{border-width:1px}.nzx-jigsaw-slider-container-success .nzx-jigsaw-slider{top:-1px;border:1px solid #52ccba;background-color:#52ccba!important}.nzx-jigsaw-slider-container-success .nzx-jigsaw-slider-mask{border:1px solid #52ccba;background-color:#d2f4ef}.nzx-jigsaw-slider-container-fail .nzx-jigsaw-slider{top:-1px;border:1px solid #f57a7a;background-color:#f57a7a!important}.nzx-jigsaw-slider-container-fail .nzx-jigsaw-slider-mask{border:1px solid #f57a7a;background-color:#fce1e1}.nzx-jigsaw-slider-container-active .nzx-jigsaw-slider-text,.nzx-jigsaw-slider-container-success .nzx-jigsaw-slider-text,.nzx-jigsaw-slider-container-fail .nzx-jigsaw-slider-text{display:none}.nzx-jigsaw-slider-mask{position:absolute;left:0;top:0;height:40px;border:0 solid #1991fa;background:#d1e9fe}.nzx-jigsaw-slider{position:absolute;top:0;left:0;width:40px;height:40px;background:#fff;box-shadow:0 0 3px #0000004d;transition:background .2s linear;cursor:pointer;cursor:grab}.nzx-jigsaw-slider:active{cursor:grabbing}.nzx-jigsaw-slider:hover{background:#1991fa}.nzx-jigsaw-refresh-icon{position:absolute;right:5px;top:5px;font-size:24px;cursor:pointer;color:#fff}.nzx-jigsaw-loading-container{position:absolute;left:0;top:0;display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:14px;color:#45494c;z-index:2;background:#edf0f2}.nzx-jigsaw-loading-icon{font-size:32px;margin-bottom:10px}\n"] }]
|
|
225
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { width: [{
|
|
226
|
-
type: Input
|
|
227
|
-
}], height: [{
|
|
228
|
-
type: Input
|
|
229
|
-
}], nzxLoadingText: [{
|
|
230
|
-
type: Input
|
|
231
|
-
}], nzxTipText: [{
|
|
232
|
-
type: Input
|
|
233
|
-
}], nzxBgImgUrl: [{
|
|
234
|
-
type: Input
|
|
235
|
-
}], nzxOnRefresh: [{
|
|
236
|
-
type: Output
|
|
237
|
-
}], nzxOnSuccess: [{
|
|
238
|
-
type: Output
|
|
239
|
-
}], nzxOnFail: [{
|
|
240
|
-
type: Output
|
|
241
|
-
}], canvasRef: [{
|
|
242
|
-
type: ViewChild,
|
|
243
|
-
args: ['canvasCtx']
|
|
244
|
-
}], blockRef: [{
|
|
245
|
-
type: ViewChild,
|
|
246
|
-
args: ['blockCtx']
|
|
247
|
-
}], sliderContainerRef: [{
|
|
248
|
-
type: ViewChild,
|
|
249
|
-
args: ['sliderContainer']
|
|
250
|
-
}], sliderRef: [{
|
|
251
|
-
type: ViewChild,
|
|
252
|
-
args: ['slider']
|
|
253
|
-
}], sliderMaskRef: [{
|
|
254
|
-
type: ViewChild,
|
|
255
|
-
args: ['sliderMask']
|
|
256
|
-
}] } });
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamlnc2F3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvamlnc2F3L2ppZ3Nhdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2ppZ3Nhdy9qaWdzYXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7O0FBRXZCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU87QUFDckIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTztBQUNwQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVM7QUFRbEMsTUFBTSxPQUFPLGtCQUFrQjtJQXFDN0IsWUFBb0IsRUFBcUI7UUFBckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFwQ2hDLFVBQUssR0FBRyxHQUFHLENBQUM7UUFDWixXQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2IsbUJBQWMsR0FBRyxRQUFRLENBQUM7UUFDMUIsZUFBVSxHQUFHLFVBQVUsQ0FBQztRQUN4QixnQkFBVyxHQUFzQixFQUFFLENBQUM7UUFFbkMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3hDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN4QyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUvQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBa0JWLE1BQUMsR0FBVyxDQUFDLENBQUM7UUFDZCxNQUFDLEdBQVcsQ0FBQyxDQUFDO1FBRWQsWUFBTyxHQUFXLENBQUMsQ0FB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ZixTQUFTO3VCQUFDLFVBQVU7Z0JBSWIsa0JBQWtCO3NCQUR6QixTQUFTO3VCQUFDLGlCQUFpQjtnQkFJcEIsU0FBUztzQkFEaEIsU0FBUzt1QkFBQyxRQUFRO2dCQUlYLGFBQWE7c0JBRHBCLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmNvbnN0IGwgPSA0MjsgLy8g5ruR5Z2X6L656ZW/XHJcbmNvbnN0IHIgPSA5OyAvLyDmu5HlnZfljYrlvoRcclxuY29uc3QgUEkgPSBNYXRoLlBJO1xyXG5jb25zdCBMID0gbCArIHIgKiAyICsgMzsgLy8g5ruR5Z2X5a6e6ZmF6L656ZW/XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ256eC1qaWdzYXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9qaWdzYXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ppZ3Nhdy5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTnp4Smlnc2F3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgd2lkdGggPSAzMTA7XHJcbiAgQElucHV0KCkgaGVpZ2h0ID0gMTU1O1xyXG4gIEBJbnB1dCgpIG56eExvYWRpbmdUZXh0ID0gJ+WKoOi9veS4rS4uLic7XHJcbiAgQElucHV0KCkgbnp4VGlwVGV4dCA9ICflkJHlj7Pmu5HliqjloavlhYXmi7zlm74nO1xyXG4gIEBJbnB1dCgpIG56eEJnSW1nVXJsOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnO1xyXG5cclxuICBAT3V0cHV0KCkgbnp4T25SZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBuenhPblN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIG56eE9uRmFpbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NhbnZhc0N0eCcpXHJcbiAgcHJpdmF0ZSBjYW52YXNSZWYhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnYmxvY2tDdHgnKVxyXG4gIHByaXZhdGUgYmxvY2tSZWYhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc2xpZGVyQ29udGFpbmVyJylcclxuICBwcml2YXRlIHNsaWRlckNvbnRhaW5lclJlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICBAVmlld0NoaWxkKCdzbGlkZXInKVxyXG4gIHByaXZhdGUgc2xpZGVyUmVmITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NsaWRlck1hc2snKVxyXG4gIHByaXZhdGUgc2xpZGVyTWFza1JlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICBwcml2YXRlIGltZzogYW55O1xyXG4gIHByaXZhdGUgeDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIHk6IG51bWJlciA9IDA7XHJcblxyXG4gIHByaXZhdGUgb3JpZ2luWDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIG9yaWdpblk6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSB0cmFpbDogYW55W10gPSBbXTtcclxuICBwcml2YXRlIGlzTW91c2VEb3duID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRJbWcoKTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IChlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmlzTW91c2VEb3duKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgY29uc3QgZXZlbnRYID0gZS5jbGllbnRYIHx8IGUudG91Y2hlc1swXS5jbGllbnRYO1xyXG4gICAgICBjb25zdCBldmVudFkgPSBlLmNsaWVudFkgfHwgZS50b3VjaGVzWzBdLmNsaWVudFk7XHJcbiAgICAgIGNvbnN0IG1vdmVYID0gZXZlbnRYIC0gdGhpcy5vcmlnaW5YO1xyXG4gICAgICBjb25zdCBtb3ZlWSA9IGV2ZW50WSAtIHRoaXMub3JpZ2luWTtcclxuICAgICAgaWYgKG1vdmVYIDwgMCB8fCBtb3ZlWCArIDM4ID49IHRoaXMud2lkdGgpIHJldHVybiBmYWxzZTtcclxuICAgICAgdGhpcy5zbGlkZXJSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gbW92ZVggKyAncHgnO1xyXG4gICAgICBjb25zdCBibG9ja0xlZnQgPSAoKHRoaXMud2lkdGggLSA0MCAtIDIwKSAvICh0aGlzLndpZHRoIC0gNDApKSAqIG1vdmVYO1xyXG4gICAgICB0aGlzLmJsb2NrUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IGJsb2NrTGVmdCArICdweCc7XHJcbiAgICAgIHRoaXMuc2xpZGVyQ29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcclxuICAgICAgICAnbnp4LWppZ3Nhdy1zbGlkZXItY29udGFpbmVyLWFjdGl2ZSdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zbGlkZXJNYXNrUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBtb3ZlWCArICdweCc7XHJcbiAgICAgIHRoaXMudHJhaWwucHVzaChtb3ZlWSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgaGFuZGxlRHJhZ0VuZCA9IChlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmlzTW91c2VEb3duKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTtcclxuICAgICAgY29uc3QgZXZlbnRYID0gZS5jbGllbnRYIHx8IGUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WDtcclxuICAgICAgaWYgKGV2ZW50WCA9PT0gdGhpcy5vcmlnaW5YKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2xpZGVyQ29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcclxuICAgICAgICAnbnp4LWppZ3Nhdy1zbGlkZXItY29udGFpbmVyLWFjdGl2ZSdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy50cmFpbCA9IHRoaXMudHJhaWw7XHJcbiAgICAgIGNvbnN0IHsgc3BsaWNlZCwgdmVyaWZpZWQgfSA9IHRoaXMudmVyaWZ5KCk7XHJcblxyXG4gICAgICBpZiAoc3BsaWNlZCkge1xyXG4gICAgICAgIGlmICh2ZXJpZmllZCkge1xyXG4gICAgICAgICAgdGhpcy5zbGlkZXJDb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFxyXG4gICAgICAgICAgICAnbnp4LWppZ3Nhdy1zbGlkZXItY29udGFpbmVyLXN1Y2Nlc3MnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5uenhPblN1Y2Nlc3MuZW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNsaWRlckNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXHJcbiAgICAgICAgICAgICduengtamlnc2F3LXNsaWRlci1jb250YWluZXItZmFpbCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLm56eFRpcFRleHQgPSAn6K+35YaN6K+V5LiA5qyhJztcclxuICAgICAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zbGlkZXJDb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFxyXG4gICAgICAgICAgJ256eC1qaWdzYXctc2xpZGVyLWNvbnRhaW5lci1mYWlsJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5uenhPbkZhaWwuZW1pdCgpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZXNldCgpLCAxMDAwKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9O1xyXG5cclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGhhbmRsZURyYWdNb3ZlKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGhhbmRsZURyYWdNb3ZlKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVEcmFnRW5kKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgaGFuZGxlRHJhZ0VuZCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RzdGFydCgpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICB0aGlzLm56eE9uUmVmcmVzaC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVEcmFnU3RhcnQoZTogYW55KSB7XHJcbiAgICB0aGlzLm9yaWdpblggPSBlLmNsaWVudFggfHwgZS50b3VjaGVzWzBdLmNsaWVudFg7XHJcbiAgICB0aGlzLm9yaWdpblkgPSBlLmNsaWVudFkgfHwgZS50b3VjaGVzWzBdLmNsaWVudFk7XHJcbiAgICB0aGlzLmlzTW91c2VEb3duID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmVyaWZ5KCkge1xyXG4gICAgY29uc3QgYXJyID0gdGhpcy50cmFpbDsgLy8g5ouW5Yqo5pe2eei9tOeahOenu+WKqOi3neemu1xyXG4gICAgY29uc3QgYXZlcmFnZSA9IGFyci5yZWR1Y2UoKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiB4ICsgeSkgLyBhcnIubGVuZ3RoO1xyXG4gICAgY29uc3QgZGV2aWF0aW9ucyA9IGFyci5tYXAoKHgpID0+IHggLSBhdmVyYWdlKTtcclxuICAgIGNvbnN0IHN0ZGRldiA9IE1hdGguc3FydChcclxuICAgICAgZGV2aWF0aW9uc1xyXG4gICAgICAgIC5tYXAoKHg6IG51bWJlcikgPT4geCAqIHgpXHJcbiAgICAgICAgLnJlZHVjZSgoeDogbnVtYmVyLCB5OiBudW1iZXIpID0+IHggKyB5KSAvIGFyci5sZW5ndGhcclxuICAgICk7XHJcbiAgICBjb25zdCBsZWZ0ID0gcGFyc2VJbnQodGhpcy5ibG9ja1JlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc3BsaWNlZDogTWF0aC5hYnMobGVmdCAtIHRoaXMueCkgPCAxMCxcclxuICAgICAgdmVyaWZpZWQ6IHN0ZGRldiAhPT0gMCwgLy8g566A5Y2V6aqM6K+B5ouW5Yqo6L2o6L+577yM5Li66Zu25pe26KGo56S6Wei9tOS4iuS4i+ayoeacieazouWKqO+8jOWPr+iDvemdnuS6uuS4uuaTjeS9nFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXQoKSB7XHJcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXM7XHJcbiAgICAvLyDph43nva7moLflvI9cclxuICAgIHRoaXMuc2xpZGVyQ29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID1cclxuICAgICAgJ256eC1qaWdzYXctc2xpZGVyLWNvbnRhaW5lcic7XHJcbiAgICB0aGlzLnNsaWRlclJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSAwICsgJ3B4JztcclxuICAgIHRoaXMuYmxvY2tSZWYubmF0aXZlRWxlbWVudC53aWR0aCA9IHdpZHRoO1xyXG4gICAgdGhpcy5ibG9ja1JlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSAwICsgJ3B4JztcclxuICAgIHRoaXMuc2xpZGVyTWFza1JlZi5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gMCArICdweCc7XHJcblxyXG4gICAgLy8g5riF56m655S75biDXHJcbiAgICB0aGlzLmNhbnZhc1JlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgIC5nZXRDb250ZXh0KCcyZCcpIVxyXG4gICAgICAuY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgdGhpcy5ibG9ja1JlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgIC5nZXRDb250ZXh0KCcyZCcpIVxyXG4gICAgICAuY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xyXG5cclxuICAgIC8vIOmHjeaWsOWKoOi9veWbvueJh1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMuc2V0SW1hZ2VTcmModGhpcy5nZXRSYW5kb21JbWdTcmMoKSwgdGhpcy5pbWcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0SW1nKCkge1xyXG4gICAgY29uc3QgaW1nOiBIVE1MSW1hZ2VFbGVtZW50ID0gbmV3IEltYWdlKCk7XHJcbiAgICBpbWcuc3R5bGUub2JqZWN0Rml0ID0gJ2NvdmVyJztcclxuICAgIGltZy5jcm9zc09yaWdpbiA9ICdBbm9ueW1vdXMnO1xyXG4gICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kcmF3KGltZyk7XHJcbiAgICB9O1xyXG4gICAgaW1nLm9uZXJyb3IgPSAoKSA9PiB7XHJcbiAgICAgIC8vIOWbvueJh+WKoOi9veWksei0peeahOaXtuWAmemHjeaWsOWKoOi9veWFtuS7luWbvueJh1xyXG4gICAgICB0aGlzLnNldEltYWdlU3JjKHRoaXMuZ2V0UmFuZG9tSW1nU3JjKCksIGltZyk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZXRJbWFnZVNyYyh0aGlzLmdldFJhbmRvbUltZ1NyYygpLCBpbWcpO1xyXG4gICAgdGhpcy5pbWcgPSBpbWc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRyYXcoaW1nOiBIVE1MSW1hZ2VFbGVtZW50KSB7XHJcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXM7XHJcbiAgICAvLyDpmo/mnLrkvY3nva7liJvlu7rmi7zlm77lvaLnirZcclxuICAgIHRoaXMueCA9IHRoaXMuZ2V0UmFuZG9tTnVtYmVyQnlSYW5nZShMICsgMTAsIHdpZHRoIC0gKEwgKyAxMCkpO1xyXG4gICAgdGhpcy55ID0gdGhpcy5nZXRSYW5kb21OdW1iZXJCeVJhbmdlKDEwICsgciAqIDIsIGhlaWdodCAtIChMICsgMTApKTtcclxuICAgIHRoaXMuZHJhd1BhdGgoXHJcbiAgICAgIHRoaXMuY2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnKSEsXHJcbiAgICAgIHRoaXMueCxcclxuICAgICAgdGhpcy55LFxyXG4gICAgICAnZmlsbCdcclxuICAgICk7XHJcbiAgICB0aGlzLmRyYXdQYXRoKFxyXG4gICAgICB0aGlzLmJsb2NrUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnKSEsXHJcbiAgICAgIHRoaXMueCxcclxuICAgICAgdGhpcy55LFxyXG4gICAgICAnY2xpcCdcclxuICAgICk7XHJcblxyXG4gICAgLy8g55S75YWl5Zu+54mHXHJcbiAgICB0aGlzLmNhbnZhc1JlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgIC5nZXRDb250ZXh0KCcyZCcpIVxyXG4gICAgICAuZHJhd0ltYWdlKGltZywgMCwgMCwgd2lkdGgsIGhlaWdodCk7XHJcbiAgICB0aGlzLmJsb2NrUmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgLmdldENvbnRleHQoJzJkJykhXHJcbiAgICAgIC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcclxuXHJcbiAgICAvLyDmj5Dlj5bmu5HlnZflubbmlL7liLDmnIDlt6bovrlcclxuICAgIGNvbnN0IHkgPSB0aGlzLnkgLSByICogMiAtIDE7XHJcbiAgICBjb25zdCBJbWFnZURhdGEgPSB0aGlzLmJsb2NrUmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgLmdldENvbnRleHQoJzJkJykhXHJcbiAgICAgIC5nZXRJbWFnZURhdGEodGhpcy54IC0gMywgeSwgTCwgTCk7XHJcbiAgICB0aGlzLmJsb2NrUmVmLm5hdGl2ZUVsZW1lbnQhLndpZHRoID0gTDtcclxuICAgIHRoaXMuYmxvY2tSZWYubmF0aXZlRWxlbWVudC5nZXRDb250ZXh0KCcyZCcpIS5wdXRJbWFnZURhdGEoSW1hZ2VEYXRhLCAwLCB5KTtcclxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEltYWdlU3JjKHNyYzogc3RyaW5nLCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGlzSUUgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50JykgPiAtMTtcclxuICAgIGlmIChpc0lFKSB7XHJcbiAgICAgIC8vIElF5rWP6KeI5Zmo5peg5rOV6YCa6L+HaW1nLmNyb3NzT3JpZ2lu6Leo5Z+f77yM5L2/55SoYWpheOiOt+WPluWbvueJh2Jsb2LnhLblkI7ovazkuLpkYXRhVVJM5pi+56S6XHJcbiAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gICAgICB4aHIub25sb2FkZW5kID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZVJlYWRlcigpOyAvLyBGaWxlUmVhZGVy5LuF5pSv5oyBSUUxMCtcclxuICAgICAgICBmaWxlLnJlYWRBc0RhdGFVUkwoZS50YXJnZXQucmVzcG9uc2UpO1xyXG4gICAgICAgIGZpbGUub25sb2FkZW5kID0gKGUpID0+IHtcclxuICAgICAgICAgIGltZy5zcmMgPSBlLnRhcmdldD8ucmVzdWx0IGFzIHN0cmluZztcclxuICAgICAgICB9O1xyXG4gICAgICB9O1xyXG4gICAgICB4aHIub3BlbignR0VUJywgc3JjKTtcclxuICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJztcclxuICAgICAgeGhyLnNlbmQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGltZy5zcmMgPSBzcmM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJhbmRvbUltZ1NyYygpIHtcclxuICAgIGlmICh0aGlzLm56eEJnSW1nVXJsICYmIHR5cGVvZiB0aGlzLm56eEJnSW1nVXJsID09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm56eEJnSW1nVXJsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5uenhCZ0ltZ1VybCAmJlxyXG4gICAgICBBcnJheS5pc0FycmF5KHRoaXMubnp4QmdJbWdVcmwpICYmXHJcbiAgICAgIHRoaXMubnp4QmdJbWdVcmwubGVuZ3RoXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMubnp4QmdJbWdVcmxbXHJcbiAgICAgICAgdGhpcy5nZXRSYW5kb21OdW1iZXJCeVJhbmdlKDAsIHRoaXMubnp4QmdJbWdVcmwubGVuZ3RoIC0gMSlcclxuICAgICAgXTtcclxuICAgIH1cclxuICAgIHJldHVybiBgaHR0cHM6Ly9waWNzdW0ucGhvdG9zL2lkLyR7dGhpcy5nZXRSYW5kb21OdW1iZXJCeVJhbmdlKDAsIDEwODQpfS8ke1xyXG4gICAgICB0aGlzLndpZHRoXHJcbiAgICB9LyR7dGhpcy5oZWlnaHR9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UmFuZG9tTnVtYmVyQnlSYW5nZShzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIChlbmQgLSBzdGFydCkgKyBzdGFydCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRyYXdQYXRoKFxyXG4gICAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXHJcbiAgICB4OiBudW1iZXIsXHJcbiAgICB5OiBudW1iZXIsXHJcbiAgICBvcGVyYXRpb246IGFueVxyXG4gICkge1xyXG4gICAgY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgY3R4Lm1vdmVUbyh4LCB5KTtcclxuICAgIGN0eC5hcmMoeCArIGwgLyAyLCB5IC0gciArIDIsIHIsIDAuNzIgKiBQSSwgMi4yNiAqIFBJKTtcclxuICAgIGN0eC5saW5lVG8oeCArIGwsIHkpO1xyXG4gICAgY3R4LmFyYyh4ICsgbCArIHIgLSAyLCB5ICsgbCAvIDIsIHIsIDEuMjEgKiBQSSwgMi43OCAqIFBJKTtcclxuICAgIGN0eC5saW5lVG8oeCArIGwsIHkgKyBsKTtcclxuICAgIGN0eC5saW5lVG8oeCwgeSArIGwpO1xyXG4gICAgY3R4LmFyYyh4ICsgciAtIDIsIHkgKyBsIC8gMiwgciArIDAuNCwgMi43NiAqIFBJLCAxLjI0ICogUEksIHRydWUpO1xyXG4gICAgY3R4LmxpbmVUbyh4LCB5KTtcclxuICAgIGN0eC5saW5lV2lkdGggPSAyO1xyXG4gICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyknO1xyXG4gICAgY3R4LnN0cm9rZVN0eWxlID0gJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSc7XHJcbiAgICBjdHguc3Ryb2tlKCk7XHJcbiAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW92ZXInO1xyXG4gICAgb3BlcmF0aW9uID09PSAnZmlsbCcgPyBjdHguZmlsbCgpIDogY3R4LmNsaXAoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwibnp4LWppZ3Nhdy1jb250YWluZXJcIlxyXG4gIFtuZ1N0eWxlXT1cIntcclxuICAgIHdpZHRoOiB3aWR0aCArICdweCdcclxuICB9XCJcclxuICAoc2VsZWN0c3RhcnQpPVwic2VsZWN0c3RhcnQoKVwiXHJcbj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cIm56eC1qaWdzYXctbG9hZGluZy1jb250YWluZXJcIlxyXG4gICAgW25nU3R5bGVdPVwie1xyXG4gICAgICBkaXNwbGF5OiBpc0xvYWRpbmcgPyAnJyA6ICdub25lJyxcclxuICAgICAgd2lkdGg6IHdpZHRoICsgJ3B4JyxcclxuICAgICAgaGVpZ2h0OiBoZWlnaHQgKyAncHgnXHJcbiAgICB9XCJcclxuICA+XHJcbiAgICA8c3BhbiBjbGFzcz1cIm56eC1qaWdzYXctbG9hZGluZy1pY29uXCIgbnotaWNvbiBbbnpUeXBlXT1cIidsb2FkaW5nJ1wiPjwvc3Bhbj5cclxuICAgIDxzcGFuPnt7IG56eExvYWRpbmdUZXh0IH19PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8Y2FudmFzICNjYW52YXNDdHggW3dpZHRoXT1cIndpZHRoXCIgW2hlaWdodF09XCJoZWlnaHRcIj48L2NhbnZhcz5cclxuXHJcbiAgPHNwYW5cclxuICAgIGNsYXNzPVwibnp4LWppZ3Nhdy1yZWZyZXNoLWljb25cIlxyXG4gICAgbnotaWNvblxyXG4gICAgbnpUeXBlPVwicmVkb1wiXHJcbiAgICBuelRoZW1lPVwib3V0bGluZVwiXHJcbiAgICBbbnpSb3RhdGVdPVwiLTgwXCJcclxuICAgIChjbGljayk9XCJyZWZyZXNoKClcIlxyXG4gID48L3NwYW4+XHJcblxyXG4gIDxjYW52YXNcclxuICAgICNibG9ja0N0eFxyXG4gICAgY2xhc3M9XCJuengtamlnc2F3LWJsb2NrXCJcclxuICAgIFt3aWR0aF09XCJ3aWR0aFwiXHJcbiAgICBbaGVpZ2h0XT1cImhlaWdodFwiXHJcbiAgICAodG91Y2hzdGFydCk9XCJoYW5kbGVEcmFnU3RhcnQoJGV2ZW50KVwiXHJcbiAgICAobW91c2Vkb3duKT1cImhhbmRsZURyYWdTdGFydCgkZXZlbnQpXCJcclxuICA+PC9jYW52YXM+XHJcblxyXG4gIDxkaXZcclxuICAgICNzbGlkZXJDb250YWluZXJcclxuICAgIGNsYXNzPVwibnp4LWppZ3Nhdy1zbGlkZXItY29udGFpbmVyXCJcclxuICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgd2lkdGg6IHdpZHRoICsgJ3B4JyxcclxuICAgICAgJ3BvaW50ZXItZXZlbnRzJzogaXNMb2FkaW5nID8gJ25vbmUnIDogJydcclxuICAgIH1cIlxyXG4gID5cclxuICAgIDxkaXYgI3NsaWRlck1hc2sgY2xhc3M9XCJuengtamlnc2F3LXNsaWRlci1tYXNrXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAjc2xpZGVyXHJcbiAgICAgICAgY2xhc3M9XCJuengtamlnc2F3LXNsaWRlclwiXHJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwiaGFuZGxlRHJhZ1N0YXJ0KCRldmVudClcIlxyXG4gICAgICAgIChtb3VzZWRvd24pPVwiaGFuZGxlRHJhZ1N0YXJ0KCRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJhcnJvdy1yaWdodFwiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJuengtamlnc2F3LXNsaWRlci10ZXh0XCI+e3sgbnp4VGlwVGV4dCB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|