ecabs-components 1.1.10 → 1.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -68,4 +68,5 @@ v1.1.6 - accumulate all directives
68
68
  v1.1.7 - Add message for alphanumeric-only validation.
69
69
  v1.1.8 - Add directive show-on-truncated to directives.
70
70
  v1.1.9 - Fixed i18n issue.
71
- v1.1.10 - Added color styles for prompt title message.
71
+ v1.1.10 - Added color styles for prompt title message.
72
+ v1.1.12 - Extend @Input properties of `EcabsSelectV2` from `@ng-select` lib.
@@ -2,6 +2,7 @@ import { Injectable } from '@angular/core';
2
2
  import { BehaviorSubject } from 'rxjs';
3
3
  import { errorMessages } from '../consts/error-messages.consts';
4
4
  import { i18n } from '../consts/translations.consts';
5
+ import { mergeUniqueByKey } from '../utils/object-utils';
5
6
  import * as i0 from "@angular/core";
6
7
  export class EcabsComponentsService {
7
8
  defaultConfig = {
@@ -23,9 +24,21 @@ export class EcabsComponentsService {
23
24
  for (const key in currentConfig) {
24
25
  if (Object.prototype.hasOwnProperty.call(currentConfig, key) &&
25
26
  Object.prototype.hasOwnProperty.call(configUpdate, key)) {
26
- updatedConfig[key] = Array.isArray(currentConfig[key])
27
- ? [...currentConfig[key], ...configUpdate[key]]
28
- : { ...currentConfig[key], ...configUpdate[key] };
27
+ if (key === 'claims' && Array.isArray(configUpdate.claims)) {
28
+ updatedConfig.claims = mergeUniqueByKey([...(currentConfig.claims || []), ...configUpdate.claims], 'claim');
29
+ }
30
+ else if (key === 'errorMessages' &&
31
+ Array.isArray(configUpdate.errorMessages)) {
32
+ updatedConfig.errorMessages = mergeUniqueByKey([
33
+ ...(currentConfig.errorMessages || []),
34
+ ...configUpdate.errorMessages,
35
+ ], 'message');
36
+ }
37
+ else {
38
+ updatedConfig[key] = Array.isArray(currentConfig[key])
39
+ ? mergeUniqueByKey([...currentConfig[key], ...configUpdate[key]])
40
+ : { ...currentConfig[key], ...configUpdate[key] };
41
+ }
29
42
  }
30
43
  else {
31
44
  updatedConfig[key] = currentConfig[key];
@@ -61,4 +74,4 @@ export class GenericComponentConfig {
61
74
  errorMessages = [];
62
75
  i18n;
63
76
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtY29tcG9uZW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2Jhc2Uvc2VydmljZXMvZWNhYnMtY29tcG9uZW50cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQU1yRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLGFBQWEsR0FBMEI7UUFDckMsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQixhQUFhLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztRQUNqQyxJQUFJO1FBQ0osTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRU0sT0FBTyxHQUNiLElBQUksZUFBZSxDQUF3QixJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFakUsU0FBUyxDQUFDLE1BQTZCO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxZQUFZLENBQUMsWUFBbUM7UUFDOUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxNQUFNLGFBQWEsR0FBMEIsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBRTFFLEtBQUssTUFBTSxHQUFHLElBQUksYUFBYSxFQUFFO1lBQy9CLElBQ0UsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUM7Z0JBQ3hELE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLEVBQ3ZEO2dCQUNBLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDcEQsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQy9DLENBQUMsQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7YUFDckQ7aUJBQU07Z0JBQ0wsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN6QztTQUNGO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFFBQVEsQ0FBQyxnQkFBMEIsRUFBRTtRQUNuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07WUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPO2lCQUNULFFBQVEsRUFBRTtpQkFDVixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBdUIsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUNoRSxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLFVBQVUsRUFBRTtZQUNkLE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ25FO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3dHQXZEVSxzQkFBc0I7NEdBQXRCLHNCQUFzQixjQUZyQixNQUFNOzs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQTRFRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLGdCQUFnQixHQUFhLEVBQUUsQ0FBQztJQUNoQyxhQUFhLEdBQW1CLEVBQUUsQ0FBQztJQUNuQyxJQUFJLENBQVk7Q0FDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgZXJyb3JNZXNzYWdlcyB9IGZyb20gJy4uL2NvbnN0cy9lcnJvci1tZXNzYWdlcy5jb25zdHMnO1xyXG5pbXBvcnQgeyBpMThuIH0gZnJvbSAnLi4vY29uc3RzL3RyYW5zbGF0aW9ucy5jb25zdHMnO1xyXG5pbXBvcnQgeyBVc2VyQ2xhaW0gfSBmcm9tICcuLi9tb2RlbHMvdXNlci1jbGFpbS5tb2RlbHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVjYWJzQ29tcG9uZW50c1NlcnZpY2Uge1xyXG4gIGRlZmF1bHRDb25maWc6IEVjYWJzQ29tcG9uZW50c0NvbmZpZyA9IHtcclxuICAgIGRlZmF1bHRDb3VudHJpZXM6IFtdLFxyXG4gICAgZXJyb3JNZXNzYWdlczogWy4uLmVycm9yTWVzc2FnZXNdLFxyXG4gICAgaTE4bixcclxuICAgIGNsYWltczogW10sXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBfY29uZmlnOiBCZWhhdmlvclN1YmplY3Q8RWNhYnNDb21wb25lbnRzQ29uZmlnPiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PEVjYWJzQ29tcG9uZW50c0NvbmZpZz4odGhpcy5kZWZhdWx0Q29uZmlnKTtcclxuXHJcbiAgc2V0Q29uZmlnKGNvbmZpZzogRWNhYnNDb21wb25lbnRzQ29uZmlnKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb25maWcubmV4dChjb25maWcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29uZmlnKCk6IE9ic2VydmFibGU8RWNhYnNDb21wb25lbnRzQ29uZmlnPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ29uZmlnKGNvbmZpZ1VwZGF0ZTogRWNhYnNDb21wb25lbnRzQ29uZmlnKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gdGhpcy5fY29uZmlnLmdldFZhbHVlKCk7XHJcbiAgICBjb25zdCB1cGRhdGVkQ29uZmlnOiBFY2Fic0NvbXBvbmVudHNDb25maWcgPSBuZXcgR2VuZXJpY0NvbXBvbmVudENvbmZpZygpO1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGN1cnJlbnRDb25maWcpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjdXJyZW50Q29uZmlnLCBrZXkpICYmXHJcbiAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZ1VwZGF0ZSwga2V5KVxyXG4gICAgICApIHtcclxuICAgICAgICB1cGRhdGVkQ29uZmlnW2tleV0gPSBBcnJheS5pc0FycmF5KGN1cnJlbnRDb25maWdba2V5XSlcclxuICAgICAgICAgID8gWy4uLmN1cnJlbnRDb25maWdba2V5XSwgLi4uY29uZmlnVXBkYXRlW2tleV1dXHJcbiAgICAgICAgICA6IHsgLi4uY3VycmVudENvbmZpZ1trZXldLCAuLi5jb25maWdVcGRhdGVba2V5XSB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHVwZGF0ZWRDb25maWdba2V5XSA9IGN1cnJlbnRDb25maWdba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2NvbmZpZy5uZXh0KHVwZGF0ZWRDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgaGFzQ2xhaW0oYWxsb3dlZENsYWltczogc3RyaW5nW10gPSBbXSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdXNlckNsYWltcyA9IHRoaXMuX2NvbmZpZy5nZXRWYWx1ZSgpLmNsYWltc1xyXG4gICAgICA/IHRoaXMuX2NvbmZpZ1xyXG4gICAgICAgICAgLmdldFZhbHVlKClcclxuICAgICAgICAgIC5jbGFpbXMubWFwKChhcHBVc2VyQ2xhaW06IFVzZXJDbGFpbSkgPT4gYXBwVXNlckNsYWltLmNsYWltKVxyXG4gICAgICA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICBpZiAoYWxsb3dlZENsYWltcy5pbmNsdWRlcygnYWxsb3cnKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodXNlckNsYWltcykge1xyXG4gICAgICByZXR1cm4gYWxsb3dlZENsYWltcy5ldmVyeSgoY2xhaW0pID0+IHVzZXJDbGFpbXMuaW5jbHVkZXMoY2xhaW0pKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVjYWJzQ29tcG9uZW50c0NvbmZpZyB7XHJcbiAgZGVmYXVsdENvdW50cmllcz86IHN0cmluZ1tdO1xyXG4gIGVycm9yTWVzc2FnZXM/OiBFcnJvck1lc3NhZ2VbXTtcclxuICBpMThuPzogRWNhYnNpMThuO1xyXG4gIGNsYWltcz86IFVzZXJDbGFpbVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTWVzc2FnZSB7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRWNhYnNpMThuIHtcclxuICBjYW5jZWxMYWJlbD86IHN0cmluZztcclxuICBjb25maXJtTGFiZWw/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmljQ29tcG9uZW50Q29uZmlnIGltcGxlbWVudHMgRWNhYnNDb21wb25lbnRzQ29uZmlnIHtcclxuICBkZWZhdWx0Q291bnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdID0gW107XHJcbiAgaTE4bjogRWNhYnNpMThuO1xyXG59XHJcbiJdfQ==
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtY29tcG9uZW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2Jhc2Uvc2VydmljZXMvZWNhYnMtY29tcG9uZW50cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXJELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUt6RCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLGFBQWEsR0FBMEI7UUFDckMsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQixhQUFhLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztRQUNqQyxJQUFJO1FBQ0osTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRU0sT0FBTyxHQUNiLElBQUksZUFBZSxDQUF3QixJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFakUsU0FBUyxDQUFDLE1BQTZCO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxZQUFZLENBQUMsWUFBbUM7UUFDOUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxNQUFNLGFBQWEsR0FBMEIsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBRTFFLEtBQUssTUFBTSxHQUFHLElBQUksYUFBYSxFQUFFO1lBQy9CLElBQ0UsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUM7Z0JBQ3hELE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLEVBQ3ZEO2dCQUNBLElBQUksR0FBRyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDMUQsYUFBYSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FDckMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFDekQsT0FBTyxDQUNSLENBQUM7aUJBQ0g7cUJBQU0sSUFDTCxHQUFHLEtBQUssZUFBZTtvQkFDdkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQ3pDO29CQUNBLGFBQWEsQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQzVDO3dCQUNFLEdBQUcsQ0FBQyxhQUFhLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQzt3QkFDdEMsR0FBRyxZQUFZLENBQUMsYUFBYTtxQkFDOUIsRUFDRCxTQUFTLENBQ1YsQ0FBQztpQkFDSDtxQkFBTTtvQkFDTCxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ3BELENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ2pFLENBQUMsQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7aUJBQ3JEO2FBQ0Y7aUJBQU07Z0JBQ0wsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN6QztTQUNGO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFFBQVEsQ0FBQyxnQkFBMEIsRUFBRTtRQUNuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07WUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPO2lCQUNULFFBQVEsRUFBRTtpQkFDVixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBdUIsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUNoRSxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLFVBQVUsRUFBRTtZQUNkLE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ25FO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3dHQXpFVSxzQkFBc0I7NEdBQXRCLHNCQUFzQixjQUZyQixNQUFNOzs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQThGRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLGdCQUFnQixHQUFhLEVBQUUsQ0FBQztJQUNoQyxhQUFhLEdBQW1CLEVBQUUsQ0FBQztJQUNuQyxJQUFJLENBQVk7Q0FDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgZXJyb3JNZXNzYWdlcyB9IGZyb20gJy4uL2NvbnN0cy9lcnJvci1tZXNzYWdlcy5jb25zdHMnO1xyXG5pbXBvcnQgeyBpMThuIH0gZnJvbSAnLi4vY29uc3RzL3RyYW5zbGF0aW9ucy5jb25zdHMnO1xyXG5pbXBvcnQgeyBVc2VyQ2xhaW0gfSBmcm9tICcuLi9tb2RlbHMvdXNlci1jbGFpbS5tb2RlbHMnO1xyXG5pbXBvcnQgeyBtZXJnZVVuaXF1ZUJ5S2V5IH0gZnJvbSAnLi4vdXRpbHMvb2JqZWN0LXV0aWxzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFY2Fic0NvbXBvbmVudHNTZXJ2aWNlIHtcclxuICBkZWZhdWx0Q29uZmlnOiBFY2Fic0NvbXBvbmVudHNDb25maWcgPSB7XHJcbiAgICBkZWZhdWx0Q291bnRyaWVzOiBbXSxcclxuICAgIGVycm9yTWVzc2FnZXM6IFsuLi5lcnJvck1lc3NhZ2VzXSxcclxuICAgIGkxOG4sXHJcbiAgICBjbGFpbXM6IFtdLFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgX2NvbmZpZzogQmVoYXZpb3JTdWJqZWN0PEVjYWJzQ29tcG9uZW50c0NvbmZpZz4gPVxyXG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxFY2Fic0NvbXBvbmVudHNDb25maWc+KHRoaXMuZGVmYXVsdENvbmZpZyk7XHJcblxyXG4gIHNldENvbmZpZyhjb25maWc6IEVjYWJzQ29tcG9uZW50c0NvbmZpZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29uZmlnLm5leHQoY29uZmlnKTtcclxuICB9XHJcblxyXG4gIGdldENvbmZpZygpOiBPYnNlcnZhYmxlPEVjYWJzQ29tcG9uZW50c0NvbmZpZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNvbmZpZyhjb25maWdVcGRhdGU6IEVjYWJzQ29tcG9uZW50c0NvbmZpZyk6IHZvaWQge1xyXG4gICAgY29uc3QgY3VycmVudENvbmZpZyA9IHRoaXMuX2NvbmZpZy5nZXRWYWx1ZSgpO1xyXG4gICAgY29uc3QgdXBkYXRlZENvbmZpZzogRWNhYnNDb21wb25lbnRzQ29uZmlnID0gbmV3IEdlbmVyaWNDb21wb25lbnRDb25maWcoKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjdXJyZW50Q29uZmlnKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY3VycmVudENvbmZpZywga2V5KSAmJlxyXG4gICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjb25maWdVcGRhdGUsIGtleSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gJ2NsYWltcycgJiYgQXJyYXkuaXNBcnJheShjb25maWdVcGRhdGUuY2xhaW1zKSkge1xyXG4gICAgICAgICAgdXBkYXRlZENvbmZpZy5jbGFpbXMgPSBtZXJnZVVuaXF1ZUJ5S2V5KFxyXG4gICAgICAgICAgICBbLi4uKGN1cnJlbnRDb25maWcuY2xhaW1zIHx8IFtdKSwgLi4uY29uZmlnVXBkYXRlLmNsYWltc10sXHJcbiAgICAgICAgICAgICdjbGFpbScsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICBrZXkgPT09ICdlcnJvck1lc3NhZ2VzJyAmJlxyXG4gICAgICAgICAgQXJyYXkuaXNBcnJheShjb25maWdVcGRhdGUuZXJyb3JNZXNzYWdlcylcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHVwZGF0ZWRDb25maWcuZXJyb3JNZXNzYWdlcyA9IG1lcmdlVW5pcXVlQnlLZXkoXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAuLi4oY3VycmVudENvbmZpZy5lcnJvck1lc3NhZ2VzIHx8IFtdKSxcclxuICAgICAgICAgICAgICAuLi5jb25maWdVcGRhdGUuZXJyb3JNZXNzYWdlcyxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgJ21lc3NhZ2UnLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdXBkYXRlZENvbmZpZ1trZXldID0gQXJyYXkuaXNBcnJheShjdXJyZW50Q29uZmlnW2tleV0pXHJcbiAgICAgICAgICAgID8gbWVyZ2VVbmlxdWVCeUtleShbLi4uY3VycmVudENvbmZpZ1trZXldLCAuLi5jb25maWdVcGRhdGVba2V5XV0pXHJcbiAgICAgICAgICAgIDogeyAuLi5jdXJyZW50Q29uZmlnW2tleV0sIC4uLmNvbmZpZ1VwZGF0ZVtrZXldIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHVwZGF0ZWRDb25maWdba2V5XSA9IGN1cnJlbnRDb25maWdba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2NvbmZpZy5uZXh0KHVwZGF0ZWRDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgaGFzQ2xhaW0oYWxsb3dlZENsYWltczogc3RyaW5nW10gPSBbXSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdXNlckNsYWltcyA9IHRoaXMuX2NvbmZpZy5nZXRWYWx1ZSgpLmNsYWltc1xyXG4gICAgICA/IHRoaXMuX2NvbmZpZ1xyXG4gICAgICAgICAgLmdldFZhbHVlKClcclxuICAgICAgICAgIC5jbGFpbXMubWFwKChhcHBVc2VyQ2xhaW06IFVzZXJDbGFpbSkgPT4gYXBwVXNlckNsYWltLmNsYWltKVxyXG4gICAgICA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICBpZiAoYWxsb3dlZENsYWltcy5pbmNsdWRlcygnYWxsb3cnKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodXNlckNsYWltcykge1xyXG4gICAgICByZXR1cm4gYWxsb3dlZENsYWltcy5ldmVyeSgoY2xhaW0pID0+IHVzZXJDbGFpbXMuaW5jbHVkZXMoY2xhaW0pKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVjYWJzQ29tcG9uZW50c0NvbmZpZyB7XHJcbiAgZGVmYXVsdENvdW50cmllcz86IHN0cmluZ1tdO1xyXG4gIGVycm9yTWVzc2FnZXM/OiBFcnJvck1lc3NhZ2VbXTtcclxuICBpMThuPzogRWNhYnNpMThuO1xyXG4gIGNsYWltcz86IFVzZXJDbGFpbVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTWVzc2FnZSB7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRWNhYnNpMThuIHtcclxuICBjYW5jZWxMYWJlbD86IHN0cmluZztcclxuICBjb25maXJtTGFiZWw/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmljQ29tcG9uZW50Q29uZmlnIGltcGxlbWVudHMgRWNhYnNDb21wb25lbnRzQ29uZmlnIHtcclxuICBkZWZhdWx0Q291bnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdID0gW107XHJcbiAgaTE4bjogRWNhYnNpMThuO1xyXG59XHJcbiJdfQ==
@@ -56,4 +56,15 @@ export const removeEmpty = (o, exceptProperties = []) => {
56
56
  }
57
57
  return o;
58
58
  };
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2Jhc2UvdXRpbHMvb2JqZWN0LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sUUFBUSxHQUFHLENBQUksR0FBTSxFQUFFLFVBQXFCLEVBQU8sRUFBRTtJQUN6RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZDLFFBQVEsVUFBVSxDQUFDLFFBQVEsRUFBRTtRQUMzQixLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBWSxDQUFDLENBQUM7WUFFcEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ25EO1FBRUQsS0FBSyxRQUFRO1lBQ1gsT0FBUSxLQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXpDLEtBQUssUUFBUTtZQUNYLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFZLENBQUMsQ0FBQztRQUV0RTtZQUNFLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQ3pCLElBQU8sRUFDUCxJQUFPLEVBQ1AsVUFBcUIsRUFDYixFQUFFO0lBQ1YsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMxQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRTFDLElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRTtRQUNuQixPQUFPLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDekM7U0FBTSxJQUFJLE1BQU0sR0FBRyxNQUFNLEVBQUU7UUFDMUIsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3pDO0lBRUQsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxHQUFHLEVBQ0gsbUJBQTZCLEVBQUUsRUFDNUIsRUFBRTtJQUNMLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUVsQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQy9CLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNqQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDaEU7YUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDakMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN4QjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsNEVBQTRFO0lBQzVFLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDOUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDcEIsNEVBQTRFO1NBQzNFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXZELE9BQU8sV0FBVyxDQUNoQixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQzlCLGdCQUFnQixDQUNaLENBQUM7QUFDVCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBSSxDQUFDLEVBQUUsbUJBQTZCLEVBQUUsRUFBSyxFQUFFO0lBQ3RFLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2pCLElBQ0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUTtZQUN4QixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDL0Q7WUFDQSxTQUFTO1NBQ1Y7UUFFRCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbEMsZ0VBQWdFO1lBQ2hFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2I7S0FDRjtJQUVELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTb3J0ZXI8VD4ge1xyXG4gIHByb3BlcnR5OiBFeHRyYWN0PGtleW9mIFQsIHN0cmluZyB8IG51bWJlciB8IERhdGU+O1xyXG4gIGlzRGVzY2VuZGluZzogYm9vbGVhbjtcclxuICBkYXRhVHlwZT86ICdzdHJpbmcnIHwgJ251bWJlcicgfCAnZGF0ZSc7XHJcbn1cclxuXHJcbmNvbnN0IGdldFZhbHVlID0gPFQ+KG9iajogVCwgc29ydFBhcmFtczogU29ydGVyPFQ+KTogYW55ID0+IHtcclxuICBjb25zdCB2YWx1ZSA9IG9ialtzb3J0UGFyYW1zLnByb3BlcnR5XTtcclxuXHJcbiAgc3dpdGNoIChzb3J0UGFyYW1zLmRhdGFUeXBlKSB7XHJcbiAgICBjYXNlICdkYXRlJzoge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsdWUgYXMgYW55KTtcclxuXHJcbiAgICAgIHJldHVybiBpc05hTihkYXRlLmdldFRpbWUoKSkgPyAwIDogZGF0ZS5nZXRUaW1lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FzZSAnc3RyaW5nJzpcclxuICAgICAgcmV0dXJuICh2YWx1ZSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6IHBhcnNlRmxvYXQodmFsdWUgYXMgYW55KTtcclxuXHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHNvcnRHZW5lcmljID0gPFQ+KFxyXG4gIG9ialg6IFQsXHJcbiAgb2JqWTogVCxcclxuICBzb3J0UGFyYW1zOiBTb3J0ZXI8VD4sXHJcbik6IG51bWJlciA9PiB7XHJcbiAgY29uc3QgdmFsdWVYID0gZ2V0VmFsdWUob2JqWCwgc29ydFBhcmFtcyk7XHJcbiAgY29uc3QgdmFsdWVZID0gZ2V0VmFsdWUob2JqWSwgc29ydFBhcmFtcyk7XHJcblxyXG4gIGlmICh2YWx1ZVggPiB2YWx1ZVkpIHtcclxuICAgIHJldHVybiBzb3J0UGFyYW1zLmlzRGVzY2VuZGluZyA/IC0xIDogMTtcclxuICB9IGVsc2UgaWYgKHZhbHVlWCA8IHZhbHVlWSkge1xyXG4gICAgcmV0dXJuIHNvcnRQYXJhbXMuaXNEZXNjZW5kaW5nID8gMSA6IC0xO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIDA7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgcmVtb3ZlTnVsbFVuZGVmaW5lZHMgPSA8VD4oXHJcbiAgb2JqLFxyXG4gIGV4Y2VwdFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW10sXHJcbik6IFQgPT4ge1xyXG4gIGNvbnN0IG5ld09iaiA9IHt9O1xyXG5cclxuICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgaWYgKG9ialtrZXldID09PSBPYmplY3Qob2JqW2tleV0pKSB7XHJcbiAgICAgIG5ld09ialtrZXldID0gcmVtb3ZlTnVsbFVuZGVmaW5lZHMob2JqW2tleV0sIGV4Y2VwdFByb3BlcnRpZXMpO1xyXG4gICAgfSBlbHNlIGlmIChvYmpba2V5XSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtZnVuY3Rpb24tcmV0dXJuLXR5cGVcclxuICBjb25zdCBwaWNrQnkgPSAob2JqZWN0LCBwcmVkaWNhdGUgPSAodikgPT4gdikgPT5cclxuICAgIE9iamVjdC5lbnRyaWVzKG9iamVjdClcclxuICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBuby11bnVzZWQtdmFyc1xyXG4gICAgICAuZmlsdGVyKChbaywgdl0pID0+IHByZWRpY2F0ZSh2KSlcclxuICAgICAgLnJlZHVjZSgoYWNjLCBbaywgdl0pID0+ICh7IC4uLmFjYywgW2tdOiB2IH0pLCB7fSk7XHJcblxyXG4gIHJldHVybiByZW1vdmVFbXB0eShcclxuICAgIHBpY2tCeShvYmosICh2KSA9PiB2ICE9PSBudWxsKSxcclxuICAgIGV4Y2VwdFByb3BlcnRpZXMsXHJcbiAgKSBhcyBUO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHJlbW92ZUVtcHR5ID0gPFQ+KG8sIGV4Y2VwdFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW10pOiBUID0+IHtcclxuICBmb3IgKGNvbnN0IGsgaW4gbykge1xyXG4gICAgaWYgKFxyXG4gICAgICAhb1trXSB8fFxyXG4gICAgICB0eXBlb2Ygb1trXSAhPT0gJ29iamVjdCcgfHxcclxuICAgICAgZXhjZXB0UHJvcGVydGllcy5maW5kSW5kZXgoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eSA9PT0gaykgIT09IC0xXHJcbiAgICApIHtcclxuICAgICAgY29udGludWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlRW1wdHkob1trXSk7XHJcbiAgICBpZiAoT2JqZWN0LmtleXMob1trXSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGVcclxuICAgICAgZGVsZXRlIG9ba107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbztcclxufTtcclxuIl19
59
+ export const mergeUniqueByKey = (arr, key) => {
60
+ const mergedMap = new Map();
61
+ arr.forEach((item) => {
62
+ if (!item[key]) {
63
+ mergedMap.set(item, item);
64
+ return;
65
+ }
66
+ mergedMap.set(item[key], item);
67
+ });
68
+ return Array.from(mergedMap.values());
69
+ };
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2Jhc2UvdXRpbHMvb2JqZWN0LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sUUFBUSxHQUFHLENBQUksR0FBTSxFQUFFLFVBQXFCLEVBQU8sRUFBRTtJQUN6RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZDLFFBQVEsVUFBVSxDQUFDLFFBQVEsRUFBRTtRQUMzQixLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBWSxDQUFDLENBQUM7WUFFcEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ25EO1FBRUQsS0FBSyxRQUFRO1lBQ1gsT0FBUSxLQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXpDLEtBQUssUUFBUTtZQUNYLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFZLENBQUMsQ0FBQztRQUV0RTtZQUNFLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQ3pCLElBQU8sRUFDUCxJQUFPLEVBQ1AsVUFBcUIsRUFDYixFQUFFO0lBQ1YsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMxQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRTFDLElBQUksTUFBTSxH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QUFTLEdBQUcsSUFBSSxHQUFHLEVBQWEsQ0FBQztJQUN2QyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNkLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BDLE9BQU87U0FDUjtRQUNELFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgU29ydGVyPFQ+IHtcclxuICBwcm9wZXJ0eTogRXh0cmFjdDxrZXlvZiBULCBzdHJpbmcgfCBudW1iZXIgfCBEYXRlPjtcclxuICBpc0Rlc2NlbmRpbmc6IGJvb2xlYW47XHJcbiAgZGF0YVR5cGU/OiAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2RhdGUnO1xyXG59XHJcblxyXG5jb25zdCBnZXRWYWx1ZSA9IDxUPihvYmo6IFQsIHNvcnRQYXJhbXM6IFNvcnRlcjxUPik6IGFueSA9PiB7XHJcbiAgY29uc3QgdmFsdWUgPSBvYmpbc29ydFBhcmFtcy5wcm9wZXJ0eV07XHJcblxyXG4gIHN3aXRjaCAoc29ydFBhcmFtcy5kYXRhVHlwZSkge1xyXG4gICAgY2FzZSAnZGF0ZSc6IHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlIGFzIGFueSk7XHJcblxyXG4gICAgICByZXR1cm4gaXNOYU4oZGF0ZS5nZXRUaW1lKCkpID8gMCA6IGRhdGUuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgIHJldHVybiAodmFsdWUgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUgOiBwYXJzZUZsb2F0KHZhbHVlIGFzIGFueSk7XHJcblxyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzb3J0R2VuZXJpYyA9IDxUPihcclxuICBvYmpYOiBULFxyXG4gIG9ialk6IFQsXHJcbiAgc29ydFBhcmFtczogU29ydGVyPFQ+LFxyXG4pOiBudW1iZXIgPT4ge1xyXG4gIGNvbnN0IHZhbHVlWCA9IGdldFZhbHVlKG9ialgsIHNvcnRQYXJhbXMpO1xyXG4gIGNvbnN0IHZhbHVlWSA9IGdldFZhbHVlKG9ialksIHNvcnRQYXJhbXMpO1xyXG5cclxuICBpZiAodmFsdWVYID4gdmFsdWVZKSB7XHJcbiAgICByZXR1cm4gc29ydFBhcmFtcy5pc0Rlc2NlbmRpbmcgPyAtMSA6IDE7XHJcbiAgfSBlbHNlIGlmICh2YWx1ZVggPCB2YWx1ZVkpIHtcclxuICAgIHJldHVybiBzb3J0UGFyYW1zLmlzRGVzY2VuZGluZyA/IDEgOiAtMTtcclxuICB9XHJcblxyXG4gIHJldHVybiAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHJlbW92ZU51bGxVbmRlZmluZWRzID0gPFQ+KFxyXG4gIG9iaixcclxuICBleGNlcHRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdLFxyXG4pOiBUID0+IHtcclxuICBjb25zdCBuZXdPYmogPSB7fTtcclxuXHJcbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgIGlmIChvYmpba2V5XSA9PT0gT2JqZWN0KG9ialtrZXldKSkge1xyXG4gICAgICBuZXdPYmpba2V5XSA9IHJlbW92ZU51bGxVbmRlZmluZWRzKG9ialtrZXldLCBleGNlcHRQcm9wZXJ0aWVzKTtcclxuICAgIH0gZWxzZSBpZiAob2JqW2tleV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlXHJcbiAgY29uc3QgcGlja0J5ID0gKG9iamVjdCwgcHJlZGljYXRlID0gKHYpID0+IHYpID0+XHJcbiAgICBPYmplY3QuZW50cmllcyhvYmplY3QpXHJcbiAgICAgIC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgbm8tdW51c2VkLXZhcnNcclxuICAgICAgLmZpbHRlcigoW2ssIHZdKSA9PiBwcmVkaWNhdGUodikpXHJcbiAgICAgIC5yZWR1Y2UoKGFjYywgW2ssIHZdKSA9PiAoeyAuLi5hY2MsIFtrXTogdiB9KSwge30pO1xyXG5cclxuICByZXR1cm4gcmVtb3ZlRW1wdHkoXHJcbiAgICBwaWNrQnkob2JqLCAodikgPT4gdiAhPT0gbnVsbCksXHJcbiAgICBleGNlcHRQcm9wZXJ0aWVzLFxyXG4gICkgYXMgVDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCByZW1vdmVFbXB0eSA9IDxUPihvLCBleGNlcHRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdKTogVCA9PiB7XHJcbiAgZm9yIChjb25zdCBrIGluIG8pIHtcclxuICAgIGlmIChcclxuICAgICAgIW9ba10gfHxcclxuICAgICAgdHlwZW9mIG9ba10gIT09ICdvYmplY3QnIHx8XHJcbiAgICAgIGV4Y2VwdFByb3BlcnRpZXMuZmluZEluZGV4KChwcm9wZXJ0eSkgPT4gcHJvcGVydHkgPT09IGspICE9PSAtMVxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnRpbnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUVtcHR5KG9ba10pO1xyXG4gICAgaWYgKE9iamVjdC5rZXlzKG9ba10pLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR5bmFtaWMtZGVsZXRlXHJcbiAgICAgIGRlbGV0ZSBvW2tdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG87XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgbWVyZ2VVbmlxdWVCeUtleSA9IDxUPihhcnI6IFRbXSwga2V5Pzoga2V5b2YgVCk6IFRbXSA9PiB7XHJcbiAgY29uc3QgbWVyZ2VkTWFwID0gbmV3IE1hcDxzdHJpbmcsIFQ+KCk7XHJcbiAgYXJyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgIGlmICghaXRlbVtrZXldKSB7XHJcbiAgICAgIG1lcmdlZE1hcC5zZXQoaXRlbSBhcyBzdHJpbmcsIGl0ZW0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBtZXJnZWRNYXAuc2V0KGl0ZW1ba2V5XSBhcyBzdHJpbmcsIGl0ZW0pO1xyXG4gIH0pO1xyXG4gIHJldHVybiBBcnJheS5mcm9tKG1lcmdlZE1hcC52YWx1ZXMoKSk7XHJcbn07XHJcbiJdfQ==
@@ -16,6 +16,7 @@ export class EcabsSelectV2Component extends EcabsElementBaseComponent {
16
16
  destroyRef;
17
17
  ngSelect;
18
18
  appearance = 'outline';
19
+ appendTo = '';
19
20
  items = [];
20
21
  bindLabel = 'label';
21
22
  bindValue = 'value';
@@ -60,7 +61,7 @@ export class EcabsSelectV2Component extends EcabsElementBaseComponent {
60
61
  }
61
62
  ngOnInit() {
62
63
  this.initTrackBy();
63
- this.placeholder = this.label;
64
+ this.placeholder = this.placeholder || this.label;
64
65
  this.notFoundText = 'No data found';
65
66
  this.selectAllLabel = 'All';
66
67
  this.showLocalLoading = false; // hide default loading icon in ElementWrapper
@@ -150,13 +151,13 @@ export class EcabsSelectV2Component extends EcabsElementBaseComponent {
150
151
  };
151
152
  }
152
153
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsSelectV2Component, deps: [{ token: i0.Injector }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
153
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsSelectV2Component, selector: "ecabs-select-v2", inputs: { appearance: "appearance", items: "items", bindLabel: "bindLabel", bindValue: "bindValue", editableSearchTerm: "editableSearchTerm", searchable: "searchable", clearable: "clearable", multiple: "multiple", notFoundText: "notFoundText", hideSelected: "hideSelected", clearOnBackspace: "clearOnBackspace", clearSearchOnAdd: "clearSearchOnAdd", trackByFn: "trackByFn", minLength: "minLength", searchPlaceholder: "searchPlaceholder", typeahead: "typeahead", closeOnSelect: "closeOnSelect", clearAllText: "clearAllText", selectAllLabel: "selectAllLabel", otherLabel: "otherLabel", othersLabel: "othersLabel" }, providers: [
154
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsSelectV2Component, selector: "ecabs-select-v2", inputs: { appearance: "appearance", appendTo: "appendTo", items: "items", bindLabel: "bindLabel", bindValue: "bindValue", editableSearchTerm: "editableSearchTerm", searchable: "searchable", clearable: "clearable", multiple: "multiple", notFoundText: "notFoundText", hideSelected: "hideSelected", clearOnBackspace: "clearOnBackspace", clearSearchOnAdd: "clearSearchOnAdd", trackByFn: "trackByFn", minLength: "minLength", searchPlaceholder: "searchPlaceholder", typeahead: "typeahead", closeOnSelect: "closeOnSelect", clearAllText: "clearAllText", selectAllLabel: "selectAllLabel", otherLabel: "otherLabel", othersLabel: "othersLabel" }, providers: [
154
155
  {
155
156
  provide: NG_VALUE_ACCESSOR,
156
157
  multi: true,
157
158
  useExisting: EcabsSelectV2Component,
158
159
  },
159
- ], viewQueries: [{ propertyName: "ngSelect", first: true, predicate: NgSelectComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i4.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i4.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i4.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: i5.EcabsSpinnerComponent, selector: "ecabs-loading-spinner", inputs: ["size"] }, { kind: "component", type: i6.EcabsCheckboxToggleComponent, selector: "ecabs-checkbox", inputs: ["type", "text", "label", "labelPosition", "indeterminate", "checked"], outputs: ["click", "changed"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
160
+ ], viewQueries: [{ propertyName: "ngSelect", first: true, predicate: NgSelectComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [appendTo]=\"appendTo\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i4.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i4.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i4.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: i5.EcabsSpinnerComponent, selector: "ecabs-loading-spinner", inputs: ["size"] }, { kind: "component", type: i6.EcabsCheckboxToggleComponent, selector: "ecabs-checkbox", inputs: ["type", "text", "label", "labelPosition", "indeterminate", "checked"], outputs: ["click", "changed"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
160
161
  }
161
162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsSelectV2Component, decorators: [{
162
163
  type: Component,
@@ -166,12 +167,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
166
167
  multi: true,
167
168
  useExisting: EcabsSelectV2Component,
168
169
  },
169
- ], template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n" }]
170
+ ], template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [appendTo]=\"appendTo\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n" }]
170
171
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.DestroyRef }]; }, propDecorators: { ngSelect: [{
171
172
  type: ViewChild,
172
173
  args: [NgSelectComponent, { static: true }]
173
174
  }], appearance: [{
174
175
  type: Input
176
+ }], appendTo: [{
177
+ type: Input
175
178
  }], items: [{
176
179
  type: Input
177
180
  }], bindLabel: [{
@@ -213,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
213
216
  }], othersLabel: [{
214
217
  type: Input
215
218
  }] } });
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QtdjIvZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QtdjIvZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1QsS0FBSyxFQUlMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsR0FFVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBRSxNQUFNLEVBQVcsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyx5QkFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7QUFjaEUsTUFBTSxPQUFPLHNCQUNYLFNBQVEseUJBQXlCO0lBMEZkO0lBQ0E7SUF2Rm5CLFFBQVEsQ0FBb0I7SUFHNUIsVUFBVSxHQUE0QixTQUFTLENBQUM7SUFHaEQsS0FBSyxHQUFrQixFQUFFLENBQUM7SUFHMUIsU0FBUyxHQUFHLE9BQU8sQ0FBQztJQUdwQixTQUFTLEdBQUcsT0FBTyxDQUFDO0lBR3BCLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUczQixVQUFVLENBQVU7SUFHcEIsU0FBUyxHQUFHLElBQUksQ0FBQztJQUdqQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBR2pCLFlBQVksQ0FBUztJQUdyQixZQUFZLENBQVU7SUFHdEIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBR3pCLGdCQUFnQixDQUFVO0lBRzFCLFNBQVMsQ0FBTTtJQUdmLFNBQVMsQ0FBUztJQUdsQixpQkFBaUIsQ0FBUztJQUcxQixTQUFTLENBQWtCO0lBRzNCLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFHckIsWUFBWSxDQUFTO0lBR3JCLGNBQWMsQ0FBUztJQUd2QixVQUFVLEdBQUcsT0FBTyxDQUFDO0lBR3JCLFdBQVcsR0FBRyxRQUFRLENBQUM7SUFFdkIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixHQUFHLENBQWtCO0lBQ3JCLE1BQU0sQ0FBVTtJQUNoQixVQUFVLEdBQUcscUJBQXFCLENBQUM7SUFDbkMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUNuQixTQUFTLENBQWdCO0lBQ3pCLFdBQVcsQ0FBVTtJQUVyQixJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEdBQUc7UUFDWCxJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUU7WUFDekMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRUQsWUFDbUIsUUFBa0IsRUFDbEIsVUFBc0I7UUFFdkMsS0FBSyxFQUFFLENBQUM7UUFIUyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFHekMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsZUFBZSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQyw4Q0FBOEM7UUFDN0UsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLFNBQVMsR0FBYyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFaEUsSUFBSSxTQUFTLEVBQUU7WUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUE2QixDQUFDO1lBRXZELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYTtpQkFDdkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDekMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLFNBQVM7WUFDWixFQUFFLElBQUksQ0FDSixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ25DLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUN6QjthQUNBLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1FBRTFDLElBQUksS0FBSyxFQUFFLFlBQVksRUFBRTtZQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbEM7UUFFRCxJQUFJLFFBQVEsRUFBRSxZQUFZLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQztZQUNqRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFhO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFjO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO0lBQzNCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsUUFBUSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUV6QixPQUFPLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBRXhCLE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QixJQUNFLElBQUksQ0FBQyxXQUFXO1lBQ2hCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1lBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUN6QjtZQUNBLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUNyQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsS0FBb0I7UUFDOUIsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN2RCxNQUFNLFNBQVMsR0FBRyxDQUFDLFFBQXVCLEVBQVEsRUFBRTtnQkFDbEQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQW9CLEVBQUUsRUFBRTtvQkFDeEMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDO1lBRUYsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFvQjtRQUMxQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUM3QjtZQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sWUFBWSxHQUNoQixJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDO1lBRTFELElBQUksS0FBSyxFQUFFLE1BQU0sS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRTtnQkFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUN2QjtZQUVELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRVMsV0FBVztRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBaUIsRUFBRSxFQUFFO1lBQ3JDLE9BQU8sSUFBSSxFQUFFLEtBQUssQ0FBQztRQUNyQixDQUFDLENBQUM7SUFDSixDQUFDO3dHQXpOVSxzQkFBc0I7NEZBQXRCLHNCQUFzQixncEJBUnRCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsV0FBVyxFQUFFLHNCQUFzQjthQUNwQztTQUNGLG9FQU1VLGlCQUFpQiwwR0N4QzlCLHluR0EyRUE7OzRGRHZDYSxzQkFBc0I7a0JBWmxDLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsd0JBQXdCO3lCQUNwQztxQkFDRjt3SEFPRCxRQUFRO3NCQURQLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUk5QyxVQUFVO3NCQURULEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIERlc3Ryb3lSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBOZ0NvbnRyb2wsXHJcbiAgVW50eXBlZEZvcm1Db250cm9sLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XHJcblxyXG5pbXBvcnQgeyBmaWx0ZXIsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnQgZnJvbSAnLi4vYmFzZS9lbGVtZW50LWJhc2UnO1xyXG5pbXBvcnQgeyBTZWxlY3RWYWx1ZSB9IGZyb20gJy4uL2Jhc2UvbW9kZWxzL2VsZW1lbnQubW9kZWxzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlY2Ficy1zZWxlY3QtdjInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy1zZWxlY3QtdjIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VjYWJzLXNlbGVjdC12Mi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBFY2Fic1NlbGVjdFYyQ29tcG9uZW50LFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWNhYnNTZWxlY3RWMkNvbXBvbmVudFxyXG4gIGV4dGVuZHMgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcywgT25Jbml0XHJcbntcclxuICBAVmlld0NoaWxkKE5nU2VsZWN0Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIG5nU2VsZWN0OiBOZ1NlbGVjdENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KClcclxuICBhcHBlYXJhbmNlOiAndW5kZXJsaW5lJyB8ICdvdXRsaW5lJyA9ICdvdXRsaW5lJztcclxuXHJcbiAgQElucHV0KClcclxuICBpdGVtczogU2VsZWN0VmFsdWVbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGJpbmRMYWJlbCA9ICdsYWJlbCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYmluZFZhbHVlID0gJ3ZhbHVlJztcclxuXHJcbiAgQElucHV0KClcclxuICBlZGl0YWJsZVNlYXJjaFRlcm0gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWFyY2hhYmxlOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNsZWFyYWJsZSA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbXVsdGlwbGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBub3RGb3VuZFRleHQ6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBoaWRlU2VsZWN0ZWQ6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY2xlYXJPbkJhY2tzcGFjZSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNsZWFyU2VhcmNoT25BZGQ6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdHJhY2tCeUZuOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbWluTGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VhcmNoUGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICB0eXBlYWhlYWQ6IFN1YmplY3Q8c3RyaW5nPjtcclxuXHJcbiAgQElucHV0KClcclxuICBjbG9zZU9uU2VsZWN0ID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBjbGVhckFsbFRleHQ6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxlY3RBbGxMYWJlbDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG90aGVyTGFiZWwgPSAnT3RoZXInO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG90aGVyc0xhYmVsID0gJ090aGVycyc7XHJcblxyXG4gIHRvdWNoZWQgPSBmYWxzZTtcclxuICB2YWw6IHN0cmluZyB8IG51bWJlcjtcclxuICBpc09wZW46IGJvb2xlYW47XHJcbiAgZ3JvdXBCeUtleSA9ICdzZWxlY3RBbGxJZGVudGlmaWVyJztcclxuICBzZWxlY3RlZE11bHRpID0gW107XHJcbiAgaXRlbXNMaXN0OiBTZWxlY3RWYWx1ZVtdO1xyXG4gIGlzVHlwZUFoZWFkOiBib29sZWFuO1xyXG5cclxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnZhbDtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSh2YWwpIHtcclxuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnZhbCAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMudmFsID0gdmFsO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCh2YWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZjogRGVzdHJveVJlZixcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFRyYWNrQnkoKTtcclxuXHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5sYWJlbDtcclxuICAgIHRoaXMubm90Rm91bmRUZXh0ID0gJ05vIGRhdGEgZm91bmQnO1xyXG4gICAgdGhpcy5zZWxlY3RBbGxMYWJlbCA9ICdBbGwnO1xyXG4gICAgdGhpcy5zaG93TG9jYWxMb2FkaW5nID0gZmFsc2U7IC8vIGhpZGUgZGVmYXVsdCBsb2FkaW5nIGljb24gaW4gRWxlbWVudFdyYXBwZXJcclxuICAgIHRoaXMuY2xlYXJBbGxUZXh0ID0gJ0NsZWFyIGFsbCc7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCk7XHJcblxyXG4gICAgaWYgKG5nQ29udHJvbCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgICB0aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlc1xyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XHJcblxyXG4gICAgdGhpcy50eXBlYWhlYWRcclxuICAgICAgPy5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxyXG4gICAgICAgIGZpbHRlcigodGVybSkgPT4gISF0ZXJtKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgICB0aGlzLmlzVHlwZUFoZWFkID0gISF2YWw7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBpdGVtcywgbXVsdGlwbGUgfSA9IGNoYW5nZXMgPz8ge307XHJcblxyXG4gICAgaWYgKGl0ZW1zPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5pdGVtc0xpc3QgPSB0aGlzLml0ZW1zO1xyXG4gICAgICB0aGlzLnNlbGVjdEFsbEZuKHRoaXMuaXRlbXNMaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobXVsdGlwbGU/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLmNsb3NlT25TZWxlY3QgPSB0aGlzLmNsb3NlT25TZWxlY3QgfHwgZmFsc2U7XHJcbiAgICAgIHRoaXMuY2xlYXJTZWFyY2hPbkFkZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IG9uVG91Y2hlZDtcclxuICB9XHJcblxyXG4gIG1hcmtBc1RvdWNoZWQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudG91Y2hlZCkge1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XHJcblxyXG4gIG9uQmx1cigpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCh0aGlzLnZhbHVlKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuaXNUeXBlQWhlYWQgJiZcclxuICAgICAgIXRoaXMubmdTZWxlY3QuaXNPcGVuICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNdWx0aS5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICB0aGlzLml0ZW1zTGlzdCA9IHRoaXMuc2VsZWN0ZWRNdWx0aTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEFsbEZuKGl0ZW1zOiBTZWxlY3RWYWx1ZVtdKTogdm9pZCB7XHJcbiAgICBpZiAoISFpdGVtcz8ubGVuZ3RoICYmIHRoaXMubXVsdGlwbGUgJiYgIXRoaXMudHlwZWFoZWFkKSB7XHJcbiAgICAgIGNvbnN0IGFsbFNlbGVjdCA9IChlbGVtZW50czogU2VsZWN0VmFsdWVbXSk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IFNlbGVjdFZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBlbGVtZW50W3RoaXMuZ3JvdXBCeUtleV0gPSAnJztcclxuICAgICAgICB9KTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGFsbFNlbGVjdChpdGVtcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VkKGV2ZW50OiBTZWxlY3RWYWx1ZVtdKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAoIWV2ZW50Py5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLml0ZW1zTGlzdCA9IHRoaXMuaXRlbXM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNdWx0aSA9IGV2ZW50O1xyXG4gICAgICBjb25zdCB2YWx1ZXNUb0NoZWNrID0gbmV3IFNldChldmVudC5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpKTtcclxuICAgICAgY29uc3QgZmlsdGVyZWRMaXN0ID1cclxuICAgICAgICB0aGlzLml0ZW1zPy5maWx0ZXIoKHsgdmFsdWU6IGl0ZW0gfSkgPT4gIXZhbHVlc1RvQ2hlY2suaGFzKGl0ZW0pKSB8fCBbXTtcclxuICAgICAgdGhpcy5pdGVtc0xpc3QgPSBbLi4udGhpcy5zZWxlY3RlZE11bHRpLCAuLi5maWx0ZXJlZExpc3RdO1xyXG5cclxuICAgICAgaWYgKGV2ZW50Py5sZW5ndGggPT09IHRoaXMuaXRlbXNMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLm5nU2VsZWN0LmNsb3NlKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubmdTZWxlY3QuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBpbml0VHJhY2tCeSgpIHtcclxuICAgIHRoaXMudHJhY2tCeUZuID0gKGl0ZW06IFNlbGVjdFZhbHVlKSA9PiB7XHJcbiAgICAgIHJldHVybiBpdGVtPy52YWx1ZTtcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiIsIjxlY2Ficy1lbGVtZW50LXdyYXBwZXIgW2RhdGFdPVwiZ2V0RGF0YSgpXCI+XHJcbiAgPG5nLXNlbGVjdCBjbGFzcz1cImZvcm0tZmllbGRfX3NlbGVjdFwiXHJcbiAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcclxuICAgICAgICAgICAgIFtsYWJlbEZvcklkXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgW2JpbmRMYWJlbF09XCJiaW5kTGFiZWwgfHwgbnVsbFwiXHJcbiAgICAgICAgICAgICBbYmluZFZhbHVlXT1cImJpbmRWYWx1ZSB8fCBudWxsXCJcclxuICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cInNlYXJjaGFibGVcIlxyXG4gICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxyXG4gICAgICAgICAgICAgW2NsZWFyU2VhcmNoT25BZGRdPVwiY2xlYXJTZWFyY2hPbkFkZFwiXHJcbiAgICAgICAgICAgICBbZ3JvdXBCeV09XCJncm91cEJ5S2V5XCJcclxuICAgICAgICAgICAgIFtzZWxlY3RhYmxlR3JvdXBdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICBbc2VsZWN0YWJsZUdyb3VwQXNNb2RlbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICBbaXRlbXNdPVwiaXRlbXNMaXN0XCJcclxuICAgICAgICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXHJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkXT1cImhpZGVTZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICBbdHJhY2tCeUZuXT1cInRyYWNrQnlGblwiXHJcbiAgICAgICAgICAgICBbbWluVGVybUxlbmd0aF09XCJtaW5MZW5ndGhcIlxyXG4gICAgICAgICAgICAgW3R5cGVUb1NlYXJjaFRleHRdPVwic2VhcmNoUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgW3R5cGVhaGVhZF09XCJ0eXBlYWhlYWRcIlxyXG4gICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJjbG9zZU9uU2VsZWN0XCJcclxuICAgICAgICAgICAgIFtjbGVhck9uQmFja3NwYWNlXT1cImNsZWFyT25CYWNrc3BhY2VcIlxyXG4gICAgICAgICAgICAgW2VkaXRhYmxlU2VhcmNoVGVybV09XCJlZGl0YWJsZVNlYXJjaFRlcm1cIlxyXG4gICAgICAgICAgICAgKG9wZW4pPVwidGhpcy5pc09wZW4gPSB0cnVlXCJcclxuICAgICAgICAgICAgIChjbG9zZSk9XCJ0aGlzLmlzT3BlbiA9IGZhbHNlXCJcclxuICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIFtub3RGb3VuZFRleHRdPVwibm90Rm91bmRUZXh0XCJcclxuICAgICAgICAgICAgIFtjbGVhckFsbFRleHRdPVwiY2xlYXJBbGxUZXh0XCJcclxuICAgICAgICAgICAgIFtyZWFkb25seV09XCJ0aGlzLmRpc2FibGVkXCI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0eXBlYWhlYWRcIj5cclxuICAgICAgPG5nLW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc0xpc3RcIiBbdmFsdWVdPVwiaXRlbT8udmFsdWVcIj5cclxuICAgICAgICB7eyBpdGVtPy5sYWJlbCB9fVxyXG4gICAgICA8L25nLW9wdGlvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZy1sb2FkaW5nc3Bpbm5lci10bXA+XHJcbiAgICAgIDxlY2Ficy1sb2FkaW5nLXNwaW5uZXIgc2l6ZT1cInRpbnlcIj48L2VjYWJzLWxvYWRpbmctc3Bpbm5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhYmluZFZhbHVlICYmICEhYmluZExhYmVsXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXAgbGV0LWl0ZW1zPVwiaXRlbXNcIj5cclxuICAgICAgICA8IS0tI0N1c3RvbSBkaXNwbGF5IG9mIGZpcnN0IHNlbGVjdGVkIGl0ZW0gYW5kICgrMSBtb3JlKSBwYXR0ZXJuIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNPcGVuXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zIHwgc2xpY2U6MDoxXCI+XHJcbiAgICAgICAgICAgIHt7IGl0ZW0/LlsnbGFiZWwnXSB9fSA8c3BhbiAqbmdJZj1cIml0ZW1zLmxlbmd0aCA+IDFcIj5cclxuICAgICAgICAgICAgKCt7eyBpdGVtcy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgIHt7IChpdGVtcz8ubGVuZ3RoID09PSAyID8gb3RoZXJMYWJlbCA6IG90aGVyc0xhYmVsKSB9fSlcclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGVcIj5cclxuICAgICAgPCEtLSNBZGQgc2VsZWN0QWxsIGFuZCBpbmRpdmlkdWFsIGNoZWNrYm94ZXMgZm9yIG11bHRpcGxlLWVuYWJsZWQgbGlzdCAtLT5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGdyb3VwLXRtcCBsZXQtaXRlbSQ9XCJpdGVtJFwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgPGVjYWJzLWNoZWNrYm94IFtuZ01vZGVsXT1cIml0ZW0kLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJzZWxlY3RBbGxMYWJlbFwiPlxyXG4gICAgICAgIDwvZWNhYnMtY2hlY2tib3g+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgbmctb3B0aW9uLXRtcCBsZXQtaXRlbSQ9XCJpdGVtJFwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgPGVjYWJzLWNoZWNrYm94IFtuZ01vZGVsXT1cIml0ZW0kLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJpdGVtJD8uWydsYWJlbCddXCI+XHJcbiAgICAgICAgPC9lY2Ficy1jaGVja2JveD5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctc2VsZWN0PlxyXG48L2VjYWJzLWVsZW1lbnQtd3JhcHBlcj5cclxuIl19
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QtdjIvZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QtdjIvZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1QsS0FBSyxFQUlMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsR0FFVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBRSxNQUFNLEVBQVcsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyx5QkFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7QUFjaEUsTUFBTSxPQUFPLHNCQUNYLFNBQVEseUJBQXlCO0lBNkZkO0lBQ0E7SUExRm5CLFFBQVEsQ0FBb0I7SUFHNUIsVUFBVSxHQUE0QixTQUFTLENBQUM7SUFHaEQsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUdkLEtBQUssR0FBa0IsRUFBRSxDQUFDO0lBRzFCLFNBQVMsR0FBRyxPQUFPLENBQUM7SUFHcEIsU0FBUyxHQUFHLE9BQU8sQ0FBQztJQUdwQixrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFHM0IsVUFBVSxDQUFVO0lBR3BCLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFHakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUdqQixZQUFZLENBQVM7SUFHckIsWUFB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QURaLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBEZXN0cm95UmVmLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgTmdDb250cm9sLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xyXG5cclxuaW1wb3J0IHsgZmlsdGVyLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCBFY2Fic0VsZW1lbnRCYXNlQ29tcG9uZW50IGZyb20gJy4uL2Jhc2UvZWxlbWVudC1iYXNlJztcclxuaW1wb3J0IHsgU2VsZWN0VmFsdWUgfSBmcm9tICcuLi9iYXNlL21vZGVscy9lbGVtZW50Lm1vZGVscyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWNhYnMtc2VsZWN0LXYyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWNhYnMtc2VsZWN0LXYyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9lY2Ficy1zZWxlY3QtdjIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogRWNhYnNTZWxlY3RWMkNvbXBvbmVudCxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVjYWJzU2VsZWN0VjJDb21wb25lbnRcclxuICBleHRlbmRzIEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIE9uSW5pdFxyXG57XHJcbiAgQFZpZXdDaGlsZChOZ1NlbGVjdENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBuZ1NlbGVjdDogTmdTZWxlY3RDb21wb25lbnQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYXBwZWFyYW5jZTogJ3VuZGVybGluZScgfCAnb3V0bGluZScgPSAnb3V0bGluZSc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYXBwZW5kVG8gPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBpdGVtczogU2VsZWN0VmFsdWVbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGJpbmRMYWJlbCA9ICdsYWJlbCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYmluZFZhbHVlID0gJ3ZhbHVlJztcclxuXHJcbiAgQElucHV0KClcclxuICBlZGl0YWJsZVNlYXJjaFRlcm0gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWFyY2hhYmxlOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNsZWFyYWJsZSA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbXVsdGlwbGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBub3RGb3VuZFRleHQ6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBoaWRlU2VsZWN0ZWQ6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY2xlYXJPbkJhY2tzcGFjZSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNsZWFyU2VhcmNoT25BZGQ6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdHJhY2tCeUZuOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbWluTGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VhcmNoUGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICB0eXBlYWhlYWQ6IFN1YmplY3Q8c3RyaW5nPjtcclxuXHJcbiAgQElucHV0KClcclxuICBjbG9zZU9uU2VsZWN0ID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBjbGVhckFsbFRleHQ6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxlY3RBbGxMYWJlbDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG90aGVyTGFiZWwgPSAnT3RoZXInO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG90aGVyc0xhYmVsID0gJ090aGVycyc7XHJcblxyXG4gIHRvdWNoZWQgPSBmYWxzZTtcclxuICB2YWw6IHN0cmluZyB8IG51bWJlcjtcclxuICBpc09wZW46IGJvb2xlYW47XHJcbiAgZ3JvdXBCeUtleSA9ICdzZWxlY3RBbGxJZGVudGlmaWVyJztcclxuICBzZWxlY3RlZE11bHRpID0gW107XHJcbiAgaXRlbXNMaXN0OiBTZWxlY3RWYWx1ZVtdO1xyXG4gIGlzVHlwZUFoZWFkOiBib29sZWFuO1xyXG5cclxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnZhbDtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSh2YWwpIHtcclxuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnZhbCAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMudmFsID0gdmFsO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCh2YWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZjogRGVzdHJveVJlZixcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFRyYWNrQnkoKTtcclxuXHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlciB8fCB0aGlzLmxhYmVsO1xyXG4gICAgdGhpcy5ub3RGb3VuZFRleHQgPSAnTm8gZGF0YSBmb3VuZCc7XHJcbiAgICB0aGlzLnNlbGVjdEFsbExhYmVsID0gJ0FsbCc7XHJcbiAgICB0aGlzLnNob3dMb2NhbExvYWRpbmcgPSBmYWxzZTsgLy8gaGlkZSBkZWZhdWx0IGxvYWRpbmcgaWNvbiBpbiBFbGVtZW50V3JhcHBlclxyXG4gICAgdGhpcy5jbGVhckFsbFRleHQgPSAnQ2xlYXIgYWxsJztcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcclxuXHJcbiAgICBpZiAobmdDb250cm9sKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuXHJcbiAgICAgIHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcclxuXHJcbiAgICB0aGlzLnR5cGVhaGVhZFxyXG4gICAgICA/LnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXHJcbiAgICAgICAgZmlsdGVyKCh0ZXJtKSA9PiAhIXRlcm0pLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNUeXBlQWhlYWQgPSAhIXZhbDtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGl0ZW1zLCBtdWx0aXBsZSB9ID0gY2hhbmdlcyA/PyB7fTtcclxuXHJcbiAgICBpZiAoaXRlbXM/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLml0ZW1zTGlzdCA9IHRoaXMuaXRlbXM7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsRm4odGhpcy5pdGVtc0xpc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtdWx0aXBsZT8uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VPblNlbGVjdCA9IHRoaXMuY2xvc2VPblNlbGVjdCB8fCBmYWxzZTtcclxuICAgICAgdGhpcy5jbGVhclNlYXJjaE9uQWRkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gb25Ub3VjaGVkO1xyXG4gIH1cclxuXHJcbiAgbWFya0FzVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50b3VjaGVkKSB7XHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICBvblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoKHRoaXMudmFsdWUpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5pc1R5cGVBaGVhZCAmJlxyXG4gICAgICAhdGhpcy5uZ1NlbGVjdC5pc09wZW4gJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZE11bHRpLmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaXRlbXNMaXN0ID0gdGhpcy5zZWxlY3RlZE11bHRpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsRm4oaXRlbXM6IFNlbGVjdFZhbHVlW10pOiB2b2lkIHtcclxuICAgIGlmICghIWl0ZW1zPy5sZW5ndGggJiYgdGhpcy5tdWx0aXBsZSAmJiAhdGhpcy50eXBlYWhlYWQpIHtcclxuICAgICAgY29uc3QgYWxsU2VsZWN0ID0gKGVsZW1lbnRzOiBTZWxlY3RWYWx1ZVtdKTogdm9pZCA9PiB7XHJcbiAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogU2VsZWN0VmFsdWUpID0+IHtcclxuICAgICAgICAgIGVsZW1lbnRbdGhpcy5ncm91cEJ5S2V5XSA9ICcnO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgYWxsU2VsZWN0KGl0ZW1zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZWQoZXZlbnQ6IFNlbGVjdFZhbHVlW10pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIGlmICghZXZlbnQ/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuaXRlbXNMaXN0ID0gdGhpcy5pdGVtcztcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZE11bHRpID0gZXZlbnQ7XHJcbiAgICAgIGNvbnN0IHZhbHVlc1RvQ2hlY2sgPSBuZXcgU2V0KGV2ZW50Lm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSkpO1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZExpc3QgPVxyXG4gICAgICAgIHRoaXMuaXRlbXM/LmZpbHRlcigoeyB2YWx1ZTogaXRlbSB9KSA9PiAhdmFsdWVzVG9DaGVjay5oYXMoaXRlbSkpIHx8IFtdO1xyXG4gICAgICB0aGlzLml0ZW1zTGlzdCA9IFsuLi50aGlzLnNlbGVjdGVkTXVsdGksIC4uLmZpbHRlcmVkTGlzdF07XHJcblxyXG4gICAgICBpZiAoZXZlbnQ/Lmxlbmd0aCA9PT0gdGhpcy5pdGVtc0xpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMubmdTZWxlY3QuY2xvc2UoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5uZ1NlbGVjdC5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGluaXRUcmFja0J5KCkge1xyXG4gICAgdGhpcy50cmFja0J5Rm4gPSAoaXRlbTogU2VsZWN0VmFsdWUpID0+IHtcclxuICAgICAgcmV0dXJuIGl0ZW0/LnZhbHVlO1xyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIiwiPGVjYWJzLWVsZW1lbnQtd3JhcHBlciBbZGF0YV09XCJnZXREYXRhKClcIj5cclxuICA8bmctc2VsZWN0IGNsYXNzPVwiZm9ybS1maWVsZF9fc2VsZWN0XCJcclxuICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxyXG4gICAgICAgICAgICAgW2FwcGVuZFRvXT1cImFwcGVuZFRvXCJcclxuICAgICAgICAgICAgIFtsYWJlbEZvcklkXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgW2JpbmRMYWJlbF09XCJiaW5kTGFiZWwgfHwgbnVsbFwiXHJcbiAgICAgICAgICAgICBbYmluZFZhbHVlXT1cImJpbmRWYWx1ZSB8fCBudWxsXCJcclxuICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cInNlYXJjaGFibGVcIlxyXG4gICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxyXG4gICAgICAgICAgICAgW2NsZWFyU2VhcmNoT25BZGRdPVwiY2xlYXJTZWFyY2hPbkFkZFwiXHJcbiAgICAgICAgICAgICBbZ3JvdXBCeV09XCJncm91cEJ5S2V5XCJcclxuICAgICAgICAgICAgIFtzZWxlY3RhYmxlR3JvdXBdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICBbc2VsZWN0YWJsZUdyb3VwQXNNb2RlbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICBbaXRlbXNdPVwiaXRlbXNMaXN0XCJcclxuICAgICAgICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXHJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkXT1cImhpZGVTZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICBbdHJhY2tCeUZuXT1cInRyYWNrQnlGblwiXHJcbiAgICAgICAgICAgICBbbWluVGVybUxlbmd0aF09XCJtaW5MZW5ndGhcIlxyXG4gICAgICAgICAgICAgW3R5cGVUb1NlYXJjaFRleHRdPVwic2VhcmNoUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgW3R5cGVhaGVhZF09XCJ0eXBlYWhlYWRcIlxyXG4gICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJjbG9zZU9uU2VsZWN0XCJcclxuICAgICAgICAgICAgIFtjbGVhck9uQmFja3NwYWNlXT1cImNsZWFyT25CYWNrc3BhY2VcIlxyXG4gICAgICAgICAgICAgW2VkaXRhYmxlU2VhcmNoVGVybV09XCJlZGl0YWJsZVNlYXJjaFRlcm1cIlxyXG4gICAgICAgICAgICAgKG9wZW4pPVwidGhpcy5pc09wZW4gPSB0cnVlXCJcclxuICAgICAgICAgICAgIChjbG9zZSk9XCJ0aGlzLmlzT3BlbiA9IGZhbHNlXCJcclxuICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIFtub3RGb3VuZFRleHRdPVwibm90Rm91bmRUZXh0XCJcclxuICAgICAgICAgICAgIFtjbGVhckFsbFRleHRdPVwiY2xlYXJBbGxUZXh0XCJcclxuICAgICAgICAgICAgIFtyZWFkb25seV09XCJ0aGlzLmRpc2FibGVkXCI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0eXBlYWhlYWRcIj5cclxuICAgICAgPG5nLW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc0xpc3RcIiBbdmFsdWVdPVwiaXRlbT8udmFsdWVcIj5cclxuICAgICAgICB7eyBpdGVtPy5sYWJlbCB9fVxyXG4gICAgICA8L25nLW9wdGlvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZy1sb2FkaW5nc3Bpbm5lci10bXA+XHJcbiAgICAgIDxlY2Ficy1sb2FkaW5nLXNwaW5uZXIgc2l6ZT1cInRpbnlcIj48L2VjYWJzLWxvYWRpbmctc3Bpbm5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhYmluZFZhbHVlICYmICEhYmluZExhYmVsXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXAgbGV0LWl0ZW1zPVwiaXRlbXNcIj5cclxuICAgICAgICA8IS0tI0N1c3RvbSBkaXNwbGF5IG9mIGZpcnN0IHNlbGVjdGVkIGl0ZW0gYW5kICgrMSBtb3JlKSBwYXR0ZXJuIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNPcGVuXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zIHwgc2xpY2U6MDoxXCI+XHJcbiAgICAgICAgICAgIHt7IGl0ZW0/LlsnbGFiZWwnXSB9fSA8c3BhbiAqbmdJZj1cIml0ZW1zLmxlbmd0aCA+IDFcIj5cclxuICAgICAgICAgICAgKCt7eyBpdGVtcy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgIHt7IChpdGVtcz8ubGVuZ3RoID09PSAyID8gb3RoZXJMYWJlbCA6IG90aGVyc0xhYmVsKSB9fSlcclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGVcIj5cclxuICAgICAgPCEtLSNBZGQgc2VsZWN0QWxsIGFuZCBpbmRpdmlkdWFsIGNoZWNrYm94ZXMgZm9yIG11bHRpcGxlLWVuYWJsZWQgbGlzdCAtLT5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGdyb3VwLXRtcCBsZXQtaXRlbSQ9XCJpdGVtJFwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgPGVjYWJzLWNoZWNrYm94IFtuZ01vZGVsXT1cIml0ZW0kLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJzZWxlY3RBbGxMYWJlbFwiPlxyXG4gICAgICAgIDwvZWNhYnMtY2hlY2tib3g+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgbmctb3B0aW9uLXRtcCBsZXQtaXRlbSQ9XCJpdGVtJFwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgPGVjYWJzLWNoZWNrYm94IFtuZ01vZGVsXT1cIml0ZW0kLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJpdGVtJD8uWydsYWJlbCddXCI+XHJcbiAgICAgICAgPC9lY2Ficy1jaGVja2JveD5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctc2VsZWN0PlxyXG48L2VjYWJzLWVsZW1lbnQtd3JhcHBlcj5cclxuIl19
@@ -419,6 +419,76 @@ const i18n = {
419
419
  cancelLabel: 'ACTIONS.CANCEL',
420
420
  };
421
421
 
422
+ const getValue = (obj, sortParams) => {
423
+ const value = obj[sortParams.property];
424
+ switch (sortParams.dataType) {
425
+ case 'date': {
426
+ const date = new Date(value);
427
+ return isNaN(date.getTime()) ? 0 : date.getTime();
428
+ }
429
+ case 'string':
430
+ return value.toLowerCase();
431
+ case 'number':
432
+ return typeof value === 'number' ? value : parseFloat(value);
433
+ default:
434
+ return value;
435
+ }
436
+ };
437
+ const sortGeneric = (objX, objY, sortParams) => {
438
+ const valueX = getValue(objX, sortParams);
439
+ const valueY = getValue(objY, sortParams);
440
+ if (valueX > valueY) {
441
+ return sortParams.isDescending ? -1 : 1;
442
+ }
443
+ else if (valueX < valueY) {
444
+ return sortParams.isDescending ? 1 : -1;
445
+ }
446
+ return 0;
447
+ };
448
+ const removeNullUndefineds = (obj, exceptProperties = []) => {
449
+ const newObj = {};
450
+ Object.keys(obj).forEach((key) => {
451
+ if (obj[key] === Object(obj[key])) {
452
+ newObj[key] = removeNullUndefineds(obj[key], exceptProperties);
453
+ }
454
+ else if (obj[key] !== undefined) {
455
+ newObj[key] = obj[key];
456
+ }
457
+ });
458
+ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
459
+ const pickBy = (object, predicate = (v) => v) => Object.entries(object)
460
+ //eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars
461
+ .filter(([k, v]) => predicate(v))
462
+ .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {});
463
+ return removeEmpty(pickBy(obj, (v) => v !== null), exceptProperties);
464
+ };
465
+ const removeEmpty = (o, exceptProperties = []) => {
466
+ for (const k in o) {
467
+ if (!o[k] ||
468
+ typeof o[k] !== 'object' ||
469
+ exceptProperties.findIndex((property) => property === k) !== -1) {
470
+ continue;
471
+ }
472
+ removeEmpty(o[k]);
473
+ if (Object.keys(o[k]).length === 0) {
474
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
475
+ delete o[k];
476
+ }
477
+ }
478
+ return o;
479
+ };
480
+ const mergeUniqueByKey = (arr, key) => {
481
+ const mergedMap = new Map();
482
+ arr.forEach((item) => {
483
+ if (!item[key]) {
484
+ mergedMap.set(item, item);
485
+ return;
486
+ }
487
+ mergedMap.set(item[key], item);
488
+ });
489
+ return Array.from(mergedMap.values());
490
+ };
491
+
422
492
  class EcabsComponentsService {
423
493
  defaultConfig = {
424
494
  defaultCountries: [],
@@ -439,9 +509,21 @@ class EcabsComponentsService {
439
509
  for (const key in currentConfig) {
440
510
  if (Object.prototype.hasOwnProperty.call(currentConfig, key) &&
441
511
  Object.prototype.hasOwnProperty.call(configUpdate, key)) {
442
- updatedConfig[key] = Array.isArray(currentConfig[key])
443
- ? [...currentConfig[key], ...configUpdate[key]]
444
- : { ...currentConfig[key], ...configUpdate[key] };
512
+ if (key === 'claims' && Array.isArray(configUpdate.claims)) {
513
+ updatedConfig.claims = mergeUniqueByKey([...(currentConfig.claims || []), ...configUpdate.claims], 'claim');
514
+ }
515
+ else if (key === 'errorMessages' &&
516
+ Array.isArray(configUpdate.errorMessages)) {
517
+ updatedConfig.errorMessages = mergeUniqueByKey([
518
+ ...(currentConfig.errorMessages || []),
519
+ ...configUpdate.errorMessages,
520
+ ], 'message');
521
+ }
522
+ else {
523
+ updatedConfig[key] = Array.isArray(currentConfig[key])
524
+ ? mergeUniqueByKey([...currentConfig[key], ...configUpdate[key]])
525
+ : { ...currentConfig[key], ...configUpdate[key] };
526
+ }
445
527
  }
446
528
  else {
447
529
  updatedConfig[key] = currentConfig[key];
@@ -1627,6 +1709,7 @@ class EcabsSelectV2Component extends EcabsElementBaseComponent {
1627
1709
  destroyRef;
1628
1710
  ngSelect;
1629
1711
  appearance = 'outline';
1712
+ appendTo = '';
1630
1713
  items = [];
1631
1714
  bindLabel = 'label';
1632
1715
  bindValue = 'value';
@@ -1671,7 +1754,7 @@ class EcabsSelectV2Component extends EcabsElementBaseComponent {
1671
1754
  }
1672
1755
  ngOnInit() {
1673
1756
  this.initTrackBy();
1674
- this.placeholder = this.label;
1757
+ this.placeholder = this.placeholder || this.label;
1675
1758
  this.notFoundText = 'No data found';
1676
1759
  this.selectAllLabel = 'All';
1677
1760
  this.showLocalLoading = false; // hide default loading icon in ElementWrapper
@@ -1761,13 +1844,13 @@ class EcabsSelectV2Component extends EcabsElementBaseComponent {
1761
1844
  };
1762
1845
  }
1763
1846
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsSelectV2Component, deps: [{ token: i0.Injector }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
1764
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsSelectV2Component, selector: "ecabs-select-v2", inputs: { appearance: "appearance", items: "items", bindLabel: "bindLabel", bindValue: "bindValue", editableSearchTerm: "editableSearchTerm", searchable: "searchable", clearable: "clearable", multiple: "multiple", notFoundText: "notFoundText", hideSelected: "hideSelected", clearOnBackspace: "clearOnBackspace", clearSearchOnAdd: "clearSearchOnAdd", trackByFn: "trackByFn", minLength: "minLength", searchPlaceholder: "searchPlaceholder", typeahead: "typeahead", closeOnSelect: "closeOnSelect", clearAllText: "clearAllText", selectAllLabel: "selectAllLabel", otherLabel: "otherLabel", othersLabel: "othersLabel" }, providers: [
1847
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsSelectV2Component, selector: "ecabs-select-v2", inputs: { appearance: "appearance", appendTo: "appendTo", items: "items", bindLabel: "bindLabel", bindValue: "bindValue", editableSearchTerm: "editableSearchTerm", searchable: "searchable", clearable: "clearable", multiple: "multiple", notFoundText: "notFoundText", hideSelected: "hideSelected", clearOnBackspace: "clearOnBackspace", clearSearchOnAdd: "clearSearchOnAdd", trackByFn: "trackByFn", minLength: "minLength", searchPlaceholder: "searchPlaceholder", typeahead: "typeahead", closeOnSelect: "closeOnSelect", clearAllText: "clearAllText", selectAllLabel: "selectAllLabel", otherLabel: "otherLabel", othersLabel: "othersLabel" }, providers: [
1765
1848
  {
1766
1849
  provide: NG_VALUE_ACCESSOR,
1767
1850
  multi: true,
1768
1851
  useExisting: EcabsSelectV2Component,
1769
1852
  },
1770
- ], viewQueries: [{ propertyName: "ngSelect", first: true, predicate: NgSelectComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i5$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$2.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4$2.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i4$2.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i4$2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4$2.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i4$2.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: EcabsSpinnerComponent, selector: "ecabs-loading-spinner", inputs: ["size"] }, { kind: "component", type: EcabsCheckboxToggleComponent, selector: "ecabs-checkbox", inputs: ["type", "text", "label", "labelPosition", "indeterminate", "checked"], outputs: ["click", "changed"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
1853
+ ], viewQueries: [{ propertyName: "ngSelect", first: true, predicate: NgSelectComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [appendTo]=\"appendTo\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i5$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$2.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4$2.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i4$2.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i4$2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4$2.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i4$2.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: EcabsSpinnerComponent, selector: "ecabs-loading-spinner", inputs: ["size"] }, { kind: "component", type: EcabsCheckboxToggleComponent, selector: "ecabs-checkbox", inputs: ["type", "text", "label", "labelPosition", "indeterminate", "checked"], outputs: ["click", "changed"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
1771
1854
  }
1772
1855
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsSelectV2Component, decorators: [{
1773
1856
  type: Component,
@@ -1777,12 +1860,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1777
1860
  multi: true,
1778
1861
  useExisting: EcabsSelectV2Component,
1779
1862
  },
1780
- ], template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n" }]
1863
+ ], template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <ng-select class=\"form-field__select\"\r\n [appearance]=\"appearance\"\r\n [appendTo]=\"appendTo\"\r\n [labelForId]=\"name\"\r\n [bindLabel]=\"bindLabel || null\"\r\n [bindValue]=\"bindValue || null\"\r\n [searchable]=\"searchable\"\r\n [clearable]=\"clearable\"\r\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\r\n [groupBy]=\"groupByKey\"\r\n [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\"\r\n [items]=\"itemsList\"\r\n [multiple]=\"multiple\"\r\n [(ngModel)]=\"value\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\"\r\n [hideSelected]=\"hideSelected\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"minLength\"\r\n [typeToSearchText]=\"searchPlaceholder\"\r\n [typeahead]=\"typeahead\"\r\n [loading]=\"loading\"\r\n [closeOnSelect]=\"closeOnSelect\"\r\n [clearOnBackspace]=\"clearOnBackspace\"\r\n [editableSearchTerm]=\"editableSearchTerm\"\r\n (open)=\"this.isOpen = true\"\r\n (close)=\"this.isOpen = false\"\r\n (change)=\"changed($event)\"\r\n [notFoundText]=\"notFoundText\"\r\n [clearAllText]=\"clearAllText\"\r\n [readonly]=\"this.disabled\">\r\n\r\n <ng-container *ngIf=\"!typeahead\">\r\n <ng-option *ngFor=\"let item of itemsList\" [value]=\"item?.value\">\r\n {{ item?.label }}\r\n </ng-option>\r\n </ng-container>\r\n\r\n <ng-template ng-loadingspinner-tmp>\r\n <ecabs-loading-spinner size=\"tiny\"></ecabs-loading-spinner>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"!!bindValue && !!bindLabel\">\r\n <ng-template ng-multi-label-tmp let-items=\"items\">\r\n <!--#Custom display of first selected item and (+1 more) pattern -->\r\n <ng-container *ngIf=\"!isOpen\">\r\n <div *ngFor=\"let item of items | slice:0:1\">\r\n {{ item?.['label'] }} <span *ngIf=\"items.length > 1\">\r\n (+{{ items.length - 1 }}\r\n {{ (items?.length === 2 ? otherLabel : othersLabel) }})\r\n </span>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiple\">\r\n <!--#Add selectAll and individual checkboxes for multiple-enabled list -->\r\n <ng-template ng-optgroup-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"selectAllLabel\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n\r\n <ng-template ng-option-tmp let-item$=\"item$\" let-index=\"index\">\r\n <ecabs-checkbox [ngModel]=\"item$.selected\"\r\n [name]=\"index\"\r\n [text]=\"item$?.['label']\">\r\n </ecabs-checkbox>\r\n </ng-template>\r\n </ng-container>\r\n </ng-select>\r\n</ecabs-element-wrapper>\r\n" }]
1781
1864
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.DestroyRef }]; }, propDecorators: { ngSelect: [{
1782
1865
  type: ViewChild,
1783
1866
  args: [NgSelectComponent, { static: true }]
1784
1867
  }], appearance: [{
1785
1868
  type: Input
1869
+ }], appendTo: [{
1870
+ type: Input
1786
1871
  }], items: [{
1787
1872
  type: Input
1788
1873
  }], bindLabel: [{
@@ -6452,68 +6537,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
6452
6537
  }]
6453
6538
  }] });
6454
6539
 
6455
- const getValue = (obj, sortParams) => {
6456
- const value = obj[sortParams.property];
6457
- switch (sortParams.dataType) {
6458
- case 'date': {
6459
- const date = new Date(value);
6460
- return isNaN(date.getTime()) ? 0 : date.getTime();
6461
- }
6462
- case 'string':
6463
- return value.toLowerCase();
6464
- case 'number':
6465
- return typeof value === 'number' ? value : parseFloat(value);
6466
- default:
6467
- return value;
6468
- }
6469
- };
6470
- const sortGeneric = (objX, objY, sortParams) => {
6471
- const valueX = getValue(objX, sortParams);
6472
- const valueY = getValue(objY, sortParams);
6473
- if (valueX > valueY) {
6474
- return sortParams.isDescending ? -1 : 1;
6475
- }
6476
- else if (valueX < valueY) {
6477
- return sortParams.isDescending ? 1 : -1;
6478
- }
6479
- return 0;
6480
- };
6481
- const removeNullUndefineds = (obj, exceptProperties = []) => {
6482
- const newObj = {};
6483
- Object.keys(obj).forEach((key) => {
6484
- if (obj[key] === Object(obj[key])) {
6485
- newObj[key] = removeNullUndefineds(obj[key], exceptProperties);
6486
- }
6487
- else if (obj[key] !== undefined) {
6488
- newObj[key] = obj[key];
6489
- }
6490
- });
6491
- // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
6492
- const pickBy = (object, predicate = (v) => v) => Object.entries(object)
6493
- //eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars
6494
- .filter(([k, v]) => predicate(v))
6495
- .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {});
6496
- return removeEmpty(pickBy(obj, (v) => v !== null), exceptProperties);
6497
- };
6498
- const removeEmpty = (o, exceptProperties = []) => {
6499
- for (const k in o) {
6500
- if (!o[k] ||
6501
- typeof o[k] !== 'object' ||
6502
- exceptProperties.findIndex((property) => property === k) !== -1) {
6503
- continue;
6504
- }
6505
- removeEmpty(o[k]);
6506
- if (Object.keys(o[k]).length === 0) {
6507
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
6508
- delete o[k];
6509
- }
6510
- }
6511
- return o;
6512
- };
6513
-
6514
6540
  /**
6515
6541
  * Generated bundle index. Do not edit.
6516
6542
  */
6517
6543
 
6518
- export { ButtonsComponent, EcabsActiveStatusFilterComponent, EcabsActiveStatusFilterModule, EcabsAttachEmbeddedViewDirective, EcabsAttachEmbeddedViewDirectiveModule, EcabsBreadcrumbComponent, EcabsBreadcrumbModule, EcabsButtonsModule, EcabsCheckPermissionDirectiveModule, EcabsCheckPermissionsDirective, EcabsCheckboxToggleComponent, EcabsCheckboxToggleModule, EcabsComponentsService, EcabsDatePickerComponent, EcabsDatePickerHeaderComponent, EcabsDatePickerHeaderService, EcabsDatePickerModule, EcabsDateRangeModule, EcabsDateRangePickerComponent, EcabsDateRangePickerHeaderComponent, EcabsDateTimePickerComponent, EcabsDateTimePickerHeaderComponent, EcabsDateTimeRangePickerComponent, EcabsDateTimeRangePickerHeaderComponent, EcabsDatetimePickerModule, EcabsDatetimeRangePickerModule, EcabsDialogConfirmComponent, EcabsDialogConfirmModule, EcabsDialogMessageComponent, EcabsDialogMessageModule, EcabsDigitsOnlyDirective, EcabsDigitsOnlyDirectivesModule, EcabsDomObserverDirective, EcabsDomObserverDirectiveModule, EcabsDynamicBgColorDirective, EcabsDynamicBgColorDirectiveModule, EcabsElementMultiplierDirective, EcabsElementMultiplierDirectiveModule, EcabsEmptyPlaceholderComponent, EcabsEmptyPlaceholderModule, EcabsExpansionPanelComponent, EcabsExpansionPanelModule, EcabsFileDropDirective, EcabsFileDropDirectiveModule, EcabsHeaderComponent, EcabsHeaderModule, EcabsHintComponent, EcabsHintModule, EcabsIncrementComponent, EcabsIncrementModule, EcabsInputComponent, EcabsInputModule, EcabsLanguageSelectorComponent, EcabsLanguageSelectorModule, EcabsLoadingComponent, EcabsLoadingModule, EcabsLogoComponent, EcabsLogoModule, EcabsMaskDateDirective, EcabsMaskDateDirectiveModule, EcabsMaskTimeDirective, EcabsMaskTimeDirectiveModule, EcabsMaxDirective, EcabsMenuItemsComponent, EcabsMenuItemsModule, EcabsMinDirective, EcabsMinMaxDirectiveModule, EcabsMultipleDatesPickerComponent, EcabsMultipleDatesPickerModule, EcabsNoteComponent, EcabsNoteModule, EcabsNumberBorderDirective, EcabsNumberBorderDirectiveModule, EcabsPaginatorDirective, EcabsPaginatorDirectiveModule, EcabsPhoneComponent, EcabsPhoneModule, EcabsPipesModule, EcabsPlaceAutocompleteComponent, EcabsPlaceAutocompleteModule, EcabsProfileComponent, EcabsProfileModule, EcabsRadioButtonListComponent, EcabsRadioButtonListModule, EcabsSelectComponent, EcabsSelectModule, EcabsSelectV2Component, EcabsSelectV2Module, EcabsShowOnTruncatedDirective, EcabsShowOnTruncatedDirectiveModule, EcabsSidebarComponent, EcabsSidebarModule, EcabsSliderComponent, EcabsSliderModule, EcabsSpinnerComponent, EcabsTableFilterWrapperComponent, EcabsTableFilterWrapperModule, EcabsTableModule, EcabsTextAreaModule, EcabsTextareaComponent, EcabsTimeListPanelComponent, EcabsTimeRangeDirective, EcabsTimeRangeDirectiveModule, EcabsTimepickerComponent, EcabsTimepickerModule, EcabsTooltipIfTruncatedDirective, EcabsTooltipIfTruncatedDirectiveModule, EcabsTruncatePipe, EcabsUppercaseMaskDirective, EcabsUppercaseMaskDirectiveModule, EcabsValidationComponent, EcabsValidationModule, EcabsValidationViewModule, FormTimePickerService, GenericComponentConfig, HeaderService, MATERIAL_DATETIMEPICKER_FORMATS, TableComponent, UnsubscribeService, ValidationComponent, removeEmpty, removeNullUndefineds, scrollFactory, sortGeneric };
6544
+ export { ButtonsComponent, EcabsActiveStatusFilterComponent, EcabsActiveStatusFilterModule, EcabsAttachEmbeddedViewDirective, EcabsAttachEmbeddedViewDirectiveModule, EcabsBreadcrumbComponent, EcabsBreadcrumbModule, EcabsButtonsModule, EcabsCheckPermissionDirectiveModule, EcabsCheckPermissionsDirective, EcabsCheckboxToggleComponent, EcabsCheckboxToggleModule, EcabsComponentsService, EcabsDatePickerComponent, EcabsDatePickerHeaderComponent, EcabsDatePickerHeaderService, EcabsDatePickerModule, EcabsDateRangeModule, EcabsDateRangePickerComponent, EcabsDateRangePickerHeaderComponent, EcabsDateTimePickerComponent, EcabsDateTimePickerHeaderComponent, EcabsDateTimeRangePickerComponent, EcabsDateTimeRangePickerHeaderComponent, EcabsDatetimePickerModule, EcabsDatetimeRangePickerModule, EcabsDialogConfirmComponent, EcabsDialogConfirmModule, EcabsDialogMessageComponent, EcabsDialogMessageModule, EcabsDigitsOnlyDirective, EcabsDigitsOnlyDirectivesModule, EcabsDomObserverDirective, EcabsDomObserverDirectiveModule, EcabsDynamicBgColorDirective, EcabsDynamicBgColorDirectiveModule, EcabsElementMultiplierDirective, EcabsElementMultiplierDirectiveModule, EcabsEmptyPlaceholderComponent, EcabsEmptyPlaceholderModule, EcabsExpansionPanelComponent, EcabsExpansionPanelModule, EcabsFileDropDirective, EcabsFileDropDirectiveModule, EcabsHeaderComponent, EcabsHeaderModule, EcabsHintComponent, EcabsHintModule, EcabsIncrementComponent, EcabsIncrementModule, EcabsInputComponent, EcabsInputModule, EcabsLanguageSelectorComponent, EcabsLanguageSelectorModule, EcabsLoadingComponent, EcabsLoadingModule, EcabsLogoComponent, EcabsLogoModule, EcabsMaskDateDirective, EcabsMaskDateDirectiveModule, EcabsMaskTimeDirective, EcabsMaskTimeDirectiveModule, EcabsMaxDirective, EcabsMenuItemsComponent, EcabsMenuItemsModule, EcabsMinDirective, EcabsMinMaxDirectiveModule, EcabsMultipleDatesPickerComponent, EcabsMultipleDatesPickerModule, EcabsNoteComponent, EcabsNoteModule, EcabsNumberBorderDirective, EcabsNumberBorderDirectiveModule, EcabsPaginatorDirective, EcabsPaginatorDirectiveModule, EcabsPhoneComponent, EcabsPhoneModule, EcabsPipesModule, EcabsPlaceAutocompleteComponent, EcabsPlaceAutocompleteModule, EcabsProfileComponent, EcabsProfileModule, EcabsRadioButtonListComponent, EcabsRadioButtonListModule, EcabsSelectComponent, EcabsSelectModule, EcabsSelectV2Component, EcabsSelectV2Module, EcabsShowOnTruncatedDirective, EcabsShowOnTruncatedDirectiveModule, EcabsSidebarComponent, EcabsSidebarModule, EcabsSliderComponent, EcabsSliderModule, EcabsSpinnerComponent, EcabsTableFilterWrapperComponent, EcabsTableFilterWrapperModule, EcabsTableModule, EcabsTextAreaModule, EcabsTextareaComponent, EcabsTimeListPanelComponent, EcabsTimeRangeDirective, EcabsTimeRangeDirectiveModule, EcabsTimepickerComponent, EcabsTimepickerModule, EcabsTooltipIfTruncatedDirective, EcabsTooltipIfTruncatedDirectiveModule, EcabsTruncatePipe, EcabsUppercaseMaskDirective, EcabsUppercaseMaskDirectiveModule, EcabsValidationComponent, EcabsValidationModule, EcabsValidationViewModule, FormTimePickerService, GenericComponentConfig, HeaderService, MATERIAL_DATETIMEPICKER_FORMATS, TableComponent, UnsubscribeService, ValidationComponent, mergeUniqueByKey, removeEmpty, removeNullUndefineds, scrollFactory, sortGeneric };
6519
6545
  //# sourceMappingURL=ecabs-components.mjs.map