mmhglobal-dynamicform 1.2.3 → 1.3.2
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 +14 -2
- package/esm2020/lib/directives/fieldelement.directive.mjs +16 -0
- package/esm2020/lib/directives/scrollbar.theme.directive.mjs +43 -0
- package/esm2020/lib/mmhglobal-dynamicform.module.mjs +464 -0
- package/esm2020/lib/services/main.service.mjs +752 -0
- package/esm2020/lib/services/zcomponent.debug.service.mjs +621 -0
- package/esm2020/lib/services/zcomponent.service.mjs +81 -0
- package/esm2020/lib/uiactionbutton/uiactionbutton.component.mjs +265 -0
- package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +67 -0
- package/esm2020/lib/uicontent/uicontent.component.mjs +41 -0
- package/esm2020/lib/uiheader/uiheader.component.mjs +66 -0
- package/esm2020/lib/uimenubutton/uimenubutton.component.mjs +35 -0
- package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +37 -0
- package/{esm2015/lib/uipage/uipage.component.js → esm2020/lib/uipage/uipage.component.mjs} +12 -13
- package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +41 -0
- package/esm2020/lib/zbullet/zbullet.component.mjs +74 -0
- package/esm2020/lib/zbuttons/zbuttons.component.mjs +171 -0
- package/esm2020/lib/zcard/zcard.component.mjs +72 -0
- package/esm2020/lib/zchart/zchart.component.mjs +201 -0
- package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +166 -0
- package/esm2020/lib/zchip/zchip.component.mjs +121 -0
- package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +169 -0
- package/esm2020/lib/zcodeeditor/zcodeeditor.pipe.mjs +60 -0
- package/esm2020/lib/zdaterange/zdaterange.component.mjs +70 -0
- package/esm2020/lib/zdatetime/dateParser.pipe.mjs +30 -0
- package/esm2020/lib/zdatetime/zdatetime.component.mjs +285 -0
- package/esm2020/lib/zdiv/zdiv.component.mjs +50 -0
- package/esm2020/lib/zdiv/zdiv.pipe.mjs +31 -0
- package/esm2020/lib/zform/zform.component.mjs +147 -0
- package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +49 -0
- package/esm2020/lib/zgauge/zgauge.component.mjs +148 -0
- package/esm2020/lib/zgrid/date-range-cell-filter.component.mjs +135 -0
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +490 -0
- package/esm2020/lib/zgrid/zgrid.component.mjs +847 -0
- package/esm2020/lib/zgrid/zgrid.popup.anchor-target.directive.mjs +17 -0
- package/esm2020/lib/zimg/zimg.component.mjs +121 -0
- package/esm2020/lib/zkcard/zkcard.component.mjs +367 -0
- package/esm2020/lib/zlabel/zlabel.component.mjs +62 -0
- package/esm2020/lib/zmfb/zmfb.component.mjs +215 -0
- package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +120 -0
- package/esm2020/lib/zmodal/zmodal.component.mjs +125 -0
- package/esm2020/lib/znumeric/znumeric.component.mjs +119 -0
- package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +352 -0
- package/esm2020/lib/zquerybuilder/zquerybuilder.component.mjs +204 -0
- package/esm2020/lib/zreport/zreport.component.mjs +105 -0
- package/esm2020/lib/zreport/zreport.config.mjs +117 -0
- package/esm2020/lib/zscheduler/zscheduler.component.mjs +267 -0
- package/{esm2015/lib/zscheduler/zscheduler.toolbar.component.js → esm2020/lib/zscheduler/zscheduler.toolbar.component.mjs} +55 -19
- package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +577 -0
- package/esm2020/lib/zselectmultiple/zselectmultiple.directive.mjs +35 -0
- package/esm2020/lib/ztab/ztab.component.mjs +187 -0
- package/esm2020/lib/ztab/ztab.pipe.mjs +26 -0
- package/esm2020/lib/ztext/ztext.component.mjs +297 -0
- package/esm2020/lib/ztextarea/ztextarea.component.mjs +109 -0
- package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +57 -0
- package/esm2020/lib/ztree/ztree.component.mjs +380 -0
- package/esm2020/lib/ztreelist/ztreelist.component.mjs +544 -0
- package/esm2020/lib/ztrendcard/ztrendcard.component.mjs +92 -0
- package/esm2020/lib/zudf/zudf.component.mjs +205 -0
- package/esm2020/lib/zunknown/zunknown.component.mjs +20 -0
- package/esm2020/lib/zupload/zupload.component.mjs +359 -0
- package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +216 -0
- package/esm2020/mmhglobal-dynamicform.mjs +5 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/mmhglobal-dynamicform.mjs +10790 -0
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -0
- package/fesm2020/mmhglobal-dynamicform.mjs +10779 -0
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -0
- package/lib/directives/fieldelement.directive.d.ts +3 -0
- package/lib/directives/scrollbar.theme.directive.d.ts +3 -0
- package/lib/mmhglobal-dynamicform.module.d.ts +92 -0
- package/lib/services/main.service.d.ts +3 -0
- package/lib/services/zcomponent.debug.service.d.ts +8 -5
- package/lib/services/zcomponent.service.d.ts +7 -2
- package/lib/uiactionbutton/uiactionbutton.component.d.ts +3 -0
- package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +3 -0
- package/lib/uicontent/uicontent.component.d.ts +3 -0
- package/lib/uiheader/uiheader.component.d.ts +3 -0
- package/lib/uimenubutton/uimenubutton.component.d.ts +3 -0
- package/lib/uimenucontent/uimenucontent.component.d.ts +3 -0
- package/lib/uipage/uipage.component.d.ts +3 -0
- package/lib/uivalidationmessage/uivalidationmessage.component.d.ts +3 -0
- package/lib/zbullet/zbullet.component.d.ts +3 -0
- package/lib/zbuttons/zbuttons.component.d.ts +3 -0
- package/lib/zcard/zcard.component.d.ts +3 -0
- package/lib/zchart/zchart.component.d.ts +3 -0
- package/lib/zcheckbox/zcheckbox.component.d.ts +3 -0
- package/lib/zchip/zchip.component.d.ts +3 -0
- package/lib/zcodeeditor/zcodeeditor.component.d.ts +3 -0
- package/lib/zcodeeditor/zcodeeditor.pipe.d.ts +3 -0
- package/lib/zdaterange/zdaterange.component.d.ts +3 -0
- package/lib/zdatetime/dateParser.pipe.d.ts +3 -0
- package/lib/zdatetime/zdatetime.component.d.ts +3 -0
- package/lib/zdiv/zdiv.component.d.ts +3 -0
- package/lib/zdiv/zdiv.pipe.d.ts +3 -0
- package/lib/zform/zform.component.d.ts +3 -0
- package/lib/zformcontrol/zformcontrol.component.d.ts +3 -0
- package/lib/zgauge/zgauge.component.d.ts +3 -0
- package/lib/zgrid/date-range-cell-filter.component.d.ts +3 -0
- package/lib/zgrid/zgrid.binding.directive.d.ts +3 -0
- package/lib/zgrid/zgrid.component.d.ts +4 -1
- package/lib/zgrid/zgrid.popup.anchor-target.directive.d.ts +3 -0
- package/lib/zimg/zimg.component.d.ts +3 -0
- package/lib/zkcard/zkcard.component.d.ts +3 -0
- package/lib/zlabel/zlabel.component.d.ts +3 -0
- package/lib/zmfb/zmfb.component.d.ts +3 -0
- package/lib/zmodal/zmodal-mobile.component.d.ts +3 -0
- package/lib/zmodal/zmodal.component.d.ts +3 -0
- package/lib/znumeric/znumeric.component.d.ts +3 -0
- package/lib/zpostselectinput/zpostselectinput.component.d.ts +3 -0
- package/lib/zquerybuilder/zquerybuilder.component.d.ts +3 -0
- package/lib/zreport/zreport.component.d.ts +3 -0
- package/lib/zreport/zreport.config.d.ts +3 -0
- package/lib/zscheduler/zscheduler.component.d.ts +3 -0
- package/lib/zscheduler/zscheduler.toolbar.component.d.ts +3 -0
- package/lib/zselectmultiple/zselectmultiple.component.d.ts +3 -0
- package/lib/zselectmultiple/zselectmultiple.directive.d.ts +3 -0
- package/lib/ztab/ztab.component.d.ts +3 -0
- package/lib/ztab/ztab.pipe.d.ts +3 -0
- package/lib/ztext/ztext.component.d.ts +3 -0
- package/lib/ztextarea/ztextarea.component.d.ts +3 -0
- package/lib/ztexteditor/ztexteditor.component.d.ts +3 -0
- package/lib/ztree/ztree.component.d.ts +3 -0
- package/lib/ztreelist/ztreelist.component.d.ts +3 -0
- package/lib/ztrendcard/ztrendcard.component.d.ts +3 -0
- package/lib/zudf/zudf.component.d.ts +3 -0
- package/lib/zunknown/zunknown.component.d.ts +3 -0
- package/lib/zupload/zupload.component.d.ts +3 -0
- package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +3 -0
- package/mmhglobal-dynamicform.d.ts +1 -2
- package/package.json +20 -11
- package/bundles/mmhglobal-dynamicform.umd.js +0 -11360
- package/bundles/mmhglobal-dynamicform.umd.js.map +0 -1
- package/bundles/mmhglobal-dynamicform.umd.min.js +0 -16
- package/bundles/mmhglobal-dynamicform.umd.min.js.map +0 -1
- package/esm2015/lib/directives/fieldelement.directive.js +0 -15
- package/esm2015/lib/directives/scrollbar.theme.directive.js +0 -42
- package/esm2015/lib/mmhglobal-dynamicform.module.js +0 -314
- package/esm2015/lib/services/main.service.js +0 -766
- package/esm2015/lib/services/zcomponent.debug.service.js +0 -626
- package/esm2015/lib/services/zcomponent.service.js +0 -167
- package/esm2015/lib/uiactionbutton/uiactionbutton.component.js +0 -271
- package/esm2015/lib/uiappmenucontent/uiappmenucontent.component.js +0 -69
- package/esm2015/lib/uicontent/uicontent.component.js +0 -41
- package/esm2015/lib/uiheader/uiheader.component.js +0 -65
- package/esm2015/lib/uimenubutton/uimenubutton.component.js +0 -40
- package/esm2015/lib/uimenucontent/uimenucontent.component.js +0 -34
- package/esm2015/lib/uivalidationmessage/uivalidationmessage.component.js +0 -39
- package/esm2015/lib/zbullet/zbullet.component.js +0 -71
- package/esm2015/lib/zbuttons/zbuttons.component.js +0 -168
- package/esm2015/lib/zcard/zcard.component.js +0 -68
- package/esm2015/lib/zchart/zchart.component.js +0 -199
- package/esm2015/lib/zcheckbox/zcheckbox.component.js +0 -158
- package/esm2015/lib/zchip/zchip.component.js +0 -117
- package/esm2015/lib/zcodeeditor/zcodeeditor.component.js +0 -163
- package/esm2015/lib/zcodeeditor/zcodeeditor.pipe.js +0 -56
- package/esm2015/lib/zdaterange/zdaterange.component.js +0 -63
- package/esm2015/lib/zdatetime/dateParser.pipe.js +0 -26
- package/esm2015/lib/zdatetime/zdatetime.component.js +0 -279
- package/esm2015/lib/zdiv/zdiv.component.js +0 -48
- package/esm2015/lib/zdiv/zdiv.pipe.js +0 -27
- package/esm2015/lib/zform/zform.component.js +0 -148
- package/esm2015/lib/zformcontrol/zformcontrol.component.js +0 -49
- package/esm2015/lib/zgauge/zgauge.component.js +0 -146
- package/esm2015/lib/zgrid/date-range-cell-filter.component.js +0 -102
- package/esm2015/lib/zgrid/zgrid.binding.directive.js +0 -493
- package/esm2015/lib/zgrid/zgrid.component.js +0 -834
- package/esm2015/lib/zgrid/zgrid.popup.anchor-target.directive.js +0 -16
- package/esm2015/lib/zimg/zimg.component.js +0 -123
- package/esm2015/lib/zkcard/zkcard.component.js +0 -372
- package/esm2015/lib/zlabel/zlabel.component.js +0 -59
- package/esm2015/lib/zmfb/zmfb.component.js +0 -215
- package/esm2015/lib/zmodal/zmodal-mobile.component.js +0 -119
- package/esm2015/lib/zmodal/zmodal.component.js +0 -130
- package/esm2015/lib/znumeric/znumeric.component.js +0 -114
- package/esm2015/lib/zpostselectinput/zpostselectinput.component.js +0 -345
- package/esm2015/lib/zquerybuilder/zquerybuilder.component.js +0 -196
- package/esm2015/lib/zreport/zreport.component.js +0 -104
- package/esm2015/lib/zreport/zreport.config.js +0 -115
- package/esm2015/lib/zscheduler/zscheduler.component.js +0 -268
- package/esm2015/lib/zselectmultiple/zselectmultiple.component.js +0 -565
- package/esm2015/lib/zselectmultiple/zselectmultiple.directive.js +0 -28
- package/esm2015/lib/ztab/ztab.component.js +0 -180
- package/esm2015/lib/ztab/ztab.pipe.js +0 -22
- package/esm2015/lib/ztext/ztext.component.js +0 -286
- package/esm2015/lib/ztextarea/ztextarea.component.js +0 -104
- package/esm2015/lib/ztexteditor/ztexteditor.component.js +0 -52
- package/esm2015/lib/ztree/ztree.component.js +0 -374
- package/esm2015/lib/ztreelist/ztreelist.component.js +0 -539
- package/esm2015/lib/ztrendcard/ztrendcard.component.js +0 -89
- package/esm2015/lib/zudf/zudf.component.js +0 -206
- package/esm2015/lib/zunknown/zunknown.component.js +0 -20
- package/esm2015/lib/zupload/zupload.component.js +0 -358
- package/esm2015/lib/zworkflowbuttons/zworkflowbuttons.component.js +0 -215
- package/esm2015/mmhglobal-dynamicform.js +0 -7
- package/fesm2015/mmhglobal-dynamicform.js +0 -10729
- package/fesm2015/mmhglobal-dynamicform.js.map +0 -1
- package/mmhglobal-dynamicform.metadata.json +0 -1
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/********** Angular **********/
|
|
2
|
-
import { Component, Input } from '@angular/core';
|
|
3
|
-
import { Validators } from '@angular/forms';
|
|
4
|
-
/********** Ionic **********/
|
|
5
|
-
/********** Plugin **********/
|
|
6
|
-
/********** Component & Service **********/
|
|
7
|
-
import { ZComponentHelper, ZComponentProperties } from 'mmhglobal-zcore';
|
|
8
|
-
export class ZtextareaComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.itemValueField = null;
|
|
11
|
-
this.itemTextField = null;
|
|
12
|
-
this.itemDataField = null;
|
|
13
|
-
this.itemTemplate = "{{item[itemTextField]}}";
|
|
14
|
-
this.infinitezData = [];
|
|
15
|
-
this.infiniteSearchText = null;
|
|
16
|
-
this.componentProperties = new ZComponentProperties();
|
|
17
|
-
this.setEnable = (status) => {
|
|
18
|
-
const fc = this.group.form.controls[this.data.Value];
|
|
19
|
-
status ? fc.enable() : fc.disable();
|
|
20
|
-
this.componentProperties.isReadOnly = !status;
|
|
21
|
-
};
|
|
22
|
-
this.setVisible = (status) => {
|
|
23
|
-
this.componentProperties.isVisible = status;
|
|
24
|
-
this.data.Visible = status;
|
|
25
|
-
};
|
|
26
|
-
this.setRequire = (status) => {
|
|
27
|
-
this.componentProperties.isRequired = status;
|
|
28
|
-
ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
ngOnInit() {
|
|
32
|
-
ZComponentHelper.setComponentProperties(this);
|
|
33
|
-
ZComponentHelper.registerComponent(this);
|
|
34
|
-
}
|
|
35
|
-
onValueChange(value) {
|
|
36
|
-
// console.log("zselectmultiple (onValueChange): ", value);
|
|
37
|
-
ZComponentHelper.setModelValue(this.data.Value, value, this.group);
|
|
38
|
-
this.onChangeEvent(value);
|
|
39
|
-
}
|
|
40
|
-
onChangeEvent(value) {
|
|
41
|
-
if (this.data.HasInfiniteScroll && !!this.data.InfiniteScroll$) {
|
|
42
|
-
const textField = this.itemTextField.toString();
|
|
43
|
-
const valueField = this.itemValueField.toString();
|
|
44
|
-
let zdataModel = [];
|
|
45
|
-
if (value) {
|
|
46
|
-
zdataModel = this.infinitezData.filter(x => x[valueField] === value);
|
|
47
|
-
this.modelzData = zdataModel.slice();
|
|
48
|
-
}
|
|
49
|
-
if (this.itemDataField.startsWith('group.zData.')) {
|
|
50
|
-
this.group.zData[this.itemDataField.slice(12)] = zdataModel;
|
|
51
|
-
}
|
|
52
|
-
else if (this.itemDataField.startsWith('group.')) {
|
|
53
|
-
this.group[this.itemDataField.slice(6)] = zdataModel;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
this.group.subject.next({
|
|
57
|
-
type: "onChange",
|
|
58
|
-
target: this.data.OnChange,
|
|
59
|
-
event,
|
|
60
|
-
data: { value, field: this.data }
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
getReadOnlyValue() {
|
|
64
|
-
const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly, this.group);
|
|
65
|
-
if (typeof readOnlyValue === 'function') {
|
|
66
|
-
return readOnlyValue();
|
|
67
|
-
}
|
|
68
|
-
return readOnlyValue;
|
|
69
|
-
}
|
|
70
|
-
isMobileScreen() {
|
|
71
|
-
const v = ZComponentHelper.isMobileScreen();
|
|
72
|
-
return v;
|
|
73
|
-
}
|
|
74
|
-
getIon_InvalidClass(form, data) {
|
|
75
|
-
return ZComponentHelper.getIon_InvalidClass(form, data);
|
|
76
|
-
}
|
|
77
|
-
getClass(form, data) {
|
|
78
|
-
const ionInvalidClass = this.getIon_InvalidClass(form, data);
|
|
79
|
-
return `${ionInvalidClass ? ionInvalidClass : ''} ${this.data.Class}`;
|
|
80
|
-
}
|
|
81
|
-
onClick() {
|
|
82
|
-
if (this.data.OnItemClick) {
|
|
83
|
-
this.group.subject.next({
|
|
84
|
-
type: "ztextarea-onClick",
|
|
85
|
-
target: this.data.OnItemClick,
|
|
86
|
-
data: this.form.value
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
ZtextareaComponent.decorators = [
|
|
92
|
-
{ type: Component, args: [{
|
|
93
|
-
selector: 'app-ztextarea',
|
|
94
|
-
template: "<ion-item [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" [ngClass]=\"getClass(form, data)\">\r\n <ion-label [attr.for]=\"data.Value\" *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\" position=\"stacked\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <div class=\"ion-row\" style=\"justify-content: space-between; width: 100%\">\r\n <span style=\"flex: 1;\">\r\n <ion-textarea *ngIf=\"isMobileScreen()\"\r\n [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [minlength]=\"data.MinLength\"\r\n [maxlength]=\"data.MaxLength\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [rows]=\"data.textAreaRows\"></ion-textarea>\r\n <textarea kendoTextArea *ngIf=\"!isMobileScreen()\"\r\n [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [minlength]=\"data.MinLength\"\r\n [maxlength]=\"data.MaxLength\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [rows]=\"data.textAreaRows\"\r\n [autoSize]=\"!data.textAreaRows\"\r\n [ngClass]=\"{'disabled' : (!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)}\"\r\n style=\"margin: 7px 0 0 0; width: 100%\"\r\n (valueChange)=\"onValueChange($event)\"\r\n (click)=\"onClick()\"></textarea>\r\n </span>\r\n <app-uivalidationmessage [group]=\"group\" [data]=\"data\" [form]=\"form\"></app-uivalidationmessage>\r\n </div>\r\n</ion-item>\r\n",
|
|
95
|
-
styles: [".gridInlineEdit{--background:transparent}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.k-textarea{color:var(--z-text-color)}"]
|
|
96
|
-
},] }
|
|
97
|
-
];
|
|
98
|
-
ZtextareaComponent.ctorParameters = () => [];
|
|
99
|
-
ZtextareaComponent.propDecorators = {
|
|
100
|
-
data: [{ type: Input }],
|
|
101
|
-
group: [{ type: Input }],
|
|
102
|
-
form: [{ type: Input }]
|
|
103
|
-
};
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienRleHRhcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3p0ZXh0YXJlYS96dGV4dGFyZWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUU5QiwyQ0FBMkM7QUFDM0MsT0FBTyxFQUNPLGdCQUFnQixFQUNaLG9CQUFvQixFQUNyQyxNQUFNLGlCQUFpQixDQUFDO0FBUXpCLE1BQU0sT0FBTyxrQkFBa0I7SUFlN0I7UUFWQSxtQkFBYyxHQUFXLElBQUksQ0FBQztRQUM5QixrQkFBYSxHQUFXLElBQUksQ0FBQztRQUM3QixrQkFBYSxHQUFXLElBQUksQ0FBQztRQUM3QixpQkFBWSxHQUFHLHlCQUF5QixDQUFDO1FBQ3pDLGtCQUFhLEdBQWUsRUFBRSxDQUFDO1FBQy9CLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUcxQix3QkFBbUIsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFVMUMsY0FBUyxHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDckMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2hELENB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RTtZQUN2QyxPQUFPLGFBQWEsRUFBRSxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM1QyxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFlLEVBQUUsSUFBWTtRQUMvQyxPQUFPLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQWUsRUFBRSxJQUFZO1FBQ3BDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0QsT0FBTyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUN0QixJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO2dCQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO2FBQ0csQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQzs7O1lBekdGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsbTJFQUF5Qzs7YUFFMUM7Ozs7bUJBRUUsS0FBSztvQkFDTCxLQUFLO21CQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudE91dHB1dEV2ZW50LFxyXG4gIFpGaWVsZCwgWkdyb3VwLCBaQ29tcG9uZW50UHJvcGVydGllc1xyXG59IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtenRleHRhcmVhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4venRleHRhcmVhLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96dGV4dGFyZWEuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFp0ZXh0YXJlYUNvbXBvbmVudCBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZGF0YTogWkZpZWxkO1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBaR3JvdXA7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBpdGVtVmFsdWVGaWVsZDogc3RyaW5nID0gbnVsbDtcclxuICBpdGVtVGV4dEZpZWxkOiBzdHJpbmcgPSBudWxsO1xyXG4gIGl0ZW1EYXRhRmllbGQ6IHN0cmluZyA9IG51bGw7XHJcbiAgaXRlbVRlbXBsYXRlID0gXCJ7e2l0ZW1baXRlbVRleHRGaWVsZF19fVwiO1xyXG4gIGluZmluaXRlekRhdGE6IEFycmF5PGFueT4gPSBbXTtcclxuICBpbmZpbml0ZVNlYXJjaFRleHQgPSBudWxsO1xyXG4gIG1vZGVsekRhdGE6IEFycmF5PGFueT47XHJcblxyXG4gIGNvbXBvbmVudFByb3BlcnRpZXMgPSBuZXcgWkNvbXBvbmVudFByb3BlcnRpZXMoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldENvbXBvbmVudFByb3BlcnRpZXModGhpcyk7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnJlZ2lzdGVyQ29tcG9uZW50KHRoaXMpO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBzZXRFbmFibGUgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICBjb25zdCBmYyA9IHRoaXMuZ3JvdXAuZm9ybS5jb250cm9sc1t0aGlzLmRhdGEuVmFsdWVdO1xyXG4gICAgc3RhdHVzID8gZmMuZW5hYmxlKCkgOiBmYy5kaXNhYmxlKCk7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSA9ICFzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VmlzaWJsZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUgPSBzdGF0dXM7XHJcbiAgICB0aGlzLmRhdGEuVmlzaWJsZSA9IHN0YXR1cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRSZXF1aXJlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWQgPSBzdGF0dXM7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLmNoYW5nZVZhbGlkYXRvcihzdGF0dXMsIHRoaXMuZ3JvdXAsIHRoaXMuZGF0YS5WYWx1ZSwgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICB9XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2UodmFsdWU6IGFueSkge1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJ6c2VsZWN0bXVsdGlwbGUgKG9uVmFsdWVDaGFuZ2UpOiBcIiwgdmFsdWUpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRNb2RlbFZhbHVlKHRoaXMuZGF0YS5WYWx1ZSwgdmFsdWUsIHRoaXMuZ3JvdXApO1xyXG4gICAgdGhpcy5vbkNoYW5nZUV2ZW50KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2VFdmVudCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsICYmICEhdGhpcy5kYXRhLkluZmluaXRlU2Nyb2xsJCkge1xyXG4gICAgICBjb25zdCB0ZXh0RmllbGQgPSB0aGlzLml0ZW1UZXh0RmllbGQudG9TdHJpbmcoKTtcclxuICAgICAgY29uc3QgdmFsdWVGaWVsZCA9IHRoaXMuaXRlbVZhbHVlRmllbGQudG9TdHJpbmcoKTtcclxuICAgICAgbGV0IHpkYXRhTW9kZWwgPSBbXTtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgemRhdGFNb2RlbCA9IHRoaXMuaW5maW5pdGV6RGF0YS5maWx0ZXIoeCA9PiB4W3ZhbHVlRmllbGRdID09PSB2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5tb2RlbHpEYXRhID0gemRhdGFNb2RlbC5zbGljZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLml0ZW1EYXRhRmllbGQuc3RhcnRzV2l0aCgnZ3JvdXAuekRhdGEuJykpIHtcclxuICAgICAgICB0aGlzLmdyb3VwLnpEYXRhW3RoaXMuaXRlbURhdGFGaWVsZC5zbGljZSgxMildID0gemRhdGFNb2RlbDtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLml0ZW1EYXRhRmllbGQuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgICB0aGlzLmdyb3VwW3RoaXMuaXRlbURhdGFGaWVsZC5zbGljZSg2KV0gPSB6ZGF0YU1vZGVsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuZ3JvdXAuc3ViamVjdC5uZXh0KHtcclxuICAgICAgdHlwZTogXCJvbkNoYW5nZVwiLFxyXG4gICAgICB0YXJnZXQ6IHRoaXMuZGF0YS5PbkNoYW5nZSxcclxuICAgICAgZXZlbnQsXHJcbiAgICAgIGRhdGE6IHsgdmFsdWUsIGZpZWxkOiB0aGlzLmRhdGEgfVxyXG4gICAgfSBhcyBaQ29tcG9uZW50T3V0cHV0RXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVhZE9ubHlWYWx1ZSgpIHtcclxuICAgIGNvbnN0IHJlYWRPbmx5VmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLlJlYWRPbmx5LCB0aGlzLmdyb3VwKTtcclxuICAgIGlmICh0eXBlb2YgcmVhZE9ubHlWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4gcmVhZE9ubHlWYWx1ZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlYWRPbmx5VmFsdWU7XHJcbiAgfVxyXG5cclxuICBpc01vYmlsZVNjcmVlbigpIHtcclxuICAgIGNvbnN0IHYgPSBaQ29tcG9uZW50SGVscGVyLmlzTW9iaWxlU2NyZWVuKCk7XHJcbiAgICByZXR1cm4gdjtcclxuICB9XHJcblxyXG4gIGdldElvbl9JbnZhbGlkQ2xhc3MoZm9ybTogRm9ybUdyb3VwLCBkYXRhOiBaRmllbGQpIHtcclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLmdldElvbl9JbnZhbGlkQ2xhc3MoZm9ybSwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRDbGFzcyhmb3JtOiBGb3JtR3JvdXAsIGRhdGE6IFpGaWVsZCkge1xyXG4gICAgY29uc3QgaW9uSW52YWxpZENsYXNzID0gdGhpcy5nZXRJb25fSW52YWxpZENsYXNzKGZvcm0sIGRhdGEpO1xyXG4gICAgcmV0dXJuIGAke2lvbkludmFsaWRDbGFzcyA/IGlvbkludmFsaWRDbGFzcyA6ICcnfSAke3RoaXMuZGF0YS5DbGFzc31gO1xyXG4gIH1cclxuXHJcbiAgb25DbGljaygpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuT25JdGVtQ2xpY2spIHtcclxuICAgICAgdGhpcy5ncm91cC5zdWJqZWN0Lm5leHQoe1xyXG4gICAgICAgIHR5cGU6IFwienRleHRhcmVhLW9uQ2xpY2tcIixcclxuICAgICAgICB0YXJnZXQ6IHRoaXMuZGF0YS5Pbkl0ZW1DbGljayxcclxuICAgICAgICBkYXRhOiB0aGlzLmZvcm0udmFsdWVcclxuICAgICAgfSBhcyBaQ29tcG9uZW50T3V0cHV0RXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/********** Angular **********/
|
|
2
|
-
import { Component, Input } from '@angular/core';
|
|
3
|
-
/********** Ionic **********/
|
|
4
|
-
/********** Plugin **********/
|
|
5
|
-
/********** Component & Service **********/
|
|
6
|
-
import { ZComponentProperties, ZComponentHelper } from 'mmhglobal-zcore';
|
|
7
|
-
export class ZtexteditorComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.componentProperties = new ZComponentProperties();
|
|
10
|
-
this.value = "";
|
|
11
|
-
this.labelText = "";
|
|
12
|
-
this.setVisible = (status) => {
|
|
13
|
-
this.componentProperties.isVisible = status;
|
|
14
|
-
this.data.Visible = status;
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
ngOnInit() {
|
|
18
|
-
ZComponentHelper.setComponentProperties(this);
|
|
19
|
-
ZComponentHelper.registerComponent(this);
|
|
20
|
-
this.widthReduce = this.data.WidthReduce || 60;
|
|
21
|
-
this.heightReduce = this.data.HeightReduce || 560;
|
|
22
|
-
}
|
|
23
|
-
getIon_InvalidClass(form, data) {
|
|
24
|
-
return ZComponentHelper.getIon_InvalidClass(form, data);
|
|
25
|
-
}
|
|
26
|
-
ngOnDestroy() {
|
|
27
|
-
}
|
|
28
|
-
getCompStyle() {
|
|
29
|
-
return {
|
|
30
|
-
"height.px": this.getCompHeight(),
|
|
31
|
-
"width.px": window.innerWidth - this.widthReduce
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
getCompHeight() {
|
|
35
|
-
const h = window.innerHeight - this.heightReduce;
|
|
36
|
-
return (h < 250) ? 250 : h;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
ZtexteditorComponent.decorators = [
|
|
40
|
-
{ type: Component, args: [{
|
|
41
|
-
selector: 'app-ztexteditor',
|
|
42
|
-
template: "<ion-item [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"getIon_InvalidClass(form, data)\">\r\n <div class=\"ion-row\" style=\"justify-content: space-between; width: 100%\">\r\n <div *ngIf=\"data.Title\" class=\"title\">{{data.Title}}</div>\r\n\r\n <ion-label [attr.for]=\"data.Value\"\r\n *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\"\r\n position=\"stacked\"\r\n style=\"margin-bottom:10px;\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n color=\"danger\">\r\n *\r\n </ion-text>\r\n </ion-label>\r\n\r\n <span style=\"flex: 1;\">\r\n <kendo-editor [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n [value]=\"value\"\r\n [ngStyle]=\"getCompStyle()\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\">\r\n <kendo-toolbar *ngIf=\"data.ToolBarStyle === 'hidden'\">\r\n </kendo-toolbar>\r\n <kendo-toolbar *ngIf=\"data.ToolBarStyle === 'full'\">\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorUndoButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorRedoButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorBoldButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorItalicButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorUnderlineButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorStrikethroughButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorSubscriptButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorSuperscriptButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorAlignLeftButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAlignCenterButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAlignRightButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAlignJustifyButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-dropdownlist kendoEditorFormat></kendo-toolbar-dropdownlist>\r\n <kendo-toolbar-dropdownlist kendoEditorFontSize></kendo-toolbar-dropdownlist>\r\n <kendo-toolbar-dropdownlist kendoEditorFontFamily></kendo-toolbar-dropdownlist>\r\n <kendo-toolbar-colorpicker kendoEditorForeColor></kendo-toolbar-colorpicker>\r\n <kendo-toolbar-colorpicker kendoEditorBackColor></kendo-toolbar-colorpicker>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorInsertUnorderedListButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorInsertOrderedListButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorIndentButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorOutdentButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorCreateLinkButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorUnlinkButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-editor-insert-table-button></kendo-editor-insert-table-button>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorAddColumnBeforeButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAddColumnAfterButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAddRowBeforeButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAddRowAfterButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorDeleteColumnButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorDeleteRowButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorDeleteTableButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorInsertFileButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorInsertImageButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorViewSourceButton></kendo-toolbar-button>\r\n </kendo-toolbar>\r\n </kendo-editor>\r\n </span>\r\n </div>\r\n</ion-item>\r\n",
|
|
43
|
-
styles: [".title{margin:20px 10px 5px;font-size:18px;font-weight:700}"]
|
|
44
|
-
},] }
|
|
45
|
-
];
|
|
46
|
-
ZtexteditorComponent.ctorParameters = () => [];
|
|
47
|
-
ZtexteditorComponent.propDecorators = {
|
|
48
|
-
data: [{ type: Input }],
|
|
49
|
-
group: [{ type: Input }],
|
|
50
|
-
form: [{ type: Input }]
|
|
51
|
-
};
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienRleHRlZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRleHRlZGl0b3IvenRleHRlZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUdwRSw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQ1csb0JBQW9CLEVBQ3hCLGdCQUFnQixFQUM3QixNQUFNLGlCQUFpQixDQUFDO0FBUXpCLE1BQU0sT0FBTyxvQkFBb0I7SUFXL0I7UUFOQSx3QkFBbUIsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFHMUMsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNsQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBWVIsZUFBVSxHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7WUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQzdCLENBQUMsQ0FBQTtJQWJlLENBQUM7SUFFakIsUUFBUTtRQUNOLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDO0lBQ3BELENBQUM7SUFPRCxtQkFBbUIsQ0FBQyxJQUFlLEVBQUUsSUFBWTtRQUMvQyxPQUFPLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsV0FBVztJQUVYLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTztZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2pDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXO1NBQ2pELENBQUE7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDakQsT0FBTyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7O1lBakRGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixva0tBQTJDOzthQUU1Qzs7OzttQkFFRSxLQUFLO29CQUNMLEtBQUs7bUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQge1xyXG4gIFpGaWVsZCwgWkdyb3VwLCBaQ29tcG9uZW50UHJvcGVydGllcyxcclxuICBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyXHJcbn0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC16dGV4dGVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3p0ZXh0ZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96dGV4dGVkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWnRleHRlZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBaQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgZGF0YTogWkZpZWxkO1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBaR3JvdXA7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBjb21wb25lbnRQcm9wZXJ0aWVzID0gbmV3IFpDb21wb25lbnRQcm9wZXJ0aWVzKCk7XHJcbiAgcHJpdmF0ZSB3aWR0aFJlZHVjZTogbnVtYmVyO1xyXG4gIHByaXZhdGUgaGVpZ2h0UmVkdWNlOiBudW1iZXI7XHJcbiAgcHVibGljIHZhbHVlID0gXCJcIjtcclxuICBsYWJlbFRleHQgPSBcIlwiO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0Q29tcG9uZW50UHJvcGVydGllcyh0aGlzKTtcclxuICAgIFpDb21wb25lbnRIZWxwZXIucmVnaXN0ZXJDb21wb25lbnQodGhpcyk7XHJcblxyXG4gICAgdGhpcy53aWR0aFJlZHVjZSA9IHRoaXMuZGF0YS5XaWR0aFJlZHVjZSB8fCA2MDtcclxuICAgIHRoaXMuaGVpZ2h0UmVkdWNlID0gdGhpcy5kYXRhLkhlaWdodFJlZHVjZSB8fCA1NjA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VmlzaWJsZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUgPSBzdGF0dXM7XHJcbiAgICB0aGlzLmRhdGEuVmlzaWJsZSA9IHN0YXR1cztcclxuICB9XHJcblxyXG4gIGdldElvbl9JbnZhbGlkQ2xhc3MoZm9ybTogRm9ybUdyb3VwLCBkYXRhOiBaRmllbGQpIHtcclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLmdldElvbl9JbnZhbGlkQ2xhc3MoZm9ybSwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRDb21wU3R5bGUoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBcImhlaWdodC5weFwiOiB0aGlzLmdldENvbXBIZWlnaHQoKSxcclxuICAgICAgXCJ3aWR0aC5weFwiOiB3aW5kb3cuaW5uZXJXaWR0aCAtIHRoaXMud2lkdGhSZWR1Y2VcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29tcEhlaWdodCgpIHtcclxuICAgIGNvbnN0IGggPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB0aGlzLmhlaWdodFJlZHVjZTtcclxuICAgIHJldHVybiAoaCA8IDI1MCkgPyAyNTAgOiBoO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,374 +0,0 @@
|
|
|
1
|
-
/********** Angular **********/
|
|
2
|
-
import { Component, Input, ViewChild } from "@angular/core";
|
|
3
|
-
import { Validators } from "@angular/forms";
|
|
4
|
-
/********** Component & Service **********/
|
|
5
|
-
import { ZComponentHelper, ZComponentProperties } from "mmhglobal-zcore";
|
|
6
|
-
export class ZtreeComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.items = [];
|
|
9
|
-
this.originalItemList = null;
|
|
10
|
-
// modelzData: Array<any>;
|
|
11
|
-
// modelName: string;
|
|
12
|
-
// dataSet: any[] = null;
|
|
13
|
-
this.isNodeDrop = false;
|
|
14
|
-
this.nodeCounter = 1;
|
|
15
|
-
this.clickActName = null;
|
|
16
|
-
this.state = { expandedkeys: [] };
|
|
17
|
-
this.itemIndex = [];
|
|
18
|
-
this.selectedKeys = [];
|
|
19
|
-
this.absoluteText = false;
|
|
20
|
-
this.componentProperties = new ZComponentProperties();
|
|
21
|
-
this.isExpanded = (dataItem, index) => {
|
|
22
|
-
// console.log(index);
|
|
23
|
-
return this.state.expandedkeys.indexOf(index) > -1;
|
|
24
|
-
// return true;
|
|
25
|
-
};
|
|
26
|
-
this.expandNode = (field, value, setAsSelected) => {
|
|
27
|
-
this.itemIndex = [];
|
|
28
|
-
const node = this.getItems();
|
|
29
|
-
this.searchNodeIndex(node, value, '', field);
|
|
30
|
-
const index = this.itemIndex;
|
|
31
|
-
if (setAsSelected) {
|
|
32
|
-
this.selectedKeys = index;
|
|
33
|
-
}
|
|
34
|
-
const indexArr = [];
|
|
35
|
-
index.forEach((i) => {
|
|
36
|
-
const arr = i.split('_');
|
|
37
|
-
let indexs = "";
|
|
38
|
-
arr.forEach((x) => {
|
|
39
|
-
indexs = indexs.concat("_").concat(x);
|
|
40
|
-
indexArr.push(indexs.substring(1));
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
this.state.expandedkeys = this.state.expandedkeys.concat(indexArr);
|
|
44
|
-
};
|
|
45
|
-
this.collapseNode = (field, value, collapseParent) => {
|
|
46
|
-
this.itemIndex = [];
|
|
47
|
-
const node = this.getItems();
|
|
48
|
-
this.searchNodeIndex(node, value, '', field);
|
|
49
|
-
const index = this.itemIndex;
|
|
50
|
-
let indexArr = [];
|
|
51
|
-
if (collapseParent) {
|
|
52
|
-
index.forEach((i) => {
|
|
53
|
-
const arr = i.split('_');
|
|
54
|
-
let indexs = "";
|
|
55
|
-
arr.forEach((x) => {
|
|
56
|
-
indexs = indexs.concat("_").concat(x);
|
|
57
|
-
indexArr.push(indexs.substring(1));
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
indexArr = index;
|
|
63
|
-
}
|
|
64
|
-
this.state.expandedkeys = this.state.expandedkeys.filter(v => {
|
|
65
|
-
return !indexArr.includes(v);
|
|
66
|
-
});
|
|
67
|
-
};
|
|
68
|
-
this.expandAll = () => {
|
|
69
|
-
const node = this.getItems();
|
|
70
|
-
if (node) {
|
|
71
|
-
this.expandAllNode(node, '');
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
this.collapseAll = () => {
|
|
75
|
-
this.state.expandedkeys = [];
|
|
76
|
-
};
|
|
77
|
-
this.setEnable = (status) => {
|
|
78
|
-
this.componentProperties.isReadOnly = !status;
|
|
79
|
-
};
|
|
80
|
-
this.setVisible = (status) => {
|
|
81
|
-
this.componentProperties.isVisible = status;
|
|
82
|
-
this.data.Visible = status;
|
|
83
|
-
};
|
|
84
|
-
this.setRequire = (status) => {
|
|
85
|
-
this.componentProperties.isRequired = status;
|
|
86
|
-
ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
ngOnInit() {
|
|
90
|
-
ZComponentHelper.setComponentProperties(this);
|
|
91
|
-
ZComponentHelper.registerComponent(this);
|
|
92
|
-
if (this.data.TreeviewExpandAll) {
|
|
93
|
-
this.expandAll();
|
|
94
|
-
}
|
|
95
|
-
// fix text align issue
|
|
96
|
-
if (this.data.OnAddNode || this.data.OnRemoveNode) {
|
|
97
|
-
this.absoluteText = true;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
ngAfterViewInit() {
|
|
101
|
-
// const componentId = ZComponentHelper.getComponentId(this.data);
|
|
102
|
-
// this.group.zComponents[componentId] = this;
|
|
103
|
-
ZComponentHelper.registerComponent(this);
|
|
104
|
-
}
|
|
105
|
-
getItems() {
|
|
106
|
-
// if (this.modelName) {
|
|
107
|
-
// return this.group[this.modelName];
|
|
108
|
-
// }
|
|
109
|
-
const fieldValue = this.data.Value;
|
|
110
|
-
if (fieldValue) {
|
|
111
|
-
this.nodeCounter = 1;
|
|
112
|
-
const fValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Value);
|
|
113
|
-
return fValue;
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
console.warn('ztree field Value is not set correctly. ', fieldValue);
|
|
117
|
-
}
|
|
118
|
-
// if (fieldValue && fieldValue.startsWith('group.')) {
|
|
119
|
-
// // const newDataSet = JSON.parse(JSON.stringify(this.dataSet));
|
|
120
|
-
// const name = fieldValue.slice(6);
|
|
121
|
-
// this.nodeCounter = 1;
|
|
122
|
-
// // this.group[name] = this.setValuePropToNullAtLeafLeave(this.group[name]);
|
|
123
|
-
// this.modelName = name;
|
|
124
|
-
// return this.group[name];
|
|
125
|
-
// } else {
|
|
126
|
-
// console.warn('ztree field Value is not set correctly. ', fieldValue);
|
|
127
|
-
// }
|
|
128
|
-
}
|
|
129
|
-
searchNodeIndex(node, value, key, field) {
|
|
130
|
-
if (key) {
|
|
131
|
-
key = key + '_';
|
|
132
|
-
}
|
|
133
|
-
node.forEach((d, i) => {
|
|
134
|
-
if (d[field] === Number(value) || d[field] === value) {
|
|
135
|
-
this.itemIndex = this.itemIndex.concat(key + '' + i);
|
|
136
|
-
}
|
|
137
|
-
if (Array.isArray(d.Value)) {
|
|
138
|
-
const k = key + '' + i;
|
|
139
|
-
this.searchNodeIndex(d.Value, value, k, field);
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
expandAllNode(node, key) {
|
|
144
|
-
if (key) {
|
|
145
|
-
key = key + '_';
|
|
146
|
-
}
|
|
147
|
-
node.forEach((d, i) => {
|
|
148
|
-
if (Array.isArray(d.Value)) {
|
|
149
|
-
const k = key + '' + i;
|
|
150
|
-
this.state.expandedkeys = this.state.expandedkeys.concat(k);
|
|
151
|
-
this.expandAllNode(d.Value, k);
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
handleCollapse(node) {
|
|
156
|
-
this.state.expandedkeys = this.state.expandedkeys.filter(k => k !== node.index);
|
|
157
|
-
}
|
|
158
|
-
handleExpand(node) {
|
|
159
|
-
this.state.expandedkeys = this.state.expandedkeys.concat(node.index);
|
|
160
|
-
}
|
|
161
|
-
getTemplate(dataItem, data, group) {
|
|
162
|
-
if (data.ItemTemplate) {
|
|
163
|
-
const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(this, data.ItemTemplate);
|
|
164
|
-
if (!getTemplateFunc) {
|
|
165
|
-
console.warn("The (" +
|
|
166
|
-
data.ItemTemplate +
|
|
167
|
-
") is not defined correctly. Value contains: ", getTemplateFunc);
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
return getTemplateFunc({
|
|
171
|
-
dataItem,
|
|
172
|
-
data,
|
|
173
|
-
group
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
return Object.values(dataItem)
|
|
178
|
-
.filter(data => typeof data === "string")
|
|
179
|
-
.join(", ");
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
convertToTreeItems(dataSet) {
|
|
183
|
-
const toTreeItems = [];
|
|
184
|
-
const treeIndex = {};
|
|
185
|
-
const pendingItems = [];
|
|
186
|
-
dataSet.forEach((d) => {
|
|
187
|
-
if (!d.ParentId) {
|
|
188
|
-
toTreeItems.push(d);
|
|
189
|
-
treeIndex[d.Id] = d;
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
if (treeIndex[d.ParentId]) {
|
|
193
|
-
const parentItem = treeIndex[d.ParentId];
|
|
194
|
-
if (!parentItem.Value) {
|
|
195
|
-
parentItem.Value = [];
|
|
196
|
-
}
|
|
197
|
-
parentItem.Value.push(d);
|
|
198
|
-
treeIndex[d.Id] = d;
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
pendingItems.push(d);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
});
|
|
205
|
-
if (pendingItems.length > 0) {
|
|
206
|
-
pendingItems.forEach((d) => {
|
|
207
|
-
if (treeIndex[d.ParentId]) {
|
|
208
|
-
const parentItem = treeIndex[d.ParentId];
|
|
209
|
-
parentItem.Value.push(d);
|
|
210
|
-
treeIndex[d.Id] = d;
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
return toTreeItems;
|
|
215
|
-
}
|
|
216
|
-
onSelectionChange(event) {
|
|
217
|
-
let targetName;
|
|
218
|
-
if (this.clickActName) {
|
|
219
|
-
switch (this.clickActName) {
|
|
220
|
-
case 'AddNode':
|
|
221
|
-
targetName = this.data.OnAddNode;
|
|
222
|
-
break;
|
|
223
|
-
case 'RemoveNode':
|
|
224
|
-
targetName = this.data.OnRemoveNode;
|
|
225
|
-
break;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
targetName = this.data.OnItemClick;
|
|
230
|
-
}
|
|
231
|
-
this.clickActName = null;
|
|
232
|
-
this.group.subject.next({
|
|
233
|
-
type: "ztree_onSelectionChange",
|
|
234
|
-
target: targetName,
|
|
235
|
-
data: event.dataItem,
|
|
236
|
-
event: event.index
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
onAddNode(event, dataItem, data, group) {
|
|
240
|
-
this.clickActName = 'AddNode';
|
|
241
|
-
// event.stopPropagation();
|
|
242
|
-
// if (this.data.OnAddNode) {
|
|
243
|
-
// const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnAddNode);
|
|
244
|
-
// if (typeof func === 'function') {
|
|
245
|
-
// const callFunc = func.bind(this.group.ctrlScope);
|
|
246
|
-
// callFunc(dataItem, data, group, event.index);
|
|
247
|
-
// }
|
|
248
|
-
// return;
|
|
249
|
-
// }
|
|
250
|
-
}
|
|
251
|
-
onRemoveNode(event, dataItem, data, group) {
|
|
252
|
-
this.clickActName = 'RemoveNode';
|
|
253
|
-
}
|
|
254
|
-
onEditNode(event) {
|
|
255
|
-
if (this.data.OnEditNode) {
|
|
256
|
-
const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnEditNode);
|
|
257
|
-
if (typeof func === 'function') {
|
|
258
|
-
const callFunc = func.bind(this.group.ctrlScope);
|
|
259
|
-
callFunc(event);
|
|
260
|
-
}
|
|
261
|
-
return;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
handleNodeDrop(event) {
|
|
265
|
-
if (this.data.Draggable === false) {
|
|
266
|
-
event.setValid(false);
|
|
267
|
-
return;
|
|
268
|
-
}
|
|
269
|
-
this.isNodeDrop = true;
|
|
270
|
-
const dropHandler = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnDrop);
|
|
271
|
-
if (typeof dropHandler === "function") {
|
|
272
|
-
const callFunc = dropHandler.bind(this);
|
|
273
|
-
callFunc(event);
|
|
274
|
-
}
|
|
275
|
-
// prevent drop if attempting to add to file
|
|
276
|
-
// if (isFile(event.destinationItem.item.dataItem.text) && event.dropPosition === DropPosition.Over) {
|
|
277
|
-
// event.setValid(false);
|
|
278
|
-
// }
|
|
279
|
-
}
|
|
280
|
-
handleNodeDragEnd(event) {
|
|
281
|
-
if (!this.isNodeDrop) {
|
|
282
|
-
return;
|
|
283
|
-
}
|
|
284
|
-
this.isNodeDrop = false;
|
|
285
|
-
const items = this.getItems();
|
|
286
|
-
// console.log('Items: ', this.items);
|
|
287
|
-
const target = [];
|
|
288
|
-
this.updateChangeToDataSet(items, target);
|
|
289
|
-
// this.dataSet = target;
|
|
290
|
-
ZComponentHelper.setModelValue(this.data.Value, target, this.group);
|
|
291
|
-
this.group.subject.next({
|
|
292
|
-
type: "ztree-onTreeNodeDragEnd",
|
|
293
|
-
target: this.data.OnChange,
|
|
294
|
-
data: target
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
updateChangeToDataSet(source, target) {
|
|
298
|
-
source.forEach(d => {
|
|
299
|
-
if (Array.isArray(d.Value)) {
|
|
300
|
-
const t = JSON.parse(JSON.stringify(d));
|
|
301
|
-
t.Value = [];
|
|
302
|
-
target.push(t);
|
|
303
|
-
this.updateChangeToDataSet(d.Value, t.Value);
|
|
304
|
-
}
|
|
305
|
-
else {
|
|
306
|
-
const t = Object.assign({}, d);
|
|
307
|
-
t.Value = t._DataValue;
|
|
308
|
-
delete t._DataValue;
|
|
309
|
-
target.push(t);
|
|
310
|
-
}
|
|
311
|
-
});
|
|
312
|
-
}
|
|
313
|
-
// #region search feature - filterable: true
|
|
314
|
-
handleFilter(value) {
|
|
315
|
-
if (this.items.length == 0) {
|
|
316
|
-
this.items = ZComponentHelper.getGroupEvalValue.call(this, this.data.Value);
|
|
317
|
-
if (this.originalItemList == null) {
|
|
318
|
-
this.originalItemList = this.items.map(item => Object.assign({}, item));
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
this.items = this.originalItemList.map(item => Object.assign({}, item));
|
|
322
|
-
const target = this.search(this.items, value);
|
|
323
|
-
const gridValue = this.filterPrefix(this.data.Value);
|
|
324
|
-
this.group[gridValue] = target;
|
|
325
|
-
}
|
|
326
|
-
filterPrefix(valueName) {
|
|
327
|
-
if (valueName.startsWith('zData.')) {
|
|
328
|
-
return valueName.slice(6);
|
|
329
|
-
}
|
|
330
|
-
if (valueName.startsWith('group.zData.')) {
|
|
331
|
-
return valueName.slice(12);
|
|
332
|
-
}
|
|
333
|
-
if (valueName.startsWith('group.')) {
|
|
334
|
-
return valueName.slice(6);
|
|
335
|
-
}
|
|
336
|
-
if (valueName) {
|
|
337
|
-
return valueName;
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
search(items, term) {
|
|
341
|
-
return items.reduce((acc, item) => {
|
|
342
|
-
if (this.contains(item.Name, term)) {
|
|
343
|
-
acc.push(item);
|
|
344
|
-
}
|
|
345
|
-
else if (item.Value && item.Value.length > 0) {
|
|
346
|
-
const newItems = this.search(item.Value, term);
|
|
347
|
-
if (newItems.length > 0) {
|
|
348
|
-
var filterItem = item;
|
|
349
|
-
filterItem.Value = newItems;
|
|
350
|
-
acc.push(filterItem);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
return acc;
|
|
354
|
-
}, []);
|
|
355
|
-
}
|
|
356
|
-
contains(text, term) {
|
|
357
|
-
return text.toLowerCase().indexOf((term || "").toLowerCase()) >= 0;
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
ZtreeComponent.decorators = [
|
|
361
|
-
{ type: Component, args: [{
|
|
362
|
-
selector: "app-ztree",
|
|
363
|
-
template: "<div style=\"width:100%\"\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <kendo-treeview [nodes]=\"getItems()\"\r\n kendoTreeViewExpandable\r\n kendoTreeViewSelectable\r\n kendoTreeViewDragAndDrop\r\n kendoTreeViewDragAndDropEditing\r\n [isExpanded]=\"isExpanded\"\r\n (collapse)=\"handleCollapse($event)\"\r\n (expand)=\"handleExpand($event)\"\r\n (nodeDrop)=\"handleNodeDrop($event)\"\r\n (nodeDragEnd)=\"handleNodeDragEnd($event)\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n [selectedKeys]=\"selectedKeys\"\r\n kendoTreeViewHierarchyBinding\r\n childrenField=\"Value\"\r\n [filterable]=\"data.Filterable\"\r\n textField=\"Name\"\r\n (filterChange)=\"handleFilter($event)\">\r\n\r\n <ng-template kendoTreeViewNodeTemplate let-dataItem #nodetemplate>\r\n\r\n <ion-button *ngIf=\"!!data.OnAddNode\"\r\n (click)=\"onAddNode($event, dataItem, data, group)\"\r\n style=\"zoom: 0.6; margin: 0 0 0 2px;\" mat-raised-button color=\"primary\" size=\"medium\"\r\n [hidden]=\"(!!dataItem.OnAddNodeVisible)\"> \r\n <fa-icon [icon]=\"'plus'\"></fa-icon>\r\n </ion-button>\r\n <ion-button *ngIf=\"!!data.OnRemoveNode\" (click)=\"onRemoveNode($event, dataItem, data, group)\"\r\n style=\"zoom: 0.6; margin: 0 15px 0 10px;\" color=\"danger\" mat-raised-button size=\"medium\"\r\n [hidden]=\"(!!dataItem.OnRemoveNodeVisible)\"> \r\n <fa-icon [icon]=\"'minus'\"></fa-icon>\r\n </ion-button>\r\n\r\n <ion-label *ngIf=\"absoluteText\" style=\"position: absolute; top: 14px;\">\r\n {{ getTemplate(dataItem, data, group) }}\r\n </ion-label>\r\n\r\n <ion-label *ngIf=\"!absoluteText\">\r\n {{ getTemplate(dataItem, data, group) }}\r\n </ion-label>\r\n </ng-template>\r\n </kendo-treeview>\r\n</div>\r\n",
|
|
364
|
-
styles: [":host{--ion-color-primary:#479400;--ion-color-primary-rgb:56,128,255;--ion-color-primary-contrast:#fff;--ion-color-primary-contrast-rgb:255,255,255;--ion-color-primary-shade:#3171e0;--ion-color-primary-tint:#4c8dff}:host ::ng-deep kendo-treeview .k-treeview-leaf{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:3px;border:1px solid #c8dbf5;background-color:#e3ecf8;color:#0a45ab;font-size:13px;cursor:pointer}:host ::ng-deep kendo-treeview .k-treeview-leaf.k-selected{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:3px;background-color:#a9c3e8!important;color:#0a45ab!important;font-size:13px;cursor:pointer}:host ::ng-deep kendo-treeview .k-treeview-leaf.k-state-hover,:host ::ng-deep kendo-treeview .k-treeview-leaf:hover{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:3px;background-color:#c9daf2;color:#0a45ab;font-size:13px;cursor:pointer}"]
|
|
365
|
-
},] }
|
|
366
|
-
];
|
|
367
|
-
ZtreeComponent.ctorParameters = () => [];
|
|
368
|
-
ZtreeComponent.propDecorators = {
|
|
369
|
-
data: [{ type: Input }],
|
|
370
|
-
group: [{ type: Input }],
|
|
371
|
-
form: [{ type: Input }],
|
|
372
|
-
nodetemplate: [{ type: ViewChild, args: ["nodetemplate", { static: true },] }]
|
|
373
|
-
};
|
|
374
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienRyZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRyZWUvenRyZWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVN2RCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUNPLGdCQUFnQixFQUF5QixvQkFBb0IsRUFFMUUsTUFBTSxpQkFBaUIsQ0FBQztBQU96QixNQUFNLE9BQU8sY0FBYztJQW9CekI7UUFmQSxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFRLElBQUksQ0FBQztRQUM3QiwwQkFBMEI7UUFDMUIscUJBQXFCO1FBQ3JCLHlCQUF5QjtRQUN6QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ1gsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDckIsVUFBSyxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQzdCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixpQkFBWSxHQUFVLEVBQUUsQ0FBQztRQUN6QixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUVyQyx3QkFBbUIsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFnRDFDLGVBQVUsR0FBRyxDQUFDLFFBQWEsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUNqRCxzQkFBc0I7WUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkQsZUFBZTtRQUNuQixDQUFDLENBQUE7UUFFTSxl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QVc7Z0JBQ3JCLHNyRUFBcUM7O2FBRXRDOzs7O21CQUVFLEtBQUs7b0JBQ0wsS0FBSzttQkFDTCxLQUFLOzJCQUNMLFNBQVMsU0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgVHJlZUl0ZW1Ecm9wRXZlbnQsXHJcbiAgVHJlZUl0ZW1EcmFnRXZlbnRcclxufSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItdHJlZXZpZXdcIjtcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHtcclxuICBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50T3V0cHV0RXZlbnQsIFpDb21wb25lbnRQcm9wZXJ0aWVzLFxyXG4gIFpGaWVsZCwgWkdyb3VwLCAgWlRyZWVUZW1wbGF0ZVBhcmFtc1xyXG59IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC16dHJlZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4venRyZWUuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4venRyZWUuY29tcG9uZW50LnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFp0cmVlQ29tcG9uZW50IGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgQFZpZXdDaGlsZChcIm5vZGV0ZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBub2RldGVtcGxhdGU6IEVsZW1lbnRSZWY7XHJcbiAgaXRlbXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBvcmlnaW5hbEl0ZW1MaXN0OiBhbnkgPSBudWxsO1xyXG4gIC8vIG1vZGVsekRhdGE6IEFycmF5PGFueT47XHJcbiAgLy8gbW9kZWxOYW1lOiBzdHJpbmc7XHJcbiAgLy8gZGF0YVNldDogYW55W10gPSBudWxsO1xyXG4gIGlzTm9kZURyb3AgPSBmYWxzZTtcclxuICBwcml2YXRlIG5vZGVDb3VudGVyID0gMTtcclxuICBwcml2YXRlIGNsaWNrQWN0TmFtZSA9IG51bGw7XHJcbiAgcHVibGljIHN0YXRlID0geyBleHBhbmRlZGtleXM6IFtdIH07XHJcbiAgcHVibGljIGl0ZW1JbmRleCA9IFtdO1xyXG4gIHB1YmxpYyBzZWxlY3RlZEtleXM6IGFueVtdID0gW107XHJcbiAgcHVibGljIGFic29sdXRlVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb21wb25lbnRQcm9wZXJ0aWVzID0gbmV3IFpDb21wb25lbnRQcm9wZXJ0aWVzKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRDb21wb25lbnRQcm9wZXJ0aWVzKHRoaXMpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5yZWdpc3RlckNvbXBvbmVudCh0aGlzKTtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhLlRyZWV2aWV3RXhwYW5kQWxsKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kQWxsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZml4IHRleHQgYWxpZ24gaXNzdWVcclxuICAgIGlmICh0aGlzLmRhdGEuT25BZGROb2RlIHx8IHRoaXMuZGF0YS5PblJlbW92ZU5vZGUpIHtcclxuICAgICAgdGhpcy5hYnNvbHV0ZVRleHQgPSB0cnVlOyBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIC8vIGNvbnN0IGNvbXBvbmVudElkID0gWkNvbXBvbmVudEhlbHBlci5nZXRDb21wb25lbnRJZCh0aGlzLmRhdGEpO1xyXG4gICAgLy8gdGhpcy5ncm91cC56Q29tcG9uZW50c1tjb21wb25lbnRJZF0gPSB0aGlzO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5yZWdpc3RlckNvbXBvbmVudCh0aGlzKTtcclxuICB9XHJcblxyXG4gIGdldEl0ZW1zKCkge1xyXG4gICAgLy8gaWYgKHRoaXMubW9kZWxOYW1lKSB7XHJcbiAgICAvLyAgIHJldHVybiB0aGlzLmdyb3VwW3RoaXMubW9kZWxOYW1lXTtcclxuICAgIC8vIH1cclxuICAgIGNvbnN0IGZpZWxkVmFsdWUgPSB0aGlzLmRhdGEuVmFsdWU7XHJcbiAgICBpZiAoZmllbGRWYWx1ZSkge1xyXG4gICAgICB0aGlzLm5vZGVDb3VudGVyID0gMTtcclxuICAgICAgY29uc3QgZlZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5WYWx1ZSk7XHJcbiAgICAgIHJldHVybiBmVmFsdWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ3p0cmVlIGZpZWxkIFZhbHVlIGlzIG5vdCBzZXQgY29ycmVjdGx5LiAnLCBmaWVsZFZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIGlmIChmaWVsZFZhbHVlICYmIGZpZWxkVmFsdWUuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgIC8vICAgLy8gY29uc3QgbmV3RGF0YVNldCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhU2V0KSk7XHJcbiAgICAvLyAgIGNvbnN0IG5hbWUgPSBmaWVsZFZhbHVlLnNsaWNlKDYpO1xyXG4gICAgLy8gICB0aGlzLm5vZGVDb3VudGVyID0gMTtcclxuICAgIC8vICAgLy8gdGhpcy5ncm91cFtuYW1lXSA9IHRoaXMuc2V0VmFsdWVQcm9wVG9OdWxsQXRMZWFmTGVhdmUodGhpcy5ncm91cFtuYW1lXSk7XHJcbiAgICAvLyAgIHRoaXMubW9kZWxOYW1lID0gbmFtZTtcclxuICAgIC8vICAgcmV0dXJuIHRoaXMuZ3JvdXBbbmFtZV07XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICBjb25zb2xlLndhcm4oJ3p0cmVlIGZpZWxkIFZhbHVlIGlzIG5vdCBzZXQgY29ycmVjdGx5LiAnLCBmaWVsZFZhbHVlKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc0V4cGFuZGVkID0gKGRhdGFJdGVtOiBhbnksIGluZGV4OiBzdHJpbmcpID0+IHtcclxuICAgICAgLy8gY29uc29sZS5sb2coaW5kZXgpO1xyXG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZS5leHBhbmRlZGtleXMuaW5kZXhPZihpbmRleCkgPiAtMTtcclxuICAgICAgLy8gcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwYW5kTm9kZSA9IChmaWVsZDpzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHNldEFzU2VsZWN0ZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuaXRlbUluZGV4ID0gW107XHJcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXRJdGVtcygpO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoTm9kZUluZGV4KG5vZGUsIHZhbHVlLCAnJywgZmllbGQpO1xyXG5cclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pdGVtSW5kZXg7XHJcbiAgICBpZiAoc2V0QXNTZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5cyA9IGluZGV4O1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5kZXhBcnIgPSBbXTtcclxuICAgIGluZGV4LmZvckVhY2goKGk6YW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGFyciA9IGkuc3BsaXQoJ18nKTtcclxuICAgICAgbGV0IGluZGV4cyA9IFwiXCI7XHJcbiAgICAgIGFyci5mb3JFYWNoKCh4OmFueSkgPT4ge1xyXG4gICAgICAgIGluZGV4cyA9IGluZGV4cy5jb25jYXQoXCJfXCIpLmNvbmNhdCh4KTtcclxuICAgICAgICBpbmRleEFyci5wdXNoKGluZGV4cy5zdWJzdHJpbmcoMSkpO1xyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0YXRlLmV4cGFuZGVka2V5cyA9IHRoaXMuc3RhdGUuZXhwYW5kZWRrZXlzLmNvbmNhdChpbmRleEFycik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29sbGFwc2VOb2RlID0gKGZpZWxkOnN0cmluZywgdmFsdWU6IHN0cmluZywgY29sbGFwc2VQYXJlbnQ6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuaXRlbUluZGV4ID0gW107XHJcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXRJdGVtcygpO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoTm9kZUluZGV4KG5vZGUsIHZhbHVlLCAnJywgZmllbGQpO1xyXG5cclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pdGVtSW5kZXg7XHJcbiAgICBsZXQgaW5kZXhBcnIgPSBbXTtcclxuICAgIGlmIChjb2xsYXBzZVBhcmVudCkge1xyXG4gICAgICBpbmRleC5mb3JFYWNoKChpOmFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFyciA9IGkuc3BsaXQoJ18nKTtcclxuICAgICAgICBsZXQgaW5kZXhzID0gXCJcIjtcclxuICAgICAgICBhcnIuZm9yRWFjaCgoeDphbnkpID0+IHtcclxuICAgICAgICAgIGluZGV4cyA9IGluZGV4cy5jb25jYXQoXCJfXCIpLmNvbmNhdCh4KTtcclxuICAgICAgICAgIGluZGV4QXJyLnB1c2goaW5kZXhzLnN1YnN0cmluZygxKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpbmRleEFyciA9IGluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3RhdGUuZXhwYW5kZWRrZXlzID0gdGhpcy5zdGF0ZS5leHBhbmRlZGtleXMuZmlsdGVyKHYgPT4ge1xyXG4gICAgICByZXR1cm4gIWluZGV4QXJyLmluY2x1ZGVzKHYpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VhcmNoTm9kZUluZGV4KG5vZGU6IGFueSwgdmFsdWU6IHN0cmluZywga2V5OiBzdHJpbmcsIGZpZWxkOiBzdHJpbmcpIHtcclxuICAgIGlmIChrZXkpIHtcclxuICAgICAga2V5ID0ga2V5ICsgJ18nO1xyXG4gICAgfVxyXG4gICAgbm9kZS5mb3JFYWNoKChkOiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICBpZiAoZFtmaWVsZF0gPT09IE51bWJlcih2YWx1ZSkgfHwgZFtmaWVsZF0gPT09IHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtSW5kZXggPSB0aGlzLml0ZW1JbmRleC5jb25jYXQoa2V5ICsgJycgKyBpKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkLlZhbHVlKSkge1xyXG4gICAgICAgIGNvbnN0IGsgPSBrZXkgKyAnJyArIGk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hOb2RlSW5kZXgoZC5WYWx1ZSwgdmFsdWUsIGssIGZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwYW5kQWxsID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBub2RlID0gdGhpcy5nZXRJdGVtcygpO1xyXG4gICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kQWxsTm9kZShub2RlLCAnJyk7XHJcbiAgICAgIH0gICAgXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29sbGFwc2VBbGwgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnN0YXRlLmV4cGFuZGVka2V5cyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBhbmRBbGxOb2RlKG5vZGU6IGFueSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGlmIChrZXkpIHtcclxuICAgICAga2V5ID0ga2V5ICsgJ18nO1xyXG4gICAgfVxyXG4gICAgbm9kZS5mb3JFYWNoKChkOiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkLlZhbHVlKSkge1xyXG4gICAgICAgIGNvbnN0IGsgPSBrZXkgKyAnJyArIGk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZS5leHBhbmRlZGtleXMgPSB0aGlzLnN0YXRlLmV4cGFuZGVka2V5cy5jb25jYXQoayk7XHJcbiAgICAgICAgdGhpcy5leHBhbmRBbGxOb2RlKGQuVmFsdWUsIGspO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDb2xsYXBzZShub2RlKSB7XHJcbiAgICAgIHRoaXMuc3RhdGUuZXhwYW5kZWRrZXlzID0gdGhpcy5zdGF0ZS5leHBhbmRlZGtleXMuZmlsdGVyKGsgPT4gayAhPT0gbm9kZS5pbmRleCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRXhwYW5kKG5vZGUpIHtcclxuICAgICAgdGhpcy5zdGF0ZS5leHBhbmRlZGtleXMgPSB0aGlzLnN0YXRlLmV4cGFuZGVka2V5cy5jb25jYXQobm9kZS5pbmRleCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RW5hYmxlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkgPSAhc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFZpc2libGUgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlID0gc3RhdHVzO1xyXG4gICAgdGhpcy5kYXRhLlZpc2libGUgPSBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0UmVxdWlyZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkID0gc3RhdHVzO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5jaGFuZ2VWYWxpZGF0b3Ioc3RhdHVzLCB0aGlzLmdyb3VwLCB0aGlzLmRhdGEuVmFsdWUsIHRoaXMuY29tcG9uZW50UHJvcGVydGllcywgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgfVxyXG5cclxuICBnZXRUZW1wbGF0ZShkYXRhSXRlbTogYW55LCBkYXRhOiBaRmllbGQsIGdyb3VwOiBaR3JvdXApIHtcclxuICAgIGlmIChkYXRhLkl0ZW1UZW1wbGF0ZSkge1xyXG4gICAgICBjb25zdCBnZXRUZW1wbGF0ZUZ1bmMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwoXHJcbiAgICAgICAgdGhpcyxcclxuICAgICAgICBkYXRhLkl0ZW1UZW1wbGF0ZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoIWdldFRlbXBsYXRlRnVuYykge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIFwiVGhlIChcIiArXHJcbiAgICAgICAgICBkYXRhLkl0ZW1UZW1wbGF0ZSArXHJcbiAgICAgICAgICBcIikgaXMgbm90IGRlZmluZWQgY29ycmVjdGx5LiBWYWx1ZSBjb250YWluczogXCIsXHJcbiAgICAgICAgICBnZXRUZW1wbGF0ZUZ1bmNcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGdldFRlbXBsYXRlRnVuYyh7XHJcbiAgICAgICAgZGF0YUl0ZW0sXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBncm91cFxyXG4gICAgICB9IGFzIFpUcmVlVGVtcGxhdGVQYXJhbXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZGF0YUl0ZW0pXHJcbiAgICAgICAgLmZpbHRlcihkYXRhID0+IHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiKVxyXG4gICAgICAgIC5qb2luKFwiLCBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9UcmVlSXRlbXMoZGF0YVNldDogYW55W10pIHtcclxuICAgIGNvbnN0IHRvVHJlZUl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgdHJlZUluZGV4OiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IHBlbmRpbmdJdGVtczogYW55W10gPSBbXTtcclxuICAgIGRhdGFTZXQuZm9yRWFjaCgoZDogYW55KSA9PiB7XHJcbiAgICAgIGlmICghZC5QYXJlbnRJZCkge1xyXG4gICAgICAgIHRvVHJlZUl0ZW1zLnB1c2goZCk7XHJcbiAgICAgICAgdHJlZUluZGV4W2QuSWRdID0gZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodHJlZUluZGV4W2QuUGFyZW50SWRdKSB7XHJcbiAgICAgICAgICBjb25zdCBwYXJlbnRJdGVtID0gdHJlZUluZGV4W2QuUGFyZW50SWRdO1xyXG4gICAgICAgICAgaWYgKCFwYXJlbnRJdGVtLlZhbHVlKSB7XHJcbiAgICAgICAgICAgIHBhcmVudEl0ZW0uVmFsdWUgPSBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHBhcmVudEl0ZW0uVmFsdWUucHVzaChkKTtcclxuICAgICAgICAgIHRyZWVJbmRleFtkLklkXSA9IGQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHBlbmRpbmdJdGVtcy5wdXNoKGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHBlbmRpbmdJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHBlbmRpbmdJdGVtcy5mb3JFYWNoKChkOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodHJlZUluZGV4W2QuUGFyZW50SWRdKSB7XHJcbiAgICAgICAgICBjb25zdCBwYXJlbnRJdGVtID0gdHJlZUluZGV4W2QuUGFyZW50SWRdO1xyXG4gICAgICAgICAgcGFyZW50SXRlbS5WYWx1ZS5wdXNoKGQpO1xyXG4gICAgICAgICAgdHJlZUluZGV4W2QuSWRdID0gZDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b1RyZWVJdGVtcztcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCB0YXJnZXROYW1lOiBzdHJpbmc7XHJcbiAgICBpZiAodGhpcy5jbGlja0FjdE5hbWUpIHtcclxuICAgICAgc3dpdGNoICh0aGlzLmNsaWNrQWN0TmFtZSkge1xyXG4gICAgICAgIGNhc2UgJ0FkZE5vZGUnOlxyXG4gICAgICAgICAgdGFyZ2V0TmFtZSA9IHRoaXMuZGF0YS5PbkFkZE5vZGU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdSZW1vdmVOb2RlJzpcclxuICAgICAgICAgIHRhcmdldE5hbWUgPSB0aGlzLmRhdGEuT25SZW1vdmVOb2RlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRhcmdldE5hbWUgPSB0aGlzLmRhdGEuT25JdGVtQ2xpY2s7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNsaWNrQWN0TmFtZSA9IG51bGw7XHJcbiAgICB0aGlzLmdyb3VwLnN1YmplY3QubmV4dCh7XHJcbiAgICAgIHR5cGU6IFwienRyZWVfb25TZWxlY3Rpb25DaGFuZ2VcIixcclxuICAgICAgdGFyZ2V0OiB0YXJnZXROYW1lLFxyXG4gICAgICBkYXRhOiBldmVudC5kYXRhSXRlbSxcclxuICAgICAgZXZlbnQ6IGV2ZW50LmluZGV4XHJcbiAgICB9IGFzIFpDb21wb25lbnRPdXRwdXRFdmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkFkZE5vZGUoZXZlbnQ6IGFueSwgZGF0YUl0ZW06IGFueSwgZGF0YTogWkZpZWxkLCBncm91cDogWkdyb3VwKSB7XHJcbiAgICB0aGlzLmNsaWNrQWN0TmFtZSA9ICdBZGROb2RlJztcclxuICAgIC8vIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgLy8gaWYgKHRoaXMuZGF0YS5PbkFkZE5vZGUpIHtcclxuICAgIC8vICAgY29uc3QgZnVuYyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEuT25BZGROb2RlKTtcclxuICAgIC8vICAgaWYgKHR5cGVvZiBmdW5jID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAvLyAgICAgY29uc3QgY2FsbEZ1bmMgPSBmdW5jLmJpbmQodGhpcy5ncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgLy8gICAgIGNhbGxGdW5jKGRhdGFJdGVtLCBkYXRhLCBncm91cCwgZXZlbnQuaW5kZXgpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIG9uUmVtb3ZlTm9kZShldmVudDogYW55LCBkYXRhSXRlbTogYW55LCBkYXRhOiBaRmllbGQsIGdyb3VwOiBaR3JvdXApIHtcclxuICAgIHRoaXMuY2xpY2tBY3ROYW1lID0gJ1JlbW92ZU5vZGUnO1xyXG4gIH1cclxuXHJcbiAgb25FZGl0Tm9kZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLk9uRWRpdE5vZGUpIHtcclxuICAgICAgY29uc3QgZnVuYyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEuT25FZGl0Tm9kZSk7XHJcbiAgICAgIGlmICh0eXBlb2YgZnVuYyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGNvbnN0IGNhbGxGdW5jID0gZnVuYy5iaW5kKHRoaXMuZ3JvdXAuY3RybFNjb3BlKTtcclxuICAgICAgICBjYWxsRnVuYyhldmVudCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlTm9kZURyb3AoZXZlbnQ6IFRyZWVJdGVtRHJvcEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZih0aGlzLmRhdGEuRHJhZ2dhYmxlID09PSBmYWxzZSl7XHJcbiAgICAgIGV2ZW50LnNldFZhbGlkKGZhbHNlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNOb2RlRHJvcCA9IHRydWU7XHJcbiAgICBjb25zdCBkcm9wSGFuZGxlciA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbChcclxuICAgICAgdGhpcyxcclxuICAgICAgdGhpcy5kYXRhLk9uRHJvcFxyXG4gICAgKTtcclxuICAgIGlmICh0eXBlb2YgZHJvcEhhbmRsZXIgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBjb25zdCBjYWxsRnVuYyA9IGRyb3BIYW5kbGVyLmJpbmQodGhpcyk7XHJcbiAgICAgIGNhbGxGdW5jKGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBwcmV2ZW50IGRyb3AgaWYgYXR0ZW1wdGluZyB0byBhZGQgdG8gZmlsZVxyXG4gICAgLy8gaWYgKGlzRmlsZShldmVudC5kZXN0aW5hdGlvbkl0ZW0uaXRlbS5kYXRhSXRlbS50ZXh0KSAmJiBldmVudC5kcm9wUG9zaXRpb24gPT09IERyb3BQb3NpdGlvbi5PdmVyKSB7XHJcbiAgICAvLyAgICAgZXZlbnQuc2V0VmFsaWQoZmFsc2UpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlTm9kZURyYWdFbmQoZXZlbnQ6IFRyZWVJdGVtRHJhZ0V2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuaXNOb2RlRHJvcCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzTm9kZURyb3AgPSBmYWxzZTtcclxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ0l0ZW1zOiAnLCB0aGlzLml0ZW1zKTtcclxuICAgIGNvbnN0IHRhcmdldCA9IFtdO1xyXG4gICAgdGhpcy51cGRhdGVDaGFuZ2VUb0RhdGFTZXQoaXRlbXMsIHRhcmdldCk7XHJcbiAgICAvLyB0aGlzLmRhdGFTZXQgPSB0YXJnZXQ7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUodGhpcy5kYXRhLlZhbHVlLCB0YXJnZXQsIHRoaXMuZ3JvdXApO1xyXG4gICAgdGhpcy5ncm91cC5zdWJqZWN0Lm5leHQoe1xyXG4gICAgICB0eXBlOiBcInp0cmVlLW9uVHJlZU5vZGVEcmFnRW5kXCIsXHJcbiAgICAgIHRhcmdldDogdGhpcy5kYXRhLk9uQ2hhbmdlLFxyXG4gICAgICBkYXRhOiB0YXJnZXRcclxuICAgIH0gYXMgWkNvbXBvbmVudE91dHB1dEV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ2hhbmdlVG9EYXRhU2V0KHNvdXJjZTogQXJyYXk8YW55PiwgdGFyZ2V0OiBBcnJheTxhbnk+KSB7XHJcbiAgICBzb3VyY2UuZm9yRWFjaChkID0+IHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZC5WYWx1ZSkpIHtcclxuICAgICAgICBjb25zdCB0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkKSk7XHJcbiAgICAgICAgdC5WYWx1ZSA9IFtdO1xyXG4gICAgICAgIHRhcmdldC5wdXNoKHQpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlVG9EYXRhU2V0KGQuVmFsdWUsIHQuVmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHQgPSBPYmplY3QuYXNzaWduKHt9LCBkKTtcclxuICAgICAgICB0LlZhbHVlID0gdC5fRGF0YVZhbHVlO1xyXG4gICAgICAgIGRlbGV0ZSB0Ll9EYXRhVmFsdWU7XHJcbiAgICAgICAgdGFyZ2V0LnB1c2godCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiBzZWFyY2ggZmVhdHVyZSAtIGZpbHRlcmFibGU6IHRydWVcclxuICBwdWJsaWMgaGFuZGxlRmlsdGVyKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLlZhbHVlKTtcclxuICAgICAgaWYgKHRoaXMub3JpZ2luYWxJdGVtTGlzdCA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbEl0ZW1MaXN0ID0gdGhpcy5pdGVtcy5tYXAoaXRlbSA9PiBPYmplY3QuYXNzaWduKHt9LCBpdGVtKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLml0ZW1zID0gdGhpcy5vcmlnaW5hbEl0ZW1MaXN0Lm1hcChpdGVtID0+IE9iamVjdC5hc3NpZ24oe30sIGl0ZW0pKTtcclxuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuc2VhcmNoKHRoaXMuaXRlbXMsIHZhbHVlKTtcclxuICAgIGNvbnN0IGdyaWRWYWx1ZSA9IHRoaXMuZmlsdGVyUHJlZml4KHRoaXMuZGF0YS5WYWx1ZSk7XHJcbiAgICB0aGlzLmdyb3VwW2dyaWRWYWx1ZV0gPSB0YXJnZXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlclByZWZpeCh2YWx1ZU5hbWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlTmFtZS5zdGFydHNXaXRoKCd6RGF0YS4nKSkge1xyXG4gICAgICByZXR1cm4gdmFsdWVOYW1lLnNsaWNlKDYpO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlTmFtZS5zdGFydHNXaXRoKCdncm91cC56RGF0YS4nKSkge1xyXG4gICAgICByZXR1cm4gdmFsdWVOYW1lLnNsaWNlKDEyKTtcclxuICAgIH1cclxuICAgIGlmICh2YWx1ZU5hbWUuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlTmFtZS5zbGljZSg2KTtcclxuICAgIH1cclxuICAgIGlmICh2YWx1ZU5hbWUpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlTmFtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VhcmNoKGl0ZW1zOiBhbnlbXSwgdGVybTogc3RyaW5nKTogYW55W10ge1xyXG4gICAgcmV0dXJuIGl0ZW1zLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5zKGl0ZW0uTmFtZSwgdGVybSkpIHtcclxuICAgICAgICBhY2MucHVzaChpdGVtKTtcclxuICAgICAgfSBlbHNlIGlmIChpdGVtLlZhbHVlICYmIGl0ZW0uVmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IG5ld0l0ZW1zID0gdGhpcy5zZWFyY2goaXRlbS5WYWx1ZSwgdGVybSk7XHJcblxyXG4gICAgICAgIGlmIChuZXdJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB2YXIgZmlsdGVySXRlbSA9IGl0ZW07XHJcbiAgICAgICAgICBmaWx0ZXJJdGVtLlZhbHVlID0gbmV3SXRlbXM7XHJcbiAgICAgICAgICBhY2MucHVzaChmaWx0ZXJJdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIFtdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29udGFpbnModGV4dDogc3RyaW5nLCB0ZXJtOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigodGVybSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpKSA+PSAwO1xyXG4gIH1cclxuICAvLyAjZW5kcmVnaW9uIHNlYXJjaCBmZWF0dXJlIC0gZmlsdGVyYWJsZTogdHJ1ZVxyXG59XHJcbiJdfQ==
|