@solidev/data 0.0.1-alpha.0

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 (167) hide show
  1. package/README.md +7 -0
  2. package/esm2020/lib/auth/auth-interceptor.service.mjs +90 -0
  3. package/esm2020/lib/auth/auth.service.mjs +125 -0
  4. package/esm2020/lib/auth/jwt.mjs +21 -0
  5. package/esm2020/lib/data/data-backend.mjs +106 -0
  6. package/esm2020/lib/data/data-collection.mjs +109 -0
  7. package/esm2020/lib/data/data-collection.mock.mjs +39 -0
  8. package/esm2020/lib/data/data-model.mjs +287 -0
  9. package/esm2020/lib/data/data-parameters.mjs +34 -0
  10. package/esm2020/lib/data/data-query.mjs +147 -0
  11. package/esm2020/lib/data/data-query.mock.mjs +46 -0
  12. package/esm2020/lib/data/fields/base.mjs +142 -0
  13. package/esm2020/lib/data/fields/boolean.mjs +38 -0
  14. package/esm2020/lib/data/fields/datetime.mjs +124 -0
  15. package/esm2020/lib/data/fields/index.mjs +7 -0
  16. package/esm2020/lib/data/fields/numbers.mjs +38 -0
  17. package/esm2020/lib/data/fields/primaryfield.mjs +9 -0
  18. package/esm2020/lib/data/fields/relations.mjs +53 -0
  19. package/esm2020/lib/data/fields/stringfields.mjs +71 -0
  20. package/esm2020/lib/dispedit/choice.pipe.mjs +39 -0
  21. package/esm2020/lib/dispedit/dispedit/dispedit.component.mjs +475 -0
  22. package/esm2020/lib/dispedit/dispedit/dispedit.constants.mjs +2 -0
  23. package/esm2020/lib/dispedit/factor.pipe.mjs +48 -0
  24. package/esm2020/lib/dispedit/factorc.pipe.mjs +50 -0
  25. package/esm2020/lib/dispedit/fkselect/fkselect.component.mjs +142 -0
  26. package/esm2020/lib/dispedit/flags/flags.component.mjs +140 -0
  27. package/esm2020/lib/dispedit/m2mselect/m2mselect.component.mjs +318 -0
  28. package/esm2020/lib/dispedit/richedit/richedit.component.mjs +94 -0
  29. package/esm2020/lib/dispedit/sdelete/sdelete.component.mjs +46 -0
  30. package/esm2020/lib/messages/message-zone/message-zone.component.mjs +57 -0
  31. package/esm2020/lib/messages/message.service.mjs +151 -0
  32. package/esm2020/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +34 -0
  33. package/esm2020/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +63 -0
  34. package/esm2020/lib/modellist/model-list-fields/model-list-fields.mjs +225 -0
  35. package/esm2020/lib/modellist/model-list-filters/filters/filtertypes.mjs +3 -0
  36. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +108 -0
  37. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.mjs +28 -0
  38. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +24 -0
  39. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.mjs +9 -0
  40. package/esm2020/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +40 -0
  41. package/esm2020/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.mjs +14 -0
  42. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +40 -0
  43. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.mjs +14 -0
  44. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +21 -0
  45. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.mjs +14 -0
  46. package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +21 -0
  47. package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.mjs +14 -0
  48. package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/adapters/ban.mjs +24 -0
  49. package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +63 -0
  50. package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.mjs +16 -0
  51. package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +46 -0
  52. package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.mjs +49 -0
  53. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +57 -0
  54. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +35 -0
  55. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +49 -0
  56. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +15 -0
  57. package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +40 -0
  58. package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.mjs +14 -0
  59. package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +21 -0
  60. package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.mjs +14 -0
  61. package/esm2020/lib/modellist/model-list-filters/model-list-filter.mjs +145 -0
  62. package/esm2020/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +50 -0
  63. package/esm2020/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +30 -0
  64. package/esm2020/lib/modellist/model-list-filters/model-list-filters.mjs +80 -0
  65. package/esm2020/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +70 -0
  66. package/esm2020/lib/modellist/model-list-paginator/model-list-paginator.mjs +47 -0
  67. package/esm2020/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +49 -0
  68. package/esm2020/lib/modellist/model-list-sorter/model-list-sorter.mjs +116 -0
  69. package/esm2020/lib/modellist/model-list.service.mjs +135 -0
  70. package/esm2020/lib/routing/breadcrumb/breadcrumb.component.mjs +142 -0
  71. package/esm2020/lib/routing/routing.mjs +57 -0
  72. package/esm2020/lib/uploader/index.mjs +6 -0
  73. package/esm2020/lib/uploader/interfaces.mjs +8 -0
  74. package/esm2020/lib/uploader/ng-file-drop.directive.mjs +81 -0
  75. package/esm2020/lib/uploader/ng-file-select.directive.mjs +51 -0
  76. package/esm2020/lib/uploader/ngx-uploader.class.mjs +308 -0
  77. package/esm2020/lib/uploader/ngx-uploader.module.mjs +17 -0
  78. package/esm2020/lib/utils/slugify.mjs +16 -0
  79. package/esm2020/lib/utils/tab-memory.service.mjs +71 -0
  80. package/esm2020/public-api.mjs +51 -0
  81. package/esm2020/solidev-data.mjs +5 -0
  82. package/fesm2015/solidev-data.mjs +5411 -0
  83. package/fesm2015/solidev-data.mjs.map +1 -0
  84. package/fesm2020/solidev-data.mjs +5358 -0
  85. package/fesm2020/solidev-data.mjs.map +1 -0
  86. package/index.d.ts +5 -0
  87. package/lib/auth/auth-interceptor.service.d.ts +17 -0
  88. package/lib/auth/auth.service.d.ts +43 -0
  89. package/lib/auth/jwt.d.ts +22 -0
  90. package/lib/data/data-backend.d.ts +47 -0
  91. package/lib/data/data-collection.d.ts +87 -0
  92. package/lib/data/data-collection.mock.d.ts +19 -0
  93. package/lib/data/data-model.d.ts +93 -0
  94. package/lib/data/data-parameters.d.ts +26 -0
  95. package/lib/data/data-query.d.ts +101 -0
  96. package/lib/data/data-query.mock.d.ts +25 -0
  97. package/lib/data/fields/base.d.ts +116 -0
  98. package/lib/data/fields/boolean.d.ts +9 -0
  99. package/lib/data/fields/datetime.d.ts +39 -0
  100. package/lib/data/fields/index.d.ts +6 -0
  101. package/lib/data/fields/numbers.d.ts +35 -0
  102. package/lib/data/fields/primaryfield.d.ts +8 -0
  103. package/lib/data/fields/relations.d.ts +45 -0
  104. package/lib/data/fields/stringfields.d.ts +50 -0
  105. package/lib/dispedit/choice.pipe.d.ts +8 -0
  106. package/lib/dispedit/dispedit/dispedit.component.d.ts +182 -0
  107. package/lib/dispedit/dispedit/dispedit.constants.d.ts +6 -0
  108. package/lib/dispedit/factor.pipe.d.ts +12 -0
  109. package/lib/dispedit/factorc.pipe.d.ts +11 -0
  110. package/lib/dispedit/fkselect/fkselect.component.d.ts +43 -0
  111. package/lib/dispedit/flags/flags.component.d.ts +40 -0
  112. package/lib/dispedit/m2mselect/m2mselect.component.d.ts +120 -0
  113. package/lib/dispedit/richedit/richedit.component.d.ts +31 -0
  114. package/lib/dispedit/sdelete/sdelete.component.d.ts +27 -0
  115. package/lib/messages/message-zone/message-zone.component.d.ts +14 -0
  116. package/lib/messages/message.service.d.ts +59 -0
  117. package/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.d.ts +15 -0
  118. package/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.d.ts +19 -0
  119. package/lib/modellist/model-list-fields/model-list-fields.d.ts +67 -0
  120. package/lib/modellist/model-list-filters/filters/filtertypes.d.ts +1 -0
  121. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.d.ts +30 -0
  122. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.d.ts +22 -0
  123. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.d.ts +10 -0
  124. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.d.ts +8 -0
  125. package/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.d.ts +15 -0
  126. package/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.d.ts +4 -0
  127. package/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.d.ts +15 -0
  128. package/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.d.ts +4 -0
  129. package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.d.ts +11 -0
  130. package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.d.ts +4 -0
  131. package/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.d.ts +11 -0
  132. package/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.d.ts +4 -0
  133. package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/adapters/ban.d.ts +35 -0
  134. package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.d.ts +25 -0
  135. package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.d.ts +18 -0
  136. package/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.d.ts +17 -0
  137. package/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.d.ts +19 -0
  138. package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.d.ts +17 -0
  139. package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.d.ts +16 -0
  140. package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.d.ts +17 -0
  141. package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.d.ts +6 -0
  142. package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.d.ts +16 -0
  143. package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.d.ts +4 -0
  144. package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.d.ts +11 -0
  145. package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.d.ts +4 -0
  146. package/lib/modellist/model-list-filters/model-list-filter.d.ts +52 -0
  147. package/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.d.ts +9 -0
  148. package/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.d.ts +13 -0
  149. package/lib/modellist/model-list-filters/model-list-filters.d.ts +15 -0
  150. package/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.d.ts +23 -0
  151. package/lib/modellist/model-list-paginator/model-list-paginator.d.ts +16 -0
  152. package/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.d.ts +22 -0
  153. package/lib/modellist/model-list-sorter/model-list-sorter.d.ts +61 -0
  154. package/lib/modellist/model-list.service.d.ts +83 -0
  155. package/lib/routing/breadcrumb/breadcrumb.component.d.ts +42 -0
  156. package/lib/routing/routing.d.ts +64 -0
  157. package/lib/uploader/index.d.ts +5 -0
  158. package/lib/uploader/interfaces.d.ts +67 -0
  159. package/lib/uploader/ng-file-drop.directive.d.ts +22 -0
  160. package/lib/uploader/ng-file-select.directive.d.ts +19 -0
  161. package/lib/uploader/ngx-uploader.class.d.ts +35 -0
  162. package/lib/uploader/ngx-uploader.module.d.ts +8 -0
  163. package/lib/utils/slugify.d.ts +1 -0
  164. package/lib/utils/tab-memory.service.d.ts +29 -0
  165. package/package.json +35 -0
  166. package/public-api.d.ts +47 -0
  167. package/src/lib/data/README.md +35 -0
@@ -0,0 +1,50 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ModelListTextFilterComponent } from '../filters/model-list-text-filter/model-list-text-filter.component';
4
+ import { ModelListAutocompleteFilterComponent } from '../filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component';
5
+ import { ModelListAutocompleteMultiFilterComponent } from '../filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component';
6
+ import { ModelListDatetimeFilterComponent } from '../filters/model-list-datetime-filter/model-list-datetime-filter.component';
7
+ import { ModelListDatetimeRangeFilterComponent } from '../filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component';
8
+ import { ModelListFlagsFilterComponent } from '../filters/model-list-flags-filter/model-list-flags-filter.component';
9
+ import { ModelListGeodistanceFilterComponent } from '../filters/model-list-geodistance-filter/model-list-geodistance-filter.component';
10
+ import { ModelListSelectFilterComponent } from '../filters/model-list-select-filter/model-list-select-filter.component';
11
+ import { ModelListSelectMultiFilterComponent } from '../filters/model-list-select-multi-filter/model-list-select-multi-filter.component';
12
+ import { ModelListTreeFilterComponent } from '../filters/model-list-tree-filter/model-list-tree-filter.component';
13
+ import { ModelListNumberFilterComponent } from '../filters/model-list-number-filter/model-list-number-filter.component';
14
+ import { ModelListDateFilterComponent } from '../filters/model-list-date-filter/model-list-date-filter.component';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "@angular/common";
17
+ // FIXME: register filter components and load them dynamically to allow user defined filters
18
+ export class ModelListFiltersComponent {
19
+ constructor() {
20
+ this.containerClasses = '';
21
+ this.itemClasses = '';
22
+ }
23
+ }
24
+ ModelListFiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: ModelListFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
+ ModelListFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: ModelListFiltersComponent, isStandalone: true, selector: "data-model-list-filters", inputs: { list: "list", containerClasses: "containerClasses", itemClasses: "itemClasses" }, ngImport: i0, template: "\n<div [ngClass]=\"containerClasses\">\n <ng-container *ngFor=\"let f of list.filters.enabled|async\">\n <ng-container [ngSwitch]=\"f.type\">\n <data-model-list-autocomplete-filter *ngSwitchCase=\"'autocomplete'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-autocomplete-filter>\n <data-model-list-autocomplete-multi-filter *ngSwitchCase=\"'autocompletemulti'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-autocomplete-multi-filter>\n <data-model-list-datetime-filter *ngSwitchCase=\"'datetime'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-datetime-filter>\n <data-model-list-date-filter *ngSwitchCase=\"'date'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-date-filter>\n <data-model-list-datetime-range-filter *ngSwitchCase=\"'datetimerange'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-datetime-range-filter>\n <data-model-list-flags-filter *ngSwitchCase=\"'flags'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-flags-filter>\n <data-model-list-geodistance-filter *ngSwitchCase=\"'geodistance'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-geodistance-filter>\n <data-model-list-number-filter *ngSwitchCase=\"'number'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-number-filter>\n <data-model-list-select-filter *ngSwitchCase=\"'select'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-select-filter>\n <data-model-list-select-multi-filter *ngSwitchCase=\"'selectmulti'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-select-multi-filter>\n <data-model-list-text-filter *ngSwitchCase=\"'text'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-text-filter>\n <data-model-list-tree-filter *ngSwitchCase=\"'tree'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-tree-filter>\n </ng-container>\n </ng-container>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: ModelListTextFilterComponent, selector: "data-model-list-text-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListNumberFilterComponent, selector: "data-model-list-number-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListAutocompleteFilterComponent, selector: "data-model-list-autocomplete-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListAutocompleteMultiFilterComponent, selector: "data-model-list-autocomplete-multi-filter", inputs: ["filter"] }, { kind: "component", type: ModelListDatetimeFilterComponent, selector: "data-model-list-datetime-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListDateFilterComponent, selector: "data-model-list-date-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListDatetimeRangeFilterComponent, selector: "data-model-list-datetime-range-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListFlagsFilterComponent, selector: "data-model-list-flags-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListGeodistanceFilterComponent, selector: "data-model-list-geodistance-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListSelectFilterComponent, selector: "data-model-list-select-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListSelectMultiFilterComponent, selector: "data-model-list-select-multi-filter", inputs: ["list", "filter", "classes"] }, { kind: "component", type: ModelListTreeFilterComponent, selector: "data-model-list-tree-filter", inputs: ["list", "filter", "classes"] }] });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: ModelListFiltersComponent, decorators: [{
27
+ type: Component,
28
+ args: [{ selector: 'data-model-list-filters', standalone: true, imports: [
29
+ CommonModule,
30
+ ModelListTextFilterComponent,
31
+ ModelListNumberFilterComponent,
32
+ ModelListAutocompleteFilterComponent,
33
+ ModelListAutocompleteMultiFilterComponent,
34
+ ModelListDatetimeFilterComponent,
35
+ ModelListDateFilterComponent,
36
+ ModelListDatetimeRangeFilterComponent,
37
+ ModelListFlagsFilterComponent,
38
+ ModelListGeodistanceFilterComponent,
39
+ ModelListSelectFilterComponent,
40
+ ModelListSelectMultiFilterComponent,
41
+ ModelListTreeFilterComponent,
42
+ ], template: "\n<div [ngClass]=\"containerClasses\">\n <ng-container *ngFor=\"let f of list.filters.enabled|async\">\n <ng-container [ngSwitch]=\"f.type\">\n <data-model-list-autocomplete-filter *ngSwitchCase=\"'autocomplete'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-autocomplete-filter>\n <data-model-list-autocomplete-multi-filter *ngSwitchCase=\"'autocompletemulti'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-autocomplete-multi-filter>\n <data-model-list-datetime-filter *ngSwitchCase=\"'datetime'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-datetime-filter>\n <data-model-list-date-filter *ngSwitchCase=\"'date'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-date-filter>\n <data-model-list-datetime-range-filter *ngSwitchCase=\"'datetimerange'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-datetime-range-filter>\n <data-model-list-flags-filter *ngSwitchCase=\"'flags'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-flags-filter>\n <data-model-list-geodistance-filter *ngSwitchCase=\"'geodistance'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-geodistance-filter>\n <data-model-list-number-filter *ngSwitchCase=\"'number'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-number-filter>\n <data-model-list-select-filter *ngSwitchCase=\"'select'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-select-filter>\n <data-model-list-select-multi-filter *ngSwitchCase=\"'selectmulti'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-select-multi-filter>\n <data-model-list-text-filter *ngSwitchCase=\"'text'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-text-filter>\n <data-model-list-tree-filter *ngSwitchCase=\"'tree'\" [filter]=\"$any(f)\" [list]=\"list\" [ngClass]=\"itemClasses\"></data-model-list-tree-filter>\n </ng-container>\n </ng-container>\n</div>" }]
43
+ }], propDecorators: { list: [{
44
+ type: Input
45
+ }], containerClasses: [{
46
+ type: Input
47
+ }], itemClasses: [{
48
+ type: Input
49
+ }] } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tb2RlbGxpc3QvbW9kZWwtbGlzdC1maWx0ZXJzL21vZGVsLWxpc3QtZmlsdGVycy9tb2RlbC1saXN0LWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LWZpbHRlcnMvbW9kZWwtbGlzdC1maWx0ZXJzL21vZGVsLWxpc3QtZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sb0VBQW9FLENBQUM7QUFDaEgsT0FBTyxFQUNMLG9DQUFvQyxFQUNyQyxNQUFNLG9GQUFvRixDQUFDO0FBQzVGLE9BQU8sRUFDTCx5Q0FBeUMsRUFDMUMsTUFBTSxnR0FBZ0csQ0FBQztBQUN4RyxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2pDLE1BQU0sNEVBQTRFLENBQUM7QUFDcEYsT0FBTyxFQUNMLHFDQUFxQyxFQUN0QyxNQUFNLHVGQUF1RixDQUFDO0FBQy9GLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHNFQUFzRSxDQUFDO0FBQ25ILE9BQU8sRUFDTCxtQ0FBbUMsRUFDcEMsTUFBTSxrRkFBa0YsQ0FBQztBQUMxRixPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSx3RUFBd0UsQ0FBQztBQUN0SCxPQUFPLEVBQ0wsbUNBQW1DLEVBQ3BDLE1BQU0sb0ZBQW9GLENBQUM7QUFDNUYsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sb0VBQW9FLENBQUM7QUFDaEgsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sd0VBQXdFLENBQUM7QUFDdEgsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sb0VBQW9FLENBQUM7OztBQUVoSCw0RkFBNEY7QUF1QjVGLE1BQU0sT0FBTyx5QkFBeUI7SUFyQnRDO1FBdUJrQixxQkFBZ0IsR0FBc0IsRUFBRSxDQUFDO1FBQ3pDLGdCQUFXLEdBQXNCLEVBQUUsQ0FBQztLQUNyRDs7c0hBSlkseUJBQXlCOzBHQUF6Qix5QkFBeUIsK0tDbkR0Qyw0cUVBa0JNLHlERGtCRixZQUFZLDJlQUNaLDRCQUE0QiwrR0FDNUIsOEJBQThCLGlIQUM5QixvQ0FBb0MsdUhBQ3BDLHlDQUF5QywwR0FDekMsZ0NBQWdDLG1IQUNoQyw0QkFBNEIsK0dBQzVCLHFDQUFxQyx5SEFDckMsNkJBQTZCLGdIQUM3QixtQ0FBbUMsc0hBQ25DLDhCQUE4QixpSEFDOUIsbUNBQW1DLHVIQUNuQyw0QkFBNEI7MkZBR25CLHlCQUF5QjtrQkFyQnJDLFNBQVM7K0JBQ0UseUJBQXlCLGNBR3ZCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLDRCQUE0Qjt3QkFDNUIsOEJBQThCO3dCQUM5QixvQ0FBb0M7d0JBQ3BDLHlDQUF5Qzt3QkFDekMsZ0NBQWdDO3dCQUNoQyw0QkFBNEI7d0JBQzVCLHFDQUFxQzt3QkFDckMsNkJBQTZCO3dCQUM3QixtQ0FBbUM7d0JBQ25DLDhCQUE4Qjt3QkFDOUIsbUNBQW1DO3dCQUNuQyw0QkFBNEI7cUJBQzdCOzhCQUdlLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNb2RlbExpc3R9IGZyb20gJy4uLy4uL21vZGVsLWxpc3Quc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TW9kZWxMaXN0VGV4dEZpbHRlckNvbXBvbmVudH0gZnJvbSAnLi4vZmlsdGVycy9tb2RlbC1saXN0LXRleHQtZmlsdGVyL21vZGVsLWxpc3QtdGV4dC1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIE1vZGVsTGlzdEF1dG9jb21wbGV0ZUZpbHRlckNvbXBvbmVudFxufSBmcm9tICcuLi9maWx0ZXJzL21vZGVsLWxpc3QtYXV0b2NvbXBsZXRlLWZpbHRlci9tb2RlbC1saXN0LWF1dG9jb21wbGV0ZS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIE1vZGVsTGlzdEF1dG9jb21wbGV0ZU11bHRpRmlsdGVyQ29tcG9uZW50XG59IGZyb20gJy4uL2ZpbHRlcnMvbW9kZWwtbGlzdC1hdXRvY29tcGxldGUtbXVsdGktZmlsdGVyL21vZGVsLWxpc3QtYXV0b2NvbXBsZXRlLW11bHRpLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgTW9kZWxMaXN0RGF0ZXRpbWVGaWx0ZXJDb21wb25lbnRcbn0gZnJvbSAnLi4vZmlsdGVycy9tb2RlbC1saXN0LWRhdGV0aW1lLWZpbHRlci9tb2RlbC1saXN0LWRhdGV0aW1lLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgTW9kZWxMaXN0RGF0ZXRpbWVSYW5nZUZpbHRlckNvbXBvbmVudFxufSBmcm9tICcuLi9maWx0ZXJzL21vZGVsLWxpc3QtZGF0ZXRpbWVyYW5nZS1maWx0ZXIvbW9kZWwtbGlzdC1kYXRldGltZS1yYW5nZS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7TW9kZWxMaXN0RmxhZ3NGaWx0ZXJDb21wb25lbnR9IGZyb20gJy4uL2ZpbHRlcnMvbW9kZWwtbGlzdC1mbGFncy1maWx0ZXIvbW9kZWwtbGlzdC1mbGFncy1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIE1vZGVsTGlzdEdlb2Rpc3RhbmNlRmlsdGVyQ29tcG9uZW50XG59IGZyb20gJy4uL2ZpbHRlcnMvbW9kZWwtbGlzdC1nZW9kaXN0YW5jZS1maWx0ZXIvbW9kZWwtbGlzdC1nZW9kaXN0YW5jZS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7TW9kZWxMaXN0U2VsZWN0RmlsdGVyQ29tcG9uZW50fSBmcm9tICcuLi9maWx0ZXJzL21vZGVsLWxpc3Qtc2VsZWN0LWZpbHRlci9tb2RlbC1saXN0LXNlbGVjdC1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIE1vZGVsTGlzdFNlbGVjdE11bHRpRmlsdGVyQ29tcG9uZW50XG59IGZyb20gJy4uL2ZpbHRlcnMvbW9kZWwtbGlzdC1zZWxlY3QtbXVsdGktZmlsdGVyL21vZGVsLWxpc3Qtc2VsZWN0LW11bHRpLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtNb2RlbExpc3RUcmVlRmlsdGVyQ29tcG9uZW50fSBmcm9tICcuLi9maWx0ZXJzL21vZGVsLWxpc3QtdHJlZS1maWx0ZXIvbW9kZWwtbGlzdC10cmVlLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtNb2RlbExpc3ROdW1iZXJGaWx0ZXJDb21wb25lbnR9IGZyb20gJy4uL2ZpbHRlcnMvbW9kZWwtbGlzdC1udW1iZXItZmlsdGVyL21vZGVsLWxpc3QtbnVtYmVyLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtNb2RlbExpc3REYXRlRmlsdGVyQ29tcG9uZW50fSBmcm9tICcuLi9maWx0ZXJzL21vZGVsLWxpc3QtZGF0ZS1maWx0ZXIvbW9kZWwtbGlzdC1kYXRlLWZpbHRlci5jb21wb25lbnQnO1xuXG4vLyBGSVhNRTogcmVnaXN0ZXIgZmlsdGVyIGNvbXBvbmVudHMgYW5kIGxvYWQgdGhlbSBkeW5hbWljYWxseSB0byBhbGxvdyB1c2VyIGRlZmluZWQgZmlsdGVyc1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRhLW1vZGVsLWxpc3QtZmlsdGVycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RlbC1saXN0LWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RlbC1saXN0LWZpbHRlcnMuY29tcG9uZW50LnNhc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNb2RlbExpc3RUZXh0RmlsdGVyQ29tcG9uZW50LFxuICAgIE1vZGVsTGlzdE51bWJlckZpbHRlckNvbXBvbmVudCxcbiAgICBNb2RlbExpc3RBdXRvY29tcGxldGVGaWx0ZXJDb21wb25lbnQsXG4gICAgTW9kZWxMaXN0QXV0b2NvbXBsZXRlTXVsdGlGaWx0ZXJDb21wb25lbnQsXG4gICAgTW9kZWxMaXN0RGF0ZXRpbWVGaWx0ZXJDb21wb25lbnQsXG4gICAgTW9kZWxMaXN0RGF0ZUZpbHRlckNvbXBvbmVudCxcbiAgICBNb2RlbExpc3REYXRldGltZVJhbmdlRmlsdGVyQ29tcG9uZW50LFxuICAgIE1vZGVsTGlzdEZsYWdzRmlsdGVyQ29tcG9uZW50LFxuICAgIE1vZGVsTGlzdEdlb2Rpc3RhbmNlRmlsdGVyQ29tcG9uZW50LFxuICAgIE1vZGVsTGlzdFNlbGVjdEZpbHRlckNvbXBvbmVudCxcbiAgICBNb2RlbExpc3RTZWxlY3RNdWx0aUZpbHRlckNvbXBvbmVudCxcbiAgICBNb2RlbExpc3RUcmVlRmlsdGVyQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RlbExpc3RGaWx0ZXJzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIGxpc3QhOiBNb2RlbExpc3Q8YW55PjtcbiAgQElucHV0KCkgcHVibGljIGNvbnRhaW5lckNsYXNzZXM6IHN0cmluZ1tdIHwgc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpdGVtQ2xhc3Nlczogc3RyaW5nW10gfCBzdHJpbmcgPSAnJztcbn1cbiIsIlxuPGRpdiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzc2VzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGYgb2YgbGlzdC5maWx0ZXJzLmVuYWJsZWR8YXN5bmNcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmLnR5cGVcIj5cbiAgICAgIDxkYXRhLW1vZGVsLWxpc3QtYXV0b2NvbXBsZXRlLWZpbHRlciAqbmdTd2l0Y2hDYXNlPVwiJ2F1dG9jb21wbGV0ZSdcIiBbZmlsdGVyXT1cIiRhbnkoZilcIiBbbGlzdF09XCJsaXN0XCIgW25nQ2xhc3NdPVwiaXRlbUNsYXNzZXNcIj48L2RhdGEtbW9kZWwtbGlzdC1hdXRvY29tcGxldGUtZmlsdGVyPlxuICAgICAgPGRhdGEtbW9kZWwtbGlzdC1hdXRvY29tcGxldGUtbXVsdGktZmlsdGVyICpuZ1N3aXRjaENhc2U9XCInYXV0b2NvbXBsZXRlbXVsdGknXCIgW2ZpbHRlcl09XCIkYW55KGYpXCIgW2xpc3RdPVwibGlzdFwiIFtuZ0NsYXNzXT1cIml0ZW1DbGFzc2VzXCI+PC9kYXRhLW1vZGVsLWxpc3QtYXV0b2NvbXBsZXRlLW11bHRpLWZpbHRlcj5cbiAgICAgIDxkYXRhLW1vZGVsLWxpc3QtZGF0ZXRpbWUtZmlsdGVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZXRpbWUnXCIgW2ZpbHRlcl09XCIkYW55KGYpXCIgW2xpc3RdPVwibGlzdFwiIFtuZ0NsYXNzXT1cIml0ZW1DbGFzc2VzXCI+PC9kYXRhLW1vZGVsLWxpc3QtZGF0ZXRpbWUtZmlsdGVyPlxuICAgICAgPGRhdGEtbW9kZWwtbGlzdC1kYXRlLWZpbHRlciAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCIgW2ZpbHRlcl09XCIkYW55KGYpXCIgW2xpc3RdPVwibGlzdFwiIFtuZ0NsYXNzXT1cIml0ZW1DbGFzc2VzXCI+PC9kYXRhLW1vZGVsLWxpc3QtZGF0ZS1maWx0ZXI+XG4gICAgICA8ZGF0YS1tb2RlbC1saXN0LWRhdGV0aW1lLXJhbmdlLWZpbHRlciAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGV0aW1lcmFuZ2UnXCIgW2ZpbHRlcl09XCIkYW55KGYpXCIgW2xpc3RdPVwibGlzdFwiIFtuZ0NsYXNzXT1cIml0ZW1DbGFzc2VzXCI+PC9kYXRhLW1vZGVsLWxpc3QtZGF0ZXRpbWUtcmFuZ2UtZmlsdGVyPlxuICAgICAgPGRhdGEtbW9kZWwtbGlzdC1mbGFncy1maWx0ZXIgKm5nU3dpdGNoQ2FzZT1cIidmbGFncydcIiBbZmlsdGVyXT1cIiRhbnkoZilcIiBbbGlzdF09XCJsaXN0XCIgW25nQ2xhc3NdPVwiaXRlbUNsYXNzZXNcIj48L2RhdGEtbW9kZWwtbGlzdC1mbGFncy1maWx0ZXI+XG4gICAgICA8ZGF0YS1tb2RlbC1saXN0LWdlb2Rpc3RhbmNlLWZpbHRlciAqbmdTd2l0Y2hDYXNlPVwiJ2dlb2Rpc3RhbmNlJ1wiIFtmaWx0ZXJdPVwiJGFueShmKVwiIFtsaXN0XT1cImxpc3RcIiBbbmdDbGFzc109XCJpdGVtQ2xhc3Nlc1wiPjwvZGF0YS1tb2RlbC1saXN0LWdlb2Rpc3RhbmNlLWZpbHRlcj5cbiAgICAgIDxkYXRhLW1vZGVsLWxpc3QtbnVtYmVyLWZpbHRlciAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIiBbZmlsdGVyXT1cIiRhbnkoZilcIiBbbGlzdF09XCJsaXN0XCIgW25nQ2xhc3NdPVwiaXRlbUNsYXNzZXNcIj48L2RhdGEtbW9kZWwtbGlzdC1udW1iZXItZmlsdGVyPlxuICAgICAgPGRhdGEtbW9kZWwtbGlzdC1zZWxlY3QtZmlsdGVyICpuZ1N3aXRjaENhc2U9XCInc2VsZWN0J1wiIFtmaWx0ZXJdPVwiJGFueShmKVwiIFtsaXN0XT1cImxpc3RcIiBbbmdDbGFzc109XCJpdGVtQ2xhc3Nlc1wiPjwvZGF0YS1tb2RlbC1saXN0LXNlbGVjdC1maWx0ZXI+XG4gICAgICA8ZGF0YS1tb2RlbC1saXN0LXNlbGVjdC1tdWx0aS1maWx0ZXIgKm5nU3dpdGNoQ2FzZT1cIidzZWxlY3RtdWx0aSdcIiBbZmlsdGVyXT1cIiRhbnkoZilcIiBbbGlzdF09XCJsaXN0XCIgW25nQ2xhc3NdPVwiaXRlbUNsYXNzZXNcIj48L2RhdGEtbW9kZWwtbGlzdC1zZWxlY3QtbXVsdGktZmlsdGVyPlxuICAgICAgPGRhdGEtbW9kZWwtbGlzdC10ZXh0LWZpbHRlciAqbmdTd2l0Y2hDYXNlPVwiJ3RleHQnXCIgW2ZpbHRlcl09XCIkYW55KGYpXCIgW2xpc3RdPVwibGlzdFwiIFtuZ0NsYXNzXT1cIml0ZW1DbGFzc2VzXCI+PC9kYXRhLW1vZGVsLWxpc3QtdGV4dC1maWx0ZXI+XG4gICAgICA8ZGF0YS1tb2RlbC1saXN0LXRyZWUtZmlsdGVyICpuZ1N3aXRjaENhc2U9XCIndHJlZSdcIiBbZmlsdGVyXT1cIiRhbnkoZilcIiBbbGlzdF09XCJsaXN0XCIgW25nQ2xhc3NdPVwiaXRlbUNsYXNzZXNcIj48L2RhdGEtbW9kZWwtbGlzdC10cmVlLWZpbHRlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj4iXX0=
@@ -0,0 +1,30 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class ModelListFiltersSelectComponent {
6
+ constructor() {
7
+ this.containerClasses = '';
8
+ this.itemActiveClasses = 'badge bg-success mx-1';
9
+ this.itemInactiveClasses = 'badge bg-secondary mx-1';
10
+ }
11
+ toggle(f) {
12
+ f.enabled = !f.enabled;
13
+ this.list.filters.update();
14
+ }
15
+ }
16
+ ModelListFiltersSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: ModelListFiltersSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ ModelListFiltersSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: ModelListFiltersSelectComponent, isStandalone: true, selector: "data-model-list-filters-select", inputs: { list: "list", containerClasses: "containerClasses", itemActiveClasses: "itemActiveClasses", itemInactiveClasses: "itemInactiveClasses" }, ngImport: i0, template: "<span *ngFor=\"let f of list.filters.available|async\" (click)=\"toggle(f)\" [ngClass]=\"containerClasses\"><span *ngIf=\"f.enabled\" role=\"button\" [ngClass]=\"itemActiveClasses\" [title]=\"f.desc\"><i class=\"bi bi-check2-square me-2\"></i><span>{{f.label}}</span></span><span *ngIf=\"!f.enabled\" role=\"button\" [ngClass]=\"itemInactiveClasses\" [title]=\"f.desc\"><i class=\"bi bi-square me-2\"></i><span>{{f.label}}</span></span></span>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: ModelListFiltersSelectComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ selector: 'data-model-list-filters-select', standalone: true, imports: [CommonModule], template: "<span *ngFor=\"let f of list.filters.available|async\" (click)=\"toggle(f)\" [ngClass]=\"containerClasses\"><span *ngIf=\"f.enabled\" role=\"button\" [ngClass]=\"itemActiveClasses\" [title]=\"f.desc\"><i class=\"bi bi-check2-square me-2\"></i><span>{{f.label}}</span></span><span *ngIf=\"!f.enabled\" role=\"button\" [ngClass]=\"itemInactiveClasses\" [title]=\"f.desc\"><i class=\"bi bi-square me-2\"></i><span>{{f.label}}</span></span></span>" }]
21
+ }], ctorParameters: function () { return []; }, propDecorators: { list: [{
22
+ type: Input
23
+ }], containerClasses: [{
24
+ type: Input
25
+ }], itemActiveClasses: [{
26
+ type: Input
27
+ }], itemInactiveClasses: [{
28
+ type: Input
29
+ }] } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWx0ZXJzLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtZmlsdGVycy9tb2RlbC1saXN0LWZpbHRlcnMtc2VsZWN0L21vZGVsLWxpc3QtZmlsdGVycy1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LWZpbHRlcnMvbW9kZWwtbGlzdC1maWx0ZXJzLXNlbGVjdC9tb2RlbC1saXN0LWZpbHRlcnMtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBUy9DLE1BQU0sT0FBTywrQkFBK0I7SUFRMUM7UUFOZ0IscUJBQWdCLEdBQXNCLEVBQUUsQ0FBQztRQUN6QyxzQkFBaUIsR0FDL0IsdUJBQXVCLENBQUM7UUFDVix3QkFBbUIsR0FDakMseUJBQXlCLENBQUM7SUFFYixDQUFDO0lBRVQsTUFBTSxDQUFDLENBQWtCO1FBQzlCLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7OzRIQWJVLCtCQUErQjtnSEFBL0IsK0JBQStCLDhPQ1o1Qyw2YkFBaWEseUREVXJaLFlBQVk7MkZBRVgsK0JBQStCO2tCQVAzQyxTQUFTOytCQUNFLGdDQUFnQyxjQUc5QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7MEVBR1AsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUVVLG1CQUFtQjtzQkFBbEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGVsTGlzdCB9IGZyb20gJy4uLy4uL21vZGVsLWxpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNb2RlbExpc3RGaWx0ZXIgfSBmcm9tICcuLi9tb2RlbC1saXN0LWZpbHRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRhLW1vZGVsLWxpc3QtZmlsdGVycy1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kZWwtbGlzdC1maWx0ZXJzLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGVsLWxpc3QtZmlsdGVycy1zZWxlY3QuY29tcG9uZW50LnNhc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdEZpbHRlcnNTZWxlY3RDb21wb25lbnQge1xuICBASW5wdXQoKSBwdWJsaWMgbGlzdCE6IE1vZGVsTGlzdDxhbnk+O1xuICBASW5wdXQoKSBwdWJsaWMgY29udGFpbmVyQ2xhc3Nlczogc3RyaW5nW10gfCBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGl0ZW1BY3RpdmVDbGFzc2VzOiBzdHJpbmdbXSB8IHN0cmluZyA9XG4gICAgJ2JhZGdlIGJnLXN1Y2Nlc3MgbXgtMSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpdGVtSW5hY3RpdmVDbGFzc2VzOiBzdHJpbmdbXSB8IHN0cmluZyA9XG4gICAgJ2JhZGdlIGJnLXNlY29uZGFyeSBteC0xJztcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIHRvZ2dsZShmOiBNb2RlbExpc3RGaWx0ZXIpIHtcbiAgICBmLmVuYWJsZWQgPSAhZi5lbmFibGVkO1xuICAgIHRoaXMubGlzdC5maWx0ZXJzLnVwZGF0ZSgpO1xuICB9XG59XG4iLCI8c3BhbiAqbmdGb3I9XCJsZXQgZiBvZiBsaXN0LmZpbHRlcnMuYXZhaWxhYmxlfGFzeW5jXCIgKGNsaWNrKT1cInRvZ2dsZShmKVwiIFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzZXNcIj48c3BhbiAqbmdJZj1cImYuZW5hYmxlZFwiIHJvbGU9XCJidXR0b25cIiBbbmdDbGFzc109XCJpdGVtQWN0aXZlQ2xhc3Nlc1wiIFt0aXRsZV09XCJmLmRlc2NcIj48aSBjbGFzcz1cImJpIGJpLWNoZWNrMi1zcXVhcmUgbWUtMlwiPjwvaT48c3Bhbj57e2YubGFiZWx9fTwvc3Bhbj48L3NwYW4+PHNwYW4gKm5nSWY9XCIhZi5lbmFibGVkXCIgcm9sZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cIml0ZW1JbmFjdGl2ZUNsYXNzZXNcIiBbdGl0bGVdPVwiZi5kZXNjXCI+PGkgY2xhc3M9XCJiaSBiaS1zcXVhcmUgbWUtMlwiPjwvaT48c3Bhbj57e2YubGFiZWx9fTwvc3Bhbj48L3NwYW4+PC9zcGFuPiJdfQ==
@@ -0,0 +1,80 @@
1
+ import { ReplaySubject } from 'rxjs';
2
+ export class ModelListFilters {
3
+ constructor(params) {
4
+ this._output = new ReplaySubject(1);
5
+ this._enabled = new ReplaySubject(1);
6
+ this._available = new ReplaySubject(1);
7
+ const tmp = Array.from(params?.filters || []);
8
+ // Prepare allowed filters (all filters if not set or empty)
9
+ let allowed = [];
10
+ if (params?.allowed === undefined || params?.allowed.length === 0) {
11
+ for (const f of tmp) {
12
+ allowed.push(f.name);
13
+ }
14
+ }
15
+ else {
16
+ allowed = params.allowed;
17
+ }
18
+ // Prepare excluded filters
19
+ const excluded = params?.excluded || [];
20
+ // Process default filters
21
+ // Use all allowed filters if empty of not set
22
+ const defaults = params?.defaults || allowed;
23
+ // Prepare filters status
24
+ // Set allowed
25
+ for (const fe of allowed) {
26
+ for (const f of tmp) {
27
+ if (f.name === fe) {
28
+ f.allowed = true;
29
+ }
30
+ }
31
+ }
32
+ // Set defaults
33
+ for (const fe of defaults) {
34
+ for (const f of tmp) {
35
+ if (f.name === fe) {
36
+ f.enabled = true;
37
+ f.allowed = true;
38
+ }
39
+ }
40
+ }
41
+ // remove excluded
42
+ for (const fe of excluded) {
43
+ for (const f of tmp) {
44
+ if (f.name === fe) {
45
+ f.enabled = false;
46
+ f.allowed = false;
47
+ }
48
+ }
49
+ }
50
+ this._filters = tmp;
51
+ this.update();
52
+ }
53
+ get output() {
54
+ return this._output.asObservable();
55
+ }
56
+ get enabled() {
57
+ return this._enabled.asObservable();
58
+ }
59
+ get available() {
60
+ return this._available.asObservable();
61
+ }
62
+ update() {
63
+ const filter = {};
64
+ const enabled = [];
65
+ const available = [];
66
+ for (const f of this._filters) {
67
+ if (f.enabled) {
68
+ f.updateFilter(filter);
69
+ enabled.push(f);
70
+ }
71
+ if (f.allowed) {
72
+ available.push(f);
73
+ }
74
+ }
75
+ this._output.next(filter);
76
+ this._enabled.next(enabled);
77
+ this._available.next(available);
78
+ }
79
+ }
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1maWx0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LWZpbHRlcnMvbW9kZWwtbGlzdC1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJakQsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixZQUFZLE1BQXNCO1FBaUQxQixZQUFPLEdBQUcsSUFBSSxhQUFhLENBQWEsQ0FBQyxDQUFDLENBQUM7UUFLNUMsYUFBUSxHQUFHLElBQUksYUFBYSxDQUFvQixDQUFDLENBQUMsQ0FBQztRQUtuRCxlQUFVLEdBQUcsSUFBSSxhQUFhLENBQW9CLENBQUMsQ0FBQyxDQUFDO1FBMUQxRCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUMsNERBQTREO1FBQzVELElBQUksT0FBTyxHQUFhLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxPQUFPLEtBQUssU0FBUyxJQUFJLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNqRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRTtnQkFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdEI7U0FDRjthQUFNO1lBQ0wsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDMUI7UUFDRCwyQkFBMkI7UUFDM0IsTUFBTSxRQUFRLEdBQWEsTUFBTSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFFbEQsMEJBQTBCO1FBQzFCLDhDQUE4QztRQUM5QyxNQUFNLFFBQVEsR0FBYSxNQUFNLEVBQUUsUUFBUSxJQUFJLE9BQU8sQ0FBQztRQUV2RCx5QkFBeUI7UUFDekIsY0FBYztRQUNkLEtBQUssTUFBTSxFQUFFLElBQUksT0FBTyxFQUFFO1lBQ3hCLEtBQUssTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFO2dCQUNuQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO29CQUNqQixDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztpQkFDbEI7YUFDRjtTQUNGO1FBQ0QsZUFBZTtRQUNmLEtBQUssTUFBTSxFQUFFLElBQUksUUFBUSxFQUFFO1lBQ3pCLEtBQUssTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFO2dCQUNuQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO29CQUNqQixDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDakIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7aUJBQ2xCO2FBQ0Y7U0FDRjtRQUNELGtCQUFrQjtRQUNsQixLQUFLLE1BQU0sRUFBRSxJQUFJLFFBQVEsRUFBRTtZQUN6QixLQUFLLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsRUFBRTtvQkFDakIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ2xCLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2lCQUNuQjthQUNGO1NBQ0Y7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUdELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBR0QsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBR0QsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRU0sTUFBTTtRQUNYLE1BQU0sTUFBTSxHQUFlLEVBQUUsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBc0IsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sU0FBUyxHQUFzQixFQUFFLENBQUM7UUFDeEMsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzdCLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRTtnQkFDYixDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN2QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2pCO1lBQ0QsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO2dCQUNiLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkI7U0FDRjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbHRlckRhdGEgfSBmcm9tICcuLi8uLi9kYXRhL2RhdGEtcXVlcnknO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsdGVyc1BhcmFtcyB9IGZyb20gJy4uL21vZGVsLWxpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNb2RlbExpc3RGaWx0ZXIgfSBmcm9tICcuL21vZGVsLWxpc3QtZmlsdGVyJztcblxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdEZpbHRlcnMge1xuICBwcml2YXRlIF9maWx0ZXJzOiBNb2RlbExpc3RGaWx0ZXJbXTtcblxuICBjb25zdHJ1Y3RvcihwYXJhbXM/OiBGaWx0ZXJzUGFyYW1zKSB7XG4gICAgY29uc3QgdG1wID0gQXJyYXkuZnJvbShwYXJhbXM/LmZpbHRlcnMgfHwgW10pO1xuICAgIC8vIFByZXBhcmUgYWxsb3dlZCBmaWx0ZXJzIChhbGwgZmlsdGVycyBpZiBub3Qgc2V0IG9yIGVtcHR5KVxuICAgIGxldCBhbGxvd2VkOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmIChwYXJhbXM/LmFsbG93ZWQgPT09IHVuZGVmaW5lZCB8fCBwYXJhbXM/LmFsbG93ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGYgb2YgdG1wKSB7XG4gICAgICAgIGFsbG93ZWQucHVzaChmLm5hbWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhbGxvd2VkID0gcGFyYW1zLmFsbG93ZWQ7XG4gICAgfVxuICAgIC8vIFByZXBhcmUgZXhjbHVkZWQgZmlsdGVyc1xuICAgIGNvbnN0IGV4Y2x1ZGVkOiBzdHJpbmdbXSA9IHBhcmFtcz8uZXhjbHVkZWQgfHwgW107XG5cbiAgICAvLyBQcm9jZXNzIGRlZmF1bHQgZmlsdGVyc1xuICAgIC8vIFVzZSBhbGwgYWxsb3dlZCBmaWx0ZXJzIGlmIGVtcHR5IG9mIG5vdCBzZXRcbiAgICBjb25zdCBkZWZhdWx0czogc3RyaW5nW10gPSBwYXJhbXM/LmRlZmF1bHRzIHx8IGFsbG93ZWQ7XG5cbiAgICAvLyBQcmVwYXJlIGZpbHRlcnMgc3RhdHVzXG4gICAgLy8gU2V0IGFsbG93ZWRcbiAgICBmb3IgKGNvbnN0IGZlIG9mIGFsbG93ZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZiBvZiB0bXApIHtcbiAgICAgICAgaWYgKGYubmFtZSA9PT0gZmUpIHtcbiAgICAgICAgICBmLmFsbG93ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFNldCBkZWZhdWx0c1xuICAgIGZvciAoY29uc3QgZmUgb2YgZGVmYXVsdHMpIHtcbiAgICAgIGZvciAoY29uc3QgZiBvZiB0bXApIHtcbiAgICAgICAgaWYgKGYubmFtZSA9PT0gZmUpIHtcbiAgICAgICAgICBmLmVuYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIGYuYWxsb3dlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gcmVtb3ZlIGV4Y2x1ZGVkXG4gICAgZm9yIChjb25zdCBmZSBvZiBleGNsdWRlZCkge1xuICAgICAgZm9yIChjb25zdCBmIG9mIHRtcCkge1xuICAgICAgICBpZiAoZi5uYW1lID09PSBmZSkge1xuICAgICAgICAgIGYuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIGYuYWxsb3dlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2ZpbHRlcnMgPSB0bXA7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX291dHB1dCA9IG5ldyBSZXBsYXlTdWJqZWN0PEZpbHRlckRhdGE+KDEpO1xuICBwdWJsaWMgZ2V0IG91dHB1dCgpOiBPYnNlcnZhYmxlPEZpbHRlckRhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5fb3V0cHV0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIF9lbmFibGVkID0gbmV3IFJlcGxheVN1YmplY3Q8TW9kZWxMaXN0RmlsdGVyW10+KDEpO1xuICBwdWJsaWMgZ2V0IGVuYWJsZWQoKTogT2JzZXJ2YWJsZTxNb2RlbExpc3RGaWx0ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIF9hdmFpbGFibGUgPSBuZXcgUmVwbGF5U3ViamVjdDxNb2RlbExpc3RGaWx0ZXJbXT4oMSk7XG4gIHB1YmxpYyBnZXQgYXZhaWxhYmxlKCk6IE9ic2VydmFibGU8TW9kZWxMaXN0RmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYXZhaWxhYmxlLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZSgpIHtcbiAgICBjb25zdCBmaWx0ZXI6IEZpbHRlckRhdGEgPSB7fTtcbiAgICBjb25zdCBlbmFibGVkOiBNb2RlbExpc3RGaWx0ZXJbXSA9IFtdO1xuICAgIGNvbnN0IGF2YWlsYWJsZTogTW9kZWxMaXN0RmlsdGVyW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGYgb2YgdGhpcy5fZmlsdGVycykge1xuICAgICAgaWYgKGYuZW5hYmxlZCkge1xuICAgICAgICBmLnVwZGF0ZUZpbHRlcihmaWx0ZXIpO1xuICAgICAgICBlbmFibGVkLnB1c2goZik7XG4gICAgICB9XG4gICAgICBpZiAoZi5hbGxvd2VkKSB7XG4gICAgICAgIGF2YWlsYWJsZS5wdXNoKGYpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9vdXRwdXQubmV4dChmaWx0ZXIpO1xuICAgIHRoaXMuX2VuYWJsZWQubmV4dChlbmFibGVkKTtcbiAgICB0aGlzLl9hdmFpbGFibGUubmV4dChhdmFpbGFibGUpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,70 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { FormControl, ReactiveFormsModule, } from '@angular/forms';
3
+ import { debounceTime, Subject, takeUntil } from 'rxjs';
4
+ import { NgbPaginationModule } from '@ng-bootstrap/ng-bootstrap';
5
+ import { CommonModule } from '@angular/common';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@angular/forms";
9
+ import * as i3 from "@ng-bootstrap/ng-bootstrap";
10
+ export class ModelListPaginatorComponent {
11
+ constructor() {
12
+ this.maxPages = 200;
13
+ this.hide = false;
14
+ this.perPageControl = new FormControl(10);
15
+ this.showDirectAccess = false;
16
+ this.directAccess = new FormControl(0);
17
+ this.curPage = 1;
18
+ this._unsubscribe = new Subject();
19
+ }
20
+ onPageChange(page) {
21
+ if (!page) {
22
+ return;
23
+ }
24
+ this.list.paginator.setPage(page);
25
+ }
26
+ ngOnDestroy() {
27
+ this._unsubscribe.next();
28
+ this._unsubscribe.complete();
29
+ }
30
+ ngOnChanges() {
31
+ if (this.list) {
32
+ this.perPageControl.setValue(this.list.paginator.getPageSize(), {
33
+ emitEvent: false,
34
+ });
35
+ this.list.meta.pipe(takeUntil(this._unsubscribe)).subscribe((meta) => {
36
+ if (meta.nav) {
37
+ this.list.paginator.updatePage(meta.nav.page || 1);
38
+ this.curPage = meta.nav.page || 1;
39
+ this.curCount = meta.nav.count;
40
+ this.list.paginator.updatePageSize(meta.nav.size);
41
+ this.pageSize = this.list.paginator.getPageSize();
42
+ this.perPageControl.setValue(this.pageSize, { emitEvent: false });
43
+ }
44
+ });
45
+ this.perPageControl.valueChanges
46
+ .pipe(takeUntil(this._unsubscribe))
47
+ .subscribe((count) => {
48
+ this.list.paginator.setPageSize(count);
49
+ });
50
+ this.directAccess.valueChanges
51
+ .pipe(takeUntil(this._unsubscribe), debounceTime(400))
52
+ .subscribe((count) => {
53
+ this.list.paginator.setPage(+count);
54
+ });
55
+ }
56
+ }
57
+ }
58
+ ModelListPaginatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: ModelListPaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
59
+ ModelListPaginatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: ModelListPaginatorComponent, isStandalone: true, selector: "data-model-list-paginator", inputs: { list: "list", maxPages: "maxPages", hide: "hide" }, usesOnChanges: true, ngImport: i0, template: "\n<div class=\"row\" *ngIf=\"!hide\">\n <div class=\"col-sm-4\">\n <select class=\"form-select perpage\" [formControl]=\"perPageControl\">\n <option value=\"10\" *ngIf=\"maxPages&gt;=10\">10 / page</option>\n <option value=\"20\" *ngIf=\"maxPages&gt;=20\">20 / page</option>\n <option value=\"50\" *ngIf=\"maxPages&gt;=50\">50 / page</option>\n <option value=\"100\" *ngIf=\"maxPages&gt;=100\">100 / page</option>\n <option value=\"200\" *ngIf=\"maxPages&gt;=200\">200 / page</option>\n <option value=\"500\" *ngIf=\"maxPages&gt;=500\">500 / page</option>\n <option value=\"1000\" *ngIf=\"maxPages&gt;=1000\">1000 / page</option>\n <option value=\"2000\" *ngIf=\"maxPages&gt;=2000\">2000 / page</option>\n <option value=\"5000\" *ngIf=\"maxPages&gt;=5000\">5000 / page</option>\n <option value=\"10000\" *ngIf=\"maxPages&gt;=10000\">10000 / page</option>\n </select>\n </div>\n <div class=\"col-sm-5 pagination\" *ngIf=\"list\">\n <div class=\"text-xs-center\">\n <ngb-pagination [pageSize]=\"pageSize\" [collectionSize]=\"curCount\" [page]=\"curPage\" (pageChange)=\"onPageChange($event)\" [maxSize]=\"5\" [rotate]=\"true\"></ngb-pagination>\n </div>\n </div>\n <div class=\"col-sm-3 results\">\n <div>{{curCount}} r\u00E9sultats -<span (click)=\"showDirectAccess=!showDirectAccess\" role=\"button\">acces direct</span></div>\n <div *ngIf=\"showDirectAccess\">\n <input class=\"form-control\" [formControl]=\"directAccess\" type=\"number\" placeholder=\"Aller \u00E0 la page\">\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: NgbPaginationModule }, { kind: "component", type: i3.NgbPagination, selector: "ngb-pagination", inputs: ["disabled", "boundaryLinks", "directionLinks", "ellipses", "rotate", "collectionSize", "maxSize", "page", "pageSize", "size"], outputs: ["pageChange"] }] });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: ModelListPaginatorComponent, decorators: [{
61
+ type: Component,
62
+ args: [{ selector: 'data-model-list-paginator', standalone: true, imports: [CommonModule, ReactiveFormsModule, NgbPaginationModule], template: "\n<div class=\"row\" *ngIf=\"!hide\">\n <div class=\"col-sm-4\">\n <select class=\"form-select perpage\" [formControl]=\"perPageControl\">\n <option value=\"10\" *ngIf=\"maxPages&gt;=10\">10 / page</option>\n <option value=\"20\" *ngIf=\"maxPages&gt;=20\">20 / page</option>\n <option value=\"50\" *ngIf=\"maxPages&gt;=50\">50 / page</option>\n <option value=\"100\" *ngIf=\"maxPages&gt;=100\">100 / page</option>\n <option value=\"200\" *ngIf=\"maxPages&gt;=200\">200 / page</option>\n <option value=\"500\" *ngIf=\"maxPages&gt;=500\">500 / page</option>\n <option value=\"1000\" *ngIf=\"maxPages&gt;=1000\">1000 / page</option>\n <option value=\"2000\" *ngIf=\"maxPages&gt;=2000\">2000 / page</option>\n <option value=\"5000\" *ngIf=\"maxPages&gt;=5000\">5000 / page</option>\n <option value=\"10000\" *ngIf=\"maxPages&gt;=10000\">10000 / page</option>\n </select>\n </div>\n <div class=\"col-sm-5 pagination\" *ngIf=\"list\">\n <div class=\"text-xs-center\">\n <ngb-pagination [pageSize]=\"pageSize\" [collectionSize]=\"curCount\" [page]=\"curPage\" (pageChange)=\"onPageChange($event)\" [maxSize]=\"5\" [rotate]=\"true\"></ngb-pagination>\n </div>\n </div>\n <div class=\"col-sm-3 results\">\n <div>{{curCount}} r\u00E9sultats -<span (click)=\"showDirectAccess=!showDirectAccess\" role=\"button\">acces direct</span></div>\n <div *ngIf=\"showDirectAccess\">\n <input class=\"form-control\" [formControl]=\"directAccess\" type=\"number\" placeholder=\"Aller \u00E0 la page\">\n </div>\n </div>\n</div>" }]
63
+ }], propDecorators: { list: [{
64
+ type: Input
65
+ }], maxPages: [{
66
+ type: Input
67
+ }], hide: [{
68
+ type: Input
69
+ }] } });
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1wYWdpbmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LXBhZ2luYXRvci9tb2RlbC1saXN0LXBhZ2luYXRvci9tb2RlbC1saXN0LXBhZ2luYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtcGFnaW5hdG9yL21vZGVsLWxpc3QtcGFnaW5hdG9yL21vZGVsLWxpc3QtcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF3QixNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQ0wsV0FBVyxFQUNYLG1CQUFtQixHQUVwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBVy9DLE1BQU0sT0FBTywyQkFBMkI7SUFQeEM7UUFXa0IsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNmLFNBQUksR0FBRyxLQUFLLENBQUM7UUFFdEIsbUJBQWMsR0FBZ0IsSUFBSSxXQUFXLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDMUQscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGlCQUFZLEdBQWdCLElBQUksV0FBVyxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELFlBQU8sR0FBRyxDQUFDLENBQUM7UUFHWixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7S0EyQzNDO0lBekNRLFlBQVksQ0FBQyxJQUFZO1FBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUM5RCxTQUFTLEVBQUUsS0FBSzthQUNqQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNuRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUNuRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztvQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ2xELElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztpQkFDbkU7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWTtpQkFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQ2xDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUM7WUFFTCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVk7aUJBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDckQsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDOzt3SEF2RFUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsd0tDcEJ4Qyx5akRBMkJNLHlERFRNLFlBQVksa0lBQUUsbUJBQW1CLHNvQ0FBRSxtQkFBbUI7MkZBRXJELDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFDRSwyQkFBMkIsY0FHekIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDOzhCQUtqRCxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RlbExpc3QgfSBmcm9tICcuLi8uLi9tb2RlbC1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nYlBhZ2luYXRpb25Nb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9kYXRhL2RhdGEtbW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRhLW1vZGVsLWxpc3QtcGFnaW5hdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGVsLWxpc3QtcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kZWwtbGlzdC1wYWdpbmF0b3IuY29tcG9uZW50LnNhc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTmdiUGFnaW5hdGlvbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGVsTGlzdFBhZ2luYXRvckNvbXBvbmVudDxUIGV4dGVuZHMgRGF0YU1vZGVsPlxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzXG57XG4gIEBJbnB1dCgpIHB1YmxpYyBsaXN0ITogTW9kZWxMaXN0PFQ+O1xuICBASW5wdXQoKSBwdWJsaWMgbWF4UGFnZXMgPSAyMDA7XG4gIEBJbnB1dCgpIHB1YmxpYyBoaWRlID0gZmFsc2U7XG5cbiAgcHVibGljIHBlclBhZ2VDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KDEwKTtcbiAgcHVibGljIHNob3dEaXJlY3RBY2Nlc3MgPSBmYWxzZTtcbiAgcHVibGljIGRpcmVjdEFjY2VzczogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPigwKTtcbiAgcHVibGljIGN1clBhZ2UgPSAxO1xuICBwdWJsaWMgY3VyQ291bnQhOiBudW1iZXI7XG4gIHB1YmxpYyBwYWdlU2l6ZSE6IG51bWJlcjtcbiAgcHVibGljIF91bnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIG9uUGFnZUNoYW5nZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXBhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5saXN0LnBhZ2luYXRvci5zZXRQYWdlKHBhZ2UpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLl91bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgIHRoaXMucGVyUGFnZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5saXN0LnBhZ2luYXRvci5nZXRQYWdlU2l6ZSgpLCB7XG4gICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIHRoaXMubGlzdC5tZXRhLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChtZXRhKSA9PiB7XG4gICAgICAgIGlmIChtZXRhLm5hdikge1xuICAgICAgICAgIHRoaXMubGlzdC5wYWdpbmF0b3IudXBkYXRlUGFnZShtZXRhLm5hdi5wYWdlIHx8IDEpO1xuICAgICAgICAgIHRoaXMuY3VyUGFnZSA9IG1ldGEubmF2LnBhZ2UgfHwgMTtcbiAgICAgICAgICB0aGlzLmN1ckNvdW50ID0gbWV0YS5uYXYuY291bnQ7XG4gICAgICAgICAgdGhpcy5saXN0LnBhZ2luYXRvci51cGRhdGVQYWdlU2l6ZShtZXRhLm5hdi5zaXplKTtcbiAgICAgICAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5saXN0LnBhZ2luYXRvci5nZXRQYWdlU2l6ZSgpO1xuICAgICAgICAgIHRoaXMucGVyUGFnZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5wYWdlU2l6ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wZXJQYWdlQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY291bnQpID0+IHtcbiAgICAgICAgICB0aGlzLmxpc3QucGFnaW5hdG9yLnNldFBhZ2VTaXplKGNvdW50KTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuZGlyZWN0QWNjZXNzLnZhbHVlQ2hhbmdlc1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUpLCBkZWJvdW5jZVRpbWUoNDAwKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY291bnQpID0+IHtcbiAgICAgICAgICB0aGlzLmxpc3QucGFnaW5hdG9yLnNldFBhZ2UoK2NvdW50KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCJcbjxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIiFoaWRlXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxuICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBwZXJwYWdlXCIgW2Zvcm1Db250cm9sXT1cInBlclBhZ2VDb250cm9sXCI+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwiMTBcIiAqbmdJZj1cIm1heFBhZ2VzJmd0Oz0xMFwiPjEwIC8gcGFnZTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIjIwXCIgKm5nSWY9XCJtYXhQYWdlcyZndDs9MjBcIj4yMCAvIHBhZ2U8L29wdGlvbj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCI1MFwiICpuZ0lmPVwibWF4UGFnZXMmZ3Q7PTUwXCI+NTAgLyBwYWdlPC9vcHRpb24+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwiMTAwXCIgKm5nSWY9XCJtYXhQYWdlcyZndDs9MTAwXCI+MTAwIC8gcGFnZTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIjIwMFwiICpuZ0lmPVwibWF4UGFnZXMmZ3Q7PTIwMFwiPjIwMCAvIHBhZ2U8L29wdGlvbj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCI1MDBcIiAqbmdJZj1cIm1heFBhZ2VzJmd0Oz01MDBcIj41MDAgLyBwYWdlPC9vcHRpb24+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwiMTAwMFwiICpuZ0lmPVwibWF4UGFnZXMmZ3Q7PTEwMDBcIj4xMDAwIC8gcGFnZTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIjIwMDBcIiAqbmdJZj1cIm1heFBhZ2VzJmd0Oz0yMDAwXCI+MjAwMCAvIHBhZ2U8L29wdGlvbj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCI1MDAwXCIgKm5nSWY9XCJtYXhQYWdlcyZndDs9NTAwMFwiPjUwMDAgLyBwYWdlPC9vcHRpb24+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwiMTAwMDBcIiAqbmdJZj1cIm1heFBhZ2VzJmd0Oz0xMDAwMFwiPjEwMDAwIC8gcGFnZTwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbC1zbS01IHBhZ2luYXRpb25cIiAqbmdJZj1cImxpc3RcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC14cy1jZW50ZXJcIj5cbiAgICAgIDxuZ2ItcGFnaW5hdGlvbiBbcGFnZVNpemVdPVwicGFnZVNpemVcIiBbY29sbGVjdGlvblNpemVdPVwiY3VyQ291bnRcIiBbcGFnZV09XCJjdXJQYWdlXCIgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIiBbbWF4U2l6ZV09XCI1XCIgW3JvdGF0ZV09XCJ0cnVlXCI+PC9uZ2ItcGFnaW5hdGlvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtc20tMyByZXN1bHRzXCI+XG4gICAgPGRpdj57e2N1ckNvdW50fX0gcsOpc3VsdGF0cyAtPHNwYW4gKGNsaWNrKT1cInNob3dEaXJlY3RBY2Nlc3M9IXNob3dEaXJlY3RBY2Nlc3NcIiByb2xlPVwiYnV0dG9uXCI+YWNjZXMgZGlyZWN0PC9zcGFuPjwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGlyZWN0QWNjZXNzXCI+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbZm9ybUNvbnRyb2xdPVwiZGlyZWN0QWNjZXNzXCIgdHlwZT1cIm51bWJlclwiIHBsYWNlaG9sZGVyPVwiQWxsZXIgw6AgbGEgcGFnZVwiPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
@@ -0,0 +1,47 @@
1
+ import { ReplaySubject } from 'rxjs';
2
+ export class ModelListPaginator {
3
+ constructor(defaults) {
4
+ this._output = new ReplaySubject(1);
5
+ if (!defaults) {
6
+ defaults = { page_size: 20, page: 1 };
7
+ }
8
+ this._page_size = defaults.page_size || 20;
9
+ this._page = defaults.page || 1;
10
+ this._updateOutput('constructor');
11
+ }
12
+ get output() {
13
+ return this._output.asObservable();
14
+ }
15
+ setPage(page) {
16
+ if (page !== this._page) {
17
+ this._page = page;
18
+ this._updateOutput('setPage');
19
+ }
20
+ }
21
+ updatePage(page) {
22
+ if (page !== this._page) {
23
+ this._page = page;
24
+ }
25
+ }
26
+ setPageSize(size) {
27
+ if (size !== this._page_size) {
28
+ this._page_size = size;
29
+ this._updateOutput('setPageSize');
30
+ }
31
+ }
32
+ updatePageSize(size) {
33
+ if (size !== this._page_size) {
34
+ this._page_size = size;
35
+ }
36
+ }
37
+ getPageSize() {
38
+ return this._page_size;
39
+ }
40
+ getPage() {
41
+ return this._page;
42
+ }
43
+ _updateOutput(from = '') {
44
+ this._output.next({ page: this._page, page_size: this._page_size });
45
+ }
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1wYWdpbmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3QtcGFnaW5hdG9yL21vZGVsLWxpc3QtcGFnaW5hdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakQsTUFBTSxPQUFPLGtCQUFrQjtJQUk3QixZQUFZLFFBQW9CO1FBU3hCLFlBQU8sR0FBRyxJQUFJLGFBQWEsQ0FBWSxDQUFDLENBQUMsQ0FBQztRQVJoRCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsUUFBUSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDdkM7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBSUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxPQUFPLENBQUMsSUFBWTtRQUN6QixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRU0sVUFBVSxDQUFDLElBQVk7UUFDNUIsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFTSxXQUFXLENBQUMsSUFBWTtRQUM3QixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRU0sY0FBYyxDQUFDLElBQVk7UUFDaEMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRU8sYUFBYSxDQUFDLE9BQWUsRUFBRTtRQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUXVlcnlOYXYgfSBmcm9tICcuLi8uLi9kYXRhL2RhdGEtcXVlcnknO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0UGFnaW5hdG9yIHtcbiAgcHJpdmF0ZSBfcGFnZV9zaXplITogbnVtYmVyO1xuICBwcml2YXRlIF9wYWdlITogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGRlZmF1bHRzPzogSVF1ZXJ5TmF2KSB7XG4gICAgaWYgKCFkZWZhdWx0cykge1xuICAgICAgZGVmYXVsdHMgPSB7IHBhZ2Vfc2l6ZTogMjAsIHBhZ2U6IDEgfTtcbiAgICB9XG4gICAgdGhpcy5fcGFnZV9zaXplID0gZGVmYXVsdHMucGFnZV9zaXplIHx8IDIwO1xuICAgIHRoaXMuX3BhZ2UgPSBkZWZhdWx0cy5wYWdlIHx8IDE7XG4gICAgdGhpcy5fdXBkYXRlT3V0cHV0KCdjb25zdHJ1Y3RvcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb3V0cHV0ID0gbmV3IFJlcGxheVN1YmplY3Q8SVF1ZXJ5TmF2PigxKTtcblxuICBwdWJsaWMgZ2V0IG91dHB1dCgpOiBPYnNlcnZhYmxlPElRdWVyeU5hdj4ge1xuICAgIHJldHVybiB0aGlzLl9vdXRwdXQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0UGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAocGFnZSAhPT0gdGhpcy5fcGFnZSkge1xuICAgICAgdGhpcy5fcGFnZSA9IHBhZ2U7XG4gICAgICB0aGlzLl91cGRhdGVPdXRwdXQoJ3NldFBhZ2UnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAocGFnZSAhPT0gdGhpcy5fcGFnZSkge1xuICAgICAgdGhpcy5fcGFnZSA9IHBhZ2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFBhZ2VTaXplKHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChzaXplICE9PSB0aGlzLl9wYWdlX3NpemUpIHtcbiAgICAgIHRoaXMuX3BhZ2Vfc2l6ZSA9IHNpemU7XG4gICAgICB0aGlzLl91cGRhdGVPdXRwdXQoJ3NldFBhZ2VTaXplJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZVBhZ2VTaXplKHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChzaXplICE9PSB0aGlzLl9wYWdlX3NpemUpIHtcbiAgICAgIHRoaXMuX3BhZ2Vfc2l6ZSA9IHNpemU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFBhZ2VTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2Vfc2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQYWdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2U7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVPdXRwdXQoZnJvbTogc3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICB0aGlzLl9vdXRwdXQubmV4dCh7IHBhZ2U6IHRoaXMuX3BhZ2UsIHBhZ2Vfc2l6ZTogdGhpcy5fcGFnZV9zaXplIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,49 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class ModelListSorterComponent {
6
+ constructor() { }
7
+ isUp() {
8
+ const f = this.list.sorter.get(this.field);
9
+ if (f) {
10
+ return f.direction === 'asc';
11
+ }
12
+ return false;
13
+ }
14
+ isDown() {
15
+ const f = this.list.sorter.get(this.field);
16
+ if (f) {
17
+ return f.direction === 'desc';
18
+ }
19
+ return false;
20
+ }
21
+ setUp() {
22
+ this.list.sorter.set(this.field, 'asc');
23
+ }
24
+ setDown() {
25
+ this.list.sorter.set(this.field, 'desc');
26
+ }
27
+ getCount() {
28
+ return this.list.sorter.get(this.field)
29
+ ? this.list.sorter.getAll().length
30
+ : 0;
31
+ }
32
+ getOrder() {
33
+ return this.list.sorter.getOrder(this.field);
34
+ }
35
+ cancel() {
36
+ this.list.sorter.unset(this.field);
37
+ }
38
+ }
39
+ ModelListSorterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: ModelListSorterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
40
+ ModelListSorterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: ModelListSorterComponent, isStandalone: true, selector: "data-model-list-sorter", inputs: { list: "list", field: "field" }, ngImport: i0, template: "<span class=\"dirs\"><span *ngIf=\"getOrder()&gt;=0 || getCount()&gt;1\" (click)=\"cancel()\" role=\"button\"><span class=\"count\" *ngIf=\"getCount()&gt;1\"> {{getOrder()}}</span><span class=\"bi bi-x\"></span></span><span class=\"bi bi-sort-down-alt\" (click)=\"setUp()\" [class.active]=\"isUp()\" role=\"button\"></span><span class=\"bi bi-sort-down\" (click)=\"setDown()\" [class.active]=\"isDown()\" role=\"button\"></span>&nbsp;</span>\n<ng-content></ng-content>", styles: [".dirs{color:#d3d3d3}.dirs .count{font-size:.7rem;margin-right:-.1rem;vertical-align:super}.active{color:#000}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: ModelListSorterComponent, decorators: [{
42
+ type: Component,
43
+ args: [{ selector: 'data-model-list-sorter', standalone: true, imports: [CommonModule], template: "<span class=\"dirs\"><span *ngIf=\"getOrder()&gt;=0 || getCount()&gt;1\" (click)=\"cancel()\" role=\"button\"><span class=\"count\" *ngIf=\"getCount()&gt;1\"> {{getOrder()}}</span><span class=\"bi bi-x\"></span></span><span class=\"bi bi-sort-down-alt\" (click)=\"setUp()\" [class.active]=\"isUp()\" role=\"button\"></span><span class=\"bi bi-sort-down\" (click)=\"setDown()\" [class.active]=\"isDown()\" role=\"button\"></span>&nbsp;</span>\n<ng-content></ng-content>", styles: [".dirs{color:#d3d3d3}.dirs .count{font-size:.7rem;margin-right:-.1rem;vertical-align:super}.active{color:#000}\n"] }]
44
+ }], ctorParameters: function () { return []; }, propDecorators: { list: [{
45
+ type: Input
46
+ }], field: [{
47
+ type: Input
48
+ }] } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1zb3J0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL21vZGVsbGlzdC9tb2RlbC1saXN0LXNvcnRlci9tb2RlbC1saXN0LXNvcnRlci9tb2RlbC1saXN0LXNvcnRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3Qtc29ydGVyL21vZGVsLWxpc3Qtc29ydGVyL21vZGVsLWxpc3Qtc29ydGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBUy9DLE1BQU0sT0FBTyx3QkFBd0I7SUFVbkMsZ0JBQWUsQ0FBQztJQUVULElBQUk7UUFDVCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxFQUFFO1lBQ0wsT0FBTyxDQUFDLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQztTQUM5QjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLE1BQU07UUFDWCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxFQUFFO1lBQ0wsT0FBTyxDQUFDLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQztTQUMvQjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNyQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTTtZQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7O3FIQWhEVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw0SENYckMsc2RBQ3lCLHdLRFFiLFlBQVk7MkZBRVgsd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLHdCQUF3QixjQUd0QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7MEVBTVAsSUFBSTtzQkFBbkIsS0FBSztnQkFJVSxLQUFLO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kZWxMaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWwtbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtbW9kZWwtbGlzdC1zb3J0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kZWwtbGlzdC1zb3J0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RlbC1saXN0LXNvcnRlci5jb21wb25lbnQuc2FzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0U29ydGVyQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIE1vZGVsTGlzdCByZWZlcmVuY2UuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgbGlzdCE6IE1vZGVsTGlzdDxhbnk+O1xuICAvKipcbiAgICogU29ydCBmaWVsZCBuYW1lLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGZpZWxkITogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgaXNVcCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBmID0gdGhpcy5saXN0LnNvcnRlci5nZXQodGhpcy5maWVsZCk7XG4gICAgaWYgKGYpIHtcbiAgICAgIHJldHVybiBmLmRpcmVjdGlvbiA9PT0gJ2FzYyc7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0Rvd24oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZiA9IHRoaXMubGlzdC5zb3J0ZXIuZ2V0KHRoaXMuZmllbGQpO1xuICAgIGlmIChmKSB7XG4gICAgICByZXR1cm4gZi5kaXJlY3Rpb24gPT09ICdkZXNjJztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNldFVwKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdC5zb3J0ZXIuc2V0KHRoaXMuZmllbGQsICdhc2MnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREb3duKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdC5zb3J0ZXIuc2V0KHRoaXMuZmllbGQsICdkZXNjJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LnNvcnRlci5nZXQodGhpcy5maWVsZClcbiAgICAgID8gdGhpcy5saXN0LnNvcnRlci5nZXRBbGwoKS5sZW5ndGhcbiAgICAgIDogMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRPcmRlcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmxpc3Quc29ydGVyLmdldE9yZGVyKHRoaXMuZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3Quc29ydGVyLnVuc2V0KHRoaXMuZmllbGQpO1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cImRpcnNcIj48c3BhbiAqbmdJZj1cImdldE9yZGVyKCkmZ3Q7PTAgfHwgZ2V0Q291bnQoKSZndDsxXCIgKGNsaWNrKT1cImNhbmNlbCgpXCIgcm9sZT1cImJ1dHRvblwiPjxzcGFuIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cImdldENvdW50KCkmZ3Q7MVwiPiB7e2dldE9yZGVyKCl9fTwvc3Bhbj48c3BhbiBjbGFzcz1cImJpIGJpLXhcIj48L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPVwiYmkgYmktc29ydC1kb3duLWFsdFwiIChjbGljayk9XCJzZXRVcCgpXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1VwKClcIiByb2xlPVwiYnV0dG9uXCI+PC9zcGFuPjxzcGFuIGNsYXNzPVwiYmkgYmktc29ydC1kb3duXCIgKGNsaWNrKT1cInNldERvd24oKVwiIFtjbGFzcy5hY3RpdmVdPVwiaXNEb3duKClcIiByb2xlPVwiYnV0dG9uXCI+PC9zcGFuPiZuYnNwOzwvc3Bhbj5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD4iXX0=
@@ -0,0 +1,116 @@
1
+ import { ReplaySubject } from 'rxjs';
2
+ export class ModelListSorter {
3
+ /**
4
+ * Create ModelListSorter instance, using defaults.
5
+ * @param defaults defaults sort values, as a list of strings (+field, -field, field)
6
+ */
7
+ constructor(defaults = []) {
8
+ this._values = [];
9
+ this._output = new ReplaySubject(1);
10
+ this._values = [];
11
+ for (const d of defaults) {
12
+ if (d.length < 1) {
13
+ continue;
14
+ }
15
+ if (d[0] == '+') {
16
+ this._values.push({ field: d.substring(1), direction: 'asc' });
17
+ }
18
+ else if (d[0] == '-') {
19
+ this._values.push({ field: d.substring(1), direction: 'desc' });
20
+ }
21
+ else {
22
+ this._values.push({ field: d, direction: 'asc' });
23
+ }
24
+ }
25
+ this._updateOutput('constructor');
26
+ }
27
+ /**
28
+ * Returns a list of "+/-field" sort strings observable.
29
+ * @returns sort strings observable
30
+ */
31
+ get output() {
32
+ return this._output.asObservable();
33
+ }
34
+ /**
35
+ * Set sorting for `name` key, in direction `direction`.
36
+ * If sorting is already set for `name` key, updates direction without changing order.
37
+ * If sorting isn't set for `name` key, adds it at the end of sorting directions.
38
+ *
39
+ * @param name field name
40
+ * @param direction sort direction
41
+ * @returns model list sorter
42
+ */
43
+ set(name, direction) {
44
+ for (const v of this._values) {
45
+ if (v.field === name) {
46
+ v.direction = direction;
47
+ this._updateOutput();
48
+ return this;
49
+ }
50
+ }
51
+ this._values.push({ field: name, direction });
52
+ this._updateOutput('set');
53
+ return this;
54
+ }
55
+ /**
56
+ * Removes `name` sorting key from current keys.
57
+ *
58
+ * @param name sort key to be removed
59
+ * @returns model list sorter
60
+ */
61
+ unset(name) {
62
+ for (let i = 0; i < this._values.length; i++) {
63
+ if (this._values[i].field === name) {
64
+ this._values.splice(i, 1);
65
+ break;
66
+ }
67
+ }
68
+ this._updateOutput('unset');
69
+ return this;
70
+ }
71
+ /**
72
+ * Get sorting status for `field` argument.
73
+ * If `field` is not found, returns null.
74
+ *
75
+ * @param field field name
76
+ * @returns ordering direction / null
77
+ */
78
+ get(field) {
79
+ for (const v of this._values) {
80
+ if (v.field === field) {
81
+ return v;
82
+ }
83
+ }
84
+ return null;
85
+ }
86
+ /**
87
+ * Return all sorter data values.
88
+ *
89
+ * @returns all sorter data values.
90
+ */
91
+ getAll() {
92
+ return this._values;
93
+ }
94
+ /**
95
+ * Get the ordering position for `field` argument. If not found, returns -1.
96
+ *
97
+ * @param field field name
98
+ * @returns ordering position for field
99
+ */
100
+ getOrder(field) {
101
+ for (let i = 0; i < this._values.length; i++) {
102
+ if (this._values[i].field === field) {
103
+ return i + 1;
104
+ }
105
+ }
106
+ return -1;
107
+ }
108
+ _updateOutput(_from = '') {
109
+ let out = [];
110
+ for (const v of this._values) {
111
+ out.push(`${v.direction === 'asc' ? '' : '-'}${v.field}`);
112
+ }
113
+ this._output.next(out);
114
+ }
115
+ }
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbGlzdC1zb3J0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvbW9kZWxsaXN0L21vZGVsLWxpc3Qtc29ydGVyL21vZGVsLWxpc3Qtc29ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFhakQsTUFBTSxPQUFPLGVBQWU7SUFHMUI7OztPQUdHO0lBQ0gsWUFBWSxXQUEyQixFQUFFO1FBTnhCLFlBQU8sR0FBZSxFQUFFLENBQUM7UUFPeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixLQUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVEsRUFBRTtZQUN4QixJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNoQixTQUFTO2FBQ1Y7WUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUNoRTtpQkFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7YUFDakU7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQ25EO1NBQ0Y7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFJRDs7O09BR0c7SUFDSCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksR0FBRyxDQUFDLElBQVksRUFBRSxTQUF3QjtRQUMvQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDNUIsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtnQkFDcEIsQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxJQUFZO1FBQ3ZCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtnQkFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixNQUFNO2FBQ1A7U0FDRjtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksR0FBRyxDQUFDLEtBQWE7UUFDdEIsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzVCLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7Z0JBQ3JCLE9BQU8sQ0FBQyxDQUFDO2FBQ1Y7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFFBQVEsQ0FBQyxLQUFhO1FBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRTtnQkFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2Q7U0FDRjtRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRU8sYUFBYSxDQUFDLFFBQWdCLEVBQUU7UUFDdEMsSUFBSSxHQUFHLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUM1QixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU29ydGVyRGVmYXVsdHMgfSBmcm9tICcuLi9tb2RlbC1saXN0LnNlcnZpY2UnO1xuXG4vLyBUT0RPOiBhZGQgYW4gb3B0aW9uIHRvIGxpbWl0IHRoZSBudW1iZXIgb2Ygb3JkZXJpbmcgZmllbGRzIChlZy4gZm9yIHRyZWUgcXVlcmllcylcbmV4cG9ydCB0eXBlIFNvcnREaXJlY3Rpb24gPSAnYXNjJyB8ICdkZXNjJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWVsZFNvcnREYXRhIHtcbiAgZmllbGQ6IHN0cmluZztcbiAgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xufVxuXG5leHBvcnQgdHlwZSBTb3J0ZXJEYXRhID0gRmllbGRTb3J0RGF0YVtdO1xuXG5leHBvcnQgY2xhc3MgTW9kZWxMaXN0U29ydGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmFsdWVzOiBTb3J0ZXJEYXRhID0gW107XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBNb2RlbExpc3RTb3J0ZXIgaW5zdGFuY2UsIHVzaW5nIGRlZmF1bHRzLlxuICAgKiBAcGFyYW0gZGVmYXVsdHMgZGVmYXVsdHMgc29ydCB2YWx1ZXMsIGFzIGEgbGlzdCBvZiBzdHJpbmdzICgrZmllbGQsIC1maWVsZCwgZmllbGQpXG4gICAqL1xuICBjb25zdHJ1Y3RvcihkZWZhdWx0czogU29ydGVyRGVmYXVsdHMgPSBbXSkge1xuICAgIHRoaXMuX291dHB1dCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICAgIHRoaXMuX3ZhbHVlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgZCBvZiBkZWZhdWx0cykge1xuICAgICAgaWYgKGQubGVuZ3RoIDwgMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChkWzBdID09ICcrJykge1xuICAgICAgICB0aGlzLl92YWx1ZXMucHVzaCh7IGZpZWxkOiBkLnN1YnN0cmluZygxKSwgZGlyZWN0aW9uOiAnYXNjJyB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZFswXSA9PSAnLScpIHtcbiAgICAgICAgdGhpcy5fdmFsdWVzLnB1c2goeyBmaWVsZDogZC5zdWJzdHJpbmcoMSksIGRpcmVjdGlvbjogJ2Rlc2MnIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdmFsdWVzLnB1c2goeyBmaWVsZDogZCwgZGlyZWN0aW9uOiAnYXNjJyB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdXBkYXRlT3V0cHV0KCdjb25zdHJ1Y3RvcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb3V0cHV0OiBSZXBsYXlTdWJqZWN0PHN0cmluZ1tdPjtcblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgXCIrLy1maWVsZFwiIHNvcnQgc3RyaW5ncyBvYnNlcnZhYmxlLlxuICAgKiBAcmV0dXJucyBzb3J0IHN0cmluZ3Mgb2JzZXJ2YWJsZVxuICAgKi9cbiAgcHVibGljIGdldCBvdXRwdXQoKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9vdXRwdXQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHNvcnRpbmcgZm9yIGBuYW1lYCBrZXksIGluIGRpcmVjdGlvbiBgZGlyZWN0aW9uYC5cbiAgICogSWYgc29ydGluZyBpcyBhbHJlYWR5IHNldCBmb3IgYG5hbWVgIGtleSwgdXBkYXRlcyBkaXJlY3Rpb24gd2l0aG91dCBjaGFuZ2luZyBvcmRlci5cbiAgICogSWYgc29ydGluZyBpc24ndCBzZXQgZm9yIGBuYW1lYCBrZXksIGFkZHMgaXQgYXQgdGhlIGVuZCBvZiBzb3J0aW5nIGRpcmVjdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIGZpZWxkIG5hbWVcbiAgICogQHBhcmFtIGRpcmVjdGlvbiBzb3J0IGRpcmVjdGlvblxuICAgKiBAcmV0dXJucyBtb2RlbCBsaXN0IHNvcnRlclxuICAgKi9cbiAgcHVibGljIHNldChuYW1lOiBzdHJpbmcsIGRpcmVjdGlvbjogU29ydERpcmVjdGlvbik6IE1vZGVsTGlzdFNvcnRlciB7XG4gICAgZm9yIChjb25zdCB2IG9mIHRoaXMuX3ZhbHVlcykge1xuICAgICAgaWYgKHYuZmllbGQgPT09IG5hbWUpIHtcbiAgICAgICAgdi5kaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gICAgICAgIHRoaXMuX3VwZGF0ZU91dHB1dCgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdmFsdWVzLnB1c2goeyBmaWVsZDogbmFtZSwgZGlyZWN0aW9uIH0pO1xuICAgIHRoaXMuX3VwZGF0ZU91dHB1dCgnc2V0Jyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBgbmFtZWAgc29ydGluZyBrZXkgZnJvbSBjdXJyZW50IGtleXMuXG4gICAqXG4gICAqIEBwYXJhbSAgbmFtZSBzb3J0IGtleSB0byBiZSByZW1vdmVkXG4gICAqIEByZXR1cm5zIG1vZGVsIGxpc3Qgc29ydGVyXG4gICAqL1xuICBwdWJsaWMgdW5zZXQobmFtZTogc3RyaW5nKTogTW9kZWxMaXN0U29ydGVyIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3ZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuX3ZhbHVlc1tpXS5maWVsZCA9PT0gbmFtZSkge1xuICAgICAgICB0aGlzLl92YWx1ZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdXBkYXRlT3V0cHV0KCd1bnNldCcpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzb3J0aW5nIHN0YXR1cyBmb3IgYGZpZWxkYCBhcmd1bWVudC5cbiAgICogSWYgYGZpZWxkYCBpcyBub3QgZm91bmQsIHJldHVybnMgbnVsbC5cbiAgICpcbiAgICogQHBhcmFtICBmaWVsZCBmaWVsZCBuYW1lXG4gICAqIEByZXR1cm5zIG9yZGVyaW5nIGRpcmVjdGlvbiAvIG51bGxcbiAgICovXG4gIHB1YmxpYyBnZXQoZmllbGQ6IHN0cmluZyk6IEZpZWxkU29ydERhdGEgfCBudWxsIHtcbiAgICBmb3IgKGNvbnN0IHYgb2YgdGhpcy5fdmFsdWVzKSB7XG4gICAgICBpZiAodi5maWVsZCA9PT0gZmllbGQpIHtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbGwgc29ydGVyIGRhdGEgdmFsdWVzLlxuICAgKlxuICAgKiBAcmV0dXJucyBhbGwgc29ydGVyIGRhdGEgdmFsdWVzLlxuICAgKi9cbiAgcHVibGljIGdldEFsbCgpOiBTb3J0ZXJEYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgb3JkZXJpbmcgcG9zaXRpb24gZm9yIGBmaWVsZGAgYXJndW1lbnQuIElmIG5vdCBmb3VuZCwgcmV0dXJucyAtMS5cbiAgICpcbiAgICogQHBhcmFtICBmaWVsZCBmaWVsZCBuYW1lXG4gICAqIEByZXR1cm5zIG9yZGVyaW5nIHBvc2l0aW9uIGZvciBmaWVsZFxuICAgKi9cbiAgcHVibGljIGdldE9yZGVyKGZpZWxkOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5fdmFsdWVzW2ldLmZpZWxkID09PSBmaWVsZCkge1xuICAgICAgICByZXR1cm4gaSArIDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZU91dHB1dChfZnJvbTogc3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICBsZXQgb3V0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgdiBvZiB0aGlzLl92YWx1ZXMpIHtcbiAgICAgIG91dC5wdXNoKGAke3YuZGlyZWN0aW9uID09PSAnYXNjJyA/ICcnIDogJy0nfSR7di5maWVsZH1gKTtcbiAgICB9XG4gICAgdGhpcy5fb3V0cHV0Lm5leHQob3V0KTtcbiAgfVxufVxuIl19