@pepperi-addons/ngx-lib 0.3.15-beta.20 → 0.3.15-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js +22 -11
  2. package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js.map +1 -1
  3. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +76 -40
  4. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js.map +1 -1
  5. package/bundles/pepperi-addons-ngx-lib.umd.js +46 -0
  6. package/bundles/pepperi-addons-ngx-lib.umd.js.map +1 -1
  7. package/core/common/pipes/date-ago.pipe.d.ts +8 -0
  8. package/core/common/pipes/public-api.d.ts +1 -0
  9. package/esm2015/core/common/pipes/date-ago.pipe.js +45 -0
  10. package/esm2015/core/common/pipes/public-api.js +2 -1
  11. package/esm2015/ngx-lib.module.js +3 -1
  12. package/esm2015/query-builder/common/model/legacy.js +1 -1
  13. package/esm2015/query-builder/common/model/operator.js +19 -8
  14. package/esm2015/query-builder/common/model/type-map.js +3 -3
  15. package/esm2015/query-builder/query-builder-item/query-builder-item.component.js +2 -2
  16. package/esm2015/smart-filters/common/model/operator.js +21 -32
  17. package/esm2015/smart-filters/common/model/type.js +1 -1
  18. package/esm2015/smart-filters/date-filter/date-filter.component.js +12 -4
  19. package/esm2015/smart-filters/multi-select-filter/multi-select-filter.component.js +44 -6
  20. package/esm2015/smart-filters/smart-filters.component.js +2 -2
  21. package/esm2015/smart-filters/text-filter/text-filter.component.js +2 -2
  22. package/fesm2015/pepperi-addons-ngx-lib-query-builder.js +21 -10
  23. package/fesm2015/pepperi-addons-ngx-lib-query-builder.js.map +1 -1
  24. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +75 -40
  25. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js.map +1 -1
  26. package/fesm2015/pepperi-addons-ngx-lib.js +45 -1
  27. package/fesm2015/pepperi-addons-ngx-lib.js.map +1 -1
  28. package/package.json +1 -1
  29. package/pepperi-addons-ngx-lib.metadata.json +1 -1
  30. package/query-builder/common/model/legacy.d.ts +1 -1
  31. package/query-builder/common/model/type-map.d.ts +2 -2
  32. package/query-builder/pepperi-addons-ngx-lib-query-builder.metadata.json +1 -1
  33. package/smart-filters/boolean-filter/boolean-filter.component.d.ts +0 -1
  34. package/smart-filters/common/model/operator.d.ts +2 -1
  35. package/smart-filters/common/model/type.d.ts +1 -1
  36. package/smart-filters/date-filter/date-filter.component.d.ts +3 -1
  37. package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +14 -0
  38. package/smart-filters/number-filter/number-filter.component.d.ts +2 -1
  39. package/smart-filters/pepperi-addons-ngx-lib-smart-filters.metadata.json +1 -1
  40. package/smart-filters/text-filter/text-filter.component.d.ts +0 -1
  41. package/src/assets/i18n/en.ngx-lib.json +16 -1
@@ -39,7 +39,8 @@ export class PepDateFilterComponent extends BaseFilterComponent {
39
39
  const filterValue = {
40
40
  first: this.firstControl.value,
41
41
  };
42
- if (this.operator === PepSmartFilterOperators.DateRange) {
42
+ if (this.operator === PepSmartFilterOperators.DateRange ||
43
+ PepSmartFilterVariableOperators.DateRangeVariable) {
43
44
  filterValue['second'] = this.secondControl.value;
44
45
  }
45
46
  return filterValue;
@@ -62,7 +63,8 @@ export class PepDateFilterComponent extends BaseFilterComponent {
62
63
  // Override
63
64
  setFieldsStateAndValidators() {
64
65
  this.firstControl.enable();
65
- if (this.operator === PepSmartFilterOperators.DateRange) {
66
+ if (this.operator === PepSmartFilterOperators.DateRange ||
67
+ PepSmartFilterVariableOperators.DateRangeVariable) {
66
68
  this.firstControl.setValidators(Validators.required);
67
69
  this.secondControl.enable();
68
70
  this.secondControl.setValidators(Validators.required);
@@ -140,6 +142,12 @@ export class PepDateFilterComponent extends BaseFilterComponent {
140
142
  this.applyFilter();
141
143
  }
142
144
  }
145
+ onSecondVariableChanged(value) {
146
+ this.secondControl.setValue(value);
147
+ if (this.emitOnChange) {
148
+ this.applyFilter();
149
+ }
150
+ }
143
151
  onDateValueChanged() {
144
152
  if (this.emitOnChange) {
145
153
  this.applyFilter();
@@ -149,8 +157,8 @@ export class PepDateFilterComponent extends BaseFilterComponent {
149
157
  PepDateFilterComponent.decorators = [
150
158
  { type: Component, args: [{
151
159
  selector: 'pep-date-filter',
152
- template: "<div [formGroup]=\"form\" [fxLayout]=\"inline ? 'row' : 'column'\" [fxLayoutGap]=\"inline ? '.5rem' : '0rem'\">\n <ng-container>\n <pep-select [key]=\"'timeOperator'\" [value]=\"operator.id\" [label]=\"'SMART_FILTERS.CHOOSE_TIME' | translate\"\n [renderTitle]=\"renderTitle\" [emptyOption]=\"false\" [options]=\"chooseTimeOptions\"\n [fxFlex]=\"inline ? operatorWidth : null\" (valueChange)=\"onOperatorChanged($event)\">\n </pep-select>\n </ng-container>\n <div *ngIf=\"operator === PepSmartFilterOperators.InTheLast ||\n operator === PepSmartFilterAdditionalOperators.InTheLastCalendar || \n operator === PepSmartFilterOperators.NotInTheLast ||\n operator === PepSmartFilterAdditionalOperators.NotInTheLastCalendar || \n operator === PepSmartFilterOperators.DueIn ||\n operator === PepSmartFilterOperators.NotDueIn\" fxLayout=\"row\" fxLayout.xs=\"column\"\n [fxLayoutGap]=\"inline ? '.5rem' : '1rem'\" [fxFlex]=\"inline ? fieldsWidth : null\">\n <!-- Amount -->\n <pep-textbox [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.AMOUNT' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\" [type]=\"'int'\"\n [formattedValue]=\"firstControl?.value || ''\" [value]=\"firstControl?.value || ''\"\n (valueChange)=\"onDateValueChanged()\">\n </pep-textbox>\n <!-- Time unit -->\n <pep-select [form]=\"form\" [key]=\"'timeUnit'\" [value]=\"operatorUnit?.id\"\n [label]=\"'SMART_FILTERS.TIME_UNIT' | translate\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n [emptyOption]=\"false\" [options]=\"chooseTimeUnitOptions\" (valueChange)=\"onTimeUnitChanged($event)\">\n </pep-select>\n </div>\n <div pepRtlDirection *ngIf=\"operator === PepSmartFilterOperators.DateRange\" fxLayout=\"row\" fxLayout.xs=\"column\"\n [fxLayoutGap]=\"inline ? '.5rem' : '1rem'\" [fxFlex]=\"inline ? fieldsWidth : null\">\n <!-- Start date -->\n <pep-date [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.START_DATE' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n [type]=\"field.type === 'date' ? 'date' : 'datetime'\" [value]=\"firstControl?.value || ''\"\n [maxDateValue]=\"secondControl?.value\" (valueChange)=\"onDateValueChanged()\">\n </pep-date>\n <!-- End date -->\n <pep-date [form]=\"form\" [key]=\"secondControlKey\" [label]=\"'SMART_FILTERS.END_DATE' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n [type]=\"field.type === 'date' ? 'date' : 'datetime'\" [value]=\"secondControl?.value || ''\"\n [minDateValue]=\"firstControl?.value\" (valueChange)=\"onDateValueChanged()\">\n </pep-date>\n </div>\n <ng-container *ngIf=\"operator === PepSmartFilterOperators.On\">\n <!-- Choose a date -->\n <pep-date [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.CHOOSE_DATE' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" [type]=\"field.type === 'date' ? 'date' : 'datetime'\"\n [fxFlex]=\"inline ? fieldsWidth : null\" [value]=\"firstControl?.value || ''\"\n (valueChange)=\"onDateValueChanged()\">\n </pep-date>\n </ng-container>\n <ng-container *ngIf=\"operator === PepSmartFilterVariableOperators.DateRangeVariable ||\n operator === PepSmartFilterVariableOperators.InTheLastVariable\">\n <pep-select [fxFlex]=\"inline ? fieldsWidth : null\" [key]=\"firstControlKey\" [value]=\"firstControl?.value || ''\"\n [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n [options]=\"variableFieldOptions\" (valueChange)=\"onVariableChanged($event)\"></pep-select>\n </ng-container>\n</div>",
160
+ template: "<div [formGroup]=\"form\" [fxLayout]=\"inline ? 'row' : 'column'\" [fxLayoutGap]=\"inline ? '.5rem' : '0rem'\">\n <ng-container>\n <pep-select [key]=\"'timeOperator'\" [value]=\"operator.id\" [label]=\"'SMART_FILTERS.CHOOSE_TIME' | translate\"\n [renderTitle]=\"renderTitle\" [emptyOption]=\"false\" [options]=\"chooseTimeOptions\"\n [fxFlex]=\"inline ? operatorWidth : null\" (valueChange)=\"onOperatorChanged($event)\">\n </pep-select>\n </ng-container>\n <div *ngIf=\"operator === PepSmartFilterOperators.InTheLast ||\n operator === PepSmartFilterAdditionalOperators.InTheLastCalendar || \n operator === PepSmartFilterOperators.NotInTheLast ||\n operator === PepSmartFilterAdditionalOperators.NotInTheLastCalendar || \n operator === PepSmartFilterOperators.DueIn ||\n operator === PepSmartFilterOperators.NotDueIn\" fxLayout=\"row\" fxLayout.xs=\"column\"\n [fxLayoutGap]=\"inline ? '.5rem' : '1rem'\" [fxFlex]=\"inline ? fieldsWidth : null\">\n <!-- Amount -->\n <pep-textbox [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.AMOUNT' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\" [type]=\"'int'\"\n [formattedValue]=\"firstControl?.value || ''\" [value]=\"firstControl?.value || ''\"\n (valueChange)=\"onDateValueChanged()\">\n </pep-textbox>\n <!-- Time unit -->\n <pep-select [form]=\"form\" [key]=\"'timeUnit'\" [value]=\"operatorUnit?.id\"\n [label]=\"'SMART_FILTERS.TIME_UNIT' | translate\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n [emptyOption]=\"false\" [options]=\"chooseTimeUnitOptions\" (valueChange)=\"onTimeUnitChanged($event)\">\n </pep-select>\n </div>\n <div pepRtlDirection *ngIf=\"operator === PepSmartFilterOperators.DateRange\" fxLayout=\"row\" fxLayout.xs=\"column\"\n [fxLayoutGap]=\"inline ? '.5rem' : '1rem'\" [fxFlex]=\"inline ? fieldsWidth : null\">\n <!-- Start date -->\n <pep-date [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.START_DATE' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n [type]=\"field.type === 'date' ? 'date' : 'datetime'\" [value]=\"firstControl?.value || ''\"\n [maxDateValue]=\"secondControl?.value\" (valueChange)=\"onDateValueChanged()\">\n </pep-date>\n <!-- End date -->\n <pep-date [form]=\"form\" [key]=\"secondControlKey\" [label]=\"'SMART_FILTERS.END_DATE' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n [type]=\"field.type === 'date' ? 'date' : 'datetime'\" [value]=\"secondControl?.value || ''\"\n [minDateValue]=\"firstControl?.value\" (valueChange)=\"onDateValueChanged()\">\n </pep-date>\n </div>\n <ng-container *ngIf=\"operator === PepSmartFilterOperators.On\">\n <!-- Choose a date -->\n <pep-date [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.CHOOSE_DATE' | translate\"\n [renderError]=\"false\" [renderTitle]=\"renderTitle\" [type]=\"field.type === 'date' ? 'date' : 'datetime'\"\n [fxFlex]=\"inline ? fieldsWidth : null\" [value]=\"firstControl?.value || ''\"\n (valueChange)=\"onDateValueChanged()\">\n </pep-date>\n </ng-container>\n <div pepRtlDirection *ngIf=\"operator === PepSmartFilterVariableOperators.DateRangeVariable\" fxLayout=\"row\"\n fxLayout.xs=\"column\" fxLayoutGap=\".5rem\" fxFlex=\"fieldsWidth\">\n <pep-select fxFlex=\"50%\" [key]=\"firstControlKey\" [value]=\"firstControl?.value || ''\"\n [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n [options]=\"variableFieldOptions\" (valueChange)=\"onVariableChanged($event)\"></pep-select>\n <pep-select fxFlex=\"50%\" [key]=\"secondControlKey\" [value]=\"secondControl?.value || ''\"\n [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n [options]=\"variableFieldOptions\" (valueChange)=\"onSecondVariableChanged($event)\"></pep-select>\n </div>\n</div>\n",
153
161
  styles: [""]
154
162
  },] }
155
163
  ];
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zbWFydC1maWx0ZXJzL2RhdGUtZmlsdGVyL2RhdGUtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUNBQWlDLEVBQ2pDLCtCQUErQixFQUMvQiwyQkFBMkIsR0FDOUIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRNUMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLG1CQUFtQjtJQUwvRDs7UUFNSSw0QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQztRQUNsRCxzQ0FBaUMsR0FBRyxpQ0FBaUMsQ0FBQztRQUN0RSxvQ0FBK0IsR0FBRywrQkFBK0IsQ0FBQztRQUNsRSxzQkFBaUIsR0FBc0IsRUFBRSxDQUFDO1FBQzFDLDBCQUFxQixHQUFzQixFQUFFLENBQUM7SUFvS2xELENBQUM7SUFoS0csUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVELFdBQVc7SUFDWCxrQkFBa0I7UUFDZCxPQUFPLHVCQUF1QixDQUFDLFNBQVMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVztJQUNYLHNCQUFzQjtRQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssdUJBQXVCLENBQUMsU0FBUztZQUNuRCxJQUFJLENBQUMsUUFBUSxLQUFLLGlDQUFpQyxDQUFDLGlCQUFpQjtZQUNyRSxJQUFJLENBQUMsUUFBUSxLQUFLLHVCQUF1QixD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SUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQzs7O1lBNUtKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixpOUhBQTJDOzthQUU5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL21vZGVsL2Jhc2UtZmlsdGVyLWNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIElQZXBTbWFydEZpbHRlck9wZXJhdG9yLFxuICAgIElQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdCxcbiAgICBQZXBTbWFydEZpbHRlck9wZXJhdG9ycyxcbiAgICBQZXBTbWFydEZpbHRlckFkZGl0aW9uYWxPcGVyYXRvcnMsXG4gICAgUGVwU21hcnRGaWx0ZXJWYXJpYWJsZU9wZXJhdG9ycyxcbiAgICBQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdHMsXG59IGZyb20gJy4uL2NvbW1vbi9tb2RlbC9vcGVyYXRvcic7XG5pbXBvcnQgeyBJUGVwU21hcnRGaWx0ZXJEYXRhVmFsdWUgfSBmcm9tICcuLi9jb21tb24vbW9kZWwvZmlsdGVyJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJUGVwT3B0aW9uIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1kYXRlLWZpbHRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRlLWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBEYXRlRmlsdGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMgPSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycztcbiAgICBQZXBTbWFydEZpbHRlckFkZGl0aW9uYWxPcGVyYXRvcnMgPSBQZXBTbWFydEZpbHRlckFkZGl0aW9uYWxPcGVyYXRvcnM7XG4gICAgUGVwU21hcnRGaWx0ZXJWYXJpYWJsZU9wZXJhdG9ycyA9IFBlcFNtYXJ0RmlsdGVyVmFyaWFibGVPcGVyYXRvcnM7XG4gICAgY2hvb3NlVGltZU9wdGlvbnM6IEFycmF5PElQZXBPcHRpb24+ID0gW107XG4gICAgY2hvb3NlVGltZVVuaXRPcHRpb25zOiBBcnJheTxJUGVwT3B0aW9uPiA9IFtdO1xuICAgIG9wZXJhdG9yV2lkdGg6IHN0cmluZztcbiAgICBmaWVsZHNXaWR0aDogc3RyaW5nO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlubGluZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRDb250cm9sc1dpZHRoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZVxuICAgIGdldERlZmF1bHRPcGVyYXRvcigpOiBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvciB7XG4gICAgICAgIHJldHVybiBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5JblRoZUxhc3Q7XG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGVcbiAgICBnZXREZWZhdWx0T3BlcmF0b3JVbml0KCk6IElQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdCB7XG4gICAgICAgIGlmICh0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5JblRoZUxhc3QgfHxcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyQWRkaXRpb25hbE9wZXJhdG9ycy5JblRoZUxhc3RDYWxlbmRhciB8fFxuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuTm90SW5UaGVMYXN0IHx8XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlckFkZGl0aW9uYWxPcGVyYXRvcnMuTm90SW5UaGVMYXN0Q2FsZW5kYXIgfHxcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLkR1ZUluIHx8XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5Ob3REdWVJbikge1xuICAgICAgICAgICAgcmV0dXJuIFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JVbml0cy5Nb250aHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGVcbiAgICBnZXRGaWx0ZXJWYWx1ZSgpOiBJUGVwU21hcnRGaWx0ZXJEYXRhVmFsdWUge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHtcbiAgICAgICAgICAgIGZpcnN0OiB0aGlzLmZpcnN0Q29udHJvbC52YWx1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuRGF0ZVJhbmdlKSB7XG4gICAgICAgICAgICBmaWx0ZXJWYWx1ZVsnc2Vjb25kJ10gPSB0aGlzLnNlY29uZENvbnRyb2wudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGVcbiAgICBsb2FkT3BlcmF0b3JzT3B0aW9ucygpIHtcbiAgICAgICAgdGhpcy5jaG9vc2VUaW1lT3B0aW9ucyA9IHRoaXMub3BlcmF0b3JzLm1hcCgob3BlcmF0b3IpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAga2V5OiBvcGVyYXRvci5pZCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5PUEVSQVRPUlNfVFJBTlNMQVRJT05fUFJFRklYfS4ke29wZXJhdG9yLm5hbWV9YFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNob29zZVRpbWVVbml0T3B0aW9ucyA9IHRoaXMub3BlcmF0b3JVbml0cy5tYXAoKG9wZXJhdG9yVW5pdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBrZXk6IG9wZXJhdG9yVW5pdC5pZCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5PUEVSQVRPUl9VTklUU19UUkFOU0xBVElPTl9QUkVGSVh9LiR7b3BlcmF0b3JVbml0Lm5hbWV9YFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZVxuICAgIHNldEZpZWxkc1N0YXRlQW5kVmFsaWRhdG9ycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuZW5hYmxlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMub3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLkRhdGVSYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kQ29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuSW5UaGVMYXN0IHx8XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlckFkZGl0aW9uYWxPcGVyYXRvcnMuSW5UaGVMYXN0Q2FsZW5kYXIgfHwgXG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5Ob3RJblRoZUxhc3QgfHxcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyQWRkaXRpb25hbE9wZXJhdG9ycy5Ob3RJblRoZUxhc3RDYWxlbmRhciB8fFxuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuRHVlSW4gfHxcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLk5vdER1ZUluXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuc2V0VmFsaWRhdG9ycyhbXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvci5udW1iZXJWYWxpZGF0b3IoKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgdGhpcy5zZWNvbmRDb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIERpc2FibGUgJ2ZpcnN0JyBmaWVsZC5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5Ub2RheSB8fFxuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLlRoaXNXZWVrIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuVGhpc01vbnRoIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuSXNFbXB0eSB8fFxuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLklzTm90RW1wdHlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlyc3RDb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRGVmYXVsdCBkaXNhYmxlICdzZWNvbmQnIGZpZWxkLlxuICAgICAgICAgICAgc3VwZXIuc2V0RmllbGRzU3RhdGVBbmRWYWxpZGF0b3JzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRDb250cm9sc1dpZHRoKCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5Ub2RheSB8fFxuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuVGhpc1dlZWsgfHxcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLlRoaXNNb250aCB8fFxuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuSXNFbXB0eSB8fFxuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuSXNOb3RFbXB0eVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3JXaWR0aCA9ICdhdXRvJztcbiAgICAgICAgICAgIHRoaXMuZmllbGRzV2lkdGggPSAnMCUnO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLk9uKSB7XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yV2lkdGggPSAnMzglJztcbiAgICAgICAgICAgIHRoaXMuZmllbGRzV2lkdGggPSAnNjIlJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3JXaWR0aCA9ICczMCUnO1xuICAgICAgICAgICAgdGhpcy5maWVsZHNXaWR0aCA9ICc3MCUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PcGVyYXRvckNoYW5nZWQodmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBvcGVyYXRvciA9IE9iamVjdC52YWx1ZXModGhpcy5vcGVyYXRvcnMpLmZpbmQoXG4gICAgICAgICAgICAob3BlcmF0b3IpID0+IG9wZXJhdG9yLmlkID09PSB2YWx1ZVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgdGhpcy5vcGVyYXRvclVuaXQgPSB0aGlzLmdldERlZmF1bHRPcGVyYXRvclVuaXQoKTtcbiAgICAgICAgaWYgKHRoaXMuaW5saW5lKSB7XG4gICAgICAgICAgICB0aGlzLnNldENvbnRyb2xzV2lkdGgoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fcGFyZW50Rm9ybSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQYXJlbnRGb3JtKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZW1pdE9uQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5RmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRpbWVVbml0Q2hhbmdlZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yVW5pdCA9IE9iamVjdC52YWx1ZXMoUGVwU21hcnRGaWx0ZXJPcGVyYXRvclVuaXRzKS5maW5kKFxuICAgICAgICAgICAgKG9wZXJhdG9yVW5pdCkgPT4gb3BlcmF0b3JVbml0LmlkID09PSB2YWx1ZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm9wZXJhdG9yVW5pdCA9IG9wZXJhdG9yVW5pdDtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudEZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUGFyZW50Rm9ybSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmVtaXRPbkNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25WYXJpYWJsZUNoYW5nZWQodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLmZpcnN0Q29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLmVtaXRPbkNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EYXRlVmFsdWVDaGFuZ2VkKCkge1xuICAgICAgICBpZiAodGhpcy5lbWl0T25DaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zbWFydC1maWx0ZXJzL2RhdGUtZmlsdGVyL2RhdGUtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUNBQWlDLEVBQ2pDLCtCQUErQixFQUMvQiwyQkFBMkIsR0FDOUIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRNUMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLG1CQUFtQjtJQUwvRDs7UUFNSSw0QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQztRQUNsRCxzQ0FBaUMsR0FBRyxpQ0FBaUMsQ0FBQztRQUN0RSxvQ0FBK0IsR0FBRywrQkFBK0IsQ0FBQztRQUNsRSxzQkFBaUIsR0FBc0IsRUFBRSxDQUFDO1FBQzFDLDBCQUFxQixHQUFzQixFQUFFLENBQUM7SUErS2xELENBQUM7SUEzS0csUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVELFdBQVc7SUFDWCxrQkFBa0I7UUFDZCxPQUFPLHVCQUF1QixDQUFDLFNBQVMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVztJQUNYLHNCQUFzQjtRQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssdUJBQXVCLENBQUMsU0FBUztZQUNuRCxJQUFJLENBQUMsUUFBUSxLQUFLLGlDQUFpQyxDQUFDLGlCQUFpQjtZQUNyRSxJQUFJLENBQUMsUUFBUSxLQUFLLHVCQUF1QixD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QztJQUVELHVCQUF1QixDQUFDLEtBQVU7UUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQzs7O1lBdkxKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixneElBQTJDOzthQUU5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL21vZGVsL2Jhc2UtZmlsdGVyLWNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIElQZXBTbWFydEZpbHRlck9wZXJhdG9yLFxuICAgIElQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdCxcbiAgICBQZXBTbWFydEZpbHRlck9wZXJhdG9ycyxcbiAgICBQZXBTbWFydEZpbHRlckFkZGl0aW9uYWxPcGVyYXRvcnMsXG4gICAgUGVwU21hcnRGaWx0ZXJWYXJpYWJsZU9wZXJhdG9ycyxcbiAgICBQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdHMsXG59IGZyb20gJy4uL2NvbW1vbi9tb2RlbC9vcGVyYXRvcic7XG5pbXBvcnQgeyBJUGVwU21hcnRGaWx0ZXJEYXRhVmFsdWUgfSBmcm9tICcuLi9jb21tb24vbW9kZWwvZmlsdGVyJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJUGVwT3B0aW9uIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1kYXRlLWZpbHRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRlLWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBEYXRlRmlsdGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMgPSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycztcbiAgICBQZXBTbWFydEZpbHRlckFkZGl0aW9uYWxPcGVyYXRvcnMgPSBQZXBTbWFydEZpbHRlckFkZGl0aW9uYWxPcGVyYXRvcnM7XG4gICAgUGVwU21hcnRGaWx0ZXJWYXJpYWJsZU9wZXJhdG9ycyA9IFBlcFNtYXJ0RmlsdGVyVmFyaWFibGVPcGVyYXRvcnM7XG4gICAgY2hvb3NlVGltZU9wdGlvbnM6IEFycmF5PElQZXBPcHRpb24+ID0gW107XG4gICAgY2hvb3NlVGltZVVuaXRPcHRpb25zOiBBcnJheTxJUGVwT3B0aW9uPiA9IFtdO1xuICAgIG9wZXJhdG9yV2lkdGg6IHN0cmluZztcbiAgICBmaWVsZHNXaWR0aDogc3RyaW5nO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlubGluZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRDb250cm9sc1dpZHRoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZVxuICAgIGdldERlZmF1bHRPcGVyYXRvcigpOiBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvciB7XG4gICAgICAgIHJldHVybiBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5JblRoZUxhc3Q7XG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGVcbiAgICBnZXREZWZhdWx0T3BlcmF0b3JVbml0KCk6IElQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdCB7XG4gICAgICAgIGlmICh0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5JblRoZUxhc3QgfHxcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyQWRkaXRpb25hbE9wZXJhdG9ycy5JblRoZUxhc3RDYWxlbmRhciB8fFxuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuTm90SW5UaGVMYXN0IHx8XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlckFkZGl0aW9uYWxPcGVyYXRvcnMuTm90SW5UaGVMYXN0Q2FsZW5kYXIgfHxcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLkR1ZUluIHx8XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5Ob3REdWVJbikge1xuICAgICAgICAgICAgcmV0dXJuIFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JVbml0cy5Nb250aHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGVcbiAgICBnZXRGaWx0ZXJWYWx1ZSgpOiBJUGVwU21hcnRGaWx0ZXJEYXRhVmFsdWUge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHtcbiAgICAgICAgICAgIGZpcnN0OiB0aGlzLmZpcnN0Q29udHJvbC52YWx1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuRGF0ZVJhbmdlIHx8XG4gICAgICAgICAgICBQZXBTbWFydEZpbHRlclZhcmlhYmxlT3BlcmF0b3JzLkRhdGVSYW5nZVZhcmlhYmxlKSB7XG4gICAgICAgICAgICBmaWx0ZXJWYWx1ZVsnc2Vjb25kJ10gPSB0aGlzLnNlY29uZENvbnRyb2wudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGVcbiAgICBsb2FkT3BlcmF0b3JzT3B0aW9ucygpIHtcbiAgICAgICAgdGhpcy5jaG9vc2VUaW1lT3B0aW9ucyA9IHRoaXMub3BlcmF0b3JzLm1hcCgob3BlcmF0b3IpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAga2V5OiBvcGVyYXRvci5pZCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5PUEVSQVRPUlNfVFJBTlNMQVRJT05fUFJFRklYfS4ke29wZXJhdG9yLm5hbWV9YFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNob29zZVRpbWVVbml0T3B0aW9ucyA9IHRoaXMub3BlcmF0b3JVbml0cy5tYXAoKG9wZXJhdG9yVW5pdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBrZXk6IG9wZXJhdG9yVW5pdC5pZCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5PUEVSQVRPUl9VTklUU19UUkFOU0xBVElPTl9QUkVGSVh9LiR7b3BlcmF0b3JVbml0Lm5hbWV9YFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZVxuICAgIHNldEZpZWxkc1N0YXRlQW5kVmFsaWRhdG9ycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuZW5hYmxlKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuRGF0ZVJhbmdlIHx8XG4gICAgICAgICAgICBQZXBTbWFydEZpbHRlclZhcmlhYmxlT3BlcmF0b3JzLkRhdGVSYW5nZVZhcmlhYmxlXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kQ29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuSW5UaGVMYXN0IHx8XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlckFkZGl0aW9uYWxPcGVyYXRvcnMuSW5UaGVMYXN0Q2FsZW5kYXIgfHxcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLk5vdEluVGhlTGFzdCB8fFxuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJBZGRpdGlvbmFsT3BlcmF0b3JzLk5vdEluVGhlTGFzdENhbGVuZGFyIHx8XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5EdWVJbiB8fFxuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuTm90RHVlSW5cbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmZpcnN0Q29udHJvbC5zZXRWYWxpZGF0b3JzKFtcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yLm51bWJlclZhbGlkYXRvcigpLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICB0aGlzLnNlY29uZENvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRGlzYWJsZSAnZmlyc3QnIGZpZWxkLlxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLlRvZGF5IHx8XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuVGhpc1dlZWsgfHxcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5UaGlzTW9udGggfHxcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5Jc0VtcHR5IHx8XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuSXNOb3RFbXB0eVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBEZWZhdWx0IGRpc2FibGUgJ3NlY29uZCcgZmllbGQuXG4gICAgICAgICAgICBzdXBlci5zZXRGaWVsZHNTdGF0ZUFuZFZhbGlkYXRvcnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldENvbnRyb2xzV2lkdGgoKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLlRvZGF5IHx8XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5UaGlzV2VlayB8fFxuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuVGhpc01vbnRoIHx8XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5Jc0VtcHR5IHx8XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5Jc05vdEVtcHR5XG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5vcGVyYXRvcldpZHRoID0gJ2F1dG8nO1xuICAgICAgICAgICAgdGhpcy5maWVsZHNXaWR0aCA9ICcwJSc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuT24pIHtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3JXaWR0aCA9ICczOCUnO1xuICAgICAgICAgICAgdGhpcy5maWVsZHNXaWR0aCA9ICc2MiUnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcGVyYXRvcldpZHRoID0gJzMwJSc7XG4gICAgICAgICAgICB0aGlzLmZpZWxkc1dpZHRoID0gJzcwJSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk9wZXJhdG9yQ2hhbmdlZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gT2JqZWN0LnZhbHVlcyh0aGlzLm9wZXJhdG9ycykuZmluZChcbiAgICAgICAgICAgIChvcGVyYXRvcikgPT4gb3BlcmF0b3IuaWQgPT09IHZhbHVlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5vcGVyYXRvciA9IG9wZXJhdG9yO1xuICAgICAgICB0aGlzLm9wZXJhdG9yVW5pdCA9IHRoaXMuZ2V0RGVmYXVsdE9wZXJhdG9yVW5pdCgpO1xuICAgICAgICBpZiAodGhpcy5pbmxpbmUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q29udHJvbHNXaWR0aCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9wYXJlbnRGb3JtKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBhcmVudEZvcm0oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lbWl0T25DaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGltZVVuaXRDaGFuZ2VkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgb3BlcmF0b3JVbml0ID0gT2JqZWN0LnZhbHVlcyhQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdHMpLmZpbmQoXG4gICAgICAgICAgICAob3BlcmF0b3JVbml0KSA9PiBvcGVyYXRvclVuaXQuaWQgPT09IHZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMub3BlcmF0b3JVbml0ID0gb3BlcmF0b3JVbml0O1xuICAgICAgICBpZiAodGhpcy5fcGFyZW50Rm9ybSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQYXJlbnRGb3JtKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZW1pdE9uQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5RmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblZhcmlhYmxlQ2hhbmdlZCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuZmlyc3RDb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuZW1pdE9uQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5RmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlY29uZFZhcmlhYmxlQ2hhbmdlZCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuc2Vjb25kQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLmVtaXRPbkNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EYXRlVmFsdWVDaGFuZ2VkKCkge1xuICAgICAgICBpZiAodGhpcy5lbWl0T25DaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import { ViewChild, } from '@angular/core';
2
2
  import { Component } from '@angular/core';
3
3
  import { BaseFilterComponent } from '../common/model/base-filter-component';
4
- import { PepSmartFilterOperators, } from '../common/model/operator';
4
+ import { PepSmartFilterOperators, PepSmartFilterVariableOperators } from '../common/model/operator';
5
5
  import { distinctUntilChanged, map, startWith } from 'rxjs/operators';
6
6
  import { FormControl } from '@angular/forms';
7
7
  import { VirtualScrollerComponent } from 'ngx-virtual-scroller';
@@ -13,7 +13,9 @@ class PepMultiSelectFilterOption {
13
13
  export class PepMultiSelectFilterComponent extends BaseFilterComponent {
14
14
  constructor() {
15
15
  super(...arguments);
16
+ this.PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;
16
17
  this.options = [];
18
+ this.chooseTypeOptions = [];
17
19
  this.searchControl = new FormControl();
18
20
  //inline props
19
21
  this.selected = '';
@@ -25,6 +27,7 @@ export class PepMultiSelectFilterComponent extends BaseFilterComponent {
25
27
  super.ngOnInit;
26
28
  if (this.inline) {
27
29
  this.inlineControlInit();
30
+ this.setControlsWidth();
28
31
  }
29
32
  else {
30
33
  this.noneInlineControlInit();
@@ -35,11 +38,11 @@ export class PepMultiSelectFilterComponent extends BaseFilterComponent {
35
38
  this.calcOptionsHeight(this.options.length);
36
39
  }
37
40
  inlineControlInit() {
38
- var _a, _b, _c, _d;
41
+ var _a, _b, _c;
39
42
  //load options from field
40
43
  this.inlineOptions = ((_b = (_a = this.field) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.length) > 0 ? this.field.options : [];
41
- // Init the selected values from first value.
42
- if (((_d = (_c = this.firstControl) === null || _c === void 0 ? void 0 : _c.value) === null || _d === void 0 ? void 0 : _d.length) > 0) {
44
+ // init the selected values from first value.
45
+ if (((_c = this.firstControl) === null || _c === void 0 ? void 0 : _c.value) && Array.isArray(this.firstControl.value)) {
43
46
  this.selected = this.firstControl.value.join(';');
44
47
  }
45
48
  }
@@ -118,6 +121,35 @@ export class PepMultiSelectFilterComponent extends BaseFilterComponent {
118
121
  }
119
122
  }
120
123
  // Override
124
+ loadOperatorsOptions() {
125
+ this.chooseTypeOptions = this.operators.map((operator) => {
126
+ return {
127
+ key: operator.id,
128
+ value: this.translate.instant(`${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`),
129
+ };
130
+ });
131
+ }
132
+ setControlsWidth() {
133
+ var _a;
134
+ if ((_a = this.variableFieldOptions) === null || _a === void 0 ? void 0 : _a.length) {
135
+ this.operatorWidth = '38%';
136
+ this.valueWidth = '62%';
137
+ }
138
+ else {
139
+ this.valueWidth = '100%';
140
+ }
141
+ }
142
+ onOperatorChanged(value) {
143
+ const operator = Object.values(this.operators).find((operator) => operator.id === value);
144
+ this.operator = operator;
145
+ if (this._parentForm) {
146
+ this.updateParentForm();
147
+ }
148
+ if (this.emitOnChange) {
149
+ this.applyFilter();
150
+ }
151
+ }
152
+ // Override
121
153
  initFilter() {
122
154
  this.options.forEach((opt) => (opt.selected = false));
123
155
  this.searchControl.setValue('');
@@ -138,11 +170,17 @@ export class PepMultiSelectFilterComponent extends BaseFilterComponent {
138
170
  this.applyFilter();
139
171
  }
140
172
  }
173
+ onValueChanged(value) {
174
+ this.firstControl.setValue(value);
175
+ if (this.emitOnChange) {
176
+ this.applyFilter();
177
+ }
178
+ }
141
179
  }
142
180
  PepMultiSelectFilterComponent.decorators = [
143
181
  { type: Component, args: [{
144
182
  selector: 'pep-multi-select-filter',
145
- template: "<ng-container *ngIf=\"inline\">\n <pep-select [key]=\"'multi1'\" [label]=\"'Pepperi Multi Select'\" [type]=\"'multi'\" [value]=\"selected\"\n [xAlignment]=\"'left'\" [renderTitle]=\"renderTitle\" [options]='inlineOptions'\n (valueChange)=\"onMultiSelectChanged($event)\">\n </pep-select>\n</ng-container>\n<div *ngIf=\"!inline\" [formGroup]=\"form\">\n <pep-search *ngIf=\"options?.length > numberOptionsToShowSearch\" [searchControl]=\"searchControl\"\n [triggerOn]=\"'keydown'\" shrink=\"never\"></pep-search>\n <div pepRtlClass class=\"multi-select-options pep-border-top pep-border-bottom\"\n [ngClass]=\"{'with-no-search': options?.length <= numberOptionsToShowSearch}\">\n <div #optionsContainer class=\"flip-scroll\" pepRtlClass>\n <virtual-scroller #scroll [items]=\"filteredOptions$ | async\" [parentScroll]=\"optionsContainer\">\n <mat-checkbox *ngFor=\"let opt of scroll.viewPortItems\"\n class=\"pep-checkbox-container pep-input no-default-background md\" [title]=\"opt.value\"\n [checked]=\"opt.selected\" (change)=\"onOptionChange(opt, $event)\">\n <div class=\"title\">\n <span class=\"body-sm ellipsis\">{{ opt.value }}</span>\n <span *ngIf=\"opt.count\" class=\"color-dimmed body-xs ellipsis\">({{opt.count}})</span>\n </div>\n </mat-checkbox>\n <ng-container *ngIf=\"scroll.viewPortItems?.length === 0\">\n <span class=\"no-options body-sm ellipsis\" [title]=\"field.name\">\n {{ ( options.length > 0 ? \"SMART_FILTERS.NO_SEARCH_RESULTS\" : \"SMART_FILTERS.NO_OPTIONS\") |\n translate }}\n </span>\n </ng-container>\n </virtual-scroller>\n </div>\n </div>\n</div>",
183
+ template: "<ng-container *ngIf=\"inline\">\n <ng-container *ngIf=\"variableFieldOptions?.length\">\n <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <pep-select [fxFlex]=\"operatorWidth\" [key]=\"'typeOperator'\" [value]=\"operator.id\"\n [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n [options]=\"chooseTypeOptions\" (valueChange)=\"onOperatorChanged($event)\">\n </pep-select>\n <ng-container *ngIf=\"operator === PepSmartFilterVariableOperators.EqualsToVariable || \n operator === PepSmartFilterVariableOperators.NotEqualsToVariable\">\n <pep-select [fxFlex]=\"valueWidth\" [key]=\"firstControlKey\" [value]=\"firstControl?.value || ''\"\n [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n [options]=\"variableFieldOptions\" (valueChange)=\"onValueChanged($event)\">\n </pep-select>\n </ng-container>\n <ng-container *ngIf=\"operator !== PepSmartFilterVariableOperators.EqualsToVariable && \n operator !== PepSmartFilterVariableOperators.NotEqualsToVariable\">\n <pep-select [fxFlex]=\"valueWidth\" [label]=\"'Pepperi Multi Select'\" [type]=\"'multi'\"\n [value]=\"selected\" [xAlignment]=\"'left'\" [renderTitle]=\"renderTitle\" [options]='inlineOptions'\n (valueChange)=\"onMultiSelectChanged($event)\">\n </pep-select>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!variableFieldOptions || !variableFieldOptions.length\">\n <pep-select [label]=\"'Pepperi Multi Select'\" [type]=\"'multi'\" [value]=\"selected\"\n [xAlignment]=\"'left'\" [renderTitle]=\"renderTitle\" [options]='inlineOptions'\n (valueChange)=\"onMultiSelectChanged($event)\">\n </pep-select>\n </ng-container>\n</ng-container>\n<div *ngIf=\"!inline\" [formGroup]=\"form\">\n <pep-search *ngIf=\"options?.length > numberOptionsToShowSearch\" [searchControl]=\"searchControl\"\n [triggerOn]=\"'keydown'\" shrink=\"never\"></pep-search>\n <div pepRtlClass class=\"multi-select-options pep-border-top pep-border-bottom\"\n [ngClass]=\"{'with-no-search': options?.length <= numberOptionsToShowSearch}\">\n <div #optionsContainer class=\"flip-scroll\" pepRtlClass>\n <virtual-scroller #scroll [items]=\"filteredOptions$ | async\" [parentScroll]=\"optionsContainer\">\n <mat-checkbox *ngFor=\"let opt of scroll.viewPortItems\"\n class=\"pep-checkbox-container pep-input no-default-background md\" [title]=\"opt.value\"\n [checked]=\"opt.selected\" (change)=\"onOptionChange(opt, $event)\">\n <div class=\"title\">\n <span class=\"body-sm ellipsis\">{{ opt.value }}</span>\n <span *ngIf=\"opt.count\" class=\"color-dimmed body-xs ellipsis\">({{opt.count}})</span>\n </div>\n </mat-checkbox>\n <ng-container *ngIf=\"scroll.viewPortItems?.length === 0\">\n <span class=\"no-options body-sm ellipsis\" [title]=\"field.name\">\n {{ ( options.length > 0 ? \"SMART_FILTERS.NO_SEARCH_RESULTS\" : \"SMART_FILTERS.NO_OPTIONS\") |\n translate }}\n </span>\n </ng-container>\n </virtual-scroller>\n </div>\n </div>\n</div>",
146
184
  styles: [".multi-select-options{margin:.5rem calc(.25rem * -1) 0;margin:var(--pep-spacing-sm,.5rem) calc(var(--pep-spacing-xs, .25rem) * -1) 0}.multi-select-options.with-no-search{margin:calc(.5rem * -1) calc(.25rem * -1) 0;margin:calc(var(--pep-spacing-sm, .5rem) * -1) calc(var(--pep-spacing-xs, .25rem) * -1) 0}.multi-select-options .no-options{display:flex;padding:.5rem .75rem;padding:var(--pep-spacing-sm,.5rem) var(--pep-spacing-md,.75rem)}.multi-select-options .flip-scroll{padding:.5rem .25rem;padding:var(--pep-spacing-sm,.5rem) var(--pep-spacing-xs,.25rem);min-height:3.25rem;max-height:34.75rem;direction:rtl}.multi-select-options .flip-scroll.rtl,.multi-select-options .flip-scroll virtual-scroller{direction:ltr}.multi-select-options .flip-scroll.rtl virtual-scroller{direction:rtl}.multi-select-options .pep-checkbox-container{height:2.25rem;-webkit-padding-end:0;padding-inline-end:0}.multi-select-options .pep-checkbox-container ::ng-deep.mat-checkbox-layout{width:100%;height:100%;grid-template-columns:auto 1fr}.multi-select-options .pep-checkbox-container ::ng-deep.mat-checkbox-layout .mat-checkbox-label{align-self:center}.multi-select-options .pep-checkbox-container .title{display:grid;grid-auto-flow:column;justify-content:space-between;align-items:center;margin:0 .25rem;margin:0 var(--pep-spacing-xs,.25rem)}"]
147
185
  },] }
148
186
  ];
@@ -150,4 +188,4 @@ PepMultiSelectFilterComponent.propDecorators = {
150
188
  optionsContainer: [{ type: ViewChild, args: ['optionsContainer',] }],
151
189
  virtualScroller: [{ type: ViewChild, args: [VirtualScrollerComponent,] }]
152
190
  };
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3NtYXJ0LWZpbHRlcnMvbXVsdGktc2VsZWN0LWZpbHRlci9tdWx0aS1zZWxlY3QtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBTUgsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUVILHVCQUF1QixHQUMxQixNQUFNLDBCQUEwQixDQUFDO0FBS2xDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhFLE1BQU0sMEJBQTBCO0lBQWhDO1FBR0ksYUFBUSxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0NBQUE7QUFPRCxNQUFNLE9BQU8sNkJBQ1QsU0FBUSxtQkFBbUI7SUFOL0I7O1FBUUksWUFBTyxHQUFpQyxFQUFFLENBQUM7UUFFM0Msa0JBQWEsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLGNBQWM7UUFDZCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2Qsa0JBQWEsR0FBaUIsRUFBRSxDQUFDO1FBS2hCLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUk1Qyw4QkFBeUIsR0FBRyxFQUFFLENBQUM7SUFpS25DLENBQUM7SUEvSkcsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFFZixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFD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RyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUNsRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FDdkIsQ0FBQztJQUNOLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFhO1FBQzlCLElBQUksS0FBSyxFQUFFO1lBQ1AsTUFBTSxRQUFRLEdBQWEsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEM7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQzs7O1lBckxKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxrNURBQW1EOzthQUV0RDs7OytCQVdJLFNBQVMsU0FBQyxrQkFBa0I7OEJBSTVCLFNBQVMsU0FBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1vbi9tb2RlbC9iYXNlLWZpbHRlci1jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvcixcbiAgICBQZXBTbWFydEZpbHRlck9wZXJhdG9ycyxcbn0gZnJvbSAnLi4vY29tbW9uL21vZGVsL29wZXJhdG9yJztcbmltcG9ydCB7IElQZXBPcHRpb24gfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQgeyBJUGVwU21hcnRGaWx0ZXJEYXRhVmFsdWUgfSBmcm9tICcuLi9jb21tb24vbW9kZWwvZmlsdGVyJztcbmltcG9ydCB7IElQZXBTbWFydEZpbHRlckZpZWxkT3B0aW9uIH0gZnJvbSAnLi4vY29tbW9uL21vZGVsL2ZpZWxkJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQgfSBmcm9tICduZ3gtdmlydHVhbC1zY3JvbGxlcic7XG5cbmNsYXNzIFBlcE11bHRpU2VsZWN0RmlsdGVyT3B0aW9uIGltcGxlbWVudHMgSVBlcFNtYXJ0RmlsdGVyRmllbGRPcHRpb24ge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgY291bnQ/OiBudW1iZXI7XG4gICAgc2VsZWN0ZWQgPSBmYWxzZTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtbXVsdGktc2VsZWN0LWZpbHRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL211bHRpLXNlbGVjdC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL211bHRpLXNlbGVjdC1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVwTXVsdGlTZWxlY3RGaWx0ZXJDb21wb25lbnRcbiAgICBleHRlbmRzIEJhc2VGaWx0ZXJDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgb3B0aW9uczogUGVwTXVsdGlTZWxlY3RGaWx0ZXJPcHRpb25bXSA9IFtdO1xuICAgIGZpbHRlcmVkT3B0aW9ucyQ6IE9ic2VydmFibGU8YW55PjtcbiAgICBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgLy9pbmxpbmUgcHJvcHNcbiAgICBzZWxlY3RlZCA9ICcnO1xuICAgIGlubGluZU9wdGlvbnM6IElQZXBPcHRpb25bXSA9IFtdO1xuXG4gICAgQFZpZXdDaGlsZCgnb3B0aW9uc0NvbnRhaW5lcicpXG4gICAgb3B0aW9uc0NvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgTUFYX09QVElPTlNfVE9fU0hPVyA9IDYuMzU7XG4gICAgQFZpZXdDaGlsZChWaXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQpXG4gICAgcHJpdmF0ZSB2aXJ0dWFsU2Nyb2xsZXI6IFZpcnR1YWxTY3JvbGxlckNvbXBvbmVudDtcblxuICAgIG51bWJlck9wdGlvbnNUb1Nob3dTZWFyY2ggPSAxMDtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdDtcblxuICAgICAgICBpZiAodGhpcy5pbmxpbmUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5saW5lQ29udHJvbEluaXQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubm9uZUlubGluZUNvbnRyb2xJbml0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gQ2FsYyBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAgICAgIHRoaXMuY2FsY09wdGlvbnNIZWlnaHQodGhpcy5vcHRpb25zLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbmxpbmVDb250cm9sSW5pdCgpIHtcbiAgICAgICAgLy9sb2FkIG9wdGlvbnMgZnJvbSBmaWVsZCAgICAgICAgXG4gICAgICAgIHRoaXMuaW5saW5lT3B0aW9ucyA9IHRoaXMuZmllbGQ/Lm9wdGlvbnM/Lmxlbmd0aCA+IDAgPyB0aGlzLmZpZWxkLm9wdGlvbnMgYXMgSVBlcE9wdGlvbltdIDogW107XG5cbiAgICAgICAgLy8gSW5pdCB0aGUgc2VsZWN0ZWQgdmFsdWVzIGZyb20gZmlyc3QgdmFsdWUuICAgICAgICBcbiAgICAgICAgaWYgKHRoaXMuZmlyc3RDb250cm9sPy52YWx1ZT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuZmlyc3RDb250cm9sLnZhbHVlLmpvaW4oJzsnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbm9uZUlubGluZUNvbnRyb2xJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5maWVsZC5vcHRpb25zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmZpZWxkLm9wdGlvbnMubWFwKChvcHQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogb3B0LnZhbHVlLCBjb3VudDogb3B0LmNvdW50LCBzZWxlY3RlZDogZmFsc2UgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEluaXQgdGhlIHNlbGVjdGVkIHZhbHVlcyBmcm9tIGZpcnN0IHZhbHVlLlxuICAgICAgICBjb25zdCBmaXJzdENvbnRyb2wgPSB0aGlzLmZpcnN0Q29udHJvbDtcbiAgICAgICAgaWYgKGZpcnN0Q29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0T3B0aW9uc1NlbGVjdGVkVmFsdWVzKGZpcnN0Q29udHJvbC52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgc3Vic2NyaXB0aW9uIGZvciB0aGUgZmlyc3QgdmFsdWUgY2hhbmdlIHRvIHNldCB0aGUgc2VsZWN0ZWQgb3B0aW9ucy5cbiAgICAgICAgZmlyc3RDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGVkVmFsdWVzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdE9wdGlvbnNTZWxlY3RlZFZhbHVlcyhzZWxlY3RlZFZhbHVlcyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBGaWx0ZXIgdGhlIG9wdGlvbnMgYnkgdGhlIHNlYXJjaCBjb250cm9sLlxuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyQgPSB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICB0aGlzLmdldERlc3Ryb3llcigpLFxuICAgICAgICAgICAgc3RhcnRXaXRoPGFueT4oJycpLFxuICAgICAgICAgICAgbWFwKChvcHRpb24pID0+XG4gICAgICAgICAgICAgICAgdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBvcHRpb24gOiBvcHRpb24gJiYgb3B0aW9uLnZhbHVlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWFwKCh2YWx1ZSkgPT4gKHZhbHVlID8gdGhpcy5maWx0ZXJPcHRpb25zKHZhbHVlKSA6IHRoaXMub3B0aW9ucykpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRWFjaCB0aW1lIHRoZSBmaWx0ZXIgY2hhbmdlLlxuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKGZpbHRlcmRPcHRpb25zOiBQZXBNdWx0aVNlbGVjdEZpbHRlck9wdGlvbltdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjT3B0aW9uc0hlaWdodChmaWx0ZXJkT3B0aW9ucy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyA4IGlzIHRoZSBwYWRkaW5nIHRvcCBvZiB0aGUgbXVsdGktc2VsZWN0LW9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsZXIuc2Nyb2xsVG9Qb3NpdGlvbigtOCk7XG4gICAgICAgICAgICAgICAgfSwgMTI1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgIH1cblxuICAgIGluaXRPcHRpb25zU2VsZWN0ZWRWYWx1ZXMoc2VsZWN0ZWRWYWx1ZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChvcHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzVmFsdWVTZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZXMgJiYgc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0LnZhbHVlKTtcbiAgICAgICAgICAgIG9wdC5zZWxlY3RlZCA9IGlzVmFsdWVTZWxlY3RlZDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjT3B0aW9uc0hlaWdodChvcHRpb25zQ291bnQ6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zQ29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25zVG9TaG93ID1cbiAgICAgICAgICAgICAgICBvcHRpb25zQ291bnQgPiB0aGlzLk1BWF9PUFRJT05TX1RPX1NIT1dcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLk1BWF9PUFRJT05TX1RPX1NIT1dcbiAgICAgICAgICAgICAgICAgICAgOiBvcHRpb25zQ291bnQ7XG4gICAgICAgICAgICAvLyBvcHRpb25zVG9TaG93ICogMi4yNSBpcyAxIG9wdGlvbiBoZWlnaHQgKyAxIGlzIHRoZSBwYWRkaW5nIHRvcCAmIGJvdHRvbSBvZiB0aGUgY29udGFpbmVyLlxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uc0hlaWdodCA9IG9wdGlvbnNUb1Nob3cgKiAyLjI1ICsgMSArICdyZW0nO1xuXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICAgICAgIG9wdGlvbnNIZWlnaHRcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlck9wdGlvbnModmFsdWU6IHN0cmluZyk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpbHRlcihcbiAgICAgICAgICAgIChvcHQpID0+XG4gICAgICAgICAgICAgICAgb3B0LnZhbHVlICYmXG4gICAgICAgICAgICAgICAgb3B0LnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZVxuICAgIGdldERlZmF1bHRPcGVyYXRvcigpOiBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvciB7XG4gICAgICAgIHJldHVybiBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5JbjtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZVxuICAgIGdldEZpbHRlclZhbHVlKCk6IElQZXBTbWFydEZpbHRlckRhdGFWYWx1ZSB7XG4gICAgICAgIGlmICh0aGlzLmlubGluZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmaXJzdDogdGhpcy5maXJzdENvbnRyb2wudmFsdWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMub3B0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKG9wdCkgPT4gb3B0LnNlbGVjdGVkKVxuICAgICAgICAgICAgICAgIC5tYXAoKG9wdCkgPT4gb3B0LnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0ge1xuICAgICAgICAgICAgICAgIGZpcnN0OiBzZWxlY3RlZFZhbHVlcyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZFZhbHVlcy5sZW5ndGggPiAwID8gZmlsdGVyVmFsdWUgOiBudWxsO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZVxuICAgIGluaXRGaWx0ZXIoKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChvcHQpID0+IChvcHQuc2VsZWN0ZWQgPSBmYWxzZSkpO1xuICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIH1cblxuICAgIG9uT3B0aW9uQ2hhbmdlKFxuICAgICAgICBvcHRpb246IFBlcE11bHRpU2VsZWN0RmlsdGVyT3B0aW9uLFxuICAgICAgICBldmVudDogTWF0Q2hlY2tib3hDaGFuZ2VcbiAgICApIHtcbiAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gZXZlbnQuY2hlY2tlZDtcbiAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuc2V0VmFsdWUoXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuZmlsdGVyKChvcHQpID0+IG9wdC5zZWxlY3RlZCkubWFwKChvcHQpID0+IG9wdC52YWx1ZSksXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uTXVsdGlTZWxlY3RDaGFuZ2VkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZDogc3RyaW5nW10gPSB2YWx1ZS5zcGxpdCgnOycpO1xuICAgICAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuc2V0VmFsdWUoc2VsZWN0ZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lbWl0T25DaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3NtYXJ0LWZpbHRlcnMvbXVsdGktc2VsZWN0LWZpbHRlci9tdWx0aS1zZWxlY3QtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBTUgsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUVILHVCQUF1QixFQUN2QiwrQkFBK0IsRUFDbEMsTUFBTSwwQkFBMEIsQ0FBQztBQUtsQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVoRSxNQUFNLDBCQUEwQjtJQUFoQztRQUdJLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztDQUFBO0FBT0QsTUFBTSxPQUFPLDZCQUNULFNBQVEsbUJBQW1CO0lBTi9COztRQVFJLG9DQUErQixHQUFHLCtCQUErQixDQUFDO1FBRWxFLFlBQU8sR0FBaUMsRUFBRSxDQUFDO1FBRTNDLHNCQUFpQixHQUFzQixFQUFFLENBQUM7UUFDMUMsa0JBQWEsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLGNBQWM7UUFDZCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2Qsa0JBQWEsR0FBaUIsRUFBRSxDQUFDO1FBT2hCLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUk1Qyw4QkFBeUIsR0FBRyxFQUFFLENBQUM7SUE4TW5DLENBQUM7SUE1TUcsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFFZixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMzQjthQUFNO1lBQ0gsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7U0FDaEM7SUFDTCxDQUFDO0lBR0QsZUFBZTtRQUNYLDJCQUEyQjtRQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU8saUJBQWlCOztRQUNyQixpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsS0FBSywwQ0FBRSxPQUFPLDBDQUFFLE1BQU0sSUFBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBdUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRS9GLCtDQUErQztRQUMvQyxJQUFJLENBQUEsTUFBQSxJQUFJLENBQUMsWUFBWSwwQ0FBRSxLQUFLLEtBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JEO0lBQ0wsQ0FBQztJQUVPLHFCQUFxQjs7UUFDekIsSUFBSSxDQUFBLE1BQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLDBDQUFFLE1BQU0sSUFBRyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNuRSxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hDO1FBRUQsNkNBQTZDO1FBQzdDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdkMsSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQ3BCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEQ7UUFFRCwyRUFBMkU7UUFDM0UsWUFBWSxDQUFDLFlBQVk7YUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO2FBQ2pELFNBQVMsQ0FBQyxDQUFDLGNBQXdCLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMseUJBQXlCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7UUFFUCw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDeEQsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUNuQixTQUFTLENBQU0sRUFBRSxDQUFDLEVBQ2xCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1gsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUMvRCxFQUNELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNyRSxDQUFDO1FBRUYsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQzNCLENBQUMsY0FBNEMsRUFBRSxFQUFFO1lBQzdDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixtREFBbUQ7Z0JBQ25ELElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDWixDQUFDLENBQ0osQ0FBQztJQUVOLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxjQUF3QjtRQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3pCLE1BQU0sZUFBZSxHQUNqQixjQUFjLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekQsR0FBRyxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8saUJBQWlCLENBQUMsWUFBb0I7UUFDMUMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsTUFBTSxhQUFhLEdBQ2YsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUI7Z0JBQ25DLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CO2dCQUMxQixDQUFDLENBQUMsWUFBWSxDQUFDO1lBQ3ZCLDRGQUE0RjtZQUM1RixNQUFNLGFBQWEsR0FBRyxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFFdkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQ25DLFFBQVEsRUFDUixhQUFhLENBQ2hCLENBQUM7U0FDTDtJQUNMLENBQUM7SUFFTyxhQUFhLENBQUMsS0FBYTtRQUMvQixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDdEIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNKLEdBQUcsQ0FBQyxLQUFLO1lBQ1QsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQ2xFLENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVztJQUNYLGtCQUFrQjtRQUNkLE9BQU8sdUJBQXVCLENBQUMsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxXQUFXO0lBQ1gsY0FBYztRQUNWLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLE9BQU87Z0JBQ0gsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSzthQUNqQyxDQUFDO1NBQ0w7YUFBTTtZQUNILE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPO2lCQUM5QixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7aUJBQzdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLE1BQU0sV0FBVyxHQUFHO2dCQUNoQixLQUFLLEVBQUUsY0FBYzthQUN4QixDQUFDO1lBRUYsT0FBTyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDekQ7SUFFTCxDQUFDO0lBRUQsV0FBVztJQUNYLG9CQUFvQjtRQUNoQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNyRCxPQUFPO2dCQUNILEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRTtnQkFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUN6QixHQUFHLElBQUksQ0FBQyw0QkFBNEIsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQzFEO2FBQ0osQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGdCQUFnQjs7UUFDWixJQUFJLE1BQUEsSUFBSSxDQUFDLG9CQUFvQiwwQ0FBRSxNQUFNLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7U0FFM0I7YUFBTTtZQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWE7UUFDM0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUMvQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQ3RDLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDM0I7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUdELFdBQVc7SUFDWCxVQUFVO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxjQUFjLENBQ1YsTUFBa0MsRUFDbEMsS0FBd0I7UUFFeEIsTUFBTSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUNsRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FDdkIsQ0FBQztJQUNOLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFhO1FBQzlCLElBQUksS0FBSyxFQUFFO1lBQ1AsTUFBTSxRQUFRLEdBQWEsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEM7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFLO1FBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEI7SUFDTCxDQUFDOzs7WUF2T0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLHFrSEFBbUQ7O2FBRXREOzs7K0JBZ0JJLFNBQVMsU0FBQyxrQkFBa0I7OEJBSTVCLFNBQVMsU0FBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1vbi9tb2RlbC9iYXNlLWZpbHRlci1jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvcixcbiAgICBQZXBTbWFydEZpbHRlck9wZXJhdG9ycyxcbiAgICBQZXBTbWFydEZpbHRlclZhcmlhYmxlT3BlcmF0b3JzXG59IGZyb20gJy4uL2NvbW1vbi9tb2RlbC9vcGVyYXRvcic7XG5pbXBvcnQgeyBJUGVwT3B0aW9uIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgSVBlcFNtYXJ0RmlsdGVyRGF0YVZhbHVlIH0gZnJvbSAnLi4vY29tbW9uL21vZGVsL2ZpbHRlcic7XG5pbXBvcnQgeyBJUGVwU21hcnRGaWx0ZXJGaWVsZE9wdGlvbiB9IGZyb20gJy4uL2NvbW1vbi9tb2RlbC9maWVsZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgVmlydHVhbFNjcm9sbGVyQ29tcG9uZW50IH0gZnJvbSAnbmd4LXZpcnR1YWwtc2Nyb2xsZXInO1xuXG5jbGFzcyBQZXBNdWx0aVNlbGVjdEZpbHRlck9wdGlvbiBpbXBsZW1lbnRzIElQZXBTbWFydEZpbHRlckZpZWxkT3B0aW9uIHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGNvdW50PzogbnVtYmVyO1xuICAgIHNlbGVjdGVkID0gZmFsc2U7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLW11bHRpLXNlbGVjdC1maWx0ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1zZWxlY3QtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tdWx0aS1zZWxlY3QtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBlcE11bHRpU2VsZWN0RmlsdGVyQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBCYXNlRmlsdGVyQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIFBlcFNtYXJ0RmlsdGVyVmFyaWFibGVPcGVyYXRvcnMgPSBQZXBTbWFydEZpbHRlclZhcmlhYmxlT3BlcmF0b3JzO1xuXG4gICAgb3B0aW9uczogUGVwTXVsdGlTZWxlY3RGaWx0ZXJPcHRpb25bXSA9IFtdO1xuICAgIGZpbHRlcmVkT3B0aW9ucyQ6IE9ic2VydmFibGU8YW55PjtcbiAgICBjaG9vc2VUeXBlT3B0aW9uczogQXJyYXk8SVBlcE9wdGlvbj4gPSBbXTtcbiAgICBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgLy9pbmxpbmUgcHJvcHNcbiAgICBzZWxlY3RlZCA9ICcnO1xuICAgIGlubGluZU9wdGlvbnM6IElQZXBPcHRpb25bXSA9IFtdO1xuICAgIG9wZXJhdG9yV2lkdGg6IHN0cmluZztcbiAgICB2YWx1ZVdpZHRoOiBzdHJpbmc7XG5cbiAgICBAVmlld0NoaWxkKCdvcHRpb25zQ29udGFpbmVyJylcbiAgICBvcHRpb25zQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBNQVhfT1BUSU9OU19UT19TSE9XID0gNi4zNTtcbiAgICBAVmlld0NoaWxkKFZpcnR1YWxTY3JvbGxlckNvbXBvbmVudClcbiAgICBwcml2YXRlIHZpcnR1YWxTY3JvbGxlcjogVmlydHVhbFNjcm9sbGVyQ29tcG9uZW50O1xuXG4gICAgbnVtYmVyT3B0aW9uc1RvU2hvd1NlYXJjaCA9IDEwO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0O1xuXG4gICAgICAgIGlmICh0aGlzLmlubGluZSkge1xuICAgICAgICAgICAgdGhpcy5pbmxpbmVDb250cm9sSW5pdCgpO1xuICAgICAgICAgICAgdGhpcy5zZXRDb250cm9sc1dpZHRoKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5vbmVJbmxpbmVDb250cm9sSW5pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIENhbGMgZm9yIHRoZSBmaXJzdCB0aW1lLlxuICAgICAgICB0aGlzLmNhbGNPcHRpb25zSGVpZ2h0KHRoaXMub3B0aW9ucy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5saW5lQ29udHJvbEluaXQoKSB7XG4gICAgICAgIC8vbG9hZCBvcHRpb25zIGZyb20gZmllbGQgICAgICAgIFxuICAgICAgICB0aGlzLmlubGluZU9wdGlvbnMgPSB0aGlzLmZpZWxkPy5vcHRpb25zPy5sZW5ndGggPiAwID8gdGhpcy5maWVsZC5vcHRpb25zIGFzIElQZXBPcHRpb25bXSA6IFtdO1xuXG4gICAgICAgIC8vIGluaXQgdGhlIHNlbGVjdGVkIHZhbHVlcyBmcm9tIGZpcnN0IHZhbHVlLiAgXG4gICAgICAgIGlmICh0aGlzLmZpcnN0Q29udHJvbD8udmFsdWUgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmZpcnN0Q29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmZpcnN0Q29udHJvbC52YWx1ZS5qb2luKCc7Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG5vbmVJbmxpbmVDb250cm9sSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZmllbGQub3B0aW9ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5maWVsZC5vcHRpb25zLm1hcCgob3B0KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG9wdC52YWx1ZSwgY291bnQ6IG9wdC5jb3VudCwgc2VsZWN0ZWQ6IGZhbHNlIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbml0IHRoZSBzZWxlY3RlZCB2YWx1ZXMgZnJvbSBmaXJzdCB2YWx1ZS5cbiAgICAgICAgY29uc3QgZmlyc3RDb250cm9sID0gdGhpcy5maXJzdENvbnRyb2w7XG4gICAgICAgIGlmIChmaXJzdENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdE9wdGlvbnNTZWxlY3RlZFZhbHVlcyhmaXJzdENvbnRyb2wudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIHN1YnNjcmlwdGlvbiBmb3IgdGhlIGZpcnN0IHZhbHVlIGNoYW5nZSB0byBzZXQgdGhlIHNlbGVjdGVkIG9wdGlvbnMuXG4gICAgICAgIGZpcnN0Q29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHRoaXMuZ2V0RGVzdHJveWVyKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZFZhbHVlczogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRPcHRpb25zU2VsZWN0ZWRWYWx1ZXMoc2VsZWN0ZWRWYWx1ZXMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRmlsdGVyIHRoZSBvcHRpb25zIGJ5IHRoZSBzZWFyY2ggY29udHJvbC5cbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMkID0gdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgdGhpcy5nZXREZXN0cm95ZXIoKSxcbiAgICAgICAgICAgIHN0YXJ0V2l0aDxhbnk+KCcnKSxcbiAgICAgICAgICAgIG1hcCgob3B0aW9uKSA9PlxuICAgICAgICAgICAgICAgIHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gb3B0aW9uIDogb3B0aW9uICYmIG9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1hcCgodmFsdWUpID0+ICh2YWx1ZSA/IHRoaXMuZmlsdGVyT3B0aW9ucyh2YWx1ZSkgOiB0aGlzLm9wdGlvbnMpKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEVhY2ggdGltZSB0aGUgZmlsdGVyIGNoYW5nZS5cbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMkLnN1YnNjcmliZShcbiAgICAgICAgICAgIChmaWx0ZXJkT3B0aW9uczogUGVwTXVsdGlTZWxlY3RGaWx0ZXJPcHRpb25bXSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsY09wdGlvbnNIZWlnaHQoZmlsdGVyZE9wdGlvbnMubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gOCBpcyB0aGUgcGFkZGluZyB0b3Agb2YgdGhlIG11bHRpLXNlbGVjdC1vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbGVyLnNjcm9sbFRvUG9zaXRpb24oLTgpO1xuICAgICAgICAgICAgICAgIH0sIDEyNSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBpbml0T3B0aW9uc1NlbGVjdGVkVmFsdWVzKHNlbGVjdGVkVmFsdWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaCgob3B0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc1ZhbHVlU2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzICYmIHNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdC52YWx1ZSk7XG4gICAgICAgICAgICBvcHQuc2VsZWN0ZWQgPSBpc1ZhbHVlU2VsZWN0ZWQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY09wdGlvbnNIZWlnaHQob3B0aW9uc0NvdW50OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9uc0NvbnRhaW5lcikge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uc1RvU2hvdyA9XG4gICAgICAgICAgICAgICAgb3B0aW9uc0NvdW50ID4gdGhpcy5NQVhfT1BUSU9OU19UT19TSE9XXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5NQVhfT1BUSU9OU19UT19TSE9XXG4gICAgICAgICAgICAgICAgICAgIDogb3B0aW9uc0NvdW50O1xuICAgICAgICAgICAgLy8gb3B0aW9uc1RvU2hvdyAqIDIuMjUgaXMgMSBvcHRpb24gaGVpZ2h0ICsgMSBpcyB0aGUgcGFkZGluZyB0b3AgJiBib3R0b20gb2YgdGhlIGNvbnRhaW5lci5cbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnNIZWlnaHQgPSBvcHRpb25zVG9TaG93ICogMi4yNSArIDEgKyAncmVtJztcblxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNDb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zSGVpZ2h0XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWx0ZXJPcHRpb25zKHZhbHVlOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgICAob3B0KSA9PlxuICAgICAgICAgICAgICAgIG9wdC52YWx1ZSAmJlxuICAgICAgICAgICAgICAgIG9wdC52YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGVcbiAgICBnZXREZWZhdWx0T3BlcmF0b3IoKTogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3Ige1xuICAgICAgICByZXR1cm4gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuSW47XG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGVcbiAgICBnZXRGaWx0ZXJWYWx1ZSgpOiBJUGVwU21hcnRGaWx0ZXJEYXRhVmFsdWUge1xuICAgICAgICBpZiAodGhpcy5pbmxpbmUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZmlyc3Q6IHRoaXMuZmlyc3RDb250cm9sLnZhbHVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLm9wdGlvbnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChvcHQpID0+IG9wdC5zZWxlY3RlZClcbiAgICAgICAgICAgICAgICAubWFwKChvcHQpID0+IG9wdC52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHtcbiAgICAgICAgICAgICAgICBmaXJzdDogc2VsZWN0ZWRWYWx1ZXMsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gMCA/IGZpbHRlclZhbHVlIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGVcbiAgICBsb2FkT3BlcmF0b3JzT3B0aW9ucygpIHtcbiAgICAgICAgdGhpcy5jaG9vc2VUeXBlT3B0aW9ucyA9IHRoaXMub3BlcmF0b3JzLm1hcCgob3BlcmF0b3IpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAga2V5OiBvcGVyYXRvci5pZCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5PUEVSQVRPUlNfVFJBTlNMQVRJT05fUFJFRklYfS4ke29wZXJhdG9yLm5hbWV9YFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRDb250cm9sc1dpZHRoKCkge1xuICAgICAgICBpZiAodGhpcy52YXJpYWJsZUZpZWxkT3B0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yV2lkdGggPSAnMzglJztcbiAgICAgICAgICAgIHRoaXMudmFsdWVXaWR0aCA9ICc2MiUnO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlV2lkdGggPSAnMTAwJSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk9wZXJhdG9yQ2hhbmdlZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gT2JqZWN0LnZhbHVlcyh0aGlzLm9wZXJhdG9ycykuZmluZChcbiAgICAgICAgICAgIChvcGVyYXRvcikgPT4gb3BlcmF0b3IuaWQgPT09IHZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudEZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUGFyZW50Rm9ybSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmVtaXRPbkNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvLyBPdmVycmlkZVxuICAgIGluaXRGaWx0ZXIoKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChvcHQpID0+IChvcHQuc2VsZWN0ZWQgPSBmYWxzZSkpO1xuICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIH1cblxuICAgIG9uT3B0aW9uQ2hhbmdlKFxuICAgICAgICBvcHRpb246IFBlcE11bHRpU2VsZWN0RmlsdGVyT3B0aW9uLFxuICAgICAgICBldmVudDogTWF0Q2hlY2tib3hDaGFuZ2VcbiAgICApIHtcbiAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gZXZlbnQuY2hlY2tlZDtcbiAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuc2V0VmFsdWUoXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuZmlsdGVyKChvcHQpID0+IG9wdC5zZWxlY3RlZCkubWFwKChvcHQpID0+IG9wdC52YWx1ZSksXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uTXVsdGlTZWxlY3RDaGFuZ2VkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZDogc3RyaW5nW10gPSB2YWx1ZS5zcGxpdCgnOycpO1xuICAgICAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuc2V0VmFsdWUoc2VsZWN0ZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lbWl0T25DaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2VkKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZmlyc3RDb250cm9sLnNldFZhbHVlKHZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5lbWl0T25DaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
@@ -110,7 +110,7 @@ export class PepSmartFiltersComponent {
110
110
  PepSmartFiltersComponent.decorators = [
111
111
  { type: Component, args: [{
112
112
  selector: 'pep-smart-filters',
113
- template: "<div class=\"smart-filters-container\" dir=\"{{ layoutService.isRtl() ? 'rtl' : 'ltr' }}\">\n <div *ngIf=\"fields?.length > 0\" class=\"title\">\n <span class=\"body-md bold\">{{ title?.length > 0 ? title : (\"SMART_FILTERS.TITLE\" | translate)}}</span>\n <mat-chip *ngIf=\"filtersDataMap.size > 0\" [selectable]=\"false\" [removable]=\"true\" (click)=\"onFiltersClear()\"\n class=\"clear-filter pep-button chip xs weak\">\n <span class=\"body-xs ellipsis \">\n {{ \"ACTIONS.CLEAR\" | translate}}\n </span>\n </mat-chip>\n </div>\n\n <mat-accordion [displayMode]=\"'flat'\" [multi]=\"true\" class=\"pep-accordion2\">\n <mat-expansion-panel *ngFor=\"let field of fields; let i = index\" hideToggle=\"true\" [expanded]=\"field.isOpen\"\n (opened)=\"toggleField(i, true)\" (closed)=\"toggleField(i, false)\">\n <mat-expansion-panel-header [collapsedHeight]=\"expansionPanelHeaderHeight\"\n [expandedHeight]=\"expansionPanelHeaderHeight\">\n <mat-panel-title class=\"pep-spacing-element-negative\">\n <div class=\"smart-filter-title-container\">\n <mat-icon class=\"pep-spacing-element\">\n <pep-icon [name]=\"field.isOpen ? 'number_minus' : 'number_plus'\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\" [title]=\"field.name\">\n {{ field.name }}\n </span>\n <mat-chip *ngIf=\"filtersDataMap.get(field.id)\" [selectable]=\"false\" [removable]=\"true\"\n (click)=\"onFilterClear(field)\" class=\"clear-filter pep-button chip xs weak\">\n <span *ngIf=\"field.componentType === 'multi-select'\" class=\"body-xs pep-spacing-element\">\n {{ filtersDataMap.get(field.id).value?.first?.length }}\n <!-- {{ field.componentType === 'multi-select' ?\n filtersDataMap.get(field.id).value?.first?.length : 1 }} -->\n </span>\n <mat-icon>\n <pep-icon name=\"system_close\"></pep-icon>\n </mat-icon>\n </mat-chip>\n </div>\n </mat-panel-title>\n </mat-expansion-panel-header>\n <div class=\"expansion-content smart-filter-content\">\n <ng-container [ngSwitch]=\"field.componentType\">\n <ng-container *ngSwitchCase=\"'boolean'\">\n <pep-boolean-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-boolean-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <pep-date-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-date-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'multi-select'\">\n <pep-multi-select-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-multi-select-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <pep-number-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-number-filter>\n </ng-container>\n <!-- <div *ngSwitchDefault>\n </div> -->\n </ng-container>\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n</div>",
113
+ template: "<div class=\"smart-filters-container\" dir=\"{{ layoutService.isRtl() ? 'rtl' : 'ltr' }}\">\n <div *ngIf=\"fields?.length > 0\" class=\"title\">\n <span class=\"body-md bold\">{{ title?.length > 0 ? title : (\"SMART_FILTERS.TITLE\" | translate)}}</span>\n <mat-chip *ngIf=\"filtersDataMap.size > 0\" [selectable]=\"false\" [removable]=\"true\" (click)=\"onFiltersClear()\"\n class=\"clear-filter pep-button chip xs weak\">\n <span class=\"body-xs ellipsis \">\n {{ \"ACTIONS.CLEAR\" | translate}}\n </span>\n </mat-chip>\n </div>\n\n <mat-accordion [displayMode]=\"'flat'\" [multi]=\"true\" class=\"pep-accordion2\">\n <mat-expansion-panel *ngFor=\"let field of fields; let i = index\" hideToggle=\"true\" [expanded]=\"field.isOpen\"\n (opened)=\"toggleField(i, true)\" (closed)=\"toggleField(i, false)\">\n <mat-expansion-panel-header [collapsedHeight]=\"expansionPanelHeaderHeight\"\n [expandedHeight]=\"expansionPanelHeaderHeight\">\n <mat-panel-title class=\"pep-spacing-element-negative\">\n <div class=\"smart-filter-title-container\">\n <mat-icon class=\"pep-spacing-element\">\n <pep-icon [name]=\"field.isOpen ? 'number_minus' : 'number_plus'\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\" [title]=\"field.name\">\n {{ field.name }}\n </span>\n <mat-chip *ngIf=\"filtersDataMap.get(field.id)\" [selectable]=\"false\" [removable]=\"true\"\n (click)=\"onFilterClear(field)\" class=\"clear-filter pep-button chip xs weak\">\n <span *ngIf=\"field.componentType === 'multi-select'\" class=\"body-xs pep-spacing-element\">\n {{ filtersDataMap.get(field.id).value?.first?.length }}\n <!-- {{ field.componentType === 'multi-select' ?\n filtersDataMap.get(field.id).value?.first?.length : 1 }} -->\n </span>\n <mat-icon>\n <pep-icon name=\"system_close\"></pep-icon>\n </mat-icon>\n </mat-chip>\n </div>\n </mat-panel-title>\n </mat-expansion-panel-header>\n <div class=\"expansion-content smart-filter-content\">\n <ng-container [ngSwitch]=\"field.componentType\">\n <ng-container *ngSwitchCase=\"'boolean'\">\n <pep-boolean-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-boolean-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <pep-date-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-date-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'multi-select'\">\n <pep-multi-select-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-multi-select-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <pep-number-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-number-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'text'\">\n <pep-text-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n </pep-text-filter>\n </ng-container>\n <!-- <div *ngSwitchDefault>\n </div> -->\n </ng-container>\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n</div>",
114
114
  changeDetection: ChangeDetectionStrategy.OnPush,
115
115
  styles: [".smart-filters-container .title{height:calc(.5rem + 2.5rem);height:calc(var(--pep-top-bar-spacing-bottom, .5rem) + var(--pep-top-bar-field-height, 2.5rem));display:flex;flex-flow:wrap;align-items:center;justify-content:space-between}.smart-filters-container .title .clear-filter{display:flex;flex-direction:row;align-items:center;justify-content:center;margin:0 .25rem;margin:0 var(--pep-spacing-xs,.25rem);padding:0 .75rem;padding:0 var(--pep-spacing-md,.75rem)}.smart-filters-container .title .clear-filter:after{background-color:transparent}.smart-filters-container .smart-filter-title-container{display:grid;grid-auto-flow:column;grid-template-columns:auto 1fr auto;width:100%}.smart-filters-container .smart-filter-title-container>*{align-self:center}.smart-filters-container .smart-filter-title-container .clear-filter{display:flex;flex-direction:row;align-items:center;justify-content:center;-webkit-margin-end:.5rem;margin-inline-end:.5rem;-webkit-margin-end:var(--pep-spacing-sm,.5rem);margin-inline-end:var(--pep-spacing-sm,.5rem)}.smart-filters-container .smart-filter-title-container .clear-filter:after{background-color:transparent}.smart-filters-container .smart-filter-title-container .mat-icon pep-icon{height:.75rem;width:.75rem}", ".smart-filters-container .clear-filter.weak{background:rgba(26,26,26,.12);background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.12)}.smart-filters-container .clear-filter.weak:hover{background:rgba(26,26,26,.16);background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.16)}.smart-filters-container .clear-filter.weak:focus{box-shadow:0 .125rem .25rem 0 rgba(26,26,26,.08);box-shadow:var(--pep-shadow-xs-offset,0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.08);position:relative;box-shadow:0 0 0 .25rem rgba(23,102,166,.5);box-shadow:0 0 0 var(--pep-spacing-xs,.25rem) hsla(var(--pep-color-text-link-h,207),var(--pep-color-text-link-s,76%),var(--pep-color-text-link-l,37%),.5)}.smart-filters-container .clear-filter.weak:focus:not(.keep-background-on-focus){background:#fff;background:hsl(var(--pep-color-system-primary-invert-h,255),var(--pep-color-system-primary-invert-s,100%),var(--pep-color-system-primary-invert-l,100%))}.smart-filters-container .clear-filter.weak:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit;border:1px solid #1a1a1a;border:1px solid hsl(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%))}.smart-filters-container .clear-filter.weak:active{box-shadow:0 .125rem .25rem 0 rgba(26,26,26,.08);box-shadow:var(--pep-shadow-xs-offset,0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.08);position:relative}.smart-filters-container .clear-filter.weak:active:not(.keep-background-on-focus){background:#fff;background:hsl(var(--pep-color-system-primary-invert-h,255),var(--pep-color-system-primary-invert-s,100%),var(--pep-color-system-primary-invert-l,100%))}.smart-filters-container .clear-filter.weak:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit;border:1px solid #1a1a1a;border:1px solid hsl(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%))}.smart-filters-container .clear-filter.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;color:rgba(26,26,26,.35)!important;color:hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.35)!important;background:rgba(26,26,26,.04)!important;background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.04)!important}.smart-filters-container .clear-filter.weak:disabled:not(.ignore-disabled):after{border:unset}.smart-filters-container .clear-filter.weak:disabled:not(.ignore-disabled) .svg-icon{fill:rgba(26,26,26,.35);fill:hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.35)}.smart-filters-container .clear-filter.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:rgba(26,26,26,.35);stroke:hsla(var(--pep-color-system-primary-h,0),var(--pep-color-system-primary-s,0%),var(--pep-color-system-primary-l,10%),.35)}"]
116
116
  },] }
@@ -127,4 +127,4 @@ PepSmartFiltersComponent.propDecorators = {
127
127
  filtersChange: [{ type: Output }],
128
128
  fieldToggleChange: [{ type: Output }]
129
129
  };
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3NtYXJ0LWZpbHRlcnMvc21hcnQtZmlsdGVycy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixZQUFZLEVBQ1osVUFBVSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUzNELE1BQU0sT0FBTyx3QkFBd0I7SUEyRGpDLFlBQ1ksV0FBdUIsRUFDeEIsYUFBK0I7UUFEOUIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBM0RqQyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRXBCLG1CQUFjLEdBQXFDLElBQUksR0FBRyxFQUd2RCxDQUFDO1FBRUksYUFBUSxHQUEwQixFQUFFLENBQUM7UUFrQnJDLFlBQU8sR0FBZ0MsRUFBRSxDQUFDO1FBUzFDLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQVduQyxZQUFZO1FBQ1osK0RBQStEO1FBRS9ELGtCQUFhLEdBQXdDLElBQUksWUFBWSxFQUVsRSxDQUFDO1FBR0osc0JBQWlCLEdBQXVDLElBQUksWUFBWSxFQUF3QixDQUFDO1FBRWpHLCtCQUEwQixHQUFHLEdBQUcsQ0FBQztJQUs3QixDQUFDO0lBcERMLElBQ0ksT0FBTyxDQUFDLEtBQTRCO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQUksT0FBTztRQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFF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ImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgRWxlbWVudFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIElQZXBTbWFydEZpbHRlckZpZWxkLFxuICAgIFBlcFNtYXJ0RmlsdGVyQmFzZUZpZWxkLFxufSBmcm9tICcuL2NvbW1vbi9tb2RlbC9maWVsZCc7XG5pbXBvcnQgeyBQZXBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgSVBlcFNtYXJ0RmlsdGVyRGF0YSB9IGZyb20gJy4vY29tbW9uL21vZGVsL2ZpbHRlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLXNtYXJ0LWZpbHRlcnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zbWFydC1maWx0ZXJzLmNvbXBvbmVudC5zY3NzJywgJy4vc21hcnQtZmlsdGVycy5jb21wb25lbnQudGhlbWUuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBTbWFydEZpbHRlcnNDb21wb25lbnQge1xuXG4gICAgQElucHV0KCkgdGl0bGUgPSAnJztcblxuICAgIGZpbHRlcnNEYXRhTWFwOiBNYXA8c3RyaW5nLCBJUGVwU21hcnRGaWx0ZXJEYXRhPiA9IG5ldyBNYXA8XG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgSVBlcFNtYXJ0RmlsdGVyRGF0YVxuICAgID4oKTtcblxuICAgIHByaXZhdGUgX2ZpbHRlcnM6IElQZXBTbWFydEZpbHRlckRhdGFbXSA9IFtdO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZpbHRlcnModmFsdWU6IElQZXBTbWFydEZpbHRlckRhdGFbXSkge1xuICAgICAgICB0aGlzLl9maWx0ZXJzID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0dXBGaWx0ZXJzKHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IGZpbHRlcnMoKTogSVBlcFNtYXJ0RmlsdGVyRGF0YVtdIHtcbiAgICAgICAgdGhpcy5fZmlsdGVycyA9IFsuLi50aGlzLmZpbHRlcnNEYXRhTWFwLmtleXMoKV1cbiAgICAgICAgICAgIC8vIC5maWx0ZXIoKGtleSkgPT4gdGhpcy5maWx0ZXJzRGF0YU1hcC5nZXQoa2V5KSAhPT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAoKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyc0RhdGFNYXAuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlcnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZmllbGRzOiBBcnJheTxJUGVwU21hcnRGaWx0ZXJGaWVsZD4gPSBbXTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBmaWVsZHModmFsdWU6IEFycmF5PElQZXBTbWFydEZpbHRlckZpZWxkPikge1xuICAgICAgICB0aGlzLl9maWVsZHMgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGZpZWxkcygpOiBBcnJheTxJUGVwU21hcnRGaWx0ZXJGaWVsZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3VzZUFzV2ViQ29tcG9uZW50ID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBzZXQgdXNlQXNXZWJDb21wb25lbnQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmV4cG9ydEZ1bmN0aW9uc09uSG9zdEVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdXNlQXNXZWJDb21wb25lbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VBc1dlYkNvbXBvbmVudDtcbiAgICB9XG5cbiAgICAvLyBAT3V0cHV0KClcbiAgICAvLyBmaWx0ZXJzQ2xlYXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KClcbiAgICBmaWx0ZXJzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVBlcFNtYXJ0RmlsdGVyRGF0YVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgICAgIElQZXBTbWFydEZpbHRlckRhdGFbXVxuICAgID4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGZpZWxkVG9nZ2xlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVBlcFNtYXJ0RmlsdGVyRmllbGQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwU21hcnRGaWx0ZXJGaWVsZD4oKTtcblxuICAgIGV4cGFuc2lvblBhbmVsSGVhZGVySGVpZ2h0ID0gJyonO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBQZXBMYXlvdXRTZXJ2aWNlXG4gICAgKSB7IH1cblxuICAgIHByaXZhdGUgZXhwb3J0RnVuY3Rpb25zT25Ib3N0RWxlbWVudCgpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBmb3Igd2ViIGNvbXBvbmVudCB1c2FnZSBmb3IgdXNlIHRob3NlIGZ1bmN0aW9ucy5cbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNsZWFyRmlsdGVycyA9IHRoaXMuY2xlYXJGaWx0ZXJzLmJpbmQoXG4gICAgICAgICAgICB0aGlzXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGVhckZpbHRlciA9IHRoaXMuY2xlYXJGaWx0ZXIuYmluZChcbiAgICAgICAgICAgIHRoaXNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LnRvZ2dsZUZpZWxkID0gdGhpcy50b2dnbGVGaWVsZC5iaW5kKFxuICAgICAgICAgICAgdGhpc1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBGaWx0ZXJzKHZhbHVlOiBJUGVwU21hcnRGaWx0ZXJEYXRhW10pIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzRGF0YU1hcC5jbGVhcigpO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFZhbGlkYXRlIGJlZm9yZSBhZGQgdGhlIGZpbHRlciBpbnRvIHRoZSBtYXAuXG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRGaWVsZCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWVsZHMgJiYgdGhpcy5maWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5pZCA9PT0gZmlsdGVyLmZpZWxkSWRcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBQZXBTbWFydEZpbHRlckJhc2VGaWVsZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgaWYgdGhlIG9wZXJhdG9yIGlzIGZyb20gdGhlIHNhbWUgdHlwZVxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIub3BlcmF0b3IuY29tcG9uZW50VHlwZS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RmllbGQuY29tcG9uZW50VHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc09wZXJhdG9yVW5pdFZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIub3BlcmF0b3JVbml0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBpZiB0aGUgb3BlcmF0b3IgdW5pdCBpcyBub3QgZnJvbSB0aGUgc2FtZSB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZmlsdGVyLm9wZXJhdG9yVW5pdC5jb21wb25lbnRUeXBlLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEZpZWxkLmNvbXBvbmVudFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09wZXJhdG9yVW5pdFZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGZpbHRlci5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc09wZXJhdG9yVW5pdFZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzRGF0YU1hcC5zZXQoZmlsdGVyLmZpZWxkSWQsIGZpbHRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmFpc2VGaWx0ZXJzQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcnNDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlcnMpO1xuICAgIH1cblxuICAgIHRvZ2dsZUZpZWxkKGluZGV4OiBudW1iZXIsIGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZpZWxkc1tpbmRleF0uaXNPcGVuID0gaXNPcGVuO1xuICAgICAgICB0aGlzLmZpZWxkVG9nZ2xlQ2hhbmdlLmVtaXQodGhpcy5maWVsZHNbaW5kZXhdKTtcbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcnMoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyc0RhdGFNYXAuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcihmaWVsZElkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzRGF0YU1hcC5kZWxldGUoZmllbGRJZCk7XG4gICAgfVxuXG4gICAgLy8gQ2xlYXIgYWxsIHRoZSBmaWx0ZXJzIGFuZCByYWlzZSBldmVudCB0aGF0IGZpbHRlcnMgaGFzIGNoYW5nZS5cbiAgICBvbkZpbHRlcnNDbGVhcigpIHtcbiAgICAgICAgdGhpcy5jbGVhckZpbHRlcnMoKTtcbiAgICAgICAgdGhpcy5yYWlzZUZpbHRlcnNDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvLyBDbGVhciB0aGUgZmlsdGVyIGFuZCByYWlzZSBldmVudCB0aGF0IGZpbHRlcnMgaGFzIGNoYW5nZS5cbiAgICBvbkZpbHRlckNsZWFyKGZpZWxkOiBJUGVwU21hcnRGaWx0ZXJGaWVsZCkge1xuICAgICAgICB0aGlzLmNsZWFyRmlsdGVyKGZpZWxkLmlkKTtcbiAgICAgICAgdGhpcy5yYWlzZUZpbHRlcnNDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIGZpbHRlciBhbmQgcmFpc2UgZXZlbnQgdGhhdCBmaWx0ZXJzIGhhcyBjaGFuZ2UuXG4gICAgb25GaWx0ZXJDaGFuZ2UoXG4gICAgICAgIGZpZWxkOiBJUGVwU21hcnRGaWx0ZXJGaWVsZCxcbiAgICAgICAgZmlsdGVyRGF0YTogSVBlcFNtYXJ0RmlsdGVyRGF0YVxuICAgICkge1xuICAgICAgICB0aGlzLmNsZWFyRmlsdGVyKGZpZWxkLmlkKTtcbiAgICAgICAgdGhpcy5maWx0ZXJzRGF0YU1hcC5zZXQoZmllbGQuaWQsIGZpbHRlckRhdGEpO1xuICAgICAgICB0aGlzLnJhaXNlRmlsdGVyc0NoYW5nZSgpO1xuICAgIH1cbn1cbiJdfQ==
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3NtYXJ0LWZpbHRlcnMvc21hcnQtZmlsdGVycy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixZQUFZLEVBQ1osVUFBVSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUzNELE1BQU0sT0FBTyx3QkFBd0I7SUEyRGpDLFlBQ1ksV0FBdUIsRUFDeEIsYUFBK0I7UUFEOUIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBM0RqQyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRXBCLG1CQUFjLEdBQXFDLElBQUksR0FBRyxFQUd2RCxDQUFDO1FBRUksYUFBUSxHQUEwQixFQUFFLENBQUM7UUFrQnJDLFlBQU8sR0FBZ0MsRUFBRSxDQUFDO1FBUzFDLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQVduQyxZQUFZO1FBQ1osK0RBQStEO1FBRS9ELGtCQUFhLEdBQXdDLElBQUksWUFBWSxFQUVsRSxDQUFDO1FBR0osc0JBQWlCLEdBQXVDLElBQUksWUFBWSxFQUF3QixDQUFDO1FBRWpHLCtCQUEwQixHQUFHLEdBQUcsQ0FBQztJQUs3QixDQUFDO0lBcERMLElBQ0ksT0FBTyxDQUFDLEtBQTRCO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQUksT0FBTztRQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFF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ImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgRWxlbWVudFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIElQZXBTbWFydEZpbHRlckZpZWxkLFxuICAgIFBlcFNtYXJ0RmlsdGVyQmFzZUZpZWxkLFxufSBmcm9tICcuL2NvbW1vbi9tb2RlbC9maWVsZCc7XG5pbXBvcnQgeyBQZXBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgSVBlcFNtYXJ0RmlsdGVyRGF0YSB9IGZyb20gJy4vY29tbW9uL21vZGVsL2ZpbHRlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLXNtYXJ0LWZpbHRlcnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zbWFydC1maWx0ZXJzLmNvbXBvbmVudC5zY3NzJywgJy4vc21hcnQtZmlsdGVycy5jb21wb25lbnQudGhlbWUuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBTbWFydEZpbHRlcnNDb21wb25lbnQge1xuXG4gICAgQElucHV0KCkgdGl0bGUgPSAnJztcblxuICAgIGZpbHRlcnNEYXRhTWFwOiBNYXA8c3RyaW5nLCBJUGVwU21hcnRGaWx0ZXJEYXRhPiA9IG5ldyBNYXA8XG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgSVBlcFNtYXJ0RmlsdGVyRGF0YVxuICAgID4oKTtcblxuICAgIHByaXZhdGUgX2ZpbHRlcnM6IElQZXBTbWFydEZpbHRlckRhdGFbXSA9IFtdO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZpbHRlcnModmFsdWU6IElQZXBTbWFydEZpbHRlckRhdGFbXSkge1xuICAgICAgICB0aGlzLl9maWx0ZXJzID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0dXBGaWx0ZXJzKHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IGZpbHRlcnMoKTogSVBlcFNtYXJ0RmlsdGVyRGF0YVtdIHtcbiAgICAgICAgdGhpcy5fZmlsdGVycyA9IFsuLi50aGlzLmZpbHRlcnNEYXRhTWFwLmtleXMoKV1cbiAgICAgICAgICAgIC8vIC5maWx0ZXIoKGtleSkgPT4gdGhpcy5maWx0ZXJzRGF0YU1hcC5nZXQoa2V5KSAhPT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAoKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyc0RhdGFNYXAuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlcnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZmllbGRzOiBBcnJheTxJUGVwU21hcnRGaWx0ZXJGaWVsZD4gPSBbXTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBmaWVsZHModmFsdWU6IEFycmF5PElQZXBTbWFydEZpbHRlckZpZWxkPikge1xuICAgICAgICB0aGlzLl9maWVsZHMgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGZpZWxkcygpOiBBcnJheTxJUGVwU21hcnRGaWx0ZXJGaWVsZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3VzZUFzV2ViQ29tcG9uZW50ID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBzZXQgdXNlQXNXZWJDb21wb25lbnQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmV4cG9ydEZ1bmN0aW9uc09uSG9zdEVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdXNlQXNXZWJDb21wb25lbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VBc1dlYkNvbXBvbmVudDtcbiAgICB9XG5cbiAgICAvLyBAT3V0cHV0KClcbiAgICAvLyBmaWx0ZXJzQ2xlYXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KClcbiAgICBmaWx0ZXJzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVBlcFNtYXJ0RmlsdGVyRGF0YVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgICAgIElQZXBTbWFydEZpbHRlckRhdGFbXVxuICAgID4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGZpZWxkVG9nZ2xlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVBlcFNtYXJ0RmlsdGVyRmllbGQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwU21hcnRGaWx0ZXJGaWVsZD4oKTtcblxuICAgIGV4cGFuc2lvblBhbmVsSGVhZGVySGVpZ2h0ID0gJyonO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBQZXBMYXlvdXRTZXJ2aWNlXG4gICAgKSB7IH1cblxuICAgIHByaXZhdGUgZXhwb3J0RnVuY3Rpb25zT25Ib3N0RWxlbWVudCgpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBmb3Igd2ViIGNvbXBvbmVudCB1c2FnZSBmb3IgdXNlIHRob3NlIGZ1bmN0aW9ucy5cbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNsZWFyRmlsdGVycyA9IHRoaXMuY2xlYXJGaWx0ZXJzLmJpbmQoXG4gICAgICAgICAgICB0aGlzXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGVhckZpbHRlciA9IHRoaXMuY2xlYXJGaWx0ZXIuYmluZChcbiAgICAgICAgICAgIHRoaXNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LnRvZ2dsZUZpZWxkID0gdGhpcy50b2dnbGVGaWVsZC5iaW5kKFxuICAgICAgICAgICAgdGhpc1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBGaWx0ZXJzKHZhbHVlOiBJUGVwU21hcnRGaWx0ZXJEYXRhW10pIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzRGF0YU1hcC5jbGVhcigpO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFZhbGlkYXRlIGJlZm9yZSBhZGQgdGhlIGZpbHRlciBpbnRvIHRoZSBtYXAuXG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRGaWVsZCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWVsZHMgJiYgdGhpcy5maWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5pZCA9PT0gZmlsdGVyLmZpZWxkSWRcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBQZXBTbWFydEZpbHRlckJhc2VGaWVsZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgaWYgdGhlIG9wZXJhdG9yIGlzIGZyb20gdGhlIHNhbWUgdHlwZVxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIub3BlcmF0b3IuY29tcG9uZW50VHlwZS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RmllbGQuY29tcG9uZW50VHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc09wZXJhdG9yVW5pdFZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIub3BlcmF0b3JVbml0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBpZiB0aGUgb3BlcmF0b3IgdW5pdCBpcyBub3QgZnJvbSB0aGUgc2FtZSB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZmlsdGVyLm9wZXJhdG9yVW5pdC5jb21wb25lbnRUeXBlLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEZpZWxkLmNvbXBvbmVudFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09wZXJhdG9yVW5pdFZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGZpbHRlci5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc09wZXJhdG9yVW5pdFZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzRGF0YU1hcC5zZXQoZmlsdGVyLmZpZWxkSWQsIGZpbHRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmFpc2VGaWx0ZXJzQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcnNDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlcnMpO1xuICAgIH1cblxuICAgIHRvZ2dsZUZpZWxkKGluZGV4OiBudW1iZXIsIGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZpZWxkc1tpbmRleF0uaXNPcGVuID0gaXNPcGVuO1xuICAgICAgICB0aGlzLmZpZWxkVG9nZ2xlQ2hhbmdlLmVtaXQodGhpcy5maWVsZHNbaW5kZXhdKTtcbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcnMoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyc0RhdGFNYXAuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcihmaWVsZElkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzRGF0YU1hcC5kZWxldGUoZmllbGRJZCk7XG4gICAgfVxuXG4gICAgLy8gQ2xlYXIgYWxsIHRoZSBmaWx0ZXJzIGFuZCByYWlzZSBldmVudCB0aGF0IGZpbHRlcnMgaGFzIGNoYW5nZS5cbiAgICBvbkZpbHRlcnNDbGVhcigpIHtcbiAgICAgICAgdGhpcy5jbGVhckZpbHRlcnMoKTtcbiAgICAgICAgdGhpcy5yYWlzZUZpbHRlcnNDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvLyBDbGVhciB0aGUgZmlsdGVyIGFuZCByYWlzZSBldmVudCB0aGF0IGZpbHRlcnMgaGFzIGNoYW5nZS5cbiAgICBvbkZpbHRlckNsZWFyKGZpZWxkOiBJUGVwU21hcnRGaWx0ZXJGaWVsZCkge1xuICAgICAgICB0aGlzLmNsZWFyRmlsdGVyKGZpZWxkLmlkKTtcbiAgICAgICAgdGhpcy5yYWlzZUZpbHRlcnNDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIGZpbHRlciBhbmQgcmFpc2UgZXZlbnQgdGhhdCBmaWx0ZXJzIGhhcyBjaGFuZ2UuXG4gICAgb25GaWx0ZXJDaGFuZ2UoXG4gICAgICAgIGZpZWxkOiBJUGVwU21hcnRGaWx0ZXJGaWVsZCxcbiAgICAgICAgZmlsdGVyRGF0YTogSVBlcFNtYXJ0RmlsdGVyRGF0YVxuICAgICkge1xuICAgICAgICB0aGlzLmNsZWFyRmlsdGVyKGZpZWxkLmlkKTtcbiAgICAgICAgdGhpcy5maWx0ZXJzRGF0YU1hcC5zZXQoZmllbGQuaWQsIGZpbHRlckRhdGEpO1xuICAgICAgICB0aGlzLnJhaXNlRmlsdGVyc0NoYW5nZSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -79,8 +79,8 @@ export class PepTextFilterComponent extends BaseFilterComponent {
79
79
  PepTextFilterComponent.decorators = [
80
80
  { type: Component, args: [{
81
81
  selector: 'pep-text-filter',
82
- template: "<div [formGroup]=\"form\" [fxLayout]=\"inline ? 'row' : 'column'\" [fxLayoutGap]=\"inline ? '.5rem' : '0rem'\">\n <pep-select [fxFlex]=\"inline ? operatorWidth : null\" [key]=\"'typeOperator'\" [value]=\"operator.id\"\n [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n [options]=\"chooseTypeOptions\" (valueChange)=\"onOperatorChanged($event)\">\n </pep-select>\n <ng-container *ngIf=\"operator !== PepSmartFilterVariableOperators.EqualsToVariable\">\n <pep-textbox [fxFlex]=\"inline ? firstControlWidth : null\" [form]=\"form\" [key]=\"firstControlKey\"\n [label]=\"'SMART_FILTERS.AMOUNT' | translate\" [renderError]=\"false\" [renderTitle]=\"renderTitle\"\n [type]=\"field.type\" [formattedValue]=\"firstControl?.value || ''\" [value]=\"firstControl?.value || ''\"\n (valueChange)=\"onValueChanged()\">\n </pep-textbox>\n </ng-container>\n <ng-container *ngIf=\"operator === PepSmartFilterVariableOperators.EqualsToVariable\">\n <pep-select [fxFlex]=\"inline ? firstControlWidth : null\" [key]=\"firstControlKey\"\n [value]=\"firstControl?.value || ''\" [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\"\n [emptyOption]=\"false\" [options]=\"variableFieldOptions\" (valueChange)=\"onVariableChanged($event)\">\n </pep-select>\n </ng-container>\n</div>",
82
+ template: "<div [formGroup]=\"form\" [fxLayout]=\"inline ? 'row' : 'column'\" [fxLayoutGap]=\"inline ? '.5rem' : '0rem'\">\n <pep-select [fxFlex]=\"inline ? operatorWidth : null\" [key]=\"'typeOperator'\" [value]=\"operator.id\"\n [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n [options]=\"chooseTypeOptions\" (valueChange)=\"onOperatorChanged($event)\">\n </pep-select>\n <ng-container *ngIf=\"operator !== PepSmartFilterVariableOperators.EqualsToVariable\">\n <pep-textbox [fxFlex]=\"inline ? firstControlWidth : null\" [form]=\"form\" [key]=\"firstControlKey\"\n [label]=\"'SMART_FILTERS.VALUE' | translate\" [renderError]=\"false\" [renderTitle]=\"renderTitle\"\n [type]=\"field.type\" [formattedValue]=\"firstControl?.value || ''\" [value]=\"firstControl?.value || ''\"\n (valueChange)=\"onValueChanged()\">\n </pep-textbox>\n </ng-container>\n <ng-container *ngIf=\"operator === PepSmartFilterVariableOperators.EqualsToVariable\">\n <pep-select [fxFlex]=\"inline ? firstControlWidth : null\" [key]=\"firstControlKey\"\n [value]=\"firstControl?.value || ''\" [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\"\n [emptyOption]=\"false\" [options]=\"variableFieldOptions\" (valueChange)=\"onVariableChanged($event)\">\n </pep-select>\n </ng-container>\n</div>",
83
83
  styles: [""]
84
84
  },] }
85
85
  ];
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zbWFydC1maWx0ZXJzL3RleHQtZmlsdGVyL3RleHQtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUVILHVCQUF1QixFQUN2QiwrQkFBK0IsRUFDbEMsTUFBTSwwQkFBMEIsQ0FBQztBQVNsQyxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsbUJBQW1CO0lBTC9EOztRQU1JLG9DQUErQixHQUFHLCtCQUErQixDQUFDO1FBQ2xFLHNCQUFpQixHQUFzQixFQUFFLENBQUM7UUFDMUMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO0lBK0U5QixDQUFDO0lBN0VHLFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVk7YUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO2FBQ2pELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxXQUFXO0lBQ1gsa0JBQWtCO1FBQ2QsT0FBTyx1QkFBdUIsQ0FBQyxNQUFNLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVc7SUFDWCxjQUFjO1FBQ1YsTUFBTSxXQUFXLEdBQUc7WUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztTQUNqQyxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLHVCQUF1QixDQUFDLFdBQVcsRUFBRTtZQUN2RCxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7U0FDcEQ7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVztJQUNYLG9CQUFvQjtRQUNoQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNyRCxPQUFPO2dCQUNILEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRTtnQkFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUN6QixHQUFHLElBQUksQ0FBQyw0QkFBNEIsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQzFEO2FBQ0osQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7SUFDWCwyQkFBMkI7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLHVCQUF1QixDQUFDLFdBQVcsRUFBRTtZQUN2RCxNQUFNLGVBQWUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO2dCQUMxQixlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2FBQ3ZFO1lBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDcEQ7YUFBTTtZQUNILEtBQUssQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWE7UUFDM0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUMvQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQ3RDLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDM0I7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQVU7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7OztZQXRGSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsaTdDQUEyQzs7YUFFOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uQ2hhbmdlcywgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYXNlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL21vZGVsL2Jhc2UtZmlsdGVyLWNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIElQZXBTbWFydEZpbHRlck9wZXJhdG9yLFxuICAgIFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLFxuICAgIFBlcFNtYXJ0RmlsdGVyVmFyaWFibGVPcGVyYXRvcnNcbn0gZnJvbSAnLi4vY29tbW9uL21vZGVsL29wZXJhdG9yJztcbmltcG9ydCB7IElQZXBPcHRpb24gfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQgeyBJUGVwU21hcnRGaWx0ZXJEYXRhVmFsdWUgfSBmcm9tICcuLi9jb21tb24vbW9kZWwvZmlsdGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtdGV4dC1maWx0ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGV4dC1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVwVGV4dEZpbHRlckNvbXBvbmVudCBleHRlbmRzIEJhc2VGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIFBlcFNtYXJ0RmlsdGVyVmFyaWFibGVPcGVyYXRvcnMgPSBQZXBTbWFydEZpbHRlclZhcmlhYmxlT3BlcmF0b3JzO1xuICAgIGNob29zZVR5cGVPcHRpb25zOiBBcnJheTxJUGVwT3B0aW9uPiA9IFtdO1xuICAgIG9wZXJhdG9yV2lkdGggPSAnMzglJztcbiAgICBmaXJzdENvbnRyb2xXaWR0aCA9ICc2MiUnO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZmlyc3RDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmllbGRzU3RhdGVBbmRWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZVxuICAgIGdldERlZmF1bHRPcGVyYXRvcigpOiBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvciB7XG4gICAgICAgIHJldHVybiBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5FcXVhbHM7XG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGVcbiAgICBnZXRGaWx0ZXJWYWx1ZSgpOiBJUGVwU21hcnRGaWx0ZXJEYXRhVmFsdWUge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHtcbiAgICAgICAgICAgIGZpcnN0OiB0aGlzLmZpcnN0Q29udHJvbC52YWx1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuTnVtYmVyUmFuZ2UpIHtcbiAgICAgICAgICAgIGZpbHRlclZhbHVlWydzZWNvbmQnXSA9IHRoaXMuc2Vjb25kQ29udHJvbC52YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZVxuICAgIGxvYWRPcGVyYXRvcnNPcHRpb25zKCkge1xuICAgICAgICB0aGlzLmNob29zZVR5cGVPcHRpb25zID0gdGhpcy5vcGVyYXRvcnMubWFwKChvcGVyYXRvcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBrZXk6IG9wZXJhdG9yLmlkLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLk9QRVJBVE9SU19UUkFOU0xBVElPTl9QUkVGSVh9LiR7b3BlcmF0b3IubmFtZX1gXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIE92ZXJyaWRlXG4gICAgc2V0RmllbGRzU3RhdGVBbmRWYWxpZGF0b3JzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuTnVtYmVyUmFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0VmFsaWRhdG9ycyA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkXTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlY29uZENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBmaXJzdFZhbGlkYXRvcnMucHVzaCh0aGlzLnZhbGlkYXRvci5pc0xlc3NUaGFuKHRoaXMuc2Vjb25kQ29udHJvbCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuc2V0VmFsaWRhdG9ycyhmaXJzdFZhbGlkYXRvcnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIuc2V0RmllbGRzU3RhdGVBbmRWYWxpZGF0b3JzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk9wZXJhdG9yQ2hhbmdlZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gT2JqZWN0LnZhbHVlcyh0aGlzLm9wZXJhdG9ycykuZmluZChcbiAgICAgICAgICAgIChvcGVyYXRvcikgPT4gb3BlcmF0b3IuaWQgPT09IHZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudEZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUGFyZW50Rm9ybSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmVtaXRPbkNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25WYXJpYWJsZUNoYW5nZWQodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLmZpcnN0Q29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLmVtaXRPbkNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmVtaXRPbkNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG59Il19
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zbWFydC1maWx0ZXJzL3RleHQtZmlsdGVyL3RleHQtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUVILHVCQUF1QixFQUN2QiwrQkFBK0IsRUFDbEMsTUFBTSwwQkFBMEIsQ0FBQztBQVNsQyxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsbUJBQW1CO0lBTC9EOztRQU1JLG9DQUErQixHQUFHLCtCQUErQixDQUFDO1FBQ2xFLHNCQUFpQixHQUFzQixFQUFFLENBQUM7UUFDMUMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO0lBK0U5QixDQUFDO0lBN0VHLFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVk7YUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO2FBQ2pELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxXQUFXO0lBQ1gsa0JBQWtCO1FBQ2QsT0FBTyx1QkFBdUIsQ0FBQyxNQUFNLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVc7SUFDWCxjQUFjO1FBQ1YsTUFBTSxXQUFXLEdBQUc7WUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztTQUNqQyxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLHVCQUF1QixDQUFDLFdBQVcsRUFBRTtZQUN2RCxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7U0FDcEQ7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVztJQUNYLG9CQUFvQjtRQUNoQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNyRCxPQUFPO2dCQUNILEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRTtnQkFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUN6QixHQUFHLElBQUksQ0FBQyw0QkFBNEIsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQzFEO2FBQ0osQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7SUFDWCwyQkFBMkI7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLHVCQUF1QixDQUFDLFdBQVcsRUFBRTtZQUN2RCxNQUFNLGVBQWUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO2dCQUMxQixlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2FBQ3ZFO1lBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDcEQ7YUFBTTtZQUNILEtBQUssQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWE7UUFDM0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUMvQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQ3RDLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDM0I7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQVU7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7OztZQXRGSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsZzdDQUEyQzs7YUFFOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uQ2hhbmdlcywgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYXNlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL21vZGVsL2Jhc2UtZmlsdGVyLWNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIElQZXBTbWFydEZpbHRlck9wZXJhdG9yLFxuICAgIFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLFxuICAgIFBlcFNtYXJ0RmlsdGVyVmFyaWFibGVPcGVyYXRvcnNcbn0gZnJvbSAnLi4vY29tbW9uL21vZGVsL29wZXJhdG9yJztcbmltcG9ydCB7IElQZXBPcHRpb24gfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQgeyBJUGVwU21hcnRGaWx0ZXJEYXRhVmFsdWUgfSBmcm9tICcuLi9jb21tb24vbW9kZWwvZmlsdGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtdGV4dC1maWx0ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGV4dC1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVwVGV4dEZpbHRlckNvbXBvbmVudCBleHRlbmRzIEJhc2VGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIFBlcFNtYXJ0RmlsdGVyVmFyaWFibGVPcGVyYXRvcnMgPSBQZXBTbWFydEZpbHRlclZhcmlhYmxlT3BlcmF0b3JzO1xuICAgIGNob29zZVR5cGVPcHRpb25zOiBBcnJheTxJUGVwT3B0aW9uPiA9IFtdO1xuICAgIG9wZXJhdG9yV2lkdGggPSAnMzglJztcbiAgICBmaXJzdENvbnRyb2xXaWR0aCA9ICc2MiUnO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZmlyc3RDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmllbGRzU3RhdGVBbmRWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZVxuICAgIGdldERlZmF1bHRPcGVyYXRvcigpOiBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvciB7XG4gICAgICAgIHJldHVybiBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5FcXVhbHM7XG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGVcbiAgICBnZXRGaWx0ZXJWYWx1ZSgpOiBJUGVwU21hcnRGaWx0ZXJEYXRhVmFsdWUge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHtcbiAgICAgICAgICAgIGZpcnN0OiB0aGlzLmZpcnN0Q29udHJvbC52YWx1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuTnVtYmVyUmFuZ2UpIHtcbiAgICAgICAgICAgIGZpbHRlclZhbHVlWydzZWNvbmQnXSA9IHRoaXMuc2Vjb25kQ29udHJvbC52YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZVxuICAgIGxvYWRPcGVyYXRvcnNPcHRpb25zKCkge1xuICAgICAgICB0aGlzLmNob29zZVR5cGVPcHRpb25zID0gdGhpcy5vcGVyYXRvcnMubWFwKChvcGVyYXRvcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBrZXk6IG9wZXJhdG9yLmlkLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLk9QRVJBVE9SU19UUkFOU0xBVElPTl9QUkVGSVh9LiR7b3BlcmF0b3IubmFtZX1gXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIE92ZXJyaWRlXG4gICAgc2V0RmllbGRzU3RhdGVBbmRWYWxpZGF0b3JzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuTnVtYmVyUmFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0VmFsaWRhdG9ycyA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkXTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlY29uZENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBmaXJzdFZhbGlkYXRvcnMucHVzaCh0aGlzLnZhbGlkYXRvci5pc0xlc3NUaGFuKHRoaXMuc2Vjb25kQ29udHJvbCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5maXJzdENvbnRyb2wuc2V0VmFsaWRhdG9ycyhmaXJzdFZhbGlkYXRvcnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIuc2V0RmllbGRzU3RhdGVBbmRWYWxpZGF0b3JzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk9wZXJhdG9yQ2hhbmdlZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gT2JqZWN0LnZhbHVlcyh0aGlzLm9wZXJhdG9ycykuZmluZChcbiAgICAgICAgICAgIChvcGVyYXRvcikgPT4gb3BlcmF0b3IuaWQgPT09IHZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudEZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUGFyZW50Rm9ybSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmVtaXRPbkNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25WYXJpYWJsZUNoYW5nZWQodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLmZpcnN0Q29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLmVtaXRPbkNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmVtaXRPbkNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG59Il19
@@ -17,7 +17,7 @@ const Equals = {
17
17
  const EqualsVariable = {
18
18
  legacy: 'IsEqualVariable',
19
19
  smartFilter: PepSmartFilterVariableOperators.EqualsToVariable,
20
- type: ['boolean', 'int', 'text']
20
+ type: ['boolean', 'int', 'text', 'multi-select']
21
21
  };
22
22
  const NotEqual = {
23
23
  legacy: 'IsNotEqual',
@@ -27,7 +27,7 @@ const NotEqual = {
27
27
  const NotEqualsVariable = {
28
28
  legacy: 'IsNotEqualVariable',
29
29
  smartFilter: PepSmartFilterVariableOperators.NotEqualsToVariable,
30
- type: ['boolean', 'int', 'text']
30
+ type: ['boolean', 'multi-select']
31
31
  };
32
32
  const LessThan = {
33
33
  legacy: '<',
@@ -82,6 +82,16 @@ const Contains = {
82
82
  smartFilter: PepSmartFilterOperators.Contains,
83
83
  type: null
84
84
  };
85
+ const BeginsWith = {
86
+ legacy: 'BeginsWith',
87
+ smartFilter: PepSmartFilterOperators.BeginsWith,
88
+ type: null
89
+ };
90
+ const EndsWith = {
91
+ legacy: 'EndsWith',
92
+ smartFilter: PepSmartFilterOperators.EndsWith,
93
+ type: null
94
+ };
85
95
  /*
86
96
  const BeginsWith: IPepQueryBuilderOperator = {
87
97
  legacy: {
@@ -136,11 +146,12 @@ const InTheLastCalendar = {
136
146
  smartFilter: PepSmartFilterAdditionalOperators.InTheLastCalendar,
137
147
  type: null
138
148
  };
139
- const InTheLastVariable = {
149
+ /*
150
+ const InTheLastVariable: IPepQueryBuilderOperator = {
140
151
  legacy: 'InTheLastVariable',
141
152
  smartFilter: PepSmartFilterVariableOperators.InTheLastVariable,
142
153
  type: null
143
- };
154
+ } */
144
155
  const NotInTheLast = {
145
156
  legacy: 'NotInTheLast',
146
157
  smartFilter: PepSmartFilterOperators.NotInTheLast,
@@ -219,12 +230,12 @@ const PepQueryBuilderOperators = [
219
230
  // GreaterThanOrEquals,
220
231
  NumberRange,
221
232
  Contains,
222
- // BeginsWith,
223
- // EndsWith,
233
+ BeginsWith,
234
+ EndsWith,
224
235
  // After,
225
236
  // Before,
226
237
  InTheLast,
227
- InTheLastVariable,
238
+ // InTheLastVariable,
228
239
  InTheLastCalendar,
229
240
  NotInTheLast,
230
241
  NotInTheLastCalendar,
@@ -280,9 +291,9 @@ class PepQueryBuilderTypeMap {
280
291
  this.map.set('MultipleStringValues', 'multi-select');
281
292
  }
282
293
  /**
283
- * Converts legacy field type to smart builder type
294
+ * Converts legacy field type to smart filter type
284
295
  * @param type legacy type
285
- * @returns smart builder field type
296
+ * @returns smart filter field type
286
297
  */
287
298
  getSmartFilterType(key) {
288
299
  const item = this.map.get(key);
@@ -734,7 +745,7 @@ class PepQueryBuilderItemComponent {
734
745
  PepQueryBuilderItemComponent.decorators = [
735
746
  { type: Component, args: [{
736
747
  selector: 'pep-query-builder-item',
737
- template: "<div fxLayout=\"column\" fxLayoutGap=\".5rem\">\n <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <pep-select fxFlex=\"25%\" [value]=\"_selectedField?.id\" xAlignment=\"left\" [options]=\"_options\"\n [renderTitle]=\"false\" (valueChange)=\"onFieldChanged($event)\"></pep-select>\n <ng-container *ngIf=\"_selectedField?.componentType\">\n <ng-container [ngSwitch]=\"_selectedField.componentType\">\n <ng-container *ngSwitchCase=\"'text'\">\n <pep-text-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [variableField]=\"variableFields?.text\"\n [field]=\"_selectedField\" [filter]=\"_filter\" [parentForm]=\"f.smart\" [emitOnChange]=\"true\"\n [inline]=\"true\" [renderTitle]=\"false\" (filterChange)=\"onFilterChanged()\">\n </pep-text-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'boolean'\">\n <pep-boolean-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.boolean\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\"\n [options]=\"typeConvertorService.booleans\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-boolean-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <pep-date-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [showAdditionalOperators]=\"true\"\n [variableField]=\"variableFields?.date\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-date-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'multi-select'\">\n <pep-multi-select-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [field]=\"_selectedField\"\n [filter]=\"_filter\" [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\"\n [renderTitle]=\"false\" (filterChange)=\"onFilterChanged()\">\n </pep-multi-select-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <pep-number-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.number\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-number-filter>\n </ng-container>\n </ng-container>\n </ng-container>\n <pep-button styleType=\"weak\" styleStateType=\"system_bin\" sizeType=\"md\" classNames=\"\" [disabled]=\"false\"\n iconName=\"system_bin\" iconPosition=\"end\" [visible]=\"true\" (buttonClick)=\"onDeleteItemClicked()\">\n </pep-button>\n </div>\n</div>",
748
+ template: "<div fxLayout=\"column\" fxLayoutGap=\".5rem\">\n <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <pep-select fxFlex=\"25%\" [value]=\"_selectedField?.id\" xAlignment=\"left\" [options]=\"_options\"\n [renderTitle]=\"false\" (valueChange)=\"onFieldChanged($event)\"></pep-select>\n <ng-container *ngIf=\"_selectedField?.componentType\">\n <ng-container [ngSwitch]=\"_selectedField.componentType\">\n <ng-container *ngSwitchCase=\"'text'\">\n <pep-text-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [variableField]=\"variableFields?.text\"\n [field]=\"_selectedField\" [filter]=\"_filter\" [parentForm]=\"f.smart\" [emitOnChange]=\"true\"\n [inline]=\"true\" [renderTitle]=\"false\" (filterChange)=\"onFilterChanged()\">\n </pep-text-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'boolean'\">\n <pep-boolean-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.boolean\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\"\n [options]=\"typeConvertorService.booleans\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-boolean-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <pep-date-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [showAdditionalOperators]=\"true\"\n [variableField]=\"variableFields?.date\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-date-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'multi-select'\">\n <pep-multi-select-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.['multi-select']\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-multi-select-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <pep-number-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.number\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-number-filter>\n </ng-container>\n </ng-container>\n </ng-container>\n <pep-button styleType=\"weak\" styleStateType=\"system_bin\" sizeType=\"md\" classNames=\"\" [disabled]=\"false\"\n iconName=\"system_bin\" iconPosition=\"end\" [visible]=\"true\" (buttonClick)=\"onDeleteItemClicked()\">\n </pep-button>\n </div>\n</div>",
738
749
  styles: ["::ng-deep .pep-field-no-spacing{min-height:0!important;margin-bottom:0!important}"]
739
750
  },] }
740
751
  ];