@sapui5/sap.fe.core 1.94.0 → 1.96.3
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/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AnnotationHelper.js +3 -3
- package/src/sap/fe/core/AppComponent.js +10 -41
- package/src/sap/fe/core/AppStateHandler.js +18 -4
- package/src/sap/fe/core/BaseController.js +1 -1
- package/src/sap/fe/core/BusyLocker.js +13 -1
- package/src/sap/fe/core/CommonUtils.js +372 -9
- package/src/sap/fe/core/ExtensionAPI.js +1 -1
- package/src/sap/fe/core/PageController.js +11 -3
- package/src/sap/fe/core/RouterProxy.js +59 -69
- package/src/sap/fe/core/Synchronization.js +1 -1
- package/src/sap/fe/core/TemplateComponent.js +9 -3
- package/src/sap/fe/core/TemplateModel.js +1 -1
- package/src/sap/fe/core/TransactionHelper.js +157 -111
- package/src/sap/fe/core/actions/draft.js +1 -1
- package/src/sap/fe/core/actions/messageHandling.js +1 -1
- package/src/sap/fe/core/actions/nonDraft.js +1 -1
- package/src/sap/fe/core/actions/operations.js +25 -3
- package/src/sap/fe/core/actions/sticky.js +1 -1
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +89 -54
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +14 -7
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +128 -25
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +197 -210
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +844 -168
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +903 -189
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.js +31 -17
- package/src/sap/fe/core/controllerextensions/PageReady.ts +50 -15
- package/src/sap/fe/core/controllerextensions/Paginator.js +20 -4
- package/src/sap/fe/core/controllerextensions/Placeholder.js +134 -271
- package/src/sap/fe/core/controllerextensions/Routing.js +1 -1
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +20 -7
- package/src/sap/fe/core/controllerextensions/SideEffects.js +2 -3
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +13 -12
- package/src/sap/fe/core/controllerextensions/ViewState.js +174 -7
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +39 -34
- package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +35 -0
- package/src/sap/fe/core/controls/CommandExecution.js +1 -1
- package/src/sap/fe/core/controls/ConditionalWrapper.js +1 -1
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +4 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
- package/src/sap/fe/core/controls/FieldWrapper.js +1 -1
- package/src/sap/fe/core/controls/FilterBar.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +45 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +5 -8
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +83 -23
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +2 -6
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +25 -18
- package/src/sap/fe/core/converters/ConverterContext.js +18 -4
- package/src/sap/fe/core/converters/ConverterContext.ts +13 -3
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +4 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js +855 -868
- package/src/sap/fe/core/converters/MetaModelConverter.ts +763 -826
- package/src/sap/fe/core/converters/annotations/DataField.js +52 -2
- package/src/sap/fe/core/converters/annotations/DataField.ts +52 -2
- package/src/sap/fe/core/converters/controls/Common/Action.js +6 -1
- package/src/sap/fe/core/converters/controls/Common/Action.ts +3 -0
- package/src/sap/fe/core/converters/controls/Common/Chart.js +85 -6
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +80 -2
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +15 -16
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +16 -30
- package/src/sap/fe/core/converters/controls/Common/Form.js +17 -8
- package/src/sap/fe/core/converters/controls/Common/Form.ts +11 -3
- package/src/sap/fe/core/converters/controls/Common/KPI.js +287 -109
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +314 -139
- package/src/sap/fe/core/converters/controls/Common/Table.js +273 -105
- package/src/sap/fe/core/converters/controls/Common/Table.ts +319 -111
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +8 -20
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +11 -15
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +44 -15
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +41 -19
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +74 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +50 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +15 -7
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +27 -6
- package/src/sap/fe/core/converters/helpers/Aggregation.js +18 -30
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +17 -28
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +2 -2
- package/src/sap/fe/core/converters/helpers/ID.js +1 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +2 -2
- package/src/sap/fe/core/converters/helpers/IssueManager.js +3 -3
- package/src/sap/fe/core/converters/helpers/IssueManager.ts +2 -2
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +11 -6
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +9 -5
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +15 -2
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +14 -14
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +2 -2
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +1 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +73 -8
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +70 -10
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +82 -16
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +100 -17
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.ts +8 -3
- package/src/sap/fe/core/fpm/Component.js +2 -2
- package/src/sap/fe/core/helpers/BindingExpression.js +17 -2
- package/src/sap/fe/core/helpers/BindingExpression.ts +14 -1
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -1
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -3
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.js +28 -1
- package/src/sap/fe/core/helpers/PasteHelper.js +7 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
- package/src/sap/fe/core/helpers/StableIdHelper.js +2 -2
- package/src/sap/fe/core/helpers/StableIdHelper.ts +1 -1
- package/src/sap/fe/core/library.js +2 -2
- package/src/sap/fe/core/library.support.js +1 -1
- package/src/sap/fe/core/messagebundle.properties +30 -1
- package/src/sap/fe/core/messagebundle_ar.properties +14 -0
- package/src/sap/fe/core/messagebundle_bg.properties +14 -0
- package/src/sap/fe/core/messagebundle_ca.properties +15 -1
- package/src/sap/fe/core/messagebundle_cs.properties +14 -0
- package/src/sap/fe/core/messagebundle_cy.properties +14 -0
- package/src/sap/fe/core/messagebundle_da.properties +14 -0
- package/src/sap/fe/core/messagebundle_de.properties +14 -0
- package/src/sap/fe/core/messagebundle_el.properties +14 -0
- package/src/sap/fe/core/messagebundle_en.properties +14 -0
- package/src/sap/fe/core/messagebundle_en_GB.properties +14 -0
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +14 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -2
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +14 -0
- package/src/sap/fe/core/messagebundle_es.properties +21 -7
- package/src/sap/fe/core/messagebundle_es_MX.properties +15 -1
- package/src/sap/fe/core/messagebundle_et.properties +14 -0
- package/src/sap/fe/core/messagebundle_fi.properties +14 -0
- package/src/sap/fe/core/messagebundle_fr.properties +18 -4
- package/src/sap/fe/core/messagebundle_fr_CA.properties +14 -0
- package/src/sap/fe/core/messagebundle_hi.properties +14 -0
- package/src/sap/fe/core/messagebundle_hr.properties +14 -0
- package/src/sap/fe/core/messagebundle_hu.properties +14 -0
- package/src/sap/fe/core/messagebundle_id.properties +14 -0
- package/src/sap/fe/core/messagebundle_it.properties +14 -0
- package/src/sap/fe/core/messagebundle_iw.properties +15 -1
- package/src/sap/fe/core/messagebundle_ja.properties +14 -0
- package/src/sap/fe/core/messagebundle_kk.properties +14 -0
- package/src/sap/fe/core/messagebundle_ko.properties +14 -0
- package/src/sap/fe/core/messagebundle_lt.properties +14 -0
- package/src/sap/fe/core/messagebundle_lv.properties +14 -0
- package/src/sap/fe/core/messagebundle_ms.properties +14 -0
- package/src/sap/fe/core/messagebundle_nl.properties +18 -4
- package/src/sap/fe/core/messagebundle_no.properties +15 -1
- package/src/sap/fe/core/messagebundle_pl.properties +15 -1
- package/src/sap/fe/core/messagebundle_pt.properties +14 -0
- package/src/sap/fe/core/messagebundle_pt_PT.properties +14 -0
- package/src/sap/fe/core/messagebundle_ro.properties +14 -0
- package/src/sap/fe/core/messagebundle_ru.properties +14 -0
- package/src/sap/fe/core/messagebundle_sh.properties +14 -0
- package/src/sap/fe/core/messagebundle_sk.properties +14 -0
- package/src/sap/fe/core/messagebundle_sl.properties +14 -0
- package/src/sap/fe/core/messagebundle_sv.properties +14 -0
- package/src/sap/fe/core/messagebundle_th.properties +14 -0
- package/src/sap/fe/core/messagebundle_tr.properties +14 -0
- package/src/sap/fe/core/messagebundle_uk.properties +14 -0
- package/src/sap/fe/core/messagebundle_vi.properties +14 -0
- package/src/sap/fe/core/messagebundle_zh_CN.properties +14 -0
- package/src/sap/fe/core/messagebundle_zh_TW.properties +14 -0
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js +114 -44
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +2 -2
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +12 -2
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js +3 -14
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +3 -10
- package/src/sap/fe/core/templating/EntitySetHelper.js +13 -3
- package/src/sap/fe/core/templating/EntitySetHelper.ts +4 -0
- package/src/sap/fe/core/templating/FilterHelper.js +2 -2
- package/src/sap/fe/core/templating/FilterHelper.ts +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js +41 -3
- package/src/sap/fe/core/templating/UIFormatters.ts +74 -2
|
@@ -35,9 +35,11 @@ sap.ui.define(["sap/fe/core/templating/FilterTemplating", "sap/fe/core/helpers/B
|
|
|
35
35
|
var sMeasure = chartAnnotation === null || chartAnnotation === void 0 ? void 0 : (_chartAnnotation$$tar = chartAnnotation.$target) === null || _chartAnnotation$$tar === void 0 ? void 0 : (_chartAnnotation$$tar2 = _chartAnnotation$$tar.Measures[0]) === null || _chartAnnotation$$tar2 === void 0 ? void 0 : _chartAnnotation$$tar2.value;
|
|
36
36
|
var sDimension = chartAnnotation === null || chartAnnotation === void 0 ? void 0 : (_chartAnnotation$$tar3 = chartAnnotation.$target) === null || _chartAnnotation$$tar3 === void 0 ? void 0 : (_chartAnnotation$$tar4 = _chartAnnotation$$tar3.Dimensions[0]) === null || _chartAnnotation$$tar4 === void 0 ? void 0 : _chartAnnotation$$tar4.value;
|
|
37
37
|
var customAggregates = aggregationHelper.getCustomAggregateDefinitions();
|
|
38
|
-
var aTransAggregations =
|
|
38
|
+
var aTransAggregations = aggregationHelper.getTransAggregations();
|
|
39
39
|
|
|
40
|
-
if (customAggregates
|
|
40
|
+
if (customAggregates.some(function (custAgg) {
|
|
41
|
+
return custAgg.qualifier === sMeasure;
|
|
42
|
+
})) {
|
|
41
43
|
sMeasurePath = sMeasure;
|
|
42
44
|
} else if (aTransAggregations && aTransAggregations[0]) {
|
|
43
45
|
var aAggregations = aTransAggregations[0];
|
|
@@ -99,12 +101,11 @@ sap.ui.define(["sap/fe/core/templating/FilterTemplating", "sap/fe/core/helpers/B
|
|
|
99
101
|
* @param converterContext The chart annotation
|
|
100
102
|
* @param sPropertyPath The aggregation helper
|
|
101
103
|
* @param FilterFields The aggregation helper
|
|
102
|
-
* @param parameterEntityType
|
|
103
104
|
* @returns {VisualFilters | undefined }
|
|
104
105
|
*/
|
|
105
106
|
|
|
106
107
|
|
|
107
|
-
function getVisualFilters(entityType, converterContext, sPropertyPath, FilterFields
|
|
108
|
+
function getVisualFilters(entityType, converterContext, sPropertyPath, FilterFields) {
|
|
108
109
|
var _oVisualFilter$visual;
|
|
109
110
|
|
|
110
111
|
var visualFilter = {};
|
|
@@ -134,10 +135,12 @@ sap.ui.define(["sap/fe/core/templating/FilterTemplating", "sap/fe/core/helpers/B
|
|
|
134
135
|
collectionPathConverterContext = resolvedTarget.converterContext;
|
|
135
136
|
}
|
|
136
137
|
|
|
138
|
+
var parameterEntityType = collectionPathConverterContext.getParameterEntityType();
|
|
139
|
+
aParameters = parameterEntityType ? parameterEntityType.keys.map(function (key) {
|
|
140
|
+
return key.name;
|
|
141
|
+
}) : [];
|
|
142
|
+
|
|
137
143
|
if (converterContext.getContextPath() === collectionPathConverterContext.getContextPath()) {
|
|
138
|
-
aParameters = parameterEntityType ? parameterEntityType.keys.map(function (key) {
|
|
139
|
-
return key.name;
|
|
140
|
-
}) : [];
|
|
141
144
|
aParameters.forEach(function (parameter) {
|
|
142
145
|
inParameters.push({
|
|
143
146
|
localDataProperty: parameter,
|
|
@@ -243,7 +246,7 @@ sap.ui.define(["sap/fe/core/templating/FilterTemplating", "sap/fe/core/helpers/B
|
|
|
243
246
|
if (bDimensionHidden === true || bDimensionHiddenFilter === true) {
|
|
244
247
|
return;
|
|
245
248
|
} else if (aVisualizations && aVisualizations.length) {
|
|
246
|
-
var _collectionPathConver5, _collectionPathConver6, _outParameter, _outParameter$LocalDa,
|
|
249
|
+
var _collectionPathConver5, _collectionPathConver6, _outParameter, _outParameter$LocalDa, _requiredProperties, _visualFilter$require, _chartAnnotation3, _chartAnnotation3$$ta, _chartAnnotation3$$ta2, _chartAnnotation3$$ta3;
|
|
247
250
|
|
|
248
251
|
visualFilter.chartAnnotation = chartAnnotation ? (_collectionPathConver5 = collectionPathConverterContext) === null || _collectionPathConver5 === void 0 ? void 0 : _collectionPathConver5.getAbsoluteAnnotationPath(chartAnnotation.fullyQualifiedName + "/$AnnotationPath/") : undefined;
|
|
249
252
|
visualFilter.presentationAnnotation = pvAnnotation ? (_collectionPathConver6 = collectionPathConverterContext) === null || _collectionPathConver6 === void 0 ? void 0 : _collectionPathConver6.getAbsoluteAnnotationPath(pvAnnotation.fullyQualifiedName + "/") : undefined;
|
|
@@ -267,11 +270,33 @@ sap.ui.define(["sap/fe/core/templating/FilterTemplating", "sap/fe/core/helpers/B
|
|
|
267
270
|
visualFilter.selectionVariantAnnotation = svAnnotation ? (_collectionPathConver9 = collectionPathConverterContext) === null || _collectionPathConver9 === void 0 ? void 0 : _collectionPathConver9.getAbsoluteAnnotationPath(svAnnotation.fullyQualifiedName + "/") : undefined;
|
|
268
271
|
}
|
|
269
272
|
|
|
270
|
-
var
|
|
273
|
+
var requiredProperties = [];
|
|
274
|
+
|
|
275
|
+
if (parameterEntityType) {
|
|
276
|
+
var _oEntitySetConverterC, _oEntitySetConverterC2, _oEntitySetConverterC3, _oEntitySetConverterC4, _oRestrictedProperty$;
|
|
277
|
+
|
|
278
|
+
var sEntitySet = collectionPath.split("/")[0];
|
|
279
|
+
var sNavigationProperty = collectionPath.split("/")[1];
|
|
280
|
+
var oEntitySetConverterContext = converterContext.getConverterContextFor("/" + sEntitySet);
|
|
281
|
+
var aRestrictedProperties = oEntitySetConverterContext === null || oEntitySetConverterContext === void 0 ? void 0 : (_oEntitySetConverterC = oEntitySetConverterContext.getDataModelObjectPath().startingEntitySet) === null || _oEntitySetConverterC === void 0 ? void 0 : (_oEntitySetConverterC2 = _oEntitySetConverterC.annotations) === null || _oEntitySetConverterC2 === void 0 ? void 0 : (_oEntitySetConverterC3 = _oEntitySetConverterC2.Capabilities) === null || _oEntitySetConverterC3 === void 0 ? void 0 : (_oEntitySetConverterC4 = _oEntitySetConverterC3.NavigationRestrictions) === null || _oEntitySetConverterC4 === void 0 ? void 0 : _oEntitySetConverterC4.RestrictedProperties;
|
|
282
|
+
var oRestrictedProperty = aRestrictedProperties === null || aRestrictedProperties === void 0 ? void 0 : aRestrictedProperties.find(function (restrictedNavProp) {
|
|
283
|
+
var _restrictedNavProp$Na;
|
|
284
|
+
|
|
285
|
+
if (((_restrictedNavProp$Na = restrictedNavProp.NavigationProperty) === null || _restrictedNavProp$Na === void 0 ? void 0 : _restrictedNavProp$Na.type) === "NavigationPropertyPath") {
|
|
286
|
+
return restrictedNavProp.NavigationProperty.value === sNavigationProperty;
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
requiredProperties = oRestrictedProperty === null || oRestrictedProperty === void 0 ? void 0 : (_oRestrictedProperty$ = oRestrictedProperty.FilterRestrictions) === null || _oRestrictedProperty$ === void 0 ? void 0 : _oRestrictedProperty$.RequiredProperties;
|
|
290
|
+
} else {
|
|
291
|
+
var _collectionPathConver10, _entitySetAnnotations, _entitySetAnnotations2;
|
|
292
|
+
|
|
293
|
+
var entitySetAnnotations = (_collectionPathConver10 = collectionPathConverterContext.getEntitySet()) === null || _collectionPathConver10 === void 0 ? void 0 : _collectionPathConver10.annotations;
|
|
294
|
+
requiredProperties = entitySetAnnotations === null || entitySetAnnotations === void 0 ? void 0 : (_entitySetAnnotations = entitySetAnnotations.Capabilities) === null || _entitySetAnnotations === void 0 ? void 0 : (_entitySetAnnotations2 = _entitySetAnnotations.FilterRestrictions) === null || _entitySetAnnotations2 === void 0 ? void 0 : _entitySetAnnotations2.RequiredProperties;
|
|
295
|
+
}
|
|
296
|
+
|
|
271
297
|
var requiredPropertyPaths = [];
|
|
272
|
-
var requiredProperties = entitySetAnnotations === null || entitySetAnnotations === void 0 ? void 0 : (_entitySetAnnotations = entitySetAnnotations.Capabilities) === null || _entitySetAnnotations === void 0 ? void 0 : (_entitySetAnnotations2 = _entitySetAnnotations.FilterRestrictions) === null || _entitySetAnnotations2 === void 0 ? void 0 : _entitySetAnnotations2.RequiredProperties;
|
|
273
298
|
|
|
274
|
-
if (requiredProperties !== null &&
|
|
299
|
+
if ((_requiredProperties = requiredProperties) !== null && _requiredProperties !== void 0 && _requiredProperties.length) {
|
|
275
300
|
requiredProperties.forEach(function (oRequireProperty) {
|
|
276
301
|
requiredPropertyPaths.push(oRequireProperty.value);
|
|
277
302
|
});
|
|
@@ -285,11 +310,15 @@ sap.ui.define(["sap/fe/core/templating/FilterTemplating", "sap/fe/core/helpers/B
|
|
|
285
310
|
if (!visualFilter.selectionVariantAnnotation) {
|
|
286
311
|
visualFilter.showOverlayInitially = true;
|
|
287
312
|
} else {
|
|
288
|
-
var _svAnnotation;
|
|
313
|
+
var _svAnnotation, _svAnnotation$SelectO, _svAnnotation2, _svAnnotation2$Parame;
|
|
289
314
|
|
|
290
|
-
var selectOptions = (_svAnnotation = svAnnotation) === null || _svAnnotation === void 0 ? void 0 : _svAnnotation.SelectOptions.map(function (oSelectOption) {
|
|
315
|
+
var selectOptions = ((_svAnnotation = svAnnotation) === null || _svAnnotation === void 0 ? void 0 : (_svAnnotation$SelectO = _svAnnotation.SelectOptions) === null || _svAnnotation$SelectO === void 0 ? void 0 : _svAnnotation$SelectO.map(function (oSelectOption) {
|
|
291
316
|
return oSelectOption.PropertyName.value;
|
|
292
|
-
});
|
|
317
|
+
})) || [];
|
|
318
|
+
var parameterOptions = ((_svAnnotation2 = svAnnotation) === null || _svAnnotation2 === void 0 ? void 0 : (_svAnnotation2$Parame = _svAnnotation2.Parameters) === null || _svAnnotation2$Parame === void 0 ? void 0 : _svAnnotation2$Parame.map(function (oParameterOption) {
|
|
319
|
+
return oParameterOption.PropertyName.value;
|
|
320
|
+
})) || [];
|
|
321
|
+
selectOptions = selectOptions.concat(parameterOptions);
|
|
293
322
|
requiredPropertyPaths = requiredPropertyPaths.sort();
|
|
294
323
|
selectOptions = selectOptions.sort();
|
|
295
324
|
visualFilter.showOverlayInitially = requiredPropertyPaths.some(function (sPath) {
|
|
@@ -332,4 +361,4 @@ sap.ui.define(["sap/fe/core/templating/FilterTemplating", "sap/fe/core/helpers/B
|
|
|
332
361
|
_exports.getVisualFilters = getVisualFilters;
|
|
333
362
|
return _exports;
|
|
334
363
|
}, false);
|
|
335
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpc3VhbEZpbHRlcnMudHMiXSwibmFtZXMiOlsiX2NoZWNrVkZBZ2dyZWdhdGlvbiIsImNvbnZlcnRlckNvbnRleHQiLCJjaGFydEFubm90YXRpb24iLCJhZ2dyZWdhdGlvbkhlbHBlciIsInNNZWFzdXJlUGF0aCIsImJHcm91cGFibGUiLCJiQWdncmVnYXRhYmxlIiwic01lYXN1cmUiLCIkdGFyZ2V0IiwiTWVhc3VyZXMiLCJ2YWx1ZSIsInNEaW1lbnNpb24iLCJEaW1lbnNpb25zIiwiY3VzdG9tQWdncmVnYXRlcyIsImdldEN1c3RvbUFnZ3JlZ2F0ZURlZmluaXRpb25zIiwiYVRyYW5zQWdncmVnYXRpb25zIiwiZ2V0QW5ub3RhdGlvbnNCeVRlcm0iLCJnZXRFbnRpdHlDb250YWluZXIiLCJnZXRFbnRpdHlUeXBlIiwiYUFnZ3JlZ2F0aW9ucyIsInNvbWUiLCJvQWdncmVnYXRlIiwiTmFtZSIsIkFnZ3JlZ2F0YWJsZVByb3BlcnR5IiwiYUFnZ3JlZ2F0YWJsZVByb3BzRnJvbUNvbnRhaW5lciIsImdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMiLCJhR3JvdXBhYmxlUHJvcHNGcm9tQ29udGFpbmVyIiwiZ2V0R3JvdXBhYmxlUHJvcGVydGllcyIsImxlbmd0aCIsImFnZ3JlZ2F0YWJsZVByb3AiLCJQcm9wZXJ0eSIsImdyb3VwYWJsZVByb3AiLCJnZXRWaXN1YWxGaWx0ZXJzIiwiZW50aXR5VHlwZSIsInNQcm9wZXJ0eVBhdGgiLCJGaWx0ZXJGaWVsZHMiLCJwYXJhbWV0ZXJFbnRpdHlUeXBlIiwidmlzdWFsRmlsdGVyIiwib1Zpc3VhbEZpbHRlciIsInZhbHVlTGlzdCIsIm9WRlBhdGgiLCJhbm5vdGF0aW9uUXVhbGlmaWVyU3BsaXQiLCJzcGxpdCIsInF1YWxpZmllclZMIiwicHJvcGVydHkiLCJyZXNvbHZlUGF0aCIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiY29sbGVjdGlvblBhdGgiLCJDb2xsZWN0aW9uUGF0aCIsImNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHRGb3IiLCJnZXRFbnRpdHlTZXQiLCJuYW1lIiwidmFsdWVMaXN0UGFyYW1zIiwiUGFyYW1ldGVycyIsIm91dFBhcmFtZXRlciIsImluUGFyYW1ldGVycyIsImFQYXJhbWV0ZXJzIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldEVudGl0eVNldCIsInJlc29sdmVkVGFyZ2V0IiwiZ2V0RW50aXR5VHlwZUFubm90YXRpb24iLCJnZXRDb250ZXh0UGF0aCIsImtleXMiLCJtYXAiLCJrZXkiLCJmb3JFYWNoIiwicGFyYW1ldGVyIiwicHVzaCIsImxvY2FsRGF0YVByb3BlcnR5IiwidmFsdWVMaXN0UHJvcGVydHkiLCJ2YWx1ZUxpc3RQYXJhbSIsIkxvY2FsRGF0YVByb3BlcnR5IiwiVmFsdWVMaXN0UHJvcGVydHkiLCIkVHlwZSIsImJOb3RGaWx0ZXJhYmxlIiwiaXNQcm9wZXJ0eUZpbHRlcmFibGUiLCJvSW5QYXJhbWV0ZXIiLCJtYWluRW50aXR5U2V0SW5NYXBwaW5nQWxsb3dlZEV4cHJlc3Npb24iLCJjb21waWxlQmluZGluZyIsImNoZWNrRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyIsImdldEFic29sdXRlQW5ub3RhdGlvblBhdGgiLCJ2YWx1ZUxpc3RFbnRpdHlTZXRJbk1hcHBpbmdBbGxvd2VkRXhwcmVzc2lvbiIsIkVycm9yIiwicHZRdWFsaWZpZXIiLCJQcmVzZW50YXRpb25WYXJpYW50UXVhbGlmaWVyIiwic3ZRdWFsaWZpZXIiLCJTZWxlY3Rpb25WYXJpYW50UXVhbGlmaWVyIiwicHZBbm5vdGF0aW9uIiwiYW5ub3RhdGlvbiIsIkFnZ3JlZ2F0aW9uSGVscGVyIiwiaXNBbmFseXRpY3NTdXBwb3J0ZWQiLCJhVmlzdWFsaXphdGlvbnMiLCJWaXN1YWxpemF0aW9ucyIsImNvbnRleHRQYXRoIiwidmlzdWFsaXphdGlvbiIsInRlcm0iLCJfYmdldFZGQWdncmVnYXRpb24iLCJiRGltZW5zaW9uSGlkZGVuIiwiVUkiLCJIaWRkZW4iLCJ2YWx1ZU9mIiwiYkRpbWVuc2lvbkhpZGRlbkZpbHRlciIsIkhpZGRlbkZpbHRlciIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInVuZGVmaW5lZCIsInByZXNlbnRhdGlvbkFubm90YXRpb24iLCJiSXNSYW5nZSIsImJJc01haW5FbnRpdHlTZXRTaW5nbGVTZWxlY3Rpb24iLCJtdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWQiLCJyZXF1aXJlZCIsImdldElzUmVxdWlyZWQiLCJzdkFubm90YXRpb24iLCJzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiIsImVudGl0eVNldEFubm90YXRpb25zIiwicmVxdWlyZWRQcm9wZXJ0eVBhdGhzIiwicmVxdWlyZWRQcm9wZXJ0aWVzIiwiQ2FwYWJpbGl0aWVzIiwiRmlsdGVyUmVzdHJpY3Rpb25zIiwiUmVxdWlyZWRQcm9wZXJ0aWVzIiwib1JlcXVpcmVQcm9wZXJ0eSIsImNvbmNhdCIsInNob3dPdmVybGF5SW5pdGlhbGx5Iiwic2VsZWN0T3B0aW9ucyIsIlNlbGVjdE9wdGlvbnMiLCJvU2VsZWN0T3B0aW9uIiwiUHJvcGVydHlOYW1lIiwic29ydCIsInNQYXRoIiwiaW5kZXhPZiIsInNEaW1lbnNpb25UeXBlIiwidHlwZSIsIkNoYXJ0VHlwZSIsInJlbmRlckxpbmVDaGFydCIsImdldERpYWdub3N0aWNzIiwiYWRkSXNzdWUiLCJJc3N1ZUNhdGVnb3J5IiwiQW5ub3RhdGlvbiIsIklzc3VlU2V2ZXJpdHkiLCJIaWdoIiwiSXNzdWVUeXBlIiwiTUFMRk9STUVEX1ZJU1VBTEZJTFRFUlMiLCJDSEFSVCIsIlBSRVNFTlRBVElPTlZBUklBTlQiLCJWQUxVRUxJU1QiLCJNYW5pZmVzdCIsIk9iamVjdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQSxtQkFBbUIsR0FBRyxVQUMzQkMsZ0JBRDJCLEVBRTNCQyxlQUYyQixFQUczQkMs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Q0MsSUFBakYsRUFBdUZDLFNBQVMsQ0FBQ0MsdUJBQVYsQ0FBa0NHLFNBQXpIO0FBQ0E7O0FBQ0QsUUFBSUUsTUFBTSxDQUFDbkYsSUFBUCxDQUFZM0IsWUFBWixFQUEwQlQsTUFBMUIsR0FBbUMsQ0FBdkMsRUFBMEM7QUFDekMsYUFBT1MsWUFBUDtBQUNBO0FBQ0QiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eVR5cGUgfSBmcm9tIFwiQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlclwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHsgRmlsdGVyRmllbGRNYW5pZmVzdENvbmZpZ3VyYXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBpc1Byb3BlcnR5RmlsdGVyYWJsZSwgZ2V0SXNSZXF1aXJlZCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0ZpbHRlclRlbXBsYXRpbmdcIjtcbmltcG9ydCB7IGNvbXBpbGVCaW5kaW5nIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCB7IGNoZWNrRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uSGVscGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IHsgSXNzdWVUeXBlLCBJc3N1ZVNldmVyaXR5LCBJc3N1ZUNhdGVnb3J5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Jc3N1ZU1hbmFnZXJcIjtcblxuZXhwb3J0IHR5cGUgVmlzdWFsRmlsdGVycyA9IHtcblx0ZGltZW5zaW9uUGF0aD86IHN0cmluZztcblx0bWVhc3VyZVBhdGg/OiBzdHJpbmc7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHRjaGFydEFubm90YXRpb24/OiBzdHJpbmc7XG5cdHByZXNlbnRhdGlvbkFubm90YXRpb24/OiBzdHJpbmc7XG5cdHZpc2libGU/OiBib29sZWFuO1xuXHRvdXRQYXJhbWV0ZXI/OiBzdHJpbmc7XG5cdGluUGFyYW1ldGVycz86IG9iamVjdFtdO1xuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblx0c2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24/OiBzdHJpbmc7XG5cdG11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZD86IGJvb2xlYW47XG5cdHJlcXVpcmVkPzogYm9vbGVhbjtcblx0c2hvd092ZXJsYXlJbml0aWFsbHk/OiBib29sZWFuO1xuXHRyZW5kZXJMaW5lQ2hhcnQ/OiBib29sZWFuO1xuXHRyZXF1aXJlZFByb3BlcnRpZXM/OiBvYmplY3RbXTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHRoYXQgbWVhc3VyZXMgYW5kIGRpbWVuc2lvbnMgb2YgdGhlIHZpc3VhbCBmaWx0ZXIgY2hhcnQgY2FuIGJlIGFnZ3JlZ2F0ZWQgYW5kIGdyb3VwZWQuXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBjaGFydEFubm90YXRpb24gVGhlIGNoYXJ0IGFubm90YXRpb25cbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbkhlbHBlciBUaGUgYWdncmVnYXRpb24gaGVscGVyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbiB8IHVuZGVmaW5lZCB9XG4gKi9cbmNvbnN0IF9jaGVja1ZGQWdncmVnYXRpb24gPSBmdW5jdGlvbihcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0Y2hhcnRBbm5vdGF0aW9uOiBhbnksXG5cdGFnZ3JlZ2F0aW9uSGVscGVyOiBhbnlcbik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRsZXQgc01lYXN1cmVQYXRoLCBiR3JvdXBhYmxlLCBiQWdncmVnYXRhYmxlO1xuXHRjb25zdCBzTWVhc3VyZTogc3RyaW5nID0gY2hhcnRBbm5vdGF0aW9uPy4kdGFyZ2V0Py5NZWFzdXJlc1swXT8udmFsdWU7XG5cdGNvbnN0IHNEaW1lbnNpb246IHN0cmluZyA9IGNoYXJ0QW5ub3RhdGlvbj8uJHRhcmdldD8uRGltZW5zaW9uc1swXT8udmFsdWU7XG5cdGNvbnN0IGN1c3RvbUFnZ3JlZ2F0ZXMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRDdXN0b21BZ2dyZWdhdGVEZWZpbml0aW9ucygpO1xuXHRjb25zdCBhVHJhbnNBZ2dyZWdhdGlvbnMgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEFubm90YXRpb25zQnlUZXJtKFxuXHRcdFwiQW5hbHl0aWNzXCIsXG5cdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5BbmFseXRpY3MudjEuQWdncmVnYXRlZFByb3BlcnRpZXNcIixcblx0XHRbY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlDb250YWluZXIoKSwgY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCldXG5cdCk7XG5cdGlmIChjdXN0b21BZ2dyZWdhdGVzW3NNZWFzdXJlXSkge1xuXHRcdHNNZWFzdXJlUGF0aCA9IHNNZWFzdXJlO1xuXHR9IGVsc2UgaWYgKGFUcmFuc0FnZ3JlZ2F0aW9ucyAmJiBhVHJhbnNBZ2dyZWdhdGlvbnNbMF0pIHtcblx0XHRjb25zdCBhQWdncmVnYXRpb25zID0gYVRyYW5zQWdncmVnYXRpb25zWzBdO1xuXHRcdGFBZ2dyZWdhdGlvbnMuc29tZShmdW5jdGlvbihvQWdncmVnYXRlOiBhbnkpIHtcblx0XHRcdGlmIChvQWdncmVnYXRlLk5hbWUgPT09IHNNZWFzdXJlKSB7XG5cdFx0XHRcdHNNZWFzdXJlUGF0aCA9IG9BZ2dyZWdhdGU/LkFnZ3JlZ2F0YWJsZVByb3BlcnR5LnZhbHVlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdGNvbnN0IGFBZ2dyZWdhdGFibGVQcm9wc0Zyb21Db250YWluZXIgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzKCk7XG5cdGNvbnN0IGFHcm91cGFibGVQcm9wc0Zyb21Db250YWluZXIgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRHcm91cGFibGVQcm9wZXJ0aWVzKCk7XG5cdGlmIChhQWdncmVnYXRhYmxlUHJvcHNGcm9tQ29udGFpbmVyICYmIGFBZ2dyZWdhdGFibGVQcm9wc0Zyb21Db250YWluZXIubGVuZ3RoKSB7XG5cdFx0Zm9yIChjb25zdCBhZ2dyZWdhdGFibGVQcm9wIG9mIGFBZ2dyZWdhdGFibGVQcm9wc0Zyb21Db250YWluZXIpIHtcblx0XHRcdGlmIChhZ2dyZWdhdGFibGVQcm9wPy5Qcm9wZXJ0eT8udmFsdWUgPT09IHNNZWFzdXJlUGF0aCkge1xuXHRcdFx0XHRiQWdncmVnYXRhYmxlID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0aWYgKGFHcm91cGFibGVQcm9wc0Zyb21Db250YWluZXIgJiYgYUdyb3VwYWJsZVByb3BzRnJvbUNvbnRhaW5lci5sZW5ndGgpIHtcblx0XHRmb3IgKGNvbnN0IGdyb3VwYWJsZVByb3Agb2YgYUdyb3VwYWJsZVByb3BzRnJvbUNvbnRhaW5lcikge1xuXHRcdFx0aWYgKGdyb3VwYWJsZVByb3A/LnZhbHVlID09PSBzRGltZW5zaW9uKSB7XG5cdFx0XHRcdGJHcm91cGFibGUgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gYkFnZ3JlZ2F0YWJsZSAmJiBiR3JvdXBhYmxlO1xufTtcblxuLyoqXG4gKiBNZXRob2QgdG8gZ2V0IHRoZSB2aXN1YWwgZmlsdGVycyBvYmplY3QgZm9yIGEgcHJvcGVydHkuXG4gKiBAcGFyYW0gZW50aXR5VHlwZSBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjaGFydCBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gc1Byb3BlcnR5UGF0aCBUaGUgYWdncmVnYXRpb24gaGVscGVyXG4gKiBAcGFyYW0gRmlsdGVyRmllbGRzIFRoZSBhZ2dyZWdhdGlvbiBoZWxwZXJcbiAqIEBwYXJhbSBwYXJhbWV0ZXJFbnRpdHlUeXBlXG4gKiBAcmV0dXJucyB7VmlzdWFsRmlsdGVycyB8IHVuZGVmaW5lZCB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaXN1YWxGaWx0ZXJzKFxuXHRlbnRpdHlUeXBlOiBFbnRpdHlUeXBlLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzUHJvcGVydHlQYXRoOiBzdHJpbmcsXG5cdEZpbHRlckZpZWxkczogUmVjb3JkPHN0cmluZywgRmlsdGVyRmllbGRNYW5pZmVzdENvbmZpZ3VyYXRpb24+LFxuXHRwYXJhbWV0ZXJFbnRpdHlUeXBlOiBFbnRpdHlUeXBlXG4pOiBWaXN1YWxGaWx0ZXJzIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgdmlzdWFsRmlsdGVyOiBWaXN1YWxGaWx0ZXJzID0ge307XG5cdGNvbnN0IG9WaXN1YWxGaWx0ZXI6IEZpbHRlckZpZWxkTWFuaWZlc3RDb25maWd1cmF0aW9uID0gRmlsdGVyRmllbGRzW3NQcm9wZXJ0eVBhdGhdO1xuXHRpZiAob1Zpc3VhbEZpbHRlciAmJiBvVmlzdWFsRmlsdGVyPy52aXN1YWxGaWx0ZXIgJiYgb1Zpc3VhbEZpbHRlcj8udmlzdWFsRmlsdGVyPy52YWx1ZUxpc3QpIHtcblx0XHRjb25zdCBvVkZQYXRoID0gb1Zpc3VhbEZpbHRlcj8udmlzdWFsRmlsdGVyPy52YWx1ZUxpc3Q7XG5cdFx0Y29uc3QgYW5ub3RhdGlvblF1YWxpZmllclNwbGl0ID0gb1ZGUGF0aC5zcGxpdChcIiNcIik7XG5cdFx0Y29uc3QgcXVhbGlmaWVyVkwgPSBhbm5vdGF0aW9uUXVhbGlmaWVyU3BsaXQubGVuZ3RoID4gMSA/IFwiVmFsdWVMaXN0I1wiICsgYW5ub3RhdGlvblF1YWxpZmllclNwbGl0WzFdIDogYW5ub3RhdGlvblF1YWxpZmllclNwbGl0WzBdO1xuXHRcdGNvbnN0IHByb3BlcnR5ID0gZW50aXR5VHlwZS5yZXNvbHZlUGF0aChzUHJvcGVydHlQYXRoKTtcblx0XHRjb25zdCB2YWx1ZUxpc3Q6IGFueSA9IHByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uW3F1YWxpZmllclZMXTtcblx0XHRpZiAodmFsdWVMaXN0KSB7XG5cdFx0XHRjb25zdCBjb2xsZWN0aW9uUGF0aCA9IHZhbHVlTGlzdD8uQ29sbGVjdGlvblBhdGg7XG5cdFx0XHRsZXQgY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0ID0gY29udmVydGVyQ29udGV4dC5nZXRDb252ZXJ0ZXJDb250ZXh0Rm9yKFxuXHRcdFx0XHRcIi9cIiArIChjb2xsZWN0aW9uUGF0aCB8fCBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpPy5uYW1lKVxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IHZhbHVlTGlzdFBhcmFtcyA9IHZhbHVlTGlzdD8uUGFyYW1ldGVycztcblx0XHRcdGxldCBvdXRQYXJhbWV0ZXI6IGFueTtcblx0XHRcdGNvbnN0IGluUGFyYW1ldGVyczogQXJyYXk8b2JqZWN0PiA9IFtdO1xuXHRcdFx0bGV0IGFQYXJhbWV0ZXJzOiBBcnJheTxzdHJpbmc+ID0gW107XG5cdFx0XHRpZiAoIWNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkudGFyZ2V0RW50aXR5U2V0KSB7XG5cdFx0XHRcdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKFwiXCIpO1xuXHRcdFx0XHRjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQgPSByZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0O1xuXHRcdFx0fVxuXHRcdFx0aWYgKGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udGV4dFBhdGgoKSA9PT0gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0LmdldENvbnRleHRQYXRoKCkpIHtcblx0XHRcdFx0YVBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJFbnRpdHlUeXBlXG5cdFx0XHRcdFx0PyBwYXJhbWV0ZXJFbnRpdHlUeXBlLmtleXMubWFwKGZ1bmN0aW9uKGtleSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4ga2V5Lm5hbWU7XG5cdFx0XHRcdFx0ICB9KVxuXHRcdFx0XHRcdDogW107XG5cdFx0XHRcdGFQYXJhbWV0ZXJzLmZvckVhY2goZnVuY3Rpb24ocGFyYW1ldGVyOiBhbnkpIHtcblx0XHRcdFx0XHRpblBhcmFtZXRlcnMucHVzaCh7XG5cdFx0XHRcdFx0XHRsb2NhbERhdGFQcm9wZXJ0eTogcGFyYW1ldGVyLFxuXHRcdFx0XHRcdFx0dmFsdWVMaXN0UHJvcGVydHk6IHBhcmFtZXRlclxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmICh2YWx1ZUxpc3RQYXJhbXMpIHtcblx0XHRcdFx0Zm9yIChjb25zdCB2YWx1ZUxpc3RQYXJhbSBvZiB2YWx1ZUxpc3RQYXJhbXMpIHtcblx0XHRcdFx0XHRjb25zdCBsb2NhbERhdGFQcm9wZXJ0eSA9ICh2YWx1ZUxpc3RQYXJhbSBhcyBhbnkpLkxvY2FsRGF0YVByb3BlcnR5Py52YWx1ZTtcblx0XHRcdFx0XHRjb25zdCB2YWx1ZUxpc3RQcm9wZXJ0eSA9ICh2YWx1ZUxpc3RQYXJhbSBhcyBhbnkpLlZhbHVlTGlzdFByb3BlcnR5O1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdCh2YWx1ZUxpc3RQYXJhbT8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlckluT3V0XCIgfHxcblx0XHRcdFx0XHRcdFx0dmFsdWVMaXN0UGFyYW0/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RQYXJhbWV0ZXJPdXRcIikgJiZcblx0XHRcdFx0XHRcdHNQcm9wZXJ0eVBhdGggPT09IGxvY2FsRGF0YVByb3BlcnR5XG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRvdXRQYXJhbWV0ZXIgPSB2YWx1ZUxpc3RQYXJhbTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0KHZhbHVlTGlzdFBhcmFtPy4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0UGFyYW1ldGVySW5PdXRcIiB8fFxuXHRcdFx0XHRcdFx0XHR2YWx1ZUxpc3RQYXJhbT8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlckluXCIpICYmXG5cdFx0XHRcdFx0XHRzUHJvcGVydHlQYXRoICE9PSBsb2NhbERhdGFQcm9wZXJ0eVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgYk5vdEZpbHRlcmFibGUgPSBpc1Byb3BlcnR5RmlsdGVyYWJsZShjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQsIHZhbHVlTGlzdFByb3BlcnR5KTtcblx0XHRcdFx0XHRcdGlmICghYk5vdEZpbHRlcmFibGUpIHtcblx0XHRcdFx0XHRcdFx0aW5QYXJhbWV0ZXJzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGxvY2FsRGF0YVByb3BlcnR5OiBsb2NhbERhdGFQcm9wZXJ0eSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZUxpc3RQcm9wZXJ0eTogdmFsdWVMaXN0UHJvcGVydHlcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoaW5QYXJhbWV0ZXJzICYmIGluUGFyYW1ldGVycy5sZW5ndGgpIHtcblx0XHRcdFx0aW5QYXJhbWV0ZXJzLmZvckVhY2goZnVuY3Rpb24ob0luUGFyYW1ldGVyOiBhbnkpIHtcblx0XHRcdFx0XHRjb25zdCBtYWluRW50aXR5U2V0SW5NYXBwaW5nQWxsb3dlZEV4cHJlc3Npb24gPSBjb21waWxlQmluZGluZyhcblx0XHRcdFx0XHRcdGNoZWNrRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyhcblx0XHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdC5nZXRDb252ZXJ0ZXJDb250ZXh0Rm9yKGNvbnZlcnRlckNvbnRleHQuZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aChvSW5QYXJhbWV0ZXI/LmxvY2FsRGF0YVByb3BlcnR5KSlcblx0XHRcdFx0XHRcdFx0XHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLFxuXHRcdFx0XHRcdFx0XHRbXCJTaW5nbGVWYWx1ZVwiXVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0Y29uc3QgdmFsdWVMaXN0RW50aXR5U2V0SW5NYXBwaW5nQWxsb3dlZEV4cHJlc3Npb24gPSBjb21waWxlQmluZGluZyhcblx0XHRcdFx0XHRcdGNoZWNrRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyhcblx0XHRcdFx0XHRcdFx0Y29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0LmdldENvbnZlcnRlckNvbnRleHRGb3IoXG5cdFx0XHRcdFx0XHRcdFx0XHRjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQuZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aChvSW5QYXJhbWV0ZXI/LnZhbHVlTGlzdFByb3BlcnR5KVxuXHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLFxuXHRcdFx0XHRcdFx0XHRbXCJTaW5nbGVWYWx1ZVwiXVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKHZhbHVlTGlzdEVudGl0eVNldEluTWFwcGluZ0FsbG93ZWRFeHByZXNzaW9uID09PSBcInRydWVcIiAmJiBtYWluRW50aXR5U2V0SW5NYXBwaW5nQWxsb3dlZEV4cHJlc3Npb24gPT09IFwiZmFsc2VcIikge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRcdFx0XHRcIkZpbHRlclJlc3RyaWN0aW9ucyBvZiBcIiArIHNQcm9wZXJ0eVBhdGggKyBcIiBpbiBNYWluRW50aXR5U2V0IGFuZCBWYWx1ZUxpc3RFbnRpdHlTZXQgYXJlIGRpZmZlcmVudFwiXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBwdlF1YWxpZmllciA9IHZhbHVlTGlzdD8uUHJlc2VudGF0aW9uVmFyaWFudFF1YWxpZmllcjtcblx0XHRcdGNvbnN0IHN2UXVhbGlmaWVyID0gdmFsdWVMaXN0Py5TZWxlY3Rpb25WYXJpYW50UXVhbGlmaWVyO1xuXHRcdFx0Y29uc3QgcHZBbm5vdGF0aW9uOiBhbnkgPSBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQ/LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKFwiQFVJLlByZXNlbnRhdGlvblZhcmlhbnQjXCIgKyBwdlF1YWxpZmllcilcblx0XHRcdFx0Py5hbm5vdGF0aW9uO1xuXHRcdFx0Y29uc3QgYWdncmVnYXRpb25IZWxwZXIgPSBuZXcgQWdncmVnYXRpb25IZWxwZXIoY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKSwgY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRcdGlmICghYWdncmVnYXRpb25IZWxwZXIuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAocHZBbm5vdGF0aW9uKSB7XG5cdFx0XHRcdGNvbnN0IGFWaXN1YWxpemF0aW9ucyA9IHB2QW5ub3RhdGlvbj8uVmlzdWFsaXphdGlvbnM7XG5cdFx0XHRcdGNvbnN0IGNvbnRleHRQYXRoID0gXCIvXCIgKyB2YWx1ZUxpc3Q/LkNvbGxlY3Rpb25QYXRoIHx8IFwiL1wiICsgY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0Py5nZXRFbnRpdHlTZXQoKT8ubmFtZTtcblx0XHRcdFx0dmlzdWFsRmlsdGVyLmNvbnRleHRQYXRoID0gY29udGV4dFBhdGg7XG5cdFx0XHRcdGxldCBjaGFydEFubm90YXRpb247XG5cdFx0XHRcdGZvciAoY29uc3QgdmlzdWFsaXphdGlvbiBvZiBhVmlzdWFsaXphdGlvbnMpIHtcblx0XHRcdFx0XHRpZiAodmlzdWFsaXphdGlvbi4kdGFyZ2V0Py50ZXJtID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCIpIHtcblx0XHRcdFx0XHRcdGNoYXJ0QW5ub3RhdGlvbiA9IHZpc3VhbGl6YXRpb247XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGNoYXJ0QW5ub3RhdGlvbikge1xuXHRcdFx0XHRcdGNvbnN0IF9iZ2V0VkZBZ2dyZWdhdGlvbjogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IF9jaGVja1ZGQWdncmVnYXRpb24oXG5cdFx0XHRcdFx0XHRjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRcdFx0XHRjaGFydEFubm90YXRpb24sXG5cdFx0XHRcdFx0XHRhZ2dyZWdhdGlvbkhlbHBlclxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKCFfYmdldFZGQWdncmVnYXRpb24pIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgYkRpbWVuc2lvbkhpZGRlbjogYm9vbGVhbiA9IGNoYXJ0QW5ub3RhdGlvbj8uJHRhcmdldD8uRGltZW5zaW9uc1swXT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKTtcblx0XHRcdFx0XHRjb25zdCBiRGltZW5zaW9uSGlkZGVuRmlsdGVyOiBib29sZWFuID0gY2hhcnRBbm5vdGF0aW9uPy4kdGFyZ2V0Py5EaW1lbnNpb25zWzBdPy4kdGFyZ2V0Py5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbkZpbHRlcj8udmFsdWVPZigpO1xuXHRcdFx0XHRcdGlmIChiRGltZW5zaW9uSGlkZGVuID09PSB0cnVlIHx8IGJEaW1lbnNpb25IaWRkZW5GaWx0ZXIgPT09IHRydWUpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGFWaXN1YWxpemF0aW9ucyAmJiBhVmlzdWFsaXphdGlvbnMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIuY2hhcnRBbm5vdGF0aW9uID0gY2hhcnRBbm5vdGF0aW9uXG5cdFx0XHRcdFx0XHRcdD8gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0Py5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdFx0XHRcdFx0Y2hhcnRBbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSArIFwiLyRBbm5vdGF0aW9uUGF0aC9cIlxuXHRcdFx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIucHJlc2VudGF0aW9uQW5ub3RhdGlvbiA9IHB2QW5ub3RhdGlvblxuXHRcdFx0XHRcdFx0XHQ/IGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dD8uZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aChwdkFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lICsgXCIvXCIpXG5cdFx0XHRcdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLm91dFBhcmFtZXRlciA9IG91dFBhcmFtZXRlcj8uTG9jYWxEYXRhUHJvcGVydHk/LnZhbHVlO1xuXHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLmluUGFyYW1ldGVycyA9IGluUGFyYW1ldGVycztcblx0XHRcdFx0XHRcdGNvbnN0IGJJc1JhbmdlID0gY2hlY2tGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zKFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0LmdldENvbnZlcnRlckNvbnRleHRGb3IoY29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKHNQcm9wZXJ0eVBhdGgpKVxuXHRcdFx0XHRcdFx0XHRcdC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCksXG5cdFx0XHRcdFx0XHRcdFtcIlNpbmdsZVJhbmdlXCIsIFwiTXVsdGlSYW5nZVwiXVxuXHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0aWYgKGNvbXBpbGVCaW5kaW5nKGJJc1JhbmdlKSA9PT0gXCJ0cnVlXCIpIHtcblx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiUmFuZ2UgQWxsb3dlZEV4cHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdmlzdWFsIGZpbHRlcnNcIik7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGNvbnN0IGJJc01haW5FbnRpdHlTZXRTaW5nbGVTZWxlY3Rpb246IGFueSA9IGNoZWNrRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyhcblx0XHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdC5nZXRDb252ZXJ0ZXJDb250ZXh0Rm9yKGNvbnZlcnRlckNvbnRleHQuZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aChzUHJvcGVydHlQYXRoKSlcblx0XHRcdFx0XHRcdFx0XHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLFxuXHRcdFx0XHRcdFx0XHRbXCJTaW5nbGVWYWx1ZVwiXVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5tdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWQgPSBjb21waWxlQmluZGluZyghYklzTWFpbkVudGl0eVNldFNpbmdsZVNlbGVjdGlvbi52YWx1ZSkgYXMgYW55O1xuXHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLnJlcXVpcmVkID0gZ2V0SXNSZXF1aXJlZChjb252ZXJ0ZXJDb250ZXh0LCBzUHJvcGVydHlQYXRoKTtcblx0XHRcdFx0XHRcdGxldCBzdkFubm90YXRpb246IGFueTtcblx0XHRcdFx0XHRcdGlmIChzdlF1YWxpZmllcikge1xuXHRcdFx0XHRcdFx0XHRzdkFubm90YXRpb24gPSBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQ/LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKFwiQFVJLlNlbGVjdGlvblZhcmlhbnQjXCIgKyBzdlF1YWxpZmllcilcblx0XHRcdFx0XHRcdFx0XHQ/LmFubm90YXRpb247XG5cdFx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5zZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiA9IHN2QW5ub3RhdGlvblxuXHRcdFx0XHRcdFx0XHRcdD8gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0Py5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKHN2QW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUgKyBcIi9cIilcblx0XHRcdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNvbnN0IGVudGl0eVNldEFubm90YXRpb25zID0gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpPy5hbm5vdGF0aW9ucztcblx0XHRcdFx0XHRcdGxldCByZXF1aXJlZFByb3BlcnR5UGF0aHM6IEFycmF5PG9iamVjdD4gPSBbXTtcblx0XHRcdFx0XHRcdGNvbnN0IHJlcXVpcmVkUHJvcGVydGllcyA9IGVudGl0eVNldEFubm90YXRpb25zPy5DYXBhYmlsaXRpZXM/LkZpbHRlclJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzIGFzIGFueVtdO1xuXHRcdFx0XHRcdFx0aWYgKHJlcXVpcmVkUHJvcGVydGllcz8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uKG9SZXF1aXJlUHJvcGVydHk6IGFueSkge1xuXHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydHlQYXRocy5wdXNoKG9SZXF1aXJlUHJvcGVydHkudmFsdWUpO1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydHlQYXRocyA9IHJlcXVpcmVkUHJvcGVydHlQYXRocy5jb25jYXQoYVBhcmFtZXRlcnMpO1xuXHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLnJlcXVpcmVkUHJvcGVydGllcyA9IHJlcXVpcmVkUHJvcGVydHlQYXRocztcblx0XHRcdFx0XHRcdGlmICh2aXN1YWxGaWx0ZXIucmVxdWlyZWRQcm9wZXJ0aWVzPy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCF2aXN1YWxGaWx0ZXIuaW5QYXJhbWV0ZXJzIHx8ICF2aXN1YWxGaWx0ZXIuaW5QYXJhbWV0ZXJzLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICghdmlzdWFsRmlsdGVyLnNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIuc2hvd092ZXJsYXlJbml0aWFsbHkgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgc2VsZWN0T3B0aW9uczogYW55W10gPSBzdkFubm90YXRpb24/LlNlbGVjdE9wdGlvbnMubWFwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQob1NlbGVjdE9wdGlvbjogYW55KSA9PiBvU2VsZWN0T3B0aW9uLlByb3BlcnR5TmFtZS52YWx1ZVxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydHlQYXRocyA9IHJlcXVpcmVkUHJvcGVydHlQYXRocy5zb3J0KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RPcHRpb25zID0gc2VsZWN0T3B0aW9ucy5zb3J0KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIuc2hvd092ZXJsYXlJbml0aWFsbHkgPSByZXF1aXJlZFByb3BlcnR5UGF0aHMuc29tZShmdW5jdGlvbihzUGF0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc2VsZWN0T3B0aW9ucy5pbmRleE9mKHNQYXRoKSA9PT0gLTE7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLnNob3dPdmVybGF5SW5pdGlhbGx5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5zaG93T3ZlcmxheUluaXRpYWxseSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y29uc3Qgc0RpbWVuc2lvblR5cGUgPSBjaGFydEFubm90YXRpb24/LiR0YXJnZXQ/LkRpbWVuc2lvbnNbMF0/LiR0YXJnZXQ/LnR5cGU7XG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdCEoXG5cdFx0XHRcdFx0XHRcdFx0c0RpbWVuc2lvblR5cGUgPT09IFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCIgfHxcblx0XHRcdFx0XHRcdFx0XHRzRGltZW5zaW9uVHlwZSA9PT0gXCJFZG0uRGF0ZVwiIHx8XG5cdFx0XHRcdFx0XHRcdFx0c0RpbWVuc2lvblR5cGUgPT09IFwiRWRtLlRpbWVPZkRheVwiXG5cdFx0XHRcdFx0XHRcdCkgJiZcblx0XHRcdFx0XHRcdFx0Y2hhcnRBbm5vdGF0aW9uLiR0YXJnZXQuQ2hhcnRUeXBlID09PSBcIlVJLkNoYXJ0VHlwZS9MaW5lXCJcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIucmVuZGVyTGluZUNoYXJ0ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIucmVuZGVyTGluZUNoYXJ0ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdFx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuSGlnaCwgSXNzdWVUeXBlLk1BTEZPUk1FRF9WSVNVQUxGSUxURVJTLkNIQVJUKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdFx0LmFkZElzc3VlKElzc3VlQ2F0ZWdvcnkuQW5ub3RhdGlvbiwgSXNzdWVTZXZlcml0eS5IaWdoLCBJc3N1ZVR5cGUuTUFMRk9STUVEX1ZJU1VBTEZJTFRFUlMuUFJFU0VOVEFUSU9OVkFSSUFOVCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdFx0LmFkZElzc3VlKElzc3VlQ2F0ZWdvcnkuQW5ub3RhdGlvbiwgSXNzdWVTZXZlcml0eS5IaWdoLCBJc3N1ZVR5cGUuTUFMRk9STUVEX1ZJU1VBTEZJTFRFUlMuVkFMVUVMSVNUKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXREaWFnbm9zdGljcygpLmFkZElzc3VlKElzc3VlQ2F0ZWdvcnkuTWFuaWZlc3QsIElzc3VlU2V2ZXJpdHkuSGlnaCwgSXNzdWVUeXBlLk1BTEZPUk1FRF9WSVNVQUxGSUxURVJTLlZBTFVFTElTVCk7XG5cdH1cblx0aWYgKE9iamVjdC5rZXlzKHZpc3VhbEZpbHRlcikubGVuZ3RoID4gMSkge1xuXHRcdHJldHVybiB2aXN1YWxGaWx0ZXI7XG5cdH1cbn1cbiJdfQ==
|
|
364
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpc3VhbEZpbHRlcnMudHMiXSwibmFtZXMiOlsiX2NoZWNrVkZBZ2dyZWdhdGlvbiIsImNvbnZlcnRlckNvbnRleHQiLCJjaGFydEFubm90YXRpb24iLCJhZ2dyZWdhdGlvbkhlbHBlciIsInNNZWFzdXJlUGF0aCIsImJHcm91cGFibGUiLCJiQWdncmVnYXRhYmxlIiwic01lYXN1cmUiLCIkdGFyZ2V0IiwiTWVhc3VyZXMiLCJ2YWx1ZSIsInNEaW1lbnNpb24iLCJEaW1lbnNpb25zIiwiY3VzdG9tQWdncmVnYXRlcyIsImdldEN1c3RvbUFnZ3JlZ2F0ZURlZmluaXRpb25zIiwiYVRyYW5zQWdncmVnYXRpb25zIiwiZ2V0VHJhbnNBZ2dyZWdhdGlvbnMiLCJzb21lIiwiY3VzdEFnZyIsInF1YWxpZmllciIsImFBZ2dyZWdhdGlvbnMiLCJvQWdncmVnYXRlIiwiTmFtZSIsIkFnZ3JlZ2F0YWJsZVByb3BlcnR5IiwiYUFnZ3JlZ2F0YWJsZVByb3BzRnJvbUNvbnRhaW5lciIsImdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMiLCJhR3JvdXBhYmxlUHJvcHNGcm9tQ29udGFpbmVyIiwiZ2V0R3JvdXBhYmxlUHJvcGVydGllcyIsImxlbmd0aCIsImFnZ3JlZ2F0YWJsZVByb3AiLCJQcm9wZXJ0eSIsImdyb3VwYWJsZVByb3AiLCJnZXRWaXN1YWxGaWx0ZXJzIiwiZW50aXR5VHlwZSIsInNQcm9wZXJ0eVBhdGgiLCJGaWx0ZXJGaWVsZHMiLCJ2aXN1YWxGaWx0ZXIiLCJvVmlzdWFsRmlsdGVyIiwidmFsdWVMaXN0Iiwib1ZGUGF0aCIsImFubm90YXRpb25RdWFsaWZpZXJTcGxpdCIsInNwbGl0IiwicXVhbGlmaWVyVkwiLCJwcm9wZXJ0eSIsInJlc29sdmVQYXRoIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJjb2xsZWN0aW9uUGF0aCIsIkNvbGxlY3Rpb25QYXRoIiwiY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0IiwiZ2V0Q29udmVydGVyQ29udGV4dEZvciIsImdldEVudGl0eVNldCIsIm5hbWUiLCJ2YWx1ZUxpc3RQYXJhbXMiLCJQYXJhbWV0ZXJzIiwib3V0UGFyYW1ldGVyIiwiaW5QYXJhbWV0ZXJzIiwiYVBhcmFtZXRlcnMiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwidGFyZ2V0RW50aXR5U2V0IiwicmVzb2x2ZWRUYXJnZXQiLCJnZXRFbnRpdHlUeXBlQW5ub3RhdGlvbiIsInBhcmFtZXRlckVudGl0eVR5cGUiLCJnZXRQYXJhbWV0ZXJFbnRpdHlUeXBlIiwia2V5cyIsIm1hcCIsImtleSIsImdldENvbnRleHRQYXRoIiwiZm9yRWFjaCIsInBhcmFtZXRlciIsInB1c2giLCJsb2NhbERhdGFQcm9wZXJ0eSIsInZhbHVlTGlzdFByb3BlcnR5IiwidmFsdWVMaXN0UGFyYW0iLCJMb2NhbERhdGFQcm9wZXJ0eSIsIlZhbHVlTGlzdFByb3BlcnR5IiwiJFR5cGUiLCJiTm90RmlsdGVyYWJsZSIsImlzUHJvcGVydHlGaWx0ZXJhYmxlIiwib0luUGFyYW1ldGVyIiwibWFpbkVudGl0eVNldEluTWFwcGluZ0FsbG93ZWRFeHByZXNzaW9uIiwiY29tcGlsZUJpbmRpbmciLCJjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJnZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoIiwidmFsdWVMaXN0RW50aXR5U2V0SW5NYXBwaW5nQWxsb3dlZEV4cHJlc3Npb24iLCJFcnJvciIsInB2UXVhbGlmaWVyIiwiUHJlc2VudGF0aW9uVmFyaWFudFF1YWxpZmllciIsInN2UXVhbGlmaWVyIiwiU2VsZWN0aW9uVmFyaWFudFF1YWxpZmllciIsInB2QW5ub3RhdGlvbiIsImFubm90YXRpb24iLCJBZ2dyZWdhdGlvbkhlbHBlciIsImdldEVudGl0eVR5cGUiLCJpc0FuYWx5dGljc1N1cHBvcnRlZCIsImFWaXN1YWxpemF0aW9ucyIsIlZpc3VhbGl6YXRpb25zIiwiY29udGV4dFBhdGgiLCJ2aXN1YWxpemF0aW9uIiwidGVybSIsIl9iZ2V0VkZBZ2dyZWdhdGlvbiIsImJEaW1lbnNpb25IaWRkZW4iLCJVSSIsIkhpZGRlbiIsInZhbHVlT2YiLCJiRGltZW5zaW9uSGlkZGVuRmlsdGVyIiwiSGlkZGVuRmlsdGVyIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwidW5kZWZpbmVkIiwicHJlc2VudGF0aW9uQW5ub3RhdGlvbiIsImJJc1JhbmdlIiwiYklzTWFpbkVudGl0eVNldFNpbmdsZVNlbGVjdGlvbiIsIm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCIsInJlcXVpcmVkIiwiZ2V0SXNSZXF1aXJlZCIsInN2QW5ub3RhdGlvbiIsInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwicmVxdWlyZWRQcm9wZXJ0aWVzIiwic0VudGl0eVNldCIsInNOYXZpZ2F0aW9uUHJvcGVydHkiLCJvRW50aXR5U2V0Q29udmVydGVyQ29udGV4dCIsImFSZXN0cmljdGVkUHJvcGVydGllcyIsInN0YXJ0aW5nRW50aXR5U2V0IiwiQ2FwYWJpbGl0aWVzIiwiTmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIlJlc3RyaWN0ZWRQcm9wZXJ0aWVzIiwib1Jlc3RyaWN0ZWRQcm9wZXJ0eSIsImZpbmQiLCJyZXN0cmljdGVkTmF2UHJvcCIsIk5hdmlnYXRpb25Qcm9wZXJ0eSIsInR5cGUiLCJGaWx0ZXJSZXN0cmljdGlvbnMiLCJSZXF1aXJlZFByb3BlcnRpZXMiLCJlbnRpdHlTZXRBbm5vdGF0aW9ucyIsInJlcXVpcmVkUHJvcGVydHlQYXRocyIsIm9SZXF1aXJlUHJvcGVydHkiLCJjb25jYXQiLCJzaG93T3ZlcmxheUluaXRpYWxseSIsInNlbGVjdE9wdGlvbnMiLCJTZWxlY3RPcHRpb25zIiwib1NlbGVjdE9wdGlvbiIsIlByb3BlcnR5TmFtZSIsInBhcmFtZXRlck9wdGlvbnMiLCJvUGFyYW1ldGVyT3B0aW9uIiwic29ydCIsInNQYXRoIiwiaW5kZXhPZiIsInNEaW1lbnNpb25UeXBlIiwiQ2hhcnRUeXBlIiwicmVuZGVyTGluZUNoYXJ0IiwiZ2V0RGlhZ25vc3RpY3MiLCJhZGRJc3N1ZSIsIklzc3VlQ2F0ZWdvcnkiLCJBbm5vdGF0aW9uIiwiSXNzdWVTZXZlcml0eSIsIkhpZ2giLCJJc3N1ZVR5cGUiLCJNQUxGT1JNRURfVklTVUFMRklMVEVSUyIsIkNIQVJUIiwiUFJFU0VOVEFUSU9OVkFSSUFOVCIsIlZBTFVFTElTVCIsIk1hbmlmZXN0IiwiT2JqZWN0Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1BLG1CQUFtQixHQUFHLFVBQzNCQyxnQkFEMkIsRUFFM0JDLGVBRjJCLEVBRzNCQyxpQkFIMkIsRUFJTDtBQUFBOztBQUN0QixRQUFJQyxZQUFKLEVBQWtCQyxVQUFsQixFQUE4QkMsYUFBOUI7QUFDQSxRQUFNQyxRQUFnQixHQUFHTCxlQUFILGFBQUdBLGVBQUgsZ0RBQUdBLGVBQWUsQ0FBRU0sT0FBcEIsb0ZBQUcsc0JBQTBCQyxRQUExQixDQUFtQyxDQUFuQyxDQUFILDJEQUFHLHVCQUF1Q0MsS0FBaEU7QUFDQSxRQUFNQyxVQUFrQixHQUFHVCxlQUFILGFBQUdBLGVBQUgsaURBQUdBLGVBQWUsQ0FBRU0sT0FBcEIscUZBQUcsdUJBQTBCSSxVQUExQixDQUFxQyxDQUFyQyxDQUFILDJEQUFHLHVCQUF5Q0YsS0FBcEU7QUFDQSxRQUFNRyxnQkFBZ0IsR0FBR1YsaUJBQWlCLENBQUNXLDZCQUFsQixFQUF6QjtBQUNBLFFBQU1DLGtCQUFrQixHQUFHWixpQkFBaUIsQ0FBQ2Esb0JBQWxCLEVBQTNCOztBQUVBLFFBQ0NILGdCQUFnQixDQUFDSSxJQUFqQixDQUFzQixVQUFTQyxPQUFULEVBQW1EO0FBQ3hFLGFBQU9BLE9BQU8sQ0FBQ0MsU0FBUixLQUFzQlosUUFBN0I7QUFDQSxLQUZELENBREQsRUFJRTtBQUNESCxNQUFBQSxZQUFZLEdBQUdHLFFBQWY7QUFDQSxLQU5ELE1BTU8sSUFBSVEsa0JBQWtCLElBQUlBLGtCQUFrQixDQUFDLENBQUQsQ0FBNUMsRUFBaUQ7QUFD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RXlEQyxTQUFTLENBQUNDLHVCQUFWLENBQWtDQyxLQUYzRjtBQUdBO0FBQ0QsU0FsSUQsTUFrSU87QUFDTjdKLFVBQUFBLGdCQUFnQixDQUNkcUosY0FERixHQUVFQyxRQUZGLENBRVdDLGFBQWEsQ0FBQ0MsVUFGekIsRUFFcUNDLGFBQWEsQ0FBQ0MsSUFGbkQsRUFFeURDLFNBQVMsQ0FBQ0MsdUJBQVYsQ0FBa0NFLG1CQUYzRjtBQUdBO0FBQ0QsT0EvTkQsTUErTk87QUFDTjlKLFFBQUFBLGdCQUFnQixDQUNkcUosY0FERixHQUVFQyxRQUZGLENBRVdDLGFBQWEsQ0FBQ0MsVUFGekIsRUFFcUNDLGFBQWEsQ0FBQ0MsSUFGbkQsRUFFeURDLFNBQVMsQ0FBQ0MsdUJBQVYsQ0FBa0NHLFNBRjNGO0FBR0E7QUFDRCxLQTFPRCxNQTBPTztBQUNOL0osTUFBQUEsZ0JBQWdCLENBQUNxSixjQUFqQixHQUFrQ0MsUUFBbEMsQ0FBMkNDLGFBQWEsQ0FBQ1MsUUFBekQsRUFBbUVQLGFBQWEsQ0FBQ0MsSUFBakYsRUFBdUZDLFNBQVMsQ0FBQ0MsdUJBQVYsQ0FBa0NHLFNBQXpIO0FBQ0E7O0FBQ0QsUUFBSUUsTUFBTSxDQUFDbEcsSUFBUCxDQUFZNUIsWUFBWixFQUEwQlIsTUFBMUIsR0FBbUMsQ0FBdkMsRUFBMEM7QUFDekMsYUFBT1EsWUFBUDtBQUNBO0FBQ0QiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eVR5cGUgfSBmcm9tIFwiQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlclwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHsgRmlsdGVyRmllbGRNYW5pZmVzdENvbmZpZ3VyYXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBpc1Byb3BlcnR5RmlsdGVyYWJsZSwgZ2V0SXNSZXF1aXJlZCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0ZpbHRlclRlbXBsYXRpbmdcIjtcbmltcG9ydCB7IGNvbXBpbGVCaW5kaW5nIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCB7IGNoZWNrRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uSGVscGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IHsgSXNzdWVUeXBlLCBJc3N1ZVNldmVyaXR5LCBJc3N1ZUNhdGVnb3J5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Jc3N1ZU1hbmFnZXJcIjtcbmltcG9ydCB7IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvZGlzdC9nZW5lcmF0ZWQvQ2FwYWJpbGl0aWVzXCI7XG5pbXBvcnQgeyBBbm5vdGF0aW9uVGVybSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgQ3VzdG9tQWdncmVnYXRlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL2Rpc3QvZ2VuZXJhdGVkL0FnZ3JlZ2F0aW9uXCI7XG5cbmV4cG9ydCB0eXBlIFZpc3VhbEZpbHRlcnMgPSB7XG5cdGRpbWVuc2lvblBhdGg/OiBzdHJpbmc7XG5cdG1lYXN1cmVQYXRoPzogc3RyaW5nO1xuXHRsYWJlbD86IHN0cmluZztcblx0Y2hhcnRBbm5vdGF0aW9uPzogc3RyaW5nO1xuXHRwcmVzZW50YXRpb25Bbm5vdGF0aW9uPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogYm9vbGVhbjtcblx0b3V0UGFyYW1ldGVyPzogc3RyaW5nO1xuXHRpblBhcmFtZXRlcnM/OiBvYmplY3RbXTtcblx0Y29udGV4dFBhdGg/OiBzdHJpbmc7XG5cdHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uPzogc3RyaW5nO1xuXHRtdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWQ/OiBib29sZWFuO1xuXHRyZXF1aXJlZD86IGJvb2xlYW47XG5cdHNob3dPdmVybGF5SW5pdGlhbGx5PzogYm9vbGVhbjtcblx0cmVuZGVyTGluZUNoYXJ0PzogYm9vbGVhbjtcblx0cmVxdWlyZWRQcm9wZXJ0aWVzPzogb2JqZWN0W107XG59O1xuXG4vKipcbiAqIENoZWNrcyB0aGF0IG1lYXN1cmVzIGFuZCBkaW1lbnNpb25zIG9mIHRoZSB2aXN1YWwgZmlsdGVyIGNoYXJ0IGNhbiBiZSBhZ2dyZWdhdGVkIGFuZCBncm91cGVkLlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0gY2hhcnRBbm5vdGF0aW9uIFRoZSBjaGFydCBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gYWdncmVnYXRpb25IZWxwZXIgVGhlIGFnZ3JlZ2F0aW9uIGhlbHBlclxuICogQHJldHVybnMge2Jvb2xlYW4gfCB1bmRlZmluZWQgfVxuICovXG5jb25zdCBfY2hlY2tWRkFnZ3JlZ2F0aW9uID0gZnVuY3Rpb24oXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGNoYXJ0QW5ub3RhdGlvbjogYW55LFxuXHRhZ2dyZWdhdGlvbkhlbHBlcjogYW55XG4pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcblx0bGV0IHNNZWFzdXJlUGF0aCwgYkdyb3VwYWJsZSwgYkFnZ3JlZ2F0YWJsZTtcblx0Y29uc3Qgc01lYXN1cmU6IHN0cmluZyA9IGNoYXJ0QW5ub3RhdGlvbj8uJHRhcmdldD8uTWVhc3VyZXNbMF0/LnZhbHVlO1xuXHRjb25zdCBzRGltZW5zaW9uOiBzdHJpbmcgPSBjaGFydEFubm90YXRpb24/LiR0YXJnZXQ/LkRpbWVuc2lvbnNbMF0/LnZhbHVlO1xuXHRjb25zdCBjdXN0b21BZ2dyZWdhdGVzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0Q3VzdG9tQWdncmVnYXRlRGVmaW5pdGlvbnMoKTtcblx0Y29uc3QgYVRyYW5zQWdncmVnYXRpb25zID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0VHJhbnNBZ2dyZWdhdGlvbnMoKTtcblxuXHRpZiAoXG5cdFx0Y3VzdG9tQWdncmVnYXRlcy5zb21lKGZ1bmN0aW9uKGN1c3RBZ2c6IEFubm90YXRpb25UZXJtPEN1c3RvbUFnZ3JlZ2F0ZT4pIHtcblx0XHRcdHJldHVybiBjdXN0QWdnLnF1YWxpZmllciA9PT0gc01lYXN1cmU7XG5cdFx0fSlcblx0KSB7XG5cdFx0c01lYXN1cmVQYXRoID0gc01lYXN1cmU7XG5cdH0gZWxzZSBpZiAoYVRyYW5zQWdncmVnYXRpb25zICYmIGFUcmFuc0FnZ3JlZ2F0aW9uc1swXSkge1xuXHRcdGNvbnN0IGFBZ2dyZWdhdGlvbnMgPSBhVHJhbnNBZ2dyZWdhdGlvbnNbMF07XG5cdFx0YUFnZ3JlZ2F0aW9ucy5zb21lKGZ1bmN0aW9uKG9BZ2dyZWdhdGU6IGFueSkge1xuXHRcdFx0aWYgKG9BZ2dyZWdhdGUuTmFtZSA9PT0gc01lYXN1cmUpIHtcblx0XHRcdFx0c01lYXN1cmVQYXRoID0gb0FnZ3JlZ2F0ZT8uQWdncmVnYXRhYmxlUHJvcGVydHkudmFsdWU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0Y29uc3QgYUFnZ3JlZ2F0YWJsZVByb3BzRnJvbUNvbnRhaW5lciA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMoKTtcblx0Y29uc3QgYUdyb3VwYWJsZVByb3BzRnJvbUNvbnRhaW5lciA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEdyb3VwYWJsZVByb3BlcnRpZXMoKTtcblx0aWYgKGFBZ2dyZWdhdGFibGVQcm9wc0Zyb21Db250YWluZXIgJiYgYUFnZ3JlZ2F0YWJsZVByb3BzRnJvbUNvbnRhaW5lci5sZW5ndGgpIHtcblx0XHRmb3IgKGNvbnN0IGFnZ3JlZ2F0YWJsZVByb3Agb2YgYUFnZ3JlZ2F0YWJsZVByb3BzRnJvbUNvbnRhaW5lcikge1xuXHRcdFx0aWYgKGFnZ3JlZ2F0YWJsZVByb3A/LlByb3BlcnR5Py52YWx1ZSA9PT0gc01lYXN1cmVQYXRoKSB7XG5cdFx0XHRcdGJBZ2dyZWdhdGFibGUgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRpZiAoYUdyb3VwYWJsZVByb3BzRnJvbUNvbnRhaW5lciAmJiBhR3JvdXBhYmxlUHJvcHNGcm9tQ29udGFpbmVyLmxlbmd0aCkge1xuXHRcdGZvciAoY29uc3QgZ3JvdXBhYmxlUHJvcCBvZiBhR3JvdXBhYmxlUHJvcHNGcm9tQ29udGFpbmVyKSB7XG5cdFx0XHRpZiAoZ3JvdXBhYmxlUHJvcD8udmFsdWUgPT09IHNEaW1lbnNpb24pIHtcblx0XHRcdFx0Ykdyb3VwYWJsZSA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBiQWdncmVnYXRhYmxlICYmIGJHcm91cGFibGU7XG59O1xuXG4vKipcbiAqIE1ldGhvZCB0byBnZXQgdGhlIHZpc3VhbCBmaWx0ZXJzIG9iamVjdCBmb3IgYSBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBlbnRpdHlUeXBlIFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNoYXJ0IGFubm90YXRpb25cbiAqIEBwYXJhbSBzUHJvcGVydHlQYXRoIFRoZSBhZ2dyZWdhdGlvbiBoZWxwZXJcbiAqIEBwYXJhbSBGaWx0ZXJGaWVsZHMgVGhlIGFnZ3JlZ2F0aW9uIGhlbHBlclxuICogQHJldHVybnMge1Zpc3VhbEZpbHRlcnMgfCB1bmRlZmluZWQgfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzdWFsRmlsdGVycyhcblx0ZW50aXR5VHlwZTogRW50aXR5VHlwZSxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c1Byb3BlcnR5UGF0aDogc3RyaW5nLFxuXHRGaWx0ZXJGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEZpbHRlckZpZWxkTWFuaWZlc3RDb25maWd1cmF0aW9uPlxuKTogVmlzdWFsRmlsdGVycyB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IHZpc3VhbEZpbHRlcjogVmlzdWFsRmlsdGVycyA9IHt9O1xuXHRjb25zdCBvVmlzdWFsRmlsdGVyOiBGaWx0ZXJGaWVsZE1hbmlmZXN0Q29uZmlndXJhdGlvbiA9IEZpbHRlckZpZWxkc1tzUHJvcGVydHlQYXRoXTtcblx0aWYgKG9WaXN1YWxGaWx0ZXIgJiYgb1Zpc3VhbEZpbHRlcj8udmlzdWFsRmlsdGVyICYmIG9WaXN1YWxGaWx0ZXI/LnZpc3VhbEZpbHRlcj8udmFsdWVMaXN0KSB7XG5cdFx0Y29uc3Qgb1ZGUGF0aCA9IG9WaXN1YWxGaWx0ZXI/LnZpc3VhbEZpbHRlcj8udmFsdWVMaXN0O1xuXHRcdGNvbnN0IGFubm90YXRpb25RdWFsaWZpZXJTcGxpdCA9IG9WRlBhdGguc3BsaXQoXCIjXCIpO1xuXHRcdGNvbnN0IHF1YWxpZmllclZMID0gYW5ub3RhdGlvblF1YWxpZmllclNwbGl0Lmxlbmd0aCA+IDEgPyBcIlZhbHVlTGlzdCNcIiArIGFubm90YXRpb25RdWFsaWZpZXJTcGxpdFsxXSA6IGFubm90YXRpb25RdWFsaWZpZXJTcGxpdFswXTtcblx0XHRjb25zdCBwcm9wZXJ0eSA9IGVudGl0eVR5cGUucmVzb2x2ZVBhdGgoc1Byb3BlcnR5UGF0aCk7XG5cdFx0Y29uc3QgdmFsdWVMaXN0OiBhbnkgPSBwcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbltxdWFsaWZpZXJWTF07XG5cdFx0aWYgKHZhbHVlTGlzdCkge1xuXHRcdFx0Y29uc3QgY29sbGVjdGlvblBhdGggPSB2YWx1ZUxpc3Q/LkNvbGxlY3Rpb25QYXRoO1xuXHRcdFx0bGV0IGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVyQ29udGV4dEZvcihcblx0XHRcdFx0XCIvXCIgKyAoY29sbGVjdGlvblBhdGggfHwgY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKT8ubmFtZSlcblx0XHRcdCk7XG5cdFx0XHRjb25zdCB2YWx1ZUxpc3RQYXJhbXMgPSB2YWx1ZUxpc3Q/LlBhcmFtZXRlcnM7XG5cdFx0XHRsZXQgb3V0UGFyYW1ldGVyOiBhbnk7XG5cdFx0XHRjb25zdCBpblBhcmFtZXRlcnM6IEFycmF5PG9iamVjdD4gPSBbXTtcblx0XHRcdGxldCBhUGFyYW1ldGVyczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXHRcdFx0aWYgKCFjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLnRhcmdldEVudGl0eVNldCkge1xuXHRcdFx0XHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihcIlwiKTtcblx0XHRcdFx0Y29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0ID0gcmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dDtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHBhcmFtZXRlckVudGl0eVR5cGUgPSBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQuZ2V0UGFyYW1ldGVyRW50aXR5VHlwZSgpO1xuXHRcdFx0YVBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJFbnRpdHlUeXBlXG5cdFx0XHRcdD8gcGFyYW1ldGVyRW50aXR5VHlwZS5rZXlzLm1hcChmdW5jdGlvbihrZXkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBrZXkubmFtZTtcblx0XHRcdFx0ICB9KVxuXHRcdFx0XHQ6IFtdO1xuXHRcdFx0aWYgKGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udGV4dFBhdGgoKSA9PT0gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0LmdldENvbnRleHRQYXRoKCkpIHtcblx0XHRcdFx0YVBhcmFtZXRlcnMuZm9yRWFjaChmdW5jdGlvbihwYXJhbWV0ZXI6IGFueSkge1xuXHRcdFx0XHRcdGluUGFyYW1ldGVycy5wdXNoKHtcblx0XHRcdFx0XHRcdGxvY2FsRGF0YVByb3BlcnR5OiBwYXJhbWV0ZXIsXG5cdFx0XHRcdFx0XHR2YWx1ZUxpc3RQcm9wZXJ0eTogcGFyYW1ldGVyXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHZhbHVlTGlzdFBhcmFtcykge1xuXHRcdFx0XHRmb3IgKGNvbnN0IHZhbHVlTGlzdFBhcmFtIG9mIHZhbHVlTGlzdFBhcmFtcykge1xuXHRcdFx0XHRcdGNvbnN0IGxvY2FsRGF0YVByb3BlcnR5ID0gKHZhbHVlTGlzdFBhcmFtIGFzIGFueSkuTG9jYWxEYXRhUHJvcGVydHk/LnZhbHVlO1xuXHRcdFx0XHRcdGNvbnN0IHZhbHVlTGlzdFByb3BlcnR5ID0gKHZhbHVlTGlzdFBhcmFtIGFzIGFueSkuVmFsdWVMaXN0UHJvcGVydHk7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0KHZhbHVlTGlzdFBhcmFtPy4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0UGFyYW1ldGVySW5PdXRcIiB8fFxuXHRcdFx0XHRcdFx0XHR2YWx1ZUxpc3RQYXJhbT8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlck91dFwiKSAmJlxuXHRcdFx0XHRcdFx0c1Byb3BlcnR5UGF0aCA9PT0gbG9jYWxEYXRhUHJvcGVydHlcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG91dFBhcmFtZXRlciA9IHZhbHVlTGlzdFBhcmFtO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHQodmFsdWVMaXN0UGFyYW0/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RQYXJhbWV0ZXJJbk91dFwiIHx8XG5cdFx0XHRcdFx0XHRcdHZhbHVlTGlzdFBhcmFtPy4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0UGFyYW1ldGVySW5cIikgJiZcblx0XHRcdFx0XHRcdHNQcm9wZXJ0eVBhdGggIT09IGxvY2FsRGF0YVByb3BlcnR5XG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRjb25zdCBiTm90RmlsdGVyYWJsZSA9IGlzUHJvcGVydHlGaWx0ZXJhYmxlKGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dCwgdmFsdWVMaXN0UHJvcGVydHkpO1xuXHRcdFx0XHRcdFx0aWYgKCFiTm90RmlsdGVyYWJsZSkge1xuXHRcdFx0XHRcdFx0XHRpblBhcmFtZXRlcnMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0bG9jYWxEYXRhUHJvcGVydHk6IGxvY2FsRGF0YVByb3BlcnR5LFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlTGlzdFByb3BlcnR5OiB2YWx1ZUxpc3RQcm9wZXJ0eVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChpblBhcmFtZXRlcnMgJiYgaW5QYXJhbWV0ZXJzLmxlbmd0aCkge1xuXHRcdFx0XHRpblBhcmFtZXRlcnMuZm9yRWFjaChmdW5jdGlvbihvSW5QYXJhbWV0ZXI6IGFueSkge1xuXHRcdFx0XHRcdGNvbnN0IG1haW5FbnRpdHlTZXRJbk1hcHBpbmdBbGxvd2VkRXhwcmVzc2lvbiA9IGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRcdFx0Y2hlY2tGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zKFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0LmdldENvbnZlcnRlckNvbnRleHRGb3IoY29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKG9JblBhcmFtZXRlcj8ubG9jYWxEYXRhUHJvcGVydHkpKVxuXHRcdFx0XHRcdFx0XHRcdC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCksXG5cdFx0XHRcdFx0XHRcdFtcIlNpbmdsZVZhbHVlXCJdXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRjb25zdCB2YWx1ZUxpc3RFbnRpdHlTZXRJbk1hcHBpbmdBbGxvd2VkRXhwcmVzc2lvbiA9IGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRcdFx0Y2hlY2tGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zKFxuXHRcdFx0XHRcdFx0XHRjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHQuZ2V0Q29udmVydGVyQ29udGV4dEZvcihcblx0XHRcdFx0XHRcdFx0XHRcdGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKG9JblBhcmFtZXRlcj8udmFsdWVMaXN0UHJvcGVydHkpXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCksXG5cdFx0XHRcdFx0XHRcdFtcIlNpbmdsZVZhbHVlXCJdXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpZiAodmFsdWVMaXN0RW50aXR5U2V0SW5NYXBwaW5nQWxsb3dlZEV4cHJlc3Npb24gPT09IFwidHJ1ZVwiICYmIG1haW5FbnRpdHlTZXRJbk1hcHBpbmdBbGxvd2VkRXhwcmVzc2lvbiA9PT0gXCJmYWxzZVwiKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFx0XHRcdFwiRmlsdGVyUmVzdHJpY3Rpb25zIG9mIFwiICsgc1Byb3BlcnR5UGF0aCArIFwiIGluIE1haW5FbnRpdHlTZXQgYW5kIFZhbHVlTGlzdEVudGl0eVNldCBhcmUgZGlmZmVyZW50XCJcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHB2UXVhbGlmaWVyID0gdmFsdWVMaXN0Py5QcmVzZW50YXRpb25WYXJpYW50UXVhbGlmaWVyO1xuXHRcdFx0Y29uc3Qgc3ZRdWFsaWZpZXIgPSB2YWx1ZUxpc3Q/LlNlbGVjdGlvblZhcmlhbnRRdWFsaWZpZXI7XG5cdFx0XHRjb25zdCBwdkFubm90YXRpb246IGFueSA9IGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dD8uZ2V0RW50aXR5VHlwZUFubm90YXRpb24oXCJAVUkuUHJlc2VudGF0aW9uVmFyaWFudCNcIiArIHB2UXVhbGlmaWVyKVxuXHRcdFx0XHQ/LmFubm90YXRpb247XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkhlbHBlciA9IG5ldyBBZ2dyZWdhdGlvbkhlbHBlcihjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLCBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQpO1xuXHRcdFx0aWYgKCFhZ2dyZWdhdGlvbkhlbHBlci5pc0FuYWx5dGljc1N1cHBvcnRlZCgpKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmIChwdkFubm90YXRpb24pIHtcblx0XHRcdFx0Y29uc3QgYVZpc3VhbGl6YXRpb25zID0gcHZBbm5vdGF0aW9uPy5WaXN1YWxpemF0aW9ucztcblx0XHRcdFx0Y29uc3QgY29udGV4dFBhdGggPSBcIi9cIiArIHZhbHVlTGlzdD8uQ29sbGVjdGlvblBhdGggfHwgXCIvXCIgKyBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQ/LmdldEVudGl0eVNldCgpPy5uYW1lO1xuXHRcdFx0XHR2aXN1YWxGaWx0ZXIuY29udGV4dFBhdGggPSBjb250ZXh0UGF0aDtcblx0XHRcdFx0bGV0IGNoYXJ0QW5ub3RhdGlvbjtcblx0XHRcdFx0Zm9yIChjb25zdCB2aXN1YWxpemF0aW9uIG9mIGFWaXN1YWxpemF0aW9ucykge1xuXHRcdFx0XHRcdGlmICh2aXN1YWxpemF0aW9uLiR0YXJnZXQ/LnRlcm0gPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIikge1xuXHRcdFx0XHRcdFx0Y2hhcnRBbm5vdGF0aW9uID0gdmlzdWFsaXphdGlvbjtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY2hhcnRBbm5vdGF0aW9uKSB7XG5cdFx0XHRcdFx0Y29uc3QgX2JnZXRWRkFnZ3JlZ2F0aW9uOiBib29sZWFuIHwgdW5kZWZpbmVkID0gX2NoZWNrVkZBZ2dyZWdhdGlvbihcblx0XHRcdFx0XHRcdGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0XHRcdGNoYXJ0QW5ub3RhdGlvbixcblx0XHRcdFx0XHRcdGFnZ3JlZ2F0aW9uSGVscGVyXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpZiAoIV9iZ2V0VkZBZ2dyZWdhdGlvbikge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCBiRGltZW5zaW9uSGlkZGVuOiBib29sZWFuID0gY2hhcnRBbm5vdGF0aW9uPy4kdGFyZ2V0Py5EaW1lbnNpb25zWzBdPy4kdGFyZ2V0Py5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpO1xuXHRcdFx0XHRcdGNvbnN0IGJEaW1lbnNpb25IaWRkZW5GaWx0ZXI6IGJvb2xlYW4gPSBjaGFydEFubm90YXRpb24/LiR0YXJnZXQ/LkRpbWVuc2lvbnNbMF0/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5VST8uSGlkZGVuRmlsdGVyPy52YWx1ZU9mKCk7XG5cdFx0XHRcdFx0aWYgKGJEaW1lbnNpb25IaWRkZW4gPT09IHRydWUgfHwgYkRpbWVuc2lvbkhpZGRlbkZpbHRlciA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoYVZpc3VhbGl6YXRpb25zICYmIGFWaXN1YWxpemF0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5jaGFydEFubm90YXRpb24gPSBjaGFydEFubm90YXRpb25cblx0XHRcdFx0XHRcdFx0PyBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQ/LmdldEFic29sdXRlQW5ub3RhdGlvblBhdGgoXG5cdFx0XHRcdFx0XHRcdFx0XHRjaGFydEFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lICsgXCIvJEFubm90YXRpb25QYXRoL1wiXG5cdFx0XHRcdFx0XHRcdCAgKVxuXHRcdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5wcmVzZW50YXRpb25Bbm5vdGF0aW9uID0gcHZBbm5vdGF0aW9uXG5cdFx0XHRcdFx0XHRcdD8gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0Py5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKHB2QW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUgKyBcIi9cIilcblx0XHRcdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIub3V0UGFyYW1ldGVyID0gb3V0UGFyYW1ldGVyPy5Mb2NhbERhdGFQcm9wZXJ0eT8udmFsdWU7XG5cdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIuaW5QYXJhbWV0ZXJzID0gaW5QYXJhbWV0ZXJzO1xuXHRcdFx0XHRcdFx0Y29uc3QgYklzUmFuZ2UgPSBjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMoXG5cdFx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHQuZ2V0Q29udmVydGVyQ29udGV4dEZvcihjb252ZXJ0ZXJDb250ZXh0LmdldEFic29sdXRlQW5ub3RhdGlvblBhdGgoc1Byb3BlcnR5UGF0aCkpXG5cdFx0XHRcdFx0XHRcdFx0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSxcblx0XHRcdFx0XHRcdFx0W1wiU2luZ2xlUmFuZ2VcIiwgXCJNdWx0aVJhbmdlXCJdXG5cdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHRpZiAoY29tcGlsZUJpbmRpbmcoYklzUmFuZ2UpID09PSBcInRydWVcIikge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJSYW5nZSBBbGxvd2VkRXhwcmVzc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aXN1YWwgZmlsdGVyc1wiKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Y29uc3QgYklzTWFpbkVudGl0eVNldFNpbmdsZVNlbGVjdGlvbjogYW55ID0gY2hlY2tGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zKFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0LmdldENvbnZlcnRlckNvbnRleHRGb3IoY29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKHNQcm9wZXJ0eVBhdGgpKVxuXHRcdFx0XHRcdFx0XHRcdC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCksXG5cdFx0XHRcdFx0XHRcdFtcIlNpbmdsZVZhbHVlXCJdXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCA9IGNvbXBpbGVCaW5kaW5nKCFiSXNNYWluRW50aXR5U2V0U2luZ2xlU2VsZWN0aW9uLnZhbHVlKSBhcyBhbnk7XG5cdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIucmVxdWlyZWQgPSBnZXRJc1JlcXVpcmVkKGNvbnZlcnRlckNvbnRleHQsIHNQcm9wZXJ0eVBhdGgpO1xuXHRcdFx0XHRcdFx0bGV0IHN2QW5ub3RhdGlvbjogYW55O1xuXHRcdFx0XHRcdFx0aWYgKHN2UXVhbGlmaWVyKSB7XG5cdFx0XHRcdFx0XHRcdHN2QW5ub3RhdGlvbiA9IGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dD8uZ2V0RW50aXR5VHlwZUFubm90YXRpb24oXCJAVUkuU2VsZWN0aW9uVmFyaWFudCNcIiArIHN2UXVhbGlmaWVyKVxuXHRcdFx0XHRcdFx0XHRcdD8uYW5ub3RhdGlvbjtcblx0XHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLnNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gc3ZBbm5vdGF0aW9uXG5cdFx0XHRcdFx0XHRcdFx0PyBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQ/LmdldEFic29sdXRlQW5ub3RhdGlvblBhdGgoc3ZBbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSArIFwiL1wiKVxuXHRcdFx0XHRcdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0bGV0IHJlcXVpcmVkUHJvcGVydGllcyA9IFtdO1xuXHRcdFx0XHRcdFx0aWYgKHBhcmFtZXRlckVudGl0eVR5cGUpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc0VudGl0eVNldCA9IGNvbGxlY3Rpb25QYXRoLnNwbGl0KFwiL1wiKVswXTtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc05hdmlnYXRpb25Qcm9wZXJ0eSA9IGNvbGxlY3Rpb25QYXRoLnNwbGl0KFwiL1wiKVsxXTtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgb0VudGl0eVNldENvbnZlcnRlckNvbnRleHQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlckNvbnRleHRGb3IoXCIvXCIgKyBzRW50aXR5U2V0KTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYVJlc3RyaWN0ZWRQcm9wZXJ0aWVzID0gb0VudGl0eVNldENvbnZlcnRlckNvbnRleHQ/LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKS5zdGFydGluZ0VudGl0eVNldFxuXHRcdFx0XHRcdFx0XHRcdD8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcz8uTmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uUmVzdHJpY3RlZFByb3BlcnRpZXM7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG9SZXN0cmljdGVkUHJvcGVydHkgPSBhUmVzdHJpY3RlZFByb3BlcnRpZXM/LmZpbmQoXG5cdFx0XHRcdFx0XHRcdFx0KHJlc3RyaWN0ZWROYXZQcm9wOiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvblR5cGVzKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzdHJpY3RlZE5hdlByb3AuTmF2aWdhdGlvblByb3BlcnR5Py50eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdHJpY3RlZE5hdlByb3AuTmF2aWdhdGlvblByb3BlcnR5LnZhbHVlID09PSBzTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0cmVxdWlyZWRQcm9wZXJ0aWVzID0gb1Jlc3RyaWN0ZWRQcm9wZXJ0eT8uRmlsdGVyUmVzdHJpY3Rpb25zPy5SZXF1aXJlZFByb3BlcnRpZXMgYXMgYW55W107XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBlbnRpdHlTZXRBbm5vdGF0aW9ucyA9IGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKT8uYW5ub3RhdGlvbnM7XG5cdFx0XHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydGllcyA9IGVudGl0eVNldEFubm90YXRpb25zPy5DYXBhYmlsaXRpZXM/LkZpbHRlclJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzIGFzIGFueVtdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0bGV0IHJlcXVpcmVkUHJvcGVydHlQYXRoczogQXJyYXk8b2JqZWN0PiA9IFtdO1xuXHRcdFx0XHRcdFx0aWYgKHJlcXVpcmVkUHJvcGVydGllcz8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uKG9SZXF1aXJlUHJvcGVydHk6IGFueSkge1xuXHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydHlQYXRocy5wdXNoKG9SZXF1aXJlUHJvcGVydHkudmFsdWUpO1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydHlQYXRocyA9IHJlcXVpcmVkUHJvcGVydHlQYXRocy5jb25jYXQoYVBhcmFtZXRlcnMpO1xuXHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLnJlcXVpcmVkUHJvcGVydGllcyA9IHJlcXVpcmVkUHJvcGVydHlQYXRocztcblx0XHRcdFx0XHRcdGlmICh2aXN1YWxGaWx0ZXIucmVxdWlyZWRQcm9wZXJ0aWVzPy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCF2aXN1YWxGaWx0ZXIuaW5QYXJhbWV0ZXJzIHx8ICF2aXN1YWxGaWx0ZXIuaW5QYXJhbWV0ZXJzLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICghdmlzdWFsRmlsdGVyLnNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIuc2hvd092ZXJsYXlJbml0aWFsbHkgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgc2VsZWN0T3B0aW9ucyA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHN2QW5ub3RhdGlvbj8uU2VsZWN0T3B0aW9ucz8ubWFwKChvU2VsZWN0T3B0aW9uOiBhbnkpID0+IG9TZWxlY3RPcHRpb24uUHJvcGVydHlOYW1lLnZhbHVlKSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHBhcmFtZXRlck9wdGlvbnMgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzdkFubm90YXRpb24/LlBhcmFtZXRlcnM/Lm1hcCgob1BhcmFtZXRlck9wdGlvbjogYW55KSA9PiBvUGFyYW1ldGVyT3B0aW9uLlByb3BlcnR5TmFtZS52YWx1ZSkgfHwgW107XG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RPcHRpb25zID0gc2VsZWN0T3B0aW9ucy5jb25jYXQocGFyYW1ldGVyT3B0aW9ucyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFByb3BlcnR5UGF0aHMgPSByZXF1aXJlZFByb3BlcnR5UGF0aHMuc29ydCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c2VsZWN0T3B0aW9ucyA9IHNlbGVjdE9wdGlvbnMuc29ydCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLnNob3dPdmVybGF5SW5pdGlhbGx5ID0gcmVxdWlyZWRQcm9wZXJ0eVBhdGhzLnNvbWUoZnVuY3Rpb24oc1BhdGgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNlbGVjdE9wdGlvbnMuaW5kZXhPZihzUGF0aCkgPT09IC0xO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5zaG93T3ZlcmxheUluaXRpYWxseSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIuc2hvd092ZXJsYXlJbml0aWFsbHkgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNvbnN0IHNEaW1lbnNpb25UeXBlID0gY2hhcnRBbm5vdGF0aW9uPy4kdGFyZ2V0Py5EaW1lbnNpb25zWzBdPy4kdGFyZ2V0Py50eXBlO1xuXHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHQhKFxuXHRcdFx0XHRcdFx0XHRcdHNEaW1lbnNpb25UeXBlID09PSBcIkVkbS5EYXRlVGltZU9mZnNldFwiIHx8XG5cdFx0XHRcdFx0XHRcdFx0c0RpbWVuc2lvblR5cGUgPT09IFwiRWRtLkRhdGVcIiB8fFxuXHRcdFx0XHRcdFx0XHRcdHNEaW1lbnNpb25UeXBlID09PSBcIkVkbS5UaW1lT2ZEYXlcIlxuXHRcdFx0XHRcdFx0XHQpICYmXG5cdFx0XHRcdFx0XHRcdGNoYXJ0QW5ub3RhdGlvbi4kdGFyZ2V0LkNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvTGluZVwiXG5cdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLnJlbmRlckxpbmVDaGFydCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLnJlbmRlckxpbmVDaGFydCA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkhpZ2gsIElzc3VlVHlwZS5NQUxGT1JNRURfVklTVUFMRklMVEVSUy5DSEFSVCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHQuZ2V0RGlhZ25vc3RpY3MoKVxuXHRcdFx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuSGlnaCwgSXNzdWVUeXBlLk1BTEZPUk1FRF9WSVNVQUxGSUxURVJTLlBSRVNFTlRBVElPTlZBUklBTlQpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuSGlnaCwgSXNzdWVUeXBlLk1BTEZPUk1FRF9WSVNVQUxGSUxURVJTLlZBTFVFTElTVCk7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0RGlhZ25vc3RpY3MoKS5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5Lk1hbmlmZXN0LCBJc3N1ZVNldmVyaXR5LkhpZ2gsIElzc3VlVHlwZS5NQUxGT1JNRURfVklTVUFMRklMVEVSUy5WQUxVRUxJU1QpO1xuXHR9XG5cdGlmIChPYmplY3Qua2V5cyh2aXN1YWxGaWx0ZXIpLmxlbmd0aCA+IDEpIHtcblx0XHRyZXR1cm4gdmlzdWFsRmlsdGVyO1xuXHR9XG59XG4iXX0=
|
|
@@ -6,6 +6,9 @@ import { compileBinding } from "sap/fe/core/helpers/BindingExpression";
|
|
|
6
6
|
import { checkFilterExpressionRestrictions } from "sap/fe/core/templating/DataModelPathHelper";
|
|
7
7
|
import { AggregationHelper } from "sap/fe/core/converters/helpers/Aggregation";
|
|
8
8
|
import { IssueType, IssueSeverity, IssueCategory } from "sap/fe/core/converters/helpers/IssueManager";
|
|
9
|
+
import { NavigationPropertyRestrictionTypes } from "@sap-ux/vocabularies-types/dist/generated/Capabilities";
|
|
10
|
+
import { AnnotationTerm } from "@sap-ux/vocabularies-types";
|
|
11
|
+
import { CustomAggregate } from "@sap-ux/vocabularies-types/dist/generated/Aggregation";
|
|
9
12
|
|
|
10
13
|
export type VisualFilters = {
|
|
11
14
|
dimensionPath?: string;
|
|
@@ -41,12 +44,13 @@ const _checkVFAggregation = function(
|
|
|
41
44
|
const sMeasure: string = chartAnnotation?.$target?.Measures[0]?.value;
|
|
42
45
|
const sDimension: string = chartAnnotation?.$target?.Dimensions[0]?.value;
|
|
43
46
|
const customAggregates = aggregationHelper.getCustomAggregateDefinitions();
|
|
44
|
-
const aTransAggregations =
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
const aTransAggregations = aggregationHelper.getTransAggregations();
|
|
48
|
+
|
|
49
|
+
if (
|
|
50
|
+
customAggregates.some(function(custAgg: AnnotationTerm<CustomAggregate>) {
|
|
51
|
+
return custAgg.qualifier === sMeasure;
|
|
52
|
+
})
|
|
53
|
+
) {
|
|
50
54
|
sMeasurePath = sMeasure;
|
|
51
55
|
} else if (aTransAggregations && aTransAggregations[0]) {
|
|
52
56
|
const aAggregations = aTransAggregations[0];
|
|
@@ -81,15 +85,13 @@ const _checkVFAggregation = function(
|
|
|
81
85
|
* @param converterContext The chart annotation
|
|
82
86
|
* @param sPropertyPath The aggregation helper
|
|
83
87
|
* @param FilterFields The aggregation helper
|
|
84
|
-
* @param parameterEntityType
|
|
85
88
|
* @returns {VisualFilters | undefined }
|
|
86
89
|
*/
|
|
87
90
|
export function getVisualFilters(
|
|
88
91
|
entityType: EntityType,
|
|
89
92
|
converterContext: ConverterContext,
|
|
90
93
|
sPropertyPath: string,
|
|
91
|
-
FilterFields: Record<string, FilterFieldManifestConfiguration
|
|
92
|
-
parameterEntityType: EntityType
|
|
94
|
+
FilterFields: Record<string, FilterFieldManifestConfiguration>
|
|
93
95
|
): VisualFilters | undefined {
|
|
94
96
|
const visualFilter: VisualFilters = {};
|
|
95
97
|
const oVisualFilter: FilterFieldManifestConfiguration = FilterFields[sPropertyPath];
|
|
@@ -112,12 +114,13 @@ export function getVisualFilters(
|
|
|
112
114
|
const resolvedTarget = collectionPathConverterContext.getEntityTypeAnnotation("");
|
|
113
115
|
collectionPathConverterContext = resolvedTarget.converterContext;
|
|
114
116
|
}
|
|
117
|
+
const parameterEntityType = collectionPathConverterContext.getParameterEntityType();
|
|
118
|
+
aParameters = parameterEntityType
|
|
119
|
+
? parameterEntityType.keys.map(function(key) {
|
|
120
|
+
return key.name;
|
|
121
|
+
})
|
|
122
|
+
: [];
|
|
115
123
|
if (converterContext.getContextPath() === collectionPathConverterContext.getContextPath()) {
|
|
116
|
-
aParameters = parameterEntityType
|
|
117
|
-
? parameterEntityType.keys.map(function(key) {
|
|
118
|
-
return key.name;
|
|
119
|
-
})
|
|
120
|
-
: [];
|
|
121
124
|
aParameters.forEach(function(parameter: any) {
|
|
122
125
|
inParameters.push({
|
|
123
126
|
localDataProperty: parameter,
|
|
@@ -248,9 +251,26 @@ export function getVisualFilters(
|
|
|
248
251
|
? collectionPathConverterContext?.getAbsoluteAnnotationPath(svAnnotation.fullyQualifiedName + "/")
|
|
249
252
|
: undefined;
|
|
250
253
|
}
|
|
251
|
-
|
|
254
|
+
let requiredProperties = [];
|
|
255
|
+
if (parameterEntityType) {
|
|
256
|
+
const sEntitySet = collectionPath.split("/")[0];
|
|
257
|
+
const sNavigationProperty = collectionPath.split("/")[1];
|
|
258
|
+
const oEntitySetConverterContext = converterContext.getConverterContextFor("/" + sEntitySet);
|
|
259
|
+
const aRestrictedProperties = oEntitySetConverterContext?.getDataModelObjectPath().startingEntitySet
|
|
260
|
+
?.annotations?.Capabilities?.NavigationRestrictions?.RestrictedProperties;
|
|
261
|
+
const oRestrictedProperty = aRestrictedProperties?.find(
|
|
262
|
+
(restrictedNavProp: NavigationPropertyRestrictionTypes) => {
|
|
263
|
+
if (restrictedNavProp.NavigationProperty?.type === "NavigationPropertyPath") {
|
|
264
|
+
return restrictedNavProp.NavigationProperty.value === sNavigationProperty;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
);
|
|
268
|
+
requiredProperties = oRestrictedProperty?.FilterRestrictions?.RequiredProperties as any[];
|
|
269
|
+
} else {
|
|
270
|
+
const entitySetAnnotations = collectionPathConverterContext.getEntitySet()?.annotations;
|
|
271
|
+
requiredProperties = entitySetAnnotations?.Capabilities?.FilterRestrictions?.RequiredProperties as any[];
|
|
272
|
+
}
|
|
252
273
|
let requiredPropertyPaths: Array<object> = [];
|
|
253
|
-
const requiredProperties = entitySetAnnotations?.Capabilities?.FilterRestrictions?.RequiredProperties as any[];
|
|
254
274
|
if (requiredProperties?.length) {
|
|
255
275
|
requiredProperties.forEach(function(oRequireProperty: any) {
|
|
256
276
|
requiredPropertyPaths.push(oRequireProperty.value);
|
|
@@ -263,9 +283,11 @@ export function getVisualFilters(
|
|
|
263
283
|
if (!visualFilter.selectionVariantAnnotation) {
|
|
264
284
|
visualFilter.showOverlayInitially = true;
|
|
265
285
|
} else {
|
|
266
|
-
let selectOptions
|
|
267
|
-
(oSelectOption: any) => oSelectOption.PropertyName.value
|
|
268
|
-
|
|
286
|
+
let selectOptions =
|
|
287
|
+
svAnnotation?.SelectOptions?.map((oSelectOption: any) => oSelectOption.PropertyName.value) || [];
|
|
288
|
+
const parameterOptions =
|
|
289
|
+
svAnnotation?.Parameters?.map((oParameterOption: any) => oParameterOption.PropertyName.value) || [];
|
|
290
|
+
selectOptions = selectOptions.concat(parameterOptions);
|
|
269
291
|
requiredPropertyPaths = requiredPropertyPaths.sort();
|
|
270
292
|
selectOptions = selectOptions.sort();
|
|
271
293
|
visualFilter.showOverlayInitially = requiredPropertyPaths.some(function(sPath) {
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpression) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var _exports = {};
|
|
9
|
+
var compileBinding = BindingExpression.compileBinding;
|
|
10
|
+
var annotationExpression = BindingExpression.annotationExpression;
|
|
11
|
+
|
|
12
|
+
var AvatarShape;
|
|
13
|
+
|
|
14
|
+
(function (AvatarShape) {
|
|
15
|
+
AvatarShape["Circle"] = "Circle";
|
|
16
|
+
AvatarShape["Square"] = "Square";
|
|
17
|
+
})(AvatarShape || (AvatarShape = {}));
|
|
18
|
+
|
|
19
|
+
var isNaturalPerson = function (converterContext) {
|
|
20
|
+
var _converterContext$get, _converterContext$get2;
|
|
21
|
+
|
|
22
|
+
return ((_converterContext$get = converterContext.getEntityType().annotations.Common) === null || _converterContext$get === void 0 ? void 0 : (_converterContext$get2 = _converterContext$get.IsNaturalPerson) === null || _converterContext$get2 === void 0 ? void 0 : _converterContext$get2.valueOf()) === true;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
var getFallBackIcon = function (converterContext) {
|
|
26
|
+
var _converterContext$get3, _converterContext$get4;
|
|
27
|
+
|
|
28
|
+
var headerInfo = (_converterContext$get3 = converterContext.getEntityType().annotations) === null || _converterContext$get3 === void 0 ? void 0 : (_converterContext$get4 = _converterContext$get3.UI) === null || _converterContext$get4 === void 0 ? void 0 : _converterContext$get4.HeaderInfo;
|
|
29
|
+
|
|
30
|
+
if (!headerInfo || headerInfo && !headerInfo.ImageUrl && !headerInfo.TypeImageUrl) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (headerInfo.ImageUrl && headerInfo.TypeImageUrl) {
|
|
35
|
+
return compileBinding(annotationExpression(headerInfo.TypeImageUrl));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return compileBinding(isNaturalPerson(converterContext) ? "sap-icon://person-placeholder" : "sap-icon://product");
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
var getSource = function (converterContext) {
|
|
42
|
+
var _converterContext$get5, _converterContext$get6;
|
|
43
|
+
|
|
44
|
+
var headerInfo = (_converterContext$get5 = converterContext.getEntityType().annotations) === null || _converterContext$get5 === void 0 ? void 0 : (_converterContext$get6 = _converterContext$get5.UI) === null || _converterContext$get6 === void 0 ? void 0 : _converterContext$get6.HeaderInfo;
|
|
45
|
+
|
|
46
|
+
if (!headerInfo || !(headerInfo.ImageUrl || headerInfo.TypeImageUrl)) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return compileBinding(annotationExpression(headerInfo.ImageUrl || headerInfo.TypeImageUrl));
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
var getAvatar = function (converterContext) {
|
|
54
|
+
var _converterContext$get7, _converterContext$get8;
|
|
55
|
+
|
|
56
|
+
var headerInfo = (_converterContext$get7 = converterContext.getEntityType().annotations) === null || _converterContext$get7 === void 0 ? void 0 : (_converterContext$get8 = _converterContext$get7.UI) === null || _converterContext$get8 === void 0 ? void 0 : _converterContext$get8.HeaderInfo;
|
|
57
|
+
var oSource = headerInfo && (headerInfo.ImageUrl || headerInfo.TypeImageUrl || headerInfo.Initials);
|
|
58
|
+
|
|
59
|
+
if (!oSource) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return {
|
|
64
|
+
src: getSource(converterContext),
|
|
65
|
+
initials: compileBinding(annotationExpression((headerInfo === null || headerInfo === void 0 ? void 0 : headerInfo.Initials) || "")),
|
|
66
|
+
fallbackIcon: getFallBackIcon(converterContext),
|
|
67
|
+
displayShape: compileBinding(isNaturalPerson(converterContext) ? AvatarShape.Circle : AvatarShape.Square)
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
_exports.getAvatar = getAvatar;
|
|
72
|
+
return _exports;
|
|
73
|
+
}, false);
|
|
74
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkF2YXRhci50cyJdLCJuYW1lcyI6WyJBdmF0YXJTaGFwZSIsImlzTmF0dXJhbFBlcnNvbiIsImNvbnZlcnRlckNvbnRleHQiLCJnZXRFbnRpdHlUeXBlIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJJc05hdHVyYWxQZXJzb24iLCJ2YWx1ZU9mIiwiZ2V0RmFsbEJhY2tJY29uIiwiaGVhZGVySW5mbyIsIlVJIiwiSGVhZGVySW5mbyIsIkltYWdlVXJsIiwiVHlwZUltYWdlVXJsIiwidW5kZWZpbmVkIiwiY29tcGlsZUJpbmRpbmciLCJhbm5vdGF0aW9uRXhwcmVzc2lvbiIsImdldFNvdXJjZSIsImdldEF2YXRhciIsIm9Tb3VyY2UiLCJJbml0aWFscyIsInNyYyIsImluaXRpYWxzIiwiZmFsbGJhY2tJY29uIiwiZGlzcGxheVNoYXBlIiwiQ2lyY2xlIiwiU3F1YXJlIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7OztNQUFLQSxXOzthQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztLQUFBQSxXLEtBQUFBLFc7O0FBWUwsTUFBTUMsZUFBZSxHQUFHLFVBQUNDLGdCQUFELEVBQWlEO0FBQUE7O0FBQ3hFLFdBQU8sMEJBQUFBLGdCQUFnQixDQUFDQyxhQUFqQixHQUFpQ0MsV0FBakMsQ0FBNkNDLE1BQTdDLDBHQUFxREMsZUFBckQsa0ZBQXNFQyxPQUF0RSxRQUFvRixJQUEzRjtBQUNBLEdBRkQ7O0FBSUEsTUFBTUMsZUFBZSxHQUFHLFVBQUNOLGdCQUFELEVBQStFO0FBQUE7O0FBQ3RHLFFBQU1PLFVBQVUsNkJBQUdQLGdCQUFnQixDQUFDQyxhQUFqQixHQUFpQ0MsV0FBcEMscUZBQUcsdUJBQThDTSxFQUFqRCwyREFBRyx1QkFBa0RDLFVBQXJFOztBQUNBLFFBQUksQ0FBQ0YsVUFBRCxJQUFnQkEsVUFBVSxJQUFJLENBQUNBLFVBQVUsQ0FBQ0csUUFBMUIsSUFBc0MsQ0FBQ0gsVUFBVSxDQUFDSSxZQUF0RSxFQUFxRjtBQUNwRixhQUFPQyxTQUFQO0FBQ0E7O0FBQ0QsUUFBSUwsVUFBVSxDQUFDRyxRQUFYLElBQXVCSCxVQUFVLENBQUNJLFlBQXRDLEVBQW9EO0FBQ25ELGFBQU9FLGNBQWMsQ0FBQ0Msb0JBQW9CLENBQUNQLFVBQVUsQ0FBQ0ksWUFBWixDQUFyQixDQUFyQjtBQUNBOztBQUNELFdBQU9FLGNBQWMsQ0FBQ2QsZUFBZSxDQUFDQyxnQkFBRCxDQUFmLEdBQW9DLCtCQUFwQyxHQUFzRSxvQkFBdkUsQ0FBckI7QUFDQSxHQVREOztBQVdBLE1BQU1lLFNBQVMsR0FBRyxVQUFDZixnQkFBRCxFQUErRTtBQUFBOztBQUNoRyxRQUFNTyxVQUFVLDZCQUFHUCxnQkFBZ0IsQ0FBQ0MsYUFBakIsR0FBaUNDLFdBQXBDLHFGQUFHLHVCQUE4Q00sRUFBakQsMkRBQUcsdUJBQWtEQyxVQUFyRTs7QUFDQSxRQUFJLENBQUNGLFVBQUQsSUFBZSxFQUFFQSxVQUFVLENBQUNHLFFBQVgsSUFBdUJILFVBQVUsQ0FBQ0ksWUFBcEMsQ0FBbkIsRUFBc0U7QUFDckUsYUFBT0MsU0FBUDtBQUNBOztBQUNELFdBQU9DLGNBQWMsQ0FBQ0Msb0JBQW9CLENBQUNQLFVBQVUsQ0FBQ0csUUFBWCxJQUF1QkgsVUFBVSxDQUFDSSxZQUFuQyxDQUFyQixDQUFyQjtBQUNBLEdBTkQ7O0FBUU8sTUFBTUssU0FBUyxHQUFHLFVBQUNoQixnQkFBRCxFQUE0RDtBQUFBOztBQUNwRixRQUFNTyxVQUFVLDZCQUFHUCxnQkFBZ0IsQ0FBQ0MsYUFBakIsR0FBaUNDLFdBQXBDLHFGQUFHLHVCQUE4Q00sRUFBakQsMkRBQUcsdUJBQWtEQyxVQUFyRTtBQUNBLFFBQU1RLE9BQVksR0FBR1YsVUFBVSxLQUFLQSxVQUFVLENBQUNHLFFBQVgsSUFBdUJILFVBQVUsQ0FBQ0ksWUFBbEMsSUFBa0RKLFVBQVUsQ0FBQ1csUUFBbEUsQ0FBL0I7O0FBQ0EsUUFBSSxDQUFDRCxPQUFMLEVBQWM7QUFDYixhQUFPTCxTQUFQO0FBQ0E7O0FBQ0QsV0FBTztBQUNOTyxNQUFBQSxHQUFHLEVBQUVKLFNBQVMsQ0FBQ2YsZ0JBQUQsQ0FEUjtBQUVOb0IsTUFBQUEsUUFBUSxFQUFFUCxjQUFjLENBQUNDLG9CQUFvQixDQUFDLENBQUFQLFVBQVUsU0FBVixJQUFBQSxVQUFVLFdBQVYsWUFBQUEsVUFBVSxDQUFFVyxRQUFaLEtBQXdCLEVBQXpCLENBQXJCLENBRmxCO0FBR05HLE1BQUFBLFlBQVksRUFBRWYsZUFBZSxDQUFDTixnQkFBRCxDQUh2QjtBQUlOc0IsTUFBQUEsWUFBWSxFQUFFVCxjQUFjLENBQUNkLGVBQWUsQ0FBQ0MsZ0JBQUQsQ0FBZixHQUFvQ0YsV0FBVyxDQUFDeUIsTUFBaEQsR0FBeUR6QixXQUFXLENBQUMwQixNQUF0RTtBQUp0QixLQUFQO0FBTUEsR0FaTSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7IGFubm90YXRpb25FeHByZXNzaW9uLCBCaW5kaW5nRXhwcmVzc2lvbiwgY29tcGlsZUJpbmRpbmcgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nRXhwcmVzc2lvblwiO1xuZW51bSBBdmF0YXJTaGFwZSB7XG5cdENpcmNsZSA9IFwiQ2lyY2xlXCIsXG5cdFNxdWFyZSA9IFwiU3F1YXJlXCJcbn1cblxuZXhwb3J0IHR5cGUgQXZhdGFyID0ge1xuXHRzcmM/OiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+O1xuXHRpbml0aWFsczogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPjtcblx0ZmFsbGJhY2tJY29uPzogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPjtcblx0ZGlzcGxheVNoYXBlOiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+O1xufTtcblxuY29uc3QgaXNOYXR1cmFsUGVyc29uID0gKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBCb29sZWFuID0+IHtcblx0cmV0dXJuIGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLmFubm90YXRpb25zLkNvbW1vbj8uSXNOYXR1cmFsUGVyc29uPy52YWx1ZU9mKCkgPT09IHRydWU7XG59O1xuXG5jb25zdCBnZXRGYWxsQmFja0ljb24gPSAoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IEJpbmRpbmdFeHByZXNzaW9uPHN0cmluZz4gfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBoZWFkZXJJbmZvID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCkuYW5ub3RhdGlvbnM/LlVJPy5IZWFkZXJJbmZvO1xuXHRpZiAoIWhlYWRlckluZm8gfHwgKGhlYWRlckluZm8gJiYgIWhlYWRlckluZm8uSW1hZ2VVcmwgJiYgIWhlYWRlckluZm8uVHlwZUltYWdlVXJsKSkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0aWYgKGhlYWRlckluZm8uSW1hZ2VVcmwgJiYgaGVhZGVySW5mby5UeXBlSW1hZ2VVcmwpIHtcblx0XHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoYW5ub3RhdGlvbkV4cHJlc3Npb24oaGVhZGVySW5mby5UeXBlSW1hZ2VVcmwpKTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoaXNOYXR1cmFsUGVyc29uKGNvbnZlcnRlckNvbnRleHQpID8gXCJzYXAtaWNvbjovL3BlcnNvbi1wbGFjZWhvbGRlclwiIDogXCJzYXAtaWNvbjovL3Byb2R1Y3RcIik7XG59O1xuXG5jb25zdCBnZXRTb3VyY2UgPSAoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IEJpbmRpbmdFeHByZXNzaW9uPHN0cmluZz4gfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBoZWFkZXJJbmZvID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCkuYW5ub3RhdGlvbnM/LlVJPy5IZWFkZXJJbmZvO1xuXHRpZiAoIWhlYWRlckluZm8gfHwgIShoZWFkZXJJbmZvLkltYWdlVXJsIHx8IGhlYWRlckluZm8uVHlwZUltYWdlVXJsKSkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKGFubm90YXRpb25FeHByZXNzaW9uKGhlYWRlckluZm8uSW1hZ2VVcmwgfHwgaGVhZGVySW5mby5UeXBlSW1hZ2VVcmwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBdmF0YXIgPSAoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IEF2YXRhciB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IGhlYWRlckluZm8gPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKS5hbm5vdGF0aW9ucz8uVUk/LkhlYWRlckluZm87XG5cdGNvbnN0IG9Tb3VyY2U6IGFueSA9IGhlYWRlckluZm8gJiYgKGhlYWRlckluZm8uSW1hZ2VVcmwgfHwgaGVhZGVySW5mby5UeXBlSW1hZ2VVcmwgfHwgaGVhZGVySW5mby5Jbml0aWFscyk7XG5cdGlmICghb1NvdXJjZSkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIHtcblx0XHRzcmM6IGdldFNvdXJjZShjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRpbml0aWFsczogY29tcGlsZUJpbmRpbmcoYW5ub3RhdGlvbkV4cHJlc3Npb24oaGVhZGVySW5mbz8uSW5pdGlhbHMgfHwgXCJcIikpLFxuXHRcdGZhbGxiYWNrSWNvbjogZ2V0RmFsbEJhY2tJY29uKGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdGRpc3BsYXlTaGFwZTogY29tcGlsZUJpbmRpbmcoaXNOYXR1cmFsUGVyc29uKGNvbnZlcnRlckNvbnRleHQpID8gQXZhdGFyU2hhcGUuQ2lyY2xlIDogQXZhdGFyU2hhcGUuU3F1YXJlKVxuXHR9O1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import ConverterContext from "../../ConverterContext";
|
|
2
|
+
import { annotationExpression, BindingExpression, compileBinding } from "sap/fe/core/helpers/BindingExpression";
|
|
3
|
+
enum AvatarShape {
|
|
4
|
+
Circle = "Circle",
|
|
5
|
+
Square = "Square"
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export type Avatar = {
|
|
9
|
+
src?: BindingExpression<string>;
|
|
10
|
+
initials: BindingExpression<string>;
|
|
11
|
+
fallbackIcon?: BindingExpression<string>;
|
|
12
|
+
displayShape: BindingExpression<string>;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const isNaturalPerson = (converterContext: ConverterContext): Boolean => {
|
|
16
|
+
return converterContext.getEntityType().annotations.Common?.IsNaturalPerson?.valueOf() === true;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const getFallBackIcon = (converterContext: ConverterContext): BindingExpression<string> | undefined => {
|
|
20
|
+
const headerInfo = converterContext.getEntityType().annotations?.UI?.HeaderInfo;
|
|
21
|
+
if (!headerInfo || (headerInfo && !headerInfo.ImageUrl && !headerInfo.TypeImageUrl)) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
if (headerInfo.ImageUrl && headerInfo.TypeImageUrl) {
|
|
25
|
+
return compileBinding(annotationExpression(headerInfo.TypeImageUrl));
|
|
26
|
+
}
|
|
27
|
+
return compileBinding(isNaturalPerson(converterContext) ? "sap-icon://person-placeholder" : "sap-icon://product");
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const getSource = (converterContext: ConverterContext): BindingExpression<string> | undefined => {
|
|
31
|
+
const headerInfo = converterContext.getEntityType().annotations?.UI?.HeaderInfo;
|
|
32
|
+
if (!headerInfo || !(headerInfo.ImageUrl || headerInfo.TypeImageUrl)) {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
return compileBinding(annotationExpression(headerInfo.ImageUrl || headerInfo.TypeImageUrl));
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export const getAvatar = (converterContext: ConverterContext): Avatar | undefined => {
|
|
39
|
+
const headerInfo = converterContext.getEntityType().annotations?.UI?.HeaderInfo;
|
|
40
|
+
const oSource: any = headerInfo && (headerInfo.ImageUrl || headerInfo.TypeImageUrl || headerInfo.Initials);
|
|
41
|
+
if (!oSource) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
src: getSource(converterContext),
|
|
46
|
+
initials: compileBinding(annotationExpression(headerInfo?.Initials || "")),
|
|
47
|
+
fallbackIcon: getFallBackIcon(converterContext),
|
|
48
|
+
displayShape: compileBinding(isNaturalPerson(converterContext) ? AvatarShape.Circle : AvatarShape.Square)
|
|
49
|
+
};
|
|
50
|
+
};
|