@pepperi-addons/ngx-lib 0.2.55 → 0.2.58-beta.1

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 (177) hide show
  1. package/attachment/attachment.component.d.ts +1 -0
  2. package/attachment/pepperi-addons-ngx-lib-attachment.metadata.json +1 -1
  3. package/bundles/pepperi-addons-ngx-lib-attachment.umd.js +6 -1
  4. package/bundles/pepperi-addons-ngx-lib-attachment.umd.js.map +1 -1
  5. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js +3 -0
  6. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js.map +1 -1
  7. package/bundles/pepperi-addons-ngx-lib-color.umd.js +6 -1
  8. package/bundles/pepperi-addons-ngx-lib-color.umd.js.map +1 -1
  9. package/bundles/pepperi-addons-ngx-lib-date.umd.js +4 -1
  10. package/bundles/pepperi-addons-ngx-lib-date.umd.js.map +1 -1
  11. package/bundles/pepperi-addons-ngx-lib-form.umd.js +20 -15
  12. package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
  13. package/bundles/pepperi-addons-ngx-lib-image.umd.js +6 -1
  14. package/bundles/pepperi-addons-ngx-lib-image.umd.js.map +1 -1
  15. package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js +6 -1
  16. package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js.map +1 -1
  17. package/bundles/pepperi-addons-ngx-lib-list.umd.js +4 -2
  18. package/bundles/pepperi-addons-ngx-lib-list.umd.js.map +1 -1
  19. package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js +6 -1
  20. package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js.map +1 -1
  21. package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js +6 -1
  22. package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js.map +1 -1
  23. package/bundles/pepperi-addons-ngx-lib-select.umd.js +6 -1
  24. package/bundles/pepperi-addons-ngx-lib-select.umd.js.map +1 -1
  25. package/bundles/pepperi-addons-ngx-lib-separator.umd.js +8 -0
  26. package/bundles/pepperi-addons-ngx-lib-separator.umd.js.map +1 -1
  27. package/bundles/pepperi-addons-ngx-lib-signature.umd.js +6 -1
  28. package/bundles/pepperi-addons-ngx-lib-signature.umd.js.map +1 -1
  29. package/bundles/pepperi-addons-ngx-lib-slider.umd.js.map +1 -1
  30. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +1432 -173
  31. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js.map +1 -1
  32. package/bundles/pepperi-addons-ngx-lib-textarea.umd.js +6 -1
  33. package/bundles/pepperi-addons-ngx-lib-textarea.umd.js.map +1 -1
  34. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +4 -2
  35. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js.map +1 -1
  36. package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js +1 -1
  37. package/bundles/pepperi-addons-ngx-lib.umd.js +4 -2
  38. package/bundles/pepperi-addons-ngx-lib.umd.js.map +1 -1
  39. package/color/color.component.d.ts +1 -0
  40. package/color/pepperi-addons-ngx-lib-color.metadata.json +1 -1
  41. package/core/customization/customization.service.d.ts +1 -0
  42. package/esm2015/attachment/attachment.component.js +7 -2
  43. package/esm2015/checkbox/checkbox.component.js +4 -1
  44. package/esm2015/color/color.component.js +7 -2
  45. package/esm2015/core/common/services/translate.service.js +1 -1
  46. package/esm2015/core/customization/customization.service.js +4 -2
  47. package/esm2015/date/date.component.js +4 -1
  48. package/esm2015/form/form.component.js +2 -1
  49. package/esm2015/form/internal-button.component.js +20 -17
  50. package/esm2015/form/internal-carusel.component.js +2 -1
  51. package/esm2015/image/image.component.js +7 -2
  52. package/esm2015/image/image.service.js +1 -1
  53. package/esm2015/images-filmstrip/images-filmstrip.component.js +7 -2
  54. package/esm2015/list/list-total.component.js +5 -3
  55. package/esm2015/quantity-selector/quantity-selector.component.js +7 -2
  56. package/esm2015/rich-html-textarea/rich-html-textarea.component.js +7 -2
  57. package/esm2015/select/select.component.js +7 -2
  58. package/esm2015/separator/separator.component.js +9 -1
  59. package/esm2015/signature/signature.component.js +7 -2
  60. package/esm2015/slider/slider.component.js +1 -1
  61. package/esm2015/smart-filters/boolean-filter/boolean-filter.component.js +12 -2
  62. package/esm2015/smart-filters/common/model/base-filter-component.js +40 -10
  63. package/esm2015/smart-filters/common/model/creator.js +8 -2
  64. package/esm2015/smart-filters/common/model/field.js +12 -1
  65. package/esm2015/smart-filters/common/model/operator.js +8 -8
  66. package/esm2015/smart-filters/common/model/type.js +1 -1
  67. package/esm2015/smart-filters/date-filter/date-filter.component.js +45 -2
  68. package/esm2015/smart-filters/filter-builder/common/model/filter.js +2 -0
  69. package/esm2015/smart-filters/filter-builder/common/model/legacy.js +2 -0
  70. package/esm2015/smart-filters/filter-builder/common/model/operator-unit.js +42 -0
  71. package/esm2015/smart-filters/filter-builder/common/model/operator.js +207 -0
  72. package/esm2015/smart-filters/filter-builder/common/model/type-map.js +27 -0
  73. package/esm2015/smart-filters/filter-builder/common/model/type.js +6 -0
  74. package/esm2015/smart-filters/filter-builder/common/pipes/filter-item-counter.pipe.js +18 -0
  75. package/esm2015/smart-filters/filter-builder/common/services/output-filter.service.js +132 -0
  76. package/esm2015/smart-filters/filter-builder/common/services/type-convertor.service.js +44 -0
  77. package/esm2015/smart-filters/filter-builder/filter-builder-item/filter-builder-item.component.js +106 -0
  78. package/esm2015/smart-filters/filter-builder/filter-builder-section/filter-builder-section.component.js +50 -0
  79. package/esm2015/smart-filters/filter-builder/filter-builder.component.js +65 -0
  80. package/esm2015/smart-filters/filter-builder/filter-builder.service.js +261 -0
  81. package/esm2015/smart-filters/index.js +5 -0
  82. package/esm2015/smart-filters/multi-select-filter/multi-select-filter.component.js +53 -14
  83. package/esm2015/smart-filters/number-filter/number-filter.component.js +25 -2
  84. package/esm2015/smart-filters/pepperi-addons-ngx-lib-smart-filters.js +8 -1
  85. package/esm2015/smart-filters/public-api.js +2 -1
  86. package/esm2015/smart-filters/smart-filters.module.js +14 -2
  87. package/esm2015/smart-filters/text-filter/text-filter.component.js +79 -0
  88. package/esm2015/textarea/textarea.component.js +7 -2
  89. package/esm2015/textbox/textbox.component.js +5 -3
  90. package/esm2015/top-bar/top-bar.component.js +1 -1
  91. package/fesm2015/pepperi-addons-ngx-lib-attachment.js +6 -1
  92. package/fesm2015/pepperi-addons-ngx-lib-attachment.js.map +1 -1
  93. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js +3 -0
  94. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js.map +1 -1
  95. package/fesm2015/pepperi-addons-ngx-lib-color.js +6 -1
  96. package/fesm2015/pepperi-addons-ngx-lib-color.js.map +1 -1
  97. package/fesm2015/pepperi-addons-ngx-lib-date.js +3 -0
  98. package/fesm2015/pepperi-addons-ngx-lib-date.js.map +1 -1
  99. package/fesm2015/pepperi-addons-ngx-lib-form.js +20 -15
  100. package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
  101. package/fesm2015/pepperi-addons-ngx-lib-image.js +6 -1
  102. package/fesm2015/pepperi-addons-ngx-lib-image.js.map +1 -1
  103. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js +6 -1
  104. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js.map +1 -1
  105. package/fesm2015/pepperi-addons-ngx-lib-list.js +4 -2
  106. package/fesm2015/pepperi-addons-ngx-lib-list.js.map +1 -1
  107. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js +6 -1
  108. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js.map +1 -1
  109. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js +6 -1
  110. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js.map +1 -1
  111. package/fesm2015/pepperi-addons-ngx-lib-select.js +6 -1
  112. package/fesm2015/pepperi-addons-ngx-lib-select.js.map +1 -1
  113. package/fesm2015/pepperi-addons-ngx-lib-separator.js +8 -0
  114. package/fesm2015/pepperi-addons-ngx-lib-separator.js.map +1 -1
  115. package/fesm2015/pepperi-addons-ngx-lib-signature.js +6 -1
  116. package/fesm2015/pepperi-addons-ngx-lib-signature.js.map +1 -1
  117. package/fesm2015/pepperi-addons-ngx-lib-slider.js.map +1 -1
  118. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +1293 -128
  119. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js.map +1 -1
  120. package/fesm2015/pepperi-addons-ngx-lib-textarea.js +6 -1
  121. package/fesm2015/pepperi-addons-ngx-lib-textarea.js.map +1 -1
  122. package/fesm2015/pepperi-addons-ngx-lib-textbox.js +4 -2
  123. package/fesm2015/pepperi-addons-ngx-lib-textbox.js.map +1 -1
  124. package/fesm2015/pepperi-addons-ngx-lib-top-bar.js +1 -1
  125. package/fesm2015/pepperi-addons-ngx-lib.js +3 -1
  126. package/fesm2015/pepperi-addons-ngx-lib.js.map +1 -1
  127. package/form/internal-button.component.d.ts +0 -1
  128. package/image/image.component.d.ts +1 -0
  129. package/image/pepperi-addons-ngx-lib-image.metadata.json +1 -1
  130. package/images-filmstrip/images-filmstrip.component.d.ts +1 -0
  131. package/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.metadata.json +1 -1
  132. package/list/list-total.component.d.ts +2 -0
  133. package/list/pepperi-addons-ngx-lib-list.metadata.json +1 -1
  134. package/package.json +4 -4
  135. package/pepperi-addons-ngx-lib.metadata.json +1 -1
  136. package/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.metadata.json +1 -1
  137. package/quantity-selector/quantity-selector.component.d.ts +1 -0
  138. package/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.metadata.json +1 -1
  139. package/rich-html-textarea/rich-html-textarea.component.d.ts +1 -0
  140. package/select/pepperi-addons-ngx-lib-select.metadata.json +1 -1
  141. package/select/select.component.d.ts +1 -0
  142. package/separator/pepperi-addons-ngx-lib-separator.metadata.json +1 -1
  143. package/signature/pepperi-addons-ngx-lib-signature.metadata.json +1 -1
  144. package/signature/signature.component.d.ts +1 -0
  145. package/smart-filters/boolean-filter/boolean-filter.component.d.ts +5 -1
  146. package/smart-filters/common/model/base-filter-component.d.ts +10 -1
  147. package/smart-filters/common/model/field.d.ts +4 -0
  148. package/smart-filters/common/model/operator.d.ts +1 -0
  149. package/smart-filters/common/model/type.d.ts +2 -2
  150. package/smart-filters/date-filter/date-filter.component.d.ts +8 -1
  151. package/smart-filters/filter-builder/common/model/filter.d.ts +6 -0
  152. package/smart-filters/filter-builder/common/model/legacy.d.ts +23 -0
  153. package/smart-filters/filter-builder/common/model/operator-unit.d.ts +13 -0
  154. package/smart-filters/filter-builder/common/model/operator.d.ts +21 -0
  155. package/smart-filters/filter-builder/common/model/type-map.d.ts +12 -0
  156. package/smart-filters/filter-builder/common/model/type.d.ts +4 -0
  157. package/smart-filters/filter-builder/common/pipes/filter-item-counter.pipe.d.ts +5 -0
  158. package/smart-filters/filter-builder/common/services/output-filter.service.d.ts +52 -0
  159. package/smart-filters/filter-builder/common/services/type-convertor.service.d.ts +10 -0
  160. package/smart-filters/filter-builder/filter-builder-item/filter-builder-item.component.d.ts +32 -0
  161. package/smart-filters/filter-builder/filter-builder-section/filter-builder-section.component.d.ts +22 -0
  162. package/smart-filters/filter-builder/filter-builder-section/filter-builder-section.component.theme.scss +6 -0
  163. package/smart-filters/filter-builder/filter-builder.component.d.ts +22 -0
  164. package/smart-filters/filter-builder/filter-builder.service.d.ts +90 -0
  165. package/smart-filters/index.d.ts +1 -0
  166. package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +6 -0
  167. package/smart-filters/number-filter/number-filter.component.d.ts +5 -0
  168. package/smart-filters/pepperi-addons-ngx-lib-smart-filters.d.ts +7 -0
  169. package/smart-filters/pepperi-addons-ngx-lib-smart-filters.metadata.json +1 -1
  170. package/smart-filters/public-api.d.ts +1 -0
  171. package/smart-filters/text-filter/text-filter.component.d.ts +17 -0
  172. package/src/assets/i18n/en.ngx-lib.json +2 -1
  173. package/src/core/style/components/general.scss +4 -2
  174. package/textarea/pepperi-addons-ngx-lib-textarea.metadata.json +1 -1
  175. package/textarea/textarea.component.d.ts +1 -0
  176. package/theming.scss +4 -0
  177. package/top-bar/pepperi-addons-ngx-lib-top-bar.metadata.json +1 -1
@@ -0,0 +1,106 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormBuilder } from '@angular/forms';
3
+ export class FilterBuilderItemComponent {
4
+ constructor(_fb) {
5
+ this._fb = _fb;
6
+ this._fields = [];
7
+ this._options = [];
8
+ this._selectedField = null;
9
+ this.filterChange = new EventEmitter();
10
+ this.remove = new EventEmitter();
11
+ this.test = {};
12
+ this.fieldWidth = 26;
13
+ this.filterWidth = 67.5;
14
+ this.binWidth = 6.5;
15
+ this.setupForm();
16
+ }
17
+ set fields(list) {
18
+ if ((list === null || list === void 0 ? void 0 : list.length) > 0) {
19
+ this._fields = list;
20
+ this._options = list.map(field => {
21
+ return {
22
+ key: field.id,
23
+ value: field.name
24
+ };
25
+ });
26
+ }
27
+ }
28
+ ;
29
+ set selected(value) {
30
+ if (value) {
31
+ this._selectedField = value;
32
+ }
33
+ }
34
+ set filter(value) {
35
+ if (value) {
36
+ this._filter = value;
37
+ }
38
+ }
39
+ ;
40
+ set parentForm(value) {
41
+ if (value) {
42
+ this._parentForm = value;
43
+ this.addToParentForm();
44
+ }
45
+ }
46
+ ;
47
+ ngOnInit() {
48
+ }
49
+ setupForm() {
50
+ this._form = this._fb.group({
51
+ fieldId: this._fb.control(null),
52
+ fieldType: this._fb.control(null),
53
+ operator: this._fb.control(null),
54
+ operatorUnit: this._fb.control(null),
55
+ values: this._fb.group({
56
+ first: this._fb.control(null),
57
+ second: this._fb.control(null)
58
+ }),
59
+ });
60
+ }
61
+ addToParentForm() {
62
+ this._parentForm.setControl(this.formKey, this._form);
63
+ }
64
+ onFieldChanged(key) {
65
+ let item = this._fields.find(field => field.id === key);
66
+ this.setupForm();
67
+ this.addToParentForm();
68
+ /**
69
+ * hack due to angular's change detection bug -
70
+ * ERROR Error: There is no FormControl instance attached to form control element with name: [formControlName]
71
+ */
72
+ this._selectedField = null;
73
+ setTimeout(() => {
74
+ this._selectedField = item ? item : null;
75
+ }, 0);
76
+ this._filter = null;
77
+ }
78
+ onFilterChanged() {
79
+ if (this._form.valid) {
80
+ this.filterChange.emit();
81
+ }
82
+ }
83
+ onDeleteItemClicked() {
84
+ this.remove.emit();
85
+ }
86
+ }
87
+ FilterBuilderItemComponent.decorators = [
88
+ { type: Component, args: [{
89
+ selector: 'pep-filter-builder-item',
90
+ template: "<div class=\"filter-item-container\" 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\" [field]=\"_selectedField\"\n [filter]=\"_filter\" [parentForm]=\"_form\" [emitOnChange]=\"true\" [inline]=\"true\"\n [renderTitle]=\"false\" (filterChange)=\"onFilterChanged()\">\n </pep-text-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'boolean'\">\n <pep-boolean-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [field]=\"_selectedField\"\n [filter]=\"_filter\" [parentForm]=\"_form\" [emitOnChange]=\"true\" [inline]=\"true\"\n [renderTitle]=\"false\" (filterChange)=\"onFilterChanged()\">\n </pep-boolean-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <pep-date-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [field]=\"_selectedField\"\n [filter]=\"_filter\" [parentForm]=\"_form\" [emitOnChange]=\"true\" [inline]=\"true\"\n [renderTitle]=\"false\" (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]=\"_form\" [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\" [field]=\"_selectedField\"\n [filter]=\"_filter\" [parentForm]=\"_form\" [emitOnChange]=\"true\" [inline]=\"true\"\n [renderTitle]=\"false\" (filterChange)=\"onFilterChanged()\">\n </pep-number-filter>\n </ng-container>\n </ng-container>\n </ng-container>\n <!-- <ng-container *ngIf=\"(_parentForm | filterItemCounter) > 1\"> -->\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 <!-- </ng-container> -->\n </div>\n</div>",
91
+ styles: [""]
92
+ },] }
93
+ ];
94
+ FilterBuilderItemComponent.ctorParameters = () => [
95
+ { type: FormBuilder }
96
+ ];
97
+ FilterBuilderItemComponent.propDecorators = {
98
+ formKey: [{ type: Input }],
99
+ fields: [{ type: Input }],
100
+ selected: [{ type: Input }],
101
+ filter: [{ type: Input }],
102
+ parentForm: [{ type: Input }],
103
+ filterChange: [{ type: Output }],
104
+ remove: [{ type: Output }]
105
+ };
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJ1aWxkZXItaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3NtYXJ0LWZpbHRlcnMvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXItaXRlbS9maWx0ZXItYnVpbGRlci1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQVEsV0FBVyxFQUF5QixNQUFNLGdCQUFnQixDQUFDO0FBWTFFLE1BQU0sT0FBTywwQkFBMEI7SUFvRG5DLFlBQW9CLEdBQWdCO1FBQWhCLFFBQUcsR0FBSCxHQUFHLENBQWE7UUFsRHBDLFlBQU8sR0FBZSxFQUFFLENBQUM7UUFDekIsYUFBUSxHQUFpQixFQUFFLENBQUM7UUFhNUIsbUJBQWMsR0FBNEIsSUFBSSxDQUFDO1FBd0IvQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHNUIsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQUdmLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUdYLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBbERELElBQ0ksTUFBTSxDQUFDLElBQWlDO1FBQ3hDLElBQUksQ0FBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsTUFBTSxJQUFHLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7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QVFMLE1BQU07cUJBRU4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybSwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpbHRlckJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZmlsdGVyLWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQZXBTbWFydEZpbHRlclR5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWwvdHlwZSc7XG5pbXBvcnQgeyBQZXBTbWFydEZpbHRlckJhc2VGaWVsZCwgSVBlcFNtYXJ0RmlsdGVyRmllbGQgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWwvZmllbGQnO1xuaW1wb3J0IHsgSVBlcFNtYXJ0RmlsdGVyRGF0YSB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbC9maWx0ZXInO1xuaW1wb3J0IHsgSVBlcE9wdGlvbiB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtZmlsdGVyLWJ1aWxkZXItaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1idWlsZGVyLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbHRlci1idWlsZGVyLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyQnVpbGRlckl0ZW1Db21wb25lbnQge1xuICAgIEBJbnB1dCgpIGZvcm1LZXk6IHN0cmluZztcbiAgICBfZmllbGRzOiBBcnJheTxhbnk+ID0gW107XG4gICAgX29wdGlvbnM6IElQZXBPcHRpb25bXSA9IFtdO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZpZWxkcyhsaXN0OiBBcnJheTxJUGVwU21hcnRGaWx0ZXJGaWVsZD4pIHtcbiAgICAgICAgaWYgKGxpc3Q/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkcyA9IGxpc3Q7XG4gICAgICAgICAgICB0aGlzLl9vcHRpb25zID0gbGlzdC5tYXAoZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogZmllbGQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmaWVsZC5uYW1lXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH07XG4gICAgX3NlbGVjdGVkRmllbGQ6IFBlcFNtYXJ0RmlsdGVyQmFzZUZpZWxkID0gbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWxlY3RlZCh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRGaWVsZCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9maWx0ZXI6IElQZXBTbWFydEZpbHRlckRhdGE7XG4gICAgQElucHV0KClcbiAgICBzZXQgZmlsdGVyKHZhbHVlOiBJUGVwU21hcnRGaWx0ZXJEYXRhKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fZmlsdGVyID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIF9wYXJlbnRGb3JtOiBGb3JtR3JvdXA7XG4gICAgQElucHV0KClcbiAgICBzZXQgcGFyZW50Rm9ybSh2YWx1ZTogRm9ybUdyb3VwKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50Rm9ybSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5hZGRUb1BhcmVudEZvcm0oKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBAT3V0cHV0KClcbiAgICBmaWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cbiAgICB0ZXN0OiBhbnkgPSB7fTtcblxuICAgIF9mb3JtOiBGb3JtR3JvdXA7XG4gICAgZmllbGRXaWR0aCA9IDI2O1xuICAgIGZpbHRlcldpZHRoID0gNjcuNTtcbiAgICBiaW5XaWR0aCA9IDYuNTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcikge1xuICAgICAgICB0aGlzLnNldHVwRm9ybSgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuXG4gICAgfVxuXG4gICAgc2V0dXBGb3JtKCkge1xuICAgICAgICB0aGlzLl9mb3JtID0gdGhpcy5fZmIuZ3JvdXAoe1xuICAgICAgICAgICAgZmllbGRJZDogdGhpcy5fZmIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogdGhpcy5fZmIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIG9wZXJhdG9yOiB0aGlzLl9mYi5jb250cm9sKG51bGwpLFxuICAgICAgICAgICAgb3BlcmF0b3JVbml0OiB0aGlzLl9mYi5jb250cm9sKG51bGwpLFxuICAgICAgICAgICAgdmFsdWVzOiB0aGlzLl9mYi5ncm91cCh7XG4gICAgICAgICAgICAgICAgZmlyc3Q6IHRoaXMuX2ZiLmNvbnRyb2wobnVsbCksXG4gICAgICAgICAgICAgICAgc2Vjb25kOiB0aGlzLl9mYi5jb250cm9sKG51bGwpXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkVG9QYXJlbnRGb3JtKCkge1xuICAgICAgICB0aGlzLl9wYXJlbnRGb3JtLnNldENvbnRyb2wodGhpcy5mb3JtS2V5LCB0aGlzLl9mb3JtKTtcbiAgICB9XG5cbiAgICBvbkZpZWxkQ2hhbmdlZChrZXkpIHtcbiAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLl9maWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5pZCA9PT0ga2V5KTtcblxuICAgICAgICB0aGlzLnNldHVwRm9ybSgpO1xuICAgICAgICB0aGlzLmFkZFRvUGFyZW50Rm9ybSgpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBoYWNrIGR1ZSB0byBhbmd1bGFyJ3MgY2hhbmdlIGRldGVjdGlvbiBidWcgLVxuICAgICAgICAgKiBFUlJPUiBFcnJvcjogVGhlcmUgaXMgbm8gRm9ybUNvbnRyb2wgaW5zdGFuY2UgYXR0YWNoZWQgdG8gZm9ybSBjb250cm9sIGVsZW1lbnQgd2l0aCBuYW1lOiBbZm9ybUNvbnRyb2xOYW1lXVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRGaWVsZCA9IG51bGw7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRGaWVsZCA9IGl0ZW0gPyBpdGVtIDogbnVsbDtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgdGhpcy5fZmlsdGVyID0gbnVsbDtcbiAgICB9XG5cbiAgICBvbkZpbHRlckNoYW5nZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9mb3JtLnZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRlbGV0ZUl0ZW1DbGlja2VkKCkge1xuICAgICAgICB0aGlzLnJlbW92ZS5lbWl0KCk7XG4gICAgfVxuXG5cblxufVxuIl19
@@ -0,0 +1,50 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';
2
+ import { FilterBuilderService } from '../filter-builder.service';
3
+ import { PepOperatorTypes } from '../common/model/type';
4
+ import { PepTypeConvertorService } from '../common/services/type-convertor.service';
5
+ export class FilterBuilderSectionComponent {
6
+ constructor(filterBuilderService, typeConvertorService) {
7
+ this.filterBuilderService = filterBuilderService;
8
+ this.typeConvertorService = typeConvertorService;
9
+ this.remove = new EventEmitter();
10
+ this.operatorChange = new EventEmitter();
11
+ }
12
+ ngOnInit() {
13
+ }
14
+ get f() {
15
+ return this.form.controls;
16
+ }
17
+ onOperatorChanged(value) {
18
+ this.f.operator.setValue(value);
19
+ this.operatorChange.emit();
20
+ }
21
+ onAddRuleClicked() {
22
+ this.filterBuilderService.createItem(null, this.sectionContainer, this.form);
23
+ }
24
+ onAddRuleSetClicked() {
25
+ const result = this.filterBuilderService.createSection(PepOperatorTypes.And, this.sectionContainer, this.form, this.depth + 1);
26
+ this.filterBuilderService.createItem(null, result.containerRef, result.parentForm);
27
+ }
28
+ onDeleteSectionClicked() {
29
+ this.remove.emit();
30
+ }
31
+ }
32
+ FilterBuilderSectionComponent.decorators = [
33
+ { type: Component, args: [{
34
+ selector: 'pep-filter-builder-section',
35
+ template: "<div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <div class=\"filter-section-container\" fxLayout=\"row\" fxLayoutAlign=\"flex-start start\" fxLayoutGap=\".5rem\">\n <pep-select fxFlex=\"11\" [value]=\"f.operator.value\" xAlignment=\"left\" [options]=\"typeConvertorService.operators\"\n [renderTitle]=\"false\" [emptyOption]=false (valueChange)=\"onOperatorChanged($event)\">\n </pep-select>\n <div fxFlex=\"89\" class=\"filter-section-wrapper\" fxLayout=\"column\" fxLayoutGap=\".5rem\">\n <ng-container #sectionContainer></ng-container>\n <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <pep-button value=\"Add Filter\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"sm\" classNames=\"\"\n [disabled]=\"false\" iconName=\"number_plus\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onAddRuleClicked()\"></pep-button>\n <ng-container *ngIf=\"depth < filterBuilderService.maxDepth-1\">\n <pep-button value=\"Add Filter Group\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"sm\"\n classNames=\"\" [disabled]=\"false\" iconName=\"number_plus\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onAddRuleSetClicked()\"></pep-button>\n </ng-container>\n </div>\n </div>\n </div>\n <pep-button *ngIf=\"depth > 0\" styleType=\"weak\" styleStateType=\"system_bin\" sizeType=\"md\" classNames=\"\"\n [disabled]=\"false\" iconName=\"system_bin\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onDeleteSectionClicked()\">\n </pep-button>\n</div>",
36
+ styles: [".filter-section-wrapper{width:100%}.filter-section-container{border-radius:.25rem;border-radius:var(--pep-border-radius-md,.25rem);padding:.5rem;width:100%}"]
37
+ },] }
38
+ ];
39
+ FilterBuilderSectionComponent.ctorParameters = () => [
40
+ { type: FilterBuilderService },
41
+ { type: PepTypeConvertorService }
42
+ ];
43
+ FilterBuilderSectionComponent.propDecorators = {
44
+ form: [{ type: Input }],
45
+ depth: [{ type: Input }],
46
+ remove: [{ type: Output }],
47
+ operatorChange: [{ type: Output }],
48
+ sectionContainer: [{ type: ViewChild, args: ['sectionContainer', { read: ViewContainerRef, static: true },] }]
49
+ };
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJ1aWxkZXItc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3NtYXJ0LWZpbHRlcnMvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXItc2VjdGlvbi9maWx0ZXItYnVpbGRlci1zZWN0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQVFwRixNQUFNLE9BQU8sNkJBQTZCO0lBV3RDLFlBQ1csb0JBQTBDLEVBQzFDLG9CQUE2QztRQUQ3Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFSeEQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFNUIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBUXBDLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELElBQUksQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDOUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQUs7UUFDbkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGdCQUFnQjtRQUNaLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELG1CQUFtQjtRQUNmLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0gsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7OztZQTdDSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLDRCQUE0QjtnQkFDdEMsNnNEQUFzRDs7YUFFekQ7OztZQVRRLG9CQUFvQjtZQUVwQix1QkFBdUI7OzttQkFTM0IsS0FBSztvQkFDTCxLQUFLO3FCQUVMLE1BQU07NkJBRU4sTUFBTTsrQkFHTixTQUFTLFNBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpbHRlckJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZmlsdGVyLWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQZXBPcGVyYXRvclR5cGVzIH0gZnJvbSAnLi4vY29tbW9uL21vZGVsL3R5cGUnO1xuaW1wb3J0IHsgUGVwVHlwZUNvbnZlcnRvclNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vc2VydmljZXMvdHlwZS1jb252ZXJ0b3Iuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtZmlsdGVyLWJ1aWxkZXItc2VjdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1idWlsZGVyLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbHRlci1idWlsZGVyLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyQnVpbGRlclNlY3Rpb25Db21wb25lbnQge1xuICAgIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cDtcbiAgICBASW5wdXQoKSBkZXB0aDogbnVtYmVyO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIG9wZXJhdG9yQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnc2VjdGlvbkNvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHNlY3Rpb25Db250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGZpbHRlckJ1aWxkZXJTZXJ2aWNlOiBGaWx0ZXJCdWlsZGVyU2VydmljZSxcbiAgICAgICAgcHVibGljIHR5cGVDb252ZXJ0b3JTZXJ2aWNlOiBQZXBUeXBlQ29udmVydG9yU2VydmljZVxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgIH1cblxuICAgIGdldCBmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICAgIH1cblxuICAgIG9uT3BlcmF0b3JDaGFuZ2VkKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZi5vcGVyYXRvci5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMub3BlcmF0b3JDaGFuZ2UuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uQWRkUnVsZUNsaWNrZWQoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQnVpbGRlclNlcnZpY2UuY3JlYXRlSXRlbShudWxsLCB0aGlzLnNlY3Rpb25Db250YWluZXIsIHRoaXMuZm9ybSk7XG4gICAgfVxuXG4gICAgb25BZGRSdWxlU2V0Q2xpY2tlZCgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5maWx0ZXJCdWlsZGVyU2VydmljZS5jcmVhdGVTZWN0aW9uKFBlcE9wZXJhdG9yVHlwZXMuQW5kLCB0aGlzLnNlY3Rpb25Db250YWluZXIsIHRoaXMuZm9ybSwgdGhpcy5kZXB0aCArIDEpO1xuICAgICAgICB0aGlzLmZpbHRlckJ1aWxkZXJTZXJ2aWNlLmNyZWF0ZUl0ZW0obnVsbCwgcmVzdWx0LmNvbnRhaW5lclJlZiwgcmVzdWx0LnBhcmVudEZvcm0pO1xuICAgIH1cblxuICAgIG9uRGVsZXRlU2VjdGlvbkNsaWNrZWQoKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlLmVtaXQoKTtcbiAgICB9XG5cblxufVxuIl19
@@ -0,0 +1,65 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';
2
+ import { FilterBuilderService } from './filter-builder.service';
3
+ import { FormBuilder } from '@angular/forms';
4
+ export class FilterBuilderComponent {
5
+ constructor(_fb, _filterBuilderService) {
6
+ this._fb = _fb;
7
+ this._filterBuilderService = _filterBuilderService;
8
+ this.json = null;
9
+ this.fields = new Array();
10
+ this.filters = new EventEmitter();
11
+ this.formValidationChange = new EventEmitter();
12
+ this._isFormValid = true;
13
+ this.setupForm();
14
+ this._formSubscription$ = this.form.valueChanges.subscribe((val) => {
15
+ if (this.form.valid !== this._isFormValid) {
16
+ this._isFormValid = this.form.valid;
17
+ this.formValidationChange.emit(this._isFormValid);
18
+ }
19
+ });
20
+ this._outputJsonSubscription$ = this._filterBuilderService.triggerOutputJson.subscribe((outputJson) => {
21
+ this.filters.emit(outputJson);
22
+ });
23
+ }
24
+ setupForm() {
25
+ this.form = this._fb.group({});
26
+ }
27
+ ngOnInit() {
28
+ this._filterBuilderService.createFilterTree(this.json, this.fields, this.form, this.filterRoot);
29
+ }
30
+ /*
31
+ ngAfterViewInit() {
32
+ //this._filterBuilderService.createFilterTree(this.json, this.fields, this.form, this.filterRoot);
33
+ }
34
+
35
+ ngAfterViewChecked() {
36
+ //this._changeDetectionRef.detectChanges();
37
+ } */
38
+ ngOnDestroy() {
39
+ if (this._formSubscription$) {
40
+ this._formSubscription$.unsubscribe();
41
+ }
42
+ if (this._outputJsonSubscription$) {
43
+ this._outputJsonSubscription$.unsubscribe();
44
+ }
45
+ }
46
+ }
47
+ FilterBuilderComponent.decorators = [
48
+ { type: Component, args: [{
49
+ selector: 'pep-filter-builder',
50
+ template: "<!-- <div class=\"filter-builder-container\"> -->\n<ng-container #filterRoot></ng-container>\n<!-- </div> -->",
51
+ styles: [""]
52
+ },] }
53
+ ];
54
+ FilterBuilderComponent.ctorParameters = () => [
55
+ { type: FormBuilder },
56
+ { type: FilterBuilderService }
57
+ ];
58
+ FilterBuilderComponent.propDecorators = {
59
+ json: [{ type: Input }],
60
+ fields: [{ type: Input }],
61
+ filters: [{ type: Output }],
62
+ formValidationChange: [{ type: Output }],
63
+ filterRoot: [{ type: ViewChild, args: ['filterRoot', { read: ViewContainerRef, static: true },] }]
64
+ };
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zbWFydC1maWx0ZXJzL2ZpbHRlci1idWlsZGVyL2ZpbHRlci1idWlsZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUlOLFNBQVMsRUFDVCxnQkFBZ0IsRUFHbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFhLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXhELE1BQU0sT0FBTyxzQkFBc0I7SUFrQi9CLFlBQ1ksR0FBZ0IsRUFDaEIscUJBQTJDO1FBRDNDLFFBQUcsR0FBSCxHQUFHLENBQWE7UUFDaEIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFzQjtRQW5COUMsU0FBSSxHQUFvQixJQUFJLENBQUM7UUFDN0IsV0FBTSxHQUFxQixJQUFJLEtBQUssRUFBYSxDQUFDO1FBRzNELFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVyRCx5QkFBb0IsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQU8xRSxpQkFBWSxHQUFZLElBQUksQ0FBQztRQVF6QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQy9ELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDcEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDckQ7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbEcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUNELFFBQVE7UUFDSixJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFRDs7Ozs7OztRQU9JO0lBRUosV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN6QztRQUNELElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQy9CLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMvQztJQUNMLENBQUM7OztZQTlESixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIseUhBQThDOzthQUVqRDs7O1lBUG1CLFdBQVc7WUFEdEIsb0JBQW9COzs7bUJBVXhCLEtBQUs7cUJBQ0wsS0FBSztzQkFFTCxNQUFNO21DQUVOLE1BQU07eUJBR04sU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBPbkluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWZcblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQZXBGaWVsZCwgSVBlcEpTT05TZWN0aW9uIH0gZnJvbSAnLi9jb21tb24vbW9kZWwvbGVnYWN5JztcbmltcG9ydCB7IEZpbHRlckJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi9maWx0ZXItYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtZmlsdGVyLWJ1aWxkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXItYnVpbGRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBqc29uOiBJUGVwSlNPTlNlY3Rpb24gPSBudWxsO1xuICAgIEBJbnB1dCgpIGZpZWxkczogQXJyYXk8SVBlcEZpZWxkPiA9IG5ldyBBcnJheTxJUGVwRmllbGQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBmaWx0ZXJzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKVxuICAgIGZvcm1WYWxpZGF0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdmaWx0ZXJSb290JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgZmlsdGVyUm9vdDogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIF9mb3JtU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xuICAgIF9vdXRwdXRKc29uU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xuXG4gICAgX2lzRm9ybVZhbGlkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIGZvcm06IEZvcm1Hcm91cDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgX2ZpbHRlckJ1aWxkZXJTZXJ2aWNlOiBGaWx0ZXJCdWlsZGVyU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLnNldHVwRm9ybSgpO1xuICAgICAgICB0aGlzLl9mb3JtU3Vic2NyaXB0aW9uJCA9IHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0udmFsaWQgIT09IHRoaXMuX2lzRm9ybVZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNGb3JtVmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGlvbkNoYW5nZS5lbWl0KHRoaXMuX2lzRm9ybVZhbGlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX291dHB1dEpzb25TdWJzY3JpcHRpb24kID0gdGhpcy5fZmlsdGVyQnVpbGRlclNlcnZpY2UudHJpZ2dlck91dHB1dEpzb24uc3Vic2NyaWJlKChvdXRwdXRKc29uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcnMuZW1pdChvdXRwdXRKc29uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0dXBGb3JtKCkge1xuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLl9mYi5ncm91cCh7fSlcbiAgICB9XG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuX2ZpbHRlckJ1aWxkZXJTZXJ2aWNlLmNyZWF0ZUZpbHRlclRyZWUodGhpcy5qc29uLCB0aGlzLmZpZWxkcywgdGhpcy5mb3JtLCB0aGlzLmZpbHRlclJvb3QpO1xuICAgIH1cblxuICAgIC8qXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICAvL3RoaXMuX2ZpbHRlckJ1aWxkZXJTZXJ2aWNlLmNyZWF0ZUZpbHRlclRyZWUodGhpcy5qc29uLCB0aGlzLmZpZWxkcywgdGhpcy5mb3JtLCB0aGlzLmZpbHRlclJvb3QpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgLy90aGlzLl9jaGFuZ2VEZXRlY3Rpb25SZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0gKi9cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5fZm9ybVN1YnNjcmlwdGlvbiQpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1TdWJzY3JpcHRpb24kLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX291dHB1dEpzb25TdWJzY3JpcHRpb24kKSB7XG4gICAgICAgICAgICB0aGlzLl9vdXRwdXRKc29uU3Vic2NyaXB0aW9uJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbiJdfQ==
@@ -0,0 +1,261 @@
1
+ import { Injectable, ComponentFactoryResolver } from '@angular/core';
2
+ import { FormBuilder } from '@angular/forms';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { PepSmartFilterOperators } from '../common/model/operator';
5
+ import { createSmartFilter, createSmartFilterField } from '../common/model/creator';
6
+ //import { getSmartBuilderType } from './common/model/type';
7
+ //import { convertToSmartFilterFields } from './common/model/field';
8
+ import { getSmartBuilderOperator } from './common/model/operator';
9
+ import { FilterBuilderSectionComponent } from './filter-builder-section/filter-builder-section.component';
10
+ import { FilterBuilderItemComponent } from './filter-builder-item/filter-builder-item.component';
11
+ import { PepFilterBuilderTypeMap } from './common/model/type-map';
12
+ import { getSmartBuilderOperationUnit } from './common/model/operator-unit';
13
+ //import { PepFilterBuilderOperatorUnitMap } from './common/model/operator-unit-map';
14
+ import { PepOutputFilterService } from './common/services/output-filter.service';
15
+ import { PepOperatorTypes } from './common/model/type';
16
+ import * as i0 from "@angular/core";
17
+ import * as i1 from "@angular/forms";
18
+ import * as i2 from "./common/services/output-filter.service";
19
+ export class FilterBuilderService {
20
+ constructor(_fb, _resolver, _outputJsonService) {
21
+ this._fb = _fb;
22
+ this._resolver = _resolver;
23
+ this._outputJsonService = _outputJsonService;
24
+ this.MAX_STRUCTURE_DEPTH = 3;
25
+ this._outputJsonSubject = new BehaviorSubject(null);
26
+ this.triggerOutputJson = this._outputJsonSubject.asObservable();
27
+ }
28
+ get maxDepth() {
29
+ return this.MAX_STRUCTURE_DEPTH;
30
+ }
31
+ /**
32
+ * creates a dynamic filter structure
33
+ * might has a different structure than the input's due to merge of parent-child elements
34
+ * @param json legacy JSON
35
+ * @param fields an array of legacy fields
36
+ * @param containerRef reference to root element
37
+ */
38
+ createFilterTree(json, fields, form, containerRef) {
39
+ this._form = form;
40
+ this._smartFilterFields = this.convertToSmartFilterFields(fields);
41
+ const result = this.createSection((json === null || json === void 0 ? void 0 : json.Operation) ? json.Operation : PepOperatorTypes.And, containerRef, this._form, 0);
42
+ if (json) {
43
+ this.flatten(json, json.LeftNode, result.containerRef, result.parentForm, 1);
44
+ this.flatten(json, json.RightNode, result.containerRef, result.parentForm, 1);
45
+ }
46
+ }
47
+ /**
48
+ * checks if the object contains property
49
+ * @param obj object
50
+ * @param prop property name
51
+ * @returns true if contains, false otherwise
52
+ */
53
+ hasProperty(obj, prop) {
54
+ return Object.prototype.hasOwnProperty.call(obj, prop);
55
+ }
56
+ /**
57
+ * a recursive function dynamically builds filters structure
58
+ * @param parent legacy complex object
59
+ * @param current child legacy object (either another complex or expression type)
60
+ * @param containerRef parent element
61
+ * @param parentForm parent form
62
+ */
63
+ flatten(parent, current, containerRef, parentForm, depth) {
64
+ if (this.hasProperty(current, 'ComplexId')) {
65
+ const section = current;
66
+ if (parent.Operation === current.Operation) {
67
+ this.flatten(parent, section.LeftNode, containerRef, parentForm, depth);
68
+ this.flatten(parent, section.RightNode, containerRef, parentForm, depth);
69
+ }
70
+ else {
71
+ const result = this.createSection(section.Operation, containerRef, parentForm, depth);
72
+ this.flatten(section, section.LeftNode, result.containerRef, result.parentForm, depth + 1);
73
+ this.flatten(section, section.RightNode, result.containerRef, result.parentForm, depth + 1);
74
+ }
75
+ }
76
+ else if (this.hasProperty(current, 'ExpressionId')) {
77
+ this.createItem(current, containerRef, parentForm);
78
+ }
79
+ }
80
+ /**
81
+ * creates a container object of two or more child filter items
82
+ * @param operator AND/OR operator
83
+ * @param containerRef parent element
84
+ * @param parentForm parent form
85
+ * @param depth
86
+ * @returns an object containing the current element and current form
87
+ */
88
+ createSection(operator, containerRef, parentForm, depth) {
89
+ const factory = this._resolver.resolveComponentFactory(FilterBuilderSectionComponent);
90
+ let componentRef = containerRef.createComponent(factory);
91
+ let sectionGroup = this._fb.group({
92
+ operator: this._fb.control(operator)
93
+ });
94
+ let counter = 1;
95
+ Object.keys(parentForm.controls).forEach(item => { if (item.includes('section')) {
96
+ counter++;
97
+ } });
98
+ let formKey = `section${counter}`;
99
+ parentForm.addControl(formKey, sectionGroup);
100
+ componentRef.instance.depth = depth;
101
+ componentRef.instance.form = sectionGroup;
102
+ componentRef.instance.remove.subscribe(() => {
103
+ parentForm.removeControl(formKey);
104
+ componentRef.destroy();
105
+ this.createOutputJson();
106
+ });
107
+ componentRef.instance.operatorChange.subscribe(() => {
108
+ this.createOutputJson();
109
+ });
110
+ return {
111
+ containerRef: componentRef.instance.sectionContainer,
112
+ parentForm: sectionGroup
113
+ };
114
+ }
115
+ /**
116
+ * creates a component represents filter item (leaf element - has no childs)
117
+ * @param current filter legacy element
118
+ * @param containerRef parent element
119
+ * @param parentForm parent form
120
+ */
121
+ createItem(current, containerRef, parentForm) {
122
+ const factory = this._resolver.resolveComponentFactory(FilterBuilderItemComponent);
123
+ let componentRef = containerRef.createComponent(factory);
124
+ let counter = 1;
125
+ Object.keys(parentForm.controls).forEach(item => { if (item.includes('item')) {
126
+ counter++;
127
+ } });
128
+ let formKey = `item${counter}`;
129
+ componentRef.instance.formKey = formKey;
130
+ componentRef.instance.fields = this._smartFilterFields;
131
+ const selectedField = this.getSelectedField(current);
132
+ if (selectedField) {
133
+ componentRef.instance.selected = selectedField;
134
+ if (current) {
135
+ componentRef.instance.filter = this.getFilter(current, selectedField);
136
+ }
137
+ }
138
+ componentRef.instance.parentForm = parentForm;
139
+ componentRef.instance.filterChange.subscribe(() => {
140
+ this.createOutputJson();
141
+ });
142
+ componentRef.instance.remove.subscribe(() => {
143
+ parentForm.removeControl(formKey);
144
+ componentRef.destroy();
145
+ this.createOutputJson();
146
+ });
147
+ }
148
+ /**
149
+ * creates a smart filter object
150
+ * @param current filter legacy element
151
+ * @param field filter's selected field
152
+ * @returns smart filter object
153
+ */
154
+ getFilter(current, field) {
155
+ let operator = getSmartBuilderOperator(current.Operation, field.type);
156
+ if (operator) {
157
+ let filterValues = this.getFilterValues(current, operator, field);
158
+ return createSmartFilter(current.ApiName, operator, filterValues.first, filterValues.second, filterValues.operationUnit);
159
+ }
160
+ else {
161
+ return null;
162
+ }
163
+ }
164
+ /**
165
+ * get smart filter field
166
+ * @param current filter legacy element
167
+ * @returns smart filter field, if not found returns the first fields
168
+ */
169
+ getSelectedField(current) {
170
+ var _a, _b;
171
+ if (current) {
172
+ let item = this._smartFilterFields.find(field => field.id === current.ApiName);
173
+ return item ? item : ((_a = this._smartFilterFields) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this._smartFilterFields[0] : null;
174
+ }
175
+ else {
176
+ return ((_b = this._smartFilterFields) === null || _b === void 0 ? void 0 : _b.length) > 0 ? this._smartFilterFields[0] : null;
177
+ }
178
+ }
179
+ /**
180
+ * gets smart filter's values data
181
+ * @param current filter legacy element
182
+ * @param operator smart filter operator
183
+ * @param field filter's selected field
184
+ * @returns object contains the filter values data
185
+ */
186
+ getFilterValues(current, operator, field) {
187
+ var _a, _b, _c, _d, _e;
188
+ let data = {
189
+ first: null,
190
+ second: null,
191
+ operationUnit: null
192
+ };
193
+ if (operator === PepSmartFilterOperators.In) { //multi select
194
+ //filter keys don't exist on field options
195
+ data.first = ((_a = current === null || current === void 0 ? void 0 : current.Values) === null || _a === void 0 ? void 0 : _a.length) > 0 ? current.Values.filter(item => {
196
+ return field.options.find(option => option.key === item);
197
+ }) : null;
198
+ }
199
+ else if (operator === PepSmartFilterOperators.InTheLast ||
200
+ operator === PepSmartFilterOperators.NotInTheLast ||
201
+ operator === PepSmartFilterOperators.DueIn ||
202
+ operator === PepSmartFilterOperators.NotDueIn) { //operation unit
203
+ data.first = ((_b = current === null || current === void 0 ? void 0 : current.Values) === null || _b === void 0 ? void 0 : _b.length) > 0 ? current.Values[0] : null;
204
+ if (((_c = current === null || current === void 0 ? void 0 : current.Values) === null || _c === void 0 ? void 0 : _c.length) === 2) {
205
+ data.operationUnit = getSmartBuilderOperationUnit(current.Values[1]);
206
+ }
207
+ }
208
+ else {
209
+ data.first = ((_d = current === null || current === void 0 ? void 0 : current.Values) === null || _d === void 0 ? void 0 : _d.length) > 0 ? current.Values[0] : null;
210
+ data.second = ((_e = current === null || current === void 0 ? void 0 : current.Values) === null || _e === void 0 ? void 0 : _e.length) === 2 ? current.Values[1] : null;
211
+ }
212
+ return data;
213
+ }
214
+ /**
215
+ * converts legacy fields to smart filter fields
216
+ * @param fields legacy fields array
217
+ * @returns smart filter fields array
218
+ */
219
+ convertToSmartFilterFields(fields) {
220
+ if ((fields === null || fields === void 0 ? void 0 : fields.length) > 0) {
221
+ const typeMapper = new PepFilterBuilderTypeMap();
222
+ return fields.map((field) => {
223
+ var _a;
224
+ return createSmartFilterField({
225
+ id: field.FieldID,
226
+ name: field.Title,
227
+ options: (_a = field.OptionalValues) === null || _a === void 0 ? void 0 : _a.map(option => {
228
+ return {
229
+ key: option.Key,
230
+ value: option.Value
231
+ };
232
+ })
233
+ }, typeMapper.getSmartBuilderType(field.FieldType));
234
+ });
235
+ }
236
+ else {
237
+ return [];
238
+ }
239
+ }
240
+ /**
241
+ * creates a legacy output JSON
242
+ */
243
+ createOutputJson() {
244
+ if (this._form.valid) {
245
+ const json = this._outputJsonService.generateJson(this._form.value, this._smartFilterFields);
246
+ this._outputJsonSubject.next(json);
247
+ }
248
+ }
249
+ }
250
+ FilterBuilderService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FilterBuilderService_Factory() { return new FilterBuilderService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i2.PepOutputFilterService)); }, token: FilterBuilderService, providedIn: "root" });
251
+ FilterBuilderService.decorators = [
252
+ { type: Injectable, args: [{
253
+ providedIn: 'root'
254
+ },] }
255
+ ];
256
+ FilterBuilderService.ctorParameters = () => [
257
+ { type: FormBuilder },
258
+ { type: ComponentFactoryResolver },
259
+ { type: PepOutputFilterService }
260
+ ];
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJ1aWxkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvc21hcnQtZmlsdGVycy9maWx0ZXItYnVpbGRlci9maWx0ZXItYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQW9CLHdCQUF3QixFQUV6RCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUEwQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFNdkMsT0FBTyxFQUFFLHVCQUF1QixFQUEyQixNQUFNLDBCQUEwQixDQUFDO0FBRTVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BGLDREQUE0RDtBQUM1RCxvRUFBb0U7QUFDcEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDMUcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUUscUZBQXFGO0FBQ3JGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7O0FBS3ZELE1BQU0sT0FBTyxvQkFBb0I7SUFVN0IsWUFBb0IsR0FBZ0IsRUFBVSxTQUFtQyxFQUFVLGtCQUEwQztRQUFqSCxRQUFHLEdBQUgsR0FBRyxDQUFhO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FB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QVUsRUFBRSxNQUFNO2FBQ3JCOzs7WUF4QlEsV0FBVztZQUhjLHdCQUF3QjtZQXFCakQsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBJbmplY3RhYmxlLCBWaWV3Q29udGFpbmVyUmVmLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgQ29tcG9uZW50RmFjdG9yeSwgQ29tcG9uZW50UmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBQZXBTbWFydEZpbHRlcnNNb2R1bGUgfSBmcm9tICcuLi9zbWFydC1maWx0ZXJzLm1vZHVsZSc7XG5pbXBvcnQgeyBJUGVwRmllbGQsIElQZXBKU09OU2VjdGlvbiwgSVBlcEpTT05JdGVtIH0gZnJvbSAnLi9jb21tb24vbW9kZWwvbGVnYWN5JztcbmltcG9ydCB7IFBlcFNtYXJ0RmlsdGVyQmFzZUZpZWxkLCBJUGVwU21hcnRGaWx0ZXJGaWVsZCwgSVBlcFNtYXJ0RmlsdGVyRmllbGRPcHRpb24gfSBmcm9tICcuLi9jb21tb24vbW9kZWwvZmllbGQnO1xuaW1wb3J0IHsgSVBlcFNtYXJ0RmlsdGVyRGF0YSB9IGZyb20gJy4uL2NvbW1vbi9tb2RlbC9maWx0ZXInO1xuaW1wb3J0IHsgUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMsIElQZXBTbWFydEZpbHRlck9wZXJhdG9yIH0gZnJvbSAnLi4vY29tbW9uL21vZGVsL29wZXJhdG9yJztcbmltcG9ydCB7IFBlcFNtYXJ0RmlsdGVyVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9tb2RlbC90eXBlJ1xuaW1wb3J0IHsgY3JlYXRlU21hcnRGaWx0ZXIsIGNyZWF0ZVNtYXJ0RmlsdGVyRmllbGQgfSBmcm9tICcuLi9jb21tb24vbW9kZWwvY3JlYXRvcic7XG4vL2ltcG9ydCB7IGdldFNtYXJ0QnVpbGRlclR5cGUgfSBmcm9tICcuL2NvbW1vbi9tb2RlbC90eXBlJztcbi8vaW1wb3J0IHsgY29udmVydFRvU21hcnRGaWx0ZXJGaWVsZHMgfSBmcm9tICcuL2NvbW1vbi9tb2RlbC9maWVsZCc7XG5pbXBvcnQgeyBnZXRTbWFydEJ1aWxkZXJPcGVyYXRvciB9IGZyb20gJy4vY29tbW9uL21vZGVsL29wZXJhdG9yJztcbmltcG9ydCB7IEZpbHRlckJ1aWxkZXJTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXItYnVpbGRlci1zZWN0aW9uL2ZpbHRlci1idWlsZGVyLXNlY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEZpbHRlckJ1aWxkZXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXItYnVpbGRlci1pdGVtL2ZpbHRlci1idWlsZGVyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFBlcEZpbHRlckJ1aWxkZXJUeXBlTWFwIH0gZnJvbSAnLi9jb21tb24vbW9kZWwvdHlwZS1tYXAnO1xuaW1wb3J0IHsgZ2V0U21hcnRCdWlsZGVyT3BlcmF0aW9uVW5pdCB9IGZyb20gJy4vY29tbW9uL21vZGVsL29wZXJhdG9yLXVuaXQnO1xuLy9pbXBvcnQgeyBQZXBGaWx0ZXJCdWlsZGVyT3BlcmF0b3JVbml0TWFwIH0gZnJvbSAnLi9jb21tb24vbW9kZWwvb3BlcmF0b3ItdW5pdC1tYXAnO1xuaW1wb3J0IHsgUGVwT3V0cHV0RmlsdGVyU2VydmljZSB9IGZyb20gJy4vY29tbW9uL3NlcnZpY2VzL291dHB1dC1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJUGVwRmlsdGVyQnVpbGRlclZhbHVlcyB9IGZyb20gJy4vY29tbW9uL21vZGVsL2ZpbHRlcic7XG5pbXBvcnQgeyBQZXBPcGVyYXRvclR5cGVzIH0gZnJvbSAnLi9jb21tb24vbW9kZWwvdHlwZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyQnVpbGRlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgTUFYX1NUUlVDVFVSRV9ERVBUSDogbnVtYmVyID0gMztcblxuICAgIHByaXZhdGUgX291dHB1dEpzb25TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuXG4gICAgcHJpdmF0ZSBfc21hcnRGaWx0ZXJGaWVsZHM6IEFycmF5PElQZXBTbWFydEZpbHRlckZpZWxkPjtcbiAgICBwcml2YXRlIF9mb3JtOiBGb3JtR3JvdXA7XG5cbiAgICBwdWJsaWMgdHJpZ2dlck91dHB1dEpzb24gPSB0aGlzLl9vdXRwdXRKc29uU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBfcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgcHJpdmF0ZSBfb3V0cHV0SnNvblNlcnZpY2U6IFBlcE91dHB1dEZpbHRlclNlcnZpY2UpIHtcblxuICAgIH1cblxuICAgIGdldCBtYXhEZXB0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5NQVhfU1RSVUNUVVJFX0RFUFRIO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgYSBkeW5hbWljIGZpbHRlciBzdHJ1Y3R1cmVcbiAgICAgKiBtaWdodCBoYXMgYSBkaWZmZXJlbnQgc3RydWN0dXJlIHRoYW4gdGhlIGlucHV0J3MgZHVlIHRvIG1lcmdlIG9mIHBhcmVudC1jaGlsZCBlbGVtZW50c1xuICAgICAqIEBwYXJhbSBqc29uIGxlZ2FjeSBKU09OXG4gICAgICogQHBhcmFtIGZpZWxkcyBhbiBhcnJheSBvZiBsZWdhY3kgZmllbGRzICAgICBcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyUmVmIHJlZmVyZW5jZSB0byByb290IGVsZW1lbnRcbiAgICAgKi9cbiAgICBjcmVhdGVGaWx0ZXJUcmVlKFxuICAgICAgICBqc29uOiBJUGVwSlNPTlNlY3Rpb24gfCBudWxsLFxuICAgICAgICBmaWVsZHM6IEFycmF5PElQZXBGaWVsZD4sXG4gICAgICAgIGZvcm06IEZvcm1Hcm91cCxcbiAgICAgICAgY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2Zvcm0gPSBmb3JtO1xuICAgICAgICB0aGlzLl9zbWFydEZpbHRlckZpZWxkcyA9IHRoaXMuY29udmVydFRvU21hcnRGaWx0ZXJGaWVsZHMoZmllbGRzKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jcmVhdGVTZWN0aW9uKGpzb24/Lk9wZXJhdGlvbiA/IGpzb24uT3BlcmF0aW9uIDogUGVwT3BlcmF0b3JUeXBlcy5BbmQsIGNvbnRhaW5lclJlZiwgdGhpcy5fZm9ybSwgMCk7XG4gICAgICAgIGlmIChqc29uKSB7XG4gICAgICAgICAgICB0aGlzLmZsYXR0ZW4oanNvbiwganNvbi5MZWZ0Tm9kZSwgcmVzdWx0LmNvbnRhaW5lclJlZiwgcmVzdWx0LnBhcmVudEZvcm0sIDEpO1xuICAgICAgICAgICAgdGhpcy5mbGF0dGVuKGpzb24sIGpzb24uUmlnaHROb2RlLCByZXN1bHQuY29udGFpbmVyUmVmLCByZXN1bHQucGFyZW50Rm9ybSwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAqIGNoZWNrcyBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHByb3BlcnR5XG4gICAgKiBAcGFyYW0gb2JqIG9iamVjdFxuICAgICogQHBhcmFtIHByb3AgcHJvcGVydHkgbmFtZVxuICAgICogQHJldHVybnMgdHJ1ZSBpZiBjb250YWlucywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgKi9cbiAgICBwcml2YXRlIGhhc1Byb3BlcnR5KG9iaiwgcHJvcCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYSByZWN1cnNpdmUgZnVuY3Rpb24gZHluYW1pY2FsbHkgYnVpbGRzIGZpbHRlcnMgc3RydWN0dXJlXG4gICAgICogQHBhcmFtIHBhcmVudCBsZWdhY3kgY29tcGxleCBvYmplY3RcbiAgICAgKiBAcGFyYW0gY3VycmVudCBjaGlsZCBsZWdhY3kgb2JqZWN0IChlaXRoZXIgYW5vdGhlciBjb21wbGV4IG9yIGV4cHJlc3Npb24gdHlwZSlcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyUmVmIHBhcmVudCBlbGVtZW50XG4gICAgICogQHBhcmFtIHBhcmVudEZvcm0gcGFyZW50IGZvcm1cbiAgICAgKi9cbiAgICBwcml2YXRlIGZsYXR0ZW4ocGFyZW50OiBJUGVwSlNPTlNlY3Rpb24sIGN1cnJlbnQ6IElQZXBKU09OU2VjdGlvbiB8IElQZXBKU09OSXRlbSwgY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwYXJlbnRGb3JtOiBGb3JtR3JvdXAsIGRlcHRoOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzUHJvcGVydHkoY3VycmVudCwgJ0NvbXBsZXhJZCcpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uID0gY3VycmVudCBhcyBJUGVwSlNPTlNlY3Rpb247XG4gICAgICAgICAgICBpZiAocGFyZW50Lk9wZXJhdGlvbiA9PT0gY3VycmVudC5PcGVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZsYXR0ZW4ocGFyZW50LCBzZWN0aW9uLkxlZnROb2RlLCBjb250YWluZXJSZWYsIHBhcmVudEZvcm0sIGRlcHRoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsYXR0ZW4ocGFyZW50LCBzZWN0aW9uLlJpZ2h0Tm9kZSwgY29udGFpbmVyUmVmLCBwYXJlbnRGb3JtLCBkZXB0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY3JlYXRlU2VjdGlvbihzZWN0aW9uLk9wZXJhdGlvbiwgY29udGFpbmVyUmVmLCBwYXJlbnRGb3JtLCBkZXB0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbGF0dGVuKHNlY3Rpb24sIHNlY3Rpb24uTGVmdE5vZGUsIHJlc3VsdC5jb250YWluZXJSZWYsIHJlc3VsdC5wYXJlbnRGb3JtLCBkZXB0aCArIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmxhdHRlbihzZWN0aW9uLCBzZWN0aW9uLlJpZ2h0Tm9kZSwgcmVzdWx0LmNvbnRhaW5lclJlZiwgcmVzdWx0LnBhcmVudEZvcm0sIGRlcHRoICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNQcm9wZXJ0eShjdXJyZW50LCAnRXhwcmVzc2lvbklkJykpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlSXRlbShjdXJyZW50IGFzIElQZXBKU09OSXRlbSwgY29udGFpbmVyUmVmLCBwYXJlbnRGb3JtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgYSBjb250YWluZXIgb2JqZWN0IG9mIHR3byBvciBtb3JlIGNoaWxkIGZpbHRlciBpdGVtc1xuICAgICAqIEBwYXJhbSBvcGVyYXRvciBBTkQvT1Igb3BlcmF0b3JcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyUmVmIHBhcmVudCBlbGVtZW50XG4gICAgICogQHBhcmFtIHBhcmVudEZvcm0gcGFyZW50IGZvcm1cbiAgICAgKiBAcGFyYW0gZGVwdGhcbiAgICAgKiBAcmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgY3VycmVudCBlbGVtZW50IGFuZCBjdXJyZW50IGZvcm1cbiAgICAgKi9cbiAgICBjcmVhdGVTZWN0aW9uKG9wZXJhdG9yOiBQZXBPcGVyYXRvclR5cGVzLCBjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHBhcmVudEZvcm06IEZvcm1Hcm91cCwgZGVwdGg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5fcmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoRmlsdGVyQnVpbGRlclNlY3Rpb25Db21wb25lbnQpO1xuICAgICAgICBsZXQgY29tcG9uZW50UmVmID0gY29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcblxuICAgICAgICBsZXQgc2VjdGlvbkdyb3VwID0gdGhpcy5fZmIuZ3JvdXAoe1xuICAgICAgICAgICAgb3BlcmF0b3I6IHRoaXMuX2ZiLmNvbnRyb2wob3BlcmF0b3IpXG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgY291bnRlciA9IDE7XG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmVudEZvcm0uY29udHJvbHMpLmZvckVhY2goaXRlbSA9PiB7IGlmIChpdGVtLmluY2x1ZGVzKCdzZWN0aW9uJykpIHsgY291bnRlcisrOyB9IH0pO1xuICAgICAgICBsZXQgZm9ybUtleTogc3RyaW5nID0gYHNlY3Rpb24ke2NvdW50ZXJ9YDtcbiAgICAgICAgcGFyZW50Rm9ybS5hZGRDb250cm9sKGZvcm1LZXksIHNlY3Rpb25Hcm91cCk7XG5cbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmRlcHRoID0gZGVwdGg7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5mb3JtID0gc2VjdGlvbkdyb3VwO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucmVtb3ZlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBwYXJlbnRGb3JtLnJlbW92ZUNvbnRyb2woZm9ybUtleSk7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVPdXRwdXRKc29uKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uub3BlcmF0b3JDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlT3V0cHV0SnNvbigpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29udGFpbmVyUmVmOiBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VjdGlvbkNvbnRhaW5lcixcbiAgICAgICAgICAgIHBhcmVudEZvcm06IHNlY3Rpb25Hcm91cFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgYSBjb21wb25lbnQgcmVwcmVzZW50cyBmaWx0ZXIgaXRlbSAobGVhZiBlbGVtZW50IC0gaGFzIG5vIGNoaWxkcylcbiAgICAgKiBAcGFyYW0gY3VycmVudCBmaWx0ZXIgbGVnYWN5IGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyUmVmIHBhcmVudCBlbGVtZW50XG4gICAgICogQHBhcmFtIHBhcmVudEZvcm0gcGFyZW50IGZvcm1cbiAgICAgKi9cbiAgICBjcmVhdGVJdGVtKGN1cnJlbnQ6IElQZXBKU09OSXRlbSwgY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwYXJlbnRGb3JtOiBGb3JtR3JvdXApIHtcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuX3Jlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KEZpbHRlckJ1aWxkZXJJdGVtQ29tcG9uZW50KTtcbiAgICAgICAgbGV0IGNvbXBvbmVudFJlZiA9IGNvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XG5cbiAgICAgICAgbGV0IGNvdW50ZXIgPSAxO1xuICAgICAgICBPYmplY3Qua2V5cyhwYXJlbnRGb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGl0ZW0gPT4geyBpZiAoaXRlbS5pbmNsdWRlcygnaXRlbScpKSB7IGNvdW50ZXIrKzsgfSB9KTtcbiAgICAgICAgbGV0IGZvcm1LZXk6IHN0cmluZyA9IGBpdGVtJHtjb3VudGVyfWA7XG5cbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmZvcm1LZXkgPSBmb3JtS2V5O1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZmllbGRzID0gdGhpcy5fc21hcnRGaWx0ZXJGaWVsZHM7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRmllbGQgPSB0aGlzLmdldFNlbGVjdGVkRmllbGQoY3VycmVudCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEZpZWxkKSB7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0ZWQgPSBzZWxlY3RlZEZpZWxkO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXIoY3VycmVudCwgc2VsZWN0ZWRGaWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnBhcmVudEZvcm0gPSBwYXJlbnRGb3JtO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZmlsdGVyQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU91dHB1dEpzb24oKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5yZW1vdmUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHBhcmVudEZvcm0ucmVtb3ZlQ29udHJvbChmb3JtS2V5KTtcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU91dHB1dEpzb24oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBhIHNtYXJ0IGZpbHRlciBvYmplY3RcbiAgICAgKiBAcGFyYW0gY3VycmVudCBmaWx0ZXIgbGVnYWN5IGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gZmllbGQgZmlsdGVyJ3Mgc2VsZWN0ZWQgZmllbGRcbiAgICAgKiBAcmV0dXJucyBzbWFydCBmaWx0ZXIgb2JqZWN0XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXIoY3VycmVudDogSVBlcEpTT05JdGVtLCBmaWVsZDogYW55KTogSVBlcFNtYXJ0RmlsdGVyRGF0YSB8IG51bGwge1xuICAgICAgICBsZXQgb3BlcmF0b3I6IElQZXBTbWFydEZpbHRlck9wZXJhdG9yID0gZ2V0U21hcnRCdWlsZGVyT3BlcmF0b3IoY3VycmVudC5PcGVyYXRpb24sIGZpZWxkLnR5cGUpO1xuICAgICAgICBpZiAob3BlcmF0b3IpIHtcbiAgICAgICAgICAgIGxldCBmaWx0ZXJWYWx1ZXM6IElQZXBGaWx0ZXJCdWlsZGVyVmFsdWVzID0gdGhpcy5nZXRGaWx0ZXJWYWx1ZXMoY3VycmVudCwgb3BlcmF0b3IsIGZpZWxkKTtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVTbWFydEZpbHRlcihcbiAgICAgICAgICAgICAgICBjdXJyZW50LkFwaU5hbWUsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgZmlsdGVyVmFsdWVzLmZpcnN0LFxuICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlcy5zZWNvbmQsXG4gICAgICAgICAgICAgICAgZmlsdGVyVmFsdWVzLm9wZXJhdGlvblVuaXRcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCBzbWFydCBmaWx0ZXIgZmllbGRcbiAgICAgKiBAcGFyYW0gY3VycmVudCBmaWx0ZXIgbGVnYWN5IGVsZW1lbnRcbiAgICAgKiBAcmV0dXJucyBzbWFydCBmaWx0ZXIgZmllbGQsIGlmIG5vdCBmb3VuZCByZXR1cm5zIHRoZSBmaXJzdCBmaWVsZHNcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFNlbGVjdGVkRmllbGQoY3VycmVudDogSVBlcEpTT05JdGVtKTogSVBlcFNtYXJ0RmlsdGVyRmllbGQgfCBudWxsIHtcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIGxldCBpdGVtID0gdGhpcy5fc21hcnRGaWx0ZXJGaWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5pZCA9PT0gY3VycmVudC5BcGlOYW1lKTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtID8gaXRlbSA6IHRoaXMuX3NtYXJ0RmlsdGVyRmllbGRzPy5sZW5ndGggPiAwID8gdGhpcy5fc21hcnRGaWx0ZXJGaWVsZHNbMF0gOiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NtYXJ0RmlsdGVyRmllbGRzPy5sZW5ndGggPiAwID8gdGhpcy5fc21hcnRGaWx0ZXJGaWVsZHNbMF0gOiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0cyBzbWFydCBmaWx0ZXIncyB2YWx1ZXMgZGF0YVxuICAgICAqIEBwYXJhbSBjdXJyZW50IGZpbHRlciBsZWdhY3kgZWxlbWVudFxuICAgICAqIEBwYXJhbSBvcGVyYXRvciBzbWFydCBmaWx0ZXIgb3BlcmF0b3JcbiAgICAgKiBAcGFyYW0gZmllbGQgZmlsdGVyJ3Mgc2VsZWN0ZWQgZmllbGRcbiAgICAgKiBAcmV0dXJucyBvYmplY3QgY29udGFpbnMgdGhlIGZpbHRlciB2YWx1ZXMgZGF0YVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0RmlsdGVyVmFsdWVzKGN1cnJlbnQ6IElQZXBKU09OSXRlbSwgb3BlcmF0b3I6IElQZXBTbWFydEZpbHRlck9wZXJhdG9yLCBmaWVsZDogYW55KSB7XG4gICAgICAgIGxldCBkYXRhOiBJUGVwRmlsdGVyQnVpbGRlclZhbHVlcyA9IHtcbiAgICAgICAgICAgIGZpcnN0OiBudWxsLFxuICAgICAgICAgICAgc2Vjb25kOiBudWxsLFxuICAgICAgICAgICAgb3BlcmF0aW9uVW5pdDogbnVsbFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuSW4pIHsgLy9tdWx0aSBzZWxlY3QgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIC8vZmlsdGVyIGtleXMgZG9uJ3QgZXhpc3Qgb24gZmllbGQgb3B0aW9uc1xuICAgICAgICAgICAgZGF0YS5maXJzdCA9IGN1cnJlbnQ/LlZhbHVlcz8ubGVuZ3RoID4gMCA/IGN1cnJlbnQuVmFsdWVzLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24ua2V5ID09PSBpdGVtKTtcbiAgICAgICAgICAgIH0pIDogbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIG9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5JblRoZUxhc3QgfHxcbiAgICAgICAgICAgIG9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5Ob3RJblRoZUxhc3QgfHxcbiAgICAgICAgICAgIG9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5EdWVJbiB8fFxuICAgICAgICAgICAgb3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLk5vdER1ZUluXG4gICAgICAgICkgeyAvL29wZXJhdGlvbiB1bml0XG4gICAgICAgICAgICBkYXRhLmZpcnN0ID0gY3VycmVudD8uVmFsdWVzPy5sZW5ndGggPiAwID8gY3VycmVudC5WYWx1ZXNbMF0gOiBudWxsO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnQ/LlZhbHVlcz8ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5vcGVyYXRpb25Vbml0ID0gZ2V0U21hcnRCdWlsZGVyT3BlcmF0aW9uVW5pdChjdXJyZW50LlZhbHVlc1sxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYXRhLmZpcnN0ID0gY3VycmVudD8uVmFsdWVzPy5sZW5ndGggPiAwID8gY3VycmVudC5WYWx1ZXNbMF0gOiBudWxsO1xuICAgICAgICAgICAgZGF0YS5zZWNvbmQgPSBjdXJyZW50Py5WYWx1ZXM/Lmxlbmd0aCA9PT0gMiA/IGN1cnJlbnQuVmFsdWVzWzFdIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbnZlcnRzIGxlZ2FjeSBmaWVsZHMgdG8gc21hcnQgZmlsdGVyIGZpZWxkc1xuICAgICAqIEBwYXJhbSBmaWVsZHMgbGVnYWN5IGZpZWxkcyBhcnJheVxuICAgICAqIEByZXR1cm5zIHNtYXJ0IGZpbHRlciBmaWVsZHMgYXJyYXlcbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbnZlcnRUb1NtYXJ0RmlsdGVyRmllbGRzKGZpZWxkczogQXJyYXk8SVBlcEZpZWxkPikge1xuICAgICAgICBpZiAoZmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCB0eXBlTWFwcGVyID0gbmV3IFBlcEZpbHRlckJ1aWxkZXJUeXBlTWFwKCk7XG4gICAgICAgICAgICByZXR1cm4gZmllbGRzLm1hcCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlU21hcnRGaWx0ZXJGaWVsZChcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGZpZWxkLkZpZWxkSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWVsZC5UaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGZpZWxkLk9wdGlvbmFsVmFsdWVzPy5tYXAob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IG9wdGlvbi5LZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb24uVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9IGFzIElQZXBTbWFydEZpbHRlckZpZWxkXG4gICAgICAgICAgICAgICAgICAgICwgdHlwZU1hcHBlci5nZXRTbWFydEJ1aWxkZXJUeXBlKGZpZWxkLkZpZWxkVHlwZSkgYXMgUGVwU21hcnRGaWx0ZXJUeXBlKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgYSBsZWdhY3kgb3V0cHV0IEpTT04gXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVPdXRwdXRKc29uKCkge1xuICAgICAgICBpZiAodGhpcy5fZm9ybS52YWxpZCkge1xuICAgICAgICAgICAgY29uc3QganNvbiA9IHRoaXMuX291dHB1dEpzb25TZXJ2aWNlLmdlbmVyYXRlSnNvbih0aGlzLl9mb3JtLnZhbHVlLCB0aGlzLl9zbWFydEZpbHRlckZpZWxkcyk7XG4gICAgICAgICAgICB0aGlzLl9vdXRwdXRKc29uU3ViamVjdC5uZXh0KGpzb24pO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufSJdfQ==
@@ -0,0 +1,5 @@
1
+ /*
2
+ * export from ngx-lib/smart-filters
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3NtYXJ0LWZpbHRlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBleHBvcnQgZnJvbSBuZ3gtbGliL3NtYXJ0LWZpbHRlcnNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==