@acorex/components 16.18.49 → 16.19.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 (190) hide show
  1. package/fesm2022/acorex-components.mjs +726 -693
  2. package/fesm2022/acorex-components.mjs.map +1 -1
  3. package/index.d.ts +1 -0
  4. package/lib/base/base-page.class.d.ts +2 -2
  5. package/lib/base/element.class.d.ts +5 -5
  6. package/lib/calendar/scheduler/views/scheduler-view.component.d.ts +1 -1
  7. package/lib/data-filter/filter.class.d.ts +1 -1
  8. package/lib/data-list/core/data-list.component.d.ts +1 -1
  9. package/lib/property-editor/property-editor.class.d.ts +1 -1
  10. package/package.json +4 -6
  11. package/esm2022/acorex-components.mjs +0 -5
  12. package/esm2022/index.mjs +0 -159
  13. package/esm2022/lib/accordion/accordion.component.mjs +0 -45
  14. package/esm2022/lib/accordion/accordion.module.mjs +0 -20
  15. package/esm2022/lib/base/base-page.class.mjs +0 -97
  16. package/esm2022/lib/base/components.class.mjs +0 -17
  17. package/esm2022/lib/base/element.class.mjs +0 -307
  18. package/esm2022/lib/base/events.class.mjs +0 -17
  19. package/esm2022/lib/button/button.component.mjs +0 -74
  20. package/esm2022/lib/button/button.module.mjs +0 -21
  21. package/esm2022/lib/calendar/calendar-box/calendar-box.component.mjs +0 -472
  22. package/esm2022/lib/calendar/calendar-box/calendar-box.module.mjs +0 -22
  23. package/esm2022/lib/calendar/scheduler/scheduler-views.property.mjs +0 -59
  24. package/esm2022/lib/calendar/scheduler/scheduler.class.mjs +0 -16
  25. package/esm2022/lib/calendar/scheduler/scheduler.component.mjs +0 -226
  26. package/esm2022/lib/calendar/scheduler/scheduler.module.mjs +0 -68
  27. package/esm2022/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +0 -136
  28. package/esm2022/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +0 -37
  29. package/esm2022/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +0 -49
  30. package/esm2022/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +0 -102
  31. package/esm2022/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +0 -214
  32. package/esm2022/lib/calendar/scheduler/views/scheduler-view.component.mjs +0 -99
  33. package/esm2022/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +0 -85
  34. package/esm2022/lib/checkbox/checkbox.component.mjs +0 -112
  35. package/esm2022/lib/checkbox/checkbox.module.mjs +0 -20
  36. package/esm2022/lib/color-picker/color-box/color-box.component.mjs +0 -423
  37. package/esm2022/lib/color-picker/color-picker.component.mjs +0 -89
  38. package/esm2022/lib/color-picker/color-picker.module.mjs +0 -24
  39. package/esm2022/lib/context-menu/context-menu.component.mjs +0 -68
  40. package/esm2022/lib/context-menu/context-menu.directive.mjs +0 -146
  41. package/esm2022/lib/context-menu/context-menu.module.mjs +0 -20
  42. package/esm2022/lib/data-filter/columns/filter-column-date.component.mjs +0 -140
  43. package/esm2022/lib/data-filter/columns/filter-column-number.component.mjs +0 -119
  44. package/esm2022/lib/data-filter/columns/filter-column-selection.component.mjs +0 -75
  45. package/esm2022/lib/data-filter/columns/filter-column-string.component.mjs +0 -119
  46. package/esm2022/lib/data-filter/filter-panel/filter-panel.component.mjs +0 -267
  47. package/esm2022/lib/data-filter/filter.class.mjs +0 -46
  48. package/esm2022/lib/data-filter/filter.module.mjs +0 -88
  49. package/esm2022/lib/data-filter/toolbar/filter-toolbar.component.mjs +0 -168
  50. package/esm2022/lib/data-list/core/data-list.component.mjs +0 -37
  51. package/esm2022/lib/data-list/list/list.component.mjs +0 -134
  52. package/esm2022/lib/data-list/list/list.module.mjs +0 -22
  53. package/esm2022/lib/data-list/list/toolbar-list-view.component.mjs +0 -84
  54. package/esm2022/lib/data-source/datasource.component.mjs +0 -47
  55. package/esm2022/lib/data-source/datasource.module.mjs +0 -18
  56. package/esm2022/lib/data-source/read-param.mjs +0 -7
  57. package/esm2022/lib/date-picker/date-picker.component.mjs +0 -1102
  58. package/esm2022/lib/date-picker/date-picker.module.mjs +0 -50
  59. package/esm2022/lib/dialog/dialog.component.mjs +0 -26
  60. package/esm2022/lib/dialog/dialog.module.mjs +0 -21
  61. package/esm2022/lib/dialog/dialog.service.mjs +0 -160
  62. package/esm2022/lib/drawer/content.component.mjs +0 -18
  63. package/esm2022/lib/drawer/drawer-container.component.mjs +0 -38
  64. package/esm2022/lib/drawer/drawer.component.mjs +0 -146
  65. package/esm2022/lib/drawer/drawer.module.mjs +0 -23
  66. package/esm2022/lib/dropdown/dropdown.component.mjs +0 -186
  67. package/esm2022/lib/dropdown/dropdown.module.mjs +0 -26
  68. package/esm2022/lib/fieldset/fieldset.component.mjs +0 -57
  69. package/esm2022/lib/fieldset/fieldset.module.mjs +0 -19
  70. package/esm2022/lib/form-group/form-group.component.mjs +0 -108
  71. package/esm2022/lib/form-group/form-group.module.mjs +0 -22
  72. package/esm2022/lib/form-group/form-lable.directive.mjs +0 -23
  73. package/esm2022/lib/label/label.component.mjs +0 -22
  74. package/esm2022/lib/label/label.module.mjs +0 -21
  75. package/esm2022/lib/loading/loading-indicator.component.mjs +0 -18
  76. package/esm2022/lib/loading/loading-panel.component.mjs +0 -45
  77. package/esm2022/lib/loading/loading.module.mjs +0 -21
  78. package/esm2022/lib/loading/loading.service.mjs +0 -47
  79. package/esm2022/lib/menu/menu-item.component.mjs +0 -50
  80. package/esm2022/lib/menu/menu.component.mjs +0 -114
  81. package/esm2022/lib/menu/menu.module.mjs +0 -22
  82. package/esm2022/lib/menu/menu2.component.mjs +0 -100
  83. package/esm2022/lib/number-box/number-box.component.mjs +0 -715
  84. package/esm2022/lib/number-box/number-box.module.mjs +0 -21
  85. package/esm2022/lib/page/content.component.mjs +0 -27
  86. package/esm2022/lib/page/footer.component.mjs +0 -19
  87. package/esm2022/lib/page/page.component.mjs +0 -57
  88. package/esm2022/lib/page/page.module.mjs +0 -22
  89. package/esm2022/lib/panel-box/panel-box.component.mjs +0 -87
  90. package/esm2022/lib/panel-box/panel-box.module.mjs +0 -19
  91. package/esm2022/lib/password-box/password-box.component.mjs +0 -36
  92. package/esm2022/lib/password-box/password-box.module.mjs +0 -23
  93. package/esm2022/lib/popover/custom-cdk-overlay.service.mjs +0 -50
  94. package/esm2022/lib/popover/overlay.service.mjs +0 -94
  95. package/esm2022/lib/popover/popover.component.mjs +0 -145
  96. package/esm2022/lib/popover/popover.module.mjs +0 -19
  97. package/esm2022/lib/popup/popup.component.mjs +0 -160
  98. package/esm2022/lib/popup/popup.module.mjs +0 -25
  99. package/esm2022/lib/popup/popup.service.mjs +0 -94
  100. package/esm2022/lib/progress-bar/progress-bar.component.mjs +0 -16
  101. package/esm2022/lib/progress-bar/progress-bar.module.mjs +0 -19
  102. package/esm2022/lib/property-editor/editors/check-editor/check-editor.mjs +0 -65
  103. package/esm2022/lib/property-editor/editors/check-editor/check.module.mjs +0 -22
  104. package/esm2022/lib/property-editor/editors/color-editor/color.editor.mjs +0 -41
  105. package/esm2022/lib/property-editor/editors/color-editor/color.module.mjs +0 -24
  106. package/esm2022/lib/property-editor/editors/column-editor/column.editor.mjs +0 -118
  107. package/esm2022/lib/property-editor/editors/column-editor/column.module.mjs +0 -32
  108. package/esm2022/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +0 -216
  109. package/esm2022/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +0 -76
  110. package/esm2022/lib/property-editor/editors/date-editor/date.editor.mjs +0 -87
  111. package/esm2022/lib/property-editor/editors/date-editor/date.module.mjs +0 -24
  112. package/esm2022/lib/property-editor/editors/number-editor/number.editor.mjs +0 -72
  113. package/esm2022/lib/property-editor/editors/number-editor/number.module.mjs +0 -24
  114. package/esm2022/lib/property-editor/editors/range-editor/range.editor.mjs +0 -145
  115. package/esm2022/lib/property-editor/editors/range-editor/range.module.mjs +0 -59
  116. package/esm2022/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +0 -76
  117. package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +0 -75
  118. package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +0 -25
  119. package/esm2022/lib/property-editor/editors/selection-editor/selection-editor.mjs +0 -73
  120. package/esm2022/lib/property-editor/editors/selection-editor/selection.module.mjs +0 -22
  121. package/esm2022/lib/property-editor/editors/switch-editor/number.editor.mjs +0 -30
  122. package/esm2022/lib/property-editor/editors/switch-editor/number.module.mjs +0 -25
  123. package/esm2022/lib/property-editor/editors/text-editor/text.editor.mjs +0 -36
  124. package/esm2022/lib/property-editor/editors/text-editor/text.module.mjs +0 -24
  125. package/esm2022/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +0 -35
  126. package/esm2022/lib/property-editor/editors/textarea-editor/textarea.module.mjs +0 -24
  127. package/esm2022/lib/property-editor/editors/time-editor/time.editor.mjs +0 -55
  128. package/esm2022/lib/property-editor/editors/time-editor/time.module.mjs +0 -24
  129. package/esm2022/lib/property-editor/property-editor-renderer.directive.mjs +0 -167
  130. package/esm2022/lib/property-editor/property-editor.class.mjs +0 -108
  131. package/esm2022/lib/property-editor/property-editor.module.mjs +0 -194
  132. package/esm2022/lib/query-builder/query-builder-group.component.mjs +0 -129
  133. package/esm2022/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +0 -177
  134. package/esm2022/lib/query-builder/query-builder-rule.component.mjs +0 -428
  135. package/esm2022/lib/query-builder/query-builder.class.mjs +0 -42
  136. package/esm2022/lib/query-builder/query-builder.component.mjs +0 -92
  137. package/esm2022/lib/query-builder/query-builder.module.mjs +0 -62
  138. package/esm2022/lib/query-builder/query-builder.service.mjs +0 -199
  139. package/esm2022/lib/search-bar/search-bar.component.mjs +0 -293
  140. package/esm2022/lib/search-bar/search-bar.module.mjs +0 -61
  141. package/esm2022/lib/searchbox/searchbox.component.mjs +0 -138
  142. package/esm2022/lib/searchbox/searchbox.module.mjs +0 -24
  143. package/esm2022/lib/selectbox/selectbox.component.mjs +0 -1137
  144. package/esm2022/lib/selectbox/selectbox.module.mjs +0 -45
  145. package/esm2022/lib/selectbox/selectbox2.component.mjs +0 -617
  146. package/esm2022/lib/selection-list/selection-list.component.mjs +0 -120
  147. package/esm2022/lib/selection-list/selection-list.module.mjs +0 -21
  148. package/esm2022/lib/switch/switch.component.mjs +0 -55
  149. package/esm2022/lib/switch/switch.module.mjs +0 -20
  150. package/esm2022/lib/tab-page/tab-page-Renderer.component.mjs +0 -75
  151. package/esm2022/lib/tab-page/tab-page-host.component.mjs +0 -124
  152. package/esm2022/lib/tab-page/tab-page.module.mjs +0 -21
  153. package/esm2022/lib/tab-page/tab-page.service.mjs +0 -159
  154. package/esm2022/lib/tab-strip/tab-strip.component.mjs +0 -48
  155. package/esm2022/lib/tab-strip/tab-strip.module.mjs +0 -19
  156. package/esm2022/lib/tab-view/dynamic-tabs.directive.mjs +0 -25
  157. package/esm2022/lib/tab-view/tab-view.component.mjs +0 -110
  158. package/esm2022/lib/tab-view/tab-view.module.mjs +0 -21
  159. package/esm2022/lib/tab-view/tab.component.mjs +0 -33
  160. package/esm2022/lib/textarea/textarea.component.mjs +0 -44
  161. package/esm2022/lib/textarea/textarea.module.mjs +0 -21
  162. package/esm2022/lib/textbox/textbox.component.mjs +0 -46
  163. package/esm2022/lib/textbox/textbox.module.mjs +0 -36
  164. package/esm2022/lib/time-picker/time-picker.component.mjs +0 -1107
  165. package/esm2022/lib/time-picker/time-picker.module.mjs +0 -34
  166. package/esm2022/lib/toast/toast-message/toast-message.component.mjs +0 -76
  167. package/esm2022/lib/toast/toast-wrapper/toast-wrapper.component.mjs +0 -13
  168. package/esm2022/lib/toast/toast.module.mjs +0 -21
  169. package/esm2022/lib/toast/toast.service.mjs +0 -45
  170. package/esm2022/lib/toolbar/group-button/toolbar-group-button.component.mjs +0 -77
  171. package/esm2022/lib/toolbar/menu/toolbar-menu.component.mjs +0 -65
  172. package/esm2022/lib/toolbar/search/toolbar-search.component.mjs +0 -56
  173. package/esm2022/lib/toolbar/title/toolbar-title.component.mjs +0 -37
  174. package/esm2022/lib/toolbar/toolbar-item.mjs +0 -4
  175. package/esm2022/lib/toolbar/toolbar.component.mjs +0 -13
  176. package/esm2022/lib/toolbar/toolbar.module.mjs +0 -40
  177. package/esm2022/lib/tooltip/tooltip.directive.mjs +0 -115
  178. package/esm2022/lib/tooltip/tooltip.module.mjs +0 -19
  179. package/esm2022/lib/tree-side-menu/tree-side-menu.component.mjs +0 -697
  180. package/esm2022/lib/tree-side-menu/tree-side-menu.module.mjs +0 -33
  181. package/esm2022/lib/tree-view/tree-view.component.mjs +0 -854
  182. package/esm2022/lib/tree-view/tree-view.module.mjs +0 -22
  183. package/esm2022/lib/upload-file/upload-file.component.mjs +0 -299
  184. package/esm2022/lib/upload-file/upload-file.events.mjs +0 -2
  185. package/esm2022/lib/upload-file/upload-file.module.mjs +0 -24
  186. package/esm2022/lib/validation/validation-form.component.mjs +0 -68
  187. package/esm2022/lib/validation/validation-rule.widget.mjs +0 -133
  188. package/esm2022/lib/validation/validation.class.mjs +0 -2
  189. package/esm2022/lib/validation/validation.component.mjs +0 -89
  190. package/esm2022/lib/validation/validation.module.mjs +0 -34
@@ -1,75 +0,0 @@
1
- import { Component, Input, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';
2
- import { AXFilterColumnComponent } from '../filter.class';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../selection-list/selection-list.component";
5
- export class AXFilterColumnSelectionComponent extends AXFilterColumnComponent {
6
- cdr;
7
- selectedItems = [];
8
- items = [];
9
- mode = 'single';
10
- dataType = 'number';
11
- constructor(cdr) {
12
- super(cdr);
13
- this.cdr = cdr;
14
- }
15
- get condition() {
16
- const values = this.selectedItems.map(c => c.value);
17
- if (values.length === 0) {
18
- return null;
19
- }
20
- return {
21
- condition: this.mode === 'single' ? 'equal' : 'contains',
22
- field: this.field,
23
- dataType: this.dataType,
24
- value: this.mode === 'single' ? values[0] : values
25
- };
26
- }
27
- clear() {
28
- this.selectedItems = [];
29
- super.clear();
30
- }
31
- onSelectChange(e) {
32
- this.valueChange.emit();
33
- }
34
- setFilter(value, operator) {
35
- if (value instanceof Array) {
36
- this.selectedItems = this.items.filter(c => value.some(z => z === c.value));
37
- }
38
- else {
39
- this.selectedItems = [this.items.find(c => c.value === value)];
40
- }
41
- super.setFilter(value, operator);
42
- }
43
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXFilterColumnSelectionComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
44
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.7", type: AXFilterColumnSelectionComponent, selector: "ax-filter-column-selection", inputs: { items: "items", mode: "mode", dataType: "dataType" }, providers: [
45
- { provide: AXFilterColumnComponent, useExisting: AXFilterColumnSelectionComponent }
46
- ], usesInheritance: true, ngImport: i0, template: `
47
- <div class="ax-filter-section">
48
- <ax-selection-list [items]="items" (selectedItemsChange)="onSelectChange($event)" [mode]="mode" direction="vertical" [(selectedItems)]="selectedItems">
49
- </ax-selection-list>
50
- </div>
51
- `, isInline: true, dependencies: [{ kind: "component", type: i1.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["readonly", "value", "disabled", "size", "direction", "items", "mode", "textField", "valueField", "selectedItems", "selectedValues"], outputs: ["selectionChanged", "selectedItemsChange", "selectedValuesChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
52
- }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXFilterColumnSelectionComponent, decorators: [{
54
- type: Component,
55
- args: [{
56
- selector: 'ax-filter-column-selection',
57
- template: `
58
- <div class="ax-filter-section">
59
- <ax-selection-list [items]="items" (selectedItemsChange)="onSelectChange($event)" [mode]="mode" direction="vertical" [(selectedItems)]="selectedItems">
60
- </ax-selection-list>
61
- </div>
62
- `,
63
- providers: [
64
- { provide: AXFilterColumnComponent, useExisting: AXFilterColumnSelectionComponent }
65
- ],
66
- changeDetection: ChangeDetectionStrategy.OnPush
67
- }]
68
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { items: [{
69
- type: Input
70
- }], mode: [{
71
- type: Input
72
- }], dataType: [{
73
- type: Input
74
- }] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNvbHVtbi1zZWxlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZGF0YS1maWx0ZXIvY29sdW1ucy9maWx0ZXItY29sdW1uLXNlbGVjdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFxQix1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFnQjdFLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSx1QkFBdUI7SUFnQm5EO0lBYnRCLGFBQWEsR0FBVSxFQUFFLENBQUM7SUFHMUIsS0FBSyxHQUFrQixFQUFFLENBQUM7SUFHMUIsSUFBSSxHQUFHLFFBQVEsQ0FBQztJQUdoQixRQUFRLEdBQVEsUUFBUSxDQUFDO0lBSXpCLFlBQXNCLEdBQXNCO1FBQ3hDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURPLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBRTVDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDVCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7UUFFaEIsQ0FBQztRQUNELE9BQU87WUFDSCxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVTtZQUN4RCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO1NBQ3JELENBQUE7SUFDTCxDQUFDO0lBQ0QsS0FBSztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBQ0QsY0FBYyxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRTVCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVSxFQUFFLFFBQWdCO1FBQ2xDLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLENBQUM7YUFDSSxDQUFDO1lBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO3VHQWxEUSxnQ0FBZ0M7MkZBQWhDLGdDQUFnQyxxSEFMOUI7WUFDUCxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsZ0NBQWdDLEVBQUU7U0FDdEYsaURBUlM7Ozs7O0tBS1Q7OzJGQU1RLGdDQUFnQztrQkFiNUMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxRQUFRLEVBQUU7Ozs7O0tBS1Q7b0JBQ0QsU0FBUyxFQUFFO3dCQUNQLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFdBQVcsa0NBQWtDLEVBQUU7cUJBQ3RGO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDtzRkFPRyxLQUFLO3NCQURKLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdG9yUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhGaWx0ZXJDb25kaXRpb24sIEFYRmlsdGVyQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vZmlsdGVyLmNsYXNzJztcbmltcG9ydCB7IEFYQ2hlY2tJdGVtIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheC1maWx0ZXItY29sdW1uLXNlbGVjdGlvbicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmlsdGVyLXNlY3Rpb25cIj5cbiAgICA8YXgtc2VsZWN0aW9uLWxpc3QgIFtpdGVtc109XCJpdGVtc1wiIChzZWxlY3RlZEl0ZW1zQ2hhbmdlKT1cIm9uU2VsZWN0Q2hhbmdlKCRldmVudClcIiBbbW9kZV09XCJtb2RlXCIgZGlyZWN0aW9uPVwidmVydGljYWxcIiBbKHNlbGVjdGVkSXRlbXMpXT1cInNlbGVjdGVkSXRlbXNcIj5cbiAgICA8L2F4LXNlbGVjdGlvbi1saXN0PlxuIDwvZGl2PlxuICAgIGAsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQVhGaWx0ZXJDb2x1bW5Db21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWEZpbHRlckNvbHVtblNlbGVjdGlvbkNvbXBvbmVudCB9XG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBWEZpbHRlckNvbHVtblNlbGVjdGlvbkNvbXBvbmVudCBleHRlbmRzIEFYRmlsdGVyQ29sdW1uQ29tcG9uZW50IHtcblxuXG4gICAgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgaXRlbXM6IEFYQ2hlY2tJdGVtW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgbW9kZSA9ICdzaW5nbGUnO1xuXG4gICAgQElucHV0KClcbiAgICBkYXRhVHlwZTogYW55ID0gJ251bWJlcic7XG5cblxuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoY2RyKTtcbiAgICB9XG5cbiAgICBnZXQgY29uZGl0aW9uKCk6IEFYRmlsdGVyQ29uZGl0aW9uIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5zZWxlY3RlZEl0ZW1zLm1hcChjID0+IGMudmFsdWUpO1xuICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29uZGl0aW9uOiB0aGlzLm1vZGUgPT09ICdzaW5nbGUnID8gJ2VxdWFsJyA6ICdjb250YWlucycsXG4gICAgICAgICAgICBmaWVsZDogdGhpcy5maWVsZCxcbiAgICAgICAgICAgIGRhdGFUeXBlOiB0aGlzLmRhdGFUeXBlLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMubW9kZSA9PT0gJ3NpbmdsZScgPyB2YWx1ZXNbMF0gOiB2YWx1ZXNcbiAgICAgICAgfVxuICAgIH1cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICAgIHN1cGVyLmNsZWFyKCk7XG4gICAgfVxuICAgIG9uU2VsZWN0Q2hhbmdlKGUpIHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KCk7XG5cbiAgICB9XG5cbiAgICBzZXRGaWx0ZXIodmFsdWU6IGFueSwgb3BlcmF0b3I6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoYyA9PiB2YWx1ZS5zb21lKHogPT4geiA9PT0gYy52YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW3RoaXMuaXRlbXMuZmluZChjID0+IGMudmFsdWUgPT09IHZhbHVlKV07XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIuc2V0RmlsdGVyKHZhbHVlLCBvcGVyYXRvcik7XG4gICAgfVxufVxuIl19
@@ -1,119 +0,0 @@
1
- import { Component, ChangeDetectorRef } from '@angular/core';
2
- import { AXFilterColumnComponent } from '../filter.class';
3
- import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
4
- import { Observable } from 'rxjs';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- import * as i2 from "@angular/forms";
8
- import * as i3 from "../../textbox/textbox.component";
9
- export class AXFilterColumnStringComponent extends AXFilterColumnComponent {
10
- cdr;
11
- operator = 'contains';
12
- operators = [
13
- {
14
- title: 'is',
15
- value: 'equal'
16
- },
17
- {
18
- title: `isn't`,
19
- value: 'not-equal'
20
- },
21
- {
22
- title: 'contains',
23
- value: 'contains'
24
- },
25
- {
26
- title: 'not contains',
27
- value: 'not-contains'
28
- },
29
- {
30
- title: 'start with',
31
- value: 'start-with'
32
- },
33
- {
34
- title: 'end with',
35
- value: 'end-with'
36
- },
37
- {
38
- title: 'is empty',
39
- value: 'is-empty'
40
- },
41
- {
42
- title: `isn't empty`,
43
- value: 'is-not-empty'
44
- }
45
- ];
46
- constructor(cdr) {
47
- super(cdr);
48
- this.cdr = cdr;
49
- }
50
- searchChangeObserver;
51
- onOperatorChange(e) {
52
- this.valueChange.emit();
53
- }
54
- // TODO: Check this method work correctly
55
- onTextChange(e) {
56
- if (!this.searchChangeObserver) {
57
- return new Observable(observer => {
58
- this.searchChangeObserver = observer;
59
- })
60
- .pipe(debounceTime(500))
61
- .pipe(distinctUntilChanged())
62
- .subscribe(c => {
63
- this.valueChange.emit();
64
- });
65
- }
66
- this.searchChangeObserver.next(e);
67
- }
68
- get condition() {
69
- return {
70
- condition: this.operator,
71
- field: this.field,
72
- dataType: 'string',
73
- value: this.value
74
- };
75
- }
76
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXFilterColumnStringComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
77
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.7", type: AXFilterColumnStringComponent, selector: "ax-filter-column-string", providers: [
78
- { provide: AXFilterColumnComponent, useExisting: AXFilterColumnStringComponent }
79
- ], usesInheritance: true, ngImport: i0, template: `
80
- <div class="ax-filter-section">
81
- <div>
82
- <select (ngModelChange)="onOperatorChange($event)" class="form-control form-control-sm" [(ngModel)]="operator">
83
- <option *ngFor="let o of operators" value="{{o.value}}">
84
- {{o.title}}
85
- </option>
86
- </select>
87
- </div>
88
- <div>
89
- <ax-text-box placeholder="Type here" (textChange)="onTextChange($event)" [(value)]="value" *ngIf="operator!='is-not-empty' && operator!='is-empty'">
90
- </ax-text-box>
91
- </div>
92
- </div>
93
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.AXTextBoxComponent, selector: "ax-text-box", inputs: ["mask", "showMask", "type", "maxLength", "maskGuid", "maskPlaceholder", "maskKeepCharPositions"] }] });
94
- }
95
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXFilterColumnStringComponent, decorators: [{
96
- type: Component,
97
- args: [{
98
- selector: 'ax-filter-column-string',
99
- template: `
100
- <div class="ax-filter-section">
101
- <div>
102
- <select (ngModelChange)="onOperatorChange($event)" class="form-control form-control-sm" [(ngModel)]="operator">
103
- <option *ngFor="let o of operators" value="{{o.value}}">
104
- {{o.title}}
105
- </option>
106
- </select>
107
- </div>
108
- <div>
109
- <ax-text-box placeholder="Type here" (textChange)="onTextChange($event)" [(value)]="value" *ngIf="operator!='is-not-empty' && operator!='is-empty'">
110
- </ax-text-box>
111
- </div>
112
- </div>
113
- `,
114
- providers: [
115
- { provide: AXFilterColumnComponent, useExisting: AXFilterColumnStringComponent }
116
- ]
117
- }]
118
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNvbHVtbi1zdHJpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZGF0YS1maWx0ZXIvY29sdW1ucy9maWx0ZXItY29sdW1uLXN0cmluZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBQyxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQXFCLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBc0JsQyxNQUFNLE9BQU8sNkJBQThCLFNBQVEsdUJBQXVCO0lBdUNoRDtJQXBDdEIsUUFBUSxHQUFXLFVBQVUsQ0FBQztJQUM5QixTQUFTLEdBQVU7UUFDZjtZQUNJLEtBQUssRUFBRSxJQUFJO1lBQ1gsS0FBSyxFQUFFLE9BQU87U0FDakI7UUFDRDtZQUNJLEtBQUssRUFBRSxPQUFPO1lBQ2QsS0FBSyxFQUFFLFdBQVc7U0FDckI7UUFDRDtZQUNJLEtBQUssRUFBRSxVQUFVO1lBQ2pCLEtBQUssRUFBRSxVQUFVO1NBQ3BCO1FBQ0Q7WUFDSSxLQUFLLEVBQUUsY0FBYztZQUNyQixLQUFLLEVBQUUsY0FBYztTQUN4QjtRQUNEO1lBQ0ksS0FBSyxFQUFFLFlBQVk7WUFDbkIsS0FBSyxFQUFFLFlBQVk7U0FDdEI7UUFDRDtZQUNJLEtBQUssRUFBRSxVQUFVO1lBQ2pCLEtBQUssRUFBRSxVQUFVO1NBQ3BCO1FBQ0Q7WUFDSSxLQUFLLEVBQUUsVUFBVTtZQUNqQixLQUFLLEVBQUUsVUFBVTtTQUNwQjtRQUNEO1lBQ0ksS0FBSyxFQUFFLGFBQWE7WUFDcEIsS0FBSyxFQUFFLGNBQWM7U0FDeEI7S0FDSixDQUFDO0lBRUYsWUFBc0IsR0FBc0I7UUFDeEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRE8sUUFBRyxHQUFILEdBQUcsQ0FBbUI7SUFFNUMsQ0FBQztJQUVPLG9CQUFvQixDQUFNO0lBRWxDLGdCQUFnQixDQUFDLENBQUM7UUFFZCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRTVCLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsWUFBWSxDQUFDLENBQUM7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQztZQUN6QyxDQUFDLENBQUM7aUJBQ0csSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDdkIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7aUJBQzVCLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU87WUFDSCxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDeEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNwQixDQUFBO0lBQ0wsQ0FBQzt1R0F6RVEsNkJBQTZCOzJGQUE3Qiw2QkFBNkIsa0RBSjNCO1lBQ1AsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLDZCQUE2QixFQUFFO1NBQ25GLGlEQWpCUzs7Ozs7Ozs7Ozs7Ozs7S0FjVDs7MkZBS1EsNkJBQTZCO2tCQXJCekMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7O0tBY1Q7b0JBQ0QsU0FBUyxFQUFFO3dCQUNQLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFdBQVcsK0JBQStCLEVBQUU7cUJBQ25GO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbHRlckNvbmRpdGlvbiwgQVhGaWx0ZXJDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9maWx0ZXIuY2xhc3MnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXgtZmlsdGVyLWNvbHVtbi1zdHJpbmcnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImF4LWZpbHRlci1zZWN0aW9uXCI+XG4gICAgPGRpdj5cbiAgICAgICAgPHNlbGVjdCAobmdNb2RlbENoYW5nZSk9XCJvbk9wZXJhdG9yQ2hhbmdlKCRldmVudClcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiAgWyhuZ01vZGVsKV09XCJvcGVyYXRvclwiPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbyBvZiBvcGVyYXRvcnNcIiB2YWx1ZT1cInt7by52YWx1ZX19XCI+XG4gICAgICAgICAgICAgICAge3tvLnRpdGxlfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgICA8YXgtdGV4dC1ib3ggcGxhY2Vob2xkZXI9XCJUeXBlIGhlcmVcIiAodGV4dENoYW5nZSk9XCJvblRleHRDaGFuZ2UoJGV2ZW50KVwiIFsodmFsdWUpXT1cInZhbHVlXCIgKm5nSWY9XCJvcGVyYXRvciE9J2lzLW5vdC1lbXB0eScgJiYgb3BlcmF0b3IhPSdpcy1lbXB0eSdcIj5cbiAgICAgICAgPC9heC10ZXh0LWJveD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuICAgIGAsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQVhGaWx0ZXJDb2x1bW5Db21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWEZpbHRlckNvbHVtblN0cmluZ0NvbXBvbmVudCB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBWEZpbHRlckNvbHVtblN0cmluZ0NvbXBvbmVudCBleHRlbmRzIEFYRmlsdGVyQ29sdW1uQ29tcG9uZW50IHtcblxuXG4gICAgb3BlcmF0b3I6IHN0cmluZyA9ICdjb250YWlucyc7XG4gICAgb3BlcmF0b3JzOiBhbnlbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6ICdpcycsXG4gICAgICAgICAgICB2YWx1ZTogJ2VxdWFsJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogYGlzbid0YCxcbiAgICAgICAgICAgIHZhbHVlOiAnbm90LWVxdWFsJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogJ2NvbnRhaW5zJyxcbiAgICAgICAgICAgIHZhbHVlOiAnY29udGFpbnMnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiAnbm90IGNvbnRhaW5zJyxcbiAgICAgICAgICAgIHZhbHVlOiAnbm90LWNvbnRhaW5zJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogJ3N0YXJ0IHdpdGgnLFxuICAgICAgICAgICAgdmFsdWU6ICdzdGFydC13aXRoJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogJ2VuZCB3aXRoJyxcbiAgICAgICAgICAgIHZhbHVlOiAnZW5kLXdpdGgnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiAnaXMgZW1wdHknLFxuICAgICAgICAgICAgdmFsdWU6ICdpcy1lbXB0eSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6IGBpc24ndCBlbXB0eWAsXG4gICAgICAgICAgICB2YWx1ZTogJ2lzLW5vdC1lbXB0eSdcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcihjZHIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VhcmNoQ2hhbmdlT2JzZXJ2ZXI6IGFueTtcblxuICAgIG9uT3BlcmF0b3JDaGFuZ2UoZSkge1xuXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCgpO1xuXG4gICAgfVxuXG4gICAgLy8gVE9ETzogQ2hlY2sgdGhpcyBtZXRob2Qgd29yayBjb3JyZWN0bHlcbiAgICBvblRleHRDaGFuZ2UoZSkge1xuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoQ2hhbmdlT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hDaGFuZ2VPYnNlcnZlciA9IG9ic2VydmVyO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTAwKSlcbiAgICAgICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoYyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoQ2hhbmdlT2JzZXJ2ZXIubmV4dChlKTtcbiAgICB9XG5cbiAgICBnZXQgY29uZGl0aW9uKCk6IEFYRmlsdGVyQ29uZGl0aW9uIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5vcGVyYXRvcixcbiAgICAgICAgICAgIGZpZWxkOiB0aGlzLmZpZWxkLFxuICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMudmFsdWVcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,267 +0,0 @@
1
- import { Component, Input, ViewChild, ViewChildren, QueryList, ViewEncapsulation, ChangeDetectionStrategy, Output, EventEmitter, ChangeDetectorRef, ElementRef } from '@angular/core';
2
- import { AXFilterColumnComponent } from '../filter.class';
3
- import { AXHtmlUtil } from '@acorex/core';
4
- import { AXMenuComponent } from '../../menu/menu.component';
5
- import { AXTextBoxComponent } from '../../textbox/textbox.component';
6
- import { AXToastService } from '../../toast/toast.service';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../../toast/toast.service";
9
- import * as i2 from "@angular/common";
10
- import * as i3 from "../../panel-box/panel-box.component";
11
- import * as i4 from "../../checkbox/checkbox.component";
12
- import * as i5 from "../../textbox/textbox.component";
13
- import * as i6 from "../../validation/validation.component";
14
- import * as i7 from "../../validation/validation-rule.widget";
15
- import * as i8 from "../../toolbar/toolbar.component";
16
- import * as i9 from "../../toolbar/menu/toolbar-menu.component";
17
- import * as i10 from "../../toolbar/title/toolbar-title.component";
18
- import * as i11 from "../../button/button.component";
19
- import * as i12 from "../columns/filter-column-string.component";
20
- import * as i13 from "../columns/filter-column-selection.component";
21
- import * as i14 from "../columns/filter-column-date.component";
22
- import * as i15 from "../columns/filter-column-number.component";
23
- export class AXFilterPanelComponent {
24
- cdr;
25
- toast;
26
- panel;
27
- footer;
28
- savedList;
29
- body;
30
- menu;
31
- tbxName;
32
- filters;
33
- groups = [];
34
- predefinedFilters = [];
35
- mode = 'click';
36
- saveItems = [
37
- {
38
- name: 'saveAs',
39
- text: 'Save',
40
- startIcon: 'fas fa-save',
41
- items: [
42
- {
43
- name: 'save',
44
- text: 'Save current'
45
- },
46
- {
47
- name: 'saveAs',
48
- text: 'Save as New'
49
- }
50
- ]
51
- },
52
- ];
53
- filterChange = new EventEmitter();
54
- constructor(cdr, toast) {
55
- this.cdr = cdr;
56
- this.toast = toast;
57
- }
58
- apply() {
59
- this.filterChange.emit(this.value);
60
- this.updateMenu();
61
- }
62
- clear() {
63
- this.filters.forEach(e => {
64
- e.clear();
65
- });
66
- this.predefinedFilters.forEach(c => {
67
- c.selected = false;
68
- });
69
- this.filterChange.emit(this.value);
70
- this.updateMenu();
71
- }
72
- onValueChange(e) {
73
- if (this.mode === 'immediate') {
74
- setTimeout(() => {
75
- this.filterChange.emit(this.value);
76
- this.updateMenu();
77
- }, 50);
78
- }
79
- }
80
- onCheckValueChange(v, e) {
81
- if (!e.value && this.mode === 'immediate') {
82
- this.filters.forEach(c => {
83
- if (c.field === v.field) {
84
- c.clear();
85
- }
86
- });
87
- setTimeout(() => {
88
- this.filterChange.emit(this.value.filter(c => c.field !== v.field));
89
- this.updateMenu();
90
- }, 50);
91
- }
92
- }
93
- get value() {
94
- const con = [];
95
- if (this.filters) {
96
- this.filters.forEach(e => {
97
- if (e.active && e.condition && ((e.condition.value != null) || (e.condition.value == null && (e.condition.condition === 'is-empty' || e.condition.condition === 'is-not-empty')))) {
98
- con.push(e.condition);
99
- }
100
- });
101
- }
102
- return con;
103
- }
104
- load(filters) {
105
- this.filters.forEach(e => {
106
- e.clear();
107
- });
108
- this.cancelSaveFilter();
109
- filters.forEach(f => {
110
- const col = this.filters.find(c => c.field === f.field);
111
- if (col) {
112
- col.setFilter(f.value, f.condition);
113
- }
114
- });
115
- this.filterChange.emit(this.value);
116
- this.updateMenu();
117
- }
118
- ngAfterViewInit() {
119
- const footer = this.panel.nativeElement.querySelector('.footer');
120
- if (!footer) {
121
- this.body.nativeElement.style.height = 'calc(100% - 110px)';
122
- }
123
- setTimeout(() => {
124
- if (this.predefinedFilters) {
125
- this.setFilterByIndex(0);
126
- }
127
- else {
128
- this.clear();
129
- }
130
- }, 100);
131
- this.applySize();
132
- }
133
- setFilterByIndex(index) {
134
- const f = this.predefinedFilters[index];
135
- if (f) {
136
- this.setFilterByName(f.name);
137
- }
138
- }
139
- setFilterByName(name) {
140
- const f = this.predefinedFilters.find(c => c.name === name);
141
- if (f) {
142
- this.load(f.value);
143
- this.predefinedFilters.forEach(c => {
144
- c.selected = false;
145
- });
146
- f.selected = true;
147
- }
148
- }
149
- removeFilter(f) {
150
- this.predefinedFilters = this.predefinedFilters.filter(c => c.name != f.name);
151
- this.updateMenu();
152
- }
153
- get currentFilter() {
154
- return this.predefinedFilters.find(c => c.selected);
155
- }
156
- applySize() {
157
- let h = 0;
158
- h += this.footer.nativeElement.getBoundingClientRect().height;
159
- h += this.savedList.nativeElement.getBoundingClientRect().height;
160
- h += 10;
161
- this.body.nativeElement.style.height = `calc(100% - ${h}px)`;
162
- }
163
- // SAVE FILTERS
164
- updateMenu() {
165
- setTimeout(() => {
166
- this.saveItems[0].items[0].visible = this.currentFilter != null;
167
- this.saveItems[0].items[1].visible = this.currentFilter != null;
168
- // this.menu.update();
169
- }, 100);
170
- }
171
- applySaveFilter() {
172
- const f = this.currentFilter;
173
- if (f) {
174
- // TODO
175
- // this.tbxName.validate().then(c => {
176
- // if (c.result) {
177
- // f.value = this.value;
178
- // (f as any).isInEdit = false;
179
- // (f as any).isNew = false;
180
- // f.title = this.tbxName.value;
181
- // this.toast.success('Filter saved successfully.');
182
- // this.updateMenu();
183
- // }
184
- // });
185
- }
186
- }
187
- cancelSaveFilter() {
188
- const f = this.currentFilter;
189
- if (f) {
190
- if (f.isNew) {
191
- this.removeFilter(f);
192
- }
193
- else {
194
- f.isInEdit = false;
195
- }
196
- }
197
- this.updateMenu();
198
- }
199
- onMenuItemClick(e) {
200
- if (e.name === 'save') {
201
- this.applySaveFilter();
202
- }
203
- if (e.name === 'saveAs') {
204
- const f = {
205
- name: AXHtmlUtil.getUID(),
206
- title: '',
207
- value: this.value
208
- };
209
- this.predefinedFilters.push(f);
210
- f.isNew = true;
211
- this.setFilterByName(f.name);
212
- this.handleRenameClick(f);
213
- }
214
- }
215
- tbxNameOnKey(e) {
216
- if (e.type === 'keyup' && e.key === 'Enter') {
217
- this.applySaveFilter();
218
- }
219
- if (e.type === 'keyup' && e.key === 'Escape') {
220
- this.cancelSaveFilter();
221
- }
222
- }
223
- handleRenameClick(f) {
224
- f.isInEdit = true;
225
- this.cdr.detectChanges();
226
- setTimeout(() => {
227
- this.tbxName.value = f.title;
228
- this.tbxName.focus();
229
- }, 50);
230
- }
231
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXFilterPanelComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.AXToastService }], target: i0.ɵɵFactoryTarget.Component });
232
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.7", type: AXFilterPanelComponent, selector: "ax-filter-panel", inputs: { groups: "groups", predefinedFilters: "predefinedFilters", mode: "mode" }, outputs: { filterChange: "filterChange" }, viewQueries: [{ propertyName: "panel", first: true, predicate: ["panel"], descendants: true, static: true }, { propertyName: "footer", first: true, predicate: ["footer"], descendants: true, static: true }, { propertyName: "savedList", first: true, predicate: ["savedList"], descendants: true, static: true }, { propertyName: "body", first: true, predicate: ["body"], descendants: true, static: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true }, { propertyName: "tbxName", first: true, predicate: ["tbxName"], descendants: true, static: true }, { propertyName: "filters", predicate: AXFilterColumnComponent, descendants: true }], ngImport: i0, template: "<div class=\"ax-filter-panel\" #panel>\n <div class=\"saved-list\" #savedList>\n <ax-panel-box #fb>\n <ng-template #header>\n <div class=\"group-header\" (click)=\"fb.toggle()\">\n <ax-toolbar>\n <ax-toolbar-title>\n <div>\n <i class=\"far fa-filter\"></i>\n <span>SAVED FILTERS</span>\n </div>\n </ax-toolbar-title>\n <ax-toolbar-menu #menu [items]=\"saveItems\" (onItemClick)=\"onMenuItemClick($event)\">\n </ax-toolbar-menu>\n </ax-toolbar>\n </div>\n </ng-template>\n\n <div class=\"list\">\n <ng-container *ngIf=\"predefinedFilters && predefinedFilters.length; else emptyList\">\n <ul>\n <ng-container *ngFor=\"let f of predefinedFilters\">\n <ng-container *ngIf=\"!f.isInEdit; else editMode\">\n <li (click)=\"setFilterByName(f.name)\">\n <div class=\"item-line\" [class.selected]=\"f.selected\">\n <span class=\"title\"><i class=\"far fa-check\"></i> {{f.title}}</span>\n <span class=\"tools\"><i class=\"far fa-pen text-primary\" title=\"Rename\"\n (click)=\"handleRenameClick(f)\"></i>&nbsp;<i\n class=\"far fa-times text-danger\" title=\"Remove\"\n (click)=\"removeFilter(f)\"></i></span>\n </div>\n </li>\n </ng-container>\n <ng-template #editMode>\n <li>\n <ax-text-box #tbxName placeholder=\"Enter filter's title here\"\n (onKey)=\"tbxNameOnKey($event)\">\n <ax-button title=\"Save\" type=\"primary\" (onClick)=\"applySaveFilter()\">\n <i class=\"far fa-check\"></i>\n </ax-button>\n <ax-button title=\"Cancel\" type=\"danger\" (onClick)=\"cancelSaveFilter()\">\n <i class=\"far fa-times\"></i>\n </ax-button>\n <ax-validation>\n <ax-validation-rule type=\"required\" message=\"this field is required\">\n </ax-validation-rule>\n </ax-validation>\n </ax-text-box>\n </li>\n </ng-template>\n </ng-container>\n </ul>\n </ng-container>\n <ng-template #emptyList>\n <div class=\"empty-list\">\n Empty\n </div>\n </ng-template>\n </div>\n </ax-panel-box>\n </div>\n <div class=\"body\" #body>\n <ng-container *ngFor=\"let g of groups\">\n <ax-panel-box #fb>\n <ng-template #header>\n <div class=\"group-header\" *ngIf=\"g.caption\" (click)=\"fb.toggle()\">\n <i\n [ngClass]=\"{ 'far fa-minus-square' : !fb.collapsed ,'fas fa-plus-square' : fb.collapsed }\"></i>\n <span>{{g.caption}}</span>\n </div>\n </ng-template>\n <ng-container *ngFor=\"let c of g.columns\">\n <div class=\"ax-filter-item-header\" [style.margin-bottom.px]=\"c.active ? 0 : 2\">\n <ax-check-box (onValueChanged)=\"onCheckValueChange(c,$event)\" [label]=\"c.caption\"\n [(value)]=\"c.active\">\n </ax-check-box>\n </div>\n <div [hidden]=\"!c.active\">\n <ng-container [ngSwitch]=\"c.type\">\n <ng-container *ngSwitchCase=\"'selection'\">\n <ax-filter-column-selection (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\" [mode]=\"c.options.mode\" [items]=\"c.options.items\"\n [dataType]=\"c.options.dataType\">\n </ax-filter-column-selection>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <ax-filter-column-date (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\">\n </ax-filter-column-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <ax-filter-column-number (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\">\n </ax-filter-column-number>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ax-filter-column-string (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\">\n </ax-filter-column-string>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ax-panel-box>\n </ng-container>\n </div>\n\n <div *ngIf=\"mode=='click'\" class=\"footer\" #footer>\n <div class=\"filter-panel\">\n <ax-button (onClick)=\"apply()\" type=\"success\" size=\"sm\">\n <i class=\"far fa-filter\"></i>\n Apply Filter\n </ax-button>\n <ax-button (onClick)=\"clear();\" type=\"light \" size=\"sm\">\n <i class=\"far fa-eraser\"></i>\n Clear\n </ax-button>\n </div>\n </div>\n</div>", styles: [".ax-filter-panel{padding:2px;position:relative;height:100%;font-size:var(--font-md-size)}.ax-filter-panel .empty-list{text-align:center;padding:var(--sp-sm-size);color:var(--gray)}.ax-filter-panel .saved-list{border-bottom:1px solid var(--border-color)}.ax-filter-panel .saved-list .list ul{list-style-type:none;display:flex;flex-direction:column;padding:0;margin-bottom:var(--sp-md-size)}.ax-filter-panel .saved-list .list ul li .item-line{cursor:pointer;display:flex;flex-direction:row;justify-content:space-between}.ax-filter-panel .saved-list .list ul li .item-line .title i{opacity:.1}.ax-filter-panel .saved-list .list ul li .item-line .tools{display:inline}.ax-filter-panel .saved-list .list ul li .item-line .tools i{opacity:.2;cursor:pointer}.ax-filter-panel .saved-list .list ul li .item-line .tools i:hover{opacity:1}.ax-filter-panel .saved-list .list ul li .item-line.selected{font-weight:700}.ax-filter-panel .saved-list .list ul li .item-line.selected .title i{opacity:1}.ax-filter-panel .body{overflow-y:auto;overflow-x:hidden;height:calc(100% - 150px)}.ax-filter-panel .body .form-inline{justify-content:space-between}.ax-filter-panel .group-header{background:var(--white-color);display:flex;align-items:center;padding:var(--sp-sm-size) var(--sp-md-size);border-bottom:1px solid var(--border-color);background:var(--gray-dark-color);color:var(--gray-dark)}.ax-filter-panel .group-header i{margin-right:var(--sp-sm-size)}.ax-filter-panel .ax-filter-item-header{height:var(--el-md-size);display:flex;align-items:center}.ax-filter-panel .footer{width:100%;position:absolute;background-color:var(--white-color);bottom:0;padding:var(--sp-sm-size);border-top:1px solid var(--border-color)}.ax-filter-panel .footer .filter-panel{display:flex;align-items:center}.ax-filter-panel .footer .filter-panel ax-button{margin:0 2px}.ax-filter-panel .ax-filter-section{padding:var(--sp-md-size) var(--sp-lg-size);display:flex;justify-content:space-between;align-items:center}.ax-filter-panel .ax-filter-section>div{flex:1}.ax-filter-panel .ax-filter-section-value{padding:0px var(--sp-md-size) var(--sp-md-size) var(--sp-md-size);display:flex;justify-content:space-between;align-items:center}.ax-filter-panel .ax-filter-section-value>*{margin:0 3px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i3.AXPanelBoxComponent, selector: "ax-panel-box", inputs: ["size", "type", "caption", "collapsed", "allowCollapse"], outputs: ["collapsedChange"] }, { kind: "component", type: i4.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["readonly", "disabled", "size", "label", "tabIndex", "indeterminate", "useTreeView", "value"], outputs: ["onValueChanged", "valueChange", "onClick"] }, { kind: "component", type: i5.AXTextBoxComponent, selector: "ax-text-box", inputs: ["mask", "showMask", "type", "maxLength", "maskGuid", "maskPlaceholder", "maskKeepCharPositions"] }, { kind: "component", type: i6.AXValidationComponent, selector: "ax-validation", inputs: ["rules", "validateOn"], outputs: ["rulesChange", "showMessage"] }, { kind: "component", type: i7.AXValidationRuleComponent, selector: "ax-validation-rule", inputs: ["type", "message", "value", "enabled", "operation"] }, { kind: "component", type: i8.AXToolbarComponent, selector: "ax-toolbar" }, { kind: "component", type: i9.AXToolbarMenuComponent, selector: "ax-toolbar-menu", inputs: ["menuTemplate", "floatPlacemnet", "selection", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i10.AXToolbarTitleComponent, selector: "ax-toolbar-title", inputs: ["text"] }, { kind: "component", type: i11.AXButtonComponent, selector: "ax-button", inputs: ["type", "icon", "submitBehavior", "cancelBehavior", "block", "loading", "selected"] }, { kind: "component", type: i12.AXFilterColumnStringComponent, selector: "ax-filter-column-string" }, { kind: "component", type: i13.AXFilterColumnSelectionComponent, selector: "ax-filter-column-selection", inputs: ["items", "mode", "dataType"] }, { kind: "component", type: i14.AXFilterColumnDateComponent, selector: "ax-filter-column-date" }, { kind: "component", type: i15.AXFilterColumnNumberComponent, selector: "ax-filter-column-number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
233
- }
234
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXFilterPanelComponent, decorators: [{
235
- type: Component,
236
- args: [{ selector: 'ax-filter-panel', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-filter-panel\" #panel>\n <div class=\"saved-list\" #savedList>\n <ax-panel-box #fb>\n <ng-template #header>\n <div class=\"group-header\" (click)=\"fb.toggle()\">\n <ax-toolbar>\n <ax-toolbar-title>\n <div>\n <i class=\"far fa-filter\"></i>\n <span>SAVED FILTERS</span>\n </div>\n </ax-toolbar-title>\n <ax-toolbar-menu #menu [items]=\"saveItems\" (onItemClick)=\"onMenuItemClick($event)\">\n </ax-toolbar-menu>\n </ax-toolbar>\n </div>\n </ng-template>\n\n <div class=\"list\">\n <ng-container *ngIf=\"predefinedFilters && predefinedFilters.length; else emptyList\">\n <ul>\n <ng-container *ngFor=\"let f of predefinedFilters\">\n <ng-container *ngIf=\"!f.isInEdit; else editMode\">\n <li (click)=\"setFilterByName(f.name)\">\n <div class=\"item-line\" [class.selected]=\"f.selected\">\n <span class=\"title\"><i class=\"far fa-check\"></i> {{f.title}}</span>\n <span class=\"tools\"><i class=\"far fa-pen text-primary\" title=\"Rename\"\n (click)=\"handleRenameClick(f)\"></i>&nbsp;<i\n class=\"far fa-times text-danger\" title=\"Remove\"\n (click)=\"removeFilter(f)\"></i></span>\n </div>\n </li>\n </ng-container>\n <ng-template #editMode>\n <li>\n <ax-text-box #tbxName placeholder=\"Enter filter's title here\"\n (onKey)=\"tbxNameOnKey($event)\">\n <ax-button title=\"Save\" type=\"primary\" (onClick)=\"applySaveFilter()\">\n <i class=\"far fa-check\"></i>\n </ax-button>\n <ax-button title=\"Cancel\" type=\"danger\" (onClick)=\"cancelSaveFilter()\">\n <i class=\"far fa-times\"></i>\n </ax-button>\n <ax-validation>\n <ax-validation-rule type=\"required\" message=\"this field is required\">\n </ax-validation-rule>\n </ax-validation>\n </ax-text-box>\n </li>\n </ng-template>\n </ng-container>\n </ul>\n </ng-container>\n <ng-template #emptyList>\n <div class=\"empty-list\">\n Empty\n </div>\n </ng-template>\n </div>\n </ax-panel-box>\n </div>\n <div class=\"body\" #body>\n <ng-container *ngFor=\"let g of groups\">\n <ax-panel-box #fb>\n <ng-template #header>\n <div class=\"group-header\" *ngIf=\"g.caption\" (click)=\"fb.toggle()\">\n <i\n [ngClass]=\"{ 'far fa-minus-square' : !fb.collapsed ,'fas fa-plus-square' : fb.collapsed }\"></i>\n <span>{{g.caption}}</span>\n </div>\n </ng-template>\n <ng-container *ngFor=\"let c of g.columns\">\n <div class=\"ax-filter-item-header\" [style.margin-bottom.px]=\"c.active ? 0 : 2\">\n <ax-check-box (onValueChanged)=\"onCheckValueChange(c,$event)\" [label]=\"c.caption\"\n [(value)]=\"c.active\">\n </ax-check-box>\n </div>\n <div [hidden]=\"!c.active\">\n <ng-container [ngSwitch]=\"c.type\">\n <ng-container *ngSwitchCase=\"'selection'\">\n <ax-filter-column-selection (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\" [mode]=\"c.options.mode\" [items]=\"c.options.items\"\n [dataType]=\"c.options.dataType\">\n </ax-filter-column-selection>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <ax-filter-column-date (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\">\n </ax-filter-column-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <ax-filter-column-number (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\">\n </ax-filter-column-number>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ax-filter-column-string (valueChange)=\"onValueChange($event)\" [field]=\"c.field\"\n [(active)]=\"c.active\">\n </ax-filter-column-string>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ax-panel-box>\n </ng-container>\n </div>\n\n <div *ngIf=\"mode=='click'\" class=\"footer\" #footer>\n <div class=\"filter-panel\">\n <ax-button (onClick)=\"apply()\" type=\"success\" size=\"sm\">\n <i class=\"far fa-filter\"></i>\n Apply Filter\n </ax-button>\n <ax-button (onClick)=\"clear();\" type=\"light \" size=\"sm\">\n <i class=\"far fa-eraser\"></i>\n Clear\n </ax-button>\n </div>\n </div>\n</div>", styles: [".ax-filter-panel{padding:2px;position:relative;height:100%;font-size:var(--font-md-size)}.ax-filter-panel .empty-list{text-align:center;padding:var(--sp-sm-size);color:var(--gray)}.ax-filter-panel .saved-list{border-bottom:1px solid var(--border-color)}.ax-filter-panel .saved-list .list ul{list-style-type:none;display:flex;flex-direction:column;padding:0;margin-bottom:var(--sp-md-size)}.ax-filter-panel .saved-list .list ul li .item-line{cursor:pointer;display:flex;flex-direction:row;justify-content:space-between}.ax-filter-panel .saved-list .list ul li .item-line .title i{opacity:.1}.ax-filter-panel .saved-list .list ul li .item-line .tools{display:inline}.ax-filter-panel .saved-list .list ul li .item-line .tools i{opacity:.2;cursor:pointer}.ax-filter-panel .saved-list .list ul li .item-line .tools i:hover{opacity:1}.ax-filter-panel .saved-list .list ul li .item-line.selected{font-weight:700}.ax-filter-panel .saved-list .list ul li .item-line.selected .title i{opacity:1}.ax-filter-panel .body{overflow-y:auto;overflow-x:hidden;height:calc(100% - 150px)}.ax-filter-panel .body .form-inline{justify-content:space-between}.ax-filter-panel .group-header{background:var(--white-color);display:flex;align-items:center;padding:var(--sp-sm-size) var(--sp-md-size);border-bottom:1px solid var(--border-color);background:var(--gray-dark-color);color:var(--gray-dark)}.ax-filter-panel .group-header i{margin-right:var(--sp-sm-size)}.ax-filter-panel .ax-filter-item-header{height:var(--el-md-size);display:flex;align-items:center}.ax-filter-panel .footer{width:100%;position:absolute;background-color:var(--white-color);bottom:0;padding:var(--sp-sm-size);border-top:1px solid var(--border-color)}.ax-filter-panel .footer .filter-panel{display:flex;align-items:center}.ax-filter-panel .footer .filter-panel ax-button{margin:0 2px}.ax-filter-panel .ax-filter-section{padding:var(--sp-md-size) var(--sp-lg-size);display:flex;justify-content:space-between;align-items:center}.ax-filter-panel .ax-filter-section>div{flex:1}.ax-filter-panel .ax-filter-section-value{padding:0px var(--sp-md-size) var(--sp-md-size) var(--sp-md-size);display:flex;justify-content:space-between;align-items:center}.ax-filter-panel .ax-filter-section-value>*{margin:0 3px}\n"] }]
237
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.AXToastService }], propDecorators: { panel: [{
238
- type: ViewChild,
239
- args: ['panel', { static: true }]
240
- }], footer: [{
241
- type: ViewChild,
242
- args: ['footer', { static: true }]
243
- }], savedList: [{
244
- type: ViewChild,
245
- args: ['savedList', { static: true }]
246
- }], body: [{
247
- type: ViewChild,
248
- args: ['body', { static: true }]
249
- }], menu: [{
250
- type: ViewChild,
251
- args: ['menu', { static: false }]
252
- }], tbxName: [{
253
- type: ViewChild,
254
- args: ['tbxName', { static: true }]
255
- }], filters: [{
256
- type: ViewChildren,
257
- args: [AXFilterColumnComponent]
258
- }], groups: [{
259
- type: Input
260
- }], predefinedFilters: [{
261
- type: Input
262
- }], mode: [{
263
- type: Input
264
- }], filterChange: [{
265
- type: Output
266
- }] } });
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2RhdGEtZmlsdGVyL2ZpbHRlci1wYW5lbC9maWx0ZXItcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZGF0YS1maWx0ZXIvZmlsdGVyLXBhbmVsL2ZpbHRlci1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDeE0sT0FBTyxFQUF1Qix1QkFBdUIsRUFBeUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN0SCxPQUFPLEVBQWMsVUFBVSxFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQWEzRCxNQUFNLE9BQU8sc0JBQXNCO0lBMENYO0lBQWdDO0lBeENkLEtBQUssQ0FBNkI7SUFDakMsTUFBTSxDQUE2QjtJQUNoQyxTQUFTLENBQTZCO0lBQzNDLElBQUksQ0FBNkI7SUFDaEMsSUFBSSxDQUFrQjtJQUNwQixPQUFPLENBQXFCO0lBRTdCLE9BQU8sQ0FBcUM7SUFHbkYsTUFBTSxHQUEwQixFQUFFLENBQUM7SUFHbkMsaUJBQWlCLEdBQXlCLEVBQUUsQ0FBQztJQUc3QyxJQUFJ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Q0ssU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNILElBQUk7c0JBQXhDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRyxJQUFJO3NCQUF6QyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0ksT0FBTztzQkFBOUMsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVDLE9BQU87c0JBQTdDLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUdyQyxNQUFNO3NCQURMLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkF1Qk4sWUFBWTtzQkFEWCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRmlsdGVyQ29sdW1uR3JvdXAsIEFYRmlsdGVyQ29sdW1uQ29tcG9uZW50LCBBWEZpbHRlckNvbmRpdGlvbiwgQVhGaWx0ZXJQcmVkZWZpbmVkIH0gZnJvbSAnLi4vZmlsdGVyLmNsYXNzJztcbmltcG9ydCB7IEFYTWVudUl0ZW0sIEFYSHRtbFV0aWwsIEFYS2V5Ym9hcmRFdmVudCB9IGZyb20gJ0BhY29yZXgvY29yZSc7XG5pbXBvcnQgeyBBWE1lbnVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tZW51L21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEFYVGV4dEJveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RleHRib3gvdGV4dGJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi90b2FzdC90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYVmFsdWVFdmVudCB9IGZyb20gJy4uLy4uL2Jhc2UvZXZlbnRzLmNsYXNzJztcblxuXG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheC1maWx0ZXItcGFuZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbHRlci1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQVhGaWx0ZXJQYW5lbENvbXBvbmVudCB7XG5cbiAgICBAVmlld0NoaWxkKCdwYW5lbCcsIHsgc3RhdGljOiB0cnVlIH0pIHBhbmVsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdmb290ZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBmb290ZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ3NhdmVkTGlzdCcsIHsgc3RhdGljOiB0cnVlIH0pIHNhdmVkTGlzdDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnYm9keScsIHsgc3RhdGljOiB0cnVlIH0pIGJvZHk6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ21lbnUnLCB7IHN0YXRpYzogZmFsc2UgfSkgbWVudTogQVhNZW51Q29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3RieE5hbWUnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YnhOYW1lOiBBWFRleHRCb3hDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkcmVuKEFYRmlsdGVyQ29sdW1uQ29tcG9uZW50KSBmaWx0ZXJzOiBRdWVyeUxpc3Q8QVhGaWx0ZXJDb2x1bW5Db21wb25lbnQ+O1xuXG4gICAgQElucHV0KClcbiAgICBncm91cHM6IEFYRmlsdGVyQ29sdW1uR3JvdXBbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwcmVkZWZpbmVkRmlsdGVyczogQVhGaWx0ZXJQcmVkZWZpbmVkW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgbW9kZTogJ2NsaWNrJyB8ICdpbW1lZGlhdGUnID0gJ2NsaWNrJztcblxuICAgIHNhdmVJdGVtczogQVhNZW51SXRlbVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnc2F2ZUFzJyxcbiAgICAgICAgICAgIHRleHQ6ICdTYXZlJyxcbiAgICAgICAgICAgIHN0YXJ0SWNvbjogJ2ZhcyBmYS1zYXZlJyxcbiAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnc2F2ZScsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICdTYXZlIGN1cnJlbnQnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdzYXZlQXMnLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnU2F2ZSBhcyBOZXcnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuXG4gICAgXTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGZpbHRlckNoYW5nZTogRXZlbnRFbWl0dGVyPEFYRmlsdGVyQ29uZGl0aW9uW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEZpbHRlckNvbmRpdGlvbltdPigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRvYXN0OiBBWFRvYXN0U2VydmljZSkgeyB9XG5cbiAgICBhcHBseSgpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy51cGRhdGVNZW51KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKCkge1xuICAgICAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaChlID0+IHtcbiAgICAgICAgICAgIGUuY2xlYXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucHJlZGVmaW5lZEZpbHRlcnMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgICAgIChjIGFzIGFueSkuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlTWVudSgpO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UoZSkge1xuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnaW1tZWRpYXRlJykge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1lbnUoKTtcbiAgICAgICAgICAgIH0sIDUwKTtcblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25DaGVja1ZhbHVlQ2hhbmdlKHYsIGU6IEFYVmFsdWVFdmVudDxib29sZWFuPikge1xuXG5cbiAgICAgICAgaWYgKCFlLnZhbHVlICYmIHRoaXMubW9kZSA9PT0gJ2ltbWVkaWF0ZScpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKGMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjLmZpZWxkID09PSB2LmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIGMuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlLmZpbHRlcihjID0+IGMuZmllbGQgIT09IHYuZmllbGQpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1lbnUoKTtcbiAgICAgICAgICAgIH0sIDUwKTtcblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHZhbHVlKCk6IEFYRmlsdGVyQ29uZGl0aW9uW10ge1xuICAgICAgICBjb25zdCBjb246IEFYRmlsdGVyQ29uZGl0aW9uW10gPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVycykge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJzLmZvckVhY2goZSA9PiB7XG5cbiAgICAgICAgICAgICAgICBpZiAoZS5hY3RpdmUgJiYgZS5jb25kaXRpb24gJiYgKChlLmNvbmRpdGlvbi52YWx1ZSAhPSBudWxsKSB8fCAoZS5jb25kaXRpb24udmFsdWUgPT0gbnVsbCAmJiAoZS5jb25kaXRpb24uY29uZGl0aW9uID09PSAnaXMtZW1wdHknIHx8IGUuY29uZGl0aW9uLmNvbmRpdGlvbiA9PT0gJ2lzLW5vdC1lbXB0eScpKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uLnB1c2goZS5jb25kaXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb247XG4gICAgfVxuXG5cblxuICAgIHB1YmxpYyBsb2FkKGZpbHRlcnM6IEFYRmlsdGVyQ29uZGl0aW9uW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzLmZvckVhY2goZSA9PiB7XG4gICAgICAgICAgICBlLmNsZWFyKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNhbmNlbFNhdmVGaWx0ZXIoKTtcbiAgICAgICAgZmlsdGVycy5mb3JFYWNoKGYgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29sID0gdGhpcy5maWx0ZXJzLmZpbmQoYyA9PiBjLmZpZWxkID09PSBmLmZpZWxkKTtcbiAgICAgICAgICAgIGlmIChjb2wpIHtcbiAgICAgICAgICAgICAgICBjb2wuc2V0RmlsdGVyKGYudmFsdWUsIGYuY29uZGl0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy51cGRhdGVNZW51KCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb290ZXIgPSB0aGlzLnBhbmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmZvb3RlcicpO1xuICAgICAgICBpZiAoIWZvb3Rlcikge1xuICAgICAgICAgICAgdGhpcy5ib2R5Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJ2NhbGMoMTAwJSAtIDExMHB4KSc7XG4gICAgICAgIH1cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmVkZWZpbmVkRmlsdGVycykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyQnlJbmRleCgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgdGhpcy5hcHBseVNpemUoKTtcbiAgICB9XG5cbiAgICBzZXRGaWx0ZXJCeUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZiA9IHRoaXMucHJlZGVmaW5lZEZpbHRlcnNbaW5kZXhdO1xuICAgICAgICBpZiAoZikge1xuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJCeU5hbWUoZi5uYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldEZpbHRlckJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZiA9IHRoaXMucHJlZGVmaW5lZEZpbHRlcnMuZmluZChjID0+IGMubmFtZSA9PT0gbmFtZSk7XG4gICAgICAgIGlmIChmKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWQoZi52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnByZWRlZmluZWRGaWx0ZXJzLmZvckVhY2goYyA9PiB7XG4gICAgICAgICAgICAgICAgKGMgYXMgYW55KS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAoZiBhcyBhbnkpLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbiAgICByZW1vdmVGaWx0ZXIoZjogQVhGaWx0ZXJQcmVkZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucHJlZGVmaW5lZEZpbHRlcnMgPSB0aGlzLnByZWRlZmluZWRGaWx0ZXJzLmZpbHRlcihjID0+IGMubmFtZSAhPSBmLm5hbWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZU1lbnUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFxuICAgICAgICBjdXJyZW50RmlsdGVyKCk6IEFYRmlsdGVyUHJlZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZWRlZmluZWRGaWx0ZXJzLmZpbmQoYyA9PiAoYyBhcyBhbnkpLnNlbGVjdGVkKTtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgYXBwbHlTaXplKCkge1xuICAgICAgICBsZXQgaCA9IDA7XG4gICAgICAgIGggKz0gdGhpcy5mb290ZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgIGggKz0gdGhpcy5zYXZlZExpc3QubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgIGggKz0gMTA7XG4gICAgICAgIHRoaXMuYm9keS5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGBjYWxjKDEwMCUgLSAke2h9cHgpYDtcbiAgICB9XG5cbiAgICAvLyBTQVZFIEZJTFRFUlNcblxuICAgIHByaXZhdGUgdXBkYXRlTWVudSgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNhdmVJdGVtc1swXS5pdGVtc1swXS52aXNpYmxlID0gdGhpcy5jdXJyZW50RmlsdGVyICE9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnNhdmVJdGVtc1swXS5pdGVtc1sxXS52aXNpYmxlID0gdGhpcy5jdXJyZW50RmlsdGVyICE9IG51bGw7XG4gICAgICAgICAgICAvLyB0aGlzLm1lbnUudXBkYXRlKCk7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgfVxuXG4gICAgYXBwbHlTYXZlRmlsdGVyKCkge1xuICAgICAgICBjb25zdCBmID0gdGhpcy5jdXJyZW50RmlsdGVyO1xuICAgICAgICBpZiAoZikge1xuICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgLy8gdGhpcy50YnhOYW1lLnZhbGlkYXRlKCkudGhlbihjID0+IHtcbiAgICAgICAgICAgIC8vICAgICBpZiAoYy5yZXN1bHQpIHtcbiAgICAgICAgICAgIC8vICAgICAgICAgZi52YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgICAgICAvLyAgICAgICAgIChmIGFzIGFueSkuaXNJbkVkaXQgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vICAgICAgICAgKGYgYXMgYW55KS5pc05ldyA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gICAgICAgICBmLnRpdGxlID0gdGhpcy50YnhOYW1lLnZhbHVlO1xuICAgICAgICAgICAgLy8gICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoJ0ZpbHRlciBzYXZlZCBzdWNjZXNzZnVsbHkuJyk7XG4gICAgICAgICAgICAvLyAgICAgICAgIHRoaXMudXBkYXRlTWVudSgpO1xuICAgICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAgIC8vIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FuY2VsU2F2ZUZpbHRlcigpIHtcbiAgICAgICAgY29uc3QgZiA9IHRoaXMuY3VycmVudEZpbHRlcjtcbiAgICAgICAgaWYgKGYpIHtcbiAgICAgICAgICAgIGlmICgoZiBhcyBhbnkpLmlzTmV3KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWx0ZXIoZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAoZiBhcyBhbnkpLmlzSW5FZGl0ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVNZW51KCk7XG4gICAgfVxuXG4gICAgb25NZW51SXRlbUNsaWNrKGU6IEFYTWVudUl0ZW0pIHtcbiAgICAgICAgaWYgKGUubmFtZSA9PT0gJ3NhdmUnKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5U2F2ZUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlLm5hbWUgPT09ICdzYXZlQXMnKSB7XG4gICAgICAgICAgICBjb25zdCBmID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IEFYSHRtbFV0aWwuZ2V0VUlEKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5wcmVkZWZpbmVkRmlsdGVycy5wdXNoKGYpO1xuICAgICAgICAgICAgKGYgYXMgYW55KS5pc05ldyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNldEZpbHRlckJ5TmFtZShmLm5hbWUpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVSZW5hbWVDbGljayhmKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGJ4TmFtZU9uS2V5KGU6IEFYS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZS50eXBlID09PSAna2V5dXAnICYmIGUua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5U2F2ZUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlLnR5cGUgPT09ICdrZXl1cCcgJiYgZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbFNhdmVGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVJlbmFtZUNsaWNrKGY6IEFYRmlsdGVyUHJlZGVmaW5lZCkge1xuICAgICAgICAoZiBhcyBhbnkpLmlzSW5FZGl0ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGJ4TmFtZS52YWx1ZSA9IGYudGl0bGU7XG4gICAgICAgICAgICB0aGlzLnRieE5hbWUuZm9jdXMoKTtcbiAgICAgICAgfSwgNTApO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1maWx0ZXItcGFuZWxcIiAjcGFuZWw+XG4gICAgPGRpdiBjbGFzcz1cInNhdmVkLWxpc3RcIiAjc2F2ZWRMaXN0PlxuICAgICAgICA8YXgtcGFuZWwtYm94ICNmYj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1oZWFkZXJcIiAoY2xpY2spPVwiZmIudG9nZ2xlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LXRvb2xiYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtdG9vbGJhci10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1maWx0ZXJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlNBVkVEIEZJTFRFUlM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXRvb2xiYXItdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtdG9vbGJhci1tZW51ICNtZW51IFtpdGVtc109XCJzYXZlSXRlbXNcIiAob25JdGVtQ2xpY2spPVwib25NZW51SXRlbUNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtdG9vbGJhci1tZW51PlxuICAgICAgICAgICAgICAgICAgICA8L2F4LXRvb2xiYXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcmVkZWZpbmVkRmlsdGVycyAmJiBwcmVkZWZpbmVkRmlsdGVycy5sZW5ndGg7IGVsc2UgZW1wdHlMaXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGYgb2YgcHJlZGVmaW5lZEZpbHRlcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWYuaXNJbkVkaXQ7IGVsc2UgZWRpdE1vZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJzZXRGaWx0ZXJCeU5hbWUoZi5uYW1lKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tbGluZVwiIFtjbGFzcy5zZWxlY3RlZF09XCJmLnNlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPjxpIGNsYXNzPVwiZmFyIGZhLWNoZWNrXCI+PC9pPiB7e2YudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvb2xzXCI+PGkgY2xhc3M9XCJmYXIgZmEtcGVuIHRleHQtcHJpbWFyeVwiIHRpdGxlPVwiUmVuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVSZW5hbWVDbGljayhmKVwiPjwvaT4mbmJzcDs8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYXIgZmEtdGltZXMgdGV4dC1kYW5nZXJcIiB0aXRsZT1cIlJlbW92ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlsdGVyKGYpXCI+PC9pPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWRpdE1vZGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC10ZXh0LWJveCAjdGJ4TmFtZSBwbGFjZWhvbGRlcj1cIkVudGVyIGZpbHRlcidzIHRpdGxlIGhlcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbktleSk9XCJ0YnhOYW1lT25LZXkoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gdGl0bGU9XCJTYXZlXCIgdHlwZT1cInByaW1hcnlcIiAob25DbGljayk9XCJhcHBseVNhdmVGaWx0ZXIoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1jaGVja1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIHRpdGxlPVwiQ2FuY2VsXCIgdHlwZT1cImRhbmdlclwiIChvbkNsaWNrKT1cImNhbmNlbFNhdmVGaWx0ZXIoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS10aW1lc1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtdmFsaWRhdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZSB0eXBlPVwicmVxdWlyZWRcIiBtZXNzYWdlPVwidGhpcyBmaWVsZCBpcyByZXF1aXJlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXZhbGlkYXRpb24tcnVsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXZhbGlkYXRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5TGlzdD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9heC1wYW5lbC1ib3g+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJvZHlcIiAjYm9keT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZyBvZiBncm91cHNcIj5cbiAgICAgICAgICAgIDxheC1wYW5lbC1ib3ggI2ZiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAtaGVhZGVyXCIgKm5nSWY9XCJnLmNhcHRpb25cIiAoY2xpY2spPVwiZmIudG9nZ2xlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZmFyIGZhLW1pbnVzLXNxdWFyZScgOiAhZmIuY29sbGFwc2VkICwnZmFzIGZhLXBsdXMtc3F1YXJlJyA6IGZiLmNvbGxhcHNlZCB9XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tnLmNhcHRpb259fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjIG9mIGcuY29sdW1uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmlsdGVyLWl0ZW0taGVhZGVyXCIgW3N0eWxlLm1hcmdpbi1ib3R0b20ucHhdPVwiYy5hY3RpdmUgPyAwIDogMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWNoZWNrLWJveCAob25WYWx1ZUNoYW5nZWQpPVwib25DaGVja1ZhbHVlQ2hhbmdlKGMsJGV2ZW50KVwiIFtsYWJlbF09XCJjLmNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cImMuYWN0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCIhYy5hY3RpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImMudHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzZWxlY3Rpb24nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1maWx0ZXItY29sdW1uLXNlbGVjdGlvbiAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCIgW2ZpZWxkXT1cImMuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhhY3RpdmUpXT1cImMuYWN0aXZlXCIgW21vZGVdPVwiYy5vcHRpb25zLm1vZGVcIiBbaXRlbXNdPVwiYy5vcHRpb25zLml0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhVHlwZV09XCJjLm9wdGlvbnMuZGF0YVR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1maWx0ZXItY29sdW1uLXNlbGVjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWZpbHRlci1jb2x1bW4tZGF0ZSAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCIgW2ZpZWxkXT1cImMuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhhY3RpdmUpXT1cImMuYWN0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtZmlsdGVyLWNvbHVtbi1kYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1maWx0ZXItY29sdW1uLW51bWJlciAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCIgW2ZpZWxkXT1cImMuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhhY3RpdmUpXT1cImMuYWN0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtZmlsdGVyLWNvbHVtbi1udW1iZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtZmlsdGVyLWNvbHVtbi1zdHJpbmcgKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiIFtmaWVsZF09XCJjLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoYWN0aXZlKV09XCJjLmFjdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWZpbHRlci1jb2x1bW4tc3RyaW5nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9heC1wYW5lbC1ib3g+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cIm1vZGU9PSdjbGljaydcIiBjbGFzcz1cImZvb3RlclwiICNmb290ZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItcGFuZWxcIj5cbiAgICAgICAgICAgIDxheC1idXR0b24gKG9uQ2xpY2spPVwiYXBwbHkoKVwiIHR5cGU9XCJzdWNjZXNzXCIgc2l6ZT1cInNtXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtZmlsdGVyXCI+PC9pPlxuICAgICAgICAgICAgICAgIEFwcGx5IEZpbHRlclxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICA8YXgtYnV0dG9uIChvbkNsaWNrKT1cImNsZWFyKCk7XCIgdHlwZT1cImxpZ2h0IFwiIHNpemU9XCJzbVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWVyYXNlclwiPjwvaT5cbiAgICAgICAgICAgICAgICBDbGVhclxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19