@valtimo/dashboard 12.14.0 → 13.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.
Files changed (145) hide show
  1. package/fesm2022/valtimo-dashboard.mjs +304 -262
  2. package/fesm2022/valtimo-dashboard.mjs.map +1 -1
  3. package/lib/components/dashboard/dashboard.component.d.ts.map +1 -1
  4. package/lib/components/widget-dashboard/widget-dashboard.component.d.ts.map +1 -1
  5. package/lib/components/widget-dashboard-content/widget-dashboard-content.component.d.ts.map +1 -1
  6. package/lib/dashboard.module.d.ts +1 -1
  7. package/lib/dashboard.module.d.ts.map +1 -1
  8. package/lib/data-sources/case-count/components/case-count-configuration/case-count-configuration.component.d.ts.map +1 -1
  9. package/lib/data-sources/case-counts/components/case-counts-configuration/case-counts-configuration.component.d.ts.map +1 -1
  10. package/lib/data-sources/case-group-by/components/case-group-by-configuration/case-group-by-configuration.component.d.ts.map +1 -1
  11. package/lib/data-sources/data-sources.module.d.ts.map +1 -1
  12. package/lib/data-sources/shared/conditions.d.ts.map +1 -1
  13. package/lib/data-sources/task-count/components/task-count-configuration/task-count-configuration.component.d.ts.map +1 -1
  14. package/lib/display-types/bar-chart/components/bar-chart-configuration/bar-chart-configuration.component.d.ts.map +1 -1
  15. package/lib/display-types/bar-chart/components/bar-chart-display/bar-chart-display.component.d.ts.map +1 -1
  16. package/lib/display-types/big-number/components/big-number-configuration/big-number-configuration.component.d.ts.map +1 -1
  17. package/lib/display-types/big-number/components/big-number-display/big-number-display.component.d.ts.map +1 -1
  18. package/lib/display-types/display-widget-types.module.d.ts.map +1 -1
  19. package/lib/display-types/donut/components/donut-configuration/donut-configuration.component.d.ts.map +1 -1
  20. package/lib/display-types/donut/components/donut-display/donut-display.component.d.ts.map +1 -1
  21. package/lib/display-types/gauge/components/gauge-configuration/gauge-configuration.component.d.ts.map +1 -1
  22. package/lib/display-types/gauge/components/gauge-display/gauge-display.component.d.ts.map +1 -1
  23. package/lib/display-types/meter/components/meter-configuration/meter-configuration.component.d.ts.map +1 -1
  24. package/lib/display-types/meter/components/meter-display/meter-display.component.d.ts.map +1 -1
  25. package/lib/pipes/widget-translate/widget-translate.pipe.d.ts.map +1 -1
  26. package/lib/services/dashboard.service.d.ts +1 -1
  27. package/lib/services/widget-api.service.d.ts +1 -1
  28. package/package.json +10 -12
  29. package/esm2022/lib/components/dashboard/dashboard.component.mjs +0 -85
  30. package/esm2022/lib/components/widget-dashboard/widget-dashboard.component.mjs +0 -58
  31. package/esm2022/lib/components/widget-dashboard-content/widget-dashboard-content.component.mjs +0 -173
  32. package/esm2022/lib/constants/data-features.constants.mjs +0 -22
  33. package/esm2022/lib/constants/index.mjs +0 -19
  34. package/esm2022/lib/constants/injection-tokens.mjs +0 -20
  35. package/esm2022/lib/constants/layout.constants.mjs +0 -19
  36. package/esm2022/lib/dashboard-routing.module.mjs +0 -45
  37. package/esm2022/lib/dashboard.module.mjs +0 -115
  38. package/esm2022/lib/data-sources/case-count/case-count.module.mjs +0 -61
  39. package/esm2022/lib/data-sources/case-count/case-count.specification.mjs +0 -75
  40. package/esm2022/lib/data-sources/case-count/components/case-count-configuration/case-count-configuration.component.mjs +0 -151
  41. package/esm2022/lib/data-sources/case-count/components/case-count-configuration/index.mjs +0 -17
  42. package/esm2022/lib/data-sources/case-count/components/index.mjs +0 -17
  43. package/esm2022/lib/data-sources/case-count/index.mjs +0 -20
  44. package/esm2022/lib/data-sources/case-count/models/case-count.model.mjs +0 -17
  45. package/esm2022/lib/data-sources/case-count/models/index.mjs +0 -17
  46. package/esm2022/lib/data-sources/case-counts/case-counts.module.mjs +0 -76
  47. package/esm2022/lib/data-sources/case-counts/case-counts.specification.mjs +0 -78
  48. package/esm2022/lib/data-sources/case-counts/components/case-counts-configuration/case-counts-configuration.component.mjs +0 -206
  49. package/esm2022/lib/data-sources/case-counts/components/case-counts-configuration/index.mjs +0 -17
  50. package/esm2022/lib/data-sources/case-counts/components/index.mjs +0 -17
  51. package/esm2022/lib/data-sources/case-counts/index.mjs +0 -20
  52. package/esm2022/lib/data-sources/case-counts/models/case-counts.model.mjs +0 -17
  53. package/esm2022/lib/data-sources/case-counts/models/index.mjs +0 -17
  54. package/esm2022/lib/data-sources/case-group-by/case-group-by.module.mjs +0 -64
  55. package/esm2022/lib/data-sources/case-group-by/case-group-by.specification.mjs +0 -90
  56. package/esm2022/lib/data-sources/case-group-by/components/case-group-by-configuration/case-group-by-configuration.component.mjs +0 -209
  57. package/esm2022/lib/data-sources/case-group-by/components/case-group-by-configuration/index.mjs +0 -17
  58. package/esm2022/lib/data-sources/case-group-by/components/index.mjs +0 -17
  59. package/esm2022/lib/data-sources/case-group-by/index.mjs +0 -20
  60. package/esm2022/lib/data-sources/case-group-by/models/case-group-by.model.mjs +0 -17
  61. package/esm2022/lib/data-sources/case-group-by/models/index.mjs +0 -17
  62. package/esm2022/lib/data-sources/data-sources.module.mjs +0 -29
  63. package/esm2022/lib/data-sources/index.mjs +0 -20
  64. package/esm2022/lib/data-sources/shared/conditions.mjs +0 -22
  65. package/esm2022/lib/data-sources/shared/index.mjs +0 -17
  66. package/esm2022/lib/data-sources/task-count/components/index.mjs +0 -17
  67. package/esm2022/lib/data-sources/task-count/components/task-count-configuration/index.mjs +0 -17
  68. package/esm2022/lib/data-sources/task-count/components/task-count-configuration/task-count-configuration.component.mjs +0 -122
  69. package/esm2022/lib/data-sources/task-count/index.mjs +0 -20
  70. package/esm2022/lib/data-sources/task-count/models/index.mjs +0 -17
  71. package/esm2022/lib/data-sources/task-count/models/task-count.model.mjs +0 -17
  72. package/esm2022/lib/data-sources/task-count/task-count.module.mjs +0 -57
  73. package/esm2022/lib/data-sources/task-count/task-count.specification.mjs +0 -69
  74. package/esm2022/lib/display-types/bar-chart/bar-chart.module.mjs +0 -68
  75. package/esm2022/lib/display-types/bar-chart/bar-chart.specification.mjs +0 -55
  76. package/esm2022/lib/display-types/bar-chart/components/bar-chart-configuration/bar-chart-configuration.component.mjs +0 -83
  77. package/esm2022/lib/display-types/bar-chart/components/bar-chart-configuration/index.mjs +0 -17
  78. package/esm2022/lib/display-types/bar-chart/components/bar-chart-display/bar-chart-display.component.mjs +0 -64
  79. package/esm2022/lib/display-types/bar-chart/components/bar-chart-display/index.mjs +0 -17
  80. package/esm2022/lib/display-types/bar-chart/components/index.mjs +0 -18
  81. package/esm2022/lib/display-types/bar-chart/index.mjs +0 -20
  82. package/esm2022/lib/display-types/bar-chart/models/bar-chart.model.mjs +0 -17
  83. package/esm2022/lib/display-types/bar-chart/models/index.mjs +0 -17
  84. package/esm2022/lib/display-types/big-number/big-number.module.mjs +0 -53
  85. package/esm2022/lib/display-types/big-number/big-number.specification.mjs +0 -67
  86. package/esm2022/lib/display-types/big-number/components/big-number-configuration/big-number-configuration.component.mjs +0 -124
  87. package/esm2022/lib/display-types/big-number/components/big-number-configuration/index.mjs +0 -17
  88. package/esm2022/lib/display-types/big-number/components/big-number-display/big-number-display.component.mjs +0 -56
  89. package/esm2022/lib/display-types/big-number/components/big-number-display/index.mjs +0 -17
  90. package/esm2022/lib/display-types/big-number/components/index.mjs +0 -18
  91. package/esm2022/lib/display-types/big-number/index.mjs +0 -20
  92. package/esm2022/lib/display-types/big-number/models/big-number.model.mjs +0 -17
  93. package/esm2022/lib/display-types/big-number/models/index.mjs +0 -17
  94. package/esm2022/lib/display-types/display-widget-types.module.mjs +0 -19
  95. package/esm2022/lib/display-types/donut/components/donut-configuration/donut-configuration.component.mjs +0 -89
  96. package/esm2022/lib/display-types/donut/components/donut-configuration/index.mjs +0 -17
  97. package/esm2022/lib/display-types/donut/components/donut-display/donut-display.component.mjs +0 -72
  98. package/esm2022/lib/display-types/donut/components/donut-display/index.mjs +0 -17
  99. package/esm2022/lib/display-types/donut/components/index.mjs +0 -18
  100. package/esm2022/lib/display-types/donut/donut.module.mjs +0 -68
  101. package/esm2022/lib/display-types/donut/donut.specification.mjs +0 -55
  102. package/esm2022/lib/display-types/donut/index.mjs +0 -20
  103. package/esm2022/lib/display-types/donut/models/donut.model.mjs +0 -17
  104. package/esm2022/lib/display-types/donut/models/index.mjs +0 -17
  105. package/esm2022/lib/display-types/gauge/components/gauge-configuration/gauge-configuration.component.mjs +0 -89
  106. package/esm2022/lib/display-types/gauge/components/gauge-configuration/index.mjs +0 -17
  107. package/esm2022/lib/display-types/gauge/components/gauge-display/gauge-display.component.mjs +0 -86
  108. package/esm2022/lib/display-types/gauge/components/gauge-display/index.mjs +0 -17
  109. package/esm2022/lib/display-types/gauge/components/index.mjs +0 -18
  110. package/esm2022/lib/display-types/gauge/gauge.module.mjs +0 -60
  111. package/esm2022/lib/display-types/gauge/gauge.specification.mjs +0 -55
  112. package/esm2022/lib/display-types/gauge/index.mjs +0 -20
  113. package/esm2022/lib/display-types/gauge/models/gauge.model.mjs +0 -17
  114. package/esm2022/lib/display-types/gauge/models/index.mjs +0 -17
  115. package/esm2022/lib/display-types/index.mjs +0 -20
  116. package/esm2022/lib/display-types/meter/components/index.mjs +0 -18
  117. package/esm2022/lib/display-types/meter/components/meter-configuration/index.mjs +0 -17
  118. package/esm2022/lib/display-types/meter/components/meter-configuration/meter-configuration.component.mjs +0 -83
  119. package/esm2022/lib/display-types/meter/components/meter-display/index.mjs +0 -17
  120. package/esm2022/lib/display-types/meter/components/meter-display/meter-display.component.mjs +0 -71
  121. package/esm2022/lib/display-types/meter/index.mjs +0 -20
  122. package/esm2022/lib/display-types/meter/meter.module.mjs +0 -68
  123. package/esm2022/lib/display-types/meter/meter.specification.mjs +0 -55
  124. package/esm2022/lib/display-types/meter/models/index.mjs +0 -17
  125. package/esm2022/lib/display-types/meter/models/meter.model.mjs +0 -17
  126. package/esm2022/lib/models/configuration.model.mjs +0 -17
  127. package/esm2022/lib/models/dashboard.model.mjs +0 -17
  128. package/esm2022/lib/models/data-source.model.mjs +0 -26
  129. package/esm2022/lib/models/display-type.model.mjs +0 -17
  130. package/esm2022/lib/models/index.mjs +0 -23
  131. package/esm2022/lib/models/layout.model.mjs +0 -17
  132. package/esm2022/lib/models/widget-data.model.mjs +0 -17
  133. package/esm2022/lib/models/widget-display.model.mjs +0 -25
  134. package/esm2022/lib/pipes/index.mjs +0 -17
  135. package/esm2022/lib/pipes/widget-translate/index.mjs +0 -18
  136. package/esm2022/lib/pipes/widget-translate/widget-translate-pipe.module.mjs +0 -33
  137. package/esm2022/lib/pipes/widget-translate/widget-translate.pipe.mjs +0 -35
  138. package/esm2022/lib/services/dashboard.service.mjs +0 -38
  139. package/esm2022/lib/services/index.mjs +0 -19
  140. package/esm2022/lib/services/widget-api.service.mjs +0 -38
  141. package/esm2022/lib/services/widget-layout.service.mjs +0 -67
  142. package/esm2022/lib/services/widget-translation.service.mjs +0 -61
  143. package/esm2022/lib/services/widget.service.mjs +0 -62
  144. package/esm2022/public_api.mjs +0 -31
  145. package/esm2022/valtimo-dashboard.mjs +0 -5
@@ -1,206 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
17
- import { Operator } from '../../../../models';
18
- import { BehaviorSubject, combineLatest, distinctUntilChanged, map, startWith, Subscription, } from 'rxjs';
19
- import { Validators, } from '@angular/forms';
20
- import { ValuePathSelectorPrefix } from '@valtimo/components';
21
- import { isEqual } from 'lodash';
22
- import { Add16, TrashCan16 } from '@carbon/icons';
23
- import * as i0 from "@angular/core";
24
- import * as i1 from "@angular/forms";
25
- import * as i2 from "@valtimo/document";
26
- import * as i3 from "@ngx-translate/core";
27
- import * as i4 from "../../../../services";
28
- import * as i5 from "carbon-components-angular";
29
- import * as i6 from "@angular/common";
30
- import * as i7 from "@valtimo/components";
31
- import * as i8 from "../../../../pipes/widget-translate/widget-translate.pipe";
32
- export class CaseCountsConfigurationComponent {
33
- set disabled(disabledValue) {
34
- if (disabledValue) {
35
- this.form.disable();
36
- }
37
- else {
38
- this.form.enable();
39
- }
40
- }
41
- get queryItems() {
42
- return this.form.get('queryItems');
43
- }
44
- get queryItemsValue$() {
45
- return this.queryItems.valueChanges.pipe(startWith(this.queryItems.value || []));
46
- }
47
- get queryItemsList$() {
48
- return this.queryItemsValue$.pipe(map(queryItemsValue => queryItemsValue.map(() => null)), distinctUntilChanged((previous, current) => isEqual(previous, current)));
49
- }
50
- get documentDefinition() {
51
- return this.form.get('documentDefinition');
52
- }
53
- get formDisabled() {
54
- return this.form.disabled;
55
- }
56
- set prefillConfiguration(configurationValue) {
57
- if (!configurationValue)
58
- return;
59
- this.documentDefinitionSelected({
60
- item: {
61
- content: configurationValue.documentDefinition,
62
- },
63
- });
64
- this.documentDefinition.patchValue(configurationValue.documentDefinition);
65
- this.queryItems.patchValue(this.queryItemsToMultiInputValues(configurationValue.queryItems));
66
- }
67
- constructor(fb, documentService, translateService, widgetTranslationService, iconService) {
68
- this.fb = fb;
69
- this.documentService = documentService;
70
- this.translateService = translateService;
71
- this.widgetTranslationService = widgetTranslationService;
72
- this.iconService = iconService;
73
- this._EMPTY_QUERY_ITEM_VALUE = {
74
- label: '',
75
- queryConditions: [{ key: '', value: '', dropdown: '' }],
76
- };
77
- this.form = this.fb.group({
78
- documentDefinition: this.fb.control(null, [Validators.required]),
79
- queryItems: this.fb.control([this._EMPTY_QUERY_ITEM_VALUE, this._EMPTY_QUERY_ITEM_VALUE], [this.queryItemsValidator()]),
80
- });
81
- this.configurationEvent = new EventEmitter();
82
- this.selectedDocumentDefinition$ = new BehaviorSubject('');
83
- this.documentItems$ = combineLatest([
84
- this.documentService.getAllDefinitions(),
85
- this.selectedDocumentDefinition$,
86
- ]).pipe(map(([documentDefinitions, selectedDocumentDefintion]) => documentDefinitions.content.map(definition => ({
87
- content: definition.id.name,
88
- selected: definition.id.name === selectedDocumentDefintion,
89
- }))));
90
- this._OPERATORS = [
91
- Operator.NOT_EQUAL_TO,
92
- Operator.EQUAL_TO,
93
- Operator.GREATER_THAN,
94
- Operator.GREATER_THAN_OR_EQUAL_TO,
95
- Operator.LESS_THAN,
96
- Operator.LESS_THAN_OR_EQUAL_TO,
97
- ];
98
- this.operatorItems$ = this.translateService
99
- .stream('key')
100
- .pipe(map(() => this._OPERATORS.map(operator => ({
101
- id: operator,
102
- content: this.widgetTranslationService.instant(operator, this.dataSourceKey),
103
- selected: false,
104
- }))));
105
- this.ValuePathSelectorPrefix = ValuePathSelectorPrefix;
106
- this._subscriptions = new Subscription();
107
- this.iconService.registerAll([Add16, TrashCan16]);
108
- }
109
- ngOnInit() {
110
- this.openFormSubscription();
111
- }
112
- ngOnDestroy() {
113
- this._subscriptions.unsubscribe();
114
- }
115
- documentDefinitionSelected(documentDefinitionItem) {
116
- const documentDefinitionName = documentDefinitionItem?.item?.content;
117
- if (!documentDefinitionName) {
118
- return;
119
- }
120
- this.selectedDocumentDefinition$.next(documentDefinitionName);
121
- this.documentDefinition.setValue(documentDefinitionName);
122
- }
123
- conditionsValueChange(index, values) {
124
- const currentQueryItemsValues = this.queryItems.value;
125
- if (isEqual(currentQueryItemsValues[index].queryConditions, values))
126
- return;
127
- this.queryItems.patchValue(currentQueryItemsValues.map((item, itemIndex) => itemIndex === index ? { ...item, queryConditions: values } : item));
128
- }
129
- labelValueChange(index, value) {
130
- const currentQueryItemsValues = this.queryItems.value;
131
- if (currentQueryItemsValues[index].label === value)
132
- return;
133
- this.queryItems.patchValue(currentQueryItemsValues.map((item, itemIndex) => itemIndex === index ? { ...item, label: value } : item));
134
- }
135
- addQueryItem() {
136
- const currentQueryItems = this.queryItems.value;
137
- this.queryItems.patchValue([...currentQueryItems, this._EMPTY_QUERY_ITEM_VALUE]);
138
- }
139
- deleteCount(i) {
140
- const currentQueryItems = this.queryItems.value;
141
- this.queryItems.patchValue(currentQueryItems.filter((_, index) => index !== i));
142
- }
143
- openFormSubscription() {
144
- this._subscriptions.add(this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {
145
- this.configurationEvent.emit({
146
- valid: this.form.valid,
147
- data: {
148
- documentDefinition: formValue?.documentDefinition,
149
- queryItems: this.multiInputValuesToQueryItems(formValue.queryItems),
150
- },
151
- });
152
- }));
153
- }
154
- queryItemsToMultiInputValues(queryItems) {
155
- return queryItems.map(queryItem => ({
156
- ...queryItem,
157
- queryConditions: queryItem.queryConditions.map(condition => ({
158
- key: condition.queryPath,
159
- dropdown: condition.queryOperator,
160
- value: condition.queryValue,
161
- })),
162
- }));
163
- }
164
- multiInputValuesToQueryItems(multiInputValues) {
165
- return multiInputValues.map(queryItem => ({
166
- ...queryItem,
167
- queryConditions: queryItem.queryConditions.map(condition => ({
168
- queryPath: condition.key,
169
- queryOperator: condition.dropdown,
170
- queryValue: condition.value,
171
- })),
172
- }));
173
- }
174
- queryItemsValidator() {
175
- return (control) => {
176
- const queryItems = control.value;
177
- const validQueryItems = queryItems.filter(item => {
178
- const validLabel = !!item.label;
179
- const validConditions = item.queryConditions.filter(condition => !!condition.value && !!condition.key && !!condition.dropdown);
180
- return (validLabel &&
181
- validConditions.length > 0 &&
182
- item.queryConditions.length === validConditions.length);
183
- });
184
- return validQueryItems.length > 1 && validQueryItems.length === queryItems.length
185
- ? null
186
- : {
187
- invalidQueryItems: 'invalid',
188
- };
189
- };
190
- }
191
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CaseCountsConfigurationComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DocumentService }, { token: i3.TranslateService }, { token: i4.WidgetTranslationService }, { token: i5.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
192
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CaseCountsConfigurationComponent, selector: "ng-component", inputs: { dataSourceKey: "dataSourceKey", disabled: "disabled", prefillConfiguration: "prefillConfiguration" }, outputs: { configurationEvent: "configurationEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form\n class=\"case-counts-configuration-form\"\n *ngIf=\"{\n documentItems: documentItems$ | async,\n operatorItems: operatorItems$,\n queryItemsValue: queryItemsValue$ | async,\n selectedDocumentDefinition: selectedDocumentDefinition$ | async,\n } as obs\"\n [formGroup]=\"form\"\n>\n <div class=\"form__element\">\n <cds-dropdown\n [appendInline]=\"true\"\n formControlName=\"documentDefinition\"\n [helperText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalidText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalid]=\"documentDefinition.dirty && documentDefinition.invalid\"\n [label]=\"'documentDefinition' | widgetTranslate: dataSourceKey | async\"\n (selected)=\"documentDefinitionSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs?.documentItems || []\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <cds-label class=\"conditions__label\">{{\n 'counts' | widgetTranslate: dataSourceKey | async\n }}</cds-label>\n\n <p class=\"conditions__helper-text cds--form__helper-text\">\n {{ 'countsHelperText' | widgetTranslate: dataSourceKey | async }}\n </p>\n\n @for (_ of queryItemsList$ | async; track $index; let i = $index) {\n <cds-tile class=\"count-tile\" [cdsLayer]=\"1\">\n <div class=\"count-tile__input\" [cdsLayer]=\"0\">\n <v-input\n [title]=\"'countTitle' | widgetTranslate: dataSourceKey | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.queryItemsValue[i]?.label\"\n [disabled]=\"formDisabled\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n (valueChange)=\"labelValueChange(i, $event)\"\n >\n </v-input>\n\n <valtimo-carbon-multi-input\n type=\"valuePathSelectorDropdownValue\"\n [disabled]=\"formDisabled\"\n [addRowText]=\"'addCondition' | widgetTranslate: dataSourceKey | async\"\n [defaultValues]=\"obs.queryItemsValue[i]?.queryConditions\"\n [dropdownColumnTitle]=\"'operator' | widgetTranslate: dataSourceKey | async\"\n [dropdownItems]=\"operatorItems$ | async\"\n [fullWidth]=\"true\"\n [initialAmountOfRows]=\"1\"\n [keyColumnTitle]=\"'path' | widgetTranslate: dataSourceKey | async\"\n [minimumAmountOfRows]=\"1\"\n [valueColumnTitle]=\"'value' | widgetTranslate: dataSourceKey | async\"\n valuePathSelectorNotation=\"dots\"\n [valuePathSelectorPrefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [valuePathSelectorShowDocumentDefinitionSelector]=\"false\"\n [valuePathSelectorDocumentDefinitionName]=\"obs.selectedDocumentDefinition\"\n [keyColumnFlex]=\"2\"\n [dropdownColumnFlex]=\"1\"\n [valueColumnFlex]=\"1\"\n (valueChange)=\"conditionsValueChange(i, $event)\"\n ></valtimo-carbon-multi-input>\n </div>\n\n <div class=\"count-tile__delete-button\">\n <cds-icon-button\n [disabled]=\"formDisabled || i < 2\"\n (click)=\"deleteCount(i)\"\n kind=\"danger\"\n size=\"sm\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-tile>\n }\n\n <button\n class=\"add-count-button\"\n cdsButton=\"primary\"\n [disabled]=\"formDisabled\"\n (click)=\"addQueryItem()\"\n >\n {{ 'Aantal toevoegen' }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</form>\n", styles: ["::ng-deep .case-counts-configuration-form .conditions__label{display:flex;margin-bottom:8px}::ng-deep .case-counts-configuration-form .conditions__helper-text{font-style:italic;display:flex;margin-bottom:16px}::ng-deep .case-counts-configuration-form .count-tile{display:flex;flex-direction:row;gap:32px;justify-content:space-between;margin-bottom:16px}::ng-deep .case-counts-configuration-form .count-tile__input{width:100%}::ng-deep .case-counts-configuration-form .add-count-button{margin-bottom:16px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId", "trim"], outputs: ["valueChange"] }, { kind: "component", type: i5.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i5.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i7.CarbonMultiInputComponent, selector: "valtimo-carbon-multi-input", inputs: ["addRowText", "addRowTranslationKey", "arbitraryAmountTitles", "arbitraryValueAmount", "defaultValues", "deleteRowText", "deleteRowTranslationKey", "disabled", "dropdownColumnTitle", "dropdownItems", "dropdownWidth", "fullWidth", "hideAddButton", "hideDeleteButton", "initialAmountOfRows", "keyColumnTitle", "margin", "maxRows", "minimumAmountOfRows", "name", "required", "title", "titleTranslationKey", "tooltip", "type", "valueColumnTitle", "valuePathSelectorDocumentDefinitionName", "valuePathSelectorPrefixes", "valuePathSelectorShowDocumentDefinitionSelector", "valuePathSelectorNotation", "keyColumnFlex", "dropdownColumnFlex", "valueColumnFlex"], outputs: ["valueChange", "allValuesValidEvent"] }, { kind: "directive", type: i5.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i5.IconButton, selector: "cds-icon-button, ibm-icon-button", inputs: ["buttonNgClass", "buttonAttributes", "buttonId", "kind", "size", "type", "isExpressive", "disabled", "description"], outputs: ["click", "focus", "blur", "tooltipClick"] }, { kind: "component", type: i5.Tile, selector: "cds-tile, ibm-tile", inputs: ["theme"] }, { kind: "directive", type: i5.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "directive", type: i5.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.WidgetTranslatePipe, name: "widgetTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
193
- }
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CaseCountsConfigurationComponent, decorators: [{
195
- type: Component,
196
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form\n class=\"case-counts-configuration-form\"\n *ngIf=\"{\n documentItems: documentItems$ | async,\n operatorItems: operatorItems$,\n queryItemsValue: queryItemsValue$ | async,\n selectedDocumentDefinition: selectedDocumentDefinition$ | async,\n } as obs\"\n [formGroup]=\"form\"\n>\n <div class=\"form__element\">\n <cds-dropdown\n [appendInline]=\"true\"\n formControlName=\"documentDefinition\"\n [helperText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalidText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalid]=\"documentDefinition.dirty && documentDefinition.invalid\"\n [label]=\"'documentDefinition' | widgetTranslate: dataSourceKey | async\"\n (selected)=\"documentDefinitionSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs?.documentItems || []\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <cds-label class=\"conditions__label\">{{\n 'counts' | widgetTranslate: dataSourceKey | async\n }}</cds-label>\n\n <p class=\"conditions__helper-text cds--form__helper-text\">\n {{ 'countsHelperText' | widgetTranslate: dataSourceKey | async }}\n </p>\n\n @for (_ of queryItemsList$ | async; track $index; let i = $index) {\n <cds-tile class=\"count-tile\" [cdsLayer]=\"1\">\n <div class=\"count-tile__input\" [cdsLayer]=\"0\">\n <v-input\n [title]=\"'countTitle' | widgetTranslate: dataSourceKey | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.queryItemsValue[i]?.label\"\n [disabled]=\"formDisabled\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n (valueChange)=\"labelValueChange(i, $event)\"\n >\n </v-input>\n\n <valtimo-carbon-multi-input\n type=\"valuePathSelectorDropdownValue\"\n [disabled]=\"formDisabled\"\n [addRowText]=\"'addCondition' | widgetTranslate: dataSourceKey | async\"\n [defaultValues]=\"obs.queryItemsValue[i]?.queryConditions\"\n [dropdownColumnTitle]=\"'operator' | widgetTranslate: dataSourceKey | async\"\n [dropdownItems]=\"operatorItems$ | async\"\n [fullWidth]=\"true\"\n [initialAmountOfRows]=\"1\"\n [keyColumnTitle]=\"'path' | widgetTranslate: dataSourceKey | async\"\n [minimumAmountOfRows]=\"1\"\n [valueColumnTitle]=\"'value' | widgetTranslate: dataSourceKey | async\"\n valuePathSelectorNotation=\"dots\"\n [valuePathSelectorPrefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [valuePathSelectorShowDocumentDefinitionSelector]=\"false\"\n [valuePathSelectorDocumentDefinitionName]=\"obs.selectedDocumentDefinition\"\n [keyColumnFlex]=\"2\"\n [dropdownColumnFlex]=\"1\"\n [valueColumnFlex]=\"1\"\n (valueChange)=\"conditionsValueChange(i, $event)\"\n ></valtimo-carbon-multi-input>\n </div>\n\n <div class=\"count-tile__delete-button\">\n <cds-icon-button\n [disabled]=\"formDisabled || i < 2\"\n (click)=\"deleteCount(i)\"\n kind=\"danger\"\n size=\"sm\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-tile>\n }\n\n <button\n class=\"add-count-button\"\n cdsButton=\"primary\"\n [disabled]=\"formDisabled\"\n (click)=\"addQueryItem()\"\n >\n {{ 'Aantal toevoegen' }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</form>\n", styles: ["::ng-deep .case-counts-configuration-form .conditions__label{display:flex;margin-bottom:8px}::ng-deep .case-counts-configuration-form .conditions__helper-text{font-style:italic;display:flex;margin-bottom:16px}::ng-deep .case-counts-configuration-form .count-tile{display:flex;flex-direction:row;gap:32px;justify-content:space-between;margin-bottom:16px}::ng-deep .case-counts-configuration-form .count-tile__input{width:100%}::ng-deep .case-counts-configuration-form .add-count-button{margin-bottom:16px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
197
- }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.DocumentService }, { type: i3.TranslateService }, { type: i4.WidgetTranslationService }, { type: i5.IconService }], propDecorators: { dataSourceKey: [{
198
- type: Input
199
- }], disabled: [{
200
- type: Input
201
- }], prefillConfiguration: [{
202
- type: Input
203
- }], configurationEvent: [{
204
- type: Output
205
- }] } });
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1jb3VudHMtY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rhc2hib2FyZC9zcmMvbGliL2RhdGEtc291cmNlcy9jYXNlLWNvdW50cy9jb21wb25lbnRzL2Nhc2UtY291bnRzLWNvbmZpZ3VyYXRpb24vY2FzZS1jb3VudHMtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rhc2hib2FyZC9zcmMvbGliL2RhdGEtc291cmNlcy9jYXNlLWNvdW50cy9jb21wb25lbnRzL2Nhc2UtY291bnRzLWNvbmZpZ3VyYXRpb24vY2FzZS1jb3VudHMtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0QsUUFBUSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDbkcsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLEdBQUcsRUFFSCxTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUtMLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBSXhCLE9BQU8sRUFBbUMsdUJBQXVCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUc5RixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQy9CLE9BQU8sRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBT2hELE1BQU0sT0FBTyxnQ0FBZ0M7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QUMsS0FBSyxDQUFDO1lBQ2pDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQy9DLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUNoQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDakQsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDMUUsQ0FBQztnQkFFRixPQUFPLENBQ0wsVUFBVTtvQkFDVixlQUFlLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLGVBQWUsQ0FBQyxNQUFNLENBQ3ZELENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksZUFBZSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsTUFBTTtnQkFDL0UsQ0FBQyxDQUFDLElBQUk7Z0JBQ04sQ0FBQyxDQUFDO29CQUNFLGlCQUFpQixFQUFFLFNBQVM7aUJBQzdCLENBQUM7UUFDUixDQUFDLENBQUM7SUFDSixDQUFDOytHQXRPVSxnQ0FBZ0M7bUdBQWhDLGdDQUFnQywyTkN4RDdDLG91SUE2R0E7OzRGRHJEYSxnQ0FBZ0M7a0JBTDVDLFNBQVM7c0NBRVMsdUJBQXVCLENBQUMsTUFBTTs4TUFNL0IsYUFBYTtzQkFBNUIsS0FBSztnQkFlYyxRQUFRO3NCQUEzQixLQUFLO2dCQStCTyxvQkFBb0I7c0JBQWhDLEtBQUs7Z0JBYVcsa0JBQWtCO3NCQUFsQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25PdXRwdXQsIERhdGFTb3VyY2VDb25maWd1cmF0aW9uQ29tcG9uZW50LCBPcGVyYXRvcn0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgc3RhcnRXaXRoLFxuICBTdWJzY3JpcHRpb24sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQnVpbGRlcixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yRm4sXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q2FzZUNvdW50c0NvbmZpZ3VyYXRpb24sIENhc2VDb3VudHNRdWVyeUl0ZW0sIENhc2VDb3VudHNRdWVyeUl0ZW1Gb3JtfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtEb2N1bWVudFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7SWNvblNlcnZpY2UsIExpc3RJdGVtfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7TGlzdEl0ZW1XaXRoSWQsIE11bHRpSW5wdXRWYWx1ZXMsIFZhbHVlUGF0aFNlbGVjdG9yUHJlZml4fSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1dpZGdldFRyYW5zbGF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtpc0VxdWFsfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtBZGQxNiwgVHJhc2hDYW4xNn0gZnJvbSAnQGNhcmJvbi9pY29ucyc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1jb3VudHMtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLWNvdW50cy1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENhc2VDb3VudHNDb25maWd1cmF0aW9uQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIERhdGFTb3VyY2VDb25maWd1cmF0aW9uQ29tcG9uZW50XG57XG4gIEBJbnB1dCgpIHB1YmxpYyBkYXRhU291cmNlS2V5OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfRU1QVFlfUVVFUllfSVRFTV9WQUxVRTogQ2FzZUNvdW50c1F1ZXJ5SXRlbUZvcm0gPSB7XG4gICAgbGFiZWw6ICcnLFxuICAgIHF1ZXJ5Q29uZGl0aW9uczogW3trZXk6ICcnLCB2YWx1ZTogJycsIGRyb3Bkb3duOiAnJ31dLFxuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgZG9jdW1lbnREZWZpbml0aW9uOiB0aGlzLmZiLmNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICBxdWVyeUl0ZW1zOiB0aGlzLmZiLmNvbnRyb2woXG4gICAgICBbdGhpcy5fRU1QVFlfUVVFUllfSVRFTV9WQUxVRSwgdGhpcy5fRU1QVFlfUVVFUllfSVRFTV9WQUxVRV0sXG4gICAgICBbdGhpcy5xdWVyeUl0ZW1zVmFsaWRhdG9yKCldXG4gICAgKSxcbiAgfSk7XG5cbiAgQElucHV0KCkgcHVibGljIHNldCBkaXNhYmxlZChkaXNhYmxlZFZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKGRpc2FibGVkVmFsdWUpIHtcbiAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1ZXJ5SXRlbXMoKTogQWJzdHJhY3RDb250cm9sPENhc2VDb3VudHNRdWVyeUl0ZW1Gb3JtW10+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgncXVlcnlJdGVtcycpO1xuICB9XG5cbiAgcHVibGljIGdldCBxdWVyeUl0ZW1zVmFsdWUkKCk6IE9ic2VydmFibGU8Q2FzZUNvdW50c1F1ZXJ5SXRlbUZvcm1bXT4ge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5SXRlbXMudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMucXVlcnlJdGVtcy52YWx1ZSB8fCBbXSkpO1xuICB9XG5cbiAgcHVibGljIGdldCBxdWVyeUl0ZW1zTGlzdCQoKTogT2JzZXJ2YWJsZTxudWxsW10+IHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeUl0ZW1zVmFsdWUkLnBpcGUoXG4gICAgICBtYXAocXVlcnlJdGVtc1ZhbHVlID0+IHF1ZXJ5SXRlbXNWYWx1ZS5tYXAoKCkgPT4gbnVsbCkpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXZpb3VzLCBjdXJyZW50KSA9PiBpc0VxdWFsKHByZXZpb3VzLCBjdXJyZW50KSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBkb2N1bWVudERlZmluaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2RvY3VtZW50RGVmaW5pdGlvbicpO1xuICB9XG5cbiAgcHVibGljIGdldCBmb3JtRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5kaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBwcmVmaWxsQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uVmFsdWU6IENhc2VDb3VudHNDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKCFjb25maWd1cmF0aW9uVmFsdWUpIHJldHVybjtcblxuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uU2VsZWN0ZWQoe1xuICAgICAgaXRlbToge1xuICAgICAgICBjb250ZW50OiBjb25maWd1cmF0aW9uVmFsdWUuZG9jdW1lbnREZWZpbml0aW9uLFxuICAgICAgfSxcbiAgICB9IGFzIGFueSk7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb24ucGF0Y2hWYWx1ZShjb25maWd1cmF0aW9uVmFsdWUuZG9jdW1lbnREZWZpbml0aW9uKTtcblxuICAgIHRoaXMucXVlcnlJdGVtcy5wYXRjaFZhbHVlKHRoaXMucXVlcnlJdGVtc1RvTXVsdGlJbnB1dFZhbHVlcyhjb25maWd1cmF0aW9uVmFsdWUucXVlcnlJdGVtcykpO1xuICB9XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBjb25maWd1cmF0aW9uRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIENvbmZpZ3VyYXRpb25PdXRwdXQ8Q2FzZUNvdW50c0NvbmZpZ3VyYXRpb24+XG4gID4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWREb2N1bWVudERlZmluaXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnRJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8TGlzdEl0ZW0+PiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldEFsbERlZmluaXRpb25zKCksXG4gICAgdGhpcy5zZWxlY3RlZERvY3VtZW50RGVmaW5pdGlvbiQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbZG9jdW1lbnREZWZpbml0aW9ucywgc2VsZWN0ZWREb2N1bWVudERlZmludGlvbl0pID0+XG4gICAgICBkb2N1bWVudERlZmluaXRpb25zLmNvbnRlbnQubWFwKGRlZmluaXRpb24gPT4gKHtcbiAgICAgICAgY29udGVudDogZGVmaW5pdGlvbi5pZC5uYW1lLFxuICAgICAgICBzZWxlY3RlZDogZGVmaW5pdGlvbi5pZC5uYW1lID09PSBzZWxlY3RlZERvY3VtZW50RGVmaW50aW9uLFxuICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX09QRVJBVE9SUzogQXJyYXk8T3BlcmF0b3I+ID0gW1xuICAgIE9wZXJhdG9yLk5PVF9FUVVBTF9UTyxcbiAgICBPcGVyYXRvci5FUVVBTF9UTyxcbiAgICBPcGVyYXRvci5HUkVBVEVSX1RIQU4sXG4gICAgT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPLFxuICAgIE9wZXJhdG9yLkxFU1NfVEhBTixcbiAgICBPcGVyYXRvci5MRVNTX1RIQU5fT1JfRVFVQUxfVE8sXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IG9wZXJhdG9ySXRlbXMkOiBPYnNlcnZhYmxlPEFycmF5PExpc3RJdGVtV2l0aElkPj4gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAuc3RyZWFtKCdrZXknKVxuICAgIC5waXBlKFxuICAgICAgbWFwKCgpID0+XG4gICAgICAgIHRoaXMuX09QRVJBVE9SUy5tYXAob3BlcmF0b3IgPT4gKHtcbiAgICAgICAgICBpZDogb3BlcmF0b3IsXG4gICAgICAgICAgY29udGVudDogdGhpcy53aWRnZXRUcmFuc2xhdGlvblNlcnZpY2UuaW5zdGFudChvcGVyYXRvciwgdGhpcy5kYXRhU291cmNlS2V5KSxcbiAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IFZhbHVlUGF0aFNlbGVjdG9yUHJlZml4ID0gVmFsdWVQYXRoU2VsZWN0b3JQcmVmaXg7XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFRyYW5zbGF0aW9uU2VydmljZTogV2lkZ2V0VHJhbnNsYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJBbGwoW0FkZDE2LCBUcmFzaENhbjE2XSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuRm9ybVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkb2N1bWVudERlZmluaXRpb25TZWxlY3RlZChkb2N1bWVudERlZmluaXRpb25JdGVtOiBMaXN0SXRlbSk6IHZvaWQge1xuICAgIGNvbnN0IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPSBkb2N1bWVudERlZmluaXRpb25JdGVtPy5pdGVtPy5jb250ZW50O1xuXG4gICAgaWYgKCFkb2N1bWVudERlZmluaXRpb25OYW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZERvY3VtZW50RGVmaW5pdGlvbiQubmV4dChkb2N1bWVudERlZmluaXRpb25OYW1lKTtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbi5zZXRWYWx1ZShkb2N1bWVudERlZmluaXRpb25OYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25kaXRpb25zVmFsdWVDaGFuZ2UoaW5kZXg6IG51bWJlciwgdmFsdWVzOiBNdWx0aUlucHV0VmFsdWVzKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFF1ZXJ5SXRlbXNWYWx1ZXMgPSB0aGlzLnF1ZXJ5SXRlbXMudmFsdWU7XG5cbiAgICBpZiAoaXNFcXVhbChjdXJyZW50UXVlcnlJdGVtc1ZhbHVlc1tpbmRleF0ucXVlcnlDb25kaXRpb25zLCB2YWx1ZXMpKSByZXR1cm47XG5cbiAgICB0aGlzLnF1ZXJ5SXRlbXMucGF0Y2hWYWx1ZShcbiAgICAgIGN1cnJlbnRRdWVyeUl0ZW1zVmFsdWVzLm1hcCgoaXRlbSwgaXRlbUluZGV4KSA9PlxuICAgICAgICBpdGVtSW5kZXggPT09IGluZGV4ID8gey4uLml0ZW0sIHF1ZXJ5Q29uZGl0aW9uczogdmFsdWVzfSA6IGl0ZW1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGxhYmVsVmFsdWVDaGFuZ2UoaW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRRdWVyeUl0ZW1zVmFsdWVzID0gdGhpcy5xdWVyeUl0ZW1zLnZhbHVlO1xuXG4gICAgaWYgKGN1cnJlbnRRdWVyeUl0ZW1zVmFsdWVzW2luZGV4XS5sYWJlbCA9PT0gdmFsdWUpIHJldHVybjtcblxuICAgIHRoaXMucXVlcnlJdGVtcy5wYXRjaFZhbHVlKFxuICAgICAgY3VycmVudFF1ZXJ5SXRlbXNWYWx1ZXMubWFwKChpdGVtLCBpdGVtSW5kZXgpID0+XG4gICAgICAgIGl0ZW1JbmRleCA9PT0gaW5kZXggPyB7Li4uaXRlbSwgbGFiZWw6IHZhbHVlfSA6IGl0ZW1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFF1ZXJ5SXRlbSgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UXVlcnlJdGVtcyA9IHRoaXMucXVlcnlJdGVtcy52YWx1ZTtcbiAgICB0aGlzLnF1ZXJ5SXRlbXMucGF0Y2hWYWx1ZShbLi4uY3VycmVudFF1ZXJ5SXRlbXMsIHRoaXMuX0VNUFRZX1FVRVJZX0lURU1fVkFMVUVdKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVDb3VudChpOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UXVlcnlJdGVtcyA9IHRoaXMucXVlcnlJdGVtcy52YWx1ZTtcbiAgICB0aGlzLnF1ZXJ5SXRlbXMucGF0Y2hWYWx1ZShjdXJyZW50UXVlcnlJdGVtcy5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCAhPT0gaSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRm9ybVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5mb3JtLnZhbHVlKSkuc3Vic2NyaWJlKGZvcm1WYWx1ZSA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbkV2ZW50LmVtaXQoe1xuICAgICAgICAgIHZhbGlkOiB0aGlzLmZvcm0udmFsaWQsXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uOiBmb3JtVmFsdWU/LmRvY3VtZW50RGVmaW5pdGlvbixcbiAgICAgICAgICAgIHF1ZXJ5SXRlbXM6IHRoaXMubXVsdGlJbnB1dFZhbHVlc1RvUXVlcnlJdGVtcyhmb3JtVmFsdWUucXVlcnlJdGVtcyksXG4gICAgICAgICAgfSBhcyBDYXNlQ291bnRzQ29uZmlndXJhdGlvbixcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHF1ZXJ5SXRlbXNUb011bHRpSW5wdXRWYWx1ZXMoXG4gICAgcXVlcnlJdGVtczogQ2FzZUNvdW50c1F1ZXJ5SXRlbVtdXG4gICk6IENhc2VDb3VudHNRdWVyeUl0ZW1Gb3JtW10ge1xuICAgIHJldHVybiBxdWVyeUl0ZW1zLm1hcChxdWVyeUl0ZW0gPT4gKHtcbiAgICAgIC4uLnF1ZXJ5SXRlbSxcbiAgICAgIHF1ZXJ5Q29uZGl0aW9uczogcXVlcnlJdGVtLnF1ZXJ5Q29uZGl0aW9ucy5tYXAoY29uZGl0aW9uID0+ICh7XG4gICAgICAgIGtleTogY29uZGl0aW9uLnF1ZXJ5UGF0aCxcbiAgICAgICAgZHJvcGRvd246IGNvbmRpdGlvbi5xdWVyeU9wZXJhdG9yLFxuICAgICAgICB2YWx1ZTogY29uZGl0aW9uLnF1ZXJ5VmFsdWUsXG4gICAgICB9KSksXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBtdWx0aUlucHV0VmFsdWVzVG9RdWVyeUl0ZW1zKFxuICAgIG11bHRpSW5wdXRWYWx1ZXM6IENhc2VDb3VudHNRdWVyeUl0ZW1Gb3JtW11cbiAgKTogQ2FzZUNvdW50c1F1ZXJ5SXRlbVtdIHtcbiAgICByZXR1cm4gbXVsdGlJbnB1dFZhbHVlcy5tYXAocXVlcnlJdGVtID0+ICh7XG4gICAgICAuLi5xdWVyeUl0ZW0sXG4gICAgICBxdWVyeUNvbmRpdGlvbnM6IHF1ZXJ5SXRlbS5xdWVyeUNvbmRpdGlvbnMubWFwKGNvbmRpdGlvbiA9PiAoe1xuICAgICAgICBxdWVyeVBhdGg6IGNvbmRpdGlvbi5rZXksXG4gICAgICAgIHF1ZXJ5T3BlcmF0b3I6IGNvbmRpdGlvbi5kcm9wZG93bixcbiAgICAgICAgcXVlcnlWYWx1ZTogY29uZGl0aW9uLnZhbHVlLFxuICAgICAgfSkpLFxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgcXVlcnlJdGVtc1ZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8Q2FzZUNvdW50c1F1ZXJ5SXRlbUZvcm1bXT4pOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCBxdWVyeUl0ZW1zID0gY29udHJvbC52YWx1ZTtcbiAgICAgIGNvbnN0IHZhbGlkUXVlcnlJdGVtcyA9IHF1ZXJ5SXRlbXMuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCB2YWxpZExhYmVsID0gISFpdGVtLmxhYmVsO1xuICAgICAgICBjb25zdCB2YWxpZENvbmRpdGlvbnMgPSBpdGVtLnF1ZXJ5Q29uZGl0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgY29uZGl0aW9uID0+ICEhY29uZGl0aW9uLnZhbHVlICYmICEhY29uZGl0aW9uLmtleSAmJiAhIWNvbmRpdGlvbi5kcm9wZG93blxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgdmFsaWRMYWJlbCAmJlxuICAgICAgICAgIHZhbGlkQ29uZGl0aW9ucy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgaXRlbS5xdWVyeUNvbmRpdGlvbnMubGVuZ3RoID09PSB2YWxpZENvbmRpdGlvbnMubGVuZ3RoXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHZhbGlkUXVlcnlJdGVtcy5sZW5ndGggPiAxICYmIHZhbGlkUXVlcnlJdGVtcy5sZW5ndGggPT09IHF1ZXJ5SXRlbXMubGVuZ3RoXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGludmFsaWRRdWVyeUl0ZW1zOiAnaW52YWxpZCcsXG4gICAgICAgICAgfTtcbiAgICB9O1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxmb3JtXG4gIGNsYXNzPVwiY2FzZS1jb3VudHMtY29uZmlndXJhdGlvbi1mb3JtXCJcbiAgKm5nSWY9XCJ7XG4gICAgZG9jdW1lbnRJdGVtczogZG9jdW1lbnRJdGVtcyQgfCBhc3luYyxcbiAgICBvcGVyYXRvckl0ZW1zOiBvcGVyYXRvckl0ZW1zJCxcbiAgICBxdWVyeUl0ZW1zVmFsdWU6IHF1ZXJ5SXRlbXNWYWx1ZSQgfCBhc3luYyxcbiAgICBzZWxlY3RlZERvY3VtZW50RGVmaW5pdGlvbjogc2VsZWN0ZWREb2N1bWVudERlZmluaXRpb24kIHwgYXN5bmMsXG4gIH0gYXMgb2JzXCJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZvcm1fX2VsZW1lbnRcIj5cbiAgICA8Y2RzLWRyb3Bkb3duXG4gICAgICBbYXBwZW5kSW5saW5lXT1cInRydWVcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZG9jdW1lbnREZWZpbml0aW9uXCJcbiAgICAgIFtoZWxwZXJUZXh0XT1cIidkb2N1bWVudERlZmluaXRpb25IZWxwZXJUZXh0JyB8IHdpZGdldFRyYW5zbGF0ZTogZGF0YVNvdXJjZUtleSB8IGFzeW5jXCJcbiAgICAgIFtpbnZhbGlkVGV4dF09XCInZG9jdW1lbnREZWZpbml0aW9uSGVscGVyVGV4dCcgfCB3aWRnZXRUcmFuc2xhdGU6IGRhdGFTb3VyY2VLZXkgfCBhc3luY1wiXG4gICAgICBbaW52YWxpZF09XCJkb2N1bWVudERlZmluaXRpb24uZGlydHkgJiYgZG9jdW1lbnREZWZpbml0aW9uLmludmFsaWRcIlxuICAgICAgW2xhYmVsXT1cIidkb2N1bWVudERlZmluaXRpb24nIHwgd2lkZ2V0VHJhbnNsYXRlOiBkYXRhU291cmNlS2V5IHwgYXN5bmNcIlxuICAgICAgKHNlbGVjdGVkKT1cImRvY3VtZW50RGVmaW5pdGlvblNlbGVjdGVkKCRldmVudClcIlxuICAgID5cbiAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwib2JzPy5kb2N1bWVudEl0ZW1zIHx8IFtdXCIgdHlwZT1cIm11bHRpXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICA8L2Nkcy1kcm9wZG93bj5cbiAgPC9kaXY+XG5cbiAgPGNkcy1sYWJlbCBjbGFzcz1cImNvbmRpdGlvbnNfX2xhYmVsXCI+e3tcbiAgICAnY291bnRzJyB8IHdpZGdldFRyYW5zbGF0ZTogZGF0YVNvdXJjZUtleSB8IGFzeW5jXG4gIH19PC9jZHMtbGFiZWw+XG5cbiAgPHAgY2xhc3M9XCJjb25kaXRpb25zX19oZWxwZXItdGV4dCBjZHMtLWZvcm1fX2hlbHBlci10ZXh0XCI+XG4gICAge3sgJ2NvdW50c0hlbHBlclRleHQnIHwgd2lkZ2V0VHJhbnNsYXRlOiBkYXRhU291cmNlS2V5IHwgYXN5bmMgfX1cbiAgPC9wPlxuXG4gIEBmb3IgKF8gb2YgcXVlcnlJdGVtc0xpc3QkIHwgYXN5bmM7IHRyYWNrICRpbmRleDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8Y2RzLXRpbGUgY2xhc3M9XCJjb3VudC10aWxlXCIgW2Nkc0xheWVyXT1cIjFcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb3VudC10aWxlX19pbnB1dFwiIFtjZHNMYXllcl09XCIwXCI+XG4gICAgICAgIDx2LWlucHV0XG4gICAgICAgICAgW3RpdGxlXT1cIidjb3VudFRpdGxlJyB8IHdpZGdldFRyYW5zbGF0ZTogZGF0YVNvdXJjZUtleSB8IGFzeW5jXCJcbiAgICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICAgIFtkZWZhdWx0VmFsdWVdPVwib2JzLnF1ZXJ5SXRlbXNWYWx1ZVtpXT8ubGFiZWxcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtRGlzYWJsZWRcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJsYWJlbFZhbHVlQ2hhbmdlKGksICRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvdi1pbnB1dD5cblxuICAgICAgICA8dmFsdGltby1jYXJib24tbXVsdGktaW5wdXRcbiAgICAgICAgICB0eXBlPVwidmFsdWVQYXRoU2VsZWN0b3JEcm9wZG93blZhbHVlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybURpc2FibGVkXCJcbiAgICAgICAgICBbYWRkUm93VGV4dF09XCInYWRkQ29uZGl0aW9uJyB8IHdpZGdldFRyYW5zbGF0ZTogZGF0YVNvdXJjZUtleSB8IGFzeW5jXCJcbiAgICAgICAgICBbZGVmYXVsdFZhbHVlc109XCJvYnMucXVlcnlJdGVtc1ZhbHVlW2ldPy5xdWVyeUNvbmRpdGlvbnNcIlxuICAgICAgICAgIFtkcm9wZG93bkNvbHVtblRpdGxlXT1cIidvcGVyYXRvcicgfCB3aWRnZXRUcmFuc2xhdGU6IGRhdGFTb3VyY2VLZXkgfCBhc3luY1wiXG4gICAgICAgICAgW2Ryb3Bkb3duSXRlbXNdPVwib3BlcmF0b3JJdGVtcyQgfCBhc3luY1wiXG4gICAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICBbaW5pdGlhbEFtb3VudE9mUm93c109XCIxXCJcbiAgICAgICAgICBba2V5Q29sdW1uVGl0bGVdPVwiJ3BhdGgnIHwgd2lkZ2V0VHJhbnNsYXRlOiBkYXRhU291cmNlS2V5IHwgYXN5bmNcIlxuICAgICAgICAgIFttaW5pbXVtQW1vdW50T2ZSb3dzXT1cIjFcIlxuICAgICAgICAgIFt2YWx1ZUNvbHVtblRpdGxlXT1cIid2YWx1ZScgfCB3aWRnZXRUcmFuc2xhdGU6IGRhdGFTb3VyY2VLZXkgfCBhc3luY1wiXG4gICAgICAgICAgdmFsdWVQYXRoU2VsZWN0b3JOb3RhdGlvbj1cImRvdHNcIlxuICAgICAgICAgIFt2YWx1ZVBhdGhTZWxlY3RvclByZWZpeGVzXT1cIltWYWx1ZVBhdGhTZWxlY3RvclByZWZpeC5ET0MsIFZhbHVlUGF0aFNlbGVjdG9yUHJlZml4LkNBU0VdXCJcbiAgICAgICAgICBbdmFsdWVQYXRoU2VsZWN0b3JTaG93RG9jdW1lbnREZWZpbml0aW9uU2VsZWN0b3JdPVwiZmFsc2VcIlxuICAgICAgICAgIFt2YWx1ZVBhdGhTZWxlY3RvckRvY3VtZW50RGVmaW5pdGlvbk5hbWVdPVwib2JzLnNlbGVjdGVkRG9jdW1lbnREZWZpbml0aW9uXCJcbiAgICAgICAgICBba2V5Q29sdW1uRmxleF09XCIyXCJcbiAgICAgICAgICBbZHJvcGRvd25Db2x1bW5GbGV4XT1cIjFcIlxuICAgICAgICAgIFt2YWx1ZUNvbHVtbkZsZXhdPVwiMVwiXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImNvbmRpdGlvbnNWYWx1ZUNoYW5nZShpLCAkZXZlbnQpXCJcbiAgICAgICAgPjwvdmFsdGltby1jYXJib24tbXVsdGktaW5wdXQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvdW50LXRpbGVfX2RlbGV0ZS1idXR0b25cIj5cbiAgICAgICAgPGNkcy1pY29uLWJ1dHRvblxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtRGlzYWJsZWQgfHwgaSA8IDJcIlxuICAgICAgICAgIChjbGljayk9XCJkZWxldGVDb3VudChpKVwiXG4gICAgICAgICAga2luZD1cImRhbmdlclwiXG4gICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJ0cmFzaC1jYW5cIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICAgICAgPC9jZHMtaWNvbi1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Nkcy10aWxlPlxuICB9XG5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYWRkLWNvdW50LWJ1dHRvblwiXG4gICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgW2Rpc2FibGVkXT1cImZvcm1EaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cImFkZFF1ZXJ5SXRlbSgpXCJcbiAgPlxuICAgIHt7ICdBYW50YWwgdG9ldm9lZ2VuJyB9fVxuXG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImFkZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvZm9ybT5cbiJdfQ==
@@ -1,17 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- export * from './case-counts-configuration.component';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rhc2hib2FyZC9zcmMvbGliL2RhdGEtc291cmNlcy9jYXNlLWNvdW50cy9jb21wb25lbnRzL2Nhc2UtY291bnRzLWNvbmZpZ3VyYXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxjQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9jYXNlLWNvdW50cy1jb25maWd1cmF0aW9uLmNvbXBvbmVudCc7XG4iXX0=
@@ -1,17 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- export * from './case-counts-configuration';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rhc2hib2FyZC9zcmMvbGliL2RhdGEtc291cmNlcy9jYXNlLWNvdW50cy9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsY0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vY2FzZS1jb3VudHMtY29uZmlndXJhdGlvbic7XG4iXX0=
@@ -1,20 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- export * from './components';
17
- export * from './models';
18
- export * from './case-counts.module';
19
- export * from './case-counts.specification';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rhc2hib2FyZC9zcmMvbGliL2RhdGEtc291cmNlcy9jYXNlLWNvdW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2Nhc2UtY291bnRzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2Nhc2UtY291bnRzLnNwZWNpZmljYXRpb24nO1xuIl19
@@ -1,17 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- export {};
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1jb3VudHMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rhc2hib2FyZC9zcmMvbGliL2RhdGEtc291cmNlcy9jYXNlLWNvdW50cy9tb2RlbHMvY2FzZS1jb3VudHMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1F1ZXJ5Q29uZGl0aW9ufSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtNdWx0aUlucHV0VmFsdWVzfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcblxuaW50ZXJmYWNlIENhc2VDb3VudHNRdWVyeUl0ZW0ge1xuICBsYWJlbDogc3RyaW5nO1xuICBxdWVyeUNvbmRpdGlvbnM6IFF1ZXJ5Q29uZGl0aW9uW107XG59XG5cbmludGVyZmFjZSBDYXNlQ291bnRzQ29uZmlndXJhdGlvbiB7XG4gIGRvY3VtZW50RGVmaW5pdGlvbjogc3RyaW5nO1xuICBxdWVyeUl0ZW1zOiBDYXNlQ291bnRzUXVlcnlJdGVtW107XG59XG5cbmludGVyZmFjZSBDYXNlQ291bnRzUXVlcnlJdGVtRm9ybSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHF1ZXJ5Q29uZGl0aW9uczogTXVsdGlJbnB1dFZhbHVlcztcbn1cblxuZXhwb3J0IHtDYXNlQ291bnRzQ29uZmlndXJhdGlvbiwgQ2FzZUNvdW50c1F1ZXJ5SXRlbUZvcm0sIENhc2VDb3VudHNRdWVyeUl0ZW19O1xuIl19
@@ -1,17 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- export * from './case-counts.model';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rhc2hib2FyZC9zcmMvbGliL2RhdGEtc291cmNlcy9jYXNlLWNvdW50cy9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9jYXNlLWNvdW50cy5tb2RlbCc7XG4iXX0=
@@ -1,64 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { NgModule } from '@angular/core';
17
- import { CommonModule } from '@angular/common';
18
- import { DATA_SOURCE_TOKEN } from '../../constants';
19
- import { caseGroupByDataSourceSpecification } from './case-group-by.specification';
20
- import { CaseGroupByConfigurationComponent } from './components';
21
- import { ReactiveFormsModule } from '@angular/forms';
22
- import { WidgetTranslatePipeModule } from '../../pipes';
23
- import { DropdownModule, InputModule } from 'carbon-components-angular';
24
- import { CarbonMultiInputModule, ValuePathSelectorComponent } from '@valtimo/components';
25
- import * as i0 from "@angular/core";
26
- export class CaseGroupByDataSourceModule {
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CaseGroupByDataSourceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
28
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: CaseGroupByDataSourceModule, declarations: [CaseGroupByConfigurationComponent], imports: [CommonModule,
29
- ReactiveFormsModule,
30
- WidgetTranslatePipeModule,
31
- InputModule,
32
- DropdownModule,
33
- CarbonMultiInputModule,
34
- ValuePathSelectorComponent], exports: [CaseGroupByConfigurationComponent] }); }
35
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CaseGroupByDataSourceModule, providers: [
36
- { provide: DATA_SOURCE_TOKEN, useValue: caseGroupByDataSourceSpecification, multi: true },
37
- ], imports: [CommonModule,
38
- ReactiveFormsModule,
39
- WidgetTranslatePipeModule,
40
- InputModule,
41
- DropdownModule,
42
- CarbonMultiInputModule,
43
- ValuePathSelectorComponent] }); }
44
- }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CaseGroupByDataSourceModule, decorators: [{
46
- type: NgModule,
47
- args: [{
48
- declarations: [CaseGroupByConfigurationComponent],
49
- imports: [
50
- CommonModule,
51
- ReactiveFormsModule,
52
- WidgetTranslatePipeModule,
53
- InputModule,
54
- DropdownModule,
55
- CarbonMultiInputModule,
56
- ValuePathSelectorComponent,
57
- ],
58
- exports: [CaseGroupByConfigurationComponent],
59
- providers: [
60
- { provide: DATA_SOURCE_TOKEN, useValue: caseGroupByDataSourceSpecification, multi: true },
61
- ],
62
- }]
63
- }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1ncm91cC1ieS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rhc2hib2FyZC9zcmMvbGliL2RhdGEtc291cmNlcy9jYXNlLWdyb3VwLWJ5L2Nhc2UtZ3JvdXAtYnkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDakYsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEVBQUMsY0FBYyxFQUFFLFdBQVcsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSwwQkFBMEIsRUFBQyxNQUFNLHFCQUFxQixDQUFDOztBQWtCdkYsTUFBTSxPQUFPLDJCQUEyQjsrR0FBM0IsMkJBQTJCO2dIQUEzQiwyQkFBMkIsaUJBZnZCLGlDQUFpQyxhQUU5QyxZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLHlCQUF5QjtZQUN6QixXQUFXO1lBQ1gsY0FBYztZQUNkLHNCQUFzQjtZQUN0QiwwQkFBMEIsYUFFbEIsaUNBQWlDO2dIQUtoQywyQkFBMkIsYUFKM0I7WUFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsa0NBQWtDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztTQUN4RixZQVhDLFlBQVk7WUFDWixtQkFBbUI7WUFDbkIseUJBQXlCO1lBQ3pCLFdBQVc7WUFDWCxjQUFjO1lBQ2Qsc0JBQXNCO1lBQ3RCLDBCQUEwQjs7NEZBT2pCLDJCQUEyQjtrQkFoQnZDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsaUNBQWlDLENBQUM7b0JBQ2pELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIseUJBQXlCO3dCQUN6QixXQUFXO3dCQUNYLGNBQWM7d0JBQ2Qsc0JBQXNCO3dCQUN0QiwwQkFBMEI7cUJBQzNCO29CQUNELE9BQU8sRUFBRSxDQUFDLGlDQUFpQyxDQUFDO29CQUM1QyxTQUFTLEVBQUU7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGtDQUFrQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7cUJBQ3hGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7REFUQV9TT1VSQ0VfVE9LRU59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge2Nhc2VHcm91cEJ5RGF0YVNvdXJjZVNwZWNpZmljYXRpb259IGZyb20gJy4vY2FzZS1ncm91cC1ieS5zcGVjaWZpY2F0aW9uJztcbmltcG9ydCB7Q2FzZUdyb3VwQnlDb25maWd1cmF0aW9uQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1dpZGdldFRyYW5zbGF0ZVBpcGVNb2R1bGV9IGZyb20gJy4uLy4uL3BpcGVzJztcbmltcG9ydCB7RHJvcGRvd25Nb2R1bGUsIElucHV0TW9kdWxlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7Q2FyYm9uTXVsdGlJbnB1dE1vZHVsZSwgVmFsdWVQYXRoU2VsZWN0b3JDb21wb25lbnR9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtDYXNlR3JvdXBCeUNvbmZpZ3VyYXRpb25Db21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgV2lkZ2V0VHJhbnNsYXRlUGlwZU1vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBEcm9wZG93bk1vZHVsZSxcbiAgICBDYXJib25NdWx0aUlucHV0TW9kdWxlLFxuICAgIFZhbHVlUGF0aFNlbGVjdG9yQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbQ2FzZUdyb3VwQnlDb25maWd1cmF0aW9uQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge3Byb3ZpZGU6IERBVEFfU09VUkNFX1RPS0VOLCB1c2VWYWx1ZTogY2FzZUdyb3VwQnlEYXRhU291cmNlU3BlY2lmaWNhdGlvbiwgbXVsdGk6IHRydWV9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYXNlR3JvdXBCeURhdGFTb3VyY2VNb2R1bGUge31cbiJdfQ==
@@ -1,90 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { CaseGroupByConfigurationComponent } from './components';
17
- import { CONDITIONS_HELPER_TEXTS } from '../shared';
18
- export const caseGroupByDataSourceSpecification = {
19
- dataSourceKey: 'case-group-by',
20
- configurationComponent: CaseGroupByConfigurationComponent,
21
- translations: {
22
- de: {
23
- title: 'Gruppe',
24
- documentDefinition: 'Falltyp (erforderlich)',
25
- documentDefinitionHelperText: 'Der Falltyp, für den die Anzahl abgerufen wird',
26
- '!=': 'Nicht gleichzusetzen mit',
27
- '==': 'Gleich',
28
- '>': 'Größer als',
29
- '>=': 'Größer als oder gleich wie',
30
- '<': 'Weniger als',
31
- '<=': 'Gleich oder kleiner als',
32
- path: 'Pfad',
33
- pathHelperText: 'Der Pfad innerhalb der Fall, deren Werte gruppiert werden sollen',
34
- operator: 'Operator',
35
- value: 'Wert',
36
- conditions: 'Bedingungen',
37
- conditionsHelperText: `Geben Sie optionale Bedingungen an, um die Gruppierung für den ausgewählten Falltyp abzurufen. ${CONDITIONS_HELPER_TEXTS.DE()}`,
38
- addCondition: 'Bedingung hinzufügen',
39
- enum: 'Anzeige der Werte',
40
- enumHelperText: "Einige Werte aus der Datenbank sind für den Endbenutzer nicht lesbar. Geben Sie hier an, wie die Werte angezeigt werden sollen. Beispiel: Wert: 'anfrage-gesendet', Anzeige: 'Anfrage gesendet'.",
41
- displayValue: 'Anzeige',
42
- addDisplay: 'Ansicht hinzufügen',
43
- },
44
- en: {
45
- title: 'Group by',
46
- documentDefinition: 'Case type (required)',
47
- documentDefinitionHelperText: 'The case type for which the count is retrieved',
48
- '!=': 'Not equal to',
49
- '==': 'Equal to',
50
- '>': 'Greater than',
51
- '>=': 'Greater than or equal to',
52
- '<': 'Less than',
53
- '<=': 'Less than or equal to',
54
- path: 'Path (required)',
55
- pathHelperText: 'The path within the case of which the values should be grouped',
56
- operator: 'Operator',
57
- value: 'Value',
58
- conditions: 'Conditions',
59
- conditionsHelperText: `Specify optional conditions for retrieving the grouping for the selected case type. ${CONDITIONS_HELPER_TEXTS.EN()}`,
60
- addCondition: 'Add condition',
61
- enum: 'Display of values',
62
- enumHelperText: "Some values from the database will not be readable by the end user. Specify here how the values should be displayed. For example: Value: 'request-sent', Display: 'Request sent'.",
63
- displayValue: 'Display',
64
- addDisplay: 'Add display',
65
- },
66
- nl: {
67
- title: 'Groepering',
68
- documentDefinition: 'Dossiertype (vereist)',
69
- documentDefinitionHelperText: 'Het dossiertype waarvoor de telling wordt opgehaald',
70
- '!=': 'Niet gelijk aan',
71
- '==': 'Gelijk aan',
72
- '>': 'Groter dan',
73
- '>=': 'Groter dan of gelijk aan',
74
- '<': 'Minder dan',
75
- '<=': 'Minder dan of gelijk aan',
76
- path: 'Pad',
77
- pathHelperText: 'Het pad binnen het dossier waarvan de waardes gegroepeerd moeten worden',
78
- operator: 'Operator',
79
- value: 'Waarde',
80
- conditions: 'Condities',
81
- conditionsHelperText: `Geef optionele condities op voor het ophalen van de groepering voor het geselecteerde dossiertype. ${CONDITIONS_HELPER_TEXTS.NL()}`,
82
- addCondition: 'Conditie toevoegen',
83
- enum: 'Weergave van waardes',
84
- enumHelperText: "Sommige waardes uit de database zullen niet leesbaar zijn voor de eindgebruiker. Geef hier op hoe de waardes weergegeven moeten worden. Bijvoorbeeld: Waarde: 'aanvraag-verzonden', Weergave: 'Aanvraag verzonden'.",
85
- displayValue: 'Weergave',
86
- addDisplay: 'Weergave toevoegen',
87
- },
88
- },
89
- };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1ncm91cC1ieS5zcGVjaWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQvc3JjL2xpYi9kYXRhLXNvdXJjZXMvY2FzZS1ncm91cC1ieS9jYXNlLWdyb3VwLWJ5LnNwZWNpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFHSCxPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDL0QsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRWxELE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUE0QjtJQUN6RSxhQUFhLEVBQUUsZUFBZTtJQUM5QixzQkFBc0IsRUFBRSxpQ0FBaUM7SUFDekQsWUFBWSxFQUFFO1FBQ1osRUFBRSxFQUFFO1lBQ0YsS0FBSyxFQUFFLFFBQVE7WUFDZixrQkFBa0IsRUFBRSx3QkFBd0I7WUFDNUMsNEJBQTRCLEVBQUUsZ0RBQWdEO1lBQzlFLElBQUksRUFBRSwwQkFBMEI7WUFDaEMsSUFBSSxFQUFFLFFBQVE7WUFDZCxHQUFHLEVBQUUsWUFBWTtZQUNqQixJQUFJLEVBQUUsNEJBQTRCO1lBQ2xDLEdBQUcsRUFBRSxhQUFhO1lBQ2xCLElBQUksRUFBRSx5QkFBeUI7WUFDL0IsSUFBSSxFQUFFLE1BQU07WUFDWixjQUFjLEVBQUUsa0VBQWtFO1lBQ2xGLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLEtBQUssRUFBRSxNQUFNO1lBQ2IsVUFBVSxFQUFFLGFBQWE7WUFDekIsb0JBQW9CLEVBQUUsa0dBQWtHLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3RKLFlBQVksRUFBRSxzQkFBc0I7WUFDcEMsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixjQUFjLEVBQ1osa01BQWtNO1lBQ3BNLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLFVBQVUsRUFBRSxvQkFBb0I7U0FDakM7UUFDRCxFQUFFLEVBQUU7WUFDRixLQUFLLEVBQUUsVUFBVTtZQUNqQixrQkFBa0IsRUFBRSxzQkFBc0I7WUFDMUMsNEJBQTRCLEVBQUUsZ0RBQWdEO1lBQzlFLElBQUksRUFBRSxjQUFjO1lBQ3BCLElBQUksRUFBRSxVQUFVO1lBQ2hCLEdBQUcsRUFBRSxjQUFjO1lBQ25CLElBQUksRUFBRSwwQkFBMEI7WUFDaEMsR0FBRyxFQUFFLFdBQVc7WUFDaEIsSUFBSSxFQUFFLHVCQUF1QjtZQUM3QixJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLGNBQWMsRUFBRSxnRUFBZ0U7WUFDaEYsUUFBUSxFQUFFLFVBQVU7WUFDcEIsS0FBSyxFQUFFLE9BQU87WUFDZCxVQUFVLEVBQUUsWUFBWTtZQUN4QixvQkFBb0IsRUFBRSx1RkFBdUYsdUJBQXVCLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDM0ksWUFBWSxFQUFFLGVBQWU7WUFDN0IsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixjQUFjLEVBQ1osbUxBQW1MO1lBQ3JMLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLFVBQVUsRUFBRSxhQUFhO1NBQzFCO1FBQ0QsRUFBRSxFQUFFO1lBQ0YsS0FBSyxFQUFFLFlBQVk7WUFDbkIsa0JBQWtCLEVBQUUsdUJBQXVCO1lBQzNDLDRCQUE0QixFQUFFLHFEQUFxRDtZQUNuRixJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLElBQUksRUFBRSxZQUFZO1lBQ2xCLEdBQUcsRUFBRSxZQUFZO1lBQ2pCLElBQUksRUFBRSwwQkFBMEI7WUFDaEMsR0FBRyxFQUFFLFlBQVk7WUFDakIsSUFBSSxFQUFFLDBCQUEwQjtZQUNoQyxJQUFJLEVBQUUsS0FBSztZQUNYLGNBQWMsRUFBRSx5RUFBeUU7WUFDekYsUUFBUSxFQUFFLFVBQVU7WUFDcEIsS0FBSyxFQUFFLFFBQVE7WUFDZixVQUFVLEVBQUUsV0FBVztZQUN2QixvQkFBb0IsRUFBRSxzR0FBc0csdUJBQXVCLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDMUosWUFBWSxFQUFFLG9CQUFvQjtZQUNsQyxJQUFJLEVBQUUsc0JBQXNCO1lBQzVCLGNBQWMsRUFDWixxTkFBcU47WUFDdk4sWUFBWSxFQUFFLFVBQVU7WUFDeEIsVUFBVSxFQUFFLG9CQUFvQjtTQUNqQztLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7RGF0YVNvdXJjZVNwZWNpZmljYXRpb259IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0Nhc2VHcm91cEJ5Q29uZmlndXJhdGlvbkNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7Q09ORElUSU9OU19IRUxQRVJfVEVYVFN9IGZyb20gJy4uL3NoYXJlZCc7XG5cbmV4cG9ydCBjb25zdCBjYXNlR3JvdXBCeURhdGFTb3VyY2VTcGVjaWZpY2F0aW9uOiBEYXRhU291cmNlU3BlY2lmaWNhdGlvbiA9IHtcbiAgZGF0YVNvdXJjZUtleTogJ2Nhc2UtZ3JvdXAtYnknLFxuICBjb25maWd1cmF0aW9uQ29tcG9uZW50OiBDYXNlR3JvdXBCeUNvbmZpZ3VyYXRpb25Db21wb25lbnQsXG4gIHRyYW5zbGF0aW9uczoge1xuICAgIGRlOiB7XG4gICAgICB0aXRsZTogJ0dydXBwZScsXG4gICAgICBkb2N1bWVudERlZmluaXRpb246ICdGYWxsdHlwIChlcmZvcmRlcmxpY2gpJyxcbiAgICAgIGRvY3VtZW50RGVmaW5pdGlvbkhlbHBlclRleHQ6ICdEZXIgRmFsbHR5cCwgZsO8ciBkZW4gZGllIEFuemFobCBhYmdlcnVmZW4gd2lyZCcsXG4gICAgICAnIT0nOiAnTmljaHQgZ2xlaWNoenVzZXR6ZW4gbWl0JyxcbiAgICAgICc9PSc6ICdHbGVpY2gnLFxuICAgICAgJz4nOiAnR3LDtsOfZXIgYWxzJyxcbiAgICAgICc+PSc6ICdHcsO2w59lciBhbHMgb2RlciBnbGVpY2ggd2llJyxcbiAgICAgICc8JzogJ1dlbmlnZXIgYWxzJyxcbiAgICAgICc8PSc6ICdHbGVpY2ggb2RlciBrbGVpbmVyIGFscycsXG4gICAgICBwYXRoOiAnUGZhZCcsXG4gICAgICBwYXRoSGVscGVyVGV4dDogJ0RlciBQZmFkIGlubmVyaGFsYiBkZXIgRmFsbCwgZGVyZW4gV2VydGUgZ3J1cHBpZXJ0IHdlcmRlbiBzb2xsZW4nLFxuICAgICAgb3BlcmF0b3I6ICdPcGVyYXRvcicsXG4gICAgICB2YWx1ZTogJ1dlcnQnLFxuICAgICAgY29uZGl0aW9uczogJ0JlZGluZ3VuZ2VuJyxcbiAgICAgIGNvbmRpdGlvbnNIZWxwZXJUZXh0OiBgR2ViZW4gU2llIG9wdGlvbmFsZSBCZWRpbmd1bmdlbiBhbiwgdW0gZGllIEdydXBwaWVydW5nIGbDvHIgZGVuIGF1c2dld8OkaGx0ZW4gRmFsbHR5cCBhYnp1cnVmZW4uICR7Q09ORElUSU9OU19IRUxQRVJfVEVYVFMuREUoKX1gLFxuICAgICAgYWRkQ29uZGl0aW9uOiAnQmVkaW5ndW5nIGhpbnp1ZsO8Z2VuJyxcbiAgICAgIGVudW06ICdBbnplaWdlIGRlciBXZXJ0ZScsXG4gICAgICBlbnVtSGVscGVyVGV4dDpcbiAgICAgICAgXCJFaW5pZ2UgV2VydGUgYXVzIGRlciBEYXRlbmJhbmsgc2luZCBmw7xyIGRlbiBFbmRiZW51dHplciBuaWNodCBsZXNiYXIuIEdlYmVuIFNpZSBoaWVyIGFuLCB3aWUgZGllIFdlcnRlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuLiBCZWlzcGllbDogV2VydDogJ2FuZnJhZ2UtZ2VzZW5kZXQnLCBBbnplaWdlOiAnQW5mcmFnZSBnZXNlbmRldCcuXCIsXG4gICAgICBkaXNwbGF5VmFsdWU6ICdBbnplaWdlJyxcbiAgICAgIGFkZERpc3BsYXk6ICdBbnNpY2h0IGhpbnp1ZsO8Z2VuJyxcbiAgICB9LFxuICAgIGVuOiB7XG4gICAgICB0aXRsZTogJ0dyb3VwIGJ5JyxcbiAgICAgIGRvY3VtZW50RGVmaW5pdGlvbjogJ0Nhc2UgdHlwZSAocmVxdWlyZWQpJyxcbiAgICAgIGRvY3VtZW50RGVmaW5pdGlvbkhlbHBlclRleHQ6ICdUaGUgY2FzZSB0eXBlIGZvciB3aGljaCB0aGUgY291bnQgaXMgcmV0cmlldmVkJyxcbiAgICAgICchPSc6ICdOb3QgZXF1YWwgdG8nLFxuICAgICAgJz09JzogJ0VxdWFsIHRvJyxcbiAgICAgICc+JzogJ0dyZWF0ZXIgdGhhbicsXG4gICAgICAnPj0nOiAnR3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvJyxcbiAgICAgICc8JzogJ0xlc3MgdGhhbicsXG4gICAgICAnPD0nOiAnTGVzcyB0aGFuIG9yIGVxdWFsIHRvJyxcbiAgICAgIHBhdGg6ICdQYXRoIChyZXF1aXJlZCknLFxuICAgICAgcGF0aEhlbHBlclRleHQ6ICdUaGUgcGF0aCB3aXRoaW4gdGhlIGNhc2Ugb2Ygd2hpY2ggdGhlIHZhbHVlcyBzaG91bGQgYmUgZ3JvdXBlZCcsXG4gICAgICBvcGVyYXRvcjogJ09wZXJhdG9yJyxcbiAgICAgIHZhbHVlOiAnVmFsdWUnLFxuICAgICAgY29uZGl0aW9uczogJ0NvbmRpdGlvbnMnLFxuICAgICAgY29uZGl0aW9uc0hlbHBlclRleHQ6IGBTcGVjaWZ5IG9wdGlvbmFsIGNvbmRpdGlvbnMgZm9yIHJldHJpZXZpbmcgdGhlIGdyb3VwaW5nIGZvciB0aGUgc2VsZWN0ZWQgY2FzZSB0eXBlLiAke0NPTkRJVElPTlNfSEVMUEVSX1RFWFRTLkVOKCl9YCxcbiAgICAgIGFkZENvbmRpdGlvbjogJ0FkZCBjb25kaXRpb24nLFxuICAgICAgZW51bTogJ0Rpc3BsYXkgb2YgdmFsdWVzJyxcbiAgICAgIGVudW1IZWxwZXJUZXh0OlxuICAgICAgICBcIlNvbWUgdmFsdWVzIGZyb20gdGhlIGRhdGFiYXNlIHdpbGwgbm90IGJlIHJlYWRhYmxlIGJ5IHRoZSBlbmQgdXNlci4gU3BlY2lmeSBoZXJlIGhvdyB0aGUgdmFsdWVzIHNob3VsZCBiZSBkaXNwbGF5ZWQuIEZvciBleGFtcGxlOiBWYWx1ZTogJ3JlcXVlc3Qtc2VudCcsIERpc3BsYXk6ICdSZXF1ZXN0IHNlbnQnLlwiLFxuICAgICAgZGlzcGxheVZhbHVlOiAnRGlzcGxheScsXG4gICAgICBhZGREaXNwbGF5OiAnQWRkIGRpc3BsYXknLFxuICAgIH0sXG4gICAgbmw6IHtcbiAgICAgIHRpdGxlOiAnR3JvZXBlcmluZycsXG4gICAgICBkb2N1bWVudERlZmluaXRpb246ICdEb3NzaWVydHlwZSAodmVyZWlzdCknLFxuICAgICAgZG9jdW1lbnREZWZpbml0aW9uSGVscGVyVGV4dDogJ0hldCBkb3NzaWVydHlwZSB3YWFydm9vciBkZSB0ZWxsaW5nIHdvcmR0IG9wZ2VoYWFsZCcsXG4gICAgICAnIT0nOiAnTmlldCBnZWxpamsgYWFuJyxcbiAgICAgICc9PSc6ICdHZWxpamsgYWFuJyxcbiAgICAgICc+JzogJ0dyb3RlciBkYW4nLFxuICAgICAgJz49JzogJ0dyb3RlciBkYW4gb2YgZ2VsaWprIGFhbicsXG4gICAgICAnPCc6ICdNaW5kZXIgZGFuJyxcbiAgICAgICc8PSc6ICdNaW5kZXIgZGFuIG9mIGdlbGlqayBhYW4nLFxuICAgICAgcGF0aDogJ1BhZCcsXG4gICAgICBwYXRoSGVscGVyVGV4dDogJ0hldCBwYWQgYmlubmVuIGhldCBkb3NzaWVyIHdhYXJ2YW4gZGUgd2FhcmRlcyBnZWdyb2VwZWVyZCBtb2V0ZW4gd29yZGVuJyxcbiAgICAgIG9wZXJhdG9yOiAnT3BlcmF0b3InLFxuICAgICAgdmFsdWU6ICdXYWFyZGUnLFxuICAgICAgY29uZGl0aW9uczogJ0NvbmRpdGllcycsXG4gICAgICBjb25kaXRpb25zSGVscGVyVGV4dDogYEdlZWYgb3B0aW9uZWxlIGNvbmRpdGllcyBvcCB2b29yIGhldCBvcGhhbGVuIHZhbiBkZSBncm9lcGVyaW5nIHZvb3IgaGV0IGdlc2VsZWN0ZWVyZGUgZG9zc2llcnR5cGUuICR7Q09ORElUSU9OU19IRUxQRVJfVEVYVFMuTkwoKX1gLFxuICAgICAgYWRkQ29uZGl0aW9uOiAnQ29uZGl0aWUgdG9ldm9lZ2VuJyxcbiAgICAgIGVudW06ICdXZWVyZ2F2ZSB2YW4gd2FhcmRlcycsXG4gICAgICBlbnVtSGVscGVyVGV4dDpcbiAgICAgICAgXCJTb21taWdlIHdhYXJkZXMgdWl0IGRlIGRhdGFiYXNlIHp1bGxlbiBuaWV0IGxlZXNiYWFyIHppam4gdm9vciBkZSBlaW5kZ2VicnVpa2VyLiBHZWVmIGhpZXIgb3AgaG9lIGRlIHdhYXJkZXMgd2VlcmdlZ2V2ZW4gbW9ldGVuIHdvcmRlbi4gQmlqdm9vcmJlZWxkOiBXYWFyZGU6ICdhYW52cmFhZy12ZXJ6b25kZW4nLCBXZWVyZ2F2ZTogJ0FhbnZyYWFnIHZlcnpvbmRlbicuXCIsXG4gICAgICBkaXNwbGF5VmFsdWU6ICdXZWVyZ2F2ZScsXG4gICAgICBhZGREaXNwbGF5OiAnV2VlcmdhdmUgdG9ldm9lZ2VuJyxcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==