@ecodev/natural 62.1.2 → 63.0.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.
- package/fesm2022/ecodev-natural-vanilla.mjs +1193 -0
- package/fesm2022/ecodev-natural-vanilla.mjs.map +1 -0
- package/fesm2022/ecodev-natural.mjs +436 -425
- package/fesm2022/ecodev-natural.mjs.map +1 -1
- package/lib/classes/network-activity.service.d.ts +54 -0
- package/lib/classes/validators.d.ts +1 -1
- package/lib/modules/columns-picker/columns-picker.component.d.ts +2 -2
- package/lib/modules/common/services/seo.provider.d.ts +2 -2
- package/lib/modules/dropdown-components/type-select/type-select.component.d.ts +1 -1
- package/lib/modules/file/abstract-file.d.ts +6 -3
- package/lib/modules/file/component/file.component.d.ts +2 -2
- package/lib/modules/file/file-drop.directive.d.ts +2 -3
- package/lib/modules/fixed-button-detail/fixed-button-detail.component.d.ts +2 -3
- package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.d.ts +3 -3
- package/lib/modules/icon/icon.module.d.ts +2 -2
- package/lib/modules/panels/panels.service.d.ts +1 -2
- package/lib/modules/relations/relations.component.d.ts +3 -3
- package/lib/modules/search/dropdown-container/dropdown-container.component.d.ts +2 -3
- package/lib/modules/search/group/group.component.d.ts +2 -3
- package/lib/modules/search/input/input.component.d.ts +5 -5
- package/lib/modules/search/search/search.component.d.ts +2 -2
- package/lib/modules/select/abstract-select.component.d.ts +3 -3
- package/lib/modules/select/select/select.component.d.ts +1 -1
- package/lib/modules/sidenav/sidenav-container/sidenav-container.component.d.ts +1 -1
- package/lib/modules/table-button/table-button.component.d.ts +4 -2
- package/package.json +16 -14
- package/public-api.d.ts +1 -0
- package/src/lib/_natural.theme.scss +1 -2
- package/vanilla/index.d.ts +5 -0
- package/vanilla/package.json +3 -0
- package/vanilla/public-api.d.ts +11 -0
- package/vanilla/src/lib/classes/crypto.d.ts +8 -0
- package/vanilla/src/lib/classes/data-source.d.ts +32 -0
- package/vanilla/src/lib/classes/query-variable-manager-utils.d.ts +2 -0
- package/vanilla/src/lib/classes/query-variable-manager.d.ts +91 -0
- package/vanilla/src/lib/classes/signing.d.ts +7 -0
- package/vanilla/src/lib/classes/utility.d.ts +77 -0
- package/vanilla/src/lib/modules/search/classes/graphql-doctrine.types.d.ts +83 -0
- package/vanilla/src/lib/modules/search/classes/utils.d.ts +17 -0
- package/vanilla/src/lib/modules/search/types/dropdown-component.d.ts +20 -0
- package/vanilla/src/lib/modules/search/types/facet.d.ts +75 -0
- package/vanilla/src/lib/modules/search/types/values.d.ts +32 -0
- package/vanilla/src/lib/services/abstract-model.service.d.ts +244 -0
- package/vanilla/src/lib/services/debounce.service.d.ts +52 -0
- package/vanilla/src/lib/types/types.d.ts +100 -0
- package/esm2022/ecodev-natural.mjs +0 -5
- package/esm2022/lib/classes/abstract-detail.mjs +0 -229
- package/esm2022/lib/classes/abstract-editable-list.mjs +0 -99
- package/esm2022/lib/classes/abstract-list.mjs +0 -461
- package/esm2022/lib/classes/abstract-navigable-list.mjs +0 -133
- package/esm2022/lib/classes/apollo-utils.mjs +0 -59
- package/esm2022/lib/classes/crypto.mjs +0 -23
- package/esm2022/lib/classes/cumulative-changes.mjs +0 -50
- package/esm2022/lib/classes/data-source.mjs +0 -71
- package/esm2022/lib/classes/providers.mjs +0 -13
- package/esm2022/lib/classes/query-variable-manager-utils.mjs +0 -14
- package/esm2022/lib/classes/query-variable-manager.mjs +0 -172
- package/esm2022/lib/classes/rxjs.mjs +0 -54
- package/esm2022/lib/classes/signing.mjs +0 -38
- package/esm2022/lib/classes/tld.mjs +0 -1476
- package/esm2022/lib/classes/utility.mjs +0 -234
- package/esm2022/lib/classes/validators.mjs +0 -179
- package/esm2022/lib/directives/http-prefix.directive.mjs +0 -47
- package/esm2022/lib/modules/alert/alert.service.mjs +0 -53
- package/esm2022/lib/modules/alert/confirm.component.mjs +0 -16
- package/esm2022/lib/modules/alert/public-api.mjs +0 -6
- package/esm2022/lib/modules/avatar/component/avatar.component.mjs +0 -203
- package/esm2022/lib/modules/avatar/public-api.mjs +0 -6
- package/esm2022/lib/modules/avatar/service/avatar.service.mjs +0 -63
- package/esm2022/lib/modules/avatar/sources/gravatar.mjs +0 -29
- package/esm2022/lib/modules/avatar/sources/image.mjs +0 -13
- package/esm2022/lib/modules/avatar/sources/initials.mjs +0 -39
- package/esm2022/lib/modules/avatar/sources/source.mjs +0 -16
- package/esm2022/lib/modules/columns-picker/columns-picker.component.mjs +0 -145
- package/esm2022/lib/modules/columns-picker/public-api.mjs +0 -5
- package/esm2022/lib/modules/columns-picker/types.mjs +0 -2
- package/esm2022/lib/modules/common/directives/background-density.directive.mjs +0 -63
- package/esm2022/lib/modules/common/directives/linkable-tab.directive.mjs +0 -93
- package/esm2022/lib/modules/common/directives/src-density.directive.mjs +0 -72
- package/esm2022/lib/modules/common/pipes/capitalize.pipe.mjs +0 -24
- package/esm2022/lib/modules/common/pipes/ellipsis.pipe.mjs +0 -17
- package/esm2022/lib/modules/common/pipes/enum.pipe.mjs +0 -24
- package/esm2022/lib/modules/common/pipes/time-ago.pipe.mjs +0 -140
- package/esm2022/lib/modules/common/public-api.mjs +0 -14
- package/esm2022/lib/modules/common/services/memory-storage.mjs +0 -110
- package/esm2022/lib/modules/common/services/seo.provider.mjs +0 -23
- package/esm2022/lib/modules/common/services/seo.service.mjs +0 -235
- package/esm2022/lib/modules/detail-header/detail-header.component.mjs +0 -84
- package/esm2022/lib/modules/detail-header/public-api.mjs +0 -5
- package/esm2022/lib/modules/dialog-trigger/dialog-trigger.component.mjs +0 -72
- package/esm2022/lib/modules/dialog-trigger/public-api.mjs +0 -5
- package/esm2022/lib/modules/dropdown-components/abstract-association-select-component.directive.mjs +0 -100
- package/esm2022/lib/modules/dropdown-components/public-api.mjs +0 -14
- package/esm2022/lib/modules/dropdown-components/type-boolean/type-boolean.component.mjs +0 -39
- package/esm2022/lib/modules/dropdown-components/type-date/type-date.component.mjs +0 -173
- package/esm2022/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +0 -134
- package/esm2022/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +0 -80
- package/esm2022/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +0 -48
- package/esm2022/lib/modules/dropdown-components/type-number/type-number.component.mjs +0 -110
- package/esm2022/lib/modules/dropdown-components/type-options/type-options.component.mjs +0 -64
- package/esm2022/lib/modules/dropdown-components/type-select/type-select.component.mjs +0 -175
- package/esm2022/lib/modules/dropdown-components/type-text/type-text.component.mjs +0 -62
- package/esm2022/lib/modules/dropdown-components/types.mjs +0 -41
- package/esm2022/lib/modules/dropdown-components/utils.mjs +0 -35
- package/esm2022/lib/modules/file/abstract-file.mjs +0 -230
- package/esm2022/lib/modules/file/component/file.component.mjs +0 -172
- package/esm2022/lib/modules/file/file-drop.directive.mjs +0 -111
- package/esm2022/lib/modules/file/file-select.directive.mjs +0 -26
- package/esm2022/lib/modules/file/file.service.mjs +0 -43
- package/esm2022/lib/modules/file/public-api.mjs +0 -9
- package/esm2022/lib/modules/file/types.mjs +0 -2
- package/esm2022/lib/modules/file/utils.mjs +0 -129
- package/esm2022/lib/modules/fixed-button/fixed-button.component.mjs +0 -30
- package/esm2022/lib/modules/fixed-button/public-api.mjs +0 -5
- package/esm2022/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +0 -56
- package/esm2022/lib/modules/fixed-button-detail/public-api.mjs +0 -5
- package/esm2022/lib/modules/hierarchic-selector/classes/flat-node.mjs +0 -18
- package/esm2022/lib/modules/hierarchic-selector/classes/hierarchic-configuration.mjs +0 -2
- package/esm2022/lib/modules/hierarchic-selector/classes/hierarchic-filters-configuration.mjs +0 -2
- package/esm2022/lib/modules/hierarchic-selector/classes/model-node.mjs +0 -14
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +0 -398
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +0 -243
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +0 -38
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +0 -22
- package/esm2022/lib/modules/hierarchic-selector/public-api.mjs +0 -10
- package/esm2022/lib/modules/icon/icon.directive.mjs +0 -96
- package/esm2022/lib/modules/icon/icon.module.mjs +0 -33
- package/esm2022/lib/modules/icon/public-api.mjs +0 -6
- package/esm2022/lib/modules/logger/error-handler.mjs +0 -87
- package/esm2022/lib/modules/logger/error.module.mjs +0 -22
- package/esm2022/lib/modules/logger/public-api.mjs +0 -6
- package/esm2022/lib/modules/matomo/matomo.service.mjs +0 -96
- package/esm2022/lib/modules/matomo/public-api.mjs +0 -5
- package/esm2022/lib/modules/panels/abstract-panel.mjs +0 -76
- package/esm2022/lib/modules/panels/fallback-if-no-opened-panels.urlmatcher.mjs +0 -12
- package/esm2022/lib/modules/panels/panels.component.mjs +0 -27
- package/esm2022/lib/modules/panels/panels.module.mjs +0 -10
- package/esm2022/lib/modules/panels/panels.service.mjs +0 -329
- package/esm2022/lib/modules/panels/panels.urlmatcher.mjs +0 -75
- package/esm2022/lib/modules/panels/public-api.mjs +0 -11
- package/esm2022/lib/modules/panels/types.mjs +0 -3
- package/esm2022/lib/modules/relations/public-api.mjs +0 -5
- package/esm2022/lib/modules/relations/relations.component.mjs +0 -254
- package/esm2022/lib/modules/search/classes/graphql-doctrine.mjs +0 -111
- package/esm2022/lib/modules/search/classes/graphql-doctrine.types.mjs +0 -14
- package/esm2022/lib/modules/search/classes/transformers.mjs +0 -142
- package/esm2022/lib/modules/search/classes/url.mjs +0 -53
- package/esm2022/lib/modules/search/classes/utils.mjs +0 -25
- package/esm2022/lib/modules/search/dropdown-container/dropdown-container-animations.mjs +0 -44
- package/esm2022/lib/modules/search/dropdown-container/dropdown-container.component.mjs +0 -87
- package/esm2022/lib/modules/search/dropdown-container/dropdown-ref.mjs +0 -24
- package/esm2022/lib/modules/search/dropdown-container/dropdown.service.mjs +0 -90
- package/esm2022/lib/modules/search/facet-selector/facet-selector.component.mjs +0 -45
- package/esm2022/lib/modules/search/group/group.component.mjs +0 -53
- package/esm2022/lib/modules/search/input/input.component.mjs +0 -365
- package/esm2022/lib/modules/search/public-api.mjs +0 -7
- package/esm2022/lib/modules/search/search/search.component.mjs +0 -102
- package/esm2022/lib/modules/search/types/dropdown-component.mjs +0 -2
- package/esm2022/lib/modules/search/types/facet.mjs +0 -2
- package/esm2022/lib/modules/search/types/values.mjs +0 -2
- package/esm2022/lib/modules/select/abstract-select.component.mjs +0 -232
- package/esm2022/lib/modules/select/public-api.mjs +0 -7
- package/esm2022/lib/modules/select/select/select.component.mjs +0 -310
- package/esm2022/lib/modules/select/select-enum/select-enum.component.mjs +0 -57
- package/esm2022/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +0 -155
- package/esm2022/lib/modules/sidenav/public-api.mjs +0 -9
- package/esm2022/lib/modules/sidenav/sidenav/sidenav.component.mjs +0 -15
- package/esm2022/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +0 -90
- package/esm2022/lib/modules/sidenav/sidenav-content/sidenav-content.component.mjs +0 -11
- package/esm2022/lib/modules/sidenav/sidenav-stack.service.mjs +0 -50
- package/esm2022/lib/modules/sidenav/sidenav.service.mjs +0 -196
- package/esm2022/lib/modules/stamp/public-api.mjs +0 -5
- package/esm2022/lib/modules/stamp/stamp.component.mjs +0 -23
- package/esm2022/lib/modules/table-button/public-api.mjs +0 -5
- package/esm2022/lib/modules/table-button/table-button.component.mjs +0 -78
- package/esm2022/lib/services/abstract-model.service.mjs +0 -526
- package/esm2022/lib/services/debounce.service.mjs +0 -149
- package/esm2022/lib/services/enum.service.mjs +0 -64
- package/esm2022/lib/services/link-mutation.service.mjs +0 -154
- package/esm2022/lib/services/persistence.service.mjs +0 -115
- package/esm2022/lib/services/swiss-parsing-date-adapter.service.mjs +0 -63
- package/esm2022/lib/types/types.mjs +0 -2
- package/esm2022/public-api.mjs +0 -46
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
import { Component, ContentChild, DestroyRef, EventEmitter, inject, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
|
|
2
|
-
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
3
|
-
import { NaturalDataSource } from '../../classes/data-source';
|
|
4
|
-
import { NaturalQueryVariablesManager } from '../../classes/query-variable-manager';
|
|
5
|
-
import { NaturalLinkMutationService } from '../../services/link-mutation.service';
|
|
6
|
-
import { NaturalHierarchicSelectorDialogService } from '../hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service';
|
|
7
|
-
import { NaturalSelectComponent } from '../select/select/select.component';
|
|
8
|
-
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
9
|
-
import { NaturalIconDirective } from '../icon/icon.directive';
|
|
10
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
11
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
12
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
13
|
-
import { MatTableModule } from '@angular/material/table';
|
|
14
|
-
import { CommonModule } from '@angular/common';
|
|
15
|
-
import { finalize, forkJoin, tap } from 'rxjs';
|
|
16
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
import * as i1 from "@angular/common";
|
|
19
|
-
import * as i2 from "@angular/material/table";
|
|
20
|
-
import * as i3 from "@angular/material/button";
|
|
21
|
-
import * as i4 from "@angular/material/tooltip";
|
|
22
|
-
import * as i5 from "@angular/material/icon";
|
|
23
|
-
import * as i6 from "@angular/material/paginator";
|
|
24
|
-
import * as i7 from "@angular/material/progress-spinner";
|
|
25
|
-
/**
|
|
26
|
-
* Custom template usage :
|
|
27
|
-
*
|
|
28
|
-
* ```html
|
|
29
|
-
* <natural-relations [main]="owner" [service]="svc" [filter]="{}" placeholder="Select an item">
|
|
30
|
-
* <ng-template let-item="item">
|
|
31
|
-
* <span>{{ item.xxx }}</span>
|
|
32
|
-
* </ng-template>
|
|
33
|
-
* </natural-relations>
|
|
34
|
-
* ```
|
|
35
|
-
*/
|
|
36
|
-
export class NaturalRelationsComponent {
|
|
37
|
-
destroyRef = inject(DestroyRef);
|
|
38
|
-
linkMutationService = inject(NaturalLinkMutationService);
|
|
39
|
-
hierarchicSelectorDialog = inject(NaturalHierarchicSelectorDialogService);
|
|
40
|
-
select;
|
|
41
|
-
itemTemplate;
|
|
42
|
-
_service;
|
|
43
|
-
get service() {
|
|
44
|
-
return this._service;
|
|
45
|
-
}
|
|
46
|
-
set service(service) {
|
|
47
|
-
this._service = service;
|
|
48
|
-
this.loading = true;
|
|
49
|
-
const items$ = this._service.watchAll(this.variablesManager).pipe(takeUntilDestroyed(this.destroyRef), tap({
|
|
50
|
-
next: () => (this.loading = false),
|
|
51
|
-
complete: () => (this.loading = false),
|
|
52
|
-
error: () => (this.loading = false),
|
|
53
|
-
}));
|
|
54
|
-
this.dataSource = new NaturalDataSource(items$);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* The placeholder used in the button to add a new relation
|
|
58
|
-
*/
|
|
59
|
-
placeholder = '';
|
|
60
|
-
/**
|
|
61
|
-
* Filter for autocomplete selector
|
|
62
|
-
*/
|
|
63
|
-
autocompleteSelectorFilter;
|
|
64
|
-
/**
|
|
65
|
-
* Function to customize the rendering of the selected item as text in input
|
|
66
|
-
*/
|
|
67
|
-
displayWith;
|
|
68
|
-
/**
|
|
69
|
-
* Whether the relations can be changed
|
|
70
|
-
*/
|
|
71
|
-
disabled = false;
|
|
72
|
-
/**
|
|
73
|
-
* The main object to which all relations belong to
|
|
74
|
-
*/
|
|
75
|
-
main;
|
|
76
|
-
/**
|
|
77
|
-
* Emits after relations were successfully added on the server
|
|
78
|
-
*/
|
|
79
|
-
selectionChange = new EventEmitter();
|
|
80
|
-
/**
|
|
81
|
-
* Filters for hierarchic selector
|
|
82
|
-
*/
|
|
83
|
-
hierarchicSelectorFilters;
|
|
84
|
-
/**
|
|
85
|
-
* Configuration in case we prefer hierarchic selection over autocomplete selection
|
|
86
|
-
*/
|
|
87
|
-
hierarchicSelectorConfig;
|
|
88
|
-
/**
|
|
89
|
-
* Link mutation semantic
|
|
90
|
-
*/
|
|
91
|
-
otherName;
|
|
92
|
-
/**
|
|
93
|
-
* Listing service instance
|
|
94
|
-
*/
|
|
95
|
-
dataSource;
|
|
96
|
-
loading = false;
|
|
97
|
-
/**
|
|
98
|
-
* Table columns
|
|
99
|
-
*/
|
|
100
|
-
displayedColumns = ['name'];
|
|
101
|
-
pageSizeOptions = [5, 25, 50, 100];
|
|
102
|
-
defaultPagination = {
|
|
103
|
-
pageIndex: 0,
|
|
104
|
-
pageSize: 25,
|
|
105
|
-
};
|
|
106
|
-
/**
|
|
107
|
-
* Observable variables/options for listing service usage and apollo watchQuery
|
|
108
|
-
*/
|
|
109
|
-
variablesManager = new NaturalQueryVariablesManager();
|
|
110
|
-
removing = new Set();
|
|
111
|
-
/**
|
|
112
|
-
* The filter used to filter relations
|
|
113
|
-
*
|
|
114
|
-
* So if the relations are from one action -> to many objectives, then the filter must filter
|
|
115
|
-
* the objectives that have indeed a relation to the particular action.
|
|
116
|
-
*/
|
|
117
|
-
set filter(filter) {
|
|
118
|
-
this.variablesManager.set('relations-filter', { filter: filter });
|
|
119
|
-
}
|
|
120
|
-
ngOnChanges() {
|
|
121
|
-
if (this.disabled && this.displayedColumns.includes('unlink')) {
|
|
122
|
-
this.displayedColumns.pop();
|
|
123
|
-
}
|
|
124
|
-
else if (!this.disabled && !this.displayedColumns.includes('unlink')) {
|
|
125
|
-
this.displayedColumns.push('unlink');
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
ngOnInit() {
|
|
129
|
-
this.pagination();
|
|
130
|
-
// Force disabled if cannot update object
|
|
131
|
-
if (this.main && this.main.permissions) {
|
|
132
|
-
this.disabled = this.disabled || !this.main.permissions.update;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Unlink action
|
|
137
|
-
* Refetch result to display it in table
|
|
138
|
-
*/
|
|
139
|
-
removeRelation(relation) {
|
|
140
|
-
this.removing.add(relation);
|
|
141
|
-
this.linkMutationService
|
|
142
|
-
.unlink(this.main, relation, this.otherName)
|
|
143
|
-
.pipe(finalize(() => this.removing.delete(relation)))
|
|
144
|
-
.subscribe(() => this.dataSource?.remove(relation));
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Link action
|
|
148
|
-
* Refetch result to display it in table
|
|
149
|
-
* TODO : could maybe use "update" attribute of apollo.mutate function to update table faster (but hard to do it here)
|
|
150
|
-
*/
|
|
151
|
-
addRelations(relations) {
|
|
152
|
-
const observables = relations
|
|
153
|
-
.filter((relation) => !!relation && typeof relation === 'object')
|
|
154
|
-
.map(relation => this.linkMutationService.link(this.main, relation, this.otherName));
|
|
155
|
-
forkJoin(observables).subscribe(() => {
|
|
156
|
-
this.selectionChange.emit();
|
|
157
|
-
this.select?.clear();
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
pagination(event) {
|
|
161
|
-
let pagination = null;
|
|
162
|
-
if (event &&
|
|
163
|
-
(event.pageIndex !== this.defaultPagination.pageIndex || event.pageSize !== this.defaultPagination.pageSize)) {
|
|
164
|
-
pagination = {
|
|
165
|
-
pageIndex: event.pageIndex,
|
|
166
|
-
pageSize: event.pageSize,
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
this.variablesManager.set('pagination', { pagination: pagination ? pagination : this.defaultPagination });
|
|
170
|
-
}
|
|
171
|
-
getDisplayFn() {
|
|
172
|
-
if (this.displayWith) {
|
|
173
|
-
return this.displayWith;
|
|
174
|
-
}
|
|
175
|
-
return (item) => (item ? item.fullName || item.name : '');
|
|
176
|
-
}
|
|
177
|
-
openNaturalHierarchicSelector() {
|
|
178
|
-
const selectAtKey = this.getSelectKey();
|
|
179
|
-
if (!selectAtKey || !this.hierarchicSelectorConfig) {
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
const selected = {};
|
|
183
|
-
const hierarchicConfig = {
|
|
184
|
-
hierarchicConfig: this.hierarchicSelectorConfig,
|
|
185
|
-
hierarchicSelection: selected,
|
|
186
|
-
hierarchicFilters: this.hierarchicSelectorFilters,
|
|
187
|
-
multiple: true,
|
|
188
|
-
};
|
|
189
|
-
this.hierarchicSelectorDialog
|
|
190
|
-
.open(hierarchicConfig)
|
|
191
|
-
.afterClosed()
|
|
192
|
-
.subscribe(result => {
|
|
193
|
-
if (result?.hierarchicSelection !== undefined) {
|
|
194
|
-
const selection = result.hierarchicSelection[selectAtKey];
|
|
195
|
-
if (selection.length) {
|
|
196
|
-
this.addRelations(selection);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
getSelectKey() {
|
|
202
|
-
if (!this.hierarchicSelectorConfig) {
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
return this.hierarchicSelectorConfig.find(c => !!c.selectableAtKey)?.selectableAtKey;
|
|
206
|
-
}
|
|
207
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalRelationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
208
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalRelationsComponent, isStandalone: true, selector: "natural-relations", inputs: { service: "service", placeholder: "placeholder", autocompleteSelectorFilter: "autocompleteSelectorFilter", displayWith: "displayWith", disabled: "disabled", main: "main", hierarchicSelectorFilters: "hierarchicSelectorFilters", hierarchicSelectorConfig: "hierarchicSelectorConfig", otherName: "otherName", filter: "filter" }, outputs: { selectionChange: "selectionChange" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "select", first: true, predicate: NaturalSelectComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"body\">\n <ng-template #defaultNameCell let-item=\"item\">\n {{ getDisplayFn()(item) }}\n </ng-template>\n\n <table [dataSource]=\"dataSource\" class=\"natural-row-click\" mat-table>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row style=\"display: none\"></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns\" mat-row></tr>\n\n <ng-container matColumnDef=\"name\">\n <th *matHeaderCellDef i18n mat-header-cell>Titre</th>\n <td *matCellDef=\"let item\" mat-cell>\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultNameCell\"\n />\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"unlink\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n @if (!disabled) {\n <button\n (click)=\"removeRelation(element)\"\n [disabled]=\"removing.has(element)\"\n color=\"warn\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Dissocier\"\n >\n <mat-icon naturalIcon=\"link_off\" />\n </button>\n }\n </td>\n </ng-container>\n </table>\n\n @if (dataSource.data && (dataSource.data.length || 0) > (dataSource.data.pageSize || 0)) {\n <mat-paginator\n (page)=\"pagination($event)\"\n [length]=\"dataSource.data.length || 0\"\n [pageIndex]=\"dataSource.data.pageIndex || 0\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [pageSize]=\"dataSource.data.pageSize || 0\"\n />\n }\n\n @if (!loading && dataSource.data?.length === 0) {\n <div class=\"nat-margin-vertical mat-body\">\n <span i18n>Aucun r\u00E9sultat</span>\n </div>\n }\n\n @if (loading) {\n <mat-progress-spinner [diameter]=\"40\" class=\"loading\" mode=\"indeterminate\" />\n }\n</div>\n\n@if (!disabled) {\n @if (hierarchicSelectorConfig) {\n <div>\n <button (click)=\"openNaturalHierarchicSelector()\" color=\"primary\" mat-flat-button>{{ placeholder }}</button>\n </div>\n } @else {\n <natural-select\n (selectionChange)=\"addRelations([$event])\"\n [displayWith]=\"$any(getDisplayFn())\"\n [filter]=\"autocompleteSelectorFilter\"\n [placeholder]=\"placeholder\"\n [service]=\"service\"\n [showIcon]=\"false\"\n />\n }\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host .body{display:flex;flex-direction:column}:host .loading{margin:20px auto}:host .mat-column-unlink{width:2.5em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i6.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: NaturalSelectComponent, selector: "natural-select", inputs: ["service", "optionRequired", "searchField", "searchOperator", "filter", "disabled"] }] });
|
|
209
|
-
}
|
|
210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalRelationsComponent, decorators: [{
|
|
211
|
-
type: Component,
|
|
212
|
-
args: [{ selector: 'natural-relations', standalone: true, imports: [
|
|
213
|
-
CommonModule,
|
|
214
|
-
MatTableModule,
|
|
215
|
-
MatButtonModule,
|
|
216
|
-
MatTooltipModule,
|
|
217
|
-
MatIconModule,
|
|
218
|
-
NaturalIconDirective,
|
|
219
|
-
MatPaginatorModule,
|
|
220
|
-
MatProgressSpinnerModule,
|
|
221
|
-
NaturalSelectComponent,
|
|
222
|
-
], template: "<div class=\"body\">\n <ng-template #defaultNameCell let-item=\"item\">\n {{ getDisplayFn()(item) }}\n </ng-template>\n\n <table [dataSource]=\"dataSource\" class=\"natural-row-click\" mat-table>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row style=\"display: none\"></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns\" mat-row></tr>\n\n <ng-container matColumnDef=\"name\">\n <th *matHeaderCellDef i18n mat-header-cell>Titre</th>\n <td *matCellDef=\"let item\" mat-cell>\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultNameCell\"\n />\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"unlink\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n @if (!disabled) {\n <button\n (click)=\"removeRelation(element)\"\n [disabled]=\"removing.has(element)\"\n color=\"warn\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Dissocier\"\n >\n <mat-icon naturalIcon=\"link_off\" />\n </button>\n }\n </td>\n </ng-container>\n </table>\n\n @if (dataSource.data && (dataSource.data.length || 0) > (dataSource.data.pageSize || 0)) {\n <mat-paginator\n (page)=\"pagination($event)\"\n [length]=\"dataSource.data.length || 0\"\n [pageIndex]=\"dataSource.data.pageIndex || 0\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [pageSize]=\"dataSource.data.pageSize || 0\"\n />\n }\n\n @if (!loading && dataSource.data?.length === 0) {\n <div class=\"nat-margin-vertical mat-body\">\n <span i18n>Aucun r\u00E9sultat</span>\n </div>\n }\n\n @if (loading) {\n <mat-progress-spinner [diameter]=\"40\" class=\"loading\" mode=\"indeterminate\" />\n }\n</div>\n\n@if (!disabled) {\n @if (hierarchicSelectorConfig) {\n <div>\n <button (click)=\"openNaturalHierarchicSelector()\" color=\"primary\" mat-flat-button>{{ placeholder }}</button>\n </div>\n } @else {\n <natural-select\n (selectionChange)=\"addRelations([$event])\"\n [displayWith]=\"$any(getDisplayFn())\"\n [filter]=\"autocompleteSelectorFilter\"\n [placeholder]=\"placeholder\"\n [service]=\"service\"\n [showIcon]=\"false\"\n />\n }\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host .body{display:flex;flex-direction:column}:host .loading{margin:20px auto}:host .mat-column-unlink{width:2.5em}\n"] }]
|
|
223
|
-
}], propDecorators: { select: [{
|
|
224
|
-
type: ViewChild,
|
|
225
|
-
args: [NaturalSelectComponent]
|
|
226
|
-
}], itemTemplate: [{
|
|
227
|
-
type: ContentChild,
|
|
228
|
-
args: [TemplateRef]
|
|
229
|
-
}], service: [{
|
|
230
|
-
type: Input,
|
|
231
|
-
args: [{ required: true }]
|
|
232
|
-
}], placeholder: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], autocompleteSelectorFilter: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], displayWith: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], disabled: [{
|
|
239
|
-
type: Input
|
|
240
|
-
}], main: [{
|
|
241
|
-
type: Input,
|
|
242
|
-
args: [{ required: true }]
|
|
243
|
-
}], selectionChange: [{
|
|
244
|
-
type: Output
|
|
245
|
-
}], hierarchicSelectorFilters: [{
|
|
246
|
-
type: Input
|
|
247
|
-
}], hierarchicSelectorConfig: [{
|
|
248
|
-
type: Input
|
|
249
|
-
}], otherName: [{
|
|
250
|
-
type: Input
|
|
251
|
-
}], filter: [{
|
|
252
|
-
type: Input
|
|
253
|
-
}] } });
|
|
254
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3JlbGF0aW9ucy9yZWxhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvcmVsYXRpb25zL3JlbGF0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFZLE1BQU0sNkJBQTZCLENBQUM7QUFDMUUsT0FBTyxFQUFDLGlCQUFpQixFQUFnQixNQUFNLDJCQUEyQixDQUFDO0FBQzNFLE9BQU8sRUFBQyw0QkFBNEIsRUFBa0MsTUFBTSxzQ0FBc0MsQ0FBQztBQUVuSCxPQUFPLEVBQWlCLDBCQUEwQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFHaEcsT0FBTyxFQUFDLHNDQUFzQyxFQUFDLE1BQU0sc0ZBQXNGLENBQUM7QUFDNUksT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFHekUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMs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bnRDaGlsZCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0UGFnaW5hdG9yTW9kdWxlLCBQYWdlRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQge05hdHVyYWxEYXRhU291cmNlLCBQYWdpbmF0ZWREYXRhfSBmcm9tICcuLi8uLi9jbGFzc2VzL2RhdGEtc291cmNlJztcbmltcG9ydCB7TmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlciwgUGFnaW5hdGlvbklucHV0LCBRdWVyeVZhcmlhYmxlc30gZnJvbSAnLi4vLi4vY2xhc3Nlcy9xdWVyeS12YXJpYWJsZS1tYW5hZ2VyJztcbmltcG9ydCB7SGllcmFyY2hpY0ZpbHRlcnNDb25maWd1cmF0aW9ufSBmcm9tICcuLi9oaWVyYXJjaGljLXNlbGVjdG9yL2NsYXNzZXMvaGllcmFyY2hpYy1maWx0ZXJzLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtMaW5rYWJsZU9iamVjdCwgTmF0dXJhbExpbmtNdXRhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xpbmstbXV0YXRpb24uc2VydmljZSc7XG5pbXBvcnQge05hdHVyYWxIaWVyYXJjaGljQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vaGllcmFyY2hpYy1zZWxlY3Rvci9jbGFzc2VzL2hpZXJhcmNoaWMtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge0hpZXJhcmNoaWNEaWFsb2dDb25maWd9IGZyb20gJy4uL2hpZXJhcmNoaWMtc2VsZWN0b3IvaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cvaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7TmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ1NlcnZpY2V9IGZyb20gJy4uL2hpZXJhcmNoaWMtc2VsZWN0b3IvaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cvaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQge05hdHVyYWxTZWxlY3RDb21wb25lbnR9IGZyb20gJy4uL3NlbGVjdC9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWJzdHJhY3QtbW9kZWwuc2VydmljZSc7XG5pbXBvcnQge0V4dHJhY3RUYWxsT25lLCBFeHRyYWN0VmFsbH0gZnJvbSAnLi4vLi4vdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHtOYXR1cmFsSWNvbkRpcmVjdGl2ZX0gZnJvbSAnLi4vaWNvbi9pY29uLmRpcmVjdGl2ZSc7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtNYXRUb29sdGlwTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtNYXRUYWJsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge2ZpbmFsaXplLCBmb3JrSm9pbiwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKlxuICogQ3VzdG9tIHRlbXBsYXRlIHVzYWdlIDpcbiAqXG4gKiBgYGBodG1sXG4gKiA8bmF0dXJhbC1yZWxhdGlvbnMgW21haW5dPVwib3duZXJcIiBbc2VydmljZV09XCJzdmNcIiBbZmlsdGVyXT1cInt9XCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgYW4gaXRlbVwiPlxuICogICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAqICAgICAgICAgPHNwYW4+e3sgaXRlbS54eHggfX08L3NwYW4+XG4gKiAgICAgPC9uZy10ZW1wbGF0ZT5cbiAqIDwvbmF0dXJhbC1yZWxhdGlvbnM+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYXR1cmFsLXJlbGF0aW9ucycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JlbGF0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3JlbGF0aW9ucy5jb21wb25lbnQuc2NzcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0VGFibGVNb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTmF0dXJhbEljb25EaXJlY3RpdmUsXG4gICAgICAgIE1hdFBhZ2luYXRvck1vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgICAgICBOYXR1cmFsU2VsZWN0Q29tcG9uZW50LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxSZWxhdGlvbnNDb21wb25lbnQ8XG4gICAgICAgIFRTZXJ2aWNlIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlPFxuICAgICAgICAgICAgdW5rbm93bixcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIFBhZ2luYXRlZERhdGE8TGlua2FibGVPYmplY3Q+LFxuICAgICAgICAgICAgUXVlcnlWYXJpYWJsZXMsXG4gICAgICAgICAgICB1bmtub3duLFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgdW5rbm93bixcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIHVua25vd24sXG4gICAgICAgICAgICBhbnlcbiAgICAgICAgPixcbiAgICA+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpbmtNdXRhdGlvblNlcnZpY2UgPSBpbmplY3QoTmF0dXJhbExpbmtNdXRhdGlvblNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nID0gaW5qZWN0KE5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlKTtcbiAgICBAVmlld0NoaWxkKE5hdHVyYWxTZWxlY3RDb21wb25lbnQpIHByaXZhdGUgc2VsZWN0PzogTmF0dXJhbFNlbGVjdENvbXBvbmVudDxUU2VydmljZT47XG4gICAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgcHVibGljIGl0ZW1UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gICAgcHJpdmF0ZSBfc2VydmljZSE6IFRTZXJ2aWNlO1xuXG4gICAgcHVibGljIGdldCBzZXJ2aWNlKCk6IFRTZXJ2aWNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlcnZpY2U7XG4gICAgfVxuXG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pXG4gICAgcHVibGljIHNldCBzZXJ2aWNlKHNlcnZpY2U6IFRTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuX3NlcnZpY2UgPSBzZXJ2aWNlO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBpdGVtcyQgPSB0aGlzLl9zZXJ2aWNlLndhdGNoQWxsKHRoaXMudmFyaWFibGVzTWFuYWdlcikucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgICAgICAgdGFwKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE5hdHVyYWxEYXRhU291cmNlKGl0ZW1zJCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHBsYWNlaG9sZGVyIHVzZWQgaW4gdGhlIGJ1dHRvbiB0byBhZGQgYSBuZXcgcmVsYXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciBmb3IgYXV0b2NvbXBsZXRlIHNlbGVjdG9yXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGF1dG9jb21wbGV0ZVNlbGVjdG9yRmlsdGVyPzogRXh0cmFjdFZhbGw8VFNlcnZpY2U+WydmaWx0ZXInXSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBjdXN0b21pemUgdGhlIHJlbmRlcmluZyBvZiB0aGUgc2VsZWN0ZWQgaXRlbSBhcyB0ZXh0IGluIGlucHV0XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGRpc3BsYXlXaXRoPzogKGl0ZW06IEV4dHJhY3RUYWxsT25lPFRTZXJ2aWNlPiB8IG51bGwpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHJlbGF0aW9ucyBjYW4gYmUgY2hhbmdlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG1haW4gb2JqZWN0IHRvIHdoaWNoIGFsbCByZWxhdGlvbnMgYmVsb25nIHRvXG4gICAgICovXG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIHB1YmxpYyBtYWluITogTGlua2FibGVPYmplY3QgJiB7cGVybWlzc2lvbnM/OiB7dXBkYXRlOiBib29sZWFufX07XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBhZnRlciByZWxhdGlvbnMgd2VyZSBzdWNjZXNzZnVsbHkgYWRkZWQgb24gdGhlIHNlcnZlclxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVycyBmb3IgaGllcmFyY2hpYyBzZWxlY3RvclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBoaWVyYXJjaGljU2VsZWN0b3JGaWx0ZXJzPzogSGllcmFyY2hpY0ZpbHRlcnNDb25maWd1cmF0aW9uIHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gaW4gY2FzZSB3ZSBwcmVmZXIgaGllcmFyY2hpYyBzZWxlY3Rpb24gb3ZlciBhdXRvY29tcGxldGUgc2VsZWN0aW9uXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGhpZXJhcmNoaWNTZWxlY3RvckNvbmZpZz86IE5hdHVyYWxIaWVyYXJjaGljQ29uZmlndXJhdGlvbltdO1xuXG4gICAgLyoqXG4gICAgICogTGluayBtdXRhdGlvbiBzZW1hbnRpY1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBvdGhlck5hbWU/OiBzdHJpbmcgfCBudWxsO1xuXG4gICAgLyoqXG4gICAgICogTGlzdGluZyBzZXJ2aWNlIGluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIGRhdGFTb3VyY2UhOiBOYXR1cmFsRGF0YVNvdXJjZTxQYWdpbmF0ZWREYXRhPExpbmthYmxlT2JqZWN0Pj47XG4gICAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRhYmxlIGNvbHVtbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzcGxheWVkQ29sdW1ucyA9IFsnbmFtZSddO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHBhZ2VTaXplT3B0aW9ucyA9IFs1LCAyNSwgNTAsIDEwMF07XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHRQYWdpbmF0aW9uID0ge1xuICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgIHBhZ2VTaXplOiAyNSxcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogT2JzZXJ2YWJsZSB2YXJpYWJsZXMvb3B0aW9ucyBmb3IgbGlzdGluZyBzZXJ2aWNlIHVzYWdlIGFuZCBhcG9sbG8gd2F0Y2hRdWVyeVxuICAgICAqL1xuICAgIHByaXZhdGUgdmFyaWFibGVzTWFuYWdlciA9IG5ldyBOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyPFF1ZXJ5VmFyaWFibGVzPigpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHJlbW92aW5nID0gbmV3IFNldDxMaW5rYWJsZU9iamVjdD4oKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBmaWx0ZXIgdXNlZCB0byBmaWx0ZXIgcmVsYXRpb25zXG4gICAgICpcbiAgICAgKiBTbyBpZiB0aGUgcmVsYXRpb25zIGFyZSBmcm9tIG9uZSBhY3Rpb24gLT4gdG8gbWFueSBvYmplY3RpdmVzLCB0aGVuIHRoZSBmaWx0ZXIgbXVzdCBmaWx0ZXJcbiAgICAgKiB0aGUgb2JqZWN0aXZlcyB0aGF0IGhhdmUgaW5kZWVkIGEgcmVsYXRpb24gdG8gdGhlIHBhcnRpY3VsYXIgYWN0aW9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBmaWx0ZXIoZmlsdGVyOiBFeHRyYWN0VmFsbDxUU2VydmljZT5bJ2ZpbHRlciddKSB7XG4gICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5zZXQoJ3JlbGF0aW9ucy1maWx0ZXInLCB7ZmlsdGVyOiBmaWx0ZXJ9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkICYmIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5pbmNsdWRlcygndW5saW5rJykpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5wb3AoKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmluY2x1ZGVzKCd1bmxpbmsnKSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnB1c2goJ3VubGluaycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24oKTtcblxuICAgICAgICAvLyBGb3JjZSBkaXNhYmxlZCBpZiBjYW5ub3QgdXBkYXRlIG9iamVjdFxuICAgICAgICBpZiAodGhpcy5tYWluICYmIHRoaXMubWFpbi5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMubWFpbi5wZXJtaXNzaW9ucy51cGRhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbmxpbmsgYWN0aW9uXG4gICAgICogUmVmZXRjaCByZXN1bHQgdG8gZGlzcGxheSBpdCBpbiB0YWJsZVxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVSZWxhdGlvbihyZWxhdGlvbjogTGlua2FibGVPYmplY3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmluZy5hZGQocmVsYXRpb24pO1xuXG4gICAgICAgIHRoaXMubGlua011dGF0aW9uU2VydmljZVxuICAgICAgICAgICAgLnVubGluayh0aGlzLm1haW4sIHJlbGF0aW9uLCB0aGlzLm90aGVyTmFtZSlcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMucmVtb3ZpbmcuZGVsZXRlKHJlbGF0aW9uKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZGF0YVNvdXJjZT8ucmVtb3ZlKHJlbGF0aW9uKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGluayBhY3Rpb25cbiAgICAgKiBSZWZldGNoIHJlc3VsdCB0byBkaXNwbGF5IGl0IGluIHRhYmxlXG4gICAgICogVE9ETyA6IGNvdWxkIG1heWJlIHVzZSBcInVwZGF0ZVwiIGF0dHJpYnV0ZSBvZiBhcG9sbG8ubXV0YXRlIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0YWJsZSBmYXN0ZXIgKGJ1dCBoYXJkIHRvIGRvIGl0IGhlcmUpXG4gICAgICovXG4gICAgcHVibGljIGFkZFJlbGF0aW9ucyhyZWxhdGlvbnM6IChMaW5rYWJsZU9iamVjdCB8IEV4dHJhY3RUYWxsT25lPFRTZXJ2aWNlPiB8IHN0cmluZyB8IG51bGwpW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZXMgPSByZWxhdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlbGF0aW9uKTogcmVsYXRpb24gaXMgTGlua2FibGVPYmplY3QgPT4gISFyZWxhdGlvbiAmJiB0eXBlb2YgcmVsYXRpb24gPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgLm1hcChyZWxhdGlvbiA9PiB0aGlzLmxpbmtNdXRhdGlvblNlcnZpY2UubGluayh0aGlzLm1haW4sIHJlbGF0aW9uLCB0aGlzLm90aGVyTmFtZSkpO1xuXG4gICAgICAgIGZvcmtKb2luKG9ic2VydmFibGVzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCgpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Q/LmNsZWFyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYWdpbmF0aW9uKGV2ZW50PzogUGFnZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGxldCBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uSW5wdXQgfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXZlbnQgJiZcbiAgICAgICAgICAgIChldmVudC5wYWdlSW5kZXggIT09IHRoaXMuZGVmYXVsdFBhZ2luYXRpb24ucGFnZUluZGV4IHx8IGV2ZW50LnBhZ2VTaXplICE9PSB0aGlzLmRlZmF1bHRQYWdpbmF0aW9uLnBhZ2VTaXplKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHBhZ2luYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgcGFnZUluZGV4OiBldmVudC5wYWdlSW5kZXgsXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IGV2ZW50LnBhZ2VTaXplLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5zZXQoJ3BhZ2luYXRpb24nLCB7cGFnaW5hdGlvbjogcGFnaW5hdGlvbiA/IHBhZ2luYXRpb24gOiB0aGlzLmRlZmF1bHRQYWdpbmF0aW9ufSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERpc3BsYXlGbigpOiAoaXRlbTogRXh0cmFjdFRhbGxPbmU8VFNlcnZpY2U+IHwgbnVsbCkgPT4gc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheVdpdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlXaXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChpdGVtOiBhbnkpID0+IChpdGVtID8gaXRlbS5mdWxsTmFtZSB8fCBpdGVtLm5hbWUgOiAnJyk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5OYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RBdEtleSA9IHRoaXMuZ2V0U2VsZWN0S2V5KCk7XG5cbiAgICAgICAgaWYgKCFzZWxlY3RBdEtleSB8fCAhdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JDb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0ge307XG5cbiAgICAgICAgY29uc3QgaGllcmFyY2hpY0NvbmZpZzogSGllcmFyY2hpY0RpYWxvZ0NvbmZpZyA9IHtcbiAgICAgICAgICAgIGhpZXJhcmNoaWNDb25maWc6IHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnLFxuICAgICAgICAgICAgaGllcmFyY2hpY1NlbGVjdGlvbjogc2VsZWN0ZWQsXG4gICAgICAgICAgICBoaWVyYXJjaGljRmlsdGVyczogdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JGaWx0ZXJzLFxuICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dcbiAgICAgICAgICAgIC5vcGVuKGhpZXJhcmNoaWNDb25maWcpXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQ/LmhpZXJhcmNoaWNTZWxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSByZXN1bHQuaGllcmFyY2hpY1NlbGVjdGlvbltzZWxlY3RBdEtleV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFJlbGF0aW9ucyhzZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RLZXkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLmhpZXJhcmNoaWNTZWxlY3RvckNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnLmZpbmQoYyA9PiAhIWMuc2VsZWN0YWJsZUF0S2V5KT8uc2VsZWN0YWJsZUF0S2V5O1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJib2R5XCI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TmFtZUNlbGwgbGV0LWl0ZW09XCJpdGVtXCI+XG4gICAgICAgIHt7IGdldERpc3BsYXlGbigpKGl0ZW0pIH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDx0YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgY2xhc3M9XCJuYXR1cmFsLXJvdy1jbGlja1wiIG1hdC10YWJsZT5cbiAgICAgICAgPHRyICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCIgbWF0LWhlYWRlci1yb3cgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+PC90cj5cbiAgICAgICAgPHRyICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCIgbWF0LXJvdz48L3RyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibmFtZVwiPlxuICAgICAgICAgICAgPHRoICptYXRIZWFkZXJDZWxsRGVmIGkxOG4gbWF0LWhlYWRlci1jZWxsPlRpdHJlPC90aD5cbiAgICAgICAgICAgIDx0ZCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbX1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVGVtcGxhdGUgPyBpdGVtVGVtcGxhdGUgOiBkZWZhdWx0TmFtZUNlbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVubGlua1wiPlxuICAgICAgICAgICAgPHRoICptYXRIZWFkZXJDZWxsRGVmIG1hdC1oZWFkZXItY2VsbD48L3RoPlxuICAgICAgICAgICAgPHRkICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBtYXQtY2VsbD5cbiAgICAgICAgICAgICAgICBAaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUmVsYXRpb24oZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlbW92aW5nLmhhcyhlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEaXNzb2NpZXJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbmF0dXJhbEljb249XCJsaW5rX29mZlwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGFibGU+XG5cbiAgICBAaWYgKGRhdGFTb3VyY2UuZGF0YSAmJiAoZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCB8fCAwKSA+IChkYXRhU291cmNlLmRhdGEucGFnZVNpemUgfHwgMCkpIHtcbiAgICAgICAgPG1hdC1wYWdpbmF0b3JcbiAgICAgICAgICAgIChwYWdlKT1cInBhZ2luYXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICBbbGVuZ3RoXT1cImRhdGFTb3VyY2UuZGF0YS5sZW5ndGggfHwgMFwiXG4gICAgICAgICAgICBbcGFnZUluZGV4XT1cImRhdGFTb3VyY2UuZGF0YS5wYWdlSW5kZXggfHwgMFwiXG4gICAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwiZGF0YVNvdXJjZS5kYXRhLnBhZ2VTaXplIHx8IDBcIlxuICAgICAgICAvPlxuICAgIH1cblxuICAgIEBpZiAoIWxvYWRpbmcgJiYgZGF0YVNvdXJjZS5kYXRhPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdC1tYXJnaW4tdmVydGljYWwgbWF0LWJvZHlcIj5cbiAgICAgICAgICAgIDxzcGFuIGkxOG4+QXVjdW4gcsOpc3VsdGF0PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKGxvYWRpbmcpIHtcbiAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIFtkaWFtZXRlcl09XCI0MFwiIGNsYXNzPVwibG9hZGluZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgLz5cbiAgICB9XG48L2Rpdj5cblxuQGlmICghZGlzYWJsZWQpIHtcbiAgICBAaWYgKGhpZXJhcmNoaWNTZWxlY3RvckNvbmZpZykge1xuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib3Blbk5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3IoKVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1mbGF0LWJ1dHRvbj57eyBwbGFjZWhvbGRlciB9fTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPG5hdHVyYWwtc2VsZWN0XG4gICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImFkZFJlbGF0aW9ucyhbJGV2ZW50XSlcIlxuICAgICAgICAgICAgW2Rpc3BsYXlXaXRoXT1cIiRhbnkoZ2V0RGlzcGxheUZuKCkpXCJcbiAgICAgICAgICAgIFtmaWx0ZXJdPVwiYXV0b2NvbXBsZXRlU2VsZWN0b3JGaWx0ZXJcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFtzZXJ2aWNlXT1cInNlcnZpY2VcIlxuICAgICAgICAgICAgW3Nob3dJY29uXT1cImZhbHNlXCJcbiAgICAgICAgLz5cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { LogicalOperator, } from './graphql-doctrine.types';
|
|
2
|
-
import { deepClone, getFacetFromSelection } from './utils';
|
|
3
|
-
import { replaceToday } from './transformers';
|
|
4
|
-
import { TypeDateComponent } from '../../dropdown-components/type-date/type-date.component';
|
|
5
|
-
export function toGraphQLDoctrineFilter(facets, selections) {
|
|
6
|
-
selections = deepClone(selections);
|
|
7
|
-
const filter = {};
|
|
8
|
-
if (!selections || selections.length === 0) {
|
|
9
|
-
selections = [[]];
|
|
10
|
-
}
|
|
11
|
-
for (const groupSelections of selections) {
|
|
12
|
-
const group = {};
|
|
13
|
-
const neededInversedFlags = facets ? facets.filter(isInvertedFlag) : [];
|
|
14
|
-
for (const selection of groupSelections) {
|
|
15
|
-
const facet = getFacetFromSelection(facets, selection);
|
|
16
|
-
const transformedSelection = transformSelection(facet, selection);
|
|
17
|
-
// Skip inverted flag and remove it from needed inverted flags
|
|
18
|
-
if (isInvertedFlag(facet)) {
|
|
19
|
-
neededInversedFlags.splice(neededInversedFlags.indexOf(facet), 1);
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
applyJoinAndCondition(group, transformedSelection);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
for (const facet of neededInversedFlags) {
|
|
26
|
-
const transformedSelection = transformSelection(facet, {
|
|
27
|
-
field: facet.field,
|
|
28
|
-
name: facet.name,
|
|
29
|
-
condition: deepClone(facet.condition),
|
|
30
|
-
});
|
|
31
|
-
applyJoinAndCondition(group, transformedSelection);
|
|
32
|
-
}
|
|
33
|
-
addGroupToFilter(filter, group);
|
|
34
|
-
}
|
|
35
|
-
return filter;
|
|
36
|
-
}
|
|
37
|
-
function applyJoinAndCondition(group, selection) {
|
|
38
|
-
// Apply join, then apply operator on that join, if field name has a '.'
|
|
39
|
-
const [joinedRelation, joinedField] = selection.field.split('.');
|
|
40
|
-
let container;
|
|
41
|
-
let wrappedCondition;
|
|
42
|
-
if (joinedField) {
|
|
43
|
-
container = addJoinToGroup(group, joinedRelation);
|
|
44
|
-
wrappedCondition = wrapWithFieldName(joinedField, selection.condition);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
container = group;
|
|
48
|
-
wrappedCondition = wrapWithFieldName(selection.field, selection.condition);
|
|
49
|
-
}
|
|
50
|
-
addConditionToContainer(container, wrappedCondition);
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Only add join if it does not already exists
|
|
54
|
-
*/
|
|
55
|
-
function addJoinToGroup(group, joinedRelation) {
|
|
56
|
-
if (!group.joins) {
|
|
57
|
-
group.joins = {};
|
|
58
|
-
}
|
|
59
|
-
if (!group.joins[joinedRelation]) {
|
|
60
|
-
group.joins[joinedRelation] = {};
|
|
61
|
-
}
|
|
62
|
-
return group.joins[joinedRelation];
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Only add condition to group or join if it's valid
|
|
66
|
-
*/
|
|
67
|
-
function addConditionToContainer(container, condition) {
|
|
68
|
-
if (!condition) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
if (!container.conditions) {
|
|
72
|
-
container.conditions = [];
|
|
73
|
-
}
|
|
74
|
-
container.conditions.push(condition);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Only add the group if there is something meaningful
|
|
78
|
-
*/
|
|
79
|
-
function addGroupToFilter(filter, group) {
|
|
80
|
-
if (group.conditions || group.joins) {
|
|
81
|
-
if (!filter.groups) {
|
|
82
|
-
filter.groups = [];
|
|
83
|
-
}
|
|
84
|
-
filter.groups.push(group);
|
|
85
|
-
if (filter.groups.length > 1) {
|
|
86
|
-
group.groupLogic = LogicalOperator.OR;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
function wrapWithFieldName(field, condition) {
|
|
91
|
-
const result = {};
|
|
92
|
-
// We assume a custom operator "search"
|
|
93
|
-
if (field === 'search' && condition.like) {
|
|
94
|
-
return { custom: { search: { value: condition.like.value } } };
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
result[field] = condition;
|
|
98
|
-
}
|
|
99
|
-
return result;
|
|
100
|
-
}
|
|
101
|
-
function transformSelection(facet, selection) {
|
|
102
|
-
const newSelection = facet?.transform ? facet.transform(selection) : selection;
|
|
103
|
-
return isDateFacet(facet) ? replaceToday(newSelection) : selection;
|
|
104
|
-
}
|
|
105
|
-
function isInvertedFlag(facet) {
|
|
106
|
-
return (!!facet && 'inversed' in facet && facet.inversed) || false;
|
|
107
|
-
}
|
|
108
|
-
function isDateFacet(facet) {
|
|
109
|
-
return !!facet && 'component' in facet && facet.component === TypeDateComponent;
|
|
110
|
-
}
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1kb2N0cmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9jbGFzc2VzL2dyYXBocWwtZG9jdHJpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQU1ILGVBQWUsR0FDbEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUMsU0FBUyxFQUFFLHFCQUFxQixFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ3pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsaUJBQWlCLEVBQXdCLE1BQU0seURBQXlELENBQUM7QUFFakgsTUFBTSxVQUFVLHVCQUF1QixDQUNuQyxNQUFrQyxFQUNsQyxVQUEwQztJQUUxQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRW5DLE1BQU0sTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUMxQixJQUFJLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELEtBQUssTUFBTSxlQUFlLElBQUksVUFBVSxFQUFFLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQWdCLEVBQUUsQ0FBQztRQUM5QixNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXhFLEtBQUssTUFBTSxTQUFTLElBQUksZUFBZSxFQUFFLENBQUM7WUFDdEMsTUFBTSxLQUFLLEdBQUcscUJBQXFCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCLENBQUMs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SUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUN2RSxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBbUI7SUFDcEMsT0FBTyxDQUFDLENBQUMsS0FBSyxJQUFJLFdBQVcsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxpQkFBaUIsQ0FBQztBQUNwRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEcm9wZG93bkZhY2V0LCBGYWNldCwgRmxhZ0ZhY2V0LCBOYXR1cmFsU2VhcmNoRmFjZXRzfSBmcm9tICcuLi90eXBlcy9mYWNldCc7XG5pbXBvcnQge05hdHVyYWxTZWFyY2hTZWxlY3Rpb24sIE5hdHVyYWxTZWFyY2hTZWxlY3Rpb25zfSBmcm9tICcuLi90eXBlcy92YWx1ZXMnO1xuaW1wb3J0IHtcbiAgICBGaWx0ZXIsXG4gICAgRmlsdGVyR3JvdXAsXG4gICAgRmlsdGVyR3JvdXBDb25kaXRpb24sXG4gICAgRmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZCxcbiAgICBKb2luT24sXG4gICAgTG9naWNhbE9wZXJhdG9yLFxufSBmcm9tICcuL2dyYXBocWwtZG9jdHJpbmUudHlwZXMnO1xuaW1wb3J0IHtkZWVwQ2xvbmUsIGdldEZhY2V0RnJvbVNlbGVjdGlvbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge3JlcGxhY2VUb2RheX0gZnJvbSAnLi90cmFuc2Zvcm1lcnMnO1xuaW1wb3J0IHtUeXBlRGF0ZUNvbXBvbmVudCwgVHlwZURhdGVDb25maWd1cmF0aW9ufSBmcm9tICcuLi8uLi9kcm9wZG93bi1jb21wb25lbnRzL3R5cGUtZGF0ZS90eXBlLWRhdGUuY29tcG9uZW50JztcblxuZXhwb3J0IGZ1bmN0aW9uIHRvR3JhcGhRTERvY3RyaW5lRmlsdGVyKFxuICAgIGZhY2V0czogTmF0dXJhbFNlYXJjaEZhY2V0cyB8IG51bGwsXG4gICAgc2VsZWN0aW9uczogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbnMgfCBudWxsLFxuKTogRmlsdGVyIHtcbiAgICBzZWxlY3Rpb25zID0gZGVlcENsb25lKHNlbGVjdGlvbnMpO1xuXG4gICAgY29uc3QgZmlsdGVyOiBGaWx0ZXIgPSB7fTtcbiAgICBpZiAoIXNlbGVjdGlvbnMgfHwgc2VsZWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgc2VsZWN0aW9ucyA9IFtbXV07XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBncm91cFNlbGVjdGlvbnMgb2Ygc2VsZWN0aW9ucykge1xuICAgICAgICBjb25zdCBncm91cDogRmlsdGVyR3JvdXAgPSB7fTtcbiAgICAgICAgY29uc3QgbmVlZGVkSW52ZXJzZWRGbGFncyA9IGZhY2V0cyA/IGZhY2V0cy5maWx0ZXIoaXNJbnZlcnRlZEZsYWcpIDogW107XG5cbiAgICAgICAgZm9yIChjb25zdCBzZWxlY3Rpb24gb2YgZ3JvdXBTZWxlY3Rpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBmYWNldCA9IGdldEZhY2V0RnJvbVNlbGVjdGlvbihmYWNldHMsIHNlbGVjdGlvbik7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHRyYW5zZm9ybVNlbGVjdGlvbihmYWNldCwgc2VsZWN0aW9uKTtcblxuICAgICAgICAgICAgLy8gU2tpcCBpbnZlcnRlZCBmbGFnIGFuZCByZW1vdmUgaXQgZnJvbSBuZWVkZWQgaW52ZXJ0ZWQgZmxhZ3NcbiAgICAgICAgICAgIGlmIChpc0ludmVydGVkRmxhZyhmYWNldCkpIHtcbiAgICAgICAgICAgICAgICBuZWVkZWRJbnZlcnNlZEZsYWdzLnNwbGljZShuZWVkZWRJbnZlcnNlZEZsYWdzLmluZGV4T2YoZmFjZXQpLCAxKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXBwbHlKb2luQW5kQ29uZGl0aW9uKGdyb3VwLCB0cmFuc2Zvcm1lZFNlbGVjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGZhY2V0IG9mIG5lZWRlZEludmVyc2VkRmxhZ3MpIHtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gdHJhbnNmb3JtU2VsZWN0aW9uKGZhY2V0LCB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IGZhY2V0LmZpZWxkLFxuICAgICAgICAgICAgICAgIG5hbWU6IGZhY2V0Lm5hbWUsXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOiBkZWVwQ2xvbmUoZmFjZXQuY29uZGl0aW9uKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXBwbHlKb2luQW5kQ29uZGl0aW9uKGdyb3VwLCB0cmFuc2Zvcm1lZFNlbGVjdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBhZGRHcm91cFRvRmlsdGVyKGZpbHRlciwgZ3JvdXApO1xuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXI7XG59XG5cbmZ1bmN0aW9uIGFwcGx5Sm9pbkFuZENvbmRpdGlvbihncm91cDogRmlsdGVyR3JvdXAsIHNlbGVjdGlvbjogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbik6IHZvaWQge1xuICAgIC8vIEFwcGx5IGpvaW4sIHRoZW4gYXBwbHkgb3BlcmF0b3Igb24gdGhhdCBqb2luLCBpZiBmaWVsZCBuYW1lIGhhcyBhICcuJ1xuICAgIGNvbnN0IFtqb2luZWRSZWxhdGlvbiwgam9pbmVkRmllbGRdID0gc2VsZWN0aW9uLmZpZWxkLnNwbGl0KCcuJyk7XG4gICAgbGV0IGNvbnRhaW5lcjtcbiAgICBsZXQgd3JhcHBlZENvbmRpdGlvbjtcbiAgICBpZiAoam9pbmVkRmllbGQpIHtcbiAgICAgICAgY29udGFpbmVyID0gYWRkSm9pblRvR3JvdXAoZ3JvdXAsIGpvaW5lZFJlbGF0aW9uKTtcbiAgICAgICAgd3JhcHBlZENvbmRpdGlvbiA9IHdyYXBXaXRoRmllbGROYW1lKGpvaW5lZEZpZWxkLCBzZWxlY3Rpb24uY29uZGl0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb250YWluZXIgPSBncm91cDtcbiAgICAgICAgd3JhcHBlZENvbmRpdGlvbiA9IHdyYXBXaXRoRmllbGROYW1lKHNlbGVjdGlvbi5maWVsZCwgc2VsZWN0aW9uLmNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgYWRkQ29uZGl0aW9uVG9Db250YWluZXIoY29udGFpbmVyLCB3cmFwcGVkQ29uZGl0aW9uKTtcbn1cblxuLyoqXG4gKiBPbmx5IGFkZCBqb2luIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3RzXG4gKi9cbmZ1bmN0aW9uIGFkZEpvaW5Ub0dyb3VwKGdyb3VwOiBGaWx0ZXJHcm91cCwgam9pbmVkUmVsYXRpb246IHN0cmluZyk6IEpvaW5PbiB7XG4gICAgaWYgKCFncm91cC5qb2lucykge1xuICAgICAgICBncm91cC5qb2lucyA9IHt9O1xuICAgIH1cblxuICAgIGlmICghZ3JvdXAuam9pbnNbam9pbmVkUmVsYXRpb25dKSB7XG4gICAgICAgIGdyb3VwLmpvaW5zW2pvaW5lZFJlbGF0aW9uXSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBncm91cC5qb2luc1tqb2luZWRSZWxhdGlvbl07XG59XG5cbi8qKlxuICogT25seSBhZGQgY29uZGl0aW9uIHRvIGdyb3VwIG9yIGpvaW4gaWYgaXQncyB2YWxpZFxuICovXG5mdW5jdGlvbiBhZGRDb25kaXRpb25Ub0NvbnRhaW5lcihjb250YWluZXI6IEZpbHRlckdyb3VwIHwgSm9pbk9uLCBjb25kaXRpb246IEZpbHRlckdyb3VwQ29uZGl0aW9uKTogdm9pZCB7XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghY29udGFpbmVyLmNvbmRpdGlvbnMpIHtcbiAgICAgICAgY29udGFpbmVyLmNvbmRpdGlvbnMgPSBbXTtcbiAgICB9XG5cbiAgICBjb250YWluZXIuY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG59XG5cbi8qKlxuICogT25seSBhZGQgdGhlIGdyb3VwIGlmIHRoZXJlIGlzIHNvbWV0aGluZyBtZWFuaW5nZnVsXG4gKi9cbmZ1bmN0aW9uIGFkZEdyb3VwVG9GaWx0ZXIoZmlsdGVyOiBGaWx0ZXIsIGdyb3VwOiBGaWx0ZXJHcm91cCk6IHZvaWQge1xuICAgIGlmIChncm91cC5jb25kaXRpb25zIHx8IGdyb3VwLmpvaW5zKSB7XG4gICAgICAgIGlmICghZmlsdGVyLmdyb3Vwcykge1xuICAgICAgICAgICAgZmlsdGVyLmdyb3VwcyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgZmlsdGVyLmdyb3Vwcy5wdXNoKGdyb3VwKTtcblxuICAgICAgICBpZiAoZmlsdGVyLmdyb3Vwcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBncm91cC5ncm91cExvZ2ljID0gTG9naWNhbE9wZXJhdG9yLk9SO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiB3cmFwV2l0aEZpZWxkTmFtZShmaWVsZDogc3RyaW5nLCBjb25kaXRpb246IEZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGQpOiBGaWx0ZXJHcm91cENvbmRpdGlvbiB7XG4gICAgY29uc3QgcmVzdWx0OiBGaWx0ZXJHcm91cENvbmRpdGlvbiA9IHt9O1xuXG4gICAgLy8gV2UgYXNzdW1lIGEgY3VzdG9tIG9wZXJhdG9yIFwic2VhcmNoXCJcbiAgICBpZiAoZmllbGQgPT09ICdzZWFyY2gnICYmIGNvbmRpdGlvbi5saWtlKSB7XG4gICAgICAgIHJldHVybiB7Y3VzdG9tOiB7c2VhcmNoOiB7dmFsdWU6IGNvbmRpdGlvbi5saWtlLnZhbHVlfX19O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFtmaWVsZF0gPSBjb25kaXRpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU2VsZWN0aW9uKGZhY2V0OiBGYWNldCB8IG51bGwsIHNlbGVjdGlvbjogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbik6IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24ge1xuICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IGZhY2V0Py50cmFuc2Zvcm0gPyBmYWNldC50cmFuc2Zvcm0oc2VsZWN0aW9uKSA6IHNlbGVjdGlvbjtcblxuICAgIHJldHVybiBpc0RhdGVGYWNldChmYWNldCkgPyByZXBsYWNlVG9kYXkobmV3U2VsZWN0aW9uKSA6IHNlbGVjdGlvbjtcbn1cblxuZnVuY3Rpb24gaXNJbnZlcnRlZEZsYWcoZmFjZXQ6IEZhY2V0IHwgbnVsbCk6IGZhY2V0IGlzIEZsYWdGYWNldDxGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkPiB7XG4gICAgcmV0dXJuICghIWZhY2V0ICYmICdpbnZlcnNlZCcgaW4gZmFjZXQgJiYgZmFjZXQuaW52ZXJzZWQpIHx8IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc0RhdGVGYWNldChmYWNldDogRmFjZXQgfCBudWxsKTogZmFjZXQgaXMgRHJvcGRvd25GYWNldDxUeXBlRGF0ZUNvbmZpZ3VyYXRpb24+IHtcbiAgICByZXR1cm4gISFmYWNldCAmJiAnY29tcG9uZW50JyBpbiBmYWNldCAmJiBmYWNldC5jb21wb25lbnQgPT09IFR5cGVEYXRlQ29tcG9uZW50O1xufVxuIl19
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// Basic; loosely typed structure for graphql-doctrine filters
|
|
2
|
-
// Logical operator to be used in conditions
|
|
3
|
-
export var LogicalOperator;
|
|
4
|
-
(function (LogicalOperator) {
|
|
5
|
-
LogicalOperator["AND"] = "AND";
|
|
6
|
-
LogicalOperator["OR"] = "OR";
|
|
7
|
-
})(LogicalOperator || (LogicalOperator = {}));
|
|
8
|
-
// Join types to be used in DQL
|
|
9
|
-
export var JoinType;
|
|
10
|
-
(function (JoinType) {
|
|
11
|
-
JoinType["innerJoin"] = "innerJoin";
|
|
12
|
-
JoinType["leftJoin"] = "leftJoin";
|
|
13
|
-
})(JoinType || (JoinType = {}));
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1kb2N0cmluZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9jbGFzc2VzL2dyYXBocWwtZG9jdHJpbmUudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOERBQThEO0FBNkI5RCw0Q0FBNEM7QUFDNUMsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN2Qiw4QkFBVyxDQUFBO0lBQ1gsNEJBQVMsQ0FBQTtBQUNiLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQjtBQUVELCtCQUErQjtBQUMvQixNQUFNLENBQU4sSUFBWSxRQUdYO0FBSEQsV0FBWSxRQUFRO0lBQ2hCLG1DQUF1QixDQUFBO0lBQ3ZCLGlDQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFIVyxRQUFRLEtBQVIsUUFBUSxRQUduQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEJhc2ljOyBsb29zZWx5IHR5cGVkIHN0cnVjdHVyZSBmb3IgZ3JhcGhxbC1kb2N0cmluZSBmaWx0ZXJzXG5cbmltcG9ydCB7TGl0ZXJhbH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBGaWx0ZXIgPSB7XG4gICAgZ3JvdXBzPzogRmlsdGVyR3JvdXBbXSB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJHcm91cCA9IHtcbiAgICAvLyBUaGUgbG9naWMgb3BlcmF0b3IgdG8gYmUgdXNlZCB0byBhcHBlbmQgdGhpcyBncm91cFxuICAgIGdyb3VwTG9naWM/OiBMb2dpY2FsT3BlcmF0b3IgfCBudWxsO1xuICAgIC8vIFRoZSBsb2dpYyBvcGVyYXRvciB0byBiZSB1c2VkIHdpdGhpbiBhbGwgY29uZGl0aW9ucyBpbiB0aGlzIGdyb3VwXG4gICAgY29uZGl0aW9uc0xvZ2ljPzogTG9naWNhbE9wZXJhdG9yIHwgbnVsbDtcbiAgICAvLyBPcHRpb25hbCBqb2lucyB0byBlaXRoZXIgZmlsdGVyIHRoZSBxdWVyeSBvciBmZXRjaCByZWxhdGVkIG9iamVjdHMgZnJvbSBEQiBpbiBhIHNpbmdsZSBxdWVyeVxuICAgIGpvaW5zPzogRmlsdGVyR3JvdXBKb2luIHwgbnVsbDtcbiAgICAvLyBDb25kaXRpb25zIHRvIGJlIGFwcGxpZWQgb24gZmllbGRzXG4gICAgY29uZGl0aW9ucz86IEZpbHRlckdyb3VwQ29uZGl0aW9uW10gfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyR3JvdXBKb2luID0gUmVjb3JkPHN0cmluZywgSm9pbk9uPjtcblxuZXhwb3J0IHR5cGUgSm9pbk9uID0ge1xuICAgIHR5cGU/OiBKb2luVHlwZSB8IG51bGw7XG4gICAgLy8gT3B0aW9uYWwgam9pbnMgdG8gZWl0aGVyIGZpbHRlciB0aGUgcXVlcnkgb3IgZmV0Y2ggcmVsYXRlZCBvYmplY3RzIGZyb20gREIgaW4gYSBzaW5nbGUgcXVlcnlcbiAgICBqb2lucz86IEZpbHRlckdyb3VwSm9pbiB8IG51bGw7XG4gICAgLy8gQ29uZGl0aW9ucyB0byBiZSBhcHBsaWVkIG9uIGZpZWxkc1xuICAgIGNvbmRpdGlvbnM/OiBGaWx0ZXJHcm91cENvbmRpdGlvbltdIHwgbnVsbDtcbn07XG5cbi8vIExvZ2ljYWwgb3BlcmF0b3IgdG8gYmUgdXNlZCBpbiBjb25kaXRpb25zXG5leHBvcnQgZW51bSBMb2dpY2FsT3BlcmF0b3Ige1xuICAgIEFORCA9ICdBTkQnLFxuICAgIE9SID0gJ09SJyxcbn1cblxuLy8gSm9pbiB0eXBlcyB0byBiZSB1c2VkIGluIERRTFxuZXhwb3J0IGVudW0gSm9pblR5cGUge1xuICAgIGlubmVySm9pbiA9ICdpbm5lckpvaW4nLFxuICAgIGxlZnRKb2luID0gJ2xlZnRKb2luJyxcbn1cblxuZXhwb3J0IHR5cGUgRmlsdGVyR3JvdXBDb25kaXRpb24gPSBSZWNvcmQ8c3RyaW5nLCBGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkPjtcblxuZXhwb3J0IHR5cGUgRmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZCA9IHtcbiAgICBiZXR3ZWVuPzogQmV0d2Vlbk9wZXJhdG9yIHwgbnVsbDtcbiAgICBlcXVhbD86IEVxdWFsT3BlcmF0b3IgfCBudWxsO1xuICAgIGdyZWF0ZXI/OiBHcmVhdGVyT3BlcmF0b3IgfCBudWxsO1xuICAgIGdyZWF0ZXJPckVxdWFsPzogR3JlYXRlck9yRXF1YWxPcGVyYXRvciB8IG51bGw7XG4gICAgaW4/OiBJbk9wZXJhdG9yIHwgbnVsbDtcbiAgICBsZXNzPzogTGVzc09wZXJhdG9yIHwgbnVsbDtcbiAgICBsZXNzT3JFcXVhbD86IExlc3NPckVxdWFsT3BlcmF0b3IgfCBudWxsO1xuICAgIGxpa2U/OiBMaWtlT3BlcmF0b3IgfCBudWxsO1xuICAgIG51bGw/OiBOdWxsT3BlcmF0b3IgfCBudWxsO1xuXG4gICAgLy8gRm9yIHJlbGF0aW9uc1xuICAgIGhhdmU/OiBIYXZlT3BlcmF0b3IgfCBudWxsO1xuICAgIGVtcHR5PzogRW1wdHlPcGVyYXRvciB8IG51bGw7XG5cbiAgICAvLyBBbGxvdyBhbnl0aGluZyBlbHNlIGZvciBjdXN0b20gb3BlcmF0b3JzXG4gICAgW2tleTogc3RyaW5nXTogTGl0ZXJhbCB8IHVuZGVmaW5lZCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBTY2FsYXIgPSBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuO1xuXG5leHBvcnQgdHlwZSBIYXZlT3BlcmF0b3IgPSB7XG4gICAgdmFsdWVzOiBzdHJpbmdbXTtcbiAgICBub3Q/OiBib29sZWFuIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIEVtcHR5T3BlcmF0b3IgPSB7XG4gICAgbm90PzogYm9vbGVhbiB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBCZXR3ZWVuT3BlcmF0b3IgPSB7XG4gICAgZnJvbTogU2NhbGFyO1xuICAgIHRvOiBTY2FsYXI7XG4gICAgbm90PzogYm9vbGVhbiB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBFcXVhbE9wZXJhdG9yID0ge1xuICAgIHZhbHVlOiBTY2FsYXI7XG4gICAgbm90PzogYm9vbGVhbiB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBHcmVhdGVyT3BlcmF0b3IgPSB7XG4gICAgdmFsdWU6IFNjYWxhcjtcbiAgICBub3Q/OiBib29sZWFuIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIEdyZWF0ZXJPckVxdWFsT3BlcmF0b3IgPSB7XG4gICAgdmFsdWU6IFNjYWxhcjtcbiAgICBub3Q/OiBib29sZWFuIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIEluT3BlcmF0b3IgPSB7XG4gICAgdmFsdWVzOiBTY2FsYXJbXTtcbiAgICBub3Q/OiBib29sZWFuIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIExlc3NPcGVyYXRvciA9IHtcbiAgICB2YWx1ZTogU2NhbGFyO1xuICAgIG5vdD86IGJvb2xlYW4gfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgTGVzc09yRXF1YWxPcGVyYXRvciA9IHtcbiAgICB2YWx1ZTogU2NhbGFyO1xuICAgIG5vdD86IGJvb2xlYW4gfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgTGlrZU9wZXJhdG9yID0ge1xuICAgIHZhbHVlOiBTY2FsYXI7XG4gICAgbm90PzogYm9vbGVhbiB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBOdWxsT3BlcmF0b3IgPSB7XG4gICAgbm90PzogYm9vbGVhbiB8IG51bGw7XG59O1xuIl19
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { formatIsoDate } from '../../../classes/utility';
|
|
2
|
-
/**
|
|
3
|
-
* Wrap the searched value by `%` SQL wildcard
|
|
4
|
-
*
|
|
5
|
-
* So:
|
|
6
|
-
*
|
|
7
|
-
* {field: 'myFieldName', condition: {like: {value: 'foo'}}}
|
|
8
|
-
*
|
|
9
|
-
* will become
|
|
10
|
-
*
|
|
11
|
-
* {field: 'myFieldName', condition: {like: {value: '%foo%'}}}
|
|
12
|
-
*/
|
|
13
|
-
export function wrapLike(selection) {
|
|
14
|
-
if (selection.condition.like) {
|
|
15
|
-
selection.condition.like.value = '%' + selection.condition.like.value + '%';
|
|
16
|
-
}
|
|
17
|
-
return selection;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Search by prefix using `%' SQL wildcard
|
|
21
|
-
*
|
|
22
|
-
* So:
|
|
23
|
-
*
|
|
24
|
-
* {field: 'myFieldName', condition: {like: {value: 'foo'}}}
|
|
25
|
-
*
|
|
26
|
-
* will become
|
|
27
|
-
*
|
|
28
|
-
* {field: 'myFieldName', condition: {like: {value: 'foo%'}}}
|
|
29
|
-
*/
|
|
30
|
-
export function wrapPrefix(selection) {
|
|
31
|
-
if (selection.condition.like) {
|
|
32
|
-
selection.condition.like.value = selection.condition.like.value + '%';
|
|
33
|
-
}
|
|
34
|
-
return selection;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Search by suffix using `%' SQL wildcard
|
|
38
|
-
*
|
|
39
|
-
* So:
|
|
40
|
-
*
|
|
41
|
-
* {field: 'myFieldName', condition: {like: {value: 'foo'}}}
|
|
42
|
-
*
|
|
43
|
-
* will become
|
|
44
|
-
*
|
|
45
|
-
* {field: 'myFieldName', condition: {like: {value: '%foo'}}}
|
|
46
|
-
*/
|
|
47
|
-
export function wrapSuffix(selection) {
|
|
48
|
-
if (selection.condition.like) {
|
|
49
|
-
selection.condition.like.value = '%' + selection.condition.like.value;
|
|
50
|
-
}
|
|
51
|
-
return selection;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Replace the operator name (usually "like", "in" or "between") with the
|
|
55
|
-
* attribute "field" defined in the configuration
|
|
56
|
-
*
|
|
57
|
-
* So:
|
|
58
|
-
*
|
|
59
|
-
* {field: 'myFieldName', condition: {in: {values: [1, 2, 3]}}}
|
|
60
|
-
*
|
|
61
|
-
* will become
|
|
62
|
-
*
|
|
63
|
-
* {field: 'myFieldName', condition: {myFieldName: {values: [1, 2, 3]}}}
|
|
64
|
-
*/
|
|
65
|
-
export function replaceOperatorByField(selection) {
|
|
66
|
-
return replaceOperatorByAttribute(selection, 'field');
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Replace the operator name (usually "like", "in" or "between") with the
|
|
70
|
-
* attribute "name" defined in the configuration
|
|
71
|
-
*
|
|
72
|
-
* So:
|
|
73
|
-
*
|
|
74
|
-
* {field: 'myFieldName', name:'myConfigName', condition: {in: {values: [1, 2, 3]}}}
|
|
75
|
-
*
|
|
76
|
-
* will become
|
|
77
|
-
*
|
|
78
|
-
* {field: 'myFieldName', name:'myConfigName', condition: {myConfigName: {values: [1, 2, 3]}}}
|
|
79
|
-
*/
|
|
80
|
-
export function replaceOperatorByName(selection) {
|
|
81
|
-
return replaceOperatorByAttribute(selection, 'name');
|
|
82
|
-
}
|
|
83
|
-
function replaceOperatorByAttribute(selection, attribute) {
|
|
84
|
-
const oldOperator = Object.keys(selection.condition)[0];
|
|
85
|
-
const attributeValue = selection[attribute];
|
|
86
|
-
if (!attributeValue) {
|
|
87
|
-
throw new Error('Attribute cannot be empty. Most likely the configuration was wrong');
|
|
88
|
-
}
|
|
89
|
-
selection.condition[attributeValue] = selection.condition[oldOperator];
|
|
90
|
-
delete selection.condition[oldOperator];
|
|
91
|
-
return selection;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Replace `"today"` and `"tomorrow"` by their real value right now.
|
|
95
|
-
*
|
|
96
|
-
* This transformer is applied automatically and should **not** be part
|
|
97
|
-
* of Natural public API.
|
|
98
|
-
*
|
|
99
|
-
* So:
|
|
100
|
-
*
|
|
101
|
-
* {field: 'myFieldName', condition: {greater: {value: 'today'}}}
|
|
102
|
-
*
|
|
103
|
-
* will become
|
|
104
|
-
*
|
|
105
|
-
* {field: 'myFieldName', condition: {greater: {value: '2023-01-03'}}}
|
|
106
|
-
*/
|
|
107
|
-
export function replaceToday(selection) {
|
|
108
|
-
const date = new Date();
|
|
109
|
-
const today = formatIsoDate(date);
|
|
110
|
-
date.setDate(date.getDate() + 1);
|
|
111
|
-
const tomorrow = formatIsoDate(date);
|
|
112
|
-
// Transparently adapt exclusive/inclusive ranges for special "today" value.
|
|
113
|
-
// Ideally this should be done in `TypeDateComponent`, like it is done for real date values. But unfortunately I
|
|
114
|
-
// could not find a reasonable way to do that while still being able to reload a coherent GUI without showing
|
|
115
|
-
// "Demain" somewhere in the GUI. And that is something we want to avoid, we only want to show either "Aujourd'hui"
|
|
116
|
-
// or a real date. Otherwise, the human would start thinking with "Demain", and it would then need to be properly
|
|
117
|
-
// supported which over/complexify the code, the GUI and the workflow.
|
|
118
|
-
const condition = selection.condition;
|
|
119
|
-
if (Object.keys(condition).length === 1) {
|
|
120
|
-
if (condition.lessOrEqual?.value === 'today') {
|
|
121
|
-
delete condition.lessOrEqual;
|
|
122
|
-
condition.less = { value: 'tomorrow' };
|
|
123
|
-
}
|
|
124
|
-
else if (condition.greater?.value === 'today') {
|
|
125
|
-
delete condition.greater;
|
|
126
|
-
condition.greaterOrEqual = { value: 'tomorrow' };
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
for (const key in condition) {
|
|
130
|
-
const operator = condition[key];
|
|
131
|
-
if (operator && 'value' in operator) {
|
|
132
|
-
if (operator.value === 'today') {
|
|
133
|
-
operator.value = today;
|
|
134
|
-
}
|
|
135
|
-
else if (operator.value === 'tomorrow') {
|
|
136
|
-
operator.value = tomorrow;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return selection;
|
|
141
|
-
}
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2NsYXNzZXMvdHJhbnNmb3JtZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxTQUFpQztJQUN0RCxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsU0FBaUM7SUFDeEQsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQzFFLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsU0FBaUM7SUFDeEQsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQzFFLENBQUM7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Q29udGVudCI6WyJpbXBvcnQge05hdHVyYWxTZWFyY2hTZWxlY3Rpb259IGZyb20gJy4uL3R5cGVzL3ZhbHVlcyc7XG5pbXBvcnQge2Zvcm1hdElzb0RhdGV9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvdXRpbGl0eSc7XG5cbi8qKlxuICogV3JhcCB0aGUgc2VhcmNoZWQgdmFsdWUgYnkgYCVgIFNRTCB3aWxkY2FyZFxuICpcbiAqIFNvOlxuICpcbiAqICAgICB7ZmllbGQ6ICdteUZpZWxkTmFtZScsIGNvbmRpdGlvbjoge2xpa2U6IHt2YWx1ZTogJ2Zvbyd9fX1cbiAqXG4gKiB3aWxsIGJlY29tZVxuICpcbiAqICAgICB7ZmllbGQ6ICdteUZpZWxkTmFtZScsIGNvbmRpdGlvbjoge2xpa2U6IHt2YWx1ZTogJyVmb28lJ319fVxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JhcExpa2Uoc2VsZWN0aW9uOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uKTogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbiB7XG4gICAgaWYgKHNlbGVjdGlvbi5jb25kaXRpb24ubGlrZSkge1xuICAgICAgICBzZWxlY3Rpb24uY29uZGl0aW9uLmxpa2UudmFsdWUgPSAnJScgKyBzZWxlY3Rpb24uY29uZGl0aW9uLmxpa2UudmFsdWUgKyAnJSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbn1cblxuLyoqXG4gKiBTZWFyY2ggYnkgcHJlZml4IHVzaW5nIGAlJyBTUUwgd2lsZGNhcmRcbiAqXG4gKiBTbzpcbiAqXG4gKiAgICAge2ZpZWxkOiAnbXlGaWVsZE5hbWUnLCBjb25kaXRpb246IHtsaWtlOiB7dmFsdWU6ICdmb28nfX19XG4gKlxuICogd2lsbCBiZWNvbWVcbiAqXG4gKiAgICAge2ZpZWxkOiAnbXlGaWVsZE5hbWUnLCBjb25kaXRpb246IHtsaWtlOiB7dmFsdWU6ICdmb28lJ319fVxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JhcFByZWZpeChzZWxlY3Rpb246IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24pOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uIHtcbiAgICBpZiAoc2VsZWN0aW9uLmNvbmRpdGlvbi5saWtlKSB7XG4gICAgICAgIHNlbGVjdGlvbi5jb25kaXRpb24ubGlrZS52YWx1ZSA9IHNlbGVjdGlvbi5jb25kaXRpb24ubGlrZS52YWx1ZSArICclJztcbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xufVxuXG4vKipcbiAqIFNlYXJjaCBieSBzdWZmaXggdXNpbmcgYCUnIFNRTCB3aWxkY2FyZFxuICpcbiAqIFNvOlxuICpcbiAqICAgICB7ZmllbGQ6ICdteUZpZWxkTmFtZScsIGNvbmRpdGlvbjoge2xpa2U6IHt2YWx1ZTogJ2Zvbyd9fX1cbiAqXG4gKiB3aWxsIGJlY29tZVxuICpcbiAqICAgICB7ZmllbGQ6ICdteUZpZWxkTmFtZScsIGNvbmRpdGlvbjoge2xpa2U6IHt2YWx1ZTogJyVmb28nfX19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cmFwU3VmZml4KHNlbGVjdGlvbjogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbik6IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24ge1xuICAgIGlmIChzZWxlY3Rpb24uY29uZGl0aW9uLmxpa2UpIHtcbiAgICAgICAgc2VsZWN0aW9uLmNvbmRpdGlvbi5saWtlLnZhbHVlID0gJyUnICsgc2VsZWN0aW9uLmNvbmRpdGlvbi5saWtlLnZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxlY3Rpb247XG59XG5cbi8qKlxuICogUmVwbGFjZSB0aGUgb3BlcmF0b3IgbmFtZSAodXN1YWxseSBcImxpa2VcIiwgXCJpblwiIG9yIFwiYmV0d2VlblwiKSB3aXRoIHRoZVxuICogYXR0cmlidXRlIFwiZmllbGRcIiBkZWZpbmVkIGluIHRoZSBjb25maWd1cmF0aW9uXG4gKlxuICogU286XG4gKlxuICogICAgIHtmaWVsZDogJ215RmllbGROYW1lJywgY29uZGl0aW9uOiB7aW46IHt2YWx1ZXM6IFsxLCAyLCAzXX19fVxuICpcbiAqIHdpbGwgYmVjb21lXG4gKlxuICogICAgIHtmaWVsZDogJ215RmllbGROYW1lJywgY29uZGl0aW9uOiB7bXlGaWVsZE5hbWU6IHt2YWx1ZXM6IFsxLCAyLCAzXX19fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZU9wZXJhdG9yQnlGaWVsZChzZWxlY3Rpb246IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24pOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uIHtcbiAgICByZXR1cm4gcmVwbGFjZU9wZXJhdG9yQnlBdHRyaWJ1dGUoc2VsZWN0aW9uLCAnZmllbGQnKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlIHRoZSBvcGVyYXRvciBuYW1lICh1c3VhbGx5IFwibGlrZVwiLCBcImluXCIgb3IgXCJiZXR3ZWVuXCIpIHdpdGggdGhlXG4gKiBhdHRyaWJ1dGUgXCJuYW1lXCIgZGVmaW5lZCBpbiB0aGUgY29uZmlndXJhdGlvblxuICpcbiAqIFNvOlxuICpcbiAqICAgICB7ZmllbGQ6ICdteUZpZWxkTmFtZScsIG5hbWU6J215Q29uZmlnTmFtZScsIGNvbmRpdGlvbjoge2luOiB7dmFsdWVzOiBbMSwgMiwgM119fX1cbiAqXG4gKiB3aWxsIGJlY29tZVxuICpcbiAqICAgICB7ZmllbGQ6ICdteUZpZWxkTmFtZScsIG5hbWU6J215Q29uZmlnTmFtZScsIGNvbmRpdGlvbjoge215Q29uZmlnTmFtZToge3ZhbHVlczogWzEsIDIsIDNdfX19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlT3BlcmF0b3JCeU5hbWUoc2VsZWN0aW9uOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uKTogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbiB7XG4gICAgcmV0dXJuIHJlcGxhY2VPcGVyYXRvckJ5QXR0cmlidXRlKHNlbGVjdGlvbiwgJ25hbWUnKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZU9wZXJhdG9yQnlBdHRyaWJ1dGUoXG4gICAgc2VsZWN0aW9uOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uLFxuICAgIGF0dHJpYnV0ZTogJ25hbWUnIHwgJ2ZpZWxkJyxcbik6IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24ge1xuICAgIGNvbnN0IG9sZE9wZXJhdG9yID0gT2JqZWN0LmtleXMoc2VsZWN0aW9uLmNvbmRpdGlvbilbMF07XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZSA9IHNlbGVjdGlvblthdHRyaWJ1dGVdO1xuICAgIGlmICghYXR0cmlidXRlVmFsdWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdHRyaWJ1dGUgY2Fubm90IGJlIGVtcHR5LiBNb3N0IGxpa2VseSB0aGUgY29uZmlndXJhdGlvbiB3YXMgd3JvbmcnKTtcbiAgICB9XG5cbiAgICBzZWxlY3Rpb24uY29uZGl0aW9uW2F0dHJpYnV0ZVZhbHVlXSA9IHNlbGVjdGlvbi5jb25kaXRpb25bb2xkT3BlcmF0b3JdO1xuICAgIGRlbGV0ZSBzZWxlY3Rpb24uY29uZGl0aW9uW29sZE9wZXJhdG9yXTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG59XG5cbi8qKlxuICogUmVwbGFjZSBgXCJ0b2RheVwiYCBhbmQgYFwidG9tb3Jyb3dcImAgYnkgdGhlaXIgcmVhbCB2YWx1ZSByaWdodCBub3cuXG4gKlxuICogVGhpcyB0cmFuc2Zvcm1lciBpcyBhcHBsaWVkIGF1dG9tYXRpY2FsbHkgYW5kIHNob3VsZCAqKm5vdCoqIGJlIHBhcnRcbiAqIG9mIE5hdHVyYWwgcHVibGljIEFQSS5cbiAqXG4gKiBTbzpcbiAqXG4gKiAgICAge2ZpZWxkOiAnbXlGaWVsZE5hbWUnLCBjb25kaXRpb246IHtncmVhdGVyOiB7dmFsdWU6ICd0b2RheSd9fX1cbiAqXG4gKiB3aWxsIGJlY29tZVxuICpcbiAqICAgICB7ZmllbGQ6ICdteUZpZWxkTmFtZScsIGNvbmRpdGlvbjoge2dyZWF0ZXI6IHt2YWx1ZTogJzIwMjMtMDEtMDMnfX19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlVG9kYXkoc2VsZWN0aW9uOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uKTogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbiB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgdG9kYXkgPSBmb3JtYXRJc29EYXRlKGRhdGUpO1xuXG4gICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gICAgY29uc3QgdG9tb3Jyb3cgPSBmb3JtYXRJc29EYXRlKGRhdGUpO1xuXG4gICAgLy8gVHJhbnNwYXJlbnRseSBhZGFwdCBleGNsdXNpdmUvaW5jbHVzaXZlIHJhbmdlcyBmb3Igc3BlY2lhbCBcInRvZGF5XCIgdmFsdWUuXG4gICAgLy8gSWRlYWxseSB0aGlzIHNob3VsZCBiZSBkb25lIGluIGBUeXBlRGF0ZUNvbXBvbmVudGAsIGxpa2UgaXQgaXMgZG9uZSBmb3IgcmVhbCBkYXRlIHZhbHVlcy4gQnV0IHVuZm9ydHVuYXRlbHkgSVxuICAgIC8vIGNvdWxkIG5vdCBmaW5kIGEgcmVhc29uYWJsZSB3YXkgdG8gZG8gdGhhdCB3aGlsZSBzdGlsbCBiZWluZyBhYmxlIHRvIHJlbG9hZCBhIGNvaGVyZW50IEdVSSB3aXRob3V0IHNob3dpbmdcbiAgICAvLyBcIkRlbWFpblwiIHNvbWV3aGVyZSBpbiB0aGUgR1VJLiBBbmQgdGhhdCBpcyBzb21ldGhpbmcgd2Ugd2FudCB0byBhdm9pZCwgd2Ugb25seSB3YW50IHRvIHNob3cgZWl0aGVyIFwiQXVqb3VyZCdodWlcIlxuICAgIC8vIG9yIGEgcmVhbCBkYXRlLiBPdGhlcndpc2UsIHRoZSBodW1hbiB3b3VsZCBzdGFydCB0aGlua2luZyB3aXRoIFwiRGVtYWluXCIsIGFuZCBpdCB3b3VsZCB0aGVuIG5lZWQgdG8gYmUgcHJvcGVybHlcbiAgICAvLyBzdXBwb3J0ZWQgd2hpY2ggb3Zlci9jb21wbGV4aWZ5IHRoZSBjb2RlLCB0aGUgR1VJIGFuZCB0aGUgd29ya2Zsb3cuXG4gICAgY29uc3QgY29uZGl0aW9uID0gc2VsZWN0aW9uLmNvbmRpdGlvbjtcbiAgICBpZiAoT2JqZWN0LmtleXMoY29uZGl0aW9uKS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKGNvbmRpdGlvbi5sZXNzT3JFcXVhbD8udmFsdWUgPT09ICd0b2RheScpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBjb25kaXRpb24ubGVzc09yRXF1YWw7XG4gICAgICAgICAgICBjb25kaXRpb24ubGVzcyA9IHt2YWx1ZTogJ3RvbW9ycm93J307XG4gICAgICAgIH0gZWxzZSBpZiAoY29uZGl0aW9uLmdyZWF0ZXI/LnZhbHVlID09PSAndG9kYXknKSB7XG4gICAgICAgICAgICBkZWxldGUgY29uZGl0aW9uLmdyZWF0ZXI7XG4gICAgICAgICAgICBjb25kaXRpb24uZ3JlYXRlck9yRXF1YWwgPSB7dmFsdWU6ICd0b21vcnJvdyd9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gY29uZGl0aW9uKSB7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gY29uZGl0aW9uW2tleV07XG4gICAgICAgIGlmIChvcGVyYXRvciAmJiAndmFsdWUnIGluIG9wZXJhdG9yKSB7XG4gICAgICAgICAgICBpZiAob3BlcmF0b3IudmFsdWUgPT09ICd0b2RheScpIHtcbiAgICAgICAgICAgICAgICBvcGVyYXRvci52YWx1ZSA9IHRvZGF5O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRvci52YWx1ZSA9PT0gJ3RvbW9ycm93Jykge1xuICAgICAgICAgICAgICAgIG9wZXJhdG9yLnZhbHVlID0gdG9tb3Jyb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xufVxuIl19
|