@sapui5/sap.fe.core 1.95.0 → 1.98.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 +5 -5
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AnnotationHelper.js +3 -3
- package/src/sap/fe/core/AppComponent.js +9 -44
- package/src/sap/fe/core/AppStateHandler.js +2 -2
- 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 +129 -219
- package/src/sap/fe/core/ExtensionAPI.js +14 -6
- package/src/sap/fe/core/PageController.js +9 -35
- package/src/sap/fe/core/RouterProxy.js +79 -75
- package/src/sap/fe/core/Synchronization.js +1 -1
- package/src/sap/fe/core/TemplateComponent.js +16 -7
- package/src/sap/fe/core/TemplateModel.js +1 -1
- package/src/sap/fe/core/TransactionHelper.js +183 -65
- package/src/sap/fe/core/actions/draft.js +50 -23
- package/src/sap/fe/core/actions/messageHandling.js +86 -7
- package/src/sap/fe/core/actions/nonDraft.js +1 -1
- package/src/sap/fe/core/actions/operations.js +75 -33
- 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 +276 -122
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +14 -6
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +90 -46
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +234 -232
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +539 -209
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +550 -213
- package/src/sap/fe/core/controllerextensions/MassEdit.js +79 -0
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +227 -103
- package/src/sap/fe/core/controllerextensions/PageReady.js +2 -2
- package/src/sap/fe/core/controllerextensions/PageReady.ts +3 -7
- package/src/sap/fe/core/controllerextensions/Paginator.js +38 -12
- package/src/sap/fe/core/controllerextensions/Placeholder.js +16 -19
- package/src/sap/fe/core/controllerextensions/Routing.js +17 -2
- 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 +8 -9
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +19 -17
- package/src/sap/fe/core/controllerextensions/ViewState.js +54 -9
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +40 -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 +110 -109
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +7 -4
- package/src/sap/fe/core/controls/FieldWrapper.js +10 -4
- package/src/sap/fe/core/controls/FilterBar.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -6
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +45 -0
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +1 -1
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +1 -1
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +106 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +78 -0
- package/src/sap/fe/core/converters/ConverterContext.js +13 -1
- package/src/sap/fe/core/converters/ConverterContext.ts +10 -0
- package/src/sap/fe/core/converters/ManifestSettings.js +2 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +7 -1
- package/src/sap/fe/core/converters/ManifestWrapper.js +18 -7
- package/src/sap/fe/core/converters/ManifestWrapper.ts +15 -6
- package/src/sap/fe/core/converters/MetaModelConverter.js +920 -882
- package/src/sap/fe/core/converters/MetaModelConverter.ts +829 -853
- package/src/sap/fe/core/converters/annotations/DataField.js +54 -4
- package/src/sap/fe/core/converters/annotations/DataField.ts +53 -3
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +83 -48
- package/src/sap/fe/core/converters/controls/Common/Action.js +15 -3
- package/src/sap/fe/core/converters/controls/Common/Action.ts +12 -3
- package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -3
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +0 -2
- package/src/sap/fe/core/converters/controls/Common/Form.js +68 -21
- package/src/sap/fe/core/converters/controls/Common/Form.ts +60 -16
- package/src/sap/fe/core/converters/controls/Common/KPI.js +331 -248
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +355 -287
- package/src/sap/fe/core/converters/controls/Common/Table.js +426 -332
- package/src/sap/fe/core/converters/controls/Common/Table.ts +516 -383
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +468 -0
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +609 -0
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +30 -13
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +31 -12
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +2 -2
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +1 -1
- 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 +8 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +9 -1
- 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 +9 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +6 -2
- package/src/sap/fe/core/converters/helpers/IssueManager.js +7 -5
- package/src/sap/fe/core/converters/helpers/IssueManager.ts +6 -4
- 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 +34 -4
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +36 -7
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +2 -5
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +1 -2
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +11 -2
- 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/formatters/TableFormatter.js +27 -4
- package/src/sap/fe/core/formatters/TableFormatter.ts +20 -3
- package/src/sap/fe/core/formatters/ValueFormatter.js +30 -5
- package/src/sap/fe/core/formatters/ValueFormatter.ts +25 -3
- package/src/sap/fe/core/fpm/Component.js +2 -2
- package/src/sap/fe/core/helpers/AppStartupHelper.js +359 -0
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +388 -0
- package/src/sap/fe/core/helpers/BindingExpression.js +199 -111
- package/src/sap/fe/core/helpers/BindingExpression.ts +193 -102
- 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/KeepAliveHelper.js +211 -0
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +202 -0
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +32 -0
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.ts +36 -0
- package/src/sap/fe/core/helpers/MassEditHelper.js +678 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +64 -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 +1 -1
- 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 +28 -2
- package/src/sap/fe/core/library.support.js +10 -4
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +62 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +66 -0
- package/src/sap/fe/core/messagebundle.properties +67 -3
- package/src/sap/fe/core/messagebundle_ar.properties +40 -3
- package/src/sap/fe/core/messagebundle_bg.properties +40 -3
- package/src/sap/fe/core/messagebundle_ca.properties +41 -4
- package/src/sap/fe/core/messagebundle_cs.properties +41 -4
- package/src/sap/fe/core/messagebundle_cy.properties +40 -3
- package/src/sap/fe/core/messagebundle_da.properties +40 -3
- package/src/sap/fe/core/messagebundle_de.properties +40 -3
- package/src/sap/fe/core/messagebundle_el.properties +40 -3
- package/src/sap/fe/core/messagebundle_en.properties +37 -0
- package/src/sap/fe/core/messagebundle_en_GB.properties +37 -0
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +37 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +46 -2
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +44 -0
- package/src/sap/fe/core/messagebundle_es.properties +40 -3
- package/src/sap/fe/core/messagebundle_es_MX.properties +41 -4
- package/src/sap/fe/core/messagebundle_et.properties +40 -3
- package/src/sap/fe/core/messagebundle_fi.properties +40 -3
- package/src/sap/fe/core/messagebundle_fr.properties +41 -4
- package/src/sap/fe/core/messagebundle_fr_CA.properties +40 -3
- package/src/sap/fe/core/messagebundle_hi.properties +40 -3
- package/src/sap/fe/core/messagebundle_hr.properties +40 -3
- package/src/sap/fe/core/messagebundle_hu.properties +41 -4
- package/src/sap/fe/core/messagebundle_id.properties +42 -5
- package/src/sap/fe/core/messagebundle_it.properties +40 -3
- package/src/sap/fe/core/messagebundle_iw.properties +40 -3
- package/src/sap/fe/core/messagebundle_ja.properties +49 -12
- package/src/sap/fe/core/messagebundle_kk.properties +40 -3
- package/src/sap/fe/core/messagebundle_ko.properties +40 -3
- package/src/sap/fe/core/messagebundle_lt.properties +40 -3
- package/src/sap/fe/core/messagebundle_lv.properties +40 -3
- package/src/sap/fe/core/messagebundle_ms.properties +40 -3
- package/src/sap/fe/core/messagebundle_nl.properties +40 -3
- package/src/sap/fe/core/messagebundle_no.properties +40 -3
- package/src/sap/fe/core/messagebundle_pl.properties +40 -3
- package/src/sap/fe/core/messagebundle_pt.properties +42 -5
- package/src/sap/fe/core/messagebundle_pt_PT.properties +40 -3
- package/src/sap/fe/core/messagebundle_ro.properties +40 -3
- package/src/sap/fe/core/messagebundle_ru.properties +40 -3
- package/src/sap/fe/core/messagebundle_sh.properties +40 -3
- package/src/sap/fe/core/messagebundle_sk.properties +40 -3
- package/src/sap/fe/core/messagebundle_sl.properties +40 -3
- package/src/sap/fe/core/messagebundle_sv.properties +41 -4
- package/src/sap/fe/core/messagebundle_th.properties +40 -3
- package/src/sap/fe/core/messagebundle_tr.properties +40 -3
- package/src/sap/fe/core/messagebundle_uk.properties +40 -3
- package/src/sap/fe/core/messagebundle_vi.properties +40 -3
- package/src/sap/fe/core/messagebundle_zh_CN.properties +40 -3
- package/src/sap/fe/core/messagebundle_zh_TW.properties +40 -3
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +4 -3
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -0
- 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 +98 -328
- package/src/sap/fe/core/services/ShellServicesFactory.js +31 -2
- package/src/sap/fe/core/services/ShellServicesFactory.ts +30 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +8 -5
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +11 -6
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +14 -5
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +38 -0
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +18 -0
- package/src/sap/fe/core/templating/DataModelPathHelper.js +8 -37
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +13 -33
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +114 -0
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +86 -0
- package/src/sap/fe/core/templating/EntitySetHelper.js +86 -3
- package/src/sap/fe/core/templating/EntitySetHelper.ts +44 -0
- package/src/sap/fe/core/templating/FilterHelper.js +10 -7
- package/src/sap/fe/core/templating/FilterHelper.ts +8 -6
- package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
- package/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js +47 -107
- package/src/sap/fe/core/templating/UIFormatters.ts +76 -72
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* SAPUI5
|
|
3
|
-
* (c) Copyright 2009-
|
|
3
|
+
* (c) Copyright 2009-2022 SAP SE. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
sap.ui.define([], function() {
|
|
6
6
|
"use strict";
|
|
@@ -110,6 +110,18 @@ sap.ui.define([], function() {
|
|
|
110
110
|
);
|
|
111
111
|
},
|
|
112
112
|
|
|
113
|
+
/**
|
|
114
|
+
* Gets the path for the items property of MultiValueField parameters.
|
|
115
|
+
*
|
|
116
|
+
* @function
|
|
117
|
+
* @name getActionParameterItemsModelPath
|
|
118
|
+
* @param {object} oParameter Action Parameter
|
|
119
|
+
* @returns {string} Returns the complete model path for the items property of MultiValueField parameters
|
|
120
|
+
*/
|
|
121
|
+
getActionParameterItemsModelPath: function(oParameter) {
|
|
122
|
+
return oParameter && oParameter.$Name ? "{path: 'mvfview>/" + oParameter.$Name + "'}" : undefined;
|
|
123
|
+
},
|
|
124
|
+
|
|
113
125
|
filterOutNavPropBinding: function(sPathPart) {
|
|
114
126
|
return sPathPart !== "" && sPathPart !== "$NavigationPropertyBinding";
|
|
115
127
|
},
|
|
@@ -158,6 +170,57 @@ sap.ui.define([], function() {
|
|
|
158
170
|
var aFilterFunctions = oMetaModel.getObject("/@Org.OData.Capabilities.V1.FilterFunctions");
|
|
159
171
|
// Get filter functions defined at EntityContainer and check for existence of 'tolower'
|
|
160
172
|
return aFilterFunctions ? aFilterFunctions.indexOf("tolower") === -1 : true;
|
|
173
|
+
},
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Get MetaPath for the context.
|
|
177
|
+
*
|
|
178
|
+
* @param {Context} oContext Context to be used
|
|
179
|
+
* @returns {string | undefined} Returns meta path for the context.
|
|
180
|
+
*/
|
|
181
|
+
getMetaPathForContext: function(oContext) {
|
|
182
|
+
var oModel = oContext.getModel(),
|
|
183
|
+
oMetaModel = oModel.getMetaModel(),
|
|
184
|
+
sPath = oContext.getPath();
|
|
185
|
+
return oMetaModel && sPath && oMetaModel.getMetaPath(sPath);
|
|
186
|
+
},
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Get MetaPath for the listbinding.
|
|
190
|
+
*
|
|
191
|
+
* @param {View} oView View of the control using listBinding
|
|
192
|
+
* @param {ODataListBinding | string} vListBinding ODataListBinding object or the binding path for a temporary list binding
|
|
193
|
+
* @returns {string | undefined} Returns meta path for the listbinding.
|
|
194
|
+
*/
|
|
195
|
+
getAbsoluteMetaPathForListBinding: function(oView, vListBinding) {
|
|
196
|
+
var oMetaModel = oView.getModel().getMetaModel();
|
|
197
|
+
var sMetaPath;
|
|
198
|
+
|
|
199
|
+
if (typeof vListBinding === "string") {
|
|
200
|
+
if (vListBinding.startsWith("/")) {
|
|
201
|
+
// absolute path
|
|
202
|
+
sMetaPath = oMetaModel.getMetaPath(vListBinding);
|
|
203
|
+
} else {
|
|
204
|
+
// relative path
|
|
205
|
+
var oBindingContext = oView.getBindingContext();
|
|
206
|
+
var sRootContextPath = oBindingContext.getPath();
|
|
207
|
+
sMetaPath = oMetaModel.getMetaPath(sRootContextPath + "/" + vListBinding);
|
|
208
|
+
}
|
|
209
|
+
} else {
|
|
210
|
+
// we already get a list binding use this one
|
|
211
|
+
var oBinding = vListBinding;
|
|
212
|
+
var oRootBinding = oBinding.getRootBinding();
|
|
213
|
+
if (oBinding === oRootBinding) {
|
|
214
|
+
// absolute path
|
|
215
|
+
sMetaPath = oMetaModel.getMetaPath(oBinding.getPath());
|
|
216
|
+
} else {
|
|
217
|
+
// relative path
|
|
218
|
+
var sRootBindingPath = oRootBinding.getPath();
|
|
219
|
+
var sRelativePath = oBinding.getPath();
|
|
220
|
+
sMetaPath = oMetaModel.getMetaPath(sRootBindingPath + "/" + sRelativePath);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return sMetaPath;
|
|
161
224
|
}
|
|
162
225
|
};
|
|
163
226
|
return ModelHelper;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* SAPUI5
|
|
3
|
-
* (c) Copyright 2009-
|
|
3
|
+
* (c) Copyright 2009-2022 SAP SE. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
sap.ui.define(["sap/ui/core/util/PasteHelper", "sap/m/MessageBox"], function(CorePasteHelper, MessageBox) {
|
|
@@ -74,6 +74,12 @@ sap.ui.define(["sap/ui/core/util/PasteHelper", "sap/m/MessageBox"], function(Cor
|
|
|
74
74
|
};
|
|
75
75
|
|
|
76
76
|
var oPasteHelper = {
|
|
77
|
+
/**
|
|
78
|
+
*
|
|
79
|
+
* @param aRawData
|
|
80
|
+
* @param oTable
|
|
81
|
+
* @returns {Promise<any>}
|
|
82
|
+
*/
|
|
77
83
|
parseDataForTablePaste: function(aRawData, oTable) {
|
|
78
84
|
return _getColumnInfoForPaste(oTable).then(function(oPasteInfos) {
|
|
79
85
|
// Check if we have data for at least the first editable column
|
|
@@ -9,7 +9,7 @@ sap.ui.define([], function () {
|
|
|
9
9
|
|
|
10
10
|
/*!
|
|
11
11
|
* SAPUI5
|
|
12
|
-
* (c) Copyright 2009-
|
|
12
|
+
* (c) Copyright 2009-2022 SAP SE. All rights reserved.
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
15
|
/**
|
|
@@ -265,4 +265,4 @@ sap.ui.define([], function () {
|
|
|
265
265
|
_exports.prepareId = prepareId;
|
|
266
266
|
return _exports;
|
|
267
267
|
}, false);
|
|
268
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN0YWJsZUlkSGVscGVyLnRzIl0sIm5hbWVzIjpbImlzVmFsaWQiLCJ2VmFsdWUiLCJ0ZXN0IiwicmVwbGFjZVNwZWNpYWxDaGFycyIsInNJZCIsImluZGV4T2YiLCJyZXBsYWNlIiwic2xpY2UiLCJyZW1vdmVOYW1lc3BhY2VzIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlIiwib1ZhbHVlIiwiJFBhdGgiLCJwYXRoIiwiJEFwcGx5IiwiJEZ1bmN0aW9uIiwic1BhdGhDb25jYXQiLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGUiLCJhU3RhYmxlSWRQYXJ0cyIsInNTdGFibGVJZCIsInZFbGVtZW50Iiwic0ZhY2V0SWQiLCJGYWNldCIsIiRUeXBlIiwiSUQiLCJUYXJnZXQiLCIkQW5ub3RhdGlvblBhdGgiLCJ2YWx1ZSIsIkZhY2V0U291cmNlIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCIsInByZXBhcmVJZCIsImdldFN0YWJsZUlkUGFydEZyb21TZW1hbnRpY09iamVjdEFuZEFjdGlvbiIsIm9EYXRhRmllbGQiLCJzSWRQYXJ0IiwiU2VtYW50aWNPYmplY3QiLCJBY3Rpb24iLCJtUGFyYW1ldGVyIiwiVmFsdWUiLCJjb250ZXh0IiwiZ2V0T2JqZWN0IiwidG9TdHJpbmciLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQUZBO0FBQ0E7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBU0EsT0FBVCxDQUFpQkMsTUFBakIsRUFBaUM7QUFDaEMsV0FBTyxnQ0FBZ0NDLElBQWhDLENBQXFDRCxNQUFyQyxDQUFQO0FBQ0E7O0FBRU0sV0FBU0UsbUJBQVQsQ0FBNkJDLEdBQTdCLEVBQTBDO0FBQ2hELFFBQUlBLEdBQUcsQ0FBQ0MsT0FBSixDQUFZLEdBQVosS0FBb0IsQ0FBeEIsRUFBMkI7QUFDMUI7QUFDQSxZQUFNRCxHQUFHLEdBQUcsd0NBQVo7QUFDQTs7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QUFQO0FBQ0EsS0FGRCxNQUVPO0FBQ047QUFDQSxZQUFNQSxHQUFHLEdBQUcsc0VBQVo7QUFDQTtBQUNELEdBUk0iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogJHtjb3B5cmlnaHR9XG4gKi9cblxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCJzYXAvdWkvbW9kZWxcIjtcblxuLyoqXG4gKiBTdGFibGUgSWQgaGVscGVyXG4gKi9cblxuLyoqXG4gKiBDb3B5IGZvciB0aGUgQ29yZS5pc1ZhbGlkIGZ1bmN0aW9uIHRvIGJlIGluZGVwZW5kZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2VmFsdWUgU3RyaW5nIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgdmFsdWUgaXMgdmFsaWQgb3Igbm90XG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWQodlZhbHVlOiBzdHJpbmcpIHtcblx0cmV0dXJuIC9eKFtBLVphLXpfXVstQS1aYS16MC05Xy46XSopJC8udGVzdCh2VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVNwZWNpYWxDaGFycyhzSWQ6IHN0cmluZykge1xuXHRpZiAoc0lkLmluZGV4T2YoXCIgXCIpID49IDApIHtcblx0XHQvLyBMb2cuZXJyb3Ioc0lkICsgXCIgLSBTcGFjZXMgYXJlIG5vdCBhbGxvd2VkIGluIElEIHBhcnRzLlwiKTtcblx0XHR0aHJvdyBzSWQgKyBcIiAtIFNwYWNlcyBhcmUgbm90IGFsbG93ZWQgaW4gSUQgcGFydHMuXCI7XG5cdH1cblx0c0lkID0gc0lkXG5cdFx0LnJlcGxhY2UoL15cXC98XkB8XiN8XlxcKi8sIFwiXCIpIC8vIHJlbW92ZSBzcGVjaWFsIGNoYXJhY3RlcnMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmdcblx0XHQucmVwbGFjZSgvXFwvJHxAJHwjJHxcXCokLywgXCJcIikgLy8gcmVtb3ZlIHNwZWNpYWwgY2hhcmFjdGVycyBmcm9tIHRoZSBlbmQgb2YgdGhlIHN0cmluZ1xuXHRcdC5yZXBsYWNlKC9cXC98QHxcXCh8XFwpfCN8XFwqL2csIFwiOjpcIik7IC8vIHJlcGxhY2Ugc3BlY2lhbCBjaGFyYWN0ZXJzIHdpdGggOjpcblxuXHQvLyBSZXBsYWNlIGRvdWJsZSBvY2N1cnJlbmNlcyBvZiB0aGUgc2VwYXJhdG9yIHdpdGggYSBzaW5nbGUgc2VwYXJhdG9yXG5cdHdoaWxlIChzSWQuaW5kZXhPZihcIjo6OjpcIikgPiAtMSkge1xuXHRcdHNJZCA9IHNJZC5yZXBsYWNlKFwiOjo6OlwiLCBcIjo6XCIpO1xuXHR9XG5cblx0Ly8gSWYgdGhlcmUgaXMgYSA6OiBhdCB0aGUgZW5kIG9mIHRoZSBJRCByZW1vdmUgaXRcblx0aWYgKHNJZC5zbGljZSgtMikgPT0gXCI6OlwiKSB7XG5cdFx0c0lkID0gc0lkLnNsaWNlKDAsIC0yKTtcblx0fVxuXG5cdHJldHVybiBzSWQ7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU5hbWVzcGFjZXMoc0lkOiBzdHJpbmcpIHtcblx0c0lkID0gc0lkLnJlcGxhY2UoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5cIiwgXCJcIik7XG5cdHNJZCA9IHNJZC5yZXBsYWNlKFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5cIiwgXCJcIik7XG5cdHJldHVybiBzSWQ7XG59XG5cbmZ1bmN0aW9uIGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvVmFsdWU6IGFueSkge1xuXHRpZiAoKG9WYWx1ZSAmJiBvVmFsdWUuJFBhdGgpIHx8IG9WYWx1ZS5wYXRoKSB7XG5cdFx0cmV0dXJuIG9WYWx1ZS4kUGF0aCB8fCBvVmFsdWUucGF0aDtcblx0fVxuXG5cdGlmIChvVmFsdWUgJiYgb1ZhbHVlLiRBcHBseSAmJiBvVmFsdWUuJEZ1bmN0aW9uID09PSBcIm9kYXRhLmNvbmNhdFwiKSB7XG5cdFx0bGV0IHNQYXRoQ29uY2F0ID0gXCJcIjtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG9WYWx1ZS4kQXBwbHkubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmIChvVmFsdWUuJEFwcGx5W2ldLiRQYXRoKSB7XG5cdFx0XHRcdGlmIChzUGF0aENvbmNhdCkge1xuXHRcdFx0XHRcdHNQYXRoQ29uY2F0ICs9IFwiOjpcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRzUGF0aENvbmNhdCArPSBvVmFsdWUuJEFwcGx5W2ldLiRQYXRoO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc1BhdGhDb25jYXQ7XG5cdH1cblxuXHRpZiAob1ZhbHVlKSB7XG5cdFx0cmV0dXJuIHJlcGxhY2VTcGVjaWFsQ2hhcnMob1ZhbHVlLnJlcGxhY2UoLyAvZywgXCJfXCIpKTtcblx0fVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBTdGFibGUgSWQgYmFzZWQgb24gdGhlIGdpdmVuIHBhcmFtZXRlcnNcbiAqXG4gKiBwYXJhbWV0ZXJzIGFyZSBjb21iaW5lZCBpbiB0aGUgc2FtZSBvcmRlciB0aGF0IHRoZXkgYXJlIHByb3ZpZGVkIGFuZCBhcmUgc2VwYXJhdGVkIGJ5ICc6OidcbiAqIHNwZWNpYWwgY2hhcmFjdGVycyAoQCwgLywgIykgYXJlIHJlcGxhY2VkIGJ5ICc6OicgaWYgdGhleSBhcmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgU3RhYmxlIElkIGFuZCByZW1vdmVkIGFsbCB0b2dldGhlciBpZiB0aGUgYXJlIHBhcnQgYXQgdGhlIGJlZ2lubmluZyBvciBlbmRcbiAqIEV4YW1wbGU6XG4gKiAvLyBHZXQgQ29uc3RhbnQgU3RhYmxlIElkXG4gKiBnZW5lcmF0ZShbJ1N0YWJsZScsICdJZCddKSB3b3VsZCByZXN1bHQgaW4gJ1N0YWJsZTo6SWQnIGFzIHRoZSBTdGFibGUgSWRcbiAqXG4gKiAvLyBHZXQgUGFyYW1lcnRlcml6ZWQgU3RhYmxlIElkIGZyb20gYSBDb2xsZWN0aW9uIEZhY2V0XG4gKiB2YXIgb1BhcmFtZXRlciA9IHtcbiAqIFx0XHRGYWNldDoge1xuICogXHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ29sbGVjdGlvbkZhY2V0XCIsXG4gKiBcdFx0XHRMYWJlbDogXCJHZW5lcmFsIEluZm8gRmFjZXQgTGFiZWxcIixcbiAqIFx0XHRcdElEOiAnR2VuZXJhbEluZm9ybWF0aW9uJ1xuICogXHRcdH1cbiAqIH07XG4gKiBnZW5lcmF0ZShbJ3NlY3Rpb24nLCBvUGFyYW1ldGVyXSkgd291bGQgcmVzdWx0IGluICdzZWN0aW9uOjpHZW5lcmFsSW5mb3JtYXRpb24nIGFzIHRoZSBTdGFibGUgSWRcbiAqXG4gKiBvUGFyYW1ldGVyIGlzIGFuZCBvYmplY3Qgb2YgTWV0YWRhdGEgY29udGV4dHMgYXZhaWxhYmxlIHdoaWxlIHRlbXBsYXRpbmcgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIFN0YWJsZSBJRHMuXG4gKiBvUGFyYW1ldGVyIG9iamVjdCBrZXlzIGRlZmluZSB0aGUgdHlwZSBvZiBtZXRhZGF0YSBjb250ZXh0LlxuICogRm9yIGV4YW1wbGUsIHRoZSBrZXkgJ0ZhY2V0J2luIHRoZSBhYm92ZSBleGFtcGxlIHRlbGxzIHRoZSBTdGFibGUgSWQgSGVscGVyIHRoYXQgdGhlIGNvbnRleHQgaXMgYSBGYWNldCAoY291bGQgYmUgcmVmZXJlbmNlIG9yIGNvbGxlY3Rpb24gZmFjZXQpXG4gKlxuICogQ3VycmVudGx5IHN1cHBvcnRlZCBtZXRhZGF0YSBjb250ZXh0IGlzIENvbGxlY3Rpb24vUmVmZXJlbmNlIGZhY2V0IGlkZW50aWZpZWQgYnkgJ0ZhY2V0JyBrZXkuXG4gKlxuICogQHBhcmFtIHtBcnJheTwoc3RyaW5nfG9iamVjdCk+fSBhU3RhYmxlSWRQYXJ0cyBBcnJheSBvZiBzdHJpbmdzIGFuZCBvYmplY3RzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBTdGFibGUgSWQgY29uc3RydWN0ZWQgZnJvbSB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgZ2VuZXJhdGUgPSBmdW5jdGlvbihhU3RhYmxlSWRQYXJ0czogQXJyYXk8c3RyaW5nIHwgb2JqZWN0Pikge1xuXHRsZXQgc1N0YWJsZUlkID0gXCJcIixcblx0XHR2RWxlbWVudDogYW55LFxuXHRcdHNGYWNldElkO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYVN0YWJsZUlkUGFydHMubGVuZ3RoOyBpKyspIHtcblx0XHR2RWxlbWVudCA9IGFTdGFibGVJZFBhcnRzW2ldO1xuXHRcdGlmICghdkVsZW1lbnQpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRzU3RhYmxlSWQgKz0gc1N0YWJsZUlkICE9PSBcIlwiID8gXCI6OlwiIDogXCJcIjtcblx0XHRpZiAodkVsZW1lbnRbXCJGYWNldFwiXSAmJiB2RWxlbWVudFtcIkZhY2V0XCJdW1wiJFR5cGVcIl0gJiYgdkVsZW1lbnRbXCJGYWNldFwiXVtcIiRUeXBlXCJdID09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ29sbGVjdGlvbkZhY2V0XCIpIHtcblx0XHRcdHNTdGFibGVJZCArPSB2RWxlbWVudFtcIkZhY2V0XCJdW1wiSURcIl07XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdkVsZW1lbnQgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGlmICh2RWxlbWVudCkge1xuXHRcdFx0XHRzU3RhYmxlSWQgKz0gdkVsZW1lbnQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdkVsZW1lbnQgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdC8vIGhhbmRsZSBwYXJhbWV0ZXJzXG5cdFx0XHRpZiAodkVsZW1lbnQgJiYgdkVsZW1lbnQuRmFjZXQpIHtcblx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LiRUeXBlICYmIHZFbGVtZW50LkZhY2V0LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbGxlY3Rpb25GYWNldFwiKSB7XG5cdFx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LklEKSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LklEO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICh2RWxlbWVudC5GYWNldC4kVHlwZSAmJiB2RWxlbWVudC5GYWNldC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWZlcmVuY2VGYWNldFwiKSB7XG5cdFx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LklEKSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LklEO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LlRhcmdldC4kQW5ub3RhdGlvblBhdGggfHwgdkVsZW1lbnQuRmFjZXQuVGFyZ2V0LnZhbHVlOyAvLyBDb21wbGlhbnQgd2l0aCBDb252ZXJ0ZXJzXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChzRmFjZXRJZCkge1xuXHRcdFx0XHRcdHNTdGFibGVJZCArPSBzRmFjZXRJZDtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmICh2RWxlbWVudCAmJiB2RWxlbWVudC5GYWNldFNvdXJjZSkge1xuXHRcdFx0XHRpZiAodkVsZW1lbnQuRmFjZXRTb3VyY2UgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVyRmFjZXRzXCIpIHtcblx0XHRcdFx0XHRzU3RhYmxlSWQgKz0gXCJIZWFkZXJGYWNldFwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAodkVsZW1lbnQgJiYgdkVsZW1lbnRbXCIkVHlwZVwiXSAmJiB2RWxlbWVudFtcIiRUeXBlXCJdLmluZGV4T2YoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIikgPiAtMSkge1xuXHRcdFx0XHRzU3RhYmxlSWQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCh2RWxlbWVudCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHNTdGFibGVJZCA9IHByZXBhcmVJZChzU3RhYmxlSWQpO1xuXHRyZXR1cm4gc1N0YWJsZUlkO1xufTtcbmV4cG9ydCBjb25zdCBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24gPSBmdW5jdGlvbihvRGF0YUZpZWxkOiBhbnkpOiBzdHJpbmcge1xuXHRsZXQgc0lkUGFydCA9IFwiXCI7XG5cdGlmICh0eXBlb2Ygb0RhdGFGaWVsZC5TZW1hbnRpY09iamVjdCA9PSBcInN0cmluZ1wiKSB7XG5cdFx0c0lkUGFydCArPSBvRGF0YUZpZWxkLlNlbWFudGljT2JqZWN0O1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuU2VtYW50aWNPYmplY3QuJFBhdGgpIHtcblx0XHRzSWRQYXJ0ICs9IG9EYXRhRmllbGQuU2VtYW50aWNPYmplY3QuJFBhdGg7XG5cdH1cblx0aWYgKHR5cGVvZiBvRGF0YUZpZWxkLkFjdGlvbiA9PSBcInN0cmluZ1wiKSB7XG5cdFx0c0lkUGFydCArPSBcIjo6XCIgKyBvRGF0YUZpZWxkLkFjdGlvbjtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLkFjdGlvbiAmJiBvRGF0YUZpZWxkLkFjdGlvbi4kUGF0aCkge1xuXHRcdHNJZFBhcnQgKz0gXCI6OlwiICsgb0RhdGFGaWVsZC5BY3Rpb24uJFBhdGg7XG5cdH1cblx0aWYgKG9EYXRhRmllbGRbXCJSZXF1aXJlc0NvbnRleHRcIl0gJiYgb0RhdGFGaWVsZFtcIlJlcXVpcmVzQ29udGV4dFwiXSA9PSB0cnVlKSB7XG5cdFx0c0lkUGFydCArPSBcIjo6UmVxdWlyZXNDb250ZXh0XCI7XG5cdH1cblx0cmV0dXJuIHNJZFBhcnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCA9IGZ1bmN0aW9uKG9EYXRhRmllbGQ6IGFueSwgbVBhcmFtZXRlcjogeyBjb250ZXh0PzogQ29udGV4dCB9ID0ge30pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRsZXQgc0lkUGFydCA9IFwiXCI7XG5cblx0aWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZEZvckFjdGlvbjo6XCI7XG5cdFx0c0lkUGFydCArPSBvRGF0YUZpZWxkLkFjdGlvbjtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24ob0RhdGFGaWVsZCk7XG5cdFx0cmV0dXJuIHNJZFBhcnQ7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFubm90YXRpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZEZvckFubm90YXRpb246OlwiO1xuXHRcdHNJZFBhcnQgKz0gcHJlcGFyZUlkKG9EYXRhRmllbGQuVGFyZ2V0LiRBbm5vdGF0aW9uUGF0aCB8fCBvRGF0YUZpZWxkLlRhcmdldC52YWx1ZSk7XG5cdFx0cmV0dXJuIHNJZFBhcnQ7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhBY3Rpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZFdpdGhBY3Rpb246OlwiO1xuXHRcdGlmIChvRGF0YUZpZWxkLlZhbHVlKSB7XG5cdFx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvRGF0YUZpZWxkLlZhbHVlKSArIFwiOjpcIjtcblx0XHR9XG5cdFx0c0lkUGFydCArPSBvRGF0YUZpZWxkLkFjdGlvbjtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZDo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tVmFsdWUob0RhdGFGaWVsZC5WYWx1ZSk7XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvblwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvbjo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tVmFsdWUob0RhdGFGaWVsZC5WYWx1ZSkgKyBcIjo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24ob0RhdGFGaWVsZCk7XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGg6OlwiO1xuXHRcdHNJZFBhcnQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9EYXRhRmllbGQuVmFsdWUpO1xuXHRcdGlmIChvRGF0YUZpZWxkLlRhcmdldCAmJiBvRGF0YUZpZWxkLlRhcmdldFtcIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCJdKSB7XG5cdFx0XHRzSWRQYXJ0ICs9IFwiOjpcIiArIG9EYXRhRmllbGQuVGFyZ2V0W1wiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIl07XG5cdFx0fVxuXHRcdHJldHVybiBwcmVwYXJlSWQoc0lkUGFydCk7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhVcmxcIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZFdpdGhVcmw6OlwiO1xuXHRcdHNJZFBhcnQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9EYXRhRmllbGQuVmFsdWUpO1xuXHRcdHJldHVybiBwcmVwYXJlSWQoc0lkUGFydCk7XG5cdH0gZWxzZSBpZiAobVBhcmFtZXRlciAmJiBtUGFyYW1ldGVyLmNvbnRleHQgJiYgbVBhcmFtZXRlci5jb250ZXh0LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpKSB7XG5cdFx0Ly8gdGhlIGNvbnRleHQgaXMgbm90IHJlZmVycmluZyB0byBkYSBkYXRhIGZpZWxkIGJ1dCBkaXJlY3RseSB0byBhIHByb3BlcnR5LCByZXR1cm4gdGhlIHByb3BlcnR5IG5hbWVcblx0XHRyZXR1cm4gcHJlcGFyZUlkKG1QYXJhbWV0ZXIuY29udGV4dC5nZXRPYmplY3QoXCJAc2FwdWkubmFtZVwiKS50b1N0cmluZygpKTtcblx0fSBlbHNlIHtcblx0XHQvLyBJbiBjYXNlIG9mIGEgc3RyaW5nIG9yIHVua25vd24gcHJvcGVydHlcblx0XHQvLyBMb2cuZXJyb3IoXCJTdGFibGUgSUQgSGVscGVyOiBVbmFibGUgdG8gY3JlYXRlIGEgc3RhYmxlIElELiBQbGVhc2UgY2hlY2sgdGhlIGFubm90YXRpb25zLlwiKTtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IHByZXBhcmVJZCA9IGZ1bmN0aW9uKHNJZDogc3RyaW5nKSB7XG5cdHNJZCA9IHJlcGxhY2VTcGVjaWFsQ2hhcnMocmVtb3ZlTmFtZXNwYWNlcyhzSWQpKTtcblx0aWYgKGlzVmFsaWQoc0lkKSkge1xuXHRcdHJldHVybiBzSWQ7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gTG9nLmVycm9yKHNJZCArIFwiIC0gU3RhYmxlIElkIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQgZHVlIHRvIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbi5cIik7XG5cdFx0dGhyb3cgc0lkICsgXCIgLSBTdGFibGUgSWQgY291bGQgbm90IGJlIGdlbmVyYXRlZCBkdWUgdG8gaW5zdWZmaWNpZW50IGluZm9ybWF0aW9uLlwiO1xuXHR9XG59O1xuIl19
|
|
268
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN0YWJsZUlkSGVscGVyLnRzIl0sIm5hbWVzIjpbImlzVmFsaWQiLCJ2VmFsdWUiLCJ0ZXN0IiwicmVwbGFjZVNwZWNpYWxDaGFycyIsInNJZCIsImluZGV4T2YiLCJyZXBsYWNlIiwic2xpY2UiLCJyZW1vdmVOYW1lc3BhY2VzIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlIiwib1ZhbHVlIiwiJFBhdGgiLCJwYXRoIiwiJEFwcGx5IiwiJEZ1bmN0aW9uIiwic1BhdGhDb25jYXQiLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGUiLCJhU3RhYmxlSWRQYXJ0cyIsInNTdGFibGVJZCIsInZFbGVtZW50Iiwic0ZhY2V0SWQiLCJGYWNldCIsIiRUeXBlIiwiSUQiLCJUYXJnZXQiLCIkQW5ub3RhdGlvblBhdGgiLCJ2YWx1ZSIsIkZhY2V0U291cmNlIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCIsInByZXBhcmVJZCIsImdldFN0YWJsZUlkUGFydEZyb21TZW1hbnRpY09iamVjdEFuZEFjdGlvbiIsIm9EYXRhRmllbGQiLCJzSWRQYXJ0IiwiU2VtYW50aWNPYmplY3QiLCJBY3Rpb24iLCJtUGFyYW1ldGVyIiwiVmFsdWUiLCJjb250ZXh0IiwiZ2V0T2JqZWN0IiwidG9TdHJpbmciLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQUZBO0FBQ0E7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBU0EsT0FBVCxDQUFpQkMsTUFBakIsRUFBaUM7QUFDaEMsV0FBTyxnQ0FBZ0NDLElBQWhDLENBQXFDRCxNQUFyQyxDQUFQO0FBQ0E7O0FBRU0sV0FBU0UsbUJBQVQsQ0FBNkJDLEdBQTdCLEVBQTBDO0FBQ2hELFFBQUlBLEdBQUcsQ0FBQ0MsT0FBSixDQUFZLEdBQVosS0FBb0IsQ0FBeEIsRUFBMkI7QUFDMUI7QUFDQSxZQUFNRCxHQUFHLEdBQUcsd0NBQVo7QUFDQTs7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QUFQO0FBQ0EsS0FGRCxNQUVPO0FBQ047QUFDQSxZQUFNQSxHQUFHLEdBQUcsc0VBQVo7QUFDQTtBQUNELEdBUk0iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogJHtjb3B5cmlnaHR9XG4gKi9cblxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCJzYXAvdWkvbW9kZWxcIjtcblxuLyoqXG4gKiBTdGFibGUgSWQgaGVscGVyXG4gKi9cblxuLyoqXG4gKiBDb3B5IGZvciB0aGUgQ29yZS5pc1ZhbGlkIGZ1bmN0aW9uIHRvIGJlIGluZGVwZW5kZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2VmFsdWUgU3RyaW5nIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgdmFsdWUgaXMgdmFsaWQgb3Igbm90XG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWQodlZhbHVlOiBzdHJpbmcpIHtcblx0cmV0dXJuIC9eKFtBLVphLXpfXVstQS1aYS16MC05Xy46XSopJC8udGVzdCh2VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVNwZWNpYWxDaGFycyhzSWQ6IHN0cmluZykge1xuXHRpZiAoc0lkLmluZGV4T2YoXCIgXCIpID49IDApIHtcblx0XHQvLyBMb2cuZXJyb3Ioc0lkICsgXCIgLSBTcGFjZXMgYXJlIG5vdCBhbGxvd2VkIGluIElEIHBhcnRzLlwiKTtcblx0XHR0aHJvdyBzSWQgKyBcIiAtIFNwYWNlcyBhcmUgbm90IGFsbG93ZWQgaW4gSUQgcGFydHMuXCI7XG5cdH1cblx0c0lkID0gc0lkXG5cdFx0LnJlcGxhY2UoL15cXC98XkB8XiN8XlxcKi8sIFwiXCIpIC8vIHJlbW92ZSBzcGVjaWFsIGNoYXJhY3RlcnMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmdcblx0XHQucmVwbGFjZSgvXFwvJHxAJHwjJHxcXCokLywgXCJcIikgLy8gcmVtb3ZlIHNwZWNpYWwgY2hhcmFjdGVycyBmcm9tIHRoZSBlbmQgb2YgdGhlIHN0cmluZ1xuXHRcdC5yZXBsYWNlKC9cXC98QHxcXCh8XFwpfCN8XFwqL2csIFwiOjpcIik7IC8vIHJlcGxhY2Ugc3BlY2lhbCBjaGFyYWN0ZXJzIHdpdGggOjpcblxuXHQvLyBSZXBsYWNlIGRvdWJsZSBvY2N1cnJlbmNlcyBvZiB0aGUgc2VwYXJhdG9yIHdpdGggYSBzaW5nbGUgc2VwYXJhdG9yXG5cdHdoaWxlIChzSWQuaW5kZXhPZihcIjo6OjpcIikgPiAtMSkge1xuXHRcdHNJZCA9IHNJZC5yZXBsYWNlKFwiOjo6OlwiLCBcIjo6XCIpO1xuXHR9XG5cblx0Ly8gSWYgdGhlcmUgaXMgYSA6OiBhdCB0aGUgZW5kIG9mIHRoZSBJRCByZW1vdmUgaXRcblx0aWYgKHNJZC5zbGljZSgtMikgPT0gXCI6OlwiKSB7XG5cdFx0c0lkID0gc0lkLnNsaWNlKDAsIC0yKTtcblx0fVxuXG5cdHJldHVybiBzSWQ7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU5hbWVzcGFjZXMoc0lkOiBzdHJpbmcpIHtcblx0c0lkID0gc0lkLnJlcGxhY2UoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5cIiwgXCJcIik7XG5cdHNJZCA9IHNJZC5yZXBsYWNlKFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5cIiwgXCJcIik7XG5cdHJldHVybiBzSWQ7XG59XG5cbmZ1bmN0aW9uIGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvVmFsdWU6IGFueSkge1xuXHRpZiAoKG9WYWx1ZSAmJiBvVmFsdWUuJFBhdGgpIHx8IG9WYWx1ZS5wYXRoKSB7XG5cdFx0cmV0dXJuIG9WYWx1ZS4kUGF0aCB8fCBvVmFsdWUucGF0aDtcblx0fVxuXG5cdGlmIChvVmFsdWUgJiYgb1ZhbHVlLiRBcHBseSAmJiBvVmFsdWUuJEZ1bmN0aW9uID09PSBcIm9kYXRhLmNvbmNhdFwiKSB7XG5cdFx0bGV0IHNQYXRoQ29uY2F0ID0gXCJcIjtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG9WYWx1ZS4kQXBwbHkubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmIChvVmFsdWUuJEFwcGx5W2ldLiRQYXRoKSB7XG5cdFx0XHRcdGlmIChzUGF0aENvbmNhdCkge1xuXHRcdFx0XHRcdHNQYXRoQ29uY2F0ICs9IFwiOjpcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRzUGF0aENvbmNhdCArPSBvVmFsdWUuJEFwcGx5W2ldLiRQYXRoO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc1BhdGhDb25jYXQ7XG5cdH1cblxuXHRpZiAob1ZhbHVlKSB7XG5cdFx0cmV0dXJuIHJlcGxhY2VTcGVjaWFsQ2hhcnMob1ZhbHVlLnJlcGxhY2UoLyAvZywgXCJfXCIpKTtcblx0fVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBTdGFibGUgSWQgYmFzZWQgb24gdGhlIGdpdmVuIHBhcmFtZXRlcnNcbiAqXG4gKiBwYXJhbWV0ZXJzIGFyZSBjb21iaW5lZCBpbiB0aGUgc2FtZSBvcmRlciB0aGF0IHRoZXkgYXJlIHByb3ZpZGVkIGFuZCBhcmUgc2VwYXJhdGVkIGJ5ICc6OidcbiAqIHNwZWNpYWwgY2hhcmFjdGVycyAoQCwgLywgIykgYXJlIHJlcGxhY2VkIGJ5ICc6OicgaWYgdGhleSBhcmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgU3RhYmxlIElkIGFuZCByZW1vdmVkIGFsbCB0b2dldGhlciBpZiB0aGUgYXJlIHBhcnQgYXQgdGhlIGJlZ2lubmluZyBvciBlbmRcbiAqIEV4YW1wbGU6XG4gKiAvLyBHZXQgQ29uc3RhbnQgU3RhYmxlIElkXG4gKiBnZW5lcmF0ZShbJ1N0YWJsZScsICdJZCddKSB3b3VsZCByZXN1bHQgaW4gJ1N0YWJsZTo6SWQnIGFzIHRoZSBTdGFibGUgSWRcbiAqXG4gKiAvLyBHZXQgUGFyYW1lcnRlcml6ZWQgU3RhYmxlIElkIGZyb20gYSBDb2xsZWN0aW9uIEZhY2V0XG4gKiB2YXIgb1BhcmFtZXRlciA9IHtcbiAqIFx0XHRGYWNldDoge1xuICogXHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ29sbGVjdGlvbkZhY2V0XCIsXG4gKiBcdFx0XHRMYWJlbDogXCJHZW5lcmFsIEluZm8gRmFjZXQgTGFiZWxcIixcbiAqIFx0XHRcdElEOiAnR2VuZXJhbEluZm9ybWF0aW9uJ1xuICogXHRcdH1cbiAqIH07XG4gKiBnZW5lcmF0ZShbJ3NlY3Rpb24nLCBvUGFyYW1ldGVyXSkgd291bGQgcmVzdWx0IGluICdzZWN0aW9uOjpHZW5lcmFsSW5mb3JtYXRpb24nIGFzIHRoZSBTdGFibGUgSWRcbiAqXG4gKiBvUGFyYW1ldGVyIGlzIGFuZCBvYmplY3Qgb2YgTWV0YWRhdGEgY29udGV4dHMgYXZhaWxhYmxlIHdoaWxlIHRlbXBsYXRpbmcgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIFN0YWJsZSBJRHMuXG4gKiBvUGFyYW1ldGVyIG9iamVjdCBrZXlzIGRlZmluZSB0aGUgdHlwZSBvZiBtZXRhZGF0YSBjb250ZXh0LlxuICogRm9yIGV4YW1wbGUsIHRoZSBrZXkgJ0ZhY2V0J2luIHRoZSBhYm92ZSBleGFtcGxlIHRlbGxzIHRoZSBTdGFibGUgSWQgSGVscGVyIHRoYXQgdGhlIGNvbnRleHQgaXMgYSBGYWNldCAoY291bGQgYmUgcmVmZXJlbmNlIG9yIGNvbGxlY3Rpb24gZmFjZXQpXG4gKlxuICogQ3VycmVudGx5IHN1cHBvcnRlZCBtZXRhZGF0YSBjb250ZXh0IGlzIENvbGxlY3Rpb24vUmVmZXJlbmNlIGZhY2V0IGlkZW50aWZpZWQgYnkgJ0ZhY2V0JyBrZXkuXG4gKlxuICogQHBhcmFtIHtBcnJheTwoc3RyaW5nfG9iamVjdCk+fSBhU3RhYmxlSWRQYXJ0cyBBcnJheSBvZiBzdHJpbmdzIGFuZCBvYmplY3RzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBTdGFibGUgSWQgY29uc3RydWN0ZWQgZnJvbSB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgZ2VuZXJhdGUgPSBmdW5jdGlvbihhU3RhYmxlSWRQYXJ0czogQXJyYXk8c3RyaW5nIHwgb2JqZWN0Pikge1xuXHRsZXQgc1N0YWJsZUlkID0gXCJcIixcblx0XHR2RWxlbWVudDogYW55LFxuXHRcdHNGYWNldElkO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYVN0YWJsZUlkUGFydHMubGVuZ3RoOyBpKyspIHtcblx0XHR2RWxlbWVudCA9IGFTdGFibGVJZFBhcnRzW2ldO1xuXHRcdGlmICghdkVsZW1lbnQpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRzU3RhYmxlSWQgKz0gc1N0YWJsZUlkICE9PSBcIlwiID8gXCI6OlwiIDogXCJcIjtcblx0XHRpZiAodkVsZW1lbnRbXCJGYWNldFwiXSAmJiB2RWxlbWVudFtcIkZhY2V0XCJdW1wiJFR5cGVcIl0gJiYgdkVsZW1lbnRbXCJGYWNldFwiXVtcIiRUeXBlXCJdID09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ29sbGVjdGlvbkZhY2V0XCIpIHtcblx0XHRcdHNTdGFibGVJZCArPSB2RWxlbWVudFtcIkZhY2V0XCJdW1wiSURcIl07XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdkVsZW1lbnQgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGlmICh2RWxlbWVudCkge1xuXHRcdFx0XHRzU3RhYmxlSWQgKz0gdkVsZW1lbnQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdkVsZW1lbnQgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdC8vIGhhbmRsZSBwYXJhbWV0ZXJzXG5cdFx0XHRpZiAodkVsZW1lbnQgJiYgdkVsZW1lbnQuRmFjZXQpIHtcblx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LiRUeXBlICYmIHZFbGVtZW50LkZhY2V0LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbGxlY3Rpb25GYWNldFwiKSB7XG5cdFx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LklEKSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LklEO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICh2RWxlbWVudC5GYWNldC4kVHlwZSAmJiB2RWxlbWVudC5GYWNldC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWZlcmVuY2VGYWNldFwiKSB7XG5cdFx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LklEKSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LklEO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LlRhcmdldC4kQW5ub3RhdGlvblBhdGggfHwgdkVsZW1lbnQuRmFjZXQuVGFyZ2V0LnZhbHVlOyAvLyBDb21wbGlhbnQgd2l0aCBDb252ZXJ0ZXJzXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChzRmFjZXRJZCkge1xuXHRcdFx0XHRcdHNTdGFibGVJZCArPSBzRmFjZXRJZDtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmICh2RWxlbWVudCAmJiB2RWxlbWVudC5GYWNldFNvdXJjZSkge1xuXHRcdFx0XHRpZiAodkVsZW1lbnQuRmFjZXRTb3VyY2UgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVyRmFjZXRzXCIpIHtcblx0XHRcdFx0XHRzU3RhYmxlSWQgKz0gXCJIZWFkZXJGYWNldFwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAodkVsZW1lbnQgJiYgdkVsZW1lbnRbXCIkVHlwZVwiXSAmJiB2RWxlbWVudFtcIiRUeXBlXCJdLmluZGV4T2YoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIikgPiAtMSkge1xuXHRcdFx0XHRzU3RhYmxlSWQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCh2RWxlbWVudCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHNTdGFibGVJZCA9IHByZXBhcmVJZChzU3RhYmxlSWQpO1xuXHRyZXR1cm4gc1N0YWJsZUlkO1xufTtcbmV4cG9ydCBjb25zdCBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24gPSBmdW5jdGlvbihvRGF0YUZpZWxkOiBhbnkpOiBzdHJpbmcge1xuXHRsZXQgc0lkUGFydCA9IFwiXCI7XG5cdGlmICh0eXBlb2Ygb0RhdGFGaWVsZC5TZW1hbnRpY09iamVjdCA9PSBcInN0cmluZ1wiKSB7XG5cdFx0c0lkUGFydCArPSBvRGF0YUZpZWxkLlNlbWFudGljT2JqZWN0O1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuU2VtYW50aWNPYmplY3QuJFBhdGgpIHtcblx0XHRzSWRQYXJ0ICs9IG9EYXRhRmllbGQuU2VtYW50aWNPYmplY3QuJFBhdGg7XG5cdH1cblx0aWYgKHR5cGVvZiBvRGF0YUZpZWxkLkFjdGlvbiA9PSBcInN0cmluZ1wiKSB7XG5cdFx0c0lkUGFydCArPSBcIjo6XCIgKyBvRGF0YUZpZWxkLkFjdGlvbjtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLkFjdGlvbiAmJiBvRGF0YUZpZWxkLkFjdGlvbi4kUGF0aCkge1xuXHRcdHNJZFBhcnQgKz0gXCI6OlwiICsgb0RhdGFGaWVsZC5BY3Rpb24uJFBhdGg7XG5cdH1cblx0aWYgKG9EYXRhRmllbGRbXCJSZXF1aXJlc0NvbnRleHRcIl0gJiYgb0RhdGFGaWVsZFtcIlJlcXVpcmVzQ29udGV4dFwiXSA9PSB0cnVlKSB7XG5cdFx0c0lkUGFydCArPSBcIjo6UmVxdWlyZXNDb250ZXh0XCI7XG5cdH1cblx0cmV0dXJuIHNJZFBhcnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCA9IGZ1bmN0aW9uKG9EYXRhRmllbGQ6IGFueSwgbVBhcmFtZXRlcjogeyBjb250ZXh0PzogQ29udGV4dDxhbnk+IH0gPSB7fSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGxldCBzSWRQYXJ0ID0gXCJcIjtcblxuXHRpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkRm9yQWN0aW9uOjpcIjtcblx0XHRzSWRQYXJ0ICs9IG9EYXRhRmllbGQuQWN0aW9uO1xuXHRcdHJldHVybiBwcmVwYXJlSWQoc0lkUGFydCk7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uOjpcIjtcblx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21TZW1hbnRpY09iamVjdEFuZEFjdGlvbihvRGF0YUZpZWxkKTtcblx0XHRyZXR1cm4gc0lkUGFydDtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQW5ub3RhdGlvblwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkRm9yQW5ub3RhdGlvbjo6XCI7XG5cdFx0c0lkUGFydCArPSBwcmVwYXJlSWQob0RhdGFGaWVsZC5UYXJnZXQuJEFubm90YXRpb25QYXRoIHx8IG9EYXRhRmllbGQuVGFyZ2V0LnZhbHVlKTtcblx0XHRyZXR1cm4gc0lkUGFydDtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEFjdGlvblwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkV2l0aEFjdGlvbjo6XCI7XG5cdFx0aWYgKG9EYXRhRmllbGQuVmFsdWUpIHtcblx0XHRcdHNJZFBhcnQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9EYXRhRmllbGQuVmFsdWUpICsgXCI6OlwiO1xuXHRcdH1cblx0XHRzSWRQYXJ0ICs9IG9EYXRhRmllbGQuQWN0aW9uO1xuXHRcdHJldHVybiBwcmVwYXJlSWQoc0lkUGFydCk7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkOjpcIjtcblx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvRGF0YUZpZWxkLlZhbHVlKTtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uOjpcIjtcblx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvRGF0YUZpZWxkLlZhbHVlKSArIFwiOjpcIjtcblx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21TZW1hbnRpY09iamVjdEFuZEFjdGlvbihvRGF0YUZpZWxkKTtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tVmFsdWUob0RhdGFGaWVsZC5WYWx1ZSk7XG5cdFx0aWYgKG9EYXRhRmllbGQuVGFyZ2V0ICYmIG9EYXRhRmllbGQuVGFyZ2V0W1wiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIl0pIHtcblx0XHRcdHNJZFBhcnQgKz0gXCI6OlwiICsgb0RhdGFGaWVsZC5UYXJnZXRbXCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiXTtcblx0XHR9XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aFVybFwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkV2l0aFVybDo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tVmFsdWUob0RhdGFGaWVsZC5WYWx1ZSk7XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChtUGFyYW1ldGVyICYmIG1QYXJhbWV0ZXIuY29udGV4dCAmJiBtUGFyYW1ldGVyLmNvbnRleHQuZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIikpIHtcblx0XHQvLyB0aGUgY29udGV4dCBpcyBub3QgcmVmZXJyaW5nIHRvIGRhIGRhdGEgZmllbGQgYnV0IGRpcmVjdGx5IHRvIGEgcHJvcGVydHksIHJldHVybiB0aGUgcHJvcGVydHkgbmFtZVxuXHRcdHJldHVybiBwcmVwYXJlSWQobVBhcmFtZXRlci5jb250ZXh0LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpLnRvU3RyaW5nKCkpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIEluIGNhc2Ugb2YgYSBzdHJpbmcgb3IgdW5rbm93biBwcm9wZXJ0eVxuXHRcdC8vIExvZy5lcnJvcihcIlN0YWJsZSBJRCBIZWxwZXI6IFVuYWJsZSB0byBjcmVhdGUgYSBzdGFibGUgSUQuIFBsZWFzZSBjaGVjayB0aGUgYW5ub3RhdGlvbnMuXCIpO1xuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgcHJlcGFyZUlkID0gZnVuY3Rpb24oc0lkOiBzdHJpbmcpIHtcblx0c0lkID0gcmVwbGFjZVNwZWNpYWxDaGFycyhyZW1vdmVOYW1lc3BhY2VzKHNJZCkpO1xuXHRpZiAoaXNWYWxpZChzSWQpKSB7XG5cdFx0cmV0dXJuIHNJZDtcblx0fSBlbHNlIHtcblx0XHQvLyBMb2cuZXJyb3Ioc0lkICsgXCIgLSBTdGFibGUgSWQgY291bGQgbm90IGJlIGdlbmVyYXRlZCBkdWUgdG8gaW5zdWZmaWNpZW50IGluZm9ybWF0aW9uLlwiKTtcblx0XHR0aHJvdyBzSWQgKyBcIiAtIFN0YWJsZSBJZCBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkIGR1ZSB0byBpbnN1ZmZpY2llbnQgaW5mb3JtYXRpb24uXCI7XG5cdH1cbn07XG4iXX0=
|
|
@@ -163,7 +163,7 @@ export const getStableIdPartFromSemanticObjectAndAction = function(oDataField: a
|
|
|
163
163
|
return sIdPart;
|
|
164
164
|
};
|
|
165
165
|
|
|
166
|
-
export const getStableIdPartFromDataField = function(oDataField: any, mParameter: { context?: Context } = {}): string | undefined {
|
|
166
|
+
export const getStableIdPartFromDataField = function(oDataField: any, mParameter: { context?: Context<any> } = {}): string | undefined {
|
|
167
167
|
let sIdPart = "";
|
|
168
168
|
|
|
169
169
|
if (oDataField.$Type && oDataField.$Type === "com.sap.vocabularies.UI.v1.DataFieldForAction") {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* SAPUI5
|
|
3
|
-
* (c) Copyright 2009-
|
|
3
|
+
* (c) Copyright 2009-2022 SAP SE. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -106,7 +106,7 @@ sap.ui.define(
|
|
|
106
106
|
interfaces: [],
|
|
107
107
|
controls: [],
|
|
108
108
|
elements: [],
|
|
109
|
-
version: "1.
|
|
109
|
+
version: "1.98.0",
|
|
110
110
|
noLibraryCSS: true,
|
|
111
111
|
extensions: {
|
|
112
112
|
//Configuration used for rule loading of Support Assistant
|
|
@@ -120,6 +120,32 @@ sap.ui.define(
|
|
|
120
120
|
}
|
|
121
121
|
});
|
|
122
122
|
|
|
123
|
+
/**
|
|
124
|
+
* Available values for invocation grouping.
|
|
125
|
+
*
|
|
126
|
+
* @readonly
|
|
127
|
+
* @enum {string}
|
|
128
|
+
* @private
|
|
129
|
+
*/
|
|
130
|
+
sap.fe.core.InvocationGrouping = {
|
|
131
|
+
/**
|
|
132
|
+
* Isolated.
|
|
133
|
+
*
|
|
134
|
+
* @constant
|
|
135
|
+
* @type {string}
|
|
136
|
+
* @public
|
|
137
|
+
*/
|
|
138
|
+
Isolated: "Isolated",
|
|
139
|
+
/**
|
|
140
|
+
* ChangeSet.
|
|
141
|
+
*
|
|
142
|
+
* @constant
|
|
143
|
+
* @type {string}
|
|
144
|
+
* @public
|
|
145
|
+
*/
|
|
146
|
+
ChangeSet: "ChangeSet"
|
|
147
|
+
};
|
|
148
|
+
|
|
123
149
|
/**
|
|
124
150
|
* Available values for creation mode.
|
|
125
151
|
*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* SAPUI5
|
|
3
|
-
* (c) Copyright 2009-
|
|
3
|
+
* (c) Copyright 2009-2022 SAP SE. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* Adds support rules of the sap.fe.core library to the support infrastructure.
|
|
@@ -9,9 +9,10 @@ sap.ui.define(
|
|
|
9
9
|
[
|
|
10
10
|
"./support/AnnotationIssue.support",
|
|
11
11
|
"./support/CollectionFacetMissingID.support",
|
|
12
|
-
"./support/CollectionFacetUnsupportedLevel.support"
|
|
12
|
+
"./support/CollectionFacetUnsupportedLevel.support",
|
|
13
|
+
"./support/InvalidAnnotationColumnKey.support"
|
|
13
14
|
],
|
|
14
|
-
function(AnnotationIssue, CollectionFacetMissingID, CollectionFacetUnsupportedLevel) {
|
|
15
|
+
function(AnnotationIssue, CollectionFacetMissingID, CollectionFacetUnsupportedLevel, InvalidAnnotationColumnKey) {
|
|
15
16
|
"use strict";
|
|
16
17
|
|
|
17
18
|
sap.ui.support.SystemPresets.FeV4 = {
|
|
@@ -24,7 +25,12 @@ sap.ui.define(
|
|
|
24
25
|
return {
|
|
25
26
|
name: "sap.fe.core",
|
|
26
27
|
niceName: "SAP.FE V4 - Core library",
|
|
27
|
-
ruleset: [
|
|
28
|
+
ruleset: [
|
|
29
|
+
AnnotationIssue.getRules(),
|
|
30
|
+
CollectionFacetMissingID.getRules(),
|
|
31
|
+
CollectionFacetUnsupportedLevel.getRules(),
|
|
32
|
+
InvalidAnnotationColumnKey.getRules()
|
|
33
|
+
]
|
|
28
34
|
};
|
|
29
35
|
},
|
|
30
36
|
true
|
|
@@ -0,0 +1,62 @@
|
|
|
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/base/util/ObjectPath"], function (ObjectPath) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var _exports = {};
|
|
9
|
+
|
|
10
|
+
function applyChange(manifest, change) {
|
|
11
|
+
var _manifest$sapUi, _manifest$sapUi$routi;
|
|
12
|
+
|
|
13
|
+
var changeContent = change.getContent();
|
|
14
|
+
var pageID = changeContent === null || changeContent === void 0 ? void 0 : changeContent.page;
|
|
15
|
+
var targets = ((_manifest$sapUi = manifest["sap.ui5"]) === null || _manifest$sapUi === void 0 ? void 0 : (_manifest$sapUi$routi = _manifest$sapUi.routing) === null || _manifest$sapUi$routi === void 0 ? void 0 : _manifest$sapUi$routi.targets) || {};
|
|
16
|
+
var pageSettings;
|
|
17
|
+
var propertyChange = changeContent === null || changeContent === void 0 ? void 0 : changeContent.entityPropertyChange; // return unmodified manifest in case change not valid
|
|
18
|
+
|
|
19
|
+
if ((propertyChange === null || propertyChange === void 0 ? void 0 : propertyChange.operation) !== "UPSERT" || !(propertyChange !== null && propertyChange !== void 0 && propertyChange.propertyPath) || !(propertyChange !== null && propertyChange !== void 0 && propertyChange.propertyValue) || propertyChange !== null && propertyChange !== void 0 && propertyChange.propertyPath.startsWith("/")) {
|
|
20
|
+
return manifest;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
for (var p in targets) {
|
|
24
|
+
if (targets[p].id === pageID) {
|
|
25
|
+
var _targets$p$name;
|
|
26
|
+
|
|
27
|
+
if ((_targets$p$name = targets[p].name) !== null && _targets$p$name !== void 0 && _targets$p$name.startsWith("sap.fe.templates.")) {
|
|
28
|
+
var _targets$p, _targets$p$options;
|
|
29
|
+
|
|
30
|
+
pageSettings = ((_targets$p = targets[p]) === null || _targets$p === void 0 ? void 0 : (_targets$p$options = _targets$p.options) === null || _targets$p$options === void 0 ? void 0 : _targets$p$options.settings) || {};
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (!pageSettings) {
|
|
37
|
+
return manifest;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
var propertyPath = propertyChange.propertyPath.split("/");
|
|
41
|
+
|
|
42
|
+
if (propertyPath[0] === "controlConfiguration") {
|
|
43
|
+
var annotationPath = ""; // the annotation path in the control configuration has to stay together. For now rely on the fact the @ is in the last part
|
|
44
|
+
|
|
45
|
+
for (var i = 1; i < propertyPath.length; i++) {
|
|
46
|
+
annotationPath += (i > 1 ? "/" : "") + propertyPath[i];
|
|
47
|
+
|
|
48
|
+
if (annotationPath.indexOf("@") > -1) {
|
|
49
|
+
propertyPath = ["controlConfiguration", annotationPath].concat(propertyPath.slice(i + 1));
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
ObjectPath.set(propertyPath, propertyChange.propertyValue, pageSettings);
|
|
56
|
+
return manifest;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
_exports.applyChange = applyChange;
|
|
60
|
+
return _exports;
|
|
61
|
+
}, false);
|
|
62
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoYW5nZVBhZ2VDb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbImFwcGx5Q2hhbmdlIiwibWFuaWZlc3QiLCJjaGFuZ2UiLCJjaGFuZ2VDb250ZW50IiwiZ2V0Q29udGVudCIsInBhZ2VJRCIsInBhZ2UiLCJ0YXJnZXRzIiwicm91dGluZyIsInBhZ2VTZXR0aW5ncyIsInByb3BlcnR5Q2hhbmdlIiwiZW50aXR5UHJvcGVydHlDaGFuZ2UiLCJvcGVyYXRpb24iLCJwcm9wZXJ0eVBhdGgiLCJwcm9wZXJ0eVZhbHVlIiwic3RhcnRzV2l0aCIsInAiLCJpZCIsIm5hbWUiLCJvcHRpb25zIiwic2V0dGluZ3MiLCJzcGxpdCIsImFubm90YXRpb25QYXRoIiwiaSIsImxlbmd0aCIsImluZGV4T2YiLCJjb25jYXQiLCJzbGljZSIsIk9iamVjdFBhdGgiLCJzZXQiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQWtCTyxXQUFTQSxXQUFULENBQXFCQyxRQUFyQixFQUFvQ0MsTUFBcEMsRUFBeUQ7QUFBQTs7QUFDL0QsUUFBTUMsYUFBYSxHQUFHRCxNQUFNLENBQUNFLFVBQVAsRUFBdEI7QUFDQSxRQUFNQyxNQUFNLEdBQUdGLGFBQUgsYUFBR0EsYUFBSCx1QkFBR0EsYUFBYSxDQUFFRyxJQUE5QjtBQUNBLFFBQU1DLE9BQU8sR0FBRyxvQkFBQU4sUUFBUSxDQUFDLFNBQUQsQ0FBUiw2RkFBcUJPLE9BQXJCLGdGQUE4QkQsT0FBOUIsS0FBeUMsRUFBekQ7QUFDQSxRQUFJRSxZQUFKO0FBQ0EsUUFBTUMsY0FBYyxHQUFHUCxhQUFILGFBQUdBLGFBQUgsdUJBQUdBLGFBQWEsQ0FBRVEsb0JBQXRDLENBTCtELENBTy9EOztBQUNBLFFBQ0MsQ0FBQUQsY0FBYyxTQUFkLElBQUFBLGNBQWMsV0FBZCxZQUFBQSxjQUFjLENBQUVFLFNBQWhCLE1BQThCLFFBQTlCLElBQ0EsRUFBQ0YsY0FBRCxhQUFDQSxjQUFELGVBQUNBLGNBQWMsQ0FBRUcsWUFBakIsQ0FEQSxJQUVBLEVBQUNILGNBQUQsYUFBQ0EsY0FBRCxlQUFDQSxjQUFjLENBQUVJLGFBQWpCLENBRkEsSUFHQUosY0FIQSxhQUdBQSxjQUhBLGVBR0FBLGNBQWMsQ0FBRUcsWUFBaEIsQ0FBNkJFLFVBQTdCLENBQXdDLEdBQXhDLENBSkQsRUFLRTtBQUNELGFBQU9kLFFBQVA7QUFDQTs7QUFFRCxTQUFLLElBQU1lLENBQVgsSUFBZ0JULE9BQWhCLEVBQXlCO0FBQ3hCLFVBQUlBLE9BQU8sQ0FBQ1MsQ0FBRCxDQUFQLENBQVdDLEVBQVgsS0FBa0JaLE1BQXRCLEVBQThCO0FBQUE7O0FBQzdCLCtCQUFJRSxPQUFPLENBQUNTLENBQUQsQ0FBUCxDQUFXRSxJQUFmLDRDQUFJLGdCQUFpQkgsVUFBakIsQ0FBNEIsbUJBQTVCLENBQUosRUFBc0Q7QUFBQTs7QUFDckROLFVBQUFBLFlBQVksR0FBRyxlQUFBRixPQUFPLENBQUNTLENBQUQsQ0FBUCxnRkFBWUcsT0FBWiwwRUFBcUJDLFFBQXJCLEtBQWlDLEVBQWhEO0FBQ0E7QUFDQTtBQUNEO0FBQ0Q7O0FBRUQsUUFBSSxDQUFDWCxZQUFMLEVBQW1CO0FBQ2xCLGFBQU9SLFFBQVA7QUFDQTs7QUFFRCxRQUFJWSxZQUFZLEdBQUdILGNBQWMsQ0FBQ0csWUFBZixDQUE0QlEsS0FBNUIsQ0FBa0MsR0FBbEMsQ0FBbkI7O0FBQ0EsUUFBSVIsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixzQkFBeEIsRUFBZ0Q7QUFDL0MsVUFBSVMsY0FBYyxHQUFHLEVBQXJCLENBRCtDLENBRS9DOztBQUNBLFdBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR1YsWUFBWSxDQUFDVyxNQUFqQyxFQUF5Q0QsQ0FBQyxFQUExQyxFQUE4QztBQUM3Q0QsUUFBQUEsY0FBYyxJQUFJLENBQUNDLENBQUMsR0FBRyxDQUFKLEdBQVEsR0FBUixHQUFjLEVBQWYsSUFBcUJWLFlBQVksQ0FBQ1UsQ0FBRCxDQUFuRDs7QUFDQSxZQUFJRCxjQUFjLENBQUNHLE9BQWYsQ0FBdUIsR0FBdkIsSUFBOEIsQ0FBQyxDQUFuQyxFQUFzQztBQUNyQ1osVUFBQUEsWUFBWSxHQUFHLENBQUMsc0JBQUQsRUFBeUJTLGNBQXpCLEVBQXlDSSxNQUF6QyxDQUFnRGIsWUFBWSxDQUFDYyxLQUFiLENBQW1CSixDQUFDLEdBQUcsQ0FBdkIsQ0FBaEQsQ0FBZjtBQUNBO0FBQ0E7QUFDRDtBQUNEOztBQUNESyxJQUFBQSxVQUFVLENBQUNDLEdBQVgsQ0FBZWhCLFlBQWYsRUFBNkJILGNBQWMsQ0FBQ0ksYUFBNUMsRUFBMkRMLFlBQTNEO0FBRUEsV0FBT1IsUUFBUDtBQUNBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqICR7Y29weXJpZ2h0fVxuICovXG5pbXBvcnQgeyBPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9iYXNlL3V0aWxcIjtcblxuZXhwb3J0IHR5cGUgQ2hhbmdlID0ge1xuXHRnZXRDb250ZW50KCk6IENoYW5nZUNvbnRlbnQ7XG59O1xuXG50eXBlIENoYW5nZUNvbnRlbnQgPSB7XG5cdHBhZ2U6IHN0cmluZzsgLy8gSUQgb2YgdGhlIHBhZ2UgdG8gYmUgY2hhbmdlZFxuXHRlbnRpdHlQcm9wZXJ0eUNoYW5nZTogRW50aXR5UHJvcGVydHlDaGFuZ2U7XG59O1xuXG50eXBlIEVudGl0eVByb3BlcnR5Q2hhbmdlID0ge1xuXHRwcm9wZXJ0eVBhdGg6IHN0cmluZzsgLy8gcGF0aCB0byB0aGUgcHJvcGVydHkgdG8gYmUgY2hhbmdlZFxuXHRvcGVyYXRpb246IHN0cmluZzsgLy8gb25seSBVUFNFUlQgc3VwcG9ydGVkXG5cdHByb3BlcnR5VmFsdWU6IHN0cmluZyB8IE9iamVjdDsgLy93aGF0IHRvIGJlIGNoYW5nZWRcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUNoYW5nZShtYW5pZmVzdDogYW55LCBjaGFuZ2U6IENoYW5nZSk6IGFueSB7XG5cdGNvbnN0IGNoYW5nZUNvbnRlbnQgPSBjaGFuZ2UuZ2V0Q29udGVudCgpO1xuXHRjb25zdCBwYWdlSUQgPSBjaGFuZ2VDb250ZW50Py5wYWdlO1xuXHRjb25zdCB0YXJnZXRzID0gbWFuaWZlc3RbXCJzYXAudWk1XCJdPy5yb3V0aW5nPy50YXJnZXRzIHx8IHt9O1xuXHRsZXQgcGFnZVNldHRpbmdzO1xuXHRjb25zdCBwcm9wZXJ0eUNoYW5nZSA9IGNoYW5nZUNvbnRlbnQ/LmVudGl0eVByb3BlcnR5Q2hhbmdlO1xuXG5cdC8vIHJldHVybiB1bm1vZGlmaWVkIG1hbmlmZXN0IGluIGNhc2UgY2hhbmdlIG5vdCB2YWxpZFxuXHRpZiAoXG5cdFx0cHJvcGVydHlDaGFuZ2U/Lm9wZXJhdGlvbiAhPT0gXCJVUFNFUlRcIiB8fFxuXHRcdCFwcm9wZXJ0eUNoYW5nZT8ucHJvcGVydHlQYXRoIHx8XG5cdFx0IXByb3BlcnR5Q2hhbmdlPy5wcm9wZXJ0eVZhbHVlIHx8XG5cdFx0cHJvcGVydHlDaGFuZ2U/LnByb3BlcnR5UGF0aC5zdGFydHNXaXRoKFwiL1wiKVxuXHQpIHtcblx0XHRyZXR1cm4gbWFuaWZlc3Q7XG5cdH1cblxuXHRmb3IgKGNvbnN0IHAgaW4gdGFyZ2V0cykge1xuXHRcdGlmICh0YXJnZXRzW3BdLmlkID09PSBwYWdlSUQpIHtcblx0XHRcdGlmICh0YXJnZXRzW3BdLm5hbWU/LnN0YXJ0c1dpdGgoXCJzYXAuZmUudGVtcGxhdGVzLlwiKSkge1xuXHRcdFx0XHRwYWdlU2V0dGluZ3MgPSB0YXJnZXRzW3BdPy5vcHRpb25zPy5zZXR0aW5ncyB8fCB7fTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKCFwYWdlU2V0dGluZ3MpIHtcblx0XHRyZXR1cm4gbWFuaWZlc3Q7XG5cdH1cblxuXHRsZXQgcHJvcGVydHlQYXRoID0gcHJvcGVydHlDaGFuZ2UucHJvcGVydHlQYXRoLnNwbGl0KFwiL1wiKTtcblx0aWYgKHByb3BlcnR5UGF0aFswXSA9PT0gXCJjb250cm9sQ29uZmlndXJhdGlvblwiKSB7XG5cdFx0bGV0IGFubm90YXRpb25QYXRoID0gXCJcIjtcblx0XHQvLyB0aGUgYW5ub3RhdGlvbiBwYXRoIGluIHRoZSBjb250cm9sIGNvbmZpZ3VyYXRpb24gaGFzIHRvIHN0YXkgdG9nZXRoZXIuIEZvciBub3cgcmVseSBvbiB0aGUgZmFjdCB0aGUgQCBpcyBpbiB0aGUgbGFzdCBwYXJ0XG5cdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBwcm9wZXJ0eVBhdGgubGVuZ3RoOyBpKyspIHtcblx0XHRcdGFubm90YXRpb25QYXRoICs9IChpID4gMSA/IFwiL1wiIDogXCJcIikgKyBwcm9wZXJ0eVBhdGhbaV07XG5cdFx0XHRpZiAoYW5ub3RhdGlvblBhdGguaW5kZXhPZihcIkBcIikgPiAtMSkge1xuXHRcdFx0XHRwcm9wZXJ0eVBhdGggPSBbXCJjb250cm9sQ29uZmlndXJhdGlvblwiLCBhbm5vdGF0aW9uUGF0aF0uY29uY2F0KHByb3BlcnR5UGF0aC5zbGljZShpICsgMSkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0T2JqZWN0UGF0aC5zZXQocHJvcGVydHlQYXRoLCBwcm9wZXJ0eUNoYW5nZS5wcm9wZXJ0eVZhbHVlLCBwYWdlU2V0dGluZ3MpO1xuXG5cdHJldHVybiBtYW5pZmVzdDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* ${copyright}
|
|
3
|
+
*/
|
|
4
|
+
import { ObjectPath } from "sap/base/util";
|
|
5
|
+
|
|
6
|
+
export type Change = {
|
|
7
|
+
getContent(): ChangeContent;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
type ChangeContent = {
|
|
11
|
+
page: string; // ID of the page to be changed
|
|
12
|
+
entityPropertyChange: EntityPropertyChange;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
type EntityPropertyChange = {
|
|
16
|
+
propertyPath: string; // path to the property to be changed
|
|
17
|
+
operation: string; // only UPSERT supported
|
|
18
|
+
propertyValue: string | Object; //what to be changed
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export function applyChange(manifest: any, change: Change): any {
|
|
22
|
+
const changeContent = change.getContent();
|
|
23
|
+
const pageID = changeContent?.page;
|
|
24
|
+
const targets = manifest["sap.ui5"]?.routing?.targets || {};
|
|
25
|
+
let pageSettings;
|
|
26
|
+
const propertyChange = changeContent?.entityPropertyChange;
|
|
27
|
+
|
|
28
|
+
// return unmodified manifest in case change not valid
|
|
29
|
+
if (
|
|
30
|
+
propertyChange?.operation !== "UPSERT" ||
|
|
31
|
+
!propertyChange?.propertyPath ||
|
|
32
|
+
!propertyChange?.propertyValue ||
|
|
33
|
+
propertyChange?.propertyPath.startsWith("/")
|
|
34
|
+
) {
|
|
35
|
+
return manifest;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
for (const p in targets) {
|
|
39
|
+
if (targets[p].id === pageID) {
|
|
40
|
+
if (targets[p].name?.startsWith("sap.fe.templates.")) {
|
|
41
|
+
pageSettings = targets[p]?.options?.settings || {};
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (!pageSettings) {
|
|
48
|
+
return manifest;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
let propertyPath = propertyChange.propertyPath.split("/");
|
|
52
|
+
if (propertyPath[0] === "controlConfiguration") {
|
|
53
|
+
let annotationPath = "";
|
|
54
|
+
// the annotation path in the control configuration has to stay together. For now rely on the fact the @ is in the last part
|
|
55
|
+
for (let i = 1; i < propertyPath.length; i++) {
|
|
56
|
+
annotationPath += (i > 1 ? "/" : "") + propertyPath[i];
|
|
57
|
+
if (annotationPath.indexOf("@") > -1) {
|
|
58
|
+
propertyPath = ["controlConfiguration", annotationPath].concat(propertyPath.slice(i + 1));
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
ObjectPath.set(propertyPath, propertyChange.propertyValue, pageSettings);
|
|
64
|
+
|
|
65
|
+
return manifest;
|
|
66
|
+
}
|
|
@@ -80,6 +80,9 @@ ST_DRAFT_DATALOSS_DISCARD_DRAFT_BTN=Discard Draft
|
|
|
80
80
|
# XBUT,30
|
|
81
81
|
CANCEL=Cancel
|
|
82
82
|
|
|
83
|
+
# XMSG,30
|
|
84
|
+
WARNING=Warning
|
|
85
|
+
|
|
83
86
|
# YMSG, 100: Used in the message box after pressing the edit button of a locked object.
|
|
84
87
|
C_DRAFT_OBJECT_PAGE_DRAFT_LOCKED_BY_USER=You can\'t edit this object at the moment \nIt is locked by {0}
|
|
85
88
|
|
|
@@ -131,12 +134,36 @@ T_MESSAGE_BUTTON_SAPFE_MESSAGE_GROUP_GENERAL=General
|
|
|
131
134
|
# XFLD,30: Text for table denominator in the message of the group title in message-popover
|
|
132
135
|
T_MESSAGE_GROUP_TITLE_TABLE_DENOMINATOR=Table
|
|
133
136
|
|
|
137
|
+
# XFLD,10: Text for table Row in the message description in message-popover
|
|
138
|
+
T_MESSAGE_GROUP_DESCRIPTION_TABLE_ROW=Row
|
|
139
|
+
|
|
140
|
+
# XFLD,10: Text for table Column in the message description in message-popover
|
|
141
|
+
T_MESSAGE_GROUP_DESCRIPTION_TABLE_COLUMN=Column
|
|
142
|
+
|
|
134
143
|
# XFLD,30: Text for prefix for the group name of the message from action in message-popover
|
|
135
144
|
T_MESSAGE_BUTTON_SAPFE_MESSAGE_GROUP_LAST_ACTION=Last Action
|
|
136
145
|
|
|
146
|
+
# XFLD,30: Text to be displayed in the message subtitle of the message popover when an error occurs in the creation row
|
|
147
|
+
T_MESSAGE_ITEM_SUBTITLE_CREATION_ROW_INDICATOR=<New>
|
|
148
|
+
|
|
137
149
|
# XFLD,30: Text to be displayed when the row/column indicator is not computed in the message subtitle in message-popover
|
|
138
150
|
T_MESSAGE_ITEM_SUBTITLE_INDICATOR_UNKNOWN=Unknown
|
|
139
151
|
|
|
152
|
+
# XFLD: Text to be displayed if the column is not part of table settings
|
|
153
|
+
T_COLUMN_INDICATOR_IN_TABLE_DEFINITION=Hidden
|
|
154
|
+
|
|
155
|
+
# XFLD,20: Text to be displayed in message description based on column availability in case of error
|
|
156
|
+
T_COLUMN_AVAILABLE_DIAGNOSIS_MSGDESC_ERROR=The field causing the error is on the linked page
|
|
157
|
+
|
|
158
|
+
# XFLD,20: Fields Affected Title text
|
|
159
|
+
T_FIELDS_AFFECTED_TITLE=Field Affected
|
|
160
|
+
|
|
161
|
+
# XFLD,20: Diagnosis Title text
|
|
162
|
+
T_DIAGNOSIS_TITLE=Diagnosis
|
|
163
|
+
|
|
164
|
+
# XFLD,20: Text to be displayed in message description based on column availability in case of message types other than error
|
|
165
|
+
T_COLUMN_AVAILABLE_DIAGNOSIS_MSGDESC=The underlying field is on the linked page
|
|
166
|
+
|
|
140
167
|
# XFLD,50: Text in the message subtitle in message-popover. Parameters: {0}= row indicator, {1}= column indicator.
|
|
141
168
|
T_MESSAGE_ITEM_SUBTITLE=Row: {0}, Column: {1}
|
|
142
169
|
|
|
@@ -146,6 +173,20 @@ C_COMMON_SAPFE_ERROR=Error
|
|
|
146
173
|
# XTIT, 24: Title of the NavContainer Error Messages Page
|
|
147
174
|
C_MESSAGE_HANDLING_SAPFE_ERROR_MESSAGES_PAGE_TITLE=Messages
|
|
148
175
|
|
|
176
|
+
# XTIT, 24: Title of the 503 Error Messages Page
|
|
177
|
+
C_MESSAGE_HANDLING_SAPFE_503_TITLE=Sorry, this service is temporarily unavailable.
|
|
178
|
+
|
|
179
|
+
# XTIT, 24: Description of the 503 Error Messages Page
|
|
180
|
+
C_MESSAGE_HANDLING_SAPFE_503_DESC=Please try again in a few minutes.
|
|
181
|
+
|
|
182
|
+
C_MESSAGE_HANDLING_SAPFE_503_ERROR = We expect it to be available again on {0}.
|
|
183
|
+
|
|
184
|
+
C_MESSAGE_HANDLING_SAPFE_503_ERROR_DAY = We expect it to be available again at {0}.
|
|
185
|
+
|
|
186
|
+
C_MESSAGE_HANDLING_SAPFE_503_ERROR_NO_RETRY_AFTER = Please try again later.
|
|
187
|
+
|
|
188
|
+
C_MESSAGE_HANDLING_SAPFE_503_BACKEND_PREFIX =Source message:
|
|
189
|
+
|
|
149
190
|
# XTIT, 24: Title text of Error Message Box
|
|
150
191
|
C_COMMON_SAPFE_ERROR_MESSAGES_PAGE_TITLE_ERROR=Error
|
|
151
192
|
|
|
@@ -339,6 +380,9 @@ C_DRAFT_EDIT_STATE_DRAFT_LOCKED_FILTER=Locked by Another User
|
|
|
339
380
|
# XTIT,50: Edit state, filter
|
|
340
381
|
C_DRAFT_EDIT_STATE_DRAFT_UNSAVED_CHANGES_FILTER=Unsaved Changes by Another User
|
|
341
382
|
|
|
383
|
+
# XTIT,50: Edit state, filter
|
|
384
|
+
C_DRAFT_EDIT_STATE_DRAFT_ALL_HIDING_DRAFTS_FILTER=All (Hiding Drafts)
|
|
385
|
+
|
|
342
386
|
# XBUT,15: Text for button Share
|
|
343
387
|
T_COMMON_SAPFE_ACTION_SHARE=Share
|
|
344
388
|
|
|
@@ -421,11 +465,31 @@ C_KPI_TOOLTIP_AMOUNT_MULTIUNIT=(Multiple units/currencies)
|
|
|
421
465
|
|
|
422
466
|
#------------KPI card templates-----------------------
|
|
423
467
|
|
|
424
|
-
#XMSG: Name of the first side indicator in a KPI
|
|
468
|
+
#XMSG: Name of the first side indicator in a KPI card
|
|
425
469
|
C_KPICARD_INDICATOR_TARGET=Target
|
|
426
470
|
|
|
427
|
-
#XMSG: Name of the second side indicator in a KPI
|
|
471
|
+
#XMSG: Name of the second side indicator in a KPI card
|
|
428
472
|
C_KPICARD_INDICATOR_DEVIATION=Deviation
|
|
429
473
|
|
|
430
474
|
#XMSG: Filter description
|
|
431
|
-
C_KPICARD_FILTERSTRING_NOT=not {0}
|
|
475
|
+
C_KPICARD_FILTERSTRING_NOT=not {0}
|
|
476
|
+
|
|
477
|
+
#XMSG: List of measures or dimensions
|
|
478
|
+
C_KPICARD_ITEMSLIST={0} and {1}
|
|
479
|
+
|
|
480
|
+
XMSG: Title of the chart in the KPI card : <measures> by <dimensions>
|
|
481
|
+
C_KPICARD_CHARTTITLE={0} by {1}
|
|
482
|
+
|
|
483
|
+
#------------Mass Edit texts-----------------------
|
|
484
|
+
|
|
485
|
+
# XTIT,50: Title of the mass edit dialog
|
|
486
|
+
C_MASS_EDIT_DIALOG_TITLE=Mass Edit ({0})
|
|
487
|
+
|
|
488
|
+
# XBUT,30: Text for the save button in the mass edit dialog
|
|
489
|
+
C_MASS_EDIT_SAVE_BUTTON_TEXT=Save
|
|
490
|
+
|
|
491
|
+
# XBUT,30: Text for the apply button in the mass edit dialog
|
|
492
|
+
C_MASS_EDIT_APPLY_BUTTON_TEXT=Apply
|
|
493
|
+
|
|
494
|
+
# XBUT,30: Text for the cancel button in the mass edit dialog
|
|
495
|
+
C_MASS_EDIT_CANCEL_BUTTON_TEXT=Cancel
|