@sd-angular/core 1.1.48 → 1.1.51
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/bundles/sd-angular-core-autocomplete.umd.js +4 -0
- package/bundles/sd-angular-core-autocomplete.umd.js.map +1 -1
- package/bundles/sd-angular-core-autocomplete.umd.min.js +2 -2
- package/bundles/sd-angular-core-autocomplete.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-common.umd.js +7 -0
- package/bundles/sd-angular-core-common.umd.js.map +1 -1
- package/bundles/sd-angular-core-common.umd.min.js +1 -1
- package/bundles/sd-angular-core-common.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.js +8 -3
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-notify.umd.js +19 -8
- package/bundles/sd-angular-core-notify.umd.js.map +1 -1
- package/bundles/sd-angular-core-notify.umd.min.js +2 -2
- package/bundles/sd-angular-core-notify.umd.min.js.map +1 -1
- package/common/sd-angular-core-common.metadata.json +1 -1
- package/common/src/lib/models/sd-form-control.d.ts +4 -0
- package/esm2015/autocomplete/src/lib/autocomplete.component.js +5 -1
- package/esm2015/common/src/lib/models/sd-form-control.js +7 -1
- package/esm2015/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +2 -2
- package/esm2015/grid-material/src/lib/grid-material.component.js +2 -2
- package/esm2015/grid-material/src/lib/pipes/cell-view.pipe.js +7 -2
- package/esm2015/notify/src/lib/notify.service.js +20 -9
- package/fesm2015/sd-angular-core-autocomplete.js +4 -0
- package/fesm2015/sd-angular-core-autocomplete.js.map +1 -1
- package/fesm2015/sd-angular-core-common.js +6 -0
- package/fesm2015/sd-angular-core-common.js.map +1 -1
- package/fesm2015/sd-angular-core-grid-material.js +8 -3
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-notify.js +19 -8
- package/fesm2015/sd-angular-core-notify.js.map +1 -1
- package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.1.48.tgz → sd-angular-core-1.1.51.tgz} +0 -0
|
@@ -88,11 +88,21 @@ export class SdNotifyService {
|
|
|
88
88
|
}
|
|
89
89
|
};
|
|
90
90
|
timer(__classPrivateFieldGet(this, _delayDuration)).pipe(take(1)).subscribe(() => {
|
|
91
|
-
__classPrivateFieldGet(this,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
91
|
+
const messages = __classPrivateFieldGet(this, _cache)[__classPrivateFieldGet(this, _warningKey)].data.messages.union(null);
|
|
92
|
+
if (messages.length === 1) {
|
|
93
|
+
__classPrivateFieldGet(this, _notifyWarning).call(this, {
|
|
94
|
+
title: __classPrivateFieldGet(this, _cache)[__classPrivateFieldGet(this, _warningKey)].data.title,
|
|
95
|
+
message: messages[0],
|
|
96
|
+
delay
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
__classPrivateFieldGet(this, _notifyWarning).call(this, {
|
|
101
|
+
title: __classPrivateFieldGet(this, _cache)[__classPrivateFieldGet(this, _warningKey)].data.title,
|
|
102
|
+
message: messages,
|
|
103
|
+
delay
|
|
104
|
+
});
|
|
105
|
+
}
|
|
96
106
|
});
|
|
97
107
|
}
|
|
98
108
|
if (Array.isArray(message)) {
|
|
@@ -112,17 +122,18 @@ export class SdNotifyService {
|
|
|
112
122
|
}
|
|
113
123
|
};
|
|
114
124
|
timer(__classPrivateFieldGet(this, _delayDuration)).pipe(take(1)).subscribe(() => {
|
|
115
|
-
|
|
125
|
+
const messages = __classPrivateFieldGet(this, _cache)[__classPrivateFieldGet(this, _errorKey)].data.messages.union(null);
|
|
126
|
+
if (messages.length === 1) {
|
|
116
127
|
__classPrivateFieldGet(this, _notifyError).call(this, {
|
|
117
128
|
title: __classPrivateFieldGet(this, _cache)[__classPrivateFieldGet(this, _errorKey)].data.title,
|
|
118
|
-
message:
|
|
129
|
+
message: messages[0],
|
|
119
130
|
delay
|
|
120
131
|
});
|
|
121
132
|
}
|
|
122
133
|
else {
|
|
123
134
|
__classPrivateFieldGet(this, _notifyError).call(this, {
|
|
124
135
|
title: __classPrivateFieldGet(this, _cache)[__classPrivateFieldGet(this, _errorKey)].data.title,
|
|
125
|
-
message:
|
|
136
|
+
message: messages,
|
|
126
137
|
delay
|
|
127
138
|
});
|
|
128
139
|
}
|
|
@@ -314,4 +325,4 @@ SdNotifyService.ctorParameters = () => [
|
|
|
314
325
|
{ type: ToastrService },
|
|
315
326
|
{ type: SdTranslateService }
|
|
316
327
|
];
|
|
317
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL25vdGlmeS8iLCJzb3VyY2VzIjpbInNyYy9saWIvbm90aWZ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sRUFBZSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFnQixJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFXLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUc3QixNQUFNLE9BQU8sZUFBZTtJQWExQixZQUNVLE1BQWlCLEVBQ2pCLE1BQXFCLEVBQ3JCLGdCQUFvQztRQUZwQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQWY5Qyx5QkFBaUIsR0FBRyxFQUFDLENBQUMscUVBQXFFO1FBQzNGLHNCQUFjLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBQztRQUN4QixvQkFBWSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUM7UUFDdEIsaUJBUUksRUFBRSxFQUFDO1FBT1AsVUFBSyxHQUFHO1lBQ04sSUFBSSxFQUFFLENBQ0osT0FBZ0IsRUFDaEIsS0FBYyxFQUNkLFFB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QkFDbkMsUUFBUSxFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxRQUFRO3dCQUMxQixZQUFZLEVBQUUsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsWUFBWSxLQUFJLEVBQUU7cUJBQ3pDO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDckMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUMzQyxJQUFJLE1BQU0sRUFBRTt3QkFDVixJQUFJLE1BQU0sS0FBSyxRQUFRLEVBQUU7NEJBQ3ZCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzt5QkFDakI7NkJBQU0sSUFBSSxNQUFNLEtBQUssUUFBUSxFQUFFOzRCQUM5QixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7eUJBQ2hCOzZCQUFNOzRCQUNMLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzt5QkFDakI7cUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUVNLGNBQVMsR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFO1lBQzVDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUM7SUExVkUsQ0FBQzs7OztZQWxCTixVQUFVOzs7WUFSRixTQUFTO1lBRUksYUFBYTtZQUMxQixrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJAc2QtYW5ndWxhci9jb3JlL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBEaWFsb2dDb25maXJtQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9kaWFsb2ctY29uZmlybS9kaWFsb2ctY29uZmlybS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQWN0aXZlVG9hc3QsIFRvYXN0clNlcnZpY2UgfSBmcm9tIFwibmd4LXRvYXN0clwiO1xyXG5pbXBvcnQgeyBTZFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQHNkLWFuZ3VsYXIvY29yZS90cmFuc2xhdGVcIjtcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgdGltZXIgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2ROb3RpZnlTZXJ2aWNlIHtcclxuICAjZGVsYXlEdXJhdGlvbiA9IDUwMDsgLy8gQ8OhYyBlcnJvci93YXJuaW5nIG1lc3NhZ2Ugc+G6vSB04buxIMSR4buZbmcgZ+G7mXAgc2F1IGtob+G6o25nIHRo4budaSBnaWFuIHRyw6puXHJcbiAgI3dhcm5pbmdLZXkgPSB1dWlkLnY0KCk7XHJcbiAgI2Vycm9yS2V5ID0gdXVpZC52NCgpO1xyXG4gICNjYWNoZToge1xyXG4gICAgW2tleTogc3RyaW5nXToge1xyXG4gICAgICBjcmVhdGVkRGF0ZTogRGF0ZTtcclxuICAgICAgZGF0YT86IHtcclxuICAgICAgICB0aXRsZTogc3RyaW5nLFxyXG4gICAgICAgIG1lc3NhZ2VzOiBzdHJpbmdbXVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSA9IHt9O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBTZFRyYW5zbGF0ZVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBhbGVydCA9IHtcclxuICAgIGluZm86IChcclxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcclxuICAgICAgdGl0bGU/OiBzdHJpbmcsXHJcbiAgICAgIHllc1RpdGxlPzogc3RyaW5nLFxyXG4gICAgICBpY29uPzogc3RyaW5nXHJcbiAgICApID0+IHtcclxuICAgICAgdGhpcy5kaWFsb2cub3BlbihEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgICAgd2lkdGg6IFwiNDAwcHhcIixcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBpY29uOiBpY29uIHx8IFwiaW5mb1wiLFxyXG4gICAgICAgICAgdGl0bGU6IHRpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiTm90aWNlXCIpLFxyXG4gICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSB8fCBcIkRvbmUhXCIsXHJcbiAgICAgICAgICB5ZXNUaXRsZTogeWVzVGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJPa1wiKSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBzdWNjZXNzOiAoXHJcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXHJcbiAgICAgIHRpdGxlPzogc3RyaW5nLFxyXG4gICAgICB5ZXNUaXRsZT86IHN0cmluZyxcclxuICAgICAgaWNvbj86IHN0cmluZ1xyXG4gICAgKSA9PiB7XHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICAgIHdpZHRoOiBcIjQwMHB4XCIsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgaWNvbjogaWNvbiB8fCBcImRvbmVcIixcclxuICAgICAgICAgIHRpdGxlOiB0aXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIlN1Y2Nlc3NcIiksXHJcbiAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8IFwiRG9uZSFcIixcclxuICAgICAgICAgIHllc1RpdGxlOiB5ZXNUaXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIk9rXCIpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIHdhcm5pbmc6IChcclxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcclxuICAgICAgdGl0bGU/OiBzdHJpbmcsXHJcbiAgICAgIHllc1RpdGxlPzogc3RyaW5nLFxyXG4gICAgICBpY29uPzogc3RyaW5nXHJcbiAgICApID0+IHtcclxuICAgICAgdGhpcy5kaWFsb2cub3BlbihEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgICAgd2lkdGg6IFwiNDAwcHhcIixcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBpY29uOiBpY29uIHx8IFwid2FybmluZ1wiLFxyXG4gICAgICAgICAgdGl0bGU6IHRpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiV2FybmluZ1wiKSxcclxuICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgXCJTb21ldGhpbmcgd2VudCB3cm9uZyFcIixcclxuICAgICAgICAgIHllc1RpdGxlOiB5ZXNUaXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIk9rXCIpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIGVycm9yOiAoXHJcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXHJcbiAgICAgIHRpdGxlPzogc3RyaW5nLFxyXG4gICAgICB5ZXNUaXRsZT86IHN0cmluZyxcclxuICAgICAgaWNvbj86IHN0cmluZ1xyXG4gICAgKSA9PiB7XHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICAgIHdpZHRoOiBcIjQwMHB4XCIsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgaWNvbjogaWNvbiB8fCBcImVycm9yXCIsXHJcbiAgICAgICAgICB0aXRsZTogdGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJFcnJvclwiKSxcclxuICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgXCJTb21ldGhpbmcgd2VudCB3cm9uZyFcIixcclxuICAgICAgICAgIHllc1RpdGxlOiB5ZXNUaXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIk9rXCIpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBub3RpZnkgPSB7XHJcbiAgICBzdWNjZXNzOiAobWVzc2FnZT86IHN0cmluZywgZGVsYXk/OiBudW1iZXIsIHRpdGxlPzogc3RyaW5nKSA9PiB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgIC8vIGNvbnN0IHN0eWxlID0gYGJvcmRlci1yYWRpdXM6IDVweDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAxMnB4OyB6LWluZGV4OiA5OTk5OTsgdG9wOiA1cHg7IHJpZ2h0OiA1cHg7IGRpc3BsYXk6IG5vbmU7IHBvc2l0aW9uOiBmaXhlZDtjb2xvcjogIzRGOEExMDsgYmFja2dyb3VuZC1jb2xvcjogI0RGRjJCRmA7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgIC8vIGNvbnN0IGh0bWwgPSBgPGRpdiBpZD1cIiR7dGhpcy5ub3RpZnlJZH1cIiBzdHlsZT1cIiR7c3R5bGV9XCI+PGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT4gJHttZXNzYWdlIHx8IHRoaXMudHJhbnNsYXRlKCdTdWNjZXNzJyl9PC9kaXY+YDtcclxuICAgICAgLy8gdGhpcy5zaG93Tm90aWZ5KGh0bWwsIGRlbGF5KTtcclxuICAgICAgY29uc3QgY29udGVudCA9IG1lc3NhZ2UgfHwgdGhpcy50cmFuc2xhdGUoXCJTdWNjZXNzXCIpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKGNvbnRlbnQsIHRpdGxlLCB7XHJcbiAgICAgICAgZW5hYmxlSHRtbDogdHJ1ZSxcclxuICAgICAgICB0aW1lT3V0OiBkZWxheSB8fCAzMDAwLFxyXG4gICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICB3YXJuaW5nOiAobWVzc2FnZT86IHN0cmluZyB8IHN0cmluZ1tdLCBkZWxheT86IG51bWJlciwgdGl0bGU/OiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLiNjYWNoZVt0aGlzLiN3YXJuaW5nS2V5XSB8fCBEYXRlLmFkZE1pbGlzZWNvbmRzKHRoaXMuI2NhY2hlW3RoaXMuI3dhcm5pbmdLZXldLmNyZWF0ZWREYXRlLCB0aGlzLiNkZWxheUR1cmF0aW9uKSA8IG5ldyBEYXRlKCkpIHtcclxuICAgICAgICB0aGlzLiNjYWNoZVt0aGlzLiN3YXJuaW5nS2V5XSA9IHtcclxuICAgICAgICAgIGNyZWF0ZWREYXRlOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgIG1lc3NhZ2VzOiBbXSxcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHRpbWVyKHRoaXMuI2RlbGF5RHVyYXRpb24pLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuI25vdGlmeVdhcm5pbmcoe1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy4jY2FjaGVbdGhpcy4jd2FybmluZ0tleV0uZGF0YS50aXRsZSxcclxuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy4jY2FjaGVbdGhpcy4jd2FybmluZ0tleV0uZGF0YS5tZXNzYWdlcyxcclxuICAgICAgICAgICAgZGVsYXk6IGRlbGF5XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG1lc3NhZ2UpKSB7XHJcbiAgICAgICAgdGhpcy4jY2FjaGVbdGhpcy4jd2FybmluZ0tleV0uZGF0YS5tZXNzYWdlcyA9IFsuLi50aGlzLiNjYWNoZVt0aGlzLiN3YXJuaW5nS2V5XS5kYXRhLm1lc3NhZ2VzLCAuLi5tZXNzYWdlXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLiNjYWNoZVt0aGlzLiN3YXJuaW5nS2V5XS5kYXRhLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBlcnJvcjogKG1lc3NhZ2U/OiBzdHJpbmcgfCBzdHJpbmdbXSwgZGVsYXk/OiBudW1iZXIsIHRpdGxlPzogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy4jY2FjaGVbdGhpcy4jZXJyb3JLZXldIHx8IERhdGUuYWRkTWlsaXNlY29uZHModGhpcy4jY2FjaGVbdGhpcy4jZXJyb3JLZXldLmNyZWF0ZWREYXRlLCB0aGlzLiNkZWxheUR1cmF0aW9uKSA8IG5ldyBEYXRlKCkpIHtcclxuICAgICAgICB0aGlzLiNjYWNoZVt0aGlzLiNlcnJvcktleV0gPSB7XHJcbiAgICAgICAgICBjcmVhdGVkRGF0ZTogbmV3IERhdGUoKSxcclxuICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgdGl0bGUsXHJcbiAgICAgICAgICAgIG1lc3NhZ2VzOiBbXSxcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHRpbWVyKHRoaXMuI2RlbGF5RHVyYXRpb24pLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLiNjYWNoZVt0aGlzLiNlcnJvcktleV0uZGF0YS5tZXNzYWdlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy4jbm90aWZ5RXJyb3Ioe1xyXG4gICAgICAgICAgICAgIHRpdGxlOiB0aGlzLiNjYWNoZVt0aGlzLiNlcnJvcktleV0uZGF0YS50aXRsZSxcclxuICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLiNjYWNoZVt0aGlzLiNlcnJvcktleV0uZGF0YS5tZXNzYWdlc1swXSxcclxuICAgICAgICAgICAgICBkZWxheVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuI25vdGlmeUVycm9yKHtcclxuICAgICAgICAgICAgICB0aXRsZTogdGhpcy4jY2FjaGVbdGhpcy4jZXJyb3JLZXldLmRhdGEudGl0bGUsXHJcbiAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy4jY2FjaGVbdGhpcy4jZXJyb3JLZXldLmRhdGEubWVzc2FnZXMsXHJcbiAgICAgICAgICAgICAgZGVsYXlcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWVzc2FnZSkpIHtcclxuICAgICAgICB0aGlzLiNjYWNoZVt0aGlzLiNlcnJvcktleV0uZGF0YS5tZXNzYWdlcyA9IFsuLi50aGlzLiNjYWNoZVt0aGlzLiNlcnJvcktleV0uZGF0YS5tZXNzYWdlcywgLi4ubWVzc2FnZV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy4jY2FjaGVbdGhpcy4jZXJyb3JLZXldLmRhdGEubWVzc2FnZXMucHVzaChtZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICAjbm90aWZ5V2FybmluZyA9IChhcmdzOiB7XHJcbiAgICBtZXNzYWdlPzogc3RyaW5nIHwgc3RyaW5nW10sXHJcbiAgICBkZWxheT86IG51bWJlcixcclxuICAgIHRpdGxlPzogc3RyaW5nXHJcbiAgfSkgPT4ge1xyXG4gICAgY29uc3QgeyBtZXNzYWdlLCBkZWxheSwgdGl0bGUgfSA9IGFyZ3M7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtZXNzYWdlKSkge1xyXG4gICAgICB0aGlzLiNidWlsZFRvYXN0TXVsdGlNZXNzc2FnZSgnd2FybmluZycsIG1lc3NhZ2UsIGRlbGF5LCB0aXRsZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgY29udGVudCA9IG1lc3NhZ2UgfHwgdGhpcy50cmFuc2xhdGUoJ1dhcm5pbmcnKTtcclxuICAgICAgdGhpcy50b2FzdHIud2FybmluZyhjb250ZW50LCB0aXRsZSwge1xyXG4gICAgICAgIGVuYWJsZUh0bWw6IHRydWUsXHJcbiAgICAgICAgdGltZU91dDogZGVsYXkgfHwgMzAwMCxcclxuICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAjbm90aWZ5RXJyb3IgPSAoYXJnczoge1xyXG4gICAgbWVzc2FnZT86IHN0cmluZyB8IHN0cmluZ1tdLFxyXG4gICAgZGVsYXk/OiBudW1iZXIsXHJcbiAgICB0aXRsZT86IHN0cmluZ1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IHsgbWVzc2FnZSwgZGVsYXksIHRpdGxlIH0gPSBhcmdzO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobWVzc2FnZSkpIHtcclxuICAgICAgdGhpcy4jYnVpbGRUb2FzdE11bHRpTWVzc3NhZ2UoJ2Vycm9yJywgbWVzc2FnZSwgZGVsYXksIHRpdGxlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBjb250ZW50ID0gbWVzc2FnZSB8fCB0aGlzLnRyYW5zbGF0ZSgnRXJyb3InKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoY29udGVudCwgdGl0bGUsIHtcclxuICAgICAgICBlbmFibGVIdG1sOiB0cnVlLFxyXG4gICAgICAgIHRpbWVPdXQ6IGRlbGF5IHx8IDMwMDAsXHJcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI2J1aWxkVG9hc3RNdWx0aU1lc3NzYWdlID0gKHR5cGU6ICd3YXJuaW5nJyB8ICdlcnJvcicsIG1lc3NhZ2VzOiBzdHJpbmdbXSwgZGVsYXk/OiBudW1iZXIsIHRpdGxlPzogc3RyaW5nKSA9PiB7XHJcbiAgICAvKiogc+G7kSBsxrDhu6NuZyBpdGVtIGhp4buDbiB0aOG7iyBt4bq3YyDEkeG7i25oICovXHJcbiAgICBjb25zdCBzaG93TnVtID0gMjtcclxuICAgIGNvbnN0IGlkID0gYHNkLW5vdGlmeS1ja2ItJHt1dWlkLnY0KCl9YDtcclxuICAgIGNvbnN0IG1lc3NhZ2VMZW5ndGggPSBtZXNzYWdlcy5sZW5ndGg7XHJcbiAgICBjb25zdCBtZXNzYWdlUmVzdHMgPSBtZXNzYWdlcy5zcGxpY2Uoc2hvd051bSk7XHJcbiAgICBjb25zdCBtZXNzYWdlQ29udGFpbmVyID0gYDx1bCBjbGFzcz1cInNkLW5vdGlmeV9fbGlzdFwiPnswfXsxfTwvdWw+YDtcclxuICAgIGNvbnN0IG1lc3NhZ2VUZW1wID0gYDxsaSBjbGFzcz1cInNkLW5vdGlmeV9faXRlbVwiPi0gezB9PC9saT5gO1xyXG4gICAgbGV0IGNvbnRlbnRSZXN0ID0gJyc7XHJcbiAgICBpZiAobWVzc2FnZVJlc3RzPy5sZW5ndGgpIHtcclxuICAgICAgY29udGVudFJlc3QgPSBgPGlucHV0IGlkPVwiJHtpZH1cIiBjbGFzcz1cImNkay12aXN1YWxseS1oaWRkZW4gc2Qtbm90aWZ5X19jaGVja2JveFwiIHR5cGU9XCJjaGVja2JveFwiIC8+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cInNkLW5vdGlmeV9fdGV4dCBzZC1ub3RpZnlfX3RleHQtLXNob3dcIiBmb3I9XCIke2lkfVwiPiR7dGhpcy50cmFuc2xhdGUoJ1Nob3cgbW9yZScpfTwvbGFiZWw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzZC1ub3RpZnlfX2l0ZW0tLXJlc3RcIj5cclxuICAgICAgICAke21lc3NhZ2VSZXN0cy5tYXAobSA9PiBTdHJpbmcuZm9ybWF0KG1lc3NhZ2VUZW1wLCBtKSkuam9pbignJyl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJzZC1ub3RpZnlfX3RleHQgc2Qtbm90aWZ5X190ZXh0LS1sZXNzXCIgZm9yPVwiJHtpZH1cIj4ke3RoaXMudHJhbnNsYXRlKCdTaG93IGxlc3MnKX08L2xhYmVsPmA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250ZW50ID0gU3RyaW5nLmZvcm1hdChtZXNzYWdlQ29udGFpbmVyLCBtZXNzYWdlcy5tYXAobSA9PiBTdHJpbmcuZm9ybWF0KG1lc3NhZ2VUZW1wLCBtKSkuam9pbignJyksIGNvbnRlbnRSZXN0KTtcclxuICAgIGxldCB0b2FzdDogQWN0aXZlVG9hc3Q8YW55PjtcclxuICAgIC8vIGtoaSB0cnV54buBbiBtZXNzYWdlIGh0bWwgc+G6vSBi4buLIHNhbml0aXplIG7Dqm4gcGjhuqNpIHRydXnhu4FuIGlubmVySFRNTCBraGkgdG9hc3QgaGnhu4duIGzDqm5cclxuICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3NjdHRjcGVyL25neC10b2FzdHIvYmxvYi92MTIuMS4wL3NyYy9saWIvdG9hc3RyL3RvYXN0ci5zZXJ2aWNlLnRzI0wyNzFcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdlcnJvcic6XHJcbiAgICAgICAgdG9hc3QgPSB0aGlzLnRvYXN0ci5lcnJvcihjb250ZW50LCBgJHt0aXRsZSB8fCB0aGlzLnRyYW5zbGF0ZSgnRXJyb3InKX0gKCR7bWVzc2FnZUxlbmd0aH0pYCwge1xyXG4gICAgICAgICAgZW5hYmxlSHRtbDogdHJ1ZSxcclxuICAgICAgICAgIHRpbWVPdXQ6IGRlbGF5IHx8IDMwMDAsXHJcbiAgICAgICAgICBtZXNzYWdlQ2xhc3M6IGB0b2FzdC1tZXNzYWdlIHRvYXN0LW1lc3NhZ2UtJHtpZH1gLFxyXG4gICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAgICAgICB0YXBUb0Rpc21pc3M6IGZhbHNlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxyXG4gICAgICAgIHRvYXN0ID0gdGhpcy50b2FzdHIud2FybmluZyhjb250ZW50LCBgJHt0aXRsZSB8fCB0aGlzLnRyYW5zbGF0ZSgnV2FybmluZycpfSAoJHttZXNzYWdlTGVuZ3RofSlgLCB7XHJcbiAgICAgICAgICBlbmFibGVIdG1sOiB0cnVlLFxyXG4gICAgICAgICAgdGltZU91dDogZGVsYXkgfHwgMzAwMCxcclxuICAgICAgICAgIG1lc3NhZ2VDbGFzczogYHRvYXN0LW1lc3NhZ2UgdG9hc3QtbWVzc2FnZS0ke2lkfWAsXHJcbiAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIHRhcFRvRGlzbWlzczogZmFsc2VcclxuICAgICAgICB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodG9hc3QpIHtcclxuICAgICAgdG9hc3Qub25TaG93blxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgdGFrZVVudGlsKHRvYXN0Lm9uSGlkZGVuKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VFbGU6IEhUTUxEaXZFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLnRvYXN0LW1lc3NhZ2UtJHtpZH1gKTtcclxuICAgICAgICAgIG1lc3NhZ2VFbGUuaW5uZXJIVE1MID0gY29udGVudDtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlID0ge1xyXG4gICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICBpZiAodHlwZW9mIGVyciA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIHRoaXMubm90aWZ5Lndhcm5pbmcoZXJyKTtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXJyID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgPVxyXG4gICAgICAgICAgZXJyPy5lcnJvciB8fFxyXG4gICAgICAgICAgZXJyPy5tZXNzYWdlIHx8XHJcbiAgICAgICAgICBlcnI/LkV4Y2VwdGlvbk1lc3NhZ2UgfHxcclxuICAgICAgICAgIGVycj8uTWVzc2FnZSB8fFxyXG4gICAgICAgICAgXCJVbmtub3duIGVycm9yXCI7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBlcnIuanNvbiA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBlcnIgPSBlcnIuanNvbigpO1xyXG4gICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICBtZXNzYWdlID1cclxuICAgICAgICAgICAgICBlcnI/LmVycm9yIHx8XHJcbiAgICAgICAgICAgICAgZXJyPy5tZXNzYWdlIHx8XHJcbiAgICAgICAgICAgICAgZXJyPy5FeGNlcHRpb25NZXNzYWdlIHx8XHJcbiAgICAgICAgICAgICAgZXJyPy5NZXNzYWdlIHx8XHJcbiAgICAgICAgICAgICAgXCJVbmtub3duIGVycm9yXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm90aWZ5Lndhcm5pbmcobWVzc2FnZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnkud2FybmluZyhcIlVua25vd24gZXJyb3JcIik7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgY29uZmlybSA9IChcclxuICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgIG9wdGlvbjoge1xyXG4gICAgICB0aXRsZT86IHN0cmluZztcclxuICAgICAgeWVzVGl0bGU/OiBzdHJpbmc7XHJcbiAgICAgIG5vVGl0bGU/OiBzdHJpbmc7XHJcbiAgICAgIHllc0J1dHRvbkNvbG9yPzogc3RyaW5nO1xyXG4gICAgICBub0J1dHRvbkNvbG9yPzogc3RyaW5nO1xyXG4gICAgfSA9IHt9XHJcbiAgKSA9PiB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6IFwiNDAwcHhcIixcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHRpdGxlOiBvcHRpb24/LnRpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiQ29uZmlybVwiKSxcclxuICAgICAgICBtZXNzYWdlLFxyXG4gICAgICAgIHllc1RpdGxlOiBvcHRpb24/Lnllc1RpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiWWVzXCIpLFxyXG4gICAgICAgIG5vVGl0bGU6IG9wdGlvbj8ubm9UaXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIk5vXCIpLFxyXG4gICAgICAgIG5vQnV0dG9uQ29sb3I6IG9wdGlvbj8ubm9CdXR0b25Db2xvciB8fCBcInNlY29uZGFyeVwiLFxyXG4gICAgICAgIHllc0J1dHRvbkNvbG9yOiBvcHRpb24/Lnllc0J1dHRvbkNvbG9yIHx8IFwicHJpbWFyeVwiLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IFwiQUNDRVBUXCIpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09PSBcIkNBTkNFTFwiKSB7XHJcbiAgICAgICAgICAgIHJlamVjdChyZXN1bHQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgY29uZmlybURlbGV0ZSA9ICgpID0+IHRoaXMuY29uZmlybSh0aGlzLnRyYW5zbGF0ZShcIkRlbGV0ZSByZWNvcmQocylcIikpO1xyXG5cclxuICBjb25maXJtQXBwcm92ZSA9ICgpID0+IHRoaXMuY29uZmlybSh0aGlzLnRyYW5zbGF0ZShcIkFwcHJvdmUgcmVjb3JkKHMpXCIpKTtcclxuXHJcbiAgY29uZmlybVdpdGhJbnB1dCA9IChcclxuICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICBvcHRpb246IHtcclxuICAgICAgbWVzc2FnZT86IHN0cmluZztcclxuICAgICAgeWVzVGl0bGU/OiBzdHJpbmc7XHJcbiAgICAgIG5vVGl0bGU/OiBzdHJpbmc7XHJcbiAgICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcclxuICAgICAgbWF4bGVuZ3RoPzogbnVtYmVyO1xyXG4gICAgICB5ZXNCdXR0b25Db2xvcj86IHN0cmluZztcclxuICAgICAgbm9CdXR0b25Db2xvcj86IHN0cmluZztcclxuICAgICAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xyXG4gICAgfSA9IHt9XHJcbiAgKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogXCI0MDBweFwiLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdGl0bGU6IHRpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiQ29uZmlybVwiKSxcclxuICAgICAgICBtZXNzYWdlOiBvcHRpb24/Lm1lc3NhZ2UsXHJcbiAgICAgICAgeWVzVGl0bGU6IG9wdGlvbj8ueWVzVGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJZZXNcIiksXHJcbiAgICAgICAgbm9UaXRsZTogb3B0aW9uPy5ub1RpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiTm9cIiksXHJcbiAgICAgICAgbm9CdXR0b25Db2xvcjogb3B0aW9uPy5ub0J1dHRvbkNvbG9yIHx8IFwic2Vjb25kYXJ5XCIsXHJcbiAgICAgICAgeWVzQnV0dG9uQ29sb3I6IG9wdGlvbj8ueWVzQnV0dG9uQ29sb3IgfHwgXCJwcmltYXJ5XCIsXHJcbiAgICAgICAgaW5wdXQ6IHtcclxuICAgICAgICAgIG1heGxlbmd0aDogb3B0aW9uPy5tYXhsZW5ndGggfHwgMjU1LFxyXG4gICAgICAgICAgcmVxdWlyZWQ6IG9wdGlvbj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IG9wdGlvbj8uZGVmYXVsdFZhbHVlIHx8ICcnXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBcIkFDQ0VQVFwiKSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09PSBcIkNBTkNFTFwiKSB7XHJcbiAgICAgICAgICAgIHJlamVjdChyZXN1bHQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHRyYW5zbGF0ZSA9ICh2YWx1ZTogc3RyaW5nKTogc3RyaW5nID0+IHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKHZhbHVlKTtcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL25vdGlmeS8iLCJzb3VyY2VzIjpbInNyYy9saWIvbm90aWZ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sRUFBZSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFnQixJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFXLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUc3QixNQUFNLE9BQU8sZUFBZTtJQWExQixZQUNVLE1BQWlCLEVBQ2pCLE1BQXFCLEVBQ3JCLGdCQUFvQztRQUZwQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQWY5Qyx5QkFBaUIsR0FBRyxFQUFDLENBQUMscUVBQXFFO1FBQzNGLHNCQUFjLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBQztRQUN4QixvQkFBWSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUM7UUFDdEIsaUJBUUksRUFBRSxFQUFDO1FBT1AsVUFBSyxHQUFHO1lBQ04sSUFBSSxFQUFFLENBQ0osT0FBZ0IsRUFDaEIsS0FBYyxFQUNkLFFB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Q0FBQzs7OztZQWxCTixVQUFVOzs7WUFSRixTQUFTO1lBRUksYUFBYTtZQUMxQixrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJAc2QtYW5ndWxhci9jb3JlL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBEaWFsb2dDb25maXJtQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9kaWFsb2ctY29uZmlybS9kaWFsb2ctY29uZmlybS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQWN0aXZlVG9hc3QsIFRvYXN0clNlcnZpY2UgfSBmcm9tIFwibmd4LXRvYXN0clwiO1xyXG5pbXBvcnQgeyBTZFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQHNkLWFuZ3VsYXIvY29yZS90cmFuc2xhdGVcIjtcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgdGltZXIgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2ROb3RpZnlTZXJ2aWNlIHtcclxuICAjZGVsYXlEdXJhdGlvbiA9IDUwMDsgLy8gQ8OhYyBlcnJvci93YXJuaW5nIG1lc3NhZ2Ugc+G6vSB04buxIMSR4buZbmcgZ+G7mXAgc2F1IGtob+G6o25nIHRo4budaSBnaWFuIHRyw6puXHJcbiAgI3dhcm5pbmdLZXkgPSB1dWlkLnY0KCk7XHJcbiAgI2Vycm9yS2V5ID0gdXVpZC52NCgpO1xyXG4gICNjYWNoZToge1xyXG4gICAgW2tleTogc3RyaW5nXToge1xyXG4gICAgICBjcmVhdGVkRGF0ZTogRGF0ZTtcclxuICAgICAgZGF0YT86IHtcclxuICAgICAgICB0aXRsZTogc3RyaW5nLFxyXG4gICAgICAgIG1lc3NhZ2VzOiBzdHJpbmdbXVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSA9IHt9O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBTZFRyYW5zbGF0ZVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBhbGVydCA9IHtcclxuICAgIGluZm86IChcclxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcclxuICAgICAgdGl0bGU/OiBzdHJpbmcsXHJcbiAgICAgIHllc1RpdGxlPzogc3RyaW5nLFxyXG4gICAgICBpY29uPzogc3RyaW5nXHJcbiAgICApID0+IHtcclxuICAgICAgdGhpcy5kaWFsb2cub3BlbihEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgICAgd2lkdGg6IFwiNDAwcHhcIixcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBpY29uOiBpY29uIHx8IFwiaW5mb1wiLFxyXG4gICAgICAgICAgdGl0bGU6IHRpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiTm90aWNlXCIpLFxyXG4gICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSB8fCBcIkRvbmUhXCIsXHJcbiAgICAgICAgICB5ZXNUaXRsZTogeWVzVGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJPa1wiKSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBzdWNjZXNzOiAoXHJcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXHJcbiAgICAgIHRpdGxlPzogc3RyaW5nLFxyXG4gICAgICB5ZXNUaXRsZT86IHN0cmluZyxcclxuICAgICAgaWNvbj86IHN0cmluZ1xyXG4gICAgKSA9PiB7XHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICAgIHdpZHRoOiBcIjQwMHB4XCIsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgaWNvbjogaWNvbiB8fCBcImRvbmVcIixcclxuICAgICAgICAgIHRpdGxlOiB0aXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIlN1Y2Nlc3NcIiksXHJcbiAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8IFwiRG9uZSFcIixcclxuICAgICAgICAgIHllc1RpdGxlOiB5ZXNUaXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIk9rXCIpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIHdhcm5pbmc6IChcclxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcclxuICAgICAgdGl0bGU/OiBzdHJpbmcsXHJcbiAgICAgIHllc1RpdGxlPzogc3RyaW5nLFxyXG4gICAgICBpY29uPzogc3RyaW5nXHJcbiAgICApID0+IHtcclxuICAgICAgdGhpcy5kaWFsb2cub3BlbihEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgICAgd2lkdGg6IFwiNDAwcHhcIixcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBpY29uOiBpY29uIHx8IFwid2FybmluZ1wiLFxyXG4gICAgICAgICAgdGl0bGU6IHRpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiV2FybmluZ1wiKSxcclxuICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgXCJTb21ldGhpbmcgd2VudCB3cm9uZyFcIixcclxuICAgICAgICAgIHllc1RpdGxlOiB5ZXNUaXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIk9rXCIpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIGVycm9yOiAoXHJcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXHJcbiAgICAgIHRpdGxlPzogc3RyaW5nLFxyXG4gICAgICB5ZXNUaXRsZT86IHN0cmluZyxcclxuICAgICAgaWNvbj86IHN0cmluZ1xyXG4gICAgKSA9PiB7XHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICAgIHdpZHRoOiBcIjQwMHB4XCIsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgaWNvbjogaWNvbiB8fCBcImVycm9yXCIsXHJcbiAgICAgICAgICB0aXRsZTogdGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJFcnJvclwiKSxcclxuICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgXCJTb21ldGhpbmcgd2VudCB3cm9uZyFcIixcclxuICAgICAgICAgIHllc1RpdGxlOiB5ZXNUaXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIk9rXCIpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBub3RpZnkgPSB7XHJcbiAgICBzdWNjZXNzOiAobWVzc2FnZT86IHN0cmluZywgZGVsYXk/OiBudW1iZXIsIHRpdGxlPzogc3RyaW5nKSA9PiB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgIC8vIGNvbnN0IHN0eWxlID0gYGJvcmRlci1yYWRpdXM6IDVweDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAxMnB4OyB6LWluZGV4OiA5OTk5OTsgdG9wOiA1cHg7IHJpZ2h0OiA1cHg7IGRpc3BsYXk6IG5vbmU7IHBvc2l0aW9uOiBmaXhlZDtjb2xvcjogIzRGOEExMDsgYmFja2dyb3VuZC1jb2xvcjogI0RGRjJCRmA7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgIC8vIGNvbnN0IGh0bWwgPSBgPGRpdiBpZD1cIiR7dGhpcy5ub3RpZnlJZH1cIiBzdHlsZT1cIiR7c3R5bGV9XCI+PGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT4gJHttZXNzYWdlIHx8IHRoaXMudHJhbnNsYXRlKCdTdWNjZXNzJyl9PC9kaXY+YDtcclxuICAgICAgLy8gdGhpcy5zaG93Tm90aWZ5KGh0bWwsIGRlbGF5KTtcclxuICAgICAgY29uc3QgY29udGVudCA9IG1lc3NhZ2UgfHwgdGhpcy50cmFuc2xhdGUoXCJTdWNjZXNzXCIpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKGNvbnRlbnQsIHRpdGxlLCB7XHJcbiAgICAgICAgZW5hYmxlSHRtbDogdHJ1ZSxcclxuICAgICAgICB0aW1lT3V0OiBkZWxheSB8fCAzMDAwLFxyXG4gICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICB3YXJuaW5nOiAobWVzc2FnZT86IHN0cmluZyB8IHN0cmluZ1tdLCBkZWxheT86IG51bWJlciwgdGl0bGU/OiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLiNjYWNoZVt0aGlzLiN3YXJuaW5nS2V5XSB8fCBEYXRlLmFkZE1pbGlzZWNvbmRzKHRoaXMuI2NhY2hlW3RoaXMuI3dhcm5pbmdLZXldLmNyZWF0ZWREYXRlLCB0aGlzLiNkZWxheUR1cmF0aW9uKSA8IG5ldyBEYXRlKCkpIHtcclxuICAgICAgICB0aGlzLiNjYWNoZVt0aGlzLiN3YXJuaW5nS2V5XSA9IHtcclxuICAgICAgICAgIGNyZWF0ZWREYXRlOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgIG1lc3NhZ2VzOiBbXSxcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHRpbWVyKHRoaXMuI2RlbGF5RHVyYXRpb24pLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gdGhpcy4jY2FjaGVbdGhpcy4jd2FybmluZ0tleV0uZGF0YS5tZXNzYWdlcy51bmlvbihudWxsKTtcclxuICAgICAgICAgIGlmIChtZXNzYWdlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy4jbm90aWZ5V2FybmluZyh7XHJcbiAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuI2NhY2hlW3RoaXMuI3dhcm5pbmdLZXldLmRhdGEudGl0bGUsXHJcbiAgICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZXNbMF0sXHJcbiAgICAgICAgICAgICAgZGVsYXlcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLiNub3RpZnlXYXJuaW5nKHtcclxuICAgICAgICAgICAgICB0aXRsZTogdGhpcy4jY2FjaGVbdGhpcy4jd2FybmluZ0tleV0uZGF0YS50aXRsZSxcclxuICAgICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlcyxcclxuICAgICAgICAgICAgICBkZWxheVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShtZXNzYWdlKSkge1xyXG4gICAgICAgIHRoaXMuI2NhY2hlW3RoaXMuI3dhcm5pbmdLZXldLmRhdGEubWVzc2FnZXMgPSBbLi4udGhpcy4jY2FjaGVbdGhpcy4jd2FybmluZ0tleV0uZGF0YS5tZXNzYWdlcywgLi4ubWVzc2FnZV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy4jY2FjaGVbdGhpcy4jd2FybmluZ0tleV0uZGF0YS5tZXNzYWdlcy5wdXNoKG1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6IChtZXNzYWdlPzogc3RyaW5nIHwgc3RyaW5nW10sIGRlbGF5PzogbnVtYmVyLCB0aXRsZT86IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuI2NhY2hlW3RoaXMuI2Vycm9yS2V5XSB8fCBEYXRlLmFkZE1pbGlzZWNvbmRzKHRoaXMuI2NhY2hlW3RoaXMuI2Vycm9yS2V5XS5jcmVhdGVkRGF0ZSwgdGhpcy4jZGVsYXlEdXJhdGlvbikgPCBuZXcgRGF0ZSgpKSB7XHJcbiAgICAgICAgdGhpcy4jY2FjaGVbdGhpcy4jZXJyb3JLZXldID0ge1xyXG4gICAgICAgICAgY3JlYXRlZERhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIHRpdGxlLFxyXG4gICAgICAgICAgICBtZXNzYWdlczogW10sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aW1lcih0aGlzLiNkZWxheUR1cmF0aW9uKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBtZXNzYWdlcyA9IHRoaXMuI2NhY2hlW3RoaXMuI2Vycm9yS2V5XS5kYXRhLm1lc3NhZ2VzLnVuaW9uKG51bGwpO1xyXG4gICAgICAgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLiNub3RpZnlFcnJvcih7XHJcbiAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuI2NhY2hlW3RoaXMuI2Vycm9yS2V5XS5kYXRhLnRpdGxlLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VzWzBdLFxyXG4gICAgICAgICAgICAgIGRlbGF5XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy4jbm90aWZ5RXJyb3Ioe1xyXG4gICAgICAgICAgICAgIHRpdGxlOiB0aGlzLiNjYWNoZVt0aGlzLiNlcnJvcktleV0uZGF0YS50aXRsZSxcclxuICAgICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlcyxcclxuICAgICAgICAgICAgICBkZWxheVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShtZXNzYWdlKSkge1xyXG4gICAgICAgIHRoaXMuI2NhY2hlW3RoaXMuI2Vycm9yS2V5XS5kYXRhLm1lc3NhZ2VzID0gWy4uLnRoaXMuI2NhY2hlW3RoaXMuI2Vycm9yS2V5XS5kYXRhLm1lc3NhZ2VzLCAuLi5tZXNzYWdlXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLiNjYWNoZVt0aGlzLiNlcnJvcktleV0uZGF0YS5tZXNzYWdlcy5wdXNoKG1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gICNub3RpZnlXYXJuaW5nID0gKGFyZ3M6IHtcclxuICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCBzdHJpbmdbXSxcclxuICAgIGRlbGF5PzogbnVtYmVyLFxyXG4gICAgdGl0bGU/OiBzdHJpbmdcclxuICB9KSA9PiB7XHJcbiAgICBjb25zdCB7IG1lc3NhZ2UsIGRlbGF5LCB0aXRsZSB9ID0gYXJncztcclxuICAgIGlmIChBcnJheS5pc0FycmF5KG1lc3NhZ2UpKSB7XHJcbiAgICAgIHRoaXMuI2J1aWxkVG9hc3RNdWx0aU1lc3NzYWdlKCd3YXJuaW5nJywgbWVzc2FnZSwgZGVsYXksIHRpdGxlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBjb250ZW50ID0gbWVzc2FnZSB8fCB0aGlzLnRyYW5zbGF0ZSgnV2FybmluZycpO1xyXG4gICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKGNvbnRlbnQsIHRpdGxlLCB7XHJcbiAgICAgICAgZW5hYmxlSHRtbDogdHJ1ZSxcclxuICAgICAgICB0aW1lT3V0OiBkZWxheSB8fCAzMDAwLFxyXG4gICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNub3RpZnlFcnJvciA9IChhcmdzOiB7XHJcbiAgICBtZXNzYWdlPzogc3RyaW5nIHwgc3RyaW5nW10sXHJcbiAgICBkZWxheT86IG51bWJlcixcclxuICAgIHRpdGxlPzogc3RyaW5nXHJcbiAgfSkgPT4ge1xyXG4gICAgY29uc3QgeyBtZXNzYWdlLCBkZWxheSwgdGl0bGUgfSA9IGFyZ3M7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtZXNzYWdlKSkge1xyXG4gICAgICB0aGlzLiNidWlsZFRvYXN0TXVsdGlNZXNzc2FnZSgnZXJyb3InLCBtZXNzYWdlLCBkZWxheSwgdGl0bGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBtZXNzYWdlIHx8IHRoaXMudHJhbnNsYXRlKCdFcnJvcicpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihjb250ZW50LCB0aXRsZSwge1xyXG4gICAgICAgIGVuYWJsZUh0bWw6IHRydWUsXHJcbiAgICAgICAgdGltZU91dDogZGVsYXkgfHwgMzAwMCxcclxuICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAjYnVpbGRUb2FzdE11bHRpTWVzc3NhZ2UgPSAodHlwZTogJ3dhcm5pbmcnIHwgJ2Vycm9yJywgbWVzc2FnZXM6IHN0cmluZ1tdLCBkZWxheT86IG51bWJlciwgdGl0bGU/OiBzdHJpbmcpID0+IHtcclxuICAgIC8qKiBz4buRIGzGsOG7o25nIGl0ZW0gaGnhu4NuIHRo4buLIG3hurdjIMSR4buLbmggKi9cclxuICAgIGNvbnN0IHNob3dOdW0gPSAyO1xyXG4gICAgY29uc3QgaWQgPSBgc2Qtbm90aWZ5LWNrYi0ke3V1aWQudjQoKX1gO1xyXG4gICAgY29uc3QgbWVzc2FnZUxlbmd0aCA9IG1lc3NhZ2VzLmxlbmd0aDtcclxuICAgIGNvbnN0IG1lc3NhZ2VSZXN0cyA9IG1lc3NhZ2VzLnNwbGljZShzaG93TnVtKTtcclxuICAgIGNvbnN0IG1lc3NhZ2VDb250YWluZXIgPSBgPHVsIGNsYXNzPVwic2Qtbm90aWZ5X19saXN0XCI+ezB9ezF9PC91bD5gO1xyXG4gICAgY29uc3QgbWVzc2FnZVRlbXAgPSBgPGxpIGNsYXNzPVwic2Qtbm90aWZ5X19pdGVtXCI+LSB7MH08L2xpPmA7XHJcbiAgICBsZXQgY29udGVudFJlc3QgPSAnJztcclxuICAgIGlmIChtZXNzYWdlUmVzdHM/Lmxlbmd0aCkge1xyXG4gICAgICBjb250ZW50UmVzdCA9IGA8aW5wdXQgaWQ9XCIke2lkfVwiIGNsYXNzPVwiY2RrLXZpc3VhbGx5LWhpZGRlbiBzZC1ub3RpZnlfX2NoZWNrYm94XCIgdHlwZT1cImNoZWNrYm94XCIgLz5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwic2Qtbm90aWZ5X190ZXh0IHNkLW5vdGlmeV9fdGV4dC0tc2hvd1wiIGZvcj1cIiR7aWR9XCI+JHt0aGlzLnRyYW5zbGF0ZSgnU2hvdyBtb3JlJyl9PC9sYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cInNkLW5vdGlmeV9faXRlbS0tcmVzdFwiPlxyXG4gICAgICAgICR7bWVzc2FnZVJlc3RzLm1hcChtID0+IFN0cmluZy5mb3JtYXQobWVzc2FnZVRlbXAsIG0pKS5qb2luKCcnKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cInNkLW5vdGlmeV9fdGV4dCBzZC1ub3RpZnlfX3RleHQtLWxlc3NcIiBmb3I9XCIke2lkfVwiPiR7dGhpcy50cmFuc2xhdGUoJ1Nob3cgbGVzcycpfTwvbGFiZWw+YDtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBTdHJpbmcuZm9ybWF0KG1lc3NhZ2VDb250YWluZXIsIG1lc3NhZ2VzLm1hcChtID0+IFN0cmluZy5mb3JtYXQobWVzc2FnZVRlbXAsIG0pKS5qb2luKCcnKSwgY29udGVudFJlc3QpO1xyXG4gICAgbGV0IHRvYXN0OiBBY3RpdmVUb2FzdDxhbnk+O1xyXG4gICAgLy8ga2hpIHRydXnhu4FuIG1lc3NhZ2UgaHRtbCBz4bq9IGLhu4sgc2FuaXRpemUgbsOqbiBwaOG6o2kgdHJ1eeG7gW4gaW5uZXJIVE1MIGtoaSB0b2FzdCBoaeG7h24gbMOqblxyXG4gICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vc2N0dGNwZXIvbmd4LXRvYXN0ci9ibG9iL3YxMi4xLjAvc3JjL2xpYi90b2FzdHIvdG9hc3RyLnNlcnZpY2UudHMjTDI3MVxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2Vycm9yJzpcclxuICAgICAgICB0b2FzdCA9IHRoaXMudG9hc3RyLmVycm9yKGNvbnRlbnQsIGAke3RpdGxlIHx8IHRoaXMudHJhbnNsYXRlKCdFcnJvcicpfSAoJHttZXNzYWdlTGVuZ3RofSlgLCB7XHJcbiAgICAgICAgICBlbmFibGVIdG1sOiB0cnVlLFxyXG4gICAgICAgICAgdGltZU91dDogZGVsYXkgfHwgMzAwMCxcclxuICAgICAgICAgIG1lc3NhZ2VDbGFzczogYHRvYXN0LW1lc3NhZ2UgdG9hc3QtbWVzc2FnZS0ke2lkfWAsXHJcbiAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIHRhcFRvRGlzbWlzczogZmFsc2VcclxuICAgICAgICB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnd2FybmluZyc6XHJcbiAgICAgICAgdG9hc3QgPSB0aGlzLnRvYXN0ci53YXJuaW5nKGNvbnRlbnQsIGAke3RpdGxlIHx8IHRoaXMudHJhbnNsYXRlKCdXYXJuaW5nJyl9ICgke21lc3NhZ2VMZW5ndGh9KWAsIHtcclxuICAgICAgICAgIGVuYWJsZUh0bWw6IHRydWUsXHJcbiAgICAgICAgICB0aW1lT3V0OiBkZWxheSB8fCAzMDAwLFxyXG4gICAgICAgICAgbWVzc2FnZUNsYXNzOiBgdG9hc3QtbWVzc2FnZSB0b2FzdC1tZXNzYWdlLSR7aWR9YCxcclxuICAgICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgdGFwVG9EaXNtaXNzOiBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0b2FzdCkge1xyXG4gICAgICB0b2FzdC5vblNob3duXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICB0YWtlVW50aWwodG9hc3Qub25IaWRkZW4pXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbWVzc2FnZUVsZTogSFRNTERpdkVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAudG9hc3QtbWVzc2FnZS0ke2lkfWApO1xyXG4gICAgICAgICAgbWVzc2FnZUVsZS5pbm5lckhUTUwgPSBjb250ZW50O1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGUgPSB7XHJcbiAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0eXBlb2YgZXJyID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnkud2FybmluZyhlcnIpO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlcnIgPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9XHJcbiAgICAgICAgICBlcnI/LmVycm9yIHx8XHJcbiAgICAgICAgICBlcnI/Lm1lc3NhZ2UgfHxcclxuICAgICAgICAgIGVycj8uRXhjZXB0aW9uTWVzc2FnZSB8fFxyXG4gICAgICAgICAgZXJyPy5NZXNzYWdlIHx8XHJcbiAgICAgICAgICBcIlVua25vd24gZXJyb3JcIjtcclxuICAgICAgICBpZiAodHlwZW9mIGVyci5qc29uID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGVyciA9IGVyci5qc29uKCk7XHJcbiAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPVxyXG4gICAgICAgICAgICAgIGVycj8uZXJyb3IgfHxcclxuICAgICAgICAgICAgICBlcnI/Lm1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgICBlcnI/LkV4Y2VwdGlvbk1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgICBlcnI/Lk1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgICBcIlVua25vd24gZXJyb3JcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ub3RpZnkud2FybmluZyhtZXNzYWdlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5vdGlmeS53YXJuaW5nKFwiVW5rbm93biBlcnJvclwiKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBjb25maXJtID0gKFxyXG4gICAgbWVzc2FnZTogc3RyaW5nLFxyXG4gICAgb3B0aW9uOiB7XHJcbiAgICAgIHRpdGxlPzogc3RyaW5nO1xyXG4gICAgICB5ZXNUaXRsZT86IHN0cmluZztcclxuICAgICAgbm9UaXRsZT86IHN0cmluZztcclxuICAgICAgeWVzQnV0dG9uQ29sb3I/OiBzdHJpbmc7XHJcbiAgICAgIG5vQnV0dG9uQ29sb3I/OiBzdHJpbmc7XHJcbiAgICB9ID0ge31cclxuICApID0+IHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogXCI0MDBweFwiLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdGl0bGU6IG9wdGlvbj8udGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJDb25maXJtXCIpLFxyXG4gICAgICAgIG1lc3NhZ2UsXHJcbiAgICAgICAgeWVzVGl0bGU6IG9wdGlvbj8ueWVzVGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJZZXNcIiksXHJcbiAgICAgICAgbm9UaXRsZTogb3B0aW9uPy5ub1RpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiTm9cIiksXHJcbiAgICAgICAgbm9CdXR0b25Db2xvcjogb3B0aW9uPy5ub0J1dHRvbkNvbG9yIHx8IFwic2Vjb25kYXJ5XCIsXHJcbiAgICAgICAgeWVzQnV0dG9uQ29sb3I6IG9wdGlvbj8ueWVzQnV0dG9uQ29sb3IgfHwgXCJwcmltYXJ5XCIsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gXCJBQ0NFUFRcIikge1xyXG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT09IFwiQ0FOQ0VMXCIpIHtcclxuICAgICAgICAgICAgcmVqZWN0KHJlc3VsdCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBjb25maXJtRGVsZXRlID0gKCkgPT4gdGhpcy5jb25maXJtKHRoaXMudHJhbnNsYXRlKFwiRGVsZXRlIHJlY29yZChzKVwiKSk7XHJcblxyXG4gIGNvbmZpcm1BcHByb3ZlID0gKCkgPT4gdGhpcy5jb25maXJtKHRoaXMudHJhbnNsYXRlKFwiQXBwcm92ZSByZWNvcmQocylcIikpO1xyXG5cclxuICBjb25maXJtV2l0aElucHV0ID0gKFxyXG4gICAgdGl0bGU6IHN0cmluZyxcclxuICAgIG9wdGlvbjoge1xyXG4gICAgICBtZXNzYWdlPzogc3RyaW5nO1xyXG4gICAgICB5ZXNUaXRsZT86IHN0cmluZztcclxuICAgICAgbm9UaXRsZT86IHN0cmluZztcclxuICAgICAgcmVxdWlyZWQ/OiBib29sZWFuO1xyXG4gICAgICBtYXhsZW5ndGg/OiBudW1iZXI7XHJcbiAgICAgIHllc0J1dHRvbkNvbG9yPzogc3RyaW5nO1xyXG4gICAgICBub0J1dHRvbkNvbG9yPzogc3RyaW5nO1xyXG4gICAgICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XHJcbiAgICB9ID0ge31cclxuICApOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiBcIjQwMHB4XCIsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0aXRsZTogdGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJDb25maXJtXCIpLFxyXG4gICAgICAgIG1lc3NhZ2U6IG9wdGlvbj8ubWVzc2FnZSxcclxuICAgICAgICB5ZXNUaXRsZTogb3B0aW9uPy55ZXNUaXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIlllc1wiKSxcclxuICAgICAgICBub1RpdGxlOiBvcHRpb24/Lm5vVGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJOb1wiKSxcclxuICAgICAgICBub0J1dHRvbkNvbG9yOiBvcHRpb24/Lm5vQnV0dG9uQ29sb3IgfHwgXCJzZWNvbmRhcnlcIixcclxuICAgICAgICB5ZXNCdXR0b25Db2xvcjogb3B0aW9uPy55ZXNCdXR0b25Db2xvciB8fCBcInByaW1hcnlcIixcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgbWF4bGVuZ3RoOiBvcHRpb24/Lm1heGxlbmd0aCB8fCAyNTUsXHJcbiAgICAgICAgICByZXF1aXJlZDogb3B0aW9uPy5yZXF1aXJlZCxcclxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogb3B0aW9uPy5kZWZhdWx0VmFsdWUgfHwgJydcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IFwiQUNDRVBUXCIpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT09IFwiQ0FOQ0VMXCIpIHtcclxuICAgICAgICAgICAgcmVqZWN0KHJlc3VsdCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgdHJhbnNsYXRlID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUodmFsdWUpO1xyXG4gIH07XHJcbn1cclxuIl19
|
|
@@ -219,6 +219,10 @@ class SdAutocomplete {
|
|
|
219
219
|
ngOnInit() {
|
|
220
220
|
var _a;
|
|
221
221
|
this.appearance = this.appearance || ((_a = this.formConfig) === null || _a === void 0 ? void 0 : _a.appearance);
|
|
222
|
+
__classPrivateFieldGet(this, _subscription).add(this.formControl.untouchChanges.subscribe(() => {
|
|
223
|
+
this.inputControl.markAsUntouched();
|
|
224
|
+
this.ref.markForCheck();
|
|
225
|
+
}));
|
|
222
226
|
__classPrivateFieldGet(this, _subscription).add(this.formControl.sdChanges.subscribe(() => {
|
|
223
227
|
this.ref.markForCheck();
|
|
224
228
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-autocomplete.js","sources":["../../../../projects/sd-core/autocomplete/src/lib/autocomplete-display-def.directive.ts","../../../../projects/sd-core/autocomplete/src/lib/autocomplete.component.ts","../../../../projects/sd-core/autocomplete/src/lib/autocomplete.module.ts","../../../../projects/sd-core/autocomplete/src/public-api.ts","../../../../projects/sd-core/autocomplete/sd-angular-core-autocomplete.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdAutocompleteDisplayDef]'\r\n})\r\nexport class SdAutocompleteDisplayDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n OnDestroy,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n Inject,\r\n Optional\r\n} from '@angular/core';\r\nimport { startWith, switchMap, debounceTime, map, finalize } from 'rxjs/operators';\r\n\r\nimport * as uuid from 'uuid';\r\nimport hash from 'object-hash';\r\nimport { FormControl, NgForm, Validators, FormGroupDirective, FormGroup, ValidatorFn, AsyncValidatorFn } from '@angular/forms';\r\nimport { BehaviorSubject, combineLatest, defer, from, Observable, of, Subscription } from 'rxjs';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { SdAutocompleteDisplayDefDirective } from './autocomplete-display-def.directive';\r\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { FORM_CONFIG, IFormConfiguration, SdFormControl, SdViewDefDirective } from '@sd-angular/core/common';\r\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\r\n\r\nclass SdAutocompleteErrotStateMatcher implements ErrorStateMatcher {\r\n constructor(private formControl: FormControl) { }\r\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n const isSubmitted = form && form.submitted;\r\n return !!(this.formControl?.invalid && (control?.dirty || control?.touched || this.formControl?.dirty || this.formControl?.touched || isSubmitted));\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'sd-autocomplete',\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdAutocomplete implements OnInit, OnDestroy, AfterViewInit {\r\n @Input() set key(value: any) {\r\n this.#cache = {};\r\n this.#item = {};\r\n }\r\n @ViewChild(MatAutocompleteTrigger, { read: MatAutocompleteTrigger }) autocompleteTrigger: MatAutocompleteTrigger;\r\n id = `I${uuid.v4()}`;\r\n #model: string | number;\r\n\r\n #delay = 0; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện gọi hàm\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() appearance: MatFormFieldAppearance;\r\n loading = false;\r\n inputControl = new SdFormControl();\r\n formControl = new SdFormControl();\r\n matcher = new SdAutocompleteErrotStateMatcher(this.formControl);\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n qcId: string;\r\n label: string;\r\n @Input('label') set _label(val: string) {\r\n this.label = val;\r\n this.qcId = hash({\r\n selector: 'sd-autocomplete',\r\n label: val\r\n });\r\n };\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n @Input() placeholder: string;\r\n\r\n #itemsChanges = new BehaviorSubject<any[] | SearchFunc>([]);\r\n @Input() set items(items: undefined | any[] | SearchFunc) {\r\n if (!items) {\r\n this.#itemsChanges.next([]);\r\n } else if (Array.isArray(items)) {\r\n this.#itemsChanges.next(items.filter(e => e !== null && e !== undefined));\r\n } else {\r\n this.#itemsChanges.next(items);\r\n this.#delay = 500;\r\n }\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n @Input() limit = 100;\r\n filteredItems: Observable<any[]>;\r\n\r\n @Input() cacheChecksum: any;\r\n\r\n controlPlaceHolder: Observable<string | number>;\r\n controlPlaceHolder2: Observable<string | number>;\r\n @Input() set model(value: undefined | number | string) {\r\n this.#model = value;\r\n this.formControl.setValue(value);\r\n }\r\n\r\n @ContentChild(SdAutocompleteDisplayDefDirective) autocompleteDisplayDef: SdAutocompleteDisplayDefDirective;\r\n @Input() actionIcon: string;\r\n @Output() action = new EventEmitter();\r\n @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = new EventEmitter();\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.inputControl.disable();\r\n this.formControl.disable();\r\n } else {\r\n this.inputControl.enable();\r\n this.formControl.enable();\r\n }\r\n }\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n #subscription = new Subscription();\r\n @ViewChild('input') input: ElementRef;\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n selected: Observable<any>;\r\n\r\n #cache: {\r\n [key: string]: any[]\r\n } = {};\r\n #item: {\r\n [key: string]: any\r\n } = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(FORM_CONFIG) @Optional() private formConfig: IFormConfiguration) {\r\n }\r\n\r\n ngOnInit() {\r\n this.appearance = this.appearance || this.formConfig?.appearance;\r\n this.#subscription.add(this.formControl.sdChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n this.#subscription.add(this.inputControl.sdChanges.subscribe(() => {\r\n \r\n this.ref.markForCheck();\r\n }));\r\n this.filteredItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.inputControl.valueChanges.pipe(debounceTime(this.#delay))]).pipe(\r\n switchMap(([items, searchText]) => {\r\n searchText = searchText || '';\r\n if (typeof (items) === 'function') {\r\n const key = hash({\r\n checksum: this.cacheChecksum || null,\r\n searchText\r\n });\r\n if (this.#cache[key] !== undefined) {\r\n return this.#cache[key].asObservable();\r\n }\r\n let obs: Observable<any[]>;\r\n const func = items(searchText, false);\r\n if (func instanceof Promise) {\r\n obs = defer(() => from(func));\r\n } else {\r\n obs = func\r\n }\r\n this.loading = true;\r\n return obs.pipe(map(data => {\r\n this.#cache[key] = data || [];\r\n Object.assign(this.#item, Array.toObject(this.#cache[key], this.valueField));\r\n return this.#cache[key];\r\n }), finalize(() => this.loading = false));\r\n }\r\n return items\r\n .search(searchText, [this.valueField, this.displayField])\r\n .paging(this.limit)\r\n .asObservable();\r\n })\r\n );\r\n this.selected = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))])\r\n .pipe(\r\n switchMap(([items, val]) => {\r\n // Vì một số lý do chưa xác định mà khi sử dụng sdViewDef thì khi chuyển sang dạng view sẽ trigger val = null\r\n // Nhưng formControl.value vẫn có giá trị đúng nên thực hiện gán val = this.formControl.value;\r\n val = this.formControl.value;\r\n if (!this.valueField) {\r\n return of(val);\r\n }\r\n if (val || val === 0) {\r\n if (typeof (items) === 'function') {\r\n if (this.#item[val]) {\r\n return of(this.#item[val]);\r\n }\r\n let obs: Observable<any[]>;\r\n const func = items(val, true);\r\n if (func instanceof Promise) {\r\n obs = defer(() => from(func));\r\n } else {\r\n obs = func;\r\n }\r\n return obs.pipe(map(data => {\r\n Object.assign(this.#item, Array.toObject(data, this.valueField));\r\n return this.#item[val] || {\r\n [this.valueField]: val,\r\n [this.displayField]: val\r\n };\r\n }));\r\n }\r\n return of(items.find(e => e[this.valueField] === val));\r\n }\r\n return of('');\r\n })\r\n );\r\n this.controlPlaceHolder = this.selected.pipe(map(item => item?.[this.displayField] ?? item ?? this.placeholder ?? this.label ?? ''));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n this.#form?.removeControl(this.#name);\r\n }\r\n onSelect = (item: any) => {\r\n if (item) {\r\n if (typeof (item) === 'string' || typeof (item) === 'number') {\r\n if (this.formControl.value !== item) {\r\n this.formControl.setValue(item);\r\n this.modelChange.emit(item);\r\n this.sdChange.emit(item);\r\n }\r\n } else if (this.valueField && this.displayField) {\r\n const val = item?.[this.valueField] || null;\r\n if (this.formControl.value !== val) {\r\n this.formControl.setValue(val);\r\n this.modelChange.emit(val);\r\n this.sdChange.emit(item);\r\n }\r\n }\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n\r\n onFocus = () => {\r\n this.isFocused = true;\r\n this.inputControl.setValue('');\r\n // this.inputControl.updateValueAndValidity();\r\n }\r\n\r\n onBlur = () => {\r\n this.isFocused = false;\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n blur = () => {\r\n this.input?.nativeElement?.blur();\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.autocompleteTrigger?.openPanel();\r\n this.input?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n clear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n this.inputControl?.setValue('');\r\n if (this.#model) {\r\n this.formControl.setValue(null);\r\n this.modelChange.emit(null);\r\n this.sdChange.emit(null);\r\n }\r\n }\r\n\r\n onAction = ($event: Event) => {\r\n $event?.stopPropagation();\r\n this.autocompleteTrigger?.closePanel();\r\n this.action.emit();\r\n }\r\n\r\n reValidate = () => {\r\n this.inputControl.updateValueAndValidity({ emitEvent: true });\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n // const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n // if (this.#validator) {\r\n // asyncValidators.push(this.#customValidator(this.#validator));\r\n // }\r\n this.formControl.setValidators(validators);\r\n // this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n}\r\n\r\ntype SearchFunc = (searchText?: string | number, isFormValue?: boolean) => Promise<any[]> | Observable<any[]>;","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdAutocomplete } from './autocomplete.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdAutocompleteDisplayDefDirective } from './autocomplete-display-def.directive';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n SdTranslateModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n SdAutocomplete,\r\n SdAutocompleteDisplayDefDirective\r\n ],\r\n exports: [\r\n SdAutocomplete,\r\n SdAutocompleteDisplayDefDirective,\r\n SdCommonModule\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdAutocompleteModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/autocomplete.module';\r\nexport * from './lib/autocomplete.component';\r\nexport * from './lib/autocomplete-display-def.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sd-angular-core-autocomplete.js","sources":["../../../../projects/sd-core/autocomplete/src/lib/autocomplete-display-def.directive.ts","../../../../projects/sd-core/autocomplete/src/lib/autocomplete.component.ts","../../../../projects/sd-core/autocomplete/src/lib/autocomplete.module.ts","../../../../projects/sd-core/autocomplete/src/public-api.ts","../../../../projects/sd-core/autocomplete/sd-angular-core-autocomplete.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdAutocompleteDisplayDef]'\r\n})\r\nexport class SdAutocompleteDisplayDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n OnDestroy,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n Inject,\r\n Optional\r\n} from '@angular/core';\r\nimport { startWith, switchMap, debounceTime, map, finalize } from 'rxjs/operators';\r\n\r\nimport * as uuid from 'uuid';\r\nimport hash from 'object-hash';\r\nimport { FormControl, NgForm, Validators, FormGroupDirective, FormGroup, ValidatorFn, AsyncValidatorFn } from '@angular/forms';\r\nimport { BehaviorSubject, combineLatest, defer, from, Observable, of, Subscription } from 'rxjs';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { SdAutocompleteDisplayDefDirective } from './autocomplete-display-def.directive';\r\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { FORM_CONFIG, IFormConfiguration, SdFormControl, SdViewDefDirective } from '@sd-angular/core/common';\r\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\r\n\r\nclass SdAutocompleteErrotStateMatcher implements ErrorStateMatcher {\r\n constructor(private formControl: FormControl) { }\r\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n const isSubmitted = form && form.submitted;\r\n return !!(this.formControl?.invalid && (control?.dirty || control?.touched || this.formControl?.dirty || this.formControl?.touched || isSubmitted));\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'sd-autocomplete',\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdAutocomplete implements OnInit, OnDestroy, AfterViewInit {\r\n @Input() set key(value: any) {\r\n this.#cache = {};\r\n this.#item = {};\r\n }\r\n @ViewChild(MatAutocompleteTrigger, { read: MatAutocompleteTrigger }) autocompleteTrigger: MatAutocompleteTrigger;\r\n id = `I${uuid.v4()}`;\r\n #model: string | number;\r\n\r\n #delay = 0; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện gọi hàm\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() appearance: MatFormFieldAppearance;\r\n loading = false;\r\n inputControl = new SdFormControl();\r\n formControl = new SdFormControl();\r\n matcher = new SdAutocompleteErrotStateMatcher(this.formControl);\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n qcId: string;\r\n label: string;\r\n @Input('label') set _label(val: string) {\r\n this.label = val;\r\n this.qcId = hash({\r\n selector: 'sd-autocomplete',\r\n label: val\r\n });\r\n };\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n @Input() placeholder: string;\r\n\r\n #itemsChanges = new BehaviorSubject<any[] | SearchFunc>([]);\r\n @Input() set items(items: undefined | any[] | SearchFunc) {\r\n if (!items) {\r\n this.#itemsChanges.next([]);\r\n } else if (Array.isArray(items)) {\r\n this.#itemsChanges.next(items.filter(e => e !== null && e !== undefined));\r\n } else {\r\n this.#itemsChanges.next(items);\r\n this.#delay = 500;\r\n }\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n @Input() limit = 100;\r\n filteredItems: Observable<any[]>;\r\n\r\n @Input() cacheChecksum: any;\r\n\r\n controlPlaceHolder: Observable<string | number>;\r\n controlPlaceHolder2: Observable<string | number>;\r\n @Input() set model(value: undefined | number | string) {\r\n this.#model = value;\r\n this.formControl.setValue(value);\r\n }\r\n\r\n @ContentChild(SdAutocompleteDisplayDefDirective) autocompleteDisplayDef: SdAutocompleteDisplayDefDirective;\r\n @Input() actionIcon: string;\r\n @Output() action = new EventEmitter();\r\n @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = new EventEmitter();\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.inputControl.disable();\r\n this.formControl.disable();\r\n } else {\r\n this.inputControl.enable();\r\n this.formControl.enable();\r\n }\r\n }\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n #subscription = new Subscription();\r\n @ViewChild('input') input: ElementRef;\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n selected: Observable<any>;\r\n\r\n #cache: {\r\n [key: string]: any[]\r\n } = {};\r\n #item: {\r\n [key: string]: any\r\n } = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(FORM_CONFIG) @Optional() private formConfig: IFormConfiguration) {\r\n }\r\n\r\n ngOnInit() {\r\n this.appearance = this.appearance || this.formConfig?.appearance;\r\n this.#subscription.add(this.formControl.untouchChanges.subscribe(() => {\r\n this.inputControl.markAsUntouched();\r\n this.ref.markForCheck();\r\n }));\r\n this.#subscription.add(this.formControl.sdChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n this.#subscription.add(this.inputControl.sdChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n this.filteredItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.inputControl.valueChanges.pipe(debounceTime(this.#delay))]).pipe(\r\n switchMap(([items, searchText]) => {\r\n searchText = searchText || '';\r\n if (typeof (items) === 'function') {\r\n const key = hash({\r\n checksum: this.cacheChecksum || null,\r\n searchText\r\n });\r\n if (this.#cache[key] !== undefined) {\r\n return this.#cache[key].asObservable();\r\n }\r\n let obs: Observable<any[]>;\r\n const func = items(searchText, false);\r\n if (func instanceof Promise) {\r\n obs = defer(() => from(func));\r\n } else {\r\n obs = func\r\n }\r\n this.loading = true;\r\n return obs.pipe(map(data => {\r\n this.#cache[key] = data || [];\r\n Object.assign(this.#item, Array.toObject(this.#cache[key], this.valueField));\r\n return this.#cache[key];\r\n }), finalize(() => this.loading = false));\r\n }\r\n return items\r\n .search(searchText, [this.valueField, this.displayField])\r\n .paging(this.limit)\r\n .asObservable();\r\n })\r\n );\r\n this.selected = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))])\r\n .pipe(\r\n switchMap(([items, val]) => {\r\n // Vì một số lý do chưa xác định mà khi sử dụng sdViewDef thì khi chuyển sang dạng view sẽ trigger val = null\r\n // Nhưng formControl.value vẫn có giá trị đúng nên thực hiện gán val = this.formControl.value;\r\n val = this.formControl.value;\r\n if (!this.valueField) {\r\n return of(val);\r\n }\r\n if (val || val === 0) {\r\n if (typeof (items) === 'function') {\r\n if (this.#item[val]) {\r\n return of(this.#item[val]);\r\n }\r\n let obs: Observable<any[]>;\r\n const func = items(val, true);\r\n if (func instanceof Promise) {\r\n obs = defer(() => from(func));\r\n } else {\r\n obs = func;\r\n }\r\n return obs.pipe(map(data => {\r\n Object.assign(this.#item, Array.toObject(data, this.valueField));\r\n return this.#item[val] || {\r\n [this.valueField]: val,\r\n [this.displayField]: val\r\n };\r\n }));\r\n }\r\n return of(items.find(e => e[this.valueField] === val));\r\n }\r\n return of('');\r\n })\r\n );\r\n this.controlPlaceHolder = this.selected.pipe(map(item => item?.[this.displayField] ?? item ?? this.placeholder ?? this.label ?? ''));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n this.#form?.removeControl(this.#name);\r\n }\r\n onSelect = (item: any) => {\r\n if (item) {\r\n if (typeof (item) === 'string' || typeof (item) === 'number') {\r\n if (this.formControl.value !== item) {\r\n this.formControl.setValue(item);\r\n this.modelChange.emit(item);\r\n this.sdChange.emit(item);\r\n }\r\n } else if (this.valueField && this.displayField) {\r\n const val = item?.[this.valueField] || null;\r\n if (this.formControl.value !== val) {\r\n this.formControl.setValue(val);\r\n this.modelChange.emit(val);\r\n this.sdChange.emit(item);\r\n }\r\n }\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n\r\n onFocus = () => {\r\n this.isFocused = true;\r\n this.inputControl.setValue('');\r\n // this.inputControl.updateValueAndValidity();\r\n }\r\n\r\n onBlur = () => {\r\n this.isFocused = false;\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n blur = () => {\r\n this.input?.nativeElement?.blur();\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.autocompleteTrigger?.openPanel();\r\n this.input?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n clear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n this.inputControl?.setValue('');\r\n if (this.#model) {\r\n this.formControl.setValue(null);\r\n this.modelChange.emit(null);\r\n this.sdChange.emit(null);\r\n }\r\n }\r\n\r\n onAction = ($event: Event) => {\r\n $event?.stopPropagation();\r\n this.autocompleteTrigger?.closePanel();\r\n this.action.emit();\r\n }\r\n\r\n reValidate = () => {\r\n this.inputControl.updateValueAndValidity({ emitEvent: true });\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n // const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n // if (this.#validator) {\r\n // asyncValidators.push(this.#customValidator(this.#validator));\r\n // }\r\n this.formControl.setValidators(validators);\r\n // this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n}\r\n\r\ntype SearchFunc = (searchText?: string | number, isFormValue?: boolean) => Promise<any[]> | Observable<any[]>;","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdAutocomplete } from './autocomplete.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdAutocompleteDisplayDefDirective } from './autocomplete-display-def.directive';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n SdTranslateModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n SdAutocomplete,\r\n SdAutocompleteDisplayDefDirective\r\n ],\r\n exports: [\r\n SdAutocomplete,\r\n SdAutocompleteDisplayDefDirective,\r\n SdCommonModule\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdAutocompleteModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/autocomplete.module';\r\nexport * from './lib/autocomplete.component';\r\nexport * from './lib/autocomplete-display-def.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":";;;;;;;;;;;;;;;;;MAKa,iCAAiC;IAC5C,YAAmB,WAA6B;QAA7B,gBAAW,GAAX,WAAW,CAAkB;KAAK;;;YAJtD,SAAS,SAAC;gBACT,QAAQ,EAAE,4BAA4B;aACvC;;;YAJmB,WAAW;;;;AC4B/B,MAAM,+BAA+B;IACnC,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;KAAK;IACjD,YAAY,CAAC,OAA2B,EAAE,IAAwC;;QAChF,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC;QAC3C,OAAO,CAAC,EAAE,OAAA,IAAI,CAAC,WAAW,0CAAE,OAAO,MAAK,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,MAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAA,WAAI,IAAI,CAAC,WAAW,0CAAE,KAAK,CAAA,WAAI,IAAI,CAAC,WAAW,0CAAE,OAAO,CAAA,IAAI,WAAW,CAAC,CAAC,CAAC;KACrJ;CACF;MAQY,cAAc;IA6GzB,YACU,GAAsB,EACW,UAA8B;QAD/D,QAAG,GAAH,GAAG,CAAmB;QACW,eAAU,GAAV,UAAU,CAAoB;QAzGzE,OAAE,GAAG,IAAIA,EAAO,EAAE,EAAE,CAAC;QACrB,yBAAwB;QAExB,iBAAS,CAAC,EAAC;QACX,gBAAQA,EAAO,EAAE,EAAC;QAOlB,YAAO,GAAG,KAAK,CAAC;QAChB,iBAAY,GAAG,IAAI,aAAa,EAAE,CAAC;QACnC,gBAAW,GAAG,IAAI,aAAa,EAAE,CAAC;QAClC,YAAO,GAAG,IAAI,+BAA+B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEhE,wBAAiB;QAuBjB,wBAAgB,IAAI,eAAe,CAAqB,EAAE,CAAC,EAAC;QAanD,UAAK,GAAG,GAAG,CAAC;QAcX,WAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC5B,gBAAW,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAaxC,eAAU,GAAG,KAAK,CAAC;QAKnB,wBAAmB,GAAG,KAAK,CAAC;QAK5B,wBAAgB,IAAI,YAAY,EAAE,EAAC;QAGnC,cAAS,GAAG,KAAK,CAAC;QAGlB,iBAEI,EAAE,EAAC;QACP,gBAEI,EAAE,EAAC;QAkGP,aAAQ,GAAG,CAAC,IAAS;YACnB,IAAI,IAAI,EAAE;gBACR,IAAI,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI,QAAQ,IAAI,CAAC,KAAK,QAAQ,EAAE;oBAC5D,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,IAAI,EAAE;wBACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC1B;iBACF;qBAAM,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;oBAC/C,MAAM,GAAG,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,IAAI,CAAC,UAAU,MAAK,IAAI,CAAC;oBAC5C,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,GAAG,EAAE;wBAClC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;wBAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC1B;iBACF;gBACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE;oBAC7B,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAC;aACJ;SACF,CAAA;QAED,YAAO,GAAG;YACR,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;;SAEhC,CAAA;QAED,WAAM,GAAG;YACP,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE;gBAC7B,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;SACJ,CAAA;QAED,YAAO,GAAG;;YACR,UAAI,IAAI,CAAC,MAAM,0CAAE,WAAW,EAAE;gBAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oBACjD,IAAI,CAAC,KAAK,EAAE,CAAC;iBACd;aACF;SACF,CAAA;QAED,SAAI,GAAG;;YACL,YAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,0CAAE,IAAI,GAAG;SACnC,CAAA;QAED,UAAK,GAAG;YACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,UAAU,CAAC;;gBACT,MAAA,IAAI,CAAC,mBAAmB,0CAAE,SAAS,GAAG;gBACtC,YAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,0CAAE,KAAK,GAAG;aACpC,EAAE,GAAG,CAAC,CAAC;SACT,CAAA;QAED,UAAK,GAAG,CAAC,MAAY;;YACnB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,GAAG;YAC1B,MAAA,IAAI,CAAC,YAAY,0CAAE,QAAQ,CAAC,EAAE,EAAE;YAChC,0CAAiB;gBACf,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1B;SACF,CAAA;QAED,aAAQ,GAAG,CAAC,MAAa;;YACvB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,GAAG;YAC1B,MAAA,IAAI,CAAC,mBAAmB,0CAAE,UAAU,GAAG;YACvC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACpB,CAAA;QAED,eAAU,GAAG;YACX,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SAC/D,CAAA;QAED,2BAAmB;YACjB,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;YACxC,MAAM,UAAU,GAAkB,EAAE,CAAC;;YAErC,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACtC;;;;YAID,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;;YAE3C,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC;SAC3C,EAAA;KAvLA;IA/GD,IAAa,GAAG,CAAC,KAAU;QACzB,uBAAA,IAAI,UAAU,EAAE,EAAC;QACjB,uBAAA,IAAI,SAAS,EAAE,EAAC;KACjB;IAOD,IAAa,IAAI,CAAC,GAAW;QAC3B,IAAI,GAAG,EAAE;YACP,uBAAA,IAAI,SAAS,GAAG,EAAC;SAClB;KACF;IAQD,IAAa,IAAI,CAAC,GAAuB;QACvC,IAAI,GAAG,EAAE;YACP,IAAI,GAAG,YAAY,MAAM,EAAE;gBACzB,uBAAA,IAAI,SAAS,GAAG,CAAC,IAAI,EAAC;aACvB;iBAAM;gBACL,uBAAA,IAAI,SAAS,GAAG,EAAC;aAClB;SACF;KACF;IAGD,IAAoB,MAAM,CAAC,GAAW;QACpC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACf,QAAQ,EAAE,iBAAiB;YAC3B,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;KACJ;;IAMD,IAAa,KAAK,CAAC,KAAqC;QACtD,IAAI,CAAC,KAAK,EAAE;YACV,4CAAmB,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7B;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC/B,4CAAmB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;SAC3E;aAAM;YACL,4CAAmB,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,uBAAA,IAAI,UAAU,GAAG,EAAC;SACnB;QACD,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC;KAC3C;IASD,IAAa,KAAK,CAAC,KAAkC;QACnD,uBAAA,IAAI,UAAU,KAAK,EAAC;QACpB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAClC;;IASD,IAAa,QAAQ,CAAC,GAAiB;QACrC,GAAG,GAAG,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,CAAC;QAC1B,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;SAC3B;KACF;IAED,IAAa,QAAQ,CAAC,GAAiB;QACrC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,CAAC;QACtC,oDAAA,IAAI,CAAmB,CAAC;KACzB;IAED,IAAkC,oBAAoB,CAAC,GAAiB;QACtE,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,CAAC;QAC/C,GAAG,GAAG,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,CAAC;KAC3B;IAkBD,QAAQ;;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,WAAI,IAAI,CAAC,UAAU,0CAAE,UAAU,CAAA,CAAC;QACjE,4CAAmB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC;YAC/D,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB,CAAC,CAAC,CAAC;QACJ,4CAAmB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC;YAC1D,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB,CAAC,CAAC,CAAC;QACJ,4CAAmB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC;YAC3D,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YACjC,4CAAmB,YAAY,EAAE;YACjC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,sCAAa,CAAC;SAAC,CAAC,CAAC,IAAI,CACnE,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC;YAC5B,UAAU,GAAG,UAAU,IAAI,EAAE,CAAC;YAC9B,IAAI,QAAQ,KAAK,CAAC,KAAK,UAAU,EAAE;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC;oBACf,QAAQ,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;oBACpC,UAAU;iBACX,CAAC,CAAC;gBACH,IAAI,qCAAY,GAAG,CAAC,KAAK,SAAS,EAAE;oBAClC,OAAO,qCAAY,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;iBACxC;gBACD,IAAI,GAAsB,CAAC;gBAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBACtC,IAAI,IAAI,YAAY,OAAO,EAAE;oBAC3B,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC/B;qBAAM;oBACL,GAAG,GAAG,IAAI,CAAA;iBACX;gBACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;oBACtB,qCAAY,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;oBAC9B,MAAM,CAAC,MAAM,sCAAa,KAAK,CAAC,QAAQ,CAAC,qCAAY,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC7E,OAAO,qCAAY,GAAG,CAAC,CAAC;iBACzB,CAAC,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;aAC3C;YACD,OAAO,KAAK;iBACT,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;iBACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;iBAClB,YAAY,EAAE,CAAC;SACnB,CAAC,CACH,CAAC;QACJ,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;YAC5B,4CAAmB,YAAY,EAAE;YACjC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAAC,CAAC;aACtE,IAAI,CACH,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC;;;YAGrB,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;aAChB;YACD,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE;gBACpB,IAAI,QAAQ,KAAK,CAAC,KAAK,UAAU,EAAE;oBACjC,IAAI,oCAAW,GAAG,CAAC,EAAE;wBACnB,OAAO,EAAE,CAAC,oCAAW,GAAG,CAAC,CAAC,CAAC;qBAC5B;oBACD,IAAI,GAAsB,CAAC;oBAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBAC9B,IAAI,IAAI,YAAY,OAAO,EAAE;wBAC3B,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;qBAC/B;yBAAM;wBACL,GAAG,GAAG,IAAI,CAAC;qBACZ;oBACD,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;wBACtB,MAAM,CAAC,MAAM,sCAAa,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBACjE,OAAO,oCAAW,GAAG,CAAC,IAAI;4BACxB,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG;4BACtB,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG;yBACzB,CAAC;qBACH,CAAC,CAAC,CAAC;iBACL;gBACD,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;aACxD;YACD,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;SACf,CAAC,CACH,CAAC;QACJ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,yDAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,IAAI,CAAC,YAAY,oCAAK,IAAI,mCAAI,IAAI,CAAC,WAAW,mCAAI,IAAI,CAAC,KAAK,mCAAI,EAAE,GAAA,CAAC,CAAC,CAAC;KACtI;IAED,eAAe;;QACb,mFAAY,UAAU,sCAAa,IAAI,CAAC,WAAW,EAAE;KACtD;IAED,WAAW;;QACT,4CAAmB,WAAW,EAAE,CAAC;QACjC,mFAAY,aAAa,sCAAa;KACvC;;;;YAnNF,SAAS,SAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,y5FAA4C;gBAE5C,eAAe,EAAE,uBAAuB,CAAC,MAAM;;aAChD;;;YAhCC,iBAAiB;4CAgJd,MAAM,SAAC,WAAW,cAAG,QAAQ;;;kBA9G/B,KAAK;kCAIL,SAAS,SAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE;mBAMlE,KAAK;yBAKL,KAAK;mBAKL,KAAK;mBAEL,KAAK;qBAWL,KAAK,SAAC,OAAO;yBAOb,KAAK;2BACL,KAAK;0BACL,KAAK;oBAGL,KAAK;oBAYL,KAAK;4BAGL,KAAK;oBAIL,KAAK;qCAKL,YAAY,SAAC,iCAAiC;yBAC9C,KAAK;qBACL,MAAM;0BACN,MAAM;uBACN,MAAM;uBAGN,KAAK;uBAWL,KAAK;mCAKL,KAAK,SAAC,qBAAqB;oBAK3B,SAAS,SAAC,OAAO;qBACjB,YAAY,SAAC,kBAAkB;;;MCrGrB,oBAAoB;;;YA1BhC,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,mBAAmB;oBACnB,cAAc;oBACd,gBAAgB;oBAChB,kBAAkB;oBAClB,qBAAqB;oBACrB,aAAa;oBACb,wBAAwB;oBACxB,iBAAiB;oBACjB,cAAc;iBACf;gBACD,YAAY,EAAE;oBACZ,cAAc;oBACd,iCAAiC;iBAClC;gBACD,OAAO,EAAE;oBACP,cAAc;oBACd,iCAAiC;oBACjC,cAAc;iBACf;gBACD,SAAS,EAAE,EACV;aACF;;;ACvCD;;;;ACAA;;;;;;"}
|
|
@@ -312,9 +312,15 @@ class SdFormControl extends FormControl {
|
|
|
312
312
|
constructor(formState, validator = null, asyncValidator = null) {
|
|
313
313
|
super(formState, validator, asyncValidator);
|
|
314
314
|
this.sdChanges = new Subject();
|
|
315
|
+
this.untouchChanges = new Subject();
|
|
315
316
|
this.touchChanges = new Subject();
|
|
316
317
|
this.pristineChanges = new Subject();
|
|
317
318
|
}
|
|
319
|
+
markAsUntouched({ onlySelf } = {}) {
|
|
320
|
+
super.markAsUntouched({ onlySelf });
|
|
321
|
+
this.untouchChanges.next(true);
|
|
322
|
+
this.sdChanges.next(true);
|
|
323
|
+
}
|
|
318
324
|
markAsTouched({ onlySelf } = {}) {
|
|
319
325
|
super.markAsTouched({ onlySelf });
|
|
320
326
|
this.touchChanges.next(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-common.js","sources":["../../../../projects/sd-core/common/src/lib/typings/array.extension.ts","../../../../projects/sd-core/common/src/lib/typings/date.extension.ts","../../../../projects/sd-core/common/src/lib/typings/number.extension.ts","../../../../projects/sd-core/common/src/lib/typings/string.extension.ts","../../../../projects/sd-core/common/src/lib/configurations/firebase.configuration.ts","../../../../projects/sd-core/common/src/lib/configurations/form.configuration.ts","../../../../projects/sd-core/common/src/lib/models/sd-form-control.ts","../../../../projects/sd-core/common/src/lib/services/browser.service.ts","../../../../projects/sd-core/common/src/lib/directives/view-def.directive.ts","../../../../projects/sd-core/common/src/lib/directives/sd-let.directive.ts","../../../../projects/sd-core/common/src/lib/directives/sd-scroll.directive.ts","../../../../projects/sd-core/common/src/lib/directives/sd-suffix.directive.ts","../../../../projects/sd-core/common/src/lib/common.module.ts","../../../../projects/sd-core/common/sd-angular-core-common.ts"],"sourcesContent":["import { Observable, of } from 'rxjs';\r\n\r\nexport { };\r\n\r\ndeclare global {\r\n interface Array<T = any> {\r\n search(searchText: string | number, fields?: string | string[]): T[];\r\n paging(pageSize: number, page?: number): T[];\r\n toObject(key?: string): { [key: string]: T };\r\n union(key: string, ...args: T[][]): T[];\r\n asObservable(): Observable<T[]>\r\n }\r\n interface ArrayConstructor {\r\n search<T = any>(items: T[], searchText: string | number, fields?: string | string[]): T[];\r\n union<T = any>(key: string, ...args: T[][]): T[];\r\n toObject<T = any>(items: T[], key?: string): { [key: string]: T };\r\n }\r\n}\r\n\r\nArray.prototype.search = function <T = any>(searchText: any, fields?: string | string[]): T[] {\r\n const items: T[] = this;\r\n if (!searchText?.toString()) {\r\n return items;\r\n }\r\n if (Array.isArray(fields)) {\r\n const fs = fields.filter(e => e !== undefined && e !== null && e !== '');\r\n if (!fs.length) {\r\n return items.filter(item => item !== undefined && item !== null && String.aliasIncludes(item, searchText));\r\n }\r\n return items.filter(item => item !== undefined && item !== null && fs.some(field => String.aliasIncludes(item[field], searchText)));\r\n }\r\n if (!fields) {\r\n return items.filter(item => item !== undefined && item !== null && String.aliasIncludes(item, searchText));\r\n }\r\n return items.filter(item => item !== undefined && item !== null && String.aliasIncludes(item[fields], searchText));\r\n};\r\n\r\nArray.prototype.paging = function <T = any>(pageSize: number, page: number = 0): T[] {\r\n const items: T[] = this;\r\n return items.filter((item, index) => {\r\n return index >= page * pageSize\r\n && index < (page + 1) * pageSize;\r\n });\r\n};\r\n\r\nArray.prototype.toObject = function <T = any>(key: string): { [key: string]: T } {\r\n const items: T[] = this;\r\n if (!key) {\r\n return items.filter(item => item !== undefined && item !== null).reduce((obj, item) => { obj[item?.toString()] = item; return obj; }, {});\r\n }\r\n return items.filter(item => item !== undefined && item !== null).reduce((obj, item) => { obj[item[key]?.toString()] = item; return obj; }, {});\r\n};\r\n\r\nArray.prototype.union = function <T = any>(key: string, ...args: T[][]) {\r\n let results: T[] = this;\r\n const filterUnion = <T = any>(val: T, index: number, self: T[]) => val !== undefined && val !== null && self.findIndex((e: { [x: string]: any; }) => !!key ? e[key] === val[key] : e === val) === index;\r\n if (!args?.length) {\r\n return results.filter(filterUnion);\r\n }\r\n for (const arg of args) {\r\n if (Array.isArray(arg)) {\r\n results = [...results, ...arg].filter(filterUnion);\r\n }\r\n }\r\n return results;\r\n}\r\n\r\nArray.prototype.asObservable = function <T = any>() {\r\n const items: T[] = this;\r\n return of(items);\r\n}\r\n\r\nArray.search = <T = any>(items: T[], searchText: string | number, fields?: string | string[]) => {\r\n if (!Array.isArray(items)) {\r\n return [];\r\n }\r\n return items.search(searchText, fields);\r\n};\r\n\r\nArray.union = <T = any>(key: string, ...args: T[][]) => {\r\n return [].union(key, ...args);\r\n}\r\n\r\nArray.toObject = <T>(items: T[], key?: string): { [key: string]: T } => {\r\n if (!Array.isArray(items)) {\r\n return {};\r\n }\r\n return items.toObject(key);\r\n}\r\n\r\n","export { };\r\n\r\ndeclare global {\r\n interface Date {\r\n begin(): Date;\r\n end(): Date;\r\n addMiliseconds(miliseconds: number): Date;\r\n addHours(hours: number): Date;\r\n addDays(days: number): Date;\r\n addMonths(months: number): Date;\r\n toFormat(format: string): string;\r\n }\r\n interface DateConstructor {\r\n equal(date1: any, date2: any): boolean;\r\n parseFrom(value: any, format: string): Date;\r\n isDate(value: any): boolean;\r\n toFormat(value: any, format: string): string;\r\n addMiliseconds(value: any, miliseconds: number): Date;\r\n addHours(value: any, hours: number): Date;\r\n addDays(value: any, days: number): Date;\r\n addMonths(value: any, months: number): Date;\r\n begin(value: any): Date;\r\n end(value: any): Date;\r\n }\r\n}\r\n\r\nDate.equal = (date1: any, date2: any) => {\r\n if (!Date.isDate(date1) && !Date.isDate(date2)) {\r\n return true;\r\n }\r\n if (!Date.isDate(date1) || !Date.isDate(date2)) {\r\n return false;\r\n }\r\n return new Date(date1).getTime() === new Date(date2).getTime();\r\n};\r\n\r\nDate.parseFrom = (value: any, format: string) => {\r\n if (!value) {\r\n return null;\r\n }\r\n if (!format) {\r\n return null;\r\n }\r\n value = value.toString();\r\n const dmy = format.indexOf('dd') > -1 && format.indexOf('MM') > -1 && format.indexOf('yyyy') > -1;\r\n const hms = format.indexOf('HH') > -1 || format.indexOf('mm') > -1 || format.indexOf('ss') > -1;\r\n let strDate = '';\r\n if (dmy) {\r\n const dd = value.substr(format.indexOf('dd'), 'dd'.length);\r\n const MM = value.substr(format.indexOf('MM'), 'MM'.length);\r\n const yyyy = value.substr(format.indexOf('yyyy'), 'yyyy'.length);\r\n if (+yyyy > 0 && +MM > 0 && +dd > 0) {\r\n strDate += `${MM}/${dd}/${yyyy}`;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n const today = new Date();\r\n const yyyy = today.getFullYear().toString();\r\n const MM = (today.getMonth() + 1).toString().padStart(2, '0');\r\n const dd = today.getDate().toString().padStart(2, '0');\r\n strDate += `${MM}/${dd}/${yyyy}`;\r\n }\r\n if (hms) {\r\n const HH = format.indexOf('HH') > -1 ? value.substr(format.indexOf('HH'), 'HH'.length) : '00';\r\n const mm = format.indexOf('mm') > -1 ? value.substr(format.indexOf('mm'), 'mm'.length) : '00';\r\n const ss = format.indexOf('ss') > -1 ? value.substr(format.indexOf('ss'), 'ss'.length) : '00';\r\n strDate += ` ${HH || '00'}:${mm || '00'}:${ss || '00'}`;\r\n }\r\n if (!Date.isDate(strDate)) {\r\n return null;\r\n }\r\n return new Date(strDate);\r\n};\r\n\r\nDate.isDate = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const date = new Date(value);\r\n return !isNaN(date.getTime());\r\n};\r\n\r\nDate.toFormat = (value: any, format: string): string => {\r\n if (!Date.isDate(value)) {\r\n return '';\r\n }\r\n const date: Date = new Date(value);\r\n return date.toFormat(format);\r\n};\r\n\r\nDate.addMiliseconds = (value: any, miliseconds: number): Date => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n const date: Date = new Date(value);\r\n return date.addMiliseconds(miliseconds);\r\n};\r\n\r\nDate.addHours = (value: any, hours: number): Date => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n const date: Date = new Date(value);\r\n return date.addHours(hours);\r\n};\r\n\r\nDate.addDays = (value: any, days: number): Date => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n const date: Date = new Date(value);\r\n return date.addDays(days);\r\n};\r\n\r\nDate.addMonths = (value: any, months: number): Date => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n const date: Date = new Date(value);\r\n return date.addMonths(months);\r\n};\r\n\r\nDate.begin = (value: any) => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n return new Date(Date.toFormat(value, 'MM/dd/yyyy'));\r\n};\r\n\r\nDate.end = (value: any) => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n return new Date(value).addDays(1).begin().addMiliseconds(-1);\r\n};\r\n\r\nDate.prototype.begin = function () {\r\n return new Date(this.toFormat('MM/dd/yyyy'));\r\n};\r\n\r\nDate.prototype.end = function () {\r\n const date: Date = this;\r\n return date.addDays(1).begin().addMiliseconds(-1);\r\n};\r\n\r\nDate.prototype.addMiliseconds = function (miliseconds: number) {\r\n const date: Date = this;\r\n date.setMilliseconds(date.getMilliseconds() + miliseconds);\r\n return date;\r\n};\r\n\r\nDate.prototype.addHours = function (hours: number) {\r\n const date: Date = this;\r\n date.setHours(date.getHours() + hours);\r\n return date;\r\n};\r\n\r\nDate.prototype.addDays = function (days: number) {\r\n const date: Date = this;\r\n date.setDate(date.getDate() + days);\r\n return date;\r\n};\r\n\r\nDate.prototype.addMonths = function (months: number) {\r\n const date: Date = this;\r\n date.setMonth(date.getMonth() + months);\r\n return date;\r\n};\r\n\r\nDate.prototype.toFormat = function (format: string) {\r\n const date: Date = this;\r\n let result = format;\r\n result = result.replace('yyyy', date.getFullYear().toString());\r\n result = result.replace('MM', (date.getMonth() + 1).toString().padStart(2, '0'));\r\n result = result.replace('dd', date.getDate().toString().padStart(2, '0'));\r\n result = result.replace('HH', date.getHours().toString().padStart(2, '0'));\r\n result = result.replace('mm', date.getMinutes().toString().padStart(2, '0'));\r\n result = result.replace('ss', date.getSeconds().toString().padStart(2, '0'));\r\n return result;\r\n};\r\n","export { };\r\n\r\ndeclare global {\r\n interface NumberConstructor {\r\n toVNCurrency(value: any): string;\r\n isNumber(value: any): boolean;\r\n isPositiveInteger(value: any): boolean;\r\n isPositiveNumber(value: any): boolean;\r\n }\r\n}\r\n\r\nNumber.toVNCurrency = (value: any) => {\r\n value = (value ?? '').toString().replace(/,/g, '');\r\n if (!value) {\r\n return null;\r\n }\r\n const val = +value;\r\n if (!Number.isNaN(val)) {\r\n return val.toLocaleString('vi-VN');\r\n }\r\n return null;\r\n};\r\n\r\nNumber.isPositiveInteger = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const regex = /^([0-9]*)$/;\r\n return regex.test(value) && +value > 0;\r\n};\r\n\r\nNumber.isPositiveNumber = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const regex = /^([0-9]*)(\\.[0-9]+$){0,1}$/;\r\n return regex.test(value) && +value > 0;\r\n};\r\n\r\nNumber.isNumber = (value: any) => {\r\n if (value === undefined || value === null || value === '') {\r\n return false;\r\n }\r\n return !Number.isNaN(+value);\r\n};\r\n","export { };\r\n\r\ndeclare global {\r\n interface StringConstructor {\r\n isValidEmail(value: any): boolean;\r\n isValidPhone(value: any): boolean;\r\n isValidCode(value: any): boolean;\r\n changeAliasLowerCase(alias: any): string;\r\n aliasIncludes(alias: any, searchText: any): boolean;\r\n format(template: string, ...arr: any[]): string;\r\n templateToDisplay(template: string, entity: any): string; // Convert theo format ${key}\r\n }\r\n}\r\n\r\nString.isValidEmail = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const re = /^(([^<>()\\[\\]\\.,;:\\s@\\\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i;\r\n return re.test(value);\r\n};\r\n\r\nString.isValidPhone = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const re = /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/;\r\n return re.test(value);\r\n};\r\n\r\nString.isValidCode = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const re = /^[a-zA-Z0-9\\@\\_\\-]{2,20}$/;\r\n return re.test(value);\r\n};\r\n\r\nString.changeAliasLowerCase = (alias: any) => {\r\n let str: string = alias?.toString() ?? '';\r\n str = str.toString().toLowerCase();\r\n str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a');\r\n str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, 'e');\r\n str = str.replace(/ì|í|ị|ỉ|ĩ/g, 'i');\r\n str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o');\r\n str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u');\r\n str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y');\r\n str = str.replace(/đ/g, 'd');\r\n str = str.replace(/!|@|%|\\^|\\*|\\(|\\)|\\+|\\=|\\<|\\>|\\?|\\/|,|\\.|\\:|\\;|\\'|\\\"|\\&|\\#|\\[|\\]|~|\\$|_|`|-|{|}|\\||\\\\/g, ' ');\r\n str = str.replace(/ + /g, ' ');\r\n str = str.trim();\r\n return str;\r\n}\r\n\r\nString.aliasIncludes = (alias: any, searchText: any) => {\r\n return String.changeAliasLowerCase(alias).includes(String.changeAliasLowerCase(searchText));\r\n}\r\n\r\nString.format = (template: string, ...arr: any[]) => {\r\n for (let i = 0; i < arr.length; i++) {\r\n const regexp = new RegExp(`\\\\{${i}\\\\}`, 'gi');\r\n template = template.replace(regexp, arr[i]);\r\n }\r\n return template;\r\n}\r\n\r\nString.templateToDisplay = (template: string, entity: any) => {\r\n if(!template) {\r\n return template;\r\n }\r\n const regex = /\\$\\{([A-Za-z._\\-]*)\\}/g;\r\n const matches = template.match(regex) || [];\r\n for (const match of matches) {\r\n const key = match.slice(2, match.length - 1);\r\n if (key) {\r\n template = template.replace(match, entity?.[key] || '');\r\n }\r\n }\r\n return template;\r\n}","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport interface IFirebaseConfiguration {\r\n functionUrl: string;\r\n project: string;\r\n env: string;\r\n}\r\n\r\nexport const FIREBASE_CONFIG = new InjectionToken<IFirebaseConfiguration>('sd.firebase.configuration');","import { InjectionToken } from \"@angular/core\";\r\nimport { MatFormFieldAppearance } from \"@angular/material/form-field\";\r\n\r\nexport interface IFormConfiguration {\r\n appearance?: MatFormFieldAppearance; \r\n}\r\n\r\nexport const FORM_CONFIG = new InjectionToken<IFormConfiguration>('sd.form.configuration');","import { FormControl, AsyncValidatorFn, ValidatorFn } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nexport class SdFormControl extends FormControl {\r\n sdChanges: Subject<boolean> = new Subject<boolean>();\r\n touchChanges: Subject<boolean> = new Subject<boolean>();\r\n pristineChanges: Subject<boolean> = new Subject<boolean>();\r\n constructor(\r\n formState?: Object,\r\n validator: ValidatorFn | ValidatorFn[] = null,\r\n asyncValidator: AsyncValidatorFn | AsyncValidatorFn[] = null\r\n ) {\r\n super(formState, validator, asyncValidator);\r\n }\r\n\r\n markAsTouched({ onlySelf }: { onlySelf?: boolean } = {}): void {\r\n super.markAsTouched({ onlySelf });\r\n this.touchChanges.next(true);\r\n this.sdChanges.next(true);\r\n }\r\n\r\n markAsPristine(opts?: {\r\n onlySelf?: boolean;\r\n }): void {\r\n super.markAsPristine(opts);\r\n this.pristineChanges.next(true);\r\n this.sdChanges.next(true);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdBrowserService {\r\n browerName: string;\r\n browserVersion: string;\r\n get isChrome() { return this.browerName === 'Chrome'; }\r\n get isFirefox() { return this.browerName === 'Firefox'; }\r\n get isSafari() { return this.browerName === 'Safari'; }\r\n constructor() {\r\n const browserNameAndVersion = this.#getBrowserNameAndVersion();\r\n this.browerName = browserNameAndVersion.name;\r\n this.browserVersion = browserNameAndVersion.version;\r\n }\r\n\r\n #getBrowserNameAndVersion = () => {\r\n const ua = navigator.userAgent;\r\n let M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n let tem: RegExpMatchArray;\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'IE', version: (tem[1] || '') };\r\n }\r\n if (M[1] === 'Chrome') {\r\n tem = ua.match(/\\bEdg\\/(\\d+)/);\r\n if (tem != null) { return { name: 'Edge(Chromium)', version: tem[1] }; }\r\n tem = ua.match(/\\bOPR\\/(\\d+)/);\r\n if (tem != null) { return { name: 'Opera', version: tem[1] }; }\r\n }\r\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\r\n tem = ua.match(/version\\/(\\d+)/i);\r\n if (tem != null) { M.splice(1, 1, tem[1]); }\r\n return {\r\n name: M[0],\r\n version: M[1]\r\n };\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdViewDef]'\r\n})\r\nexport class SdViewDefDirective {\r\n // @Input() sdViewDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef, ViewContainerRef } from \"@angular/core\";\r\n@Directive({\r\n selector: '[sdLet]',\r\n})\r\nexport class SdLetDirective {\r\n @Input()\r\n set sdLet(context: any) {\r\n this.context.$implicit = this.context.sdLet = context;\r\n this.#updateView();\r\n }\r\n context: any = {};\r\n\r\n constructor(private vcRef: ViewContainerRef, private templateRef: TemplateRef<any>) { }\r\n\r\n #updateView = () => {\r\n this.vcRef.clear();\r\n this.vcRef.createEmbeddedView(this.templateRef, this.context);\r\n }\r\n}","import { Directive, ElementRef, HostListener, OnInit, Renderer2 } from \"@angular/core\";\r\nimport { SdBrowserService } from '../services/browser.service';\r\n\r\n@Directive({\r\n selector: \"[sdScroll]\",\r\n})\r\nexport class SdScrollDirective implements OnInit {\r\n #overflow: 'hidden' | 'auto' | 'overlay' = 'hidden';\r\n @HostListener('mouseover')\r\n onMouseOver() {\r\n this.#overflow = this.browserService.isFirefox ? 'auto' : 'overlay';\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'overflow', this.#overflow);\r\n }\r\n\r\n @HostListener('mouseout')\r\n onMouseOut() {\r\n this.#overflow = 'hidden';\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'overflow', this.#overflow);\r\n }\r\n constructor(\r\n private elementRef: ElementRef,\r\n private renderer: Renderer2,\r\n private browserService: SdBrowserService) { }\r\n\r\n ngOnInit(): void {\r\n this.renderer.setStyle(this.elementRef.nativeElement, '-webkit-transform', 'translate3d(0, 0, 0)');\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'overflow', this.#overflow);\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdSuffix]'\r\n})\r\nexport class SdSuffixDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdViewDefDirective } from './directives/view-def.directive';\r\nimport { SdLetDirective } from './directives/sd-let.directive';\r\nimport { SdScrollDirective } from './directives/sd-scroll.directive';\r\nimport { SdSuffixDirective } from './directives/sd-suffix.directive';\r\n// import './typings';\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n SdViewDefDirective,\r\n SdLetDirective,\r\n SdScrollDirective,\r\n SdSuffixDirective\r\n ],\r\n exports: [\r\n SdViewDefDirective,\r\n SdLetDirective,\r\n SdScrollDirective,\r\n SdSuffixDirective\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdCommonModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sd-angular-core-common.js","sources":["../../../../projects/sd-core/common/src/lib/typings/array.extension.ts","../../../../projects/sd-core/common/src/lib/typings/date.extension.ts","../../../../projects/sd-core/common/src/lib/typings/number.extension.ts","../../../../projects/sd-core/common/src/lib/typings/string.extension.ts","../../../../projects/sd-core/common/src/lib/configurations/firebase.configuration.ts","../../../../projects/sd-core/common/src/lib/configurations/form.configuration.ts","../../../../projects/sd-core/common/src/lib/models/sd-form-control.ts","../../../../projects/sd-core/common/src/lib/services/browser.service.ts","../../../../projects/sd-core/common/src/lib/directives/view-def.directive.ts","../../../../projects/sd-core/common/src/lib/directives/sd-let.directive.ts","../../../../projects/sd-core/common/src/lib/directives/sd-scroll.directive.ts","../../../../projects/sd-core/common/src/lib/directives/sd-suffix.directive.ts","../../../../projects/sd-core/common/src/lib/common.module.ts","../../../../projects/sd-core/common/sd-angular-core-common.ts"],"sourcesContent":["import { Observable, of } from 'rxjs';\r\n\r\nexport { };\r\n\r\ndeclare global {\r\n interface Array<T = any> {\r\n search(searchText: string | number, fields?: string | string[]): T[];\r\n paging(pageSize: number, page?: number): T[];\r\n toObject(key?: string): { [key: string]: T };\r\n union(key: string, ...args: T[][]): T[];\r\n asObservable(): Observable<T[]>\r\n }\r\n interface ArrayConstructor {\r\n search<T = any>(items: T[], searchText: string | number, fields?: string | string[]): T[];\r\n union<T = any>(key: string, ...args: T[][]): T[];\r\n toObject<T = any>(items: T[], key?: string): { [key: string]: T };\r\n }\r\n}\r\n\r\nArray.prototype.search = function <T = any>(searchText: any, fields?: string | string[]): T[] {\r\n const items: T[] = this;\r\n if (!searchText?.toString()) {\r\n return items;\r\n }\r\n if (Array.isArray(fields)) {\r\n const fs = fields.filter(e => e !== undefined && e !== null && e !== '');\r\n if (!fs.length) {\r\n return items.filter(item => item !== undefined && item !== null && String.aliasIncludes(item, searchText));\r\n }\r\n return items.filter(item => item !== undefined && item !== null && fs.some(field => String.aliasIncludes(item[field], searchText)));\r\n }\r\n if (!fields) {\r\n return items.filter(item => item !== undefined && item !== null && String.aliasIncludes(item, searchText));\r\n }\r\n return items.filter(item => item !== undefined && item !== null && String.aliasIncludes(item[fields], searchText));\r\n};\r\n\r\nArray.prototype.paging = function <T = any>(pageSize: number, page: number = 0): T[] {\r\n const items: T[] = this;\r\n return items.filter((item, index) => {\r\n return index >= page * pageSize\r\n && index < (page + 1) * pageSize;\r\n });\r\n};\r\n\r\nArray.prototype.toObject = function <T = any>(key: string): { [key: string]: T } {\r\n const items: T[] = this;\r\n if (!key) {\r\n return items.filter(item => item !== undefined && item !== null).reduce((obj, item) => { obj[item?.toString()] = item; return obj; }, {});\r\n }\r\n return items.filter(item => item !== undefined && item !== null).reduce((obj, item) => { obj[item[key]?.toString()] = item; return obj; }, {});\r\n};\r\n\r\nArray.prototype.union = function <T = any>(key: string, ...args: T[][]) {\r\n let results: T[] = this;\r\n const filterUnion = <T = any>(val: T, index: number, self: T[]) => val !== undefined && val !== null && self.findIndex((e: { [x: string]: any; }) => !!key ? e[key] === val[key] : e === val) === index;\r\n if (!args?.length) {\r\n return results.filter(filterUnion);\r\n }\r\n for (const arg of args) {\r\n if (Array.isArray(arg)) {\r\n results = [...results, ...arg].filter(filterUnion);\r\n }\r\n }\r\n return results;\r\n}\r\n\r\nArray.prototype.asObservable = function <T = any>() {\r\n const items: T[] = this;\r\n return of(items);\r\n}\r\n\r\nArray.search = <T = any>(items: T[], searchText: string | number, fields?: string | string[]) => {\r\n if (!Array.isArray(items)) {\r\n return [];\r\n }\r\n return items.search(searchText, fields);\r\n};\r\n\r\nArray.union = <T = any>(key: string, ...args: T[][]) => {\r\n return [].union(key, ...args);\r\n}\r\n\r\nArray.toObject = <T>(items: T[], key?: string): { [key: string]: T } => {\r\n if (!Array.isArray(items)) {\r\n return {};\r\n }\r\n return items.toObject(key);\r\n}\r\n\r\n","export { };\r\n\r\ndeclare global {\r\n interface Date {\r\n begin(): Date;\r\n end(): Date;\r\n addMiliseconds(miliseconds: number): Date;\r\n addHours(hours: number): Date;\r\n addDays(days: number): Date;\r\n addMonths(months: number): Date;\r\n toFormat(format: string): string;\r\n }\r\n interface DateConstructor {\r\n equal(date1: any, date2: any): boolean;\r\n parseFrom(value: any, format: string): Date;\r\n isDate(value: any): boolean;\r\n toFormat(value: any, format: string): string;\r\n addMiliseconds(value: any, miliseconds: number): Date;\r\n addHours(value: any, hours: number): Date;\r\n addDays(value: any, days: number): Date;\r\n addMonths(value: any, months: number): Date;\r\n begin(value: any): Date;\r\n end(value: any): Date;\r\n }\r\n}\r\n\r\nDate.equal = (date1: any, date2: any) => {\r\n if (!Date.isDate(date1) && !Date.isDate(date2)) {\r\n return true;\r\n }\r\n if (!Date.isDate(date1) || !Date.isDate(date2)) {\r\n return false;\r\n }\r\n return new Date(date1).getTime() === new Date(date2).getTime();\r\n};\r\n\r\nDate.parseFrom = (value: any, format: string) => {\r\n if (!value) {\r\n return null;\r\n }\r\n if (!format) {\r\n return null;\r\n }\r\n value = value.toString();\r\n const dmy = format.indexOf('dd') > -1 && format.indexOf('MM') > -1 && format.indexOf('yyyy') > -1;\r\n const hms = format.indexOf('HH') > -1 || format.indexOf('mm') > -1 || format.indexOf('ss') > -1;\r\n let strDate = '';\r\n if (dmy) {\r\n const dd = value.substr(format.indexOf('dd'), 'dd'.length);\r\n const MM = value.substr(format.indexOf('MM'), 'MM'.length);\r\n const yyyy = value.substr(format.indexOf('yyyy'), 'yyyy'.length);\r\n if (+yyyy > 0 && +MM > 0 && +dd > 0) {\r\n strDate += `${MM}/${dd}/${yyyy}`;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n const today = new Date();\r\n const yyyy = today.getFullYear().toString();\r\n const MM = (today.getMonth() + 1).toString().padStart(2, '0');\r\n const dd = today.getDate().toString().padStart(2, '0');\r\n strDate += `${MM}/${dd}/${yyyy}`;\r\n }\r\n if (hms) {\r\n const HH = format.indexOf('HH') > -1 ? value.substr(format.indexOf('HH'), 'HH'.length) : '00';\r\n const mm = format.indexOf('mm') > -1 ? value.substr(format.indexOf('mm'), 'mm'.length) : '00';\r\n const ss = format.indexOf('ss') > -1 ? value.substr(format.indexOf('ss'), 'ss'.length) : '00';\r\n strDate += ` ${HH || '00'}:${mm || '00'}:${ss || '00'}`;\r\n }\r\n if (!Date.isDate(strDate)) {\r\n return null;\r\n }\r\n return new Date(strDate);\r\n};\r\n\r\nDate.isDate = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const date = new Date(value);\r\n return !isNaN(date.getTime());\r\n};\r\n\r\nDate.toFormat = (value: any, format: string): string => {\r\n if (!Date.isDate(value)) {\r\n return '';\r\n }\r\n const date: Date = new Date(value);\r\n return date.toFormat(format);\r\n};\r\n\r\nDate.addMiliseconds = (value: any, miliseconds: number): Date => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n const date: Date = new Date(value);\r\n return date.addMiliseconds(miliseconds);\r\n};\r\n\r\nDate.addHours = (value: any, hours: number): Date => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n const date: Date = new Date(value);\r\n return date.addHours(hours);\r\n};\r\n\r\nDate.addDays = (value: any, days: number): Date => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n const date: Date = new Date(value);\r\n return date.addDays(days);\r\n};\r\n\r\nDate.addMonths = (value: any, months: number): Date => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n const date: Date = new Date(value);\r\n return date.addMonths(months);\r\n};\r\n\r\nDate.begin = (value: any) => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n return new Date(Date.toFormat(value, 'MM/dd/yyyy'));\r\n};\r\n\r\nDate.end = (value: any) => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n return new Date(value).addDays(1).begin().addMiliseconds(-1);\r\n};\r\n\r\nDate.prototype.begin = function () {\r\n return new Date(this.toFormat('MM/dd/yyyy'));\r\n};\r\n\r\nDate.prototype.end = function () {\r\n const date: Date = this;\r\n return date.addDays(1).begin().addMiliseconds(-1);\r\n};\r\n\r\nDate.prototype.addMiliseconds = function (miliseconds: number) {\r\n const date: Date = this;\r\n date.setMilliseconds(date.getMilliseconds() + miliseconds);\r\n return date;\r\n};\r\n\r\nDate.prototype.addHours = function (hours: number) {\r\n const date: Date = this;\r\n date.setHours(date.getHours() + hours);\r\n return date;\r\n};\r\n\r\nDate.prototype.addDays = function (days: number) {\r\n const date: Date = this;\r\n date.setDate(date.getDate() + days);\r\n return date;\r\n};\r\n\r\nDate.prototype.addMonths = function (months: number) {\r\n const date: Date = this;\r\n date.setMonth(date.getMonth() + months);\r\n return date;\r\n};\r\n\r\nDate.prototype.toFormat = function (format: string) {\r\n const date: Date = this;\r\n let result = format;\r\n result = result.replace('yyyy', date.getFullYear().toString());\r\n result = result.replace('MM', (date.getMonth() + 1).toString().padStart(2, '0'));\r\n result = result.replace('dd', date.getDate().toString().padStart(2, '0'));\r\n result = result.replace('HH', date.getHours().toString().padStart(2, '0'));\r\n result = result.replace('mm', date.getMinutes().toString().padStart(2, '0'));\r\n result = result.replace('ss', date.getSeconds().toString().padStart(2, '0'));\r\n return result;\r\n};\r\n","export { };\r\n\r\ndeclare global {\r\n interface NumberConstructor {\r\n toVNCurrency(value: any): string;\r\n isNumber(value: any): boolean;\r\n isPositiveInteger(value: any): boolean;\r\n isPositiveNumber(value: any): boolean;\r\n }\r\n}\r\n\r\nNumber.toVNCurrency = (value: any) => {\r\n value = (value ?? '').toString().replace(/,/g, '');\r\n if (!value) {\r\n return null;\r\n }\r\n const val = +value;\r\n if (!Number.isNaN(val)) {\r\n return val.toLocaleString('vi-VN');\r\n }\r\n return null;\r\n};\r\n\r\nNumber.isPositiveInteger = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const regex = /^([0-9]*)$/;\r\n return regex.test(value) && +value > 0;\r\n};\r\n\r\nNumber.isPositiveNumber = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const regex = /^([0-9]*)(\\.[0-9]+$){0,1}$/;\r\n return regex.test(value) && +value > 0;\r\n};\r\n\r\nNumber.isNumber = (value: any) => {\r\n if (value === undefined || value === null || value === '') {\r\n return false;\r\n }\r\n return !Number.isNaN(+value);\r\n};\r\n","export { };\r\n\r\ndeclare global {\r\n interface StringConstructor {\r\n isValidEmail(value: any): boolean;\r\n isValidPhone(value: any): boolean;\r\n isValidCode(value: any): boolean;\r\n changeAliasLowerCase(alias: any): string;\r\n aliasIncludes(alias: any, searchText: any): boolean;\r\n format(template: string, ...arr: any[]): string;\r\n templateToDisplay(template: string, entity: any): string; // Convert theo format ${key}\r\n }\r\n}\r\n\r\nString.isValidEmail = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const re = /^(([^<>()\\[\\]\\.,;:\\s@\\\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i;\r\n return re.test(value);\r\n};\r\n\r\nString.isValidPhone = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const re = /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/;\r\n return re.test(value);\r\n};\r\n\r\nString.isValidCode = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const re = /^[a-zA-Z0-9\\@\\_\\-]{2,20}$/;\r\n return re.test(value);\r\n};\r\n\r\nString.changeAliasLowerCase = (alias: any) => {\r\n let str: string = alias?.toString() ?? '';\r\n str = str.toString().toLowerCase();\r\n str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a');\r\n str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, 'e');\r\n str = str.replace(/ì|í|ị|ỉ|ĩ/g, 'i');\r\n str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o');\r\n str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u');\r\n str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y');\r\n str = str.replace(/đ/g, 'd');\r\n str = str.replace(/!|@|%|\\^|\\*|\\(|\\)|\\+|\\=|\\<|\\>|\\?|\\/|,|\\.|\\:|\\;|\\'|\\\"|\\&|\\#|\\[|\\]|~|\\$|_|`|-|{|}|\\||\\\\/g, ' ');\r\n str = str.replace(/ + /g, ' ');\r\n str = str.trim();\r\n return str;\r\n}\r\n\r\nString.aliasIncludes = (alias: any, searchText: any) => {\r\n return String.changeAliasLowerCase(alias).includes(String.changeAliasLowerCase(searchText));\r\n}\r\n\r\nString.format = (template: string, ...arr: any[]) => {\r\n for (let i = 0; i < arr.length; i++) {\r\n const regexp = new RegExp(`\\\\{${i}\\\\}`, 'gi');\r\n template = template.replace(regexp, arr[i]);\r\n }\r\n return template;\r\n}\r\n\r\nString.templateToDisplay = (template: string, entity: any) => {\r\n if(!template) {\r\n return template;\r\n }\r\n const regex = /\\$\\{([A-Za-z._\\-]*)\\}/g;\r\n const matches = template.match(regex) || [];\r\n for (const match of matches) {\r\n const key = match.slice(2, match.length - 1);\r\n if (key) {\r\n template = template.replace(match, entity?.[key] || '');\r\n }\r\n }\r\n return template;\r\n}","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport interface IFirebaseConfiguration {\r\n functionUrl: string;\r\n project: string;\r\n env: string;\r\n}\r\n\r\nexport const FIREBASE_CONFIG = new InjectionToken<IFirebaseConfiguration>('sd.firebase.configuration');","import { InjectionToken } from \"@angular/core\";\r\nimport { MatFormFieldAppearance } from \"@angular/material/form-field\";\r\n\r\nexport interface IFormConfiguration {\r\n appearance?: MatFormFieldAppearance; \r\n}\r\n\r\nexport const FORM_CONFIG = new InjectionToken<IFormConfiguration>('sd.form.configuration');","import { FormControl, AsyncValidatorFn, ValidatorFn } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nexport class SdFormControl extends FormControl {\r\n sdChanges: Subject<boolean> = new Subject<boolean>();\r\n untouchChanges: Subject<boolean> = new Subject<boolean>();\r\n touchChanges: Subject<boolean> = new Subject<boolean>();\r\n pristineChanges: Subject<boolean> = new Subject<boolean>();\r\n constructor(\r\n formState?: Object,\r\n validator: ValidatorFn | ValidatorFn[] = null,\r\n asyncValidator: AsyncValidatorFn | AsyncValidatorFn[] = null\r\n ) {\r\n super(formState, validator, asyncValidator);\r\n }\r\n\r\n markAsUntouched({ onlySelf }: { onlySelf?: boolean } = {}): void {\r\n super.markAsUntouched({ onlySelf });\r\n this.untouchChanges.next(true);\r\n this.sdChanges.next(true);\r\n }\r\n\r\n markAsTouched({ onlySelf }: { onlySelf?: boolean } = {}): void {\r\n super.markAsTouched({ onlySelf });\r\n this.touchChanges.next(true);\r\n this.sdChanges.next(true);\r\n }\r\n\r\n markAsPristine(opts?: {\r\n onlySelf?: boolean;\r\n }): void {\r\n super.markAsPristine(opts);\r\n this.pristineChanges.next(true);\r\n this.sdChanges.next(true);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdBrowserService {\r\n browerName: string;\r\n browserVersion: string;\r\n get isChrome() { return this.browerName === 'Chrome'; }\r\n get isFirefox() { return this.browerName === 'Firefox'; }\r\n get isSafari() { return this.browerName === 'Safari'; }\r\n constructor() {\r\n const browserNameAndVersion = this.#getBrowserNameAndVersion();\r\n this.browerName = browserNameAndVersion.name;\r\n this.browserVersion = browserNameAndVersion.version;\r\n }\r\n\r\n #getBrowserNameAndVersion = () => {\r\n const ua = navigator.userAgent;\r\n let M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n let tem: RegExpMatchArray;\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'IE', version: (tem[1] || '') };\r\n }\r\n if (M[1] === 'Chrome') {\r\n tem = ua.match(/\\bEdg\\/(\\d+)/);\r\n if (tem != null) { return { name: 'Edge(Chromium)', version: tem[1] }; }\r\n tem = ua.match(/\\bOPR\\/(\\d+)/);\r\n if (tem != null) { return { name: 'Opera', version: tem[1] }; }\r\n }\r\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\r\n tem = ua.match(/version\\/(\\d+)/i);\r\n if (tem != null) { M.splice(1, 1, tem[1]); }\r\n return {\r\n name: M[0],\r\n version: M[1]\r\n };\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdViewDef]'\r\n})\r\nexport class SdViewDefDirective {\r\n // @Input() sdViewDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef, ViewContainerRef } from \"@angular/core\";\r\n@Directive({\r\n selector: '[sdLet]',\r\n})\r\nexport class SdLetDirective {\r\n @Input()\r\n set sdLet(context: any) {\r\n this.context.$implicit = this.context.sdLet = context;\r\n this.#updateView();\r\n }\r\n context: any = {};\r\n\r\n constructor(private vcRef: ViewContainerRef, private templateRef: TemplateRef<any>) { }\r\n\r\n #updateView = () => {\r\n this.vcRef.clear();\r\n this.vcRef.createEmbeddedView(this.templateRef, this.context);\r\n }\r\n}","import { Directive, ElementRef, HostListener, OnInit, Renderer2 } from \"@angular/core\";\r\nimport { SdBrowserService } from '../services/browser.service';\r\n\r\n@Directive({\r\n selector: \"[sdScroll]\",\r\n})\r\nexport class SdScrollDirective implements OnInit {\r\n #overflow: 'hidden' | 'auto' | 'overlay' = 'hidden';\r\n @HostListener('mouseover')\r\n onMouseOver() {\r\n this.#overflow = this.browserService.isFirefox ? 'auto' : 'overlay';\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'overflow', this.#overflow);\r\n }\r\n\r\n @HostListener('mouseout')\r\n onMouseOut() {\r\n this.#overflow = 'hidden';\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'overflow', this.#overflow);\r\n }\r\n constructor(\r\n private elementRef: ElementRef,\r\n private renderer: Renderer2,\r\n private browserService: SdBrowserService) { }\r\n\r\n ngOnInit(): void {\r\n this.renderer.setStyle(this.elementRef.nativeElement, '-webkit-transform', 'translate3d(0, 0, 0)');\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'overflow', this.#overflow);\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdSuffix]'\r\n})\r\nexport class SdSuffixDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdViewDefDirective } from './directives/view-def.directive';\r\nimport { SdLetDirective } from './directives/sd-let.directive';\r\nimport { SdScrollDirective } from './directives/sd-scroll.directive';\r\nimport { SdSuffixDirective } from './directives/sd-suffix.directive';\r\n// import './typings';\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n SdViewDefDirective,\r\n SdLetDirective,\r\n SdScrollDirective,\r\n SdSuffixDirective\r\n ],\r\n exports: [\r\n SdViewDefDirective,\r\n SdLetDirective,\r\n SdScrollDirective,\r\n SdSuffixDirective\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdCommonModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAmBA,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,UAAmB,UAAe,EAAE,MAA0B;IACrF,MAAM,KAAK,GAAQ,IAAI,CAAC;IACxB,IAAI,EAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,GAAE,EAAE;QAC3B,OAAO,KAAK,CAAC;KACd;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACzB,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;YACd,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;SAC5G;QACD,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;KACrI;IACD,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;KAC5G;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AACrH,CAAC,CAAC;AAEF,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,UAAmB,QAAgB,EAAE,OAAe,CAAC;IAC5E,MAAM,KAAK,GAAQ,IAAI,CAAC;IACxB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK;QAC9B,OAAO,KAAK,IAAI,IAAI,GAAG,QAAQ;eAC1B,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,CAAC;KACpC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAmB,GAAW;IACvD,MAAM,KAAK,GAAQ,IAAI,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,GAAG,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KAC3I;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,eAAO,GAAG,OAAC,IAAI,CAAC,GAAG,CAAC,0CAAE,QAAQ,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjJ,CAAC,CAAC;AAEF,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,UAAmB,GAAW,EAAE,GAAG,IAAW;IACpE,IAAI,OAAO,GAAQ,IAAI,CAAC;IACxB,MAAM,WAAW,GAAG,CAAU,GAAM,EAAE,KAAa,EAAE,IAAS,KAAK,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAwB,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC;IACxM,IAAI,EAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAA,EAAE;QACjB,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KACpC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,OAAO,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SACpD;KACF;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAA;AAED,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG;IAC7B,MAAM,KAAK,GAAQ,IAAI,CAAC;IACxB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAA;AAED,KAAK,CAAC,MAAM,GAAG,CAAU,KAAU,EAAE,UAA2B,EAAE,MAA0B;IAC1F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACzB,OAAO,EAAE,CAAC;KACX;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,KAAK,CAAC,KAAK,GAAG,CAAU,GAAW,EAAE,GAAG,IAAW;IACjD,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAChC,CAAC,CAAA;AAED,KAAK,CAAC,QAAQ,GAAG,CAAI,KAAU,EAAE,GAAY;IAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACzB,OAAO,EAAE,CAAC;KACX;IACD,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;;AC9DD,IAAI,CAAC,KAAK,GAAG,CAAC,KAAU,EAAE,KAAU;IAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAC9C,OAAO,IAAI,CAAC;KACb;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAC9C,OAAO,KAAK,CAAC;KACd;IACD,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AACjE,CAAC,CAAC;AAEF,IAAI,CAAC,SAAS,GAAG,CAAC,KAAU,EAAE,MAAc;IAC1C,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,IAAI,CAAC;KACb;IACD,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IACD,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAClG,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChG,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,GAAG,EAAE;QACP,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE;YACnC,OAAO,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;SAClC;aAAM;YACL,OAAO,IAAI,CAAC;SACb;KACF;SAAM;QACL,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvD,OAAO,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;KAClC;IACD,IAAI,GAAG,EAAE;QACP,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC9F,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC9F,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC9F,OAAO,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;KACzD;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QACzB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,IAAI,CAAC,MAAM,GAAG,CAAC,KAAU;IACvB,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,KAAK,CAAC;KACd;IACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAU,EAAE,MAAc;IACzC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,EAAE,CAAC;KACX;IACD,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,IAAI,CAAC,cAAc,GAAG,CAAC,KAAU,EAAE,WAAmB;IACpD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IACD,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAU,EAAE,KAAa;IACxC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IACD,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,IAAI,CAAC,OAAO,GAAG,CAAC,KAAU,EAAE,IAAY;IACtC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IACD,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC;AAEF,IAAI,CAAC,SAAS,GAAG,CAAC,KAAU,EAAE,MAAc;IAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IACD,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,IAAI,CAAC,KAAK,GAAG,CAAC,KAAU;IACtB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,IAAI,CAAC,GAAG,GAAG,CAAC,KAAU;IACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG;IACrB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG;IACnB,MAAM,IAAI,GAAS,IAAI,CAAC;IACxB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,WAAmB;IAC3D,MAAM,IAAI,GAAS,IAAI,CAAC;IACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,WAAW,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAa;IAC/C,MAAM,IAAI,GAAS,IAAI,CAAC;IACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,IAAY;IAC7C,MAAM,IAAI,GAAS,IAAI,CAAC;IACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,MAAc;IACjD,MAAM,IAAI,GAAS,IAAI,CAAC;IACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,MAAc;IAChD,MAAM,IAAI,GAAS,IAAI,CAAC;IACxB,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACjF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1E,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3E,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7E,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7E,OAAO,MAAM,CAAC;AAChB,CAAC;;ACzKD,MAAM,CAAC,YAAY,GAAG,CAAC,KAAU;IAC/B,KAAK,GAAG,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,IAAI,CAAC;KACb;IACD,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC;IACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;KACpC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,iBAAiB,GAAG,CAAC,KAAU;IACpC,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,KAAK,CAAC;KACd;IACD,MAAM,KAAK,GAAG,YAAY,CAAC;IAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,CAAC,gBAAgB,GAAG,CAAC,KAAU;IACnC,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,KAAK,CAAC;KACd;IACD,MAAM,KAAK,GAAG,4BAA4B,CAAC;IAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,CAAC,QAAQ,GAAG,CAAC,KAAU;IAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;QACzD,OAAO,KAAK,CAAC;KACd;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;;AC9BD,MAAM,CAAC,YAAY,GAAG,CAAC,KAAU;IAC/B,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,KAAK,CAAC;KACd;IACD,MAAM,EAAE,GAAG,wHAAwH,CAAC;IACpI,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,YAAY,GAAG,CAAC,KAAU;IAC/B,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,KAAK,CAAC;KACd;IACD,MAAM,EAAE,GAAG,8CAA8C,CAAC;IAC1D,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,WAAW,GAAG,CAAC,KAAU;IAC9B,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,KAAK,CAAC;KACd;IACD,MAAM,EAAE,GAAG,2BAA2B,CAAC;IACvC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,oBAAoB,GAAG,CAAC,KAAU;;IACvC,IAAI,GAAG,SAAW,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,qCAAM,EAAE,CAAC;IAC1C,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;IACnC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;IAC7D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;IACjD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACrC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;IAC7D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;IACjD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACrC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,wFAAwF,EAAE,GAAG,CAAC,CAAC;IACjH,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,OAAO,GAAG,CAAC;AACb,CAAC,CAAA;AAED,MAAM,CAAC,aAAa,GAAG,CAAC,KAAU,EAAE,UAAe;IACjD,OAAO,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9F,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,CAAC,QAAgB,EAAE,GAAG,GAAU;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9C,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7C;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAA;AAED,MAAM,CAAC,iBAAiB,GAAG,CAAC,QAAgB,EAAE,MAAW;IACvD,IAAG,CAAC,QAAQ,EAAE;QACZ,OAAO,QAAQ,CAAC;KACjB;IACD,MAAM,KAAK,GAAG,wBAAwB,CAAC;IACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7C,IAAI,GAAG,EAAE;YACP,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,GAAG,MAAK,EAAE,CAAC,CAAC;SACzD;KACF;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;;MCvEY,eAAe,GAAG,IAAI,cAAc,CAAyB,2BAA2B;;MCDxF,WAAW,GAAG,IAAI,cAAc,CAAqB,uBAAuB;;MCL5E,aAAc,SAAQ,WAAW;IAK5C,YACE,SAAkB,EAClB,YAAyC,IAAI,EAC7C,iBAAwD,IAAI;QAE5D,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAT9C,cAAS,GAAqB,IAAI,OAAO,EAAW,CAAC;QACrD,mBAAc,GAAqB,IAAI,OAAO,EAAW,CAAC;QAC1D,iBAAY,GAAqB,IAAI,OAAO,EAAW,CAAC;QACxD,oBAAe,GAAqB,IAAI,OAAO,EAAW,CAAC;KAO1D;IAED,eAAe,CAAC,EAAE,QAAQ,KAA6B,EAAE;QACvD,KAAK,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;IAED,aAAa,CAAC,EAAE,QAAQ,KAA6B,EAAE;QACrD,KAAK,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;IAED,cAAc,CAAC,IAEd;QACC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;;;;MC5BU,gBAAgB;IAM3B;QAMA,oCAA4B;YAC1B,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC;YAC/B,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,8DAA8D,CAAC,IAAI,EAAE,CAAC;YACvF,IAAI,GAAqB,CAAC;YAC1B,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBACvC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;aAChD;YACD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBACrB,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC/B,IAAI,GAAG,IAAI,IAAI,EAAE;oBAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;iBAAE;gBACxE,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC/B,IAAI,GAAG,IAAI,IAAI,EAAE;oBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;iBAAE;aAChE;YACD,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC1E,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAClC,IAAI,GAAG,IAAI,IAAI,EAAE;gBAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAAE;YAC5C,OAAO;gBACL,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACV,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;aACd,CAAC;SACH,EAAA;QA1BC,MAAM,qBAAqB,GAAG,6DAAA,IAAI,CAA4B,CAAC;QAC/D,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC;QAC7C,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC;KACrD;IAPD,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,EAAE;IACvD,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,EAAE;IACzD,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,EAAE;;;;;YARxD,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;MCCY,kBAAkB;;IAE7B,YAAmB,WAA6B;QAA7B,gBAAW,GAAX,WAAW,CAAkB;KAAK;;;YALtD,SAAS,SAAC;gBACT,QAAQ,EAAE,aAAa;aACxB;;;YAJmB,WAAW;;;;MCIlB,cAAc;IAQzB,YAAoB,KAAuB,EAAU,WAA6B;QAA9D,UAAK,GAAL,KAAK,CAAkB;QAAU,gBAAW,GAAX,WAAW,CAAkB;QAFlF,YAAO,GAAQ,EAAE,CAAC;QAIlB,sBAAc;YACZ,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SAC/D,EAAA;KALsF;IAPvF,IACI,KAAK,CAAC,OAAY;QACpB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;QACtD,+CAAA,IAAI,CAAc,CAAC;KACpB;;;;YARF,SAAS,SAAC;gBACT,QAAQ,EAAE,SAAS;aACpB;;;YAHuC,gBAAgB;YAA7B,WAAW;;;oBAKnC,KAAK;;;;MCCK,iBAAiB;IAa5B,YACU,UAAsB,EACtB,QAAmB,EACnB,cAAgC;QAFhC,eAAU,GAAV,UAAU,CAAY;QACtB,aAAQ,GAAR,QAAQ,CAAW;QACnB,mBAAc,GAAd,cAAc,CAAkB;QAf1C,oBAA2C,QAAQ,EAAC;KAeL;IAb/C,WAAW;QACT,uBAAA,IAAI,aAAa,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAM,GAAG,SAAS,EAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,0CAAiB,CAAC;KACnF;IAGD,UAAU;QACR,uBAAA,IAAI,aAAa,QAAQ,EAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,0CAAiB,CAAC;KACnF;IAMD,QAAQ;QACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,mBAAmB,EAAE,sBAAsB,CAAC,CAAC;QACnG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,0CAAiB,CAAC;KACnF;;;;YAxBF,SAAS,SAAC;gBACT,QAAQ,EAAE,YAAY;aACvB;;;YALmB,UAAU;YAAwB,SAAS;YACtD,gBAAgB;;;0BAOtB,YAAY,SAAC,WAAW;yBAMxB,YAAY,SAAC,UAAU;;;MCTb,iBAAiB;IAC5B,YAAmB,WAA6B;QAA7B,gBAAW,GAAX,WAAW,CAAkB;KAAK;;;YAJtD,SAAS,SAAC;gBACT,QAAQ,EAAE,YAAY;aACvB;;;YAJmB,WAAW;;;ACM/B;MAoBa,cAAc;;;YAnB1B,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;iBACb;gBACD,YAAY,EAAE;oBACZ,kBAAkB;oBAClB,cAAc;oBACd,iBAAiB;oBACjB,iBAAiB;iBAClB;gBACD,OAAO,EAAE;oBACP,kBAAkB;oBAClB,cAAc;oBACd,iBAAiB;oBACjB,iBAAiB;iBAClB;gBACD,SAAS,EAAE,EACV;aACF;;;ACzBD;;;;;;"}
|
|
@@ -1546,7 +1546,7 @@ class SdGridMaterial {
|
|
|
1546
1546
|
if (item[column.field]) {
|
|
1547
1547
|
obj[column.field] = ((_q = column.option) === null || _q === void 0 ? void 0 : _q.displayOnTrue) || 'True';
|
|
1548
1548
|
}
|
|
1549
|
-
else {
|
|
1549
|
+
else if (obj[column.field] !== undefined && obj[column.field] !== null) {
|
|
1550
1550
|
obj[column.field] = ((_r = column.option) === null || _r === void 0 ? void 0 : _r.displayOnFalse) || 'False';
|
|
1551
1551
|
}
|
|
1552
1552
|
}
|
|
@@ -2187,7 +2187,7 @@ class SdDesktopCellView {
|
|
|
2187
2187
|
SdDesktopCellView.decorators = [
|
|
2188
2188
|
{ type: Component, args: [{
|
|
2189
2189
|
selector: 'sd-desktop-cell-view',
|
|
2190
|
-
template: "<ng-container *ngIf=\"item[column.field] | cellView:item:column:gridOption:key | async as view\">\r\n <ng-container *ngIf=\"view.display.hasHtml;else useValue\">\r\n <div *ngIf=\"view.click\" (click)=\"view.click()\" class=\"text-break cursor-pointer\" [matTooltip]=\"view.tooltip\"\r\n [class.text-center]=\"view.display.align === 'center'\" [class.text-right]=\"view.display.align === 'right'\"\r\n [innerHTML]=\"view.display.html | safeHtml\">\r\n </div>\r\n <div *ngIf=\"!view.click\" class=\"text-break\" [matTooltip]=\"view.tooltip\"\r\n [class.text-center]=\"view.display.align === 'center'\" [class.text-right]=\"view.display.align === 'right'\"\r\n [innerHTML]=\"view.display.html | safeHtml\">\r\n </div>\r\n </ng-container>\r\n <ng-template #useValue>\r\n <ng-container *ngIf=\"!!view.badge; else noBadge\">\r\n <sd-badge [type]=\"view.badge.type\" [title]=\"view.display.value\" [color]=\"view.badge.color\"\r\n [icon]=\"view.badge.icon\" [tooltip]=\"view.tooltip\" (sdClick)=\"!!view.click && view.click()\"></sd-badge>\r\n </ng-container>\r\n <ng-template #noBadge>\r\n <ng-container *ngIf=\"column.type !== 'children'; else childrenView\">\r\n <div *ngIf=\"column.type !== 'image'\" class=\"text-break\" [class.text-center]=\"view.display.align === 'center'\"\r\n [class.text-right]=\"view.display.align === 'right'\" [matTooltip]=\"view.tooltip\">\r\n <a *ngIf=\"!!view.click\" href=\"javascript:;\" (click)=\"view.click()\">{{view.display.value}}</a>\r\n <ng-container *ngIf=\"!view.click\">{{view.display.value}}\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"column.type === 'image'\" class=\"align-middle text-center\">\r\n <img *ngIf=\"view.display.value\" [src]=\"view.display.value\" [width]=\"column.option?.width\"\r\n [height]=\"column.option?.height\" class=\"c-image\" (click)=\"!!view.click && view.click()\"\r\n [class.cursor-pointer]=\"!!view.click\">\r\n <mat-icon *ngIf=\"!view.display.value\" class=\"c-img\" [class.cursor-pointer]=\"!!view.click\"\r\n (click)=\"!!view.click && view.click()\">\r\n image</mat-icon>\r\n </div>\r\n </ng-container>\r\n <ng-template #childrenView>\r\n <sd-desktop-cell-children-view [key]=\"key\" [item]=\"item\" [column]=\"column\">\r\n </sd-desktop-cell-children-view>\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n</ng-container>",
|
|
2190
|
+
template: "<ng-container *ngIf=\"item[column.field] | cellView:item:column:gridOption:key | async as view\">\r\n <ng-container *ngIf=\"view.display.hasHtml;else useValue\">\r\n <div *ngIf=\"view.click\" (click)=\"view.click()\" class=\"text-break cursor-pointer\" [matTooltip]=\"view.tooltip\"\r\n [class.text-center]=\"view.display.align === 'center'\" [class.text-right]=\"view.display.align === 'right'\"\r\n [innerHTML]=\"view.display.html | safeHtml\">\r\n </div>\r\n <div *ngIf=\"!view.click\" class=\"text-break\" [matTooltip]=\"view.tooltip\"\r\n [class.text-center]=\"view.display.align === 'center'\" [class.text-right]=\"view.display.align === 'right'\"\r\n [innerHTML]=\"view.display.html | safeHtml\">\r\n </div>\r\n </ng-container>\r\n <ng-template #useValue>\r\n <ng-container *ngIf=\"!!view.badge; else noBadge\">\r\n <sd-badge *ngIf=\"view.display.value\" [type]=\"view.badge.type\" [title]=\"view.display.value\" [color]=\"view.badge.color\"\r\n [icon]=\"view.badge.icon\" [tooltip]=\"view.tooltip\" (sdClick)=\"!!view.click && view.click()\"></sd-badge>\r\n </ng-container>\r\n <ng-template #noBadge>\r\n <ng-container *ngIf=\"column.type !== 'children'; else childrenView\">\r\n <div *ngIf=\"column.type !== 'image'\" class=\"text-break\" [class.text-center]=\"view.display.align === 'center'\"\r\n [class.text-right]=\"view.display.align === 'right'\" [matTooltip]=\"view.tooltip\">\r\n <a *ngIf=\"!!view.click\" href=\"javascript:;\" (click)=\"view.click()\">{{view.display.value}}</a>\r\n <ng-container *ngIf=\"!view.click\">{{view.display.value}}\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"column.type === 'image'\" class=\"align-middle text-center\">\r\n <img *ngIf=\"view.display.value\" [src]=\"view.display.value\" [width]=\"column.option?.width\"\r\n [height]=\"column.option?.height\" class=\"c-image\" (click)=\"!!view.click && view.click()\"\r\n [class.cursor-pointer]=\"!!view.click\">\r\n <mat-icon *ngIf=\"!view.display.value\" class=\"c-img\" [class.cursor-pointer]=\"!!view.click\"\r\n (click)=\"!!view.click && view.click()\">\r\n image</mat-icon>\r\n </div>\r\n </ng-container>\r\n <ng-template #childrenView>\r\n <sd-desktop-cell-children-view [key]=\"key\" [item]=\"item\" [column]=\"column\">\r\n </sd-desktop-cell-children-view>\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n</ng-container>",
|
|
2191
2191
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2192
2192
|
styles: [".text-black400{color:#757575}.c-color-success{color:#4caf50}.c-color-danger{color:#f82c13}.c-image{-o-object-fit:contain;margin:5px 0;object-fit:contain}.c-img{font-size:30px;opacity:.5}.c-img.pointer:hover{opacity:.9}"]
|
|
2193
2193
|
},] }
|
|
@@ -3318,7 +3318,12 @@ class SdCellViewPipe {
|
|
|
3318
3318
|
}
|
|
3319
3319
|
if (column.type === 'bool') {
|
|
3320
3320
|
const { option } = column;
|
|
3321
|
-
|
|
3321
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
3322
|
+
result.display.value = value === true ? ((option === null || option === void 0 ? void 0 : option.displayOnTrue) || 'True') : ((option === null || option === void 0 ? void 0 : option.displayOnFalse) || 'False');
|
|
3323
|
+
}
|
|
3324
|
+
else {
|
|
3325
|
+
result.display.value = null;
|
|
3326
|
+
}
|
|
3322
3327
|
}
|
|
3323
3328
|
}
|
|
3324
3329
|
if (displayOnEmpty) {
|