@sapui5/sap.fe.macros 1.141.2 → 1.143.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +4 -10
- package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
- package/src/sap/fe/macros/Chart.js +34 -23
- package/src/sap/fe/macros/Chart.tsx +25 -11
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +47 -36
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +50 -31
- package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
- package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
- package/src/sap/fe/macros/CommonHelper.js +14 -24
- package/src/sap/fe/macros/CommonHelper.ts +18 -25
- package/src/sap/fe/macros/ConditionalSwitch.js +1 -2
- package/src/sap/fe/macros/ConditionalSwitch.tsx +0 -1
- package/src/sap/fe/macros/ConditionalSwitchProperty.js +1 -3
- package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +0 -2
- package/src/sap/fe/macros/Field.js +34 -17
- package/src/sap/fe/macros/Field.ts +64 -32
- package/src/sap/fe/macros/FooterContent.js +7 -3
- package/src/sap/fe/macros/FooterContent.tsx +8 -13
- package/src/sap/fe/macros/KPITag.js +6 -6
- package/src/sap/fe/macros/KPITag.tsx +8 -6
- package/src/sap/fe/macros/MacroAPI.js +4 -3
- package/src/sap/fe/macros/MacroAPI.ts +3 -3
- package/src/sap/fe/macros/MessageButton.js +4 -3
- package/src/sap/fe/macros/MessageButton.tsx +7 -3
- package/src/sap/fe/macros/MicroChart.js +12 -7
- package/src/sap/fe/macros/MicroChart.tsx +9 -3
- package/src/sap/fe/macros/MultiValueField.js +22 -36
- package/src/sap/fe/macros/MultiValueField.tsx +34 -66
- package/src/sap/fe/macros/RichTextEditor.js +3 -4
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
- package/src/sap/fe/macros/Share.js +7 -7
- package/src/sap/fe/macros/Share.tsx +9 -6
- package/src/sap/fe/macros/Status.js +39 -11
- package/src/sap/fe/macros/Status.tsx +25 -5
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
- package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
- package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
- package/src/sap/fe/macros/chart/Action.js +25 -2
- package/src/sap/fe/macros/chart/Action.ts +13 -0
- package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
- package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/chart/ChartDelegate.js +29 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +46 -14
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +58 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +75 -13
- package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
- package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +7 -7
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +3 -2
- package/src/sap/fe/macros/controls/FileWrapper.js +11 -5
- package/src/sap/fe/macros/controls/FileWrapper.ts +10 -4
- package/src/sap/fe/macros/controls/FilterBar.js +39 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +3 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -0
- package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
- package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
- package/src/sap/fe/macros/coreUI/CreateDialog.js +3 -3
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +2 -2
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +40 -12
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -9
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +4 -4
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +2 -2
- package/src/sap/fe/macros/field/FieldHelper.js +4 -3
- package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +44 -9
- package/src/sap/fe/macros/field/FieldRuntime.ts +72 -8
- package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
- package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
- package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +130 -40
- package/src/sap/fe/macros/filter/FilterUtils.ts +167 -45
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +15 -9
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +36 -17
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +21 -10
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +81 -63
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.js +376 -0
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.ts +463 -0
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/form/Form.block.js +27 -2
- package/src/sap/fe/macros/form/Form.block.ts +31 -11
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +110 -63
- package/src/sap/fe/macros/form/FormContainer.block.ts +121 -64
- package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
- package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
- package/src/sap/fe/macros/insights/InsightsService.js +3 -2
- package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
- package/src/sap/fe/macros/internal/DataPoint.js +7 -8
- package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
- package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
- package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
- package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +2 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +2 -1
- package/src/sap/fe/macros/library.js +5 -6
- package/src/sap/fe/macros/{library.ts → library.tsx} +3 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/messagebundle.properties +13 -5
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
- package/src/sap/fe/macros/messagebundle_da.properties +12 -3
- package/src/sap/fe/macros/messagebundle_de.properties +16 -7
- package/src/sap/fe/macros/messagebundle_el.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_es.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
- package/src/sap/fe/macros/messagebundle_et.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
- package/src/sap/fe/macros/messagebundle_id.properties +18 -9
- package/src/sap/fe/macros/messagebundle_it.properties +12 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
- package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_no.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
- package/src/sap/fe/macros/messages/MessageButton.js +21 -12
- package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +7 -3
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +8 -2
- package/src/sap/fe/macros/quickView/QuickView.js +5 -4
- package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
- package/src/sap/fe/macros/table/Action.js +21 -5
- package/src/sap/fe/macros/table/Action.ts +14 -4
- package/src/sap/fe/macros/table/ActionGroup.js +15 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
- package/src/sap/fe/macros/table/Column.js +3 -2
- package/src/sap/fe/macros/table/Column.ts +1 -1
- package/src/sap/fe/macros/table/MdcTableTemplate.js +96 -18
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +136 -17
- package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
- package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
- package/src/sap/fe/macros/table/Table.block.js +74 -30
- package/src/sap/fe/macros/table/Table.block.tsx +77 -14
- package/src/sap/fe/macros/table/TableAPI.js +175 -132
- package/src/sap/fe/macros/table/TableAPI.ts +67 -30
- package/src/sap/fe/macros/table/TableDefinition.js +20 -3
- package/src/sap/fe/macros/table/TableDefinition.ts +18 -2
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -3
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +12 -9
- package/src/sap/fe/macros/table/TableHelper.js +5 -2
- package/src/sap/fe/macros/table/TableHelper.ts +5 -2
- package/src/sap/fe/macros/table/TableRuntime.js +25 -13
- package/src/sap/fe/macros/table/TableRuntime.ts +31 -17
- package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
- package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
- package/src/sap/fe/macros/table/Utils.js +9 -3
- package/src/sap/fe/macros/table/Utils.ts +14 -8
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +72 -29
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +114 -123
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +15 -6
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +14 -5
- package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -3
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +3 -2
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +42 -14
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +49 -19
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
- package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
- package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +3 -4
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +2 -3
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.js +5 -4
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.ts +6 -3
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +17 -10
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +24 -9
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
|
@@ -46,6 +46,39 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
46
46
|
}
|
|
47
47
|
return sCurrentHash;
|
|
48
48
|
},
|
|
49
|
+
/**
|
|
50
|
+
* Creates filters for ValueList requests based on ValueListParameterIn and ValueListParameterInOut annotations.
|
|
51
|
+
* @param valueListInfo The ValueList annotation information
|
|
52
|
+
* @param propertyId The ID property of the IdAndDesciption of the text arrangement annotation
|
|
53
|
+
* @param propertyValue The value for the propertyId property
|
|
54
|
+
* @param bindingContext The binding context to get values from
|
|
55
|
+
* @returns Array of filters for the ValueList request
|
|
56
|
+
*/
|
|
57
|
+
createValueListFilters: function (valueListInfo, propertyId, propertyValue, bindingContext) {
|
|
58
|
+
// Start with the key filter
|
|
59
|
+
const filters = [new Filter({
|
|
60
|
+
path: propertyId,
|
|
61
|
+
operator: "EQ",
|
|
62
|
+
value1: propertyValue
|
|
63
|
+
})];
|
|
64
|
+
if (bindingContext && valueListInfo.Parameters) {
|
|
65
|
+
const relevantParameters = valueListInfo.Parameters.filter(parameter => {
|
|
66
|
+
const isInOrInOut = parameter.$Type === "com.sap.vocabularies.Common.v1.ValueListParameterIn" || parameter.$Type === "com.sap.vocabularies.Common.v1.ValueListParameterInOut";
|
|
67
|
+
return isInOrInOut && parameter.LocalDataProperty?.$PropertyPath && parameter.ValueListProperty && parameter.ValueListProperty !== propertyId;
|
|
68
|
+
});
|
|
69
|
+
relevantParameters.forEach(parameter => {
|
|
70
|
+
const localValue = bindingContext.getProperty(parameter.LocalDataProperty.$PropertyPath);
|
|
71
|
+
if (localValue !== undefined && localValue !== null && localValue !== "") {
|
|
72
|
+
filters.push(new Filter({
|
|
73
|
+
path: parameter.ValueListProperty,
|
|
74
|
+
operator: "EQ",
|
|
75
|
+
value1: localValue
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return filters;
|
|
81
|
+
},
|
|
49
82
|
/**
|
|
50
83
|
* Method to retrieve text from the value list for DataField.
|
|
51
84
|
* This is a formatter in disguise.
|
|
@@ -61,6 +94,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
61
94
|
if (sPropertyValue) {
|
|
62
95
|
oMetaModel = this.getModel()?.getMetaModel() || CommonHelper.getMetaModel();
|
|
63
96
|
sPropertyName = oMetaModel.getObject(`${sPropertyFullPath}@sapui.name`);
|
|
97
|
+
const bindingContext = this.getBindingContext();
|
|
64
98
|
return oMetaModel.requestValueListInfo(sPropertyFullPath, true).then(function (mValueListInfo) {
|
|
65
99
|
// take the "" one if exists, otherwise take the first one in the object TODO: to be discussed
|
|
66
100
|
const oValueListInfo = mValueListInfo[mValueListInfo[""] ? "" : Object.keys(mValueListInfo)[0]];
|
|
@@ -75,15 +109,11 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
75
109
|
const oTextAnnotation = oMetaModelValueList.getObject(`/${oValueListInfo.CollectionPath}/${oParamWithKey.ValueListProperty}@com.sap.vocabularies.Common.v1.Text`);
|
|
76
110
|
if (oTextAnnotation && oTextAnnotation.$Path) {
|
|
77
111
|
sTextProperty = oTextAnnotation.$Path;
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
operator: "EQ",
|
|
81
|
-
value1: sPropertyValue
|
|
82
|
-
});
|
|
83
|
-
const oListBinding = oValueListModel.bindList(`/${oValueListInfo.CollectionPath}`, undefined, undefined, oFilter, {
|
|
112
|
+
const filters = FieldRuntime.createValueListFilters(oValueListInfo, oParamWithKey.ValueListProperty, sPropertyValue, bindingContext);
|
|
113
|
+
const listBinding = oValueListModel.bindList(`/${oValueListInfo.CollectionPath}`, undefined, undefined, filters, {
|
|
84
114
|
$select: sTextProperty
|
|
85
115
|
});
|
|
86
|
-
return
|
|
116
|
+
return listBinding.requestContexts(0, 2);
|
|
87
117
|
} else {
|
|
88
118
|
sDisplayFormat = "Value";
|
|
89
119
|
return sPropertyValue;
|
|
@@ -117,6 +147,11 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
117
147
|
}
|
|
118
148
|
const link = event.getSource();
|
|
119
149
|
const analyticalTable = FPMHelper.getMdcTable(link);
|
|
150
|
+
const popoverId = `${analyticalTable.getId()}-multiUnitPopover`;
|
|
151
|
+
if (analyticalTable.getDependents().some(dependent => dependent.getId() === popoverId)) {
|
|
152
|
+
// Popover is already open for the same link (otherwise the dependent would have been removed and destroyed on close)
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
120
155
|
const rowContext = link.getBindingContext();
|
|
121
156
|
const tableRowBinding = rowContext.getBinding();
|
|
122
157
|
|
|
@@ -166,7 +201,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
166
201
|
sorter: new Sorter(unitOrCurrencyName, false) // Order by currency
|
|
167
202
|
};
|
|
168
203
|
const isPopoverForGrandTotal = rowContextData["@$ui5.node.level"] === 0;
|
|
169
|
-
const popover = await Util.createOrUpdateMultiUnitPopover(
|
|
204
|
+
const popover = await Util.createOrUpdateMultiUnitPopover(popoverId, {
|
|
170
205
|
control: analyticalTable,
|
|
171
206
|
grandTotal: isPopoverForGrandTotal,
|
|
172
207
|
itemsBindingInfo: oItemsBindingInfo,
|
|
@@ -185,4 +220,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
185
220
|
ObjectPath.set("sap.fe.macros.field.FieldRuntime", FieldRuntime);
|
|
186
221
|
return FieldRuntime;
|
|
187
222
|
}, false);
|
|
188
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZFJ1bnRpbWUiLCJ1cGxvYWRQcm9taXNlcyIsImNyZWF0aW5nSW5hY3RpdmVSb3ciLCJpc0RyYWZ0SW5kaWNhdG9yVmlzaWJsZSIsInNQcm9wZXJ0eVBhdGgiLCJzU2VtYW50aWNLZXlIYXNEcmFmdEluZGljYXRvciIsIkhhc0RyYWZ0RW50aXR5IiwiSXNBY3RpdmVFbnRpdHkiLCJoaWRlRHJhZnRJbmZvIiwidW5kZWZpbmVkIiwib25WYWxpZGF0ZUZpZWxkR3JvdXAiLCJvRXZlbnQiLCJvU291cmNlRmllbGQiLCJnZXRTb3VyY2UiLCJ2aWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiY29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJvRkVDb250cm9sbGVyIiwiRmllbGRSdW50aW1lSGVscGVyIiwiZ2V0RXh0ZW5zaW9uQ29udHJvbGxlciIsIl9zaWRlRWZmZWN0cyIsImhhbmRsZUZpZWxkR3JvdXBDaGFuZ2UiLCJfZm5GaXhIYXNoUXVlcnlTdHJpbmciLCJzQ3VycmVudEhhc2giLCJpbmNsdWRlcyIsInNwbGl0IiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsInNQcm9wZXJ0eVZhbHVlIiwic1Byb3BlcnR5RnVsbFBhdGgiLCJzRGlzcGxheUZvcm1hdCIsInNUZXh0UHJvcGVydHkiLCJvTWV0YU1vZGVsIiwic1Byb3BlcnR5TmFtZSIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiQ29tbW9uSGVscGVyIiwiZ2V0T2JqZWN0IiwicmVxdWVzdFZhbHVlTGlzdEluZm8iLCJ0aGVuIiwibVZhbHVlTGlzdEluZm8iLCJvVmFsdWVMaXN0SW5mbyIsIk9iamVjdCIsImtleXMiLCJvVmFsdWVMaXN0TW9kZWwiLCIkbW9kZWwiLCJvTWV0YU1vZGVsVmFsdWVMaXN0Iiwib1BhcmFtV2l0aEtleSIsIlBhcmFtZXRlcnMiLCJmaW5kIiwib1BhcmFtZXRlciIsIkxvY2FsRGF0YVByb3BlcnR5IiwiJFByb3BlcnR5UGF0aCIsIlZhbHVlTGlzdFByb3BlcnR5IiwiRXJyb3IiLCJvVGV4dEFubm90YXRpb24iLCJDb2xsZWN0aW9uUGF0aCIsIiRQYXRoIiwib0ZpbHRlciIsIkZpbHRlciIsInBhdGgiLCJvcGVyYXRvciIsInZhbHVlMSIsIm9MaXN0QmluZGluZyIsImJpbmRMaXN0IiwiJHNlbGVjdCIsInJlcXVlc3RDb250ZXh0cyIsImFDb250ZXh0cyIsInNEZXNjcmlwdGlvbiIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldFRleHQiLCJjYXRjaCIsIm9FcnJvciIsImVycm9yT2JqIiwic01zZyIsInN0YXR1cyIsIm1lc3NhZ2UiLCJMb2ciLCJlcnJvciIsImRpc3BsYXlBZ2dyZWdhdGVEZXRhaWxzIiwiZXZlbnQiLCJhZ2dyZWdhdGVkUHJvcGVydHlQYXRoIiwibGluayIsImFuYWx5dGljYWxUYWJsZSIsIkZQTUhlbHBlciIsImdldE1kY1RhYmxlIiwicm93Q29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwidGFibGVSb3dCaW5kaW5nIiwiZ2V0QmluZGluZyIsInJvd0NvbnRleHREYXRhIiwicm93U3BlY2lmaWNGaWx0ZXIiLCJyb3dGaWx0ZXIiLCJnZXRGaWx0ZXIiLCJwdXNoIiwiYWxsRmlsdGVycyIsImNvbmNhdCIsImdldEZpbHRlcnMiLCJhZ2dyZWdhdGlvbiIsImdldEFnZ3JlZ2F0aW9uIiwidW5pdE9yQ3VycmVuY3lOYW1lIiwiYWdncmVnYXRlIiwidW5pdCIsImdyb3VwIiwiZ3JhbmRUb3RhbCIsInN1YnRvdGFscyIsInRhYmxlSXRlbSIsImdldERlcGVuZGVudHMiLCJjbG9uZSIsImN1cnJlbmN5T3JRdWFudGl0eUVuYWJsZWRMYXlvdXQiLCJIQm94IiwicmVuZGVyVHlwZSIsImp1c3RpZnlDb250ZW50IiwiaXRlbXMiLCJhZ2dyZWdhdGlvblBhcmFtZXRlcnMiLCJzZWFyY2giLCJvSXRlbXNCaW5kaW5nSW5mbyIsImdldFJlc29sdmVkUGF0aCIsImZpbHRlcnMiLCJwYXJhbWV0ZXJzIiwiJCRhZ2dyZWdhdGlvbiIsInNvcnRlciIsIlNvcnRlciIsImlzUG9wb3ZlckZvckdyYW5kVG90YWwiLCJwb3BvdmVyIiwiVXRpbCIsImNyZWF0ZU9yVXBkYXRlTXVsdGlVbml0UG9wb3ZlciIsImdldElkIiwiY29udHJvbCIsIml0ZW1zQmluZGluZ0luZm8iLCJsaXN0SXRlbUNvbnRlbnRUZW1wbGF0ZSIsImFkZERlcGVuZGVudCIsImZuT25DbG9zZSIsInJlbW92ZURlcGVuZGVudCIsImRldGFjaEV2ZW50IiwiZGVzdHJveSIsImF0dGFjaEV2ZW50Iiwib3BlbkJ5IiwiT2JqZWN0UGF0aCIsInNldCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmllbGRSdW50aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IE9iamVjdFBhdGggZnJvbSBcInNhcC9iYXNlL3V0aWwvT2JqZWN0UGF0aFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IEZQTUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9GUE1IZWxwZXJcIjtcbmltcG9ydCBDb21tb25IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7ICRIQm94U2V0dGluZ3MgfSBmcm9tIFwic2FwL20vSEJveFwiO1xuaW1wb3J0IEhCb3ggZnJvbSBcInNhcC9tL0hCb3hcIjtcbmltcG9ydCB0eXBlIExpbmsgZnJvbSBcInNhcC9tL0xpbmtcIjtcbmltcG9ydCB0eXBlIFJlc3BvbnNpdmVQb3BvdmVyIGZyb20gXCJzYXAvbS9SZXNwb25zaXZlUG9wb3ZlclwiO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBVdGlsIH0gZnJvbSBcInNhcC9tL3RhYmxlL1V0aWxcIjtcbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50IH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9Tb3J0ZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IEZpZWxkUnVudGltZUhlbHBlciBmcm9tIFwiLi9GaWVsZFJ1bnRpbWVIZWxwZXJcIjtcblxuLyoqXG4gKiBTdGF0aWMgY2xhc3MgdXNlZCBieSBcInNhcC51aS5tZGMuRmllbGRcIiBkdXJpbmcgcnVudGltZVxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgRmllbGRSdW50aW1lID0ge1xuXHR1cGxvYWRQcm9taXNlczoge30gYXMgUmVjb3JkPHN0cmluZywgeyByZXNvbHZlOiBGdW5jdGlvbjsgcmVqZWN0OiBGdW5jdGlvbiB9Pixcblx0Y3JlYXRpbmdJbmFjdGl2ZVJvdzogZmFsc2UsXG5cblx0LyoqXG5cdCAqIFRoaXMgaXMgYSBmb3JtYXR0ZXIgaW4gZGlzZ3Vpc2UuXG5cdCAqIEBwYXJhbSBzUHJvcGVydHlQYXRoXG5cdCAqIEBwYXJhbSBzU2VtYW50aWNLZXlIYXNEcmFmdEluZGljYXRvclxuXHQgKiBAcGFyYW0gSGFzRHJhZnRFbnRpdHlcblx0ICogQHBhcmFtIElzQWN0aXZlRW50aXR5XG5cdCAqIEBwYXJhbSBoaWRlRHJhZnRJbmZvXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGRyYWZ0IGluZGljYXRvciBzaG91bGQgYmUgZGlzcGxheWVkLlxuXHQgKi9cblx0aXNEcmFmdEluZGljYXRvclZpc2libGU6IGZ1bmN0aW9uIChcblx0XHRzUHJvcGVydHlQYXRoOiBzdHJpbmcsXG5cdFx0c1NlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3I6IHN0cmluZyxcblx0XHRIYXNEcmFmdEVudGl0eT86IGJvb2xlYW4sXG5cdFx0SXNBY3RpdmVFbnRpdHk/OiBib29sZWFuLFxuXHRcdGhpZGVEcmFmdEluZm8/OiBib29sZWFuXG5cdCk6IGJvb2xlYW4ge1xuXHRcdGlmIChJc0FjdGl2ZUVudGl0eSAhPT0gdW5kZWZpbmVkICYmIEhhc0RyYWZ0RW50aXR5ICE9PSB1bmRlZmluZWQgJiYgKCFJc0FjdGl2ZUVudGl0eSB8fCBIYXNEcmFmdEVudGl0eSkgJiYgIWhpZGVEcmFmdEluZm8pIHtcblx0XHRcdHJldHVybiBzUHJvcGVydHlQYXRoID09PSBzU2VtYW50aWNLZXlIYXNEcmFmdEluZGljYXRvcjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIHZhbGlkYXRlRmllbGRHcm91cCBldmVudC5cblx0ICogQHBhcmFtIG9FdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgdmFsaWRhdGVGaWVsZEdyb3VwIGV2ZW50XG5cdCAqL1xuXHRvblZhbGlkYXRlRmllbGRHcm91cDogZnVuY3Rpb24gKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IG9Tb3VyY2VGaWVsZCA9IG9FdmVudC5nZXRTb3VyY2UoKSBhcyBNYW5hZ2VkT2JqZWN0O1xuXHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9Tb3VyY2VGaWVsZCksXG5cdFx0XHRjb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCk7XG5cblx0XHRjb25zdCBvRkVDb250cm9sbGVyID0gRmllbGRSdW50aW1lSGVscGVyLmdldEV4dGVuc2lvbkNvbnRyb2xsZXIoY29udHJvbGxlcik7XG5cdFx0b0ZFQ29udHJvbGxlci5fc2lkZUVmZmVjdHMuaGFuZGxlRmllbGRHcm91cENoYW5nZShvRXZlbnQpO1xuXHR9LFxuXG5cdF9mbkZpeEhhc2hRdWVyeVN0cmluZzogZnVuY3Rpb24gKHNDdXJyZW50SGFzaDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRpZiAoc0N1cnJlbnRIYXNoPy5pbmNsdWRlcyhcIj9cIikpIHtcblx0XHRcdC8vIHNDdXJyZW50SGFzaCBjYW4gY29udGFpbiBxdWVyeSBzdHJpbmcsIGN1dCBpdCBvZmYhXG5cdFx0XHRzQ3VycmVudEhhc2ggPSBzQ3VycmVudEhhc2guc3BsaXQoXCI/XCIpWzBdO1xuXHRcdH1cblx0XHRyZXR1cm4gc0N1cnJlbnRIYXNoO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gcmV0cmlldmUgdGV4dCBmcm9tIHRoZSB2YWx1ZSBsaXN0IGZvciBEYXRhRmllbGQuXG5cdCAqIFRoaXMgaXMgYSBmb3JtYXR0ZXIgaW4gZGlzZ3Vpc2UuXG5cdCAqIEBwYXJhbSBzUHJvcGVydHlWYWx1ZSBUaGUgcHJvcGVydHkgdmFsdWUgb2YgdGhlIGRhdGEgZmllbGQuXG5cdCAqIEBwYXJhbSBzUHJvcGVydHlGdWxsUGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSBwcm9wZXJ0eSBpbiB0aGUgbWV0YWRhdGEuXG5cdCAqIEBwYXJhbSBzRGlzcGxheUZvcm1hdCBUaGUgZGlzcGxheSBmb3JtYXQgZm9yIHRoZSBkYXRhIGZpZWxkLlxuXHQgKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIHZhbHVlIGJhc2VkIG9uIHRoZSBkaXNwbGF5IGZvcm1hdC5cblx0ICovXG5cdHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Q6IGFzeW5jIGZ1bmN0aW9uIChcblx0XHR0aGlzOiBDb250cm9sLFxuXHRcdHNQcm9wZXJ0eVZhbHVlOiBzdHJpbmcsXG5cdFx0c1Byb3BlcnR5RnVsbFBhdGg6IHN0cmluZyxcblx0XHRzRGlzcGxheUZvcm1hdDogc3RyaW5nXG5cdCk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0bGV0IHNUZXh0UHJvcGVydHk6IHN0cmluZztcblx0XHRsZXQgb01ldGFNb2RlbDtcblx0XHRsZXQgc1Byb3BlcnR5TmFtZTogc3RyaW5nO1xuXHRcdGlmIChzUHJvcGVydHlWYWx1ZSkge1xuXHRcdFx0b01ldGFNb2RlbCA9ICh0aGlzLmdldE1vZGVsKCk/LmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsKSB8fCBDb21tb25IZWxwZXIuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRzUHJvcGVydHlOYW1lID0gb01ldGFNb2RlbC5nZXRPYmplY3QoYCR7c1Byb3BlcnR5RnVsbFBhdGh9QHNhcHVpLm5hbWVgKTtcblx0XHRcdHJldHVybiBvTWV0YU1vZGVsXG5cdFx0XHRcdC5yZXF1ZXN0VmFsdWVMaXN0SW5mbyhzUHJvcGVydHlGdWxsUGF0aCwgdHJ1ZSlcblx0XHRcdFx0LnRoZW4oZnVuY3Rpb24gKG1WYWx1ZUxpc3RJbmZvKSB7XG5cdFx0XHRcdFx0Ly8gdGFrZSB0aGUgXCJcIiBvbmUgaWYgZXhpc3RzLCBvdGhlcndpc2UgdGFrZSB0aGUgZmlyc3Qgb25lIGluIHRoZSBvYmplY3QgVE9ETzogdG8gYmUgZGlzY3Vzc2VkXG5cdFx0XHRcdFx0Y29uc3Qgb1ZhbHVlTGlzdEluZm8gPSBtVmFsdWVMaXN0SW5mb1ttVmFsdWVMaXN0SW5mb1tcIlwiXSA/IFwiXCIgOiBPYmplY3Qua2V5cyhtVmFsdWVMaXN0SW5mbylbMF1dO1xuXHRcdFx0XHRcdGNvbnN0IG9WYWx1ZUxpc3RNb2RlbCA9IG9WYWx1ZUxpc3RJbmZvLiRtb2RlbDtcblx0XHRcdFx0XHRjb25zdCBvTWV0YU1vZGVsVmFsdWVMaXN0ID0gb1ZhbHVlTGlzdE1vZGVsLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0XHRcdGNvbnN0IG9QYXJhbVdpdGhLZXkgPSBvVmFsdWVMaXN0SW5mby5QYXJhbWV0ZXJzLmZpbmQoZnVuY3Rpb24gKG9QYXJhbWV0ZXI6IHtcblx0XHRcdFx0XHRcdExvY2FsRGF0YVByb3BlcnR5PzogeyAkUHJvcGVydHlQYXRoOiBzdHJpbmcgfTtcblx0XHRcdFx0XHR9KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gb1BhcmFtZXRlci5Mb2NhbERhdGFQcm9wZXJ0eSAmJiBvUGFyYW1ldGVyLkxvY2FsRGF0YVByb3BlcnR5LiRQcm9wZXJ0eVBhdGggPT09IHNQcm9wZXJ0eU5hbWU7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0aWYgKG9QYXJhbVdpdGhLZXkgJiYgIW9QYXJhbVdpdGhLZXkuVmFsdWVMaXN0UHJvcGVydHkpIHtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgSW5jb25zaXN0ZW50IHZhbHVlIGhlbHAgYW5ub3RhdGlvbiBmb3IgJHtzUHJvcGVydHlOYW1lfWApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCBvVGV4dEFubm90YXRpb24gPSBvTWV0YU1vZGVsVmFsdWVMaXN0LmdldE9iamVjdChcblx0XHRcdFx0XHRcdGAvJHtvVmFsdWVMaXN0SW5mby5Db2xsZWN0aW9uUGF0aH0vJHtvUGFyYW1XaXRoS2V5LlZhbHVlTGlzdFByb3BlcnR5fUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVGV4dGBcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0aWYgKG9UZXh0QW5ub3RhdGlvbiAmJiBvVGV4dEFubm90YXRpb24uJFBhdGgpIHtcblx0XHRcdFx0XHRcdHNUZXh0UHJvcGVydHkgPSBvVGV4dEFubm90YXRpb24uJFBhdGg7XG5cdFx0XHRcdFx0XHRjb25zdCBvRmlsdGVyID0gbmV3IEZpbHRlcih7XG5cdFx0XHRcdFx0XHRcdHBhdGg6IG9QYXJhbVdpdGhLZXkuVmFsdWVMaXN0UHJvcGVydHksXG5cdFx0XHRcdFx0XHRcdG9wZXJhdG9yOiBcIkVRXCIsXG5cdFx0XHRcdFx0XHRcdHZhbHVlMTogc1Byb3BlcnR5VmFsdWVcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0Y29uc3Qgb0xpc3RCaW5kaW5nID0gb1ZhbHVlTGlzdE1vZGVsLmJpbmRMaXN0KGAvJHtvVmFsdWVMaXN0SW5mby5Db2xsZWN0aW9uUGF0aH1gLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgb0ZpbHRlciwge1xuXHRcdFx0XHRcdFx0XHQkc2VsZWN0OiBzVGV4dFByb3BlcnR5XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHJldHVybiBvTGlzdEJpbmRpbmcucmVxdWVzdENvbnRleHRzKDAsIDIpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzRGlzcGxheUZvcm1hdCA9IFwiVmFsdWVcIjtcblx0XHRcdFx0XHRcdHJldHVybiBzUHJvcGVydHlWYWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChhQ29udGV4dHM6IENvbnRleHRbXSkge1xuXHRcdFx0XHRcdGNvbnN0IHNEZXNjcmlwdGlvbiA9IHNUZXh0UHJvcGVydHkgPyBhQ29udGV4dHNbMF0/LmdldE9iamVjdCgpW3NUZXh0UHJvcGVydHldIDogXCJcIjtcblx0XHRcdFx0XHRpZiAoIXNEZXNjcmlwdGlvbikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNQcm9wZXJ0eVZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzd2l0Y2ggKHNEaXNwbGF5Rm9ybWF0KSB7XG5cdFx0XHRcdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNEZXNjcmlwdGlvbiB8fCBzUHJvcGVydHlWYWx1ZTtcblx0XHRcdFx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblZhbHVlXCI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvcmVcIikhLmdldFRleHQoXCJDX0ZPUk1BVF9GT1JfVEVYVF9BUlJBTkdFTUVOVFwiLCBbXG5cdFx0XHRcdFx0XHRcdFx0c0Rlc2NyaXB0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdHNQcm9wZXJ0eVZhbHVlXG5cdFx0XHRcdFx0XHRcdF0pO1xuXHRcdFx0XHRcdFx0Y2FzZSBcIlZhbHVlRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29yZVwiKSEuZ2V0VGV4dChcIkNfRk9STUFUX0ZPUl9URVhUX0FSUkFOR0VNRU5UXCIsIFtcblx0XHRcdFx0XHRcdFx0XHRzUHJvcGVydHlWYWx1ZSxcblx0XHRcdFx0XHRcdFx0XHRzRGVzY3JpcHRpb25cblx0XHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc1Byb3BlcnR5VmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRcdGNvbnN0IGVycm9yT2JqID0gb0Vycm9yIGFzIHsgc3RhdHVzOiBudW1iZXI7IG1lc3NhZ2U6IHN0cmluZyB9O1xuXHRcdFx0XHRcdGNvbnN0IHNNc2cgPVxuXHRcdFx0XHRcdFx0ZXJyb3JPYmouc3RhdHVzICYmIGVycm9yT2JqLnN0YXR1cyA9PT0gNDA0XG5cdFx0XHRcdFx0XHRcdD8gYE1ldGFkYXRhIG5vdCBmb3VuZCAoJHtlcnJvck9iai5zdGF0dXN9KSBmb3IgdmFsdWUgaGVscCBvZiBwcm9wZXJ0eSAke3NQcm9wZXJ0eUZ1bGxQYXRofWBcblx0XHRcdFx0XHRcdFx0OiBlcnJvck9iai5tZXNzYWdlO1xuXHRcdFx0XHRcdExvZy5lcnJvcihzTXNnKTtcblx0XHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBzUHJvcGVydHlWYWx1ZTtcblx0fSxcblxuXHRkaXNwbGF5QWdncmVnYXRlRGV0YWlsczogYXN5bmMgZnVuY3Rpb24gKGV2ZW50OiBFdmVudCwgYWdncmVnYXRlZFByb3BlcnR5UGF0aD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICghYWdncmVnYXRlZFByb3BlcnR5UGF0aCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBsaW5rID0gZXZlbnQuZ2V0U291cmNlPExpbms+KCk7XG5cdFx0Y29uc3QgYW5hbHl0aWNhbFRhYmxlID0gRlBNSGVscGVyLmdldE1kY1RhYmxlKGxpbmspITtcblxuXHRcdGNvbnN0IHJvd0NvbnRleHQgPSBsaW5rLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dDtcblx0XHRjb25zdCB0YWJsZVJvd0JpbmRpbmcgPSByb3dDb250ZXh0LmdldEJpbmRpbmcoKSBhcyBPRGF0YUxpc3RCaW5kaW5nO1xuXG5cdFx0Ly8gR2V0IHRoZSBmaWx0ZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRvdGFsIHJvd1xuXHRcdGNvbnN0IHJvd0NvbnRleHREYXRhID0gcm93Q29udGV4dC5nZXRPYmplY3QoKTtcblx0XHRjb25zdCByb3dTcGVjaWZpY0ZpbHRlcjogRmlsdGVyW10gPSBbXTtcblx0XHRjb25zdCByb3dGaWx0ZXIgPSByb3dDb250ZXh0LmdldEZpbHRlcigpO1xuXHRcdGlmIChyb3dGaWx0ZXIpIHtcblx0XHRcdHJvd1NwZWNpZmljRmlsdGVyLnB1c2gocm93RmlsdGVyKTtcblx0XHR9XG5cblx0XHQvLyBBZGQgdGhlIGZpbHRlcnMgYXBwbGllZCB0byB0aGUgb3JpZ2luYWwgdGFibGVcblx0XHRjb25zdCBhbGxGaWx0ZXJzID0gcm93U3BlY2lmaWNGaWx0ZXIuY29uY2F0KHRhYmxlUm93QmluZGluZy5nZXRGaWx0ZXJzKFwiQXBwbGljYXRpb25cIiksIHRhYmxlUm93QmluZGluZy5nZXRGaWx0ZXJzKFwiQ29udHJvbFwiKSk7XG5cblx0XHQvLyBDYWxjdWxhdGUgJCRhZ2dyZWdhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgdGFibGUgaW4gdGhlIHBvcG92ZXIgKGFnZ3JlZ2F0ZSBhbW91bnQsIGdyb3VwIGJ5IGN1cnJlbmN5L3VuaXQpXG5cdFx0Y29uc3QgYWdncmVnYXRpb24gPSB0YWJsZVJvd0JpbmRpbmcuZ2V0QWdncmVnYXRpb24oKSBhcyB7XG5cdFx0XHRncm91cDogUmVjb3JkPHN0cmluZywgb2JqZWN0Pjtcblx0XHRcdGFnZ3JlZ2F0ZTogUmVjb3JkPHN0cmluZywgeyB1bml0OiBzdHJpbmcgfT47XG5cdFx0XHRzZWFyY2g/OiBzdHJpbmc7XG5cdFx0fTtcblx0XHRjb25zdCB1bml0T3JDdXJyZW5jeU5hbWUgPSBhZ2dyZWdhdGlvbi5hZ2dyZWdhdGVbYWdncmVnYXRlZFByb3BlcnR5UGF0aF0udW5pdDtcblx0XHRjb25zdCBncm91cDogUmVjb3JkPHN0cmluZywgb2JqZWN0PiA9IHt9O1xuXHRcdGdyb3VwW3VuaXRPckN1cnJlbmN5TmFtZV0gPSB7fTtcblx0XHRjb25zdCBhZ2dyZWdhdGU6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4gPSB7fTtcblx0XHRhZ2dyZWdhdGVbYWdncmVnYXRlZFByb3BlcnR5UGF0aF0gPSB7IGdyYW5kVG90YWw6IGZhbHNlLCBzdWJ0b3RhbHM6IGZhbHNlLCB1bml0OiB1bml0T3JDdXJyZW5jeU5hbWUgfTtcblxuXHRcdC8vIFRoZSBpdGVtIGRpc3BsYXllZCBpbiB0aGUgdGFibGUgaW4gdGhlIHBvcG92ZXIgaXMgYSBjb3B5IG9mIHRoZSBpdGVtIGRpc3BsYXllZCBpbiB0aGUgdGFibGVcblx0XHRjb25zdCB0YWJsZUl0ZW0gPSBsaW5rLmdldERlcGVuZGVudHMoKVswXS5jbG9uZSgpO1xuXHRcdGNvbnN0IGN1cnJlbmN5T3JRdWFudGl0eUVuYWJsZWRMYXlvdXQgPSBuZXcgSEJveCh7XG5cdFx0XHRyZW5kZXJUeXBlOiBcIkJhcmVcIixcblx0XHRcdGp1c3RpZnlDb250ZW50OiBcIkVuZFwiLFxuXHRcdFx0aXRlbXM6IFt0YWJsZUl0ZW1dXG5cdFx0fSBhcyAkSEJveFNldHRpbmdzKTtcblxuXHRcdGNvbnN0IGFnZ3JlZ2F0aW9uUGFyYW1ldGVyczoge1xuXHRcdFx0Z3JvdXA6IFJlY29yZDxzdHJpbmcsIG9iamVjdD47XG5cdFx0XHRhZ2dyZWdhdGU6IFJlY29yZDxzdHJpbmcsIG9iamVjdD47XG5cdFx0XHRzZWFyY2g/OiBzdHJpbmc7XG5cdFx0fSA9IHsgZ3JvdXAsIGFnZ3JlZ2F0ZSB9O1xuXHRcdGlmIChhZ2dyZWdhdGlvbi5zZWFyY2gpIHtcblx0XHRcdGFnZ3JlZ2F0aW9uUGFyYW1ldGVycy5zZWFyY2ggPSBhZ2dyZWdhdGlvbi5zZWFyY2g7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb0l0ZW1zQmluZGluZ0luZm8gPSB7XG5cdFx0XHRwYXRoOiB0YWJsZVJvd0JpbmRpbmcuZ2V0UmVzb2x2ZWRQYXRoKCksXG5cdFx0XHRmaWx0ZXJzOiBhbGxGaWx0ZXJzLFxuXHRcdFx0cGFyYW1ldGVyczoge1xuXHRcdFx0XHQkJGFnZ3JlZ2F0aW9uOiBhZ2dyZWdhdGlvblBhcmFtZXRlcnNcblx0XHRcdH0sXG5cdFx0XHRzb3J0ZXI6IG5ldyBTb3J0ZXIodW5pdE9yQ3VycmVuY3lOYW1lLCBmYWxzZSkgLy8gT3JkZXIgYnkgY3VycmVuY3lcblx0XHR9O1xuXG5cdFx0Y29uc3QgaXNQb3BvdmVyRm9yR3JhbmRUb3RhbCA9IHJvd0NvbnRleHREYXRhW1wiQCR1aTUubm9kZS5sZXZlbFwiXSA9PT0gMDtcblx0XHRjb25zdCBwb3BvdmVyOiBSZXNwb25zaXZlUG9wb3ZlciA9IGF3YWl0IFV0aWwuY3JlYXRlT3JVcGRhdGVNdWx0aVVuaXRQb3BvdmVyKGAke2FuYWx5dGljYWxUYWJsZS5nZXRJZCgpfS1tdWx0aVVuaXRQb3BvdmVyYCwge1xuXHRcdFx0Y29udHJvbDogYW5hbHl0aWNhbFRhYmxlLFxuXHRcdFx0Z3JhbmRUb3RhbDogaXNQb3BvdmVyRm9yR3JhbmRUb3RhbCxcblx0XHRcdGl0ZW1zQmluZGluZ0luZm86IG9JdGVtc0JpbmRpbmdJbmZvLFxuXHRcdFx0bGlzdEl0ZW1Db250ZW50VGVtcGxhdGU6IGN1cnJlbmN5T3JRdWFudGl0eUVuYWJsZWRMYXlvdXRcblx0XHR9KTtcblx0XHRhbmFseXRpY2FsVGFibGUuYWRkRGVwZW5kZW50KHBvcG92ZXIpO1xuXG5cdFx0Y29uc3QgZm5PbkNsb3NlID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0YW5hbHl0aWNhbFRhYmxlLnJlbW92ZURlcGVuZGVudChwb3BvdmVyKTtcblx0XHRcdHBvcG92ZXIuZGV0YWNoRXZlbnQoXCJhZnRlckNsb3NlXCIsIGZuT25DbG9zZSk7XG5cdFx0XHRwb3BvdmVyLmRlc3Ryb3koKTtcblx0XHR9O1xuXHRcdHBvcG92ZXIuYXR0YWNoRXZlbnQoXCJhZnRlckNsb3NlXCIsIGZuT25DbG9zZSk7XG5cdFx0cG9wb3Zlci5vcGVuQnkobGluayk7XG5cdH1cbn07XG5cbk9iamVjdFBhdGguc2V0KFwic2FwLmZlLm1hY3Jvcy5maWVsZC5GaWVsZFJ1bnRpbWVcIiwgRmllbGRSdW50aW1lKTtcblxuZXhwb3J0IGRlZmF1bHQgRmllbGRSdW50aW1lO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBc0JBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsTUFBTUEsWUFBWSxHQUFHO0lBQ3BCQyxjQUFjLEVBQUUsQ0FBQyxDQUE0RDtJQUM3RUMsbUJBQW1CLEVBQUUsS0FBSztJQUUxQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsdUJBQXVCLEVBQUUsU0FBQUEsQ0FDeEJDLGFBQXFCLEVBQ3JCQyw2QkFBcUMsRUFDckNDLGNBQXdCLEVBQ3hCQyxjQUF3QixFQUN4QkMsYUFBdUIsRUFDYjtNQUNWLElBQUlELGNBQWMsS0FBS0UsU0FBUyxJQUFJSCxjQUFjLEtBQUtHLFNBQVMsS0FBSyxDQUFDRixjQUFjLElBQUlELGNBQWMsQ0FBQyxJQUFJLENBQUNFLGFBQWEsRUFBRTtRQUMxSCxP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
|
|
223
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZFJ1bnRpbWUiLCJ1cGxvYWRQcm9taXNlcyIsImNyZWF0aW5nSW5hY3RpdmVSb3ciLCJpc0RyYWZ0SW5kaWNhdG9yVmlzaWJsZSIsInNQcm9wZXJ0eVBhdGgiLCJzU2VtYW50aWNLZXlIYXNEcmFmdEluZGljYXRvciIsIkhhc0RyYWZ0RW50aXR5IiwiSXNBY3RpdmVFbnRpdHkiLCJoaWRlRHJhZnRJbmZvIiwidW5kZWZpbmVkIiwib25WYWxpZGF0ZUZpZWxkR3JvdXAiLCJvRXZlbnQiLCJvU291cmNlRmllbGQiLCJnZXRTb3VyY2UiLCJ2aWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiY29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJvRkVDb250cm9sbGVyIiwiRmllbGRSdW50aW1lSGVscGVyIiwiZ2V0RXh0ZW5zaW9uQ29udHJvbGxlciIsIl9zaWRlRWZmZWN0cyIsImhhbmRsZUZpZWxkR3JvdXBDaGFuZ2UiLCJfZm5GaXhIYXNoUXVlcnlTdHJpbmciLCJzQ3VycmVudEhhc2giLCJpbmNsdWRlcyIsInNwbGl0IiwiY3JlYXRlVmFsdWVMaXN0RmlsdGVycyIsInZhbHVlTGlzdEluZm8iLCJwcm9wZXJ0eUlkIiwicHJvcGVydHlWYWx1ZSIsImJpbmRpbmdDb250ZXh0IiwiZmlsdGVycyIsIkZpbHRlciIsInBhdGgiLCJvcGVyYXRvciIsInZhbHVlMSIsIlBhcmFtZXRlcnMiLCJyZWxldmFudFBhcmFtZXRlcnMiLCJmaWx0ZXIiLCJwYXJhbWV0ZXIiLCJpc0luT3JJbk91dCIsIiRUeXBlIiwiTG9jYWxEYXRhUHJvcGVydHkiLCIkUHJvcGVydHlQYXRoIiwiVmFsdWVMaXN0UHJvcGVydHkiLCJmb3JFYWNoIiwibG9jYWxWYWx1ZSIsImdldFByb3BlcnR5IiwicHVzaCIsInJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3QiLCJzUHJvcGVydHlWYWx1ZSIsInNQcm9wZXJ0eUZ1bGxQYXRoIiwic0Rpc3BsYXlGb3JtYXQiLCJzVGV4dFByb3BlcnR5Iiwib01ldGFNb2RlbCIsInNQcm9wZXJ0eU5hbWUiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsIkNvbW1vbkhlbHBlciIsImdldE9iamVjdCIsImdldEJpbmRpbmdDb250ZXh0IiwicmVxdWVzdFZhbHVlTGlzdEluZm8iLCJ0aGVuIiwibVZhbHVlTGlzdEluZm8iLCJvVmFsdWVMaXN0SW5mbyIsIk9iamVjdCIsImtleXMiLCJvVmFsdWVMaXN0TW9kZWwiLCIkbW9kZWwiLCJvTWV0YU1vZGVsVmFsdWVMaXN0Iiwib1BhcmFtV2l0aEtleSIsImZpbmQiLCJvUGFyYW1ldGVyIiwiRXJyb3IiLCJvVGV4dEFubm90YXRpb24iLCJDb2xsZWN0aW9uUGF0aCIsIiRQYXRoIiwibGlzdEJpbmRpbmciLCJiaW5kTGlzdCIsIiRzZWxlY3QiLCJyZXF1ZXN0Q29udGV4dHMiLCJhQ29udGV4dHMiLCJzRGVzY3JpcHRpb24iLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJnZXRUZXh0IiwiY2F0Y2giLCJvRXJyb3IiLCJlcnJvck9iaiIsInNNc2ciLCJzdGF0dXMiLCJtZXNzYWdlIiwiTG9nIiwiZXJyb3IiLCJkaXNwbGF5QWdncmVnYXRlRGV0YWlscyIsImV2ZW50IiwiYWdncmVnYXRlZFByb3BlcnR5UGF0aCIsImxpbmsiLCJhbmFseXRpY2FsVGFibGUiLCJGUE1IZWxwZXIiLCJnZXRNZGNUYWJsZSIsInBvcG92ZXJJZCIsImdldElkIiwiZ2V0RGVwZW5kZW50cyIsInNvbWUiLCJkZXBlbmRlbnQiLCJyb3dDb250ZXh0IiwidGFibGVSb3dCaW5kaW5nIiwiZ2V0QmluZGluZyIsInJvd0NvbnRleHREYXRhIiwicm93U3BlY2lmaWNGaWx0ZXIiLCJyb3dGaWx0ZXIiLCJnZXRGaWx0ZXIiLCJhbGxGaWx0ZXJzIiwiY29uY2F0IiwiZ2V0RmlsdGVycyIsImFnZ3JlZ2F0aW9uIiwiZ2V0QWdncmVnYXRpb24iLCJ1bml0T3JDdXJyZW5jeU5hbWUiLCJhZ2dyZWdhdGUiLCJ1bml0IiwiZ3JvdXAiLCJncmFuZFRvdGFsIiwic3VidG90YWxzIiwidGFibGVJdGVtIiwiY2xvbmUiLCJjdXJyZW5jeU9yUXVhbnRpdHlFbmFibGVkTGF5b3V0IiwiSEJveCIsInJlbmRlclR5cGUiLCJqdXN0aWZ5Q29udGVudCIsIml0ZW1zIiwiYWdncmVnYXRpb25QYXJhbWV0ZXJzIiwic2VhcmNoIiwib0l0ZW1zQmluZGluZ0luZm8iLCJnZXRSZXNvbHZlZFBhdGgiLCJwYXJhbWV0ZXJzIiwiJCRhZ2dyZWdhdGlvbiIsInNvcnRlciIsIlNvcnRlciIsImlzUG9wb3ZlckZvckdyYW5kVG90YWwiLCJwb3BvdmVyIiwiVXRpbCIsImNyZWF0ZU9yVXBkYXRlTXVsdGlVbml0UG9wb3ZlciIsImNvbnRyb2wiLCJpdGVtc0JpbmRpbmdJbmZvIiwibGlzdEl0ZW1Db250ZW50VGVtcGxhdGUiLCJhZGREZXBlbmRlbnQiLCJmbk9uQ2xvc2UiLCJyZW1vdmVEZXBlbmRlbnQiLCJkZXRhY2hFdmVudCIsImRlc3Ryb3kiLCJhdHRhY2hFdmVudCIsIm9wZW5CeSIsIk9iamVjdFBhdGgiLCJzZXQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpZWxkUnVudGltZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBPYmplY3RQYXRoIGZyb20gXCJzYXAvYmFzZS91dGlsL09iamVjdFBhdGhcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBGUE1IZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBBbm5vdGF0aW9uVmFsdWVMaXN0VHlwZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL3ZhbHVlaGVscC9WYWx1ZUxpc3RIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgJEhCb3hTZXR0aW5ncyB9IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgSEJveCBmcm9tIFwic2FwL20vSEJveFwiO1xuaW1wb3J0IHR5cGUgTGluayBmcm9tIFwic2FwL20vTGlua1wiO1xuaW1wb3J0IHR5cGUgUmVzcG9uc2l2ZVBvcG92ZXIgZnJvbSBcInNhcC9tL1Jlc3BvbnNpdmVQb3BvdmVyXCI7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIFV0aWwgfSBmcm9tIFwic2FwL20vdGFibGUvVXRpbFwiO1xuaW1wb3J0IHR5cGUgRXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSB7IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgQmFzZUNvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyXCI7XG5pbXBvcnQgU29ydGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvU29ydGVyXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCBGaWVsZFJ1bnRpbWVIZWxwZXIgZnJvbSBcIi4vRmllbGRSdW50aW1lSGVscGVyXCI7XG5cbi8qKlxuICogU3RhdGljIGNsYXNzIHVzZWQgYnkgXCJzYXAudWkubWRjLkZpZWxkXCIgZHVyaW5nIHJ1bnRpbWVcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IEZpZWxkUnVudGltZSA9IHtcblx0dXBsb2FkUHJvbWlzZXM6IHt9IGFzIFJlY29yZDxzdHJpbmcsIHsgcmVzb2x2ZTogRnVuY3Rpb247IHJlamVjdDogRnVuY3Rpb24gfT4sXG5cdGNyZWF0aW5nSW5hY3RpdmVSb3c6IGZhbHNlLFxuXG5cdC8qKlxuXHQgKiBUaGlzIGlzIGEgZm9ybWF0dGVyIGluIGRpc2d1aXNlLlxuXHQgKiBAcGFyYW0gc1Byb3BlcnR5UGF0aFxuXHQgKiBAcGFyYW0gc1NlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3Jcblx0ICogQHBhcmFtIEhhc0RyYWZ0RW50aXR5XG5cdCAqIEBwYXJhbSBJc0FjdGl2ZUVudGl0eVxuXHQgKiBAcGFyYW0gaGlkZURyYWZ0SW5mb1xuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBkcmFmdCBpbmRpY2F0b3Igc2hvdWxkIGJlIGRpc3BsYXllZC5cblx0ICovXG5cdGlzRHJhZnRJbmRpY2F0b3JWaXNpYmxlOiBmdW5jdGlvbiAoXG5cdFx0c1Byb3BlcnR5UGF0aDogc3RyaW5nLFxuXHRcdHNTZW1hbnRpY0tleUhhc0RyYWZ0SW5kaWNhdG9yOiBzdHJpbmcsXG5cdFx0SGFzRHJhZnRFbnRpdHk/OiBib29sZWFuLFxuXHRcdElzQWN0aXZlRW50aXR5PzogYm9vbGVhbixcblx0XHRoaWRlRHJhZnRJbmZvPzogYm9vbGVhblxuXHQpOiBib29sZWFuIHtcblx0XHRpZiAoSXNBY3RpdmVFbnRpdHkgIT09IHVuZGVmaW5lZCAmJiBIYXNEcmFmdEVudGl0eSAhPT0gdW5kZWZpbmVkICYmICghSXNBY3RpdmVFbnRpdHkgfHwgSGFzRHJhZnRFbnRpdHkpICYmICFoaWRlRHJhZnRJbmZvKSB7XG5cdFx0XHRyZXR1cm4gc1Byb3BlcnR5UGF0aCA9PT0gc1NlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3I7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIHRoZSB2YWxpZGF0ZUZpZWxkR3JvdXAgZXZlbnQuXG5cdCAqIEBwYXJhbSBvRXZlbnQgVGhlIGV2ZW50IG9iamVjdCBwYXNzZWQgYnkgdGhlIHZhbGlkYXRlRmllbGRHcm91cCBldmVudFxuXHQgKi9cblx0b25WYWxpZGF0ZUZpZWxkR3JvdXA6IGZ1bmN0aW9uIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBvU291cmNlRmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCkgYXMgTWFuYWdlZE9iamVjdDtcblx0XHRjb25zdCB2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhvU291cmNlRmllbGQpLFxuXHRcdFx0Y29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXG5cdFx0Y29uc3Qgb0ZFQ29udHJvbGxlciA9IEZpZWxkUnVudGltZUhlbHBlci5nZXRFeHRlbnNpb25Db250cm9sbGVyKGNvbnRyb2xsZXIpO1xuXHRcdG9GRUNvbnRyb2xsZXIuX3NpZGVFZmZlY3RzLmhhbmRsZUZpZWxkR3JvdXBDaGFuZ2Uob0V2ZW50KTtcblx0fSxcblxuXHRfZm5GaXhIYXNoUXVlcnlTdHJpbmc6IGZ1bmN0aW9uIChzQ3VycmVudEhhc2g6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKHNDdXJyZW50SGFzaD8uaW5jbHVkZXMoXCI/XCIpKSB7XG5cdFx0XHQvLyBzQ3VycmVudEhhc2ggY2FuIGNvbnRhaW4gcXVlcnkgc3RyaW5nLCBjdXQgaXQgb2ZmIVxuXHRcdFx0c0N1cnJlbnRIYXNoID0gc0N1cnJlbnRIYXNoLnNwbGl0KFwiP1wiKVswXTtcblx0XHR9XG5cdFx0cmV0dXJuIHNDdXJyZW50SGFzaDtcblx0fSxcblxuXHQvKipcblx0ICogQ3JlYXRlcyBmaWx0ZXJzIGZvciBWYWx1ZUxpc3QgcmVxdWVzdHMgYmFzZWQgb24gVmFsdWVMaXN0UGFyYW1ldGVySW4gYW5kIFZhbHVlTGlzdFBhcmFtZXRlckluT3V0IGFubm90YXRpb25zLlxuXHQgKiBAcGFyYW0gdmFsdWVMaXN0SW5mbyBUaGUgVmFsdWVMaXN0IGFubm90YXRpb24gaW5mb3JtYXRpb25cblx0ICogQHBhcmFtIHByb3BlcnR5SWQgVGhlIElEIHByb3BlcnR5IG9mIHRoZSBJZEFuZERlc2NpcHRpb24gb2YgdGhlIHRleHQgYXJyYW5nZW1lbnQgYW5ub3RhdGlvblxuXHQgKiBAcGFyYW0gcHJvcGVydHlWYWx1ZSBUaGUgdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eUlkIHByb3BlcnR5XG5cdCAqIEBwYXJhbSBiaW5kaW5nQ29udGV4dCBUaGUgYmluZGluZyBjb250ZXh0IHRvIGdldCB2YWx1ZXMgZnJvbVxuXHQgKiBAcmV0dXJucyBBcnJheSBvZiBmaWx0ZXJzIGZvciB0aGUgVmFsdWVMaXN0IHJlcXVlc3Rcblx0ICovXG5cdGNyZWF0ZVZhbHVlTGlzdEZpbHRlcnM6IGZ1bmN0aW9uIChcblx0XHR2YWx1ZUxpc3RJbmZvOiBBbm5vdGF0aW9uVmFsdWVMaXN0VHlwZSxcblx0XHRwcm9wZXJ0eUlkOiBzdHJpbmcsXG5cdFx0cHJvcGVydHlWYWx1ZTogc3RyaW5nLFxuXHRcdGJpbmRpbmdDb250ZXh0OiBCYXNlQ29udGV4dCB8IG51bGwgfCB1bmRlZmluZWRcblx0KTogRmlsdGVyW10ge1xuXHRcdC8vIFN0YXJ0IHdpdGggdGhlIGtleSBmaWx0ZXJcblx0XHRjb25zdCBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtcblx0XHRcdG5ldyBGaWx0ZXIoe1xuXHRcdFx0XHRwYXRoOiBwcm9wZXJ0eUlkLFxuXHRcdFx0XHRvcGVyYXRvcjogXCJFUVwiLFxuXHRcdFx0XHR2YWx1ZTE6IHByb3BlcnR5VmFsdWVcblx0XHRcdH0pXG5cdFx0XTtcblxuXHRcdGlmIChiaW5kaW5nQ29udGV4dCAmJiB2YWx1ZUxpc3RJbmZvLlBhcmFtZXRlcnMpIHtcblx0XHRcdGNvbnN0IHJlbGV2YW50UGFyYW1ldGVycyA9IHZhbHVlTGlzdEluZm8uUGFyYW1ldGVycy5maWx0ZXIoKHBhcmFtZXRlcikgPT4ge1xuXHRcdFx0XHRjb25zdCBpc0luT3JJbk91dCA9XG5cdFx0XHRcdFx0cGFyYW1ldGVyLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RQYXJhbWV0ZXJJblwiIHx8XG5cdFx0XHRcdFx0cGFyYW1ldGVyLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RQYXJhbWV0ZXJJbk91dFwiO1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdGlzSW5PckluT3V0ICYmXG5cdFx0XHRcdFx0cGFyYW1ldGVyLkxvY2FsRGF0YVByb3BlcnR5Py4kUHJvcGVydHlQYXRoICYmXG5cdFx0XHRcdFx0cGFyYW1ldGVyLlZhbHVlTGlzdFByb3BlcnR5ICYmXG5cdFx0XHRcdFx0cGFyYW1ldGVyLlZhbHVlTGlzdFByb3BlcnR5ICE9PSBwcm9wZXJ0eUlkXG5cdFx0XHRcdCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0cmVsZXZhbnRQYXJhbWV0ZXJzLmZvckVhY2goKHBhcmFtZXRlcikgPT4ge1xuXHRcdFx0XHRjb25zdCBsb2NhbFZhbHVlID0gYmluZGluZ0NvbnRleHQuZ2V0UHJvcGVydHkocGFyYW1ldGVyLkxvY2FsRGF0YVByb3BlcnR5IS4kUHJvcGVydHlQYXRoKTtcblx0XHRcdFx0aWYgKGxvY2FsVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBsb2NhbFZhbHVlICE9PSBudWxsICYmIGxvY2FsVmFsdWUgIT09IFwiXCIpIHtcblx0XHRcdFx0XHRmaWx0ZXJzLnB1c2goXG5cdFx0XHRcdFx0XHRuZXcgRmlsdGVyKHtcblx0XHRcdFx0XHRcdFx0cGF0aDogcGFyYW1ldGVyLlZhbHVlTGlzdFByb3BlcnR5LFxuXHRcdFx0XHRcdFx0XHRvcGVyYXRvcjogXCJFUVwiLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTE6IGxvY2FsVmFsdWVcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZpbHRlcnM7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byByZXRyaWV2ZSB0ZXh0IGZyb20gdGhlIHZhbHVlIGxpc3QgZm9yIERhdGFGaWVsZC5cblx0ICogVGhpcyBpcyBhIGZvcm1hdHRlciBpbiBkaXNndWlzZS5cblx0ICogQHBhcmFtIHNQcm9wZXJ0eVZhbHVlIFRoZSBwcm9wZXJ0eSB2YWx1ZSBvZiB0aGUgZGF0YSBmaWVsZC5cblx0ICogQHBhcmFtIHNQcm9wZXJ0eUZ1bGxQYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIHByb3BlcnR5IGluIHRoZSBtZXRhZGF0YS5cblx0ICogQHBhcmFtIHNEaXNwbGF5Rm9ybWF0IFRoZSBkaXNwbGF5IGZvcm1hdCBmb3IgdGhlIGRhdGEgZmllbGQuXG5cdCAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgdmFsdWUgYmFzZWQgb24gdGhlIGRpc3BsYXkgZm9ybWF0LlxuXHQgKi9cblx0cmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdDogYXN5bmMgZnVuY3Rpb24gKFxuXHRcdHRoaXM6IENvbnRyb2wsXG5cdFx0c1Byb3BlcnR5VmFsdWU6IHN0cmluZyxcblx0XHRzUHJvcGVydHlGdWxsUGF0aDogc3RyaW5nLFxuXHRcdHNEaXNwbGF5Rm9ybWF0OiBzdHJpbmdcblx0KTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRsZXQgc1RleHRQcm9wZXJ0eTogc3RyaW5nO1xuXHRcdGxldCBvTWV0YU1vZGVsO1xuXHRcdGxldCBzUHJvcGVydHlOYW1lOiBzdHJpbmc7XG5cdFx0aWYgKHNQcm9wZXJ0eVZhbHVlKSB7XG5cdFx0XHRvTWV0YU1vZGVsID0gKHRoaXMuZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWwpIHx8IENvbW1vbkhlbHBlci5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdHNQcm9wZXJ0eU5hbWUgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtzUHJvcGVydHlGdWxsUGF0aH1Ac2FwdWkubmFtZWApO1xuXHRcdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSB0aGlzLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0XHRyZXR1cm4gb01ldGFNb2RlbFxuXHRcdFx0XHQucmVxdWVzdFZhbHVlTGlzdEluZm8oc1Byb3BlcnR5RnVsbFBhdGgsIHRydWUpXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChtVmFsdWVMaXN0SW5mbykge1xuXHRcdFx0XHRcdC8vIHRha2UgdGhlIFwiXCIgb25lIGlmIGV4aXN0cywgb3RoZXJ3aXNlIHRha2UgdGhlIGZpcnN0IG9uZSBpbiB0aGUgb2JqZWN0IFRPRE86IHRvIGJlIGRpc2N1c3NlZFxuXHRcdFx0XHRcdGNvbnN0IG9WYWx1ZUxpc3RJbmZvID0gbVZhbHVlTGlzdEluZm9bbVZhbHVlTGlzdEluZm9bXCJcIl0gPyBcIlwiIDogT2JqZWN0LmtleXMobVZhbHVlTGlzdEluZm8pWzBdXTtcblx0XHRcdFx0XHRjb25zdCBvVmFsdWVMaXN0TW9kZWwgPSBvVmFsdWVMaXN0SW5mby4kbW9kZWw7XG5cdFx0XHRcdFx0Y29uc3Qgb01ldGFNb2RlbFZhbHVlTGlzdCA9IG9WYWx1ZUxpc3RNb2RlbC5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdFx0XHRjb25zdCBvUGFyYW1XaXRoS2V5ID0gb1ZhbHVlTGlzdEluZm8uUGFyYW1ldGVycy5maW5kKGZ1bmN0aW9uIChvUGFyYW1ldGVyOiB7XG5cdFx0XHRcdFx0XHRMb2NhbERhdGFQcm9wZXJ0eT86IHsgJFByb3BlcnR5UGF0aDogc3RyaW5nIH07XG5cdFx0XHRcdFx0fSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9QYXJhbWV0ZXIuTG9jYWxEYXRhUHJvcGVydHkgJiYgb1BhcmFtZXRlci5Mb2NhbERhdGFQcm9wZXJ0eS4kUHJvcGVydHlQYXRoID09PSBzUHJvcGVydHlOYW1lO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGlmIChvUGFyYW1XaXRoS2V5ICYmICFvUGFyYW1XaXRoS2V5LlZhbHVlTGlzdFByb3BlcnR5KSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEluY29uc2lzdGVudCB2YWx1ZSBoZWxwIGFubm90YXRpb24gZm9yICR7c1Byb3BlcnR5TmFtZX1gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3Qgb1RleHRBbm5vdGF0aW9uID0gb01ldGFNb2RlbFZhbHVlTGlzdC5nZXRPYmplY3QoXG5cdFx0XHRcdFx0XHRgLyR7b1ZhbHVlTGlzdEluZm8uQ29sbGVjdGlvblBhdGh9LyR7b1BhcmFtV2l0aEtleS5WYWx1ZUxpc3RQcm9wZXJ0eX1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRgXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdGlmIChvVGV4dEFubm90YXRpb24gJiYgb1RleHRBbm5vdGF0aW9uLiRQYXRoKSB7XG5cdFx0XHRcdFx0XHRzVGV4dFByb3BlcnR5ID0gb1RleHRBbm5vdGF0aW9uLiRQYXRoO1xuXG5cdFx0XHRcdFx0XHRjb25zdCBmaWx0ZXJzID0gRmllbGRSdW50aW1lLmNyZWF0ZVZhbHVlTGlzdEZpbHRlcnMoXG5cdFx0XHRcdFx0XHRcdG9WYWx1ZUxpc3RJbmZvLFxuXHRcdFx0XHRcdFx0XHRvUGFyYW1XaXRoS2V5LlZhbHVlTGlzdFByb3BlcnR5LFxuXHRcdFx0XHRcdFx0XHRzUHJvcGVydHlWYWx1ZSxcblx0XHRcdFx0XHRcdFx0YmluZGluZ0NvbnRleHRcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRjb25zdCBsaXN0QmluZGluZyA9IG9WYWx1ZUxpc3RNb2RlbC5iaW5kTGlzdChgLyR7b1ZhbHVlTGlzdEluZm8uQ29sbGVjdGlvblBhdGh9YCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZpbHRlcnMsIHtcblx0XHRcdFx0XHRcdFx0JHNlbGVjdDogc1RleHRQcm9wZXJ0eVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbGlzdEJpbmRpbmcucmVxdWVzdENvbnRleHRzKDAsIDIpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzRGlzcGxheUZvcm1hdCA9IFwiVmFsdWVcIjtcblx0XHRcdFx0XHRcdHJldHVybiBzUHJvcGVydHlWYWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChhQ29udGV4dHM6IENvbnRleHRbXSkge1xuXHRcdFx0XHRcdGNvbnN0IHNEZXNjcmlwdGlvbiA9IHNUZXh0UHJvcGVydHkgPyBhQ29udGV4dHNbMF0/LmdldE9iamVjdCgpW3NUZXh0UHJvcGVydHldIDogXCJcIjtcblx0XHRcdFx0XHRpZiAoIXNEZXNjcmlwdGlvbikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNQcm9wZXJ0eVZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzd2l0Y2ggKHNEaXNwbGF5Rm9ybWF0KSB7XG5cdFx0XHRcdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNEZXNjcmlwdGlvbiB8fCBzUHJvcGVydHlWYWx1ZTtcblx0XHRcdFx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblZhbHVlXCI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvcmVcIikhLmdldFRleHQoXCJDX0ZPUk1BVF9GT1JfVEVYVF9BUlJBTkdFTUVOVFwiLCBbXG5cdFx0XHRcdFx0XHRcdFx0c0Rlc2NyaXB0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdHNQcm9wZXJ0eVZhbHVlXG5cdFx0XHRcdFx0XHRcdF0pO1xuXHRcdFx0XHRcdFx0Y2FzZSBcIlZhbHVlRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29yZVwiKSEuZ2V0VGV4dChcIkNfRk9STUFUX0ZPUl9URVhUX0FSUkFOR0VNRU5UXCIsIFtcblx0XHRcdFx0XHRcdFx0XHRzUHJvcGVydHlWYWx1ZSxcblx0XHRcdFx0XHRcdFx0XHRzRGVzY3JpcHRpb25cblx0XHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc1Byb3BlcnR5VmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRcdGNvbnN0IGVycm9yT2JqID0gb0Vycm9yIGFzIHsgc3RhdHVzOiBudW1iZXI7IG1lc3NhZ2U6IHN0cmluZyB9O1xuXHRcdFx0XHRcdGNvbnN0IHNNc2cgPVxuXHRcdFx0XHRcdFx0ZXJyb3JPYmouc3RhdHVzICYmIGVycm9yT2JqLnN0YXR1cyA9PT0gNDA0XG5cdFx0XHRcdFx0XHRcdD8gYE1ldGFkYXRhIG5vdCBmb3VuZCAoJHtlcnJvck9iai5zdGF0dXN9KSBmb3IgdmFsdWUgaGVscCBvZiBwcm9wZXJ0eSAke3NQcm9wZXJ0eUZ1bGxQYXRofWBcblx0XHRcdFx0XHRcdFx0OiBlcnJvck9iai5tZXNzYWdlO1xuXHRcdFx0XHRcdExvZy5lcnJvcihzTXNnKTtcblx0XHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBzUHJvcGVydHlWYWx1ZTtcblx0fSxcblxuXHRkaXNwbGF5QWdncmVnYXRlRGV0YWlsczogYXN5bmMgZnVuY3Rpb24gKGV2ZW50OiBFdmVudCwgYWdncmVnYXRlZFByb3BlcnR5UGF0aD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICghYWdncmVnYXRlZFByb3BlcnR5UGF0aCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBsaW5rID0gZXZlbnQuZ2V0U291cmNlPExpbms+KCk7XG5cdFx0Y29uc3QgYW5hbHl0aWNhbFRhYmxlID0gRlBNSGVscGVyLmdldE1kY1RhYmxlKGxpbmspITtcblxuXHRcdGNvbnN0IHBvcG92ZXJJZCA9IGAke2FuYWx5dGljYWxUYWJsZS5nZXRJZCgpfS1tdWx0aVVuaXRQb3BvdmVyYDtcblx0XHRpZiAoYW5hbHl0aWNhbFRhYmxlLmdldERlcGVuZGVudHMoKS5zb21lKChkZXBlbmRlbnQpID0+IGRlcGVuZGVudC5nZXRJZCgpID09PSBwb3BvdmVySWQpKSB7XG5cdFx0XHQvLyBQb3BvdmVyIGlzIGFscmVhZHkgb3BlbiBmb3IgdGhlIHNhbWUgbGluayAob3RoZXJ3aXNlIHRoZSBkZXBlbmRlbnQgd291bGQgaGF2ZSBiZWVuIHJlbW92ZWQgYW5kIGRlc3Ryb3llZCBvbiBjbG9zZSlcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCByb3dDb250ZXh0ID0gbGluay5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0Y29uc3QgdGFibGVSb3dCaW5kaW5nID0gcm93Q29udGV4dC5nZXRCaW5kaW5nKCkgYXMgT0RhdGFMaXN0QmluZGluZztcblxuXHRcdC8vIEdldCB0aGUgZmlsdGVycyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0b3RhbCByb3dcblx0XHRjb25zdCByb3dDb250ZXh0RGF0YSA9IHJvd0NvbnRleHQuZ2V0T2JqZWN0KCk7XG5cdFx0Y29uc3Qgcm93U3BlY2lmaWNGaWx0ZXI6IEZpbHRlcltdID0gW107XG5cdFx0Y29uc3Qgcm93RmlsdGVyID0gcm93Q29udGV4dC5nZXRGaWx0ZXIoKTtcblx0XHRpZiAocm93RmlsdGVyKSB7XG5cdFx0XHRyb3dTcGVjaWZpY0ZpbHRlci5wdXNoKHJvd0ZpbHRlcik7XG5cdFx0fVxuXG5cdFx0Ly8gQWRkIHRoZSBmaWx0ZXJzIGFwcGxpZWQgdG8gdGhlIG9yaWdpbmFsIHRhYmxlXG5cdFx0Y29uc3QgYWxsRmlsdGVycyA9IHJvd1NwZWNpZmljRmlsdGVyLmNvbmNhdCh0YWJsZVJvd0JpbmRpbmcuZ2V0RmlsdGVycyhcIkFwcGxpY2F0aW9uXCIpLCB0YWJsZVJvd0JpbmRpbmcuZ2V0RmlsdGVycyhcIkNvbnRyb2xcIikpO1xuXG5cdFx0Ly8gQ2FsY3VsYXRlICQkYWdncmVnYXRpb24gcGFyYW1ldGVycyBmb3IgdGhlIHRhYmxlIGluIHRoZSBwb3BvdmVyIChhZ2dyZWdhdGUgYW1vdW50LCBncm91cCBieSBjdXJyZW5jeS91bml0KVxuXHRcdGNvbnN0IGFnZ3JlZ2F0aW9uID0gdGFibGVSb3dCaW5kaW5nLmdldEFnZ3JlZ2F0aW9uKCkgYXMge1xuXHRcdFx0Z3JvdXA6IFJlY29yZDxzdHJpbmcsIG9iamVjdD47XG5cdFx0XHRhZ2dyZWdhdGU6IFJlY29yZDxzdHJpbmcsIHsgdW5pdDogc3RyaW5nIH0+O1xuXHRcdFx0c2VhcmNoPzogc3RyaW5nO1xuXHRcdH07XG5cdFx0Y29uc3QgdW5pdE9yQ3VycmVuY3lOYW1lID0gYWdncmVnYXRpb24uYWdncmVnYXRlW2FnZ3JlZ2F0ZWRQcm9wZXJ0eVBhdGhdLnVuaXQ7XG5cdFx0Y29uc3QgZ3JvdXA6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4gPSB7fTtcblx0XHRncm91cFt1bml0T3JDdXJyZW5jeU5hbWVdID0ge307XG5cdFx0Y29uc3QgYWdncmVnYXRlOiBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+ID0ge307XG5cdFx0YWdncmVnYXRlW2FnZ3JlZ2F0ZWRQcm9wZXJ0eVBhdGhdID0geyBncmFuZFRvdGFsOiBmYWxzZSwgc3VidG90YWxzOiBmYWxzZSwgdW5pdDogdW5pdE9yQ3VycmVuY3lOYW1lIH07XG5cblx0XHQvLyBUaGUgaXRlbSBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlIGluIHRoZSBwb3BvdmVyIGlzIGEgY29weSBvZiB0aGUgaXRlbSBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlXG5cdFx0Y29uc3QgdGFibGVJdGVtID0gbGluay5nZXREZXBlbmRlbnRzKClbMF0uY2xvbmUoKTtcblx0XHRjb25zdCBjdXJyZW5jeU9yUXVhbnRpdHlFbmFibGVkTGF5b3V0ID0gbmV3IEhCb3goe1xuXHRcdFx0cmVuZGVyVHlwZTogXCJCYXJlXCIsXG5cdFx0XHRqdXN0aWZ5Q29udGVudDogXCJFbmRcIixcblx0XHRcdGl0ZW1zOiBbdGFibGVJdGVtXVxuXHRcdH0gYXMgJEhCb3hTZXR0aW5ncyk7XG5cblx0XHRjb25zdCBhZ2dyZWdhdGlvblBhcmFtZXRlcnM6IHtcblx0XHRcdGdyb3VwOiBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+O1xuXHRcdFx0YWdncmVnYXRlOiBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+O1xuXHRcdFx0c2VhcmNoPzogc3RyaW5nO1xuXHRcdH0gPSB7IGdyb3VwLCBhZ2dyZWdhdGUgfTtcblx0XHRpZiAoYWdncmVnYXRpb24uc2VhcmNoKSB7XG5cdFx0XHRhZ2dyZWdhdGlvblBhcmFtZXRlcnMuc2VhcmNoID0gYWdncmVnYXRpb24uc2VhcmNoO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9JdGVtc0JpbmRpbmdJbmZvID0ge1xuXHRcdFx0cGF0aDogdGFibGVSb3dCaW5kaW5nLmdldFJlc29sdmVkUGF0aCgpLFxuXHRcdFx0ZmlsdGVyczogYWxsRmlsdGVycyxcblx0XHRcdHBhcmFtZXRlcnM6IHtcblx0XHRcdFx0JCRhZ2dyZWdhdGlvbjogYWdncmVnYXRpb25QYXJhbWV0ZXJzXG5cdFx0XHR9LFxuXHRcdFx0c29ydGVyOiBuZXcgU29ydGVyKHVuaXRPckN1cnJlbmN5TmFtZSwgZmFsc2UpIC8vIE9yZGVyIGJ5IGN1cnJlbmN5XG5cdFx0fTtcblxuXHRcdGNvbnN0IGlzUG9wb3ZlckZvckdyYW5kVG90YWwgPSByb3dDb250ZXh0RGF0YVtcIkAkdWk1Lm5vZGUubGV2ZWxcIl0gPT09IDA7XG5cdFx0Y29uc3QgcG9wb3ZlcjogUmVzcG9uc2l2ZVBvcG92ZXIgPSBhd2FpdCBVdGlsLmNyZWF0ZU9yVXBkYXRlTXVsdGlVbml0UG9wb3Zlcihwb3BvdmVySWQsIHtcblx0XHRcdGNvbnRyb2w6IGFuYWx5dGljYWxUYWJsZSxcblx0XHRcdGdyYW5kVG90YWw6IGlzUG9wb3ZlckZvckdyYW5kVG90YWwsXG5cdFx0XHRpdGVtc0JpbmRpbmdJbmZvOiBvSXRlbXNCaW5kaW5nSW5mbyxcblx0XHRcdGxpc3RJdGVtQ29udGVudFRlbXBsYXRlOiBjdXJyZW5jeU9yUXVhbnRpdHlFbmFibGVkTGF5b3V0XG5cdFx0fSk7XG5cdFx0YW5hbHl0aWNhbFRhYmxlLmFkZERlcGVuZGVudChwb3BvdmVyKTtcblxuXHRcdGNvbnN0IGZuT25DbG9zZSA9ICgpOiB2b2lkID0+IHtcblx0XHRcdGFuYWx5dGljYWxUYWJsZS5yZW1vdmVEZXBlbmRlbnQocG9wb3Zlcik7XG5cdFx0XHRwb3BvdmVyLmRldGFjaEV2ZW50KFwiYWZ0ZXJDbG9zZVwiLCBmbk9uQ2xvc2UpO1xuXHRcdFx0cG9wb3Zlci5kZXN0cm95KCk7XG5cdFx0fTtcblx0XHRwb3BvdmVyLmF0dGFjaEV2ZW50KFwiYWZ0ZXJDbG9zZVwiLCBmbk9uQ2xvc2UpO1xuXHRcdHBvcG92ZXIub3BlbkJ5KGxpbmspO1xuXHR9XG59O1xuXG5PYmplY3RQYXRoLnNldChcInNhcC5mZS5tYWNyb3MuZmllbGQuRmllbGRSdW50aW1lXCIsIEZpZWxkUnVudGltZSk7XG5cbmV4cG9ydCBkZWZhdWx0IEZpZWxkUnVudGltZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztFQXdCQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLE1BQU1BLFlBQVksR0FBRztJQUNwQkMsY0FBYyxFQUFFLENBQUMsQ0FBNEQ7SUFDN0VDLG1CQUFtQixFQUFFLEtBQUs7SUFFMUI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLHVCQUF1QixFQUFFLFNBQUFBLENBQ3hCQyxhQUFxQixFQUNyQkMsNkJBQXFDLEVBQ3JDQyxjQUF3QixFQUN4QkMsY0FBd0IsRUFDeEJDLGFBQXVCLEVBQ2I7TUFDVixJQUFJRCxjQUFjLEtBQUtFLFNBQVMsSUFBSUgsY0FBYyxLQUFLRyxTQUFTLEtBQUssQ0FBQ0YsY0FBYyxJQUFJRCxjQUFjLENBQUMsSUFBSSxDQUFDRSxhQUFhLEVBQUU7UUFDMUgsT0FBT0osYUFBYSxLQUFLQyw2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
|
|
@@ -3,6 +3,7 @@ import ObjectPath from "sap/base/util/ObjectPath";
|
|
|
3
3
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
4
4
|
import FPMHelper from "sap/fe/core/helpers/FPMHelper";
|
|
5
5
|
import CommonHelper from "sap/fe/macros/CommonHelper";
|
|
6
|
+
import type { AnnotationValueListType } from "sap/fe/macros/internal/valuehelp/ValueListHelper";
|
|
6
7
|
import type { $HBoxSettings } from "sap/m/HBox";
|
|
7
8
|
import HBox from "sap/m/HBox";
|
|
8
9
|
import type Link from "sap/m/Link";
|
|
@@ -13,6 +14,7 @@ import type ManagedObject from "sap/ui/base/ManagedObject";
|
|
|
13
14
|
import type Control from "sap/ui/core/Control";
|
|
14
15
|
import type { Control$ValidateFieldGroupEvent } from "sap/ui/core/Control";
|
|
15
16
|
import Library from "sap/ui/core/Lib";
|
|
17
|
+
import type BaseContext from "sap/ui/model/Context";
|
|
16
18
|
import Filter from "sap/ui/model/Filter";
|
|
17
19
|
import Sorter from "sap/ui/model/Sorter";
|
|
18
20
|
import type Context from "sap/ui/model/odata/v4/Context";
|
|
@@ -72,6 +74,59 @@ const FieldRuntime = {
|
|
|
72
74
|
return sCurrentHash;
|
|
73
75
|
},
|
|
74
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Creates filters for ValueList requests based on ValueListParameterIn and ValueListParameterInOut annotations.
|
|
79
|
+
* @param valueListInfo The ValueList annotation information
|
|
80
|
+
* @param propertyId The ID property of the IdAndDesciption of the text arrangement annotation
|
|
81
|
+
* @param propertyValue The value for the propertyId property
|
|
82
|
+
* @param bindingContext The binding context to get values from
|
|
83
|
+
* @returns Array of filters for the ValueList request
|
|
84
|
+
*/
|
|
85
|
+
createValueListFilters: function (
|
|
86
|
+
valueListInfo: AnnotationValueListType,
|
|
87
|
+
propertyId: string,
|
|
88
|
+
propertyValue: string,
|
|
89
|
+
bindingContext: BaseContext | null | undefined
|
|
90
|
+
): Filter[] {
|
|
91
|
+
// Start with the key filter
|
|
92
|
+
const filters: Filter[] = [
|
|
93
|
+
new Filter({
|
|
94
|
+
path: propertyId,
|
|
95
|
+
operator: "EQ",
|
|
96
|
+
value1: propertyValue
|
|
97
|
+
})
|
|
98
|
+
];
|
|
99
|
+
|
|
100
|
+
if (bindingContext && valueListInfo.Parameters) {
|
|
101
|
+
const relevantParameters = valueListInfo.Parameters.filter((parameter) => {
|
|
102
|
+
const isInOrInOut =
|
|
103
|
+
parameter.$Type === "com.sap.vocabularies.Common.v1.ValueListParameterIn" ||
|
|
104
|
+
parameter.$Type === "com.sap.vocabularies.Common.v1.ValueListParameterInOut";
|
|
105
|
+
return (
|
|
106
|
+
isInOrInOut &&
|
|
107
|
+
parameter.LocalDataProperty?.$PropertyPath &&
|
|
108
|
+
parameter.ValueListProperty &&
|
|
109
|
+
parameter.ValueListProperty !== propertyId
|
|
110
|
+
);
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
relevantParameters.forEach((parameter) => {
|
|
114
|
+
const localValue = bindingContext.getProperty(parameter.LocalDataProperty!.$PropertyPath);
|
|
115
|
+
if (localValue !== undefined && localValue !== null && localValue !== "") {
|
|
116
|
+
filters.push(
|
|
117
|
+
new Filter({
|
|
118
|
+
path: parameter.ValueListProperty,
|
|
119
|
+
operator: "EQ",
|
|
120
|
+
value1: localValue
|
|
121
|
+
})
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return filters;
|
|
128
|
+
},
|
|
129
|
+
|
|
75
130
|
/**
|
|
76
131
|
* Method to retrieve text from the value list for DataField.
|
|
77
132
|
* This is a formatter in disguise.
|
|
@@ -92,6 +147,7 @@ const FieldRuntime = {
|
|
|
92
147
|
if (sPropertyValue) {
|
|
93
148
|
oMetaModel = (this.getModel()?.getMetaModel() as ODataMetaModel) || CommonHelper.getMetaModel();
|
|
94
149
|
sPropertyName = oMetaModel.getObject(`${sPropertyFullPath}@sapui.name`);
|
|
150
|
+
const bindingContext = this.getBindingContext();
|
|
95
151
|
return oMetaModel
|
|
96
152
|
.requestValueListInfo(sPropertyFullPath, true)
|
|
97
153
|
.then(function (mValueListInfo) {
|
|
@@ -113,15 +169,17 @@ const FieldRuntime = {
|
|
|
113
169
|
|
|
114
170
|
if (oTextAnnotation && oTextAnnotation.$Path) {
|
|
115
171
|
sTextProperty = oTextAnnotation.$Path;
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
172
|
+
|
|
173
|
+
const filters = FieldRuntime.createValueListFilters(
|
|
174
|
+
oValueListInfo,
|
|
175
|
+
oParamWithKey.ValueListProperty,
|
|
176
|
+
sPropertyValue,
|
|
177
|
+
bindingContext
|
|
178
|
+
);
|
|
179
|
+
const listBinding = oValueListModel.bindList(`/${oValueListInfo.CollectionPath}`, undefined, undefined, filters, {
|
|
122
180
|
$select: sTextProperty
|
|
123
181
|
});
|
|
124
|
-
return
|
|
182
|
+
return listBinding.requestContexts(0, 2);
|
|
125
183
|
} else {
|
|
126
184
|
sDisplayFormat = "Value";
|
|
127
185
|
return sPropertyValue;
|
|
@@ -168,6 +226,12 @@ const FieldRuntime = {
|
|
|
168
226
|
const link = event.getSource<Link>();
|
|
169
227
|
const analyticalTable = FPMHelper.getMdcTable(link)!;
|
|
170
228
|
|
|
229
|
+
const popoverId = `${analyticalTable.getId()}-multiUnitPopover`;
|
|
230
|
+
if (analyticalTable.getDependents().some((dependent) => dependent.getId() === popoverId)) {
|
|
231
|
+
// Popover is already open for the same link (otherwise the dependent would have been removed and destroyed on close)
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
|
|
171
235
|
const rowContext = link.getBindingContext() as Context;
|
|
172
236
|
const tableRowBinding = rowContext.getBinding() as ODataListBinding;
|
|
173
237
|
|
|
@@ -221,7 +285,7 @@ const FieldRuntime = {
|
|
|
221
285
|
};
|
|
222
286
|
|
|
223
287
|
const isPopoverForGrandTotal = rowContextData["@$ui5.node.level"] === 0;
|
|
224
|
-
const popover: ResponsivePopover = await Util.createOrUpdateMultiUnitPopover(
|
|
288
|
+
const popover: ResponsivePopover = await Util.createOrUpdateMultiUnitPopover(popoverId, {
|
|
225
289
|
control: analyticalTable,
|
|
226
290
|
grandTotal: isPopoverForGrandTotal,
|
|
227
291
|
itemsBindingInfo: oItemsBindingInfo,
|