@sapui5/sap.fe.templates 1.110.0 → 1.111.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 +2 -20
- package/src/sap/fe/templates/.library +1 -1
- package/src/sap/fe/templates/AnalyticalListPage/Component-dbg.js +21 -0
- package/src/sap/fe/templates/AnalyticalListPage/Component.js +3 -18
- package/src/sap/fe/templates/AnalyticalListPage/Component.js.map +1 -0
- package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate-dbg.js +32 -0
- package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +3 -29
- package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js.map +1 -0
- package/src/sap/fe/templates/AnalyticalListPage/manifest.json +1 -1
- package/src/sap/fe/templates/ListComponent-dbg.js +146 -0
- package/src/sap/fe/templates/ListComponent.js +3 -143
- package/src/sap/fe/templates/ListComponent.js.map +1 -0
- package/src/sap/fe/templates/ListReport/Component-dbg.js +77 -0
- package/src/sap/fe/templates/ListReport/Component.js +3 -74
- package/src/sap/fe/templates/ListReport/Component.js.map +1 -0
- package/src/sap/fe/templates/ListReport/ExtensionAPI-dbg.js +147 -0
- package/src/sap/fe/templates/ListReport/ExtensionAPI.js +3 -144
- package/src/sap/fe/templates/ListReport/ExtensionAPI.js.map +1 -0
- package/src/sap/fe/templates/ListReport/LRMessageStrip-dbg.js +191 -0
- package/src/sap/fe/templates/ListReport/LRMessageStrip.js +3 -193
- package/src/sap/fe/templates/ListReport/LRMessageStrip.js.map +1 -0
- package/src/sap/fe/templates/ListReport/ListReport.view.xml +1 -0
- package/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +799 -0
- package/src/sap/fe/templates/ListReport/ListReportController.controller.js +3 -832
- package/src/sap/fe/templates/ListReport/ListReportController.controller.js.map +1 -0
- package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +6 -24
- package/src/sap/fe/templates/ListReport/ListReportTemplating-dbg.js +40 -0
- package/src/sap/fe/templates/ListReport/ListReportTemplating.js +3 -37
- package/src/sap/fe/templates/ListReport/ListReportTemplating.js.map +1 -0
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl-dbg.js +375 -0
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +3 -378
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js.map +1 -0
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +10 -3
- package/src/sap/fe/templates/ListReport/manifest.json +1 -1
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation-dbg.js +53 -0
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +3 -50
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js.map +1 -0
- package/src/sap/fe/templates/ListReport/overrides/Share-dbg.js +109 -0
- package/src/sap/fe/templates/ListReport/overrides/Share.js +3 -107
- package/src/sap/fe/templates/ListReport/overrides/Share.js.map +1 -0
- package/src/sap/fe/templates/ListReport/overrides/ViewState-dbg.js +481 -0
- package/src/sap/fe/templates/ListReport/overrides/ViewState.js +3 -428
- package/src/sap/fe/templates/ListReport/overrides/ViewState.js.map +1 -0
- package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +164 -32
- package/src/sap/fe/templates/ListReport/view/fragments/CustomView.fragment.xml +0 -3
- package/src/sap/fe/templates/ListReport/view/fragments/MacroChart.fragment.xml +2 -0
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode-dbg.fragment.js +123 -0
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +29 -63
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js.map +1 -0
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +2 -2
- package/src/sap/fe/templates/ObjectPage/Component-dbg.js +150 -0
- package/src/sap/fe/templates/ObjectPage/Component.js +3 -148
- package/src/sap/fe/templates/ObjectPage/Component.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/ExtendPageDefinition-dbg.js +57 -0
- package/src/sap/fe/templates/ObjectPage/ExtendPageDefinition.js +3 -61
- package/src/sap/fe/templates/ObjectPage/ExtendPageDefinition.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI-dbg.js +222 -0
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +3 -243
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +2 -2
- package/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +1413 -0
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +3 -1534
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +11 -14
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating-dbg.js +851 -0
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +3 -851
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +14 -4
- package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton-dbg.js +147 -0
- package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.js +3 -144
- package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.tsx +5 -6
- package/src/sap/fe/templates/ObjectPage/controls/StashableHBox-dbg.js +111 -0
- package/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +3 -108
- package/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/controls/StashableVBox-dbg.js +24 -0
- package/src/sap/fe/templates/ObjectPage/controls/StashableVBox.js +3 -21
- package/src/sap/fe/templates/ObjectPage/controls/StashableVBox.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock-dbg.js +79 -0
- package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +3 -76
- package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/designtime/FlexBox-dbg.designtime.js +23 -0
- package/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +3 -20
- package/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox-dbg.designtime.js +52 -0
- package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +3 -49
- package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox-dbg.designtime.js +38 -0
- package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +3 -35
- package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/flexibility/ScrollableHeaderContainer.flexibility-dbg.js +28 -0
- package/src/sap/fe/templates/ObjectPage/flexibility/ScrollableHeaderContainer.flexibility.js +3 -29
- package/src/sap/fe/templates/ObjectPage/flexibility/ScrollableHeaderContainer.flexibility.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility-dbg.js +19 -0
- package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.js +3 -16
- package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility-dbg.js +15 -0
- package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.js +3 -12
- package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/manifest.json +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation-dbg.js +54 -0
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +3 -51
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting-dbg.js +36 -0
- package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +3 -33
- package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler-dbg.js +16 -0
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +3 -13
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/overrides/Paginator-dbg.js +27 -0
- package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +3 -24
- package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/overrides/Share-dbg.js +276 -0
- package/src/sap/fe/templates/ObjectPage/overrides/Share.js +3 -293
- package/src/sap/fe/templates/ObjectPage/overrides/Share.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState-dbg.js +69 -0
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +3 -63
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js.map +1 -0
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState.ts +3 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +2 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacetCustomContainer.fragment.xml +1 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/MacroChart.fragment.xml +2 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderContact.fragment.xml +2 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +12 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +0 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +0 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContentLazyLoader.fragment.xml +0 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionCustomSection.fragment.xml +2 -9
- package/src/sap/fe/templates/ObjectPage/view/fragments/SideContentCustomContainer.fragment.xml +1 -2
- package/src/sap/fe/templates/TableScroller-dbg.js +49 -0
- package/src/sap/fe/templates/TableScroller.js +3 -46
- package/src/sap/fe/templates/TableScroller.js.map +1 -0
- package/src/sap/fe/templates/designtime/library-preload.designtime.js +17 -0
- package/src/sap/fe/templates/designtime/library-preload.designtime.js.map +1 -0
- package/src/sap/fe/templates/library-dbg.js +66 -0
- package/src/sap/fe/templates/library-preload.js +236 -0
- package/src/sap/fe/templates/library-preload.js.map +1 -0
- package/src/sap/fe/templates/library.js +3 -56
- package/src/sap/fe/templates/library.js.map +1 -0
- package/src/sap/fe/templates/library.ts +4 -0
- package/src/sap/fe/templates/manifest.json +109 -0
- package/src/sap/fe/templates/messagebundle_fr.properties +1 -1
|
@@ -1,36 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
-
* (c) Copyright 2009-
|
|
3
|
+
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define([], function () {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var InternalRoutingExtension = {
|
|
9
|
-
onBeforeBinding: function (oContext, mParameters) {
|
|
10
|
-
this.getView().getController()._onBeforeBinding(oContext, mParameters);
|
|
11
|
-
},
|
|
12
|
-
onAfterBinding: function (oContext, mParameters) {
|
|
13
|
-
this.getView().getController()._onAfterBinding(oContext, mParameters);
|
|
14
|
-
},
|
|
15
|
-
closeColumn: function () {
|
|
16
|
-
var internalModelContext = this.getView().getBindingContext("internal");
|
|
17
|
-
internalModelContext.setProperty("fclColumnClosed", true);
|
|
18
|
-
var context = this.getView().getBindingContext();
|
|
19
|
-
var path = context && context.getPath() || "";
|
|
20
|
-
var metaModel = context.getModel().getMetaModel();
|
|
21
|
-
var metaPath = metaModel.getMetaPath(path);
|
|
22
|
-
var technicalKeys = metaModel.getObject("".concat(metaPath, "/$Type/$Key"));
|
|
23
|
-
var entry = context === null || context === void 0 ? void 0 : context.getObject();
|
|
24
|
-
var technicalKeysObject = {};
|
|
25
|
-
for (var key in technicalKeys) {
|
|
26
|
-
var objKey = technicalKeys[key];
|
|
27
|
-
if (!technicalKeysObject[objKey]) {
|
|
28
|
-
technicalKeysObject[objKey] = entry[objKey];
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
internalModelContext.setProperty("technicalKeysOfLastSeenRecord", technicalKeysObject);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
return InternalRoutingExtension;
|
|
35
|
-
}, false);
|
|
36
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnRlcm5hbFJvdXRpbmdFeHRlbnNpb24iLCJvbkJlZm9yZUJpbmRpbmciLCJvQ29udGV4dCIsIm1QYXJhbWV0ZXJzIiwiZ2V0VmlldyIsImdldENvbnRyb2xsZXIiLCJfb25CZWZvcmVCaW5kaW5nIiwib25BZnRlckJpbmRpbmciLCJfb25BZnRlckJpbmRpbmciLCJjbG9zZUNvbHVtbiIsImludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJzZXRQcm9wZXJ0eSIsImNvbnRleHQiLCJwYXRoIiwiZ2V0UGF0aCIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibWV0YVBhdGgiLCJnZXRNZXRhUGF0aCIsInRlY2huaWNhbEtleXMiLCJnZXRPYmplY3QiLCJlbnRyeSIsInRlY2huaWNhbEtleXNPYmplY3QiLCJrZXkiLCJvYmpLZXkiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkludGVybmFsUm91dGluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBJbnRlcm5hbFJvdXRpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsUm91dGluZ1wiO1xuaW1wb3J0IHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgT2JqZWN0UGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvT2JqZWN0UGFnZS9PYmplY3RQYWdlQ29udHJvbGxlci5jb250cm9sbGVyXCI7XG5pbXBvcnQgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcblxuY29uc3QgSW50ZXJuYWxSb3V0aW5nRXh0ZW5zaW9uID0ge1xuXHRvbkJlZm9yZUJpbmRpbmc6IGZ1bmN0aW9uICh0aGlzOiBJbnRlcm5hbFJvdXRpbmcsIG9Db250ZXh0OiBhbnksIG1QYXJhbWV0ZXJzOiBhbnkpIHtcblx0XHQodGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyKS5fb25CZWZvcmVCaW5kaW5nKG9Db250ZXh0LCBtUGFyYW1ldGVycyk7XG5cdH0sXG5cdG9uQWZ0ZXJCaW5kaW5nOiBmdW5jdGlvbiAodGhpczogSW50ZXJuYWxSb3V0aW5nLCBvQ29udGV4dDogYW55LCBtUGFyYW1ldGVyczogYW55KSB7XG5cdFx0KHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcikuX29uQWZ0ZXJCaW5kaW5nKG9Db250ZXh0LCBtUGFyYW1ldGVycyk7XG5cdH0sXG5cdGNsb3NlQ29sdW1uOiBmdW5jdGlvbiAodGhpczogSW50ZXJuYWxSb3V0aW5nKSB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB0aGlzLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiZmNsQ29sdW1uQ2xvc2VkXCIsIHRydWUpO1xuXHRcdGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0Y29uc3QgcGF0aCA9IChjb250ZXh0ICYmIGNvbnRleHQuZ2V0UGF0aCgpKSB8fCBcIlwiO1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IGNvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBtZXRhUGF0aCA9IG1ldGFNb2RlbC5nZXRNZXRhUGF0aChwYXRoKTtcblxuXHRcdGNvbnN0IHRlY2huaWNhbEtleXMgPSBtZXRhTW9kZWwuZ2V0T2JqZWN0KGAke21ldGFQYXRofS8kVHlwZS8kS2V5YCk7XG5cdFx0Y29uc3QgZW50cnkgPSBjb250ZXh0Py5nZXRPYmplY3QoKTtcblx0XHRjb25zdCB0ZWNobmljYWxLZXlzT2JqZWN0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdGZvciAoY29uc3Qga2V5IGluIHRlY2huaWNhbEtleXMpIHtcblx0XHRcdGNvbnN0IG9iaktleSA9IHRlY2huaWNhbEtleXNba2V5XTtcblx0XHRcdGlmICghdGVjaG5pY2FsS2V5c09iamVjdFtvYmpLZXldKSB7XG5cdFx0XHRcdHRlY2huaWNhbEtleXNPYmplY3Rbb2JqS2V5XSA9IGVudHJ5W29iaktleV07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwidGVjaG5pY2FsS2V5c09mTGFzdFNlZW5SZWNvcmRcIiwgdGVjaG5pY2FsS2V5c09iamVjdCk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEludGVybmFsUm91dGluZ0V4dGVuc2lvbjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7OztFQUtBLElBQU1BLHdCQUF3QixHQUFHO0lBQ2hDQyxlQUFlLEVBQUUsVUFBaUNDLFFBQWEsRUFBRUMsV0FBZ0IsRUFBRTtNQUNqRixJQUFJLENBQUNDLE9BQU8sRUFBRSxDQUFDQyxhQUFhLEVBQUUsQ0FBMEJDLGdCQUFnQixDQUFDSixRQUFRLEVBQUVDLFdBQVcsQ0FBQztJQUNqRyxDQUFDO0lBQ0RJLGNBQWMsRUFBRSxVQUFpQ0wsUUFBYSxFQUFFQyxXQUFnQixFQUFFO01BQ2hGLElBQUksQ0FBQ0MsT0FBTyxFQUFFLENBQUNDLGFBQWEsRUFBRSxDQUEwQkcsZUFBZSxDQUFDTixRQUFRLEVBQUVDLFdBQVcsQ0FBQztJQUNoRyxDQUFDO0lBQ0RNLFdBQVcsRUFBRSxZQUFpQztNQUM3QyxJQUFNQyxvQkFBb0IsR0FBRyxJQUFJLENBQUNOLE9BQU8sRUFBRSxDQUFDTyxpQkFBaUIsQ0FBQyxVQUFVLENBQXlCO01BQ2pHRCxvQkFBb0IsQ0FBQ0UsV0FBVyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQztNQUN6RCxJQUFNQyxPQUFPLEdBQUcsSUFBSSxDQUFDVCxPQUFPLEVBQUUsQ0FBQ08saUJBQWlCLEVBQWE7TUFDN0QsSUFBTUcsSUFBSSxHQUFJRCxPQUFPLElBQUlBLE9BQU8sQ0FBQ0UsT0FBTyxFQUFFLElBQUssRUFBRTtNQUNqRCxJQUFNQyxTQUFTLEdBQUdILE9BQU8sQ0FBQ0ksUUFBUSxFQUFFLENBQUNDLFlBQVksRUFBRTtNQUNuRCxJQUFNQyxRQUFRLEdBQUdILFNBQVMsQ0FBQ0ksV0FBVyxDQUFDTixJQUFJLENBQUM7TUFFNUMsSUFBTU8sYUFBYSxHQUFHTCxTQUFTLENBQUNNLFNBQVMsV0FBSUgsUUFBUSxpQkFBYztNQUNuRSxJQUFNSSxLQUFLLEdBQUdWLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFUyxTQUFTLEVBQUU7TUFDbEMsSUFBTUUsbUJBQTRDLEdBQUcsQ0FBQyxDQUFDO01BQ3ZELEtBQUssSUFBTUMsR0FBRyxJQUFJSixhQUFhLEVBQUU7UUFDaEMsSUFBTUssTUFBTSxHQUFHTCxhQUFhLENBQUNJLEdBQUcsQ0FBQztRQUNqQyxJQUFJLENBQUNELG1CQUFtQixDQUFDRSxNQUFNLENBQUMsRUFBRTtVQUNqQ0YsbUJBQW1CLENBQUNFLE1BQU0sQ0FBQyxHQUFHSCxLQUFLLENBQUNHLE1BQU0sQ0FBQztRQUM1QztNQUNEO01BQ0FoQixvQkFBb0IsQ0FBQ0UsV0FBVyxDQUFDLCtCQUErQixFQUFFWSxtQkFBbUIsQ0FBQztJQUN2RjtFQUNELENBQUM7RUFBQyxPQUVheEIsd0JBQXdCO0FBQUEifQ==
|
|
5
|
+
sap.ui.define([],function(){"use strict";const t={onBeforeBinding:function(t,e){this.getView().getController()._onBeforeBinding(t,e)},onAfterBinding:function(t,e){this.getView().getController()._onAfterBinding(t,e)},closeColumn:function(){const t=this.getView().getBindingContext("internal");t.setProperty("fclColumnClosed",true);const e=this.getView().getBindingContext();const n=e&&e.getPath()||"";const o=e.getModel().getMetaModel();const i=o.getMetaPath(n);const s=o.getObject(`${i}/$Type/$Key`);const c=e===null||e===void 0?void 0:e.getObject();const g={};for(const t in s){const e=s[t];if(!g[e]){g[e]=c[e]}}t.setProperty("technicalKeysOfLastSeenRecord",g)}};return t},false);
|
|
6
|
+
//# sourceMappingURL=InternalRouting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InternalRouting.js","names":["sap","ui","define","InternalRoutingExtension","onBeforeBinding","oContext","mParameters","this","getView","getController","_onBeforeBinding","onAfterBinding","_onAfterBinding","closeColumn","internalModelContext","getBindingContext","setProperty","context","path","getPath","metaModel","getModel","getMetaModel","metaPath","getMetaPath","technicalKeys","getObject","entry","technicalKeysObject","key","objKey"],"sources":["InternalRouting-dbg.js"],"mappings":";;;;AAIAA,IAAIC,GAAGC,OAAO,GAAI,WAChB,aAEA,MAAMC,EAA2B,CAC/BC,gBAAiB,SAAUC,EAAUC,GACnCC,KAAKC,UAAUC,gBAAgBC,iBAAiBL,EAAUC,EAC5D,EACAK,eAAgB,SAAUN,EAAUC,GAClCC,KAAKC,UAAUC,gBAAgBG,gBAAgBP,EAAUC,EAC3D,EACAO,YAAa,WACX,MAAMC,EAAuBP,KAAKC,UAAUO,kBAAkB,YAC9DD,EAAqBE,YAAY,kBAAmB,MACpD,MAAMC,EAAUV,KAAKC,UAAUO,oBAC/B,MAAMG,EAAOD,GAAWA,EAAQE,WAAa,GAC7C,MAAMC,EAAYH,EAAQI,WAAWC,eACrC,MAAMC,EAAWH,EAAUI,YAAYN,GACvC,MAAMO,EAAgBL,EAAUM,UAAU,GAAGH,gBAC7C,MAAMI,EAAQV,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQS,YACxE,MAAME,EAAsB,CAAC,EAC7B,IAAK,MAAMC,KAAOJ,EAAe,CAC/B,MAAMK,EAASL,EAAcI,GAC7B,IAAKD,EAAoBE,GAAS,CAChCF,EAAoBE,GAAUH,EAAMG,EACtC,CACF,CACAhB,EAAqBE,YAAY,gCAAiCY,EACpE,GAEF,OAAOzB,CACT,EAAG"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define([], function () {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const MessageHandlerExtension = {
|
|
9
|
+
getShowBoundMessagesInMessageDialog: function () {
|
|
10
|
+
// in case of edit mode we show the messages in the message popover
|
|
11
|
+
return !this.base.getModel("ui").getProperty("/isEditable") || this.base.getView().getBindingContext("internal").getProperty("isActionParameterDialogOpen") || this.base.getView().getBindingContext("internal").getProperty("getBoundMessagesForMassEdit");
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
return MessageHandlerExtension;
|
|
15
|
+
}, false);
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlSGFuZGxlckV4dGVuc2lvbiIsImdldFNob3dCb3VuZE1lc3NhZ2VzSW5NZXNzYWdlRGlhbG9nIiwiYmFzZSIsImdldE1vZGVsIiwiZ2V0UHJvcGVydHkiLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1lc3NhZ2VIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIE1lc3NhZ2VIYW5kbGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9NZXNzYWdlSGFuZGxlclwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5cbmNvbnN0IE1lc3NhZ2VIYW5kbGVyRXh0ZW5zaW9uID0ge1xuXHRnZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZzogZnVuY3Rpb24gKHRoaXM6IE1lc3NhZ2VIYW5kbGVyKSB7XG5cdFx0Ly8gaW4gY2FzZSBvZiBlZGl0IG1vZGUgd2Ugc2hvdyB0aGUgbWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgcG9wb3ZlclxuXHRcdHJldHVybiAoXG5cdFx0XHQhdGhpcy5iYXNlLmdldE1vZGVsKFwidWlcIikuZ2V0UHJvcGVydHkoXCIvaXNFZGl0YWJsZVwiKSB8fFxuXHRcdFx0KHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCkuZ2V0UHJvcGVydHkoXCJpc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW5cIikgfHxcblx0XHRcdCh0aGlzLmJhc2UuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQpLmdldFByb3BlcnR5KFwiZ2V0Qm91bmRNZXNzYWdlc0Zvck1hc3NFZGl0XCIpXG5cdFx0KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgTWVzc2FnZUhhbmRsZXJFeHRlbnNpb247XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7RUFHQSxNQUFNQSx1QkFBdUIsR0FBRztJQUMvQkMsbUNBQW1DLEVBQUUsWUFBZ0M7TUFDcEU7TUFDQSxPQUNDLENBQUMsSUFBSSxDQUFDQyxJQUFJLENBQUNDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUNuRCxJQUFJLENBQUNGLElBQUksQ0FBQ0csT0FBTyxFQUFFLENBQUNDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUEwQkYsV0FBVyxDQUFDLDZCQUE2QixDQUFDLElBQ3JILElBQUksQ0FBQ0YsSUFBSSxDQUFDRyxPQUFPLEVBQUUsQ0FBQ0MsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQTBCRixXQUFXLENBQUMsNkJBQTZCLENBQUM7SUFFeEg7RUFDRCxDQUFDO0VBQUMsT0FFYUosdUJBQXVCO0FBQUEifQ==
|
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
-
* (c) Copyright 2009-
|
|
3
|
+
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define([], function
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var MessageHandlerExtension = {
|
|
9
|
-
getShowBoundMessagesInMessageDialog: function () {
|
|
10
|
-
// in case of edit mode we show the messages in the message popover
|
|
11
|
-
return !this.base.getModel("ui").getProperty("/isEditable") || this.base.getView().getBindingContext("internal").getProperty("isActionParameterDialogOpen") || this.base.getView().getBindingContext("internal").getProperty("getBoundMessagesForMassEdit");
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
return MessageHandlerExtension;
|
|
15
|
-
}, false);
|
|
16
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlSGFuZGxlckV4dGVuc2lvbiIsImdldFNob3dCb3VuZE1lc3NhZ2VzSW5NZXNzYWdlRGlhbG9nIiwiYmFzZSIsImdldE1vZGVsIiwiZ2V0UHJvcGVydHkiLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1lc3NhZ2VIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIE1lc3NhZ2VIYW5kbGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9NZXNzYWdlSGFuZGxlclwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5cbmNvbnN0IE1lc3NhZ2VIYW5kbGVyRXh0ZW5zaW9uID0ge1xuXHRnZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZzogZnVuY3Rpb24gKHRoaXM6IE1lc3NhZ2VIYW5kbGVyKSB7XG5cdFx0Ly8gaW4gY2FzZSBvZiBlZGl0IG1vZGUgd2Ugc2hvdyB0aGUgbWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgcG9wb3ZlclxuXHRcdHJldHVybiAoXG5cdFx0XHQhdGhpcy5iYXNlLmdldE1vZGVsKFwidWlcIikuZ2V0UHJvcGVydHkoXCIvaXNFZGl0YWJsZVwiKSB8fFxuXHRcdFx0KHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCkuZ2V0UHJvcGVydHkoXCJpc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW5cIikgfHxcblx0XHRcdCh0aGlzLmJhc2UuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQpLmdldFByb3BlcnR5KFwiZ2V0Qm91bmRNZXNzYWdlc0Zvck1hc3NFZGl0XCIpXG5cdFx0KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgTWVzc2FnZUhhbmRsZXJFeHRlbnNpb247XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7RUFHQSxJQUFNQSx1QkFBdUIsR0FBRztJQUMvQkMsbUNBQW1DLEVBQUUsWUFBZ0M7TUFDcEU7TUFDQSxPQUNDLENBQUMsSUFBSSxDQUFDQyxJQUFJLENBQUNDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUNuRCxJQUFJLENBQUNGLElBQUksQ0FBQ0csT0FBTyxFQUFFLENBQUNDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUEwQkYsV0FBVyxDQUFDLDZCQUE2QixDQUFDLElBQ3JILElBQUksQ0FBQ0YsSUFBSSxDQUFDRyxPQUFPLEVBQUUsQ0FBQ0MsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQTBCRixXQUFXLENBQUMsNkJBQTZCLENBQUM7SUFFeEg7RUFDRCxDQUFDO0VBQUMsT0FFYUosdUJBQXVCO0FBQUEifQ==
|
|
5
|
+
sap.ui.define([],function(){"use strict";const e={getShowBoundMessagesInMessageDialog:function(){return!this.base.getModel("ui").getProperty("/isEditable")||this.base.getView().getBindingContext("internal").getProperty("isActionParameterDialogOpen")||this.base.getView().getBindingContext("internal").getProperty("getBoundMessagesForMassEdit")}};return e},false);
|
|
6
|
+
//# sourceMappingURL=MessageHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageHandler.js","names":["sap","ui","define","MessageHandlerExtension","getShowBoundMessagesInMessageDialog","this","base","getModel","getProperty","getView","getBindingContext"],"sources":["MessageHandler-dbg.js"],"mappings":";;;;AAIAA,IAAIC,GAAGC,OAAO,GAAI,WAChB,aAEA,MAAMC,EAA0B,CAC9BC,oCAAqC,WAEnC,OAAQC,KAAKC,KAAKC,SAAS,MAAMC,YAAY,gBAAkBH,KAAKC,KAAKG,UAAUC,kBAAkB,YAAYF,YAAY,gCAAkCH,KAAKC,KAAKG,UAAUC,kBAAkB,YAAYF,YAAY,8BAC/N,GAEF,OAAOL,CACT,EAAG"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define([], function () {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const PaginatorExtensionOverride = {
|
|
9
|
+
onBeforeContextUpdate: function (oListBinding, iCurrentContextIndex) {
|
|
10
|
+
const oCurrentView = this.getView(),
|
|
11
|
+
oControlContext = oCurrentView && oCurrentView.getBindingContext(),
|
|
12
|
+
aCurrentContexts = oListBinding && oListBinding.getCurrentContexts(),
|
|
13
|
+
oPaginatorCurrentContext = aCurrentContexts[iCurrentContextIndex];
|
|
14
|
+
if (oPaginatorCurrentContext && oControlContext && oPaginatorCurrentContext.getPath() !== oControlContext.getPath()) {
|
|
15
|
+
// Prevent default update of context index in Object Page Paginator when view context is different from the paginator context.
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
onContextUpdate: function (oContext) {
|
|
20
|
+
this.base._routing.navigateToContext(oContext, {
|
|
21
|
+
callExtension: true
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
return PaginatorExtensionOverride;
|
|
26
|
+
}, false);
|
|
27
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdpbmF0b3JFeHRlbnNpb25PdmVycmlkZSIsIm9uQmVmb3JlQ29udGV4dFVwZGF0ZSIsIm9MaXN0QmluZGluZyIsImlDdXJyZW50Q29udGV4dEluZGV4Iiwib0N1cnJlbnRWaWV3IiwiZ2V0VmlldyIsIm9Db250cm9sQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiYUN1cnJlbnRDb250ZXh0cyIsImdldEN1cnJlbnRDb250ZXh0cyIsIm9QYWdpbmF0b3JDdXJyZW50Q29udGV4dCIsImdldFBhdGgiLCJvbkNvbnRleHRVcGRhdGUiLCJvQ29udGV4dCIsImJhc2UiLCJfcm91dGluZyIsIm5hdmlnYXRlVG9Db250ZXh0IiwiY2FsbEV4dGVuc2lvbiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUGFnaW5hdG9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIFBhZ2luYXRvciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUGFnaW5hdG9yXCI7XG5cbmNvbnN0IFBhZ2luYXRvckV4dGVuc2lvbk92ZXJyaWRlID0ge1xuXHRvbkJlZm9yZUNvbnRleHRVcGRhdGU6IGZ1bmN0aW9uICh0aGlzOiBQYWdpbmF0b3IsIG9MaXN0QmluZGluZzogYW55LCBpQ3VycmVudENvbnRleHRJbmRleDogYW55KSB7XG5cdFx0Y29uc3Qgb0N1cnJlbnRWaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbENvbnRleHQgPSBvQ3VycmVudFZpZXcgJiYgb0N1cnJlbnRWaWV3LmdldEJpbmRpbmdDb250ZXh0KCksXG5cdFx0XHRhQ3VycmVudENvbnRleHRzID0gb0xpc3RCaW5kaW5nICYmIG9MaXN0QmluZGluZy5nZXRDdXJyZW50Q29udGV4dHMoKSxcblx0XHRcdG9QYWdpbmF0b3JDdXJyZW50Q29udGV4dCA9IGFDdXJyZW50Q29udGV4dHNbaUN1cnJlbnRDb250ZXh0SW5kZXhdO1xuXG5cdFx0aWYgKG9QYWdpbmF0b3JDdXJyZW50Q29udGV4dCAmJiBvQ29udHJvbENvbnRleHQgJiYgb1BhZ2luYXRvckN1cnJlbnRDb250ZXh0LmdldFBhdGgoKSAhPT0gb0NvbnRyb2xDb250ZXh0LmdldFBhdGgoKSkge1xuXHRcdFx0Ly8gUHJldmVudCBkZWZhdWx0IHVwZGF0ZSBvZiBjb250ZXh0IGluZGV4IGluIE9iamVjdCBQYWdlIFBhZ2luYXRvciB3aGVuIHZpZXcgY29udGV4dCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgcGFnaW5hdG9yIGNvbnRleHQuXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH0sXG5cblx0b25Db250ZXh0VXBkYXRlOiBmdW5jdGlvbiAodGhpczogUGFnaW5hdG9yLCBvQ29udGV4dDogYW55KSB7XG5cdFx0dGhpcy5iYXNlLl9yb3V0aW5nLm5hdmlnYXRlVG9Db250ZXh0KG9Db250ZXh0LCB7IGNhbGxFeHRlbnNpb246IHRydWUgfSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFBhZ2luYXRvckV4dGVuc2lvbk92ZXJyaWRlO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7O0VBRUEsTUFBTUEsMEJBQTBCLEdBQUc7SUFDbENDLHFCQUFxQixFQUFFLFVBQTJCQyxZQUFpQixFQUFFQyxvQkFBeUIsRUFBRTtNQUMvRixNQUFNQyxZQUFZLEdBQUcsSUFBSSxDQUFDQyxPQUFPLEVBQUU7UUFDbENDLGVBQWUsR0FBR0YsWUFBWSxJQUFJQSxZQUFZLENBQUNHLGlCQUFpQixFQUFFO1FBQ2xFQyxnQkFBZ0IsR0FBR04sWUFBWSxJQUFJQSxZQUFZLENBQUNPLGtCQUFrQixFQUFFO1FBQ3BFQyx3QkFBd0IsR0FBR0YsZ0JBQWdCLENBQUNMLG9CQUFvQixDQUFDO01BRWxFLElBQUlPLHdCQUF3QixJQUFJSixlQUFlLElBQUlJLHdCQUF3QixDQUFDQyxPQUFPLEVBQUUsS0FBS0wsZUFBZSxDQUFDSyxPQUFPLEVBQUUsRUFBRTtRQUNwSDtRQUNBLE9BQU8sSUFBSTtNQUNaO0lBQ0QsQ0FBQztJQUVEQyxlQUFlLEVBQUUsVUFBMkJDLFFBQWEsRUFBRTtNQUMxRCxJQUFJLENBQUNDLElBQUksQ0FBQ0MsUUFBUSxDQUFDQyxpQkFBaUIsQ0FBQ0gsUUFBUSxFQUFFO1FBQUVJLGFBQWEsRUFBRTtNQUFLLENBQUMsQ0FBQztJQUN4RTtFQUNELENBQUM7RUFBQyxPQUVhakIsMEJBQTBCO0FBQUEifQ==
|
|
@@ -1,27 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
-
* (c) Copyright 2009-
|
|
3
|
+
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define([], function () {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var PaginatorExtensionOverride = {
|
|
9
|
-
onBeforeContextUpdate: function (oListBinding, iCurrentContextIndex) {
|
|
10
|
-
var oCurrentView = this.getView(),
|
|
11
|
-
oControlContext = oCurrentView && oCurrentView.getBindingContext(),
|
|
12
|
-
aCurrentContexts = oListBinding && oListBinding.getCurrentContexts(),
|
|
13
|
-
oPaginatorCurrentContext = aCurrentContexts[iCurrentContextIndex];
|
|
14
|
-
if (oPaginatorCurrentContext && oControlContext && oPaginatorCurrentContext.getPath() !== oControlContext.getPath()) {
|
|
15
|
-
// Prevent default update of context index in Object Page Paginator when view context is different from the paginator context.
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
onContextUpdate: function (oContext) {
|
|
20
|
-
this.base._routing.navigateToContext(oContext, {
|
|
21
|
-
callExtension: true
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
return PaginatorExtensionOverride;
|
|
26
|
-
}, false);
|
|
27
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdpbmF0b3JFeHRlbnNpb25PdmVycmlkZSIsIm9uQmVmb3JlQ29udGV4dFVwZGF0ZSIsIm9MaXN0QmluZGluZyIsImlDdXJyZW50Q29udGV4dEluZGV4Iiwib0N1cnJlbnRWaWV3IiwiZ2V0VmlldyIsIm9Db250cm9sQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiYUN1cnJlbnRDb250ZXh0cyIsImdldEN1cnJlbnRDb250ZXh0cyIsIm9QYWdpbmF0b3JDdXJyZW50Q29udGV4dCIsImdldFBhdGgiLCJvbkNvbnRleHRVcGRhdGUiLCJvQ29udGV4dCIsImJhc2UiLCJfcm91dGluZyIsIm5hdmlnYXRlVG9Db250ZXh0IiwiY2FsbEV4dGVuc2lvbiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUGFnaW5hdG9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIFBhZ2luYXRvciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUGFnaW5hdG9yXCI7XG5cbmNvbnN0IFBhZ2luYXRvckV4dGVuc2lvbk92ZXJyaWRlID0ge1xuXHRvbkJlZm9yZUNvbnRleHRVcGRhdGU6IGZ1bmN0aW9uICh0aGlzOiBQYWdpbmF0b3IsIG9MaXN0QmluZGluZzogYW55LCBpQ3VycmVudENvbnRleHRJbmRleDogYW55KSB7XG5cdFx0Y29uc3Qgb0N1cnJlbnRWaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbENvbnRleHQgPSBvQ3VycmVudFZpZXcgJiYgb0N1cnJlbnRWaWV3LmdldEJpbmRpbmdDb250ZXh0KCksXG5cdFx0XHRhQ3VycmVudENvbnRleHRzID0gb0xpc3RCaW5kaW5nICYmIG9MaXN0QmluZGluZy5nZXRDdXJyZW50Q29udGV4dHMoKSxcblx0XHRcdG9QYWdpbmF0b3JDdXJyZW50Q29udGV4dCA9IGFDdXJyZW50Q29udGV4dHNbaUN1cnJlbnRDb250ZXh0SW5kZXhdO1xuXG5cdFx0aWYgKG9QYWdpbmF0b3JDdXJyZW50Q29udGV4dCAmJiBvQ29udHJvbENvbnRleHQgJiYgb1BhZ2luYXRvckN1cnJlbnRDb250ZXh0LmdldFBhdGgoKSAhPT0gb0NvbnRyb2xDb250ZXh0LmdldFBhdGgoKSkge1xuXHRcdFx0Ly8gUHJldmVudCBkZWZhdWx0IHVwZGF0ZSBvZiBjb250ZXh0IGluZGV4IGluIE9iamVjdCBQYWdlIFBhZ2luYXRvciB3aGVuIHZpZXcgY29udGV4dCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgcGFnaW5hdG9yIGNvbnRleHQuXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH0sXG5cblx0b25Db250ZXh0VXBkYXRlOiBmdW5jdGlvbiAodGhpczogUGFnaW5hdG9yLCBvQ29udGV4dDogYW55KSB7XG5cdFx0dGhpcy5iYXNlLl9yb3V0aW5nLm5hdmlnYXRlVG9Db250ZXh0KG9Db250ZXh0LCB7IGNhbGxFeHRlbnNpb246IHRydWUgfSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFBhZ2luYXRvckV4dGVuc2lvbk92ZXJyaWRlO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7O0VBRUEsSUFBTUEsMEJBQTBCLEdBQUc7SUFDbENDLHFCQUFxQixFQUFFLFVBQTJCQyxZQUFpQixFQUFFQyxvQkFBeUIsRUFBRTtNQUMvRixJQUFNQyxZQUFZLEdBQUcsSUFBSSxDQUFDQyxPQUFPLEVBQUU7UUFDbENDLGVBQWUsR0FBR0YsWUFBWSxJQUFJQSxZQUFZLENBQUNHLGlCQUFpQixFQUFFO1FBQ2xFQyxnQkFBZ0IsR0FBR04sWUFBWSxJQUFJQSxZQUFZLENBQUNPLGtCQUFrQixFQUFFO1FBQ3BFQyx3QkFBd0IsR0FBR0YsZ0JBQWdCLENBQUNMLG9CQUFvQixDQUFDO01BRWxFLElBQUlPLHdCQUF3QixJQUFJSixlQUFlLElBQUlJLHdCQUF3QixDQUFDQyxPQUFPLEVBQUUsS0FBS0wsZUFBZSxDQUFDSyxPQUFPLEVBQUUsRUFBRTtRQUNwSDtRQUNBLE9BQU8sSUFBSTtNQUNaO0lBQ0QsQ0FBQztJQUVEQyxlQUFlLEVBQUUsVUFBMkJDLFFBQWEsRUFBRTtNQUMxRCxJQUFJLENBQUNDLElBQUksQ0FBQ0MsUUFBUSxDQUFDQyxpQkFBaUIsQ0FBQ0gsUUFBUSxFQUFFO1FBQUVJLGFBQWEsRUFBRTtNQUFLLENBQUMsQ0FBQztJQUN4RTtFQUNELENBQUM7RUFBQyxPQUVhakIsMEJBQTBCO0FBQUEifQ==
|
|
5
|
+
sap.ui.define([],function(){"use strict";const t={onBeforeContextUpdate:function(t,e){const n=this.getView(),o=n&&n.getBindingContext(),i=t&&t.getCurrentContexts(),r=i[e];if(r&&o&&r.getPath()!==o.getPath()){return true}},onContextUpdate:function(t){this.base._routing.navigateToContext(t,{callExtension:true})}};return t},false);
|
|
6
|
+
//# sourceMappingURL=Paginator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Paginator.js","names":["sap","ui","define","PaginatorExtensionOverride","onBeforeContextUpdate","oListBinding","iCurrentContextIndex","oCurrentView","this","getView","oControlContext","getBindingContext","aCurrentContexts","getCurrentContexts","oPaginatorCurrentContext","getPath","onContextUpdate","oContext","base","_routing","navigateToContext","callExtension"],"sources":["Paginator-dbg.js"],"mappings":";;;;AAIAA,IAAIC,GAAGC,OAAO,GAAI,WAChB,aAEA,MAAMC,EAA6B,CACjCC,sBAAuB,SAAUC,EAAcC,GAC7C,MAAMC,EAAeC,KAAKC,UACxBC,EAAkBH,GAAgBA,EAAaI,oBAC/CC,EAAmBP,GAAgBA,EAAaQ,qBAChDC,EAA2BF,EAAiBN,GAC9C,GAAIQ,GAA4BJ,GAAmBI,EAAyBC,YAAcL,EAAgBK,UAAW,CAEnH,OAAO,IACT,CACF,EACAC,gBAAiB,SAAUC,GACzBT,KAAKU,KAAKC,SAASC,kBAAkBH,EAAU,CAC7CI,cAAe,MAEnB,GAEF,OAAOlB,CACT,EAAG"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/SemanticKeyHelper", "sap/ui/core/routing/HashChanger", "sap/ui/model/Filter", "sap/ui/model/FilterOperator"], function (Log, ModelHelper, SemanticKeyHelper, HashChanger, Filter, FilterOperator) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
let bGlobalIsStickySupported;
|
|
9
|
+
function createFilterToFetchActiveContext(mKeyValues, bIsActiveEntityDefined) {
|
|
10
|
+
const aKeys = Object.keys(mKeyValues);
|
|
11
|
+
const aFilters = aKeys.map(function (sKey) {
|
|
12
|
+
const sValue = mKeyValues[sKey];
|
|
13
|
+
if (sValue !== undefined) {
|
|
14
|
+
return new Filter(sKey, FilterOperator.EQ, sValue);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
if (bIsActiveEntityDefined) {
|
|
18
|
+
const oActiveFilter = new Filter({
|
|
19
|
+
filters: [new Filter("SiblingEntity/IsActiveEntity", FilterOperator.EQ, true)],
|
|
20
|
+
and: false
|
|
21
|
+
});
|
|
22
|
+
aFilters.push(oActiveFilter);
|
|
23
|
+
}
|
|
24
|
+
return new Filter(aFilters, true);
|
|
25
|
+
}
|
|
26
|
+
function getActiveContextPath(oController, sPageEntityName, oFilter) {
|
|
27
|
+
const oListBinding = oController.getView().getBindingContext().getModel().bindList(`/${sPageEntityName}`, undefined, undefined, oFilter, {
|
|
28
|
+
$$groupId: "$auto.Heroes"
|
|
29
|
+
});
|
|
30
|
+
return oListBinding.requestContexts(0, 2).then(function (oContexts) {
|
|
31
|
+
if (oContexts && oContexts.length) {
|
|
32
|
+
return oContexts[0].getPath();
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
function getActiveContextInstances(oContext, oController, oEntitySet) {
|
|
37
|
+
const aActiveContextpromises = [];
|
|
38
|
+
const aPages = [];
|
|
39
|
+
let sMetaPath = oContext.getModel().getMetaModel().getMetaPath(oContext.getPath());
|
|
40
|
+
if (sMetaPath.indexOf("/") === 0) {
|
|
41
|
+
sMetaPath = sMetaPath.substring(1);
|
|
42
|
+
}
|
|
43
|
+
const aMetaPathArray = sMetaPath.split("/");
|
|
44
|
+
const sCurrentHashNoParams = HashChanger.getInstance().getHash().split("?")[0];
|
|
45
|
+
const aCurrentHashArray = sCurrentHashNoParams.split("/");
|
|
46
|
+
|
|
47
|
+
// oPageMap - creating an object that contains map of metapath name and it's technical details
|
|
48
|
+
// which is required to create a filter to fetch the relavant/correct active context
|
|
49
|
+
// Example: {SalesOrderManage:{technicalID:technicalIDValue}, _Item:{technicalID:technicalIDValue}} etc.,
|
|
50
|
+
const oPageMap = {};
|
|
51
|
+
const aPageHashArray = [];
|
|
52
|
+
aCurrentHashArray.forEach(function (sPageHash) {
|
|
53
|
+
const aKeyValues = sPageHash.substring(sPageHash.indexOf("(") + 1, sPageHash.length - 1).split(",");
|
|
54
|
+
const mKeyValues = {};
|
|
55
|
+
const sPageHashName = sPageHash.split("(")[0];
|
|
56
|
+
oPageMap[sPageHashName] = {};
|
|
57
|
+
aPageHashArray.push(sPageHashName);
|
|
58
|
+
oPageMap[sPageHashName]["bIsActiveEntityDefined"] = true;
|
|
59
|
+
for (let i = 0; i < aKeyValues.length; i++) {
|
|
60
|
+
const sKeyAssignment = aKeyValues[i];
|
|
61
|
+
const aParts = sKeyAssignment.split("=");
|
|
62
|
+
let sKeyValue = aParts[1];
|
|
63
|
+
let sKey = aParts[0];
|
|
64
|
+
// In case if only one technical key is defined then the url just contains the technicalIDValue but not the technicalID
|
|
65
|
+
// Example: SalesOrderManage(ID=11111129-aaaa-bbbb-cccc-ddddeeeeffff,IsActiveEntity=false)/_Item(11111129-aaaa-bbbb-cccc-ddddeeeeffff)
|
|
66
|
+
// In above example SalesOrderItem has only one technical key defined, hence technicalID info is not present in the url
|
|
67
|
+
// Hence in such cases we get technical key and use them to fetch active context
|
|
68
|
+
if (sKeyAssignment.indexOf("=") === -1) {
|
|
69
|
+
const oMetaModel = oContext.getModel().getMetaModel();
|
|
70
|
+
const aTechnicalKeys = oMetaModel.getObject(`/${aPageHashArray.join("/")}/$Type/$Key`);
|
|
71
|
+
sKeyValue = aParts[0];
|
|
72
|
+
sKey = aTechnicalKeys[0];
|
|
73
|
+
oPageMap[sPageHash.split("(")[0]]["bIsActiveEntityDefined"] = false;
|
|
74
|
+
}
|
|
75
|
+
if (sKey !== "IsActiveEntity") {
|
|
76
|
+
if (sKeyValue.indexOf("'") === 0 && sKeyValue.lastIndexOf("'") === sKeyValue.length - 1) {
|
|
77
|
+
// Remove the quotes from the value and decode special chars
|
|
78
|
+
sKeyValue = decodeURIComponent(sKeyValue.substring(1, sKeyValue.length - 1));
|
|
79
|
+
}
|
|
80
|
+
mKeyValues[sKey] = sKeyValue;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
oPageMap[sPageHashName].mKeyValues = mKeyValues;
|
|
84
|
+
});
|
|
85
|
+
let oPageEntitySet = oEntitySet;
|
|
86
|
+
aMetaPathArray.forEach(function (sNavigationPath) {
|
|
87
|
+
const oPageInfo = {};
|
|
88
|
+
const sPageEntitySetName = oPageEntitySet.$NavigationPropertyBinding && oPageEntitySet.$NavigationPropertyBinding[sNavigationPath];
|
|
89
|
+
if (sPageEntitySetName) {
|
|
90
|
+
oPageInfo.pageEntityName = oPageEntitySet.$NavigationPropertyBinding[sNavigationPath];
|
|
91
|
+
oPageEntitySet = oContext.getModel().getMetaModel().getObject(`/${sPageEntitySetName}`) || oEntitySet;
|
|
92
|
+
} else {
|
|
93
|
+
oPageInfo.pageEntityName = sNavigationPath;
|
|
94
|
+
}
|
|
95
|
+
oPageInfo.mKeyValues = oPageMap[sNavigationPath].mKeyValues;
|
|
96
|
+
oPageInfo.bIsActiveEntityDefined = oPageMap[sNavigationPath].bIsActiveEntityDefined;
|
|
97
|
+
aPages.push(oPageInfo);
|
|
98
|
+
});
|
|
99
|
+
aPages.forEach(function (oPageInfo) {
|
|
100
|
+
const oFilter = createFilterToFetchActiveContext(oPageInfo.mKeyValues, oPageInfo.bIsActiveEntityDefined);
|
|
101
|
+
aActiveContextpromises.push(getActiveContextPath(oController, oPageInfo.pageEntityName, oFilter));
|
|
102
|
+
});
|
|
103
|
+
return aActiveContextpromises;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Method to fetch active context path's.
|
|
108
|
+
*
|
|
109
|
+
* @param oContext The Page Context
|
|
110
|
+
* @param oController
|
|
111
|
+
* @returns Promise which is resolved once the active context's are fetched
|
|
112
|
+
*/
|
|
113
|
+
function getActiveContextPaths(oContext, oController) {
|
|
114
|
+
const sCurrentHashNoParams = HashChanger.getInstance().getHash().split("?")[0];
|
|
115
|
+
let sRootEntityName = sCurrentHashNoParams && sCurrentHashNoParams.substr(0, sCurrentHashNoParams.indexOf("("));
|
|
116
|
+
if (sRootEntityName.indexOf("/") === 0) {
|
|
117
|
+
sRootEntityName = sRootEntityName.substring(1);
|
|
118
|
+
}
|
|
119
|
+
const oEntitySet = oContext.getModel().getMetaModel().getObject(`/${sRootEntityName}`);
|
|
120
|
+
const oPageContext = oContext;
|
|
121
|
+
const aActiveContextpromises = getActiveContextInstances(oContext, oController, oEntitySet);
|
|
122
|
+
if (aActiveContextpromises.length > 0) {
|
|
123
|
+
return Promise.all(aActiveContextpromises).then(function (aData) {
|
|
124
|
+
const aActiveContextPaths = [];
|
|
125
|
+
let oPageEntitySet = oEntitySet;
|
|
126
|
+
if (aData[0].indexOf("/") === 0) {
|
|
127
|
+
aActiveContextPaths.push(aData[0].substring(1));
|
|
128
|
+
} else {
|
|
129
|
+
aActiveContextPaths.push(aData[0]);
|
|
130
|
+
}
|
|
131
|
+
// In the active context paths identify and replace the entitySet Name with corresponding navigation property name
|
|
132
|
+
// Required to form the url pointing to active context
|
|
133
|
+
// Example : SalesOrderItem --> _Item, MaterialDetails --> _MaterialDetails etc.,
|
|
134
|
+
for (let i = 1; i < aData.length; i++) {
|
|
135
|
+
let sActiveContextPath = aData[i];
|
|
136
|
+
let sNavigatioProperty = "";
|
|
137
|
+
let sEntitySetName = sActiveContextPath && sActiveContextPath.substr(0, sActiveContextPath.indexOf("("));
|
|
138
|
+
if (sEntitySetName.indexOf("/") === 0) {
|
|
139
|
+
sEntitySetName = sEntitySetName.substring(1);
|
|
140
|
+
}
|
|
141
|
+
if (sActiveContextPath.indexOf("/") === 0) {
|
|
142
|
+
sActiveContextPath = sActiveContextPath.substring(1);
|
|
143
|
+
}
|
|
144
|
+
sNavigatioProperty = Object.keys(oPageEntitySet.$NavigationPropertyBinding)[Object.values(oPageEntitySet.$NavigationPropertyBinding).indexOf(sEntitySetName)];
|
|
145
|
+
if (sNavigatioProperty) {
|
|
146
|
+
aActiveContextPaths.push(sActiveContextPath.replace(sEntitySetName, sNavigatioProperty));
|
|
147
|
+
oPageEntitySet = oPageContext.getModel().getMetaModel().getObject(`/${sEntitySetName}`) || oEntitySet;
|
|
148
|
+
} else {
|
|
149
|
+
aActiveContextPaths.push(sActiveContextPath);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return aActiveContextPaths;
|
|
153
|
+
}).catch(function (oError) {
|
|
154
|
+
Log.info("Failed to retrieve one or more active context path's", oError);
|
|
155
|
+
});
|
|
156
|
+
} else {
|
|
157
|
+
return Promise.resolve();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function fetchActiveContextPaths(oContext, oController) {
|
|
161
|
+
let oPromise, aSemanticKeys;
|
|
162
|
+
const sCurrentHashNoParams = HashChanger.getInstance().getHash().split("?")[0];
|
|
163
|
+
if (oContext) {
|
|
164
|
+
const oModel = oContext.getModel();
|
|
165
|
+
const oMetaModel = oModel.getMetaModel();
|
|
166
|
+
bGlobalIsStickySupported = ModelHelper.isStickySessionSupported(oMetaModel);
|
|
167
|
+
let sRootEntityName = sCurrentHashNoParams && sCurrentHashNoParams.substr(0, sCurrentHashNoParams.indexOf("("));
|
|
168
|
+
if (sRootEntityName.indexOf("/") === 0) {
|
|
169
|
+
sRootEntityName = sRootEntityName.substring(1);
|
|
170
|
+
}
|
|
171
|
+
aSemanticKeys = SemanticKeyHelper.getSemanticKeys(oMetaModel, sRootEntityName);
|
|
172
|
+
}
|
|
173
|
+
// Fetch active context details incase of below scenario's(where page is not sticky supported(we do not have draft instance))
|
|
174
|
+
// 1. In case of draft enabled Object page where semantic key based URL is not possible(like semantic keys are not modeled in the entity set)
|
|
175
|
+
// 2. In case of draft enabled Sub Object Pages (where semantic bookmarking is not supported)
|
|
176
|
+
const oViewData = oController.getView().getViewData();
|
|
177
|
+
if (oContext && !bGlobalIsStickySupported && (oViewData.viewLevel === 1 && !aSemanticKeys || oViewData.viewLevel >= 2)) {
|
|
178
|
+
oPromise = getActiveContextPaths(oContext, oController);
|
|
179
|
+
return oPromise;
|
|
180
|
+
} else {
|
|
181
|
+
return Promise.resolve();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// /**
|
|
186
|
+
// * Get share URL.
|
|
187
|
+
// * @param bIsEditable
|
|
188
|
+
// * @param bIsStickySupported
|
|
189
|
+
// * @param aActiveContextPaths
|
|
190
|
+
// * @returns {string} The share URL
|
|
191
|
+
// * @protected
|
|
192
|
+
// * @static
|
|
193
|
+
// */
|
|
194
|
+
function getShareUrl(bIsEditable, bIsStickySupported, aActiveContextPaths) {
|
|
195
|
+
let sShareUrl;
|
|
196
|
+
const sHash = HashChanger.getInstance().getHash();
|
|
197
|
+
const sBasePath = HashChanger.getInstance().hrefForAppSpecificHash ? HashChanger.getInstance().hrefForAppSpecificHash("") : "";
|
|
198
|
+
if (bIsEditable && !bIsStickySupported && aActiveContextPaths) {
|
|
199
|
+
sShareUrl = sBasePath + aActiveContextPaths.join("/");
|
|
200
|
+
} else {
|
|
201
|
+
sShareUrl = sHash ? sBasePath + sHash : window.location.hash;
|
|
202
|
+
}
|
|
203
|
+
return window.location.origin + window.location.pathname + window.location.search + sShareUrl;
|
|
204
|
+
}
|
|
205
|
+
function getShareEmailUrl() {
|
|
206
|
+
const oUShellContainer = sap.ushell && sap.ushell.Container;
|
|
207
|
+
if (oUShellContainer) {
|
|
208
|
+
return oUShellContainer.getFLPUrlAsync(true).then(function (sFLPUrl) {
|
|
209
|
+
return sFLPUrl;
|
|
210
|
+
}).catch(function (sError) {
|
|
211
|
+
Log.error("Could not retrieve cFLP URL for the sharing dialog (dialog will not be opened)", sError);
|
|
212
|
+
});
|
|
213
|
+
} else {
|
|
214
|
+
return Promise.resolve(document.URL);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
function getJamUrl(bIsEditMode, bIsStickySupported, aActiveContextPaths) {
|
|
218
|
+
let sJamUrl;
|
|
219
|
+
const sHash = HashChanger.getInstance().getHash();
|
|
220
|
+
const sBasePath = HashChanger.getInstance().hrefForAppSpecificHash ? HashChanger.getInstance().hrefForAppSpecificHash("") : "";
|
|
221
|
+
if (bIsEditMode && !bIsStickySupported && aActiveContextPaths) {
|
|
222
|
+
sJamUrl = sBasePath + aActiveContextPaths.join("/");
|
|
223
|
+
} else {
|
|
224
|
+
sJamUrl = sHash ? sBasePath + sHash : window.location.hash;
|
|
225
|
+
}
|
|
226
|
+
// in case we are in cFLP scenario, the application is running
|
|
227
|
+
// inside an iframe, and there for we need to get the cFLP URL
|
|
228
|
+
// and not 'document.URL' that represents the iframe URL
|
|
229
|
+
if (sap.ushell && sap.ushell.Container && sap.ushell.Container.runningInIframe && sap.ushell.Container.runningInIframe()) {
|
|
230
|
+
sap.ushell.Container.getFLPUrl(true).then(function (sUrl) {
|
|
231
|
+
return sUrl.substr(0, sUrl.indexOf("#")) + sJamUrl;
|
|
232
|
+
}).catch(function (sError) {
|
|
233
|
+
Log.error("Could not retrieve cFLP URL for the sharing dialog (dialog will not be opened)", sError);
|
|
234
|
+
});
|
|
235
|
+
} else {
|
|
236
|
+
return Promise.resolve(window.location.origin + window.location.pathname + sJamUrl);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
const ShareExtensionOverride = {
|
|
240
|
+
adaptShareMetadata: async function (oShareMetadata) {
|
|
241
|
+
const oContext = this.base.getView().getBindingContext();
|
|
242
|
+
const oUIModel = this.base.getView().getModel("ui");
|
|
243
|
+
const bIsEditable = oUIModel.getProperty("/isEditable");
|
|
244
|
+
try {
|
|
245
|
+
const aActiveContextPaths = await fetchActiveContextPaths(oContext, this.base.getView().getController());
|
|
246
|
+
const oPageTitleInfo = this.base.getView().getController()._getPageTitleInformation();
|
|
247
|
+
const oData = await Promise.all([getJamUrl(bIsEditable, bGlobalIsStickySupported, aActiveContextPaths), getShareUrl(bIsEditable, bGlobalIsStickySupported, aActiveContextPaths), getShareEmailUrl()]);
|
|
248
|
+
let sTitle = oPageTitleInfo.title;
|
|
249
|
+
const sObjectSubtitle = oPageTitleInfo.subtitle ? oPageTitleInfo.subtitle.toString() : "";
|
|
250
|
+
if (sObjectSubtitle) {
|
|
251
|
+
sTitle = `${sTitle} - ${sObjectSubtitle}`;
|
|
252
|
+
}
|
|
253
|
+
oShareMetadata.tile = {
|
|
254
|
+
title: oPageTitleInfo.title,
|
|
255
|
+
subtitle: sObjectSubtitle
|
|
256
|
+
};
|
|
257
|
+
oShareMetadata.email.title = sTitle;
|
|
258
|
+
oShareMetadata.title = sTitle;
|
|
259
|
+
oShareMetadata.jam.url = oData[0];
|
|
260
|
+
oShareMetadata.url = oData[1];
|
|
261
|
+
oShareMetadata.email.url = oData[2];
|
|
262
|
+
// MS Teams collaboration does not want to allow further changes to the URL
|
|
263
|
+
// so update colloborationInfo model at LR override to ignore further extension changes at multiple levels
|
|
264
|
+
const collaborationInfoModel = this.base.getView().getModel("collaborationInfo");
|
|
265
|
+
collaborationInfoModel.setProperty("/url", oShareMetadata.url);
|
|
266
|
+
collaborationInfoModel.setProperty("/appTitle", oShareMetadata.title);
|
|
267
|
+
collaborationInfoModel.setProperty("/subTitle", sObjectSubtitle);
|
|
268
|
+
} catch (error) {
|
|
269
|
+
Log.error(error);
|
|
270
|
+
}
|
|
271
|
+
return oShareMetadata;
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
return ShareExtensionOverride;
|
|
275
|
+
}, false);
|
|
276
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJiR2xvYmFsSXNTdGlja3lTdXBwb3J0ZWQiLCJjcmVhdGVGaWx0ZXJUb0ZldGNoQWN0aXZlQ29udGV4dCIsIm1LZXlWYWx1ZXMiLCJiSXNBY3RpdmVFbnRpdHlEZWZpbmVkIiwiYUtleXMiLCJPYmplY3QiLCJrZXlzIiwiYUZpbHRlcnMiLCJtYXAiLCJzS2V5Iiwic1ZhbHVlIiwidW5kZWZpbmVkIiwiRmlsdGVyIiwiRmlsdGVyT3BlcmF0b3IiLCJFUSIsIm9BY3RpdmVGaWx0ZXIiLCJmaWx0ZXJzIiwiYW5kIiwicHVzaCIsImdldEFjdGl2ZUNvbnRleHRQYXRoIiwib0NvbnRyb2xsZXIiLCJzUGFnZUVudGl0eU5hbWUiLCJvRmlsdGVyIiwib0xpc3RCaW5kaW5nIiwiZ2V0VmlldyIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0TW9kZWwiLCJiaW5kTGlzdCIsIiQkZ3JvdXBJZCIsInJlcXVlc3RDb250ZXh0cyIsInRoZW4iLCJvQ29udGV4dHMiLCJsZW5ndGgiLCJnZXRQYXRoIiwiZ2V0QWN0aXZlQ29udGV4dEluc3RhbmNlcyIsIm9Db250ZXh0Iiwib0VudGl0eVNldCIsImFBY3RpdmVDb250ZXh0cHJvbWlzZXMiLCJhUGFnZXMiLCJzTWV0YVBhdGgiLCJnZXRNZXRhTW9kZWwiLCJnZXRNZXRhUGF0aCIsImluZGV4T2YiLCJzdWJzdHJpbmciLCJhTWV0YVBhdGhBcnJheSIsInNwbGl0Iiwic0N1cnJlbnRIYXNoTm9QYXJhbXMiLCJIYXNoQ2hhbmdlciIsImdldEluc3RhbmNlIiwiZ2V0SGFzaCIsImFDdXJyZW50SGFzaEFycmF5Iiwib1BhZ2VNYXAiLCJhUGFnZUhhc2hBcnJheSIsImZvckVhY2giLCJzUGFnZUhhc2giLCJhS2V5VmFsdWVzIiwic1BhZ2VIYXNoTmFtZSIsImkiLCJzS2V5QXNzaWdubWVudCIsImFQYXJ0cyIsInNLZXlWYWx1ZSIsIm9NZXRhTW9kZWwiLCJhVGVjaG5pY2FsS2V5cyIsImdldE9iamVjdCIsImpvaW4iLCJsYXN0SW5kZXhPZiIsImRlY29kZVVSSUNvbXBvbmVudCIsIm9QYWdlRW50aXR5U2V0Iiwic05hdmlnYXRpb25QYXRoIiwib1BhZ2VJbmZvIiwic1BhZ2VFbnRpdHlTZXROYW1lIiwiJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJwYWdlRW50aXR5TmFtZSIsImdldEFjdGl2ZUNvbnRleHRQYXRocyIsInNSb290RW50aXR5TmFtZSIsInN1YnN0ciIsIm9QYWdlQ29udGV4dCIsIlByb21pc2UiLCJhbGwiLCJhRGF0YSIsImFBY3RpdmVDb250ZXh0UGF0aHMiLCJzQWN0aXZlQ29udGV4dFBhdGgiLCJzTmF2aWdhdGlvUHJvcGVydHkiLCJzRW50aXR5U2V0TmFtZSIsInZhbHVlcyIsInJlcGxhY2UiLCJjYXRjaCIsIm9FcnJvciIsIkxvZyIsImluZm8iLCJyZXNvbHZlIiwiZmV0Y2hBY3RpdmVDb250ZXh0UGF0aHMiLCJvUHJvbWlzZSIsImFTZW1hbnRpY0tleXMiLCJvTW9kZWwiLCJNb2RlbEhlbHBlciIsImlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCIsIlNlbWFudGljS2V5SGVscGVyIiwiZ2V0U2VtYW50aWNLZXlzIiwib1ZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJ2aWV3TGV2ZWwiLCJnZXRTaGFyZVVybCIsImJJc0VkaXRhYmxlIiwiYklzU3RpY2t5U3VwcG9ydGVkIiwic1NoYXJlVXJsIiwic0hhc2giLCJzQmFzZVBhdGgiLCJocmVmRm9yQXBwU3BlY2lmaWNIYXNoIiwid2luZG93IiwibG9jYXRpb24iLCJoYXNoIiwib3JpZ2luIiwicGF0aG5hbWUiLCJzZWFyY2giLCJnZXRTaGFyZUVtYWlsVXJsIiwib1VTaGVsbENvbnRhaW5lciIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsImdldEZMUFVybEFzeW5jIiwic0ZMUFVybCIsInNFcnJvciIsImVycm9yIiwiZG9jdW1lbnQiLCJVUkwiLCJnZXRKYW1VcmwiLCJiSXNFZGl0TW9kZSIsInNKYW1VcmwiLCJydW5uaW5nSW5JZnJhbWUiLCJnZXRGTFBVcmwiLCJzVXJsIiwiU2hhcmVFeHRlbnNpb25PdmVycmlkZSIsImFkYXB0U2hhcmVNZXRhZGF0YSIsIm9TaGFyZU1ldGFkYXRhIiwiYmFzZSIsIm9VSU1vZGVsIiwiZ2V0UHJvcGVydHkiLCJnZXRDb250cm9sbGVyIiwib1BhZ2VUaXRsZUluZm8iLCJfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24iLCJvRGF0YSIsInNUaXRsZSIsInRpdGxlIiwic09iamVjdFN1YnRpdGxlIiwic3VidGl0bGUiLCJ0b1N0cmluZyIsInRpbGUiLCJlbWFpbCIsImphbSIsInVybCIsImNvbGxhYm9yYXRpb25JbmZvTW9kZWwiLCJzZXRQcm9wZXJ0eSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU2hhcmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFNlbWFudGljS2V5SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1NlbWFudGljS2V5SGVscGVyXCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL09iamVjdFBhZ2VDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcbmltcG9ydCBIYXNoQ2hhbmdlciBmcm9tIFwic2FwL3VpL2NvcmUvcm91dGluZy9IYXNoQ2hhbmdlclwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuXG5sZXQgYkdsb2JhbElzU3RpY2t5U3VwcG9ydGVkOiBib29sZWFuO1xuXG5mdW5jdGlvbiBjcmVhdGVGaWx0ZXJUb0ZldGNoQWN0aXZlQ29udGV4dChtS2V5VmFsdWVzOiBhbnksIGJJc0FjdGl2ZUVudGl0eURlZmluZWQ6IGFueSkge1xuXHRjb25zdCBhS2V5cyA9IE9iamVjdC5rZXlzKG1LZXlWYWx1ZXMpO1xuXG5cdGNvbnN0IGFGaWx0ZXJzID0gYUtleXMubWFwKGZ1bmN0aW9uIChzS2V5OiBzdHJpbmcpIHtcblx0XHRjb25zdCBzVmFsdWUgPSBtS2V5VmFsdWVzW3NLZXldO1xuXHRcdGlmIChzVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIG5ldyBGaWx0ZXIoc0tleSwgRmlsdGVyT3BlcmF0b3IuRVEsIHNWYWx1ZSk7XG5cdFx0fVxuXHR9KTtcblxuXHRpZiAoYklzQWN0aXZlRW50aXR5RGVmaW5lZCkge1xuXHRcdGNvbnN0IG9BY3RpdmVGaWx0ZXIgPSBuZXcgRmlsdGVyKHtcblx0XHRcdGZpbHRlcnM6IFtuZXcgRmlsdGVyKFwiU2libGluZ0VudGl0eS9Jc0FjdGl2ZUVudGl0eVwiLCBGaWx0ZXJPcGVyYXRvci5FUSwgdHJ1ZSldLFxuXHRcdFx0YW5kOiBmYWxzZVxuXHRcdH0pO1xuXG5cdFx0YUZpbHRlcnMucHVzaChvQWN0aXZlRmlsdGVyKTtcblx0fVxuXG5cdHJldHVybiBuZXcgRmlsdGVyKGFGaWx0ZXJzIGFzIGFueSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBnZXRBY3RpdmVDb250ZXh0UGF0aChvQ29udHJvbGxlcjogYW55LCBzUGFnZUVudGl0eU5hbWU6IGFueSwgb0ZpbHRlcjogYW55KSB7XG5cdGNvbnN0IG9MaXN0QmluZGluZyA9IG9Db250cm9sbGVyXG5cdFx0LmdldFZpZXcoKVxuXHRcdC5nZXRCaW5kaW5nQ29udGV4dCgpXG5cdFx0LmdldE1vZGVsKClcblx0XHQuYmluZExpc3QoYC8ke3NQYWdlRW50aXR5TmFtZX1gLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgb0ZpbHRlciwgeyAkJGdyb3VwSWQ6IFwiJGF1dG8uSGVyb2VzXCIgfSk7XG5cdHJldHVybiBvTGlzdEJpbmRpbmcucmVxdWVzdENvbnRleHRzKDAsIDIpLnRoZW4oZnVuY3Rpb24gKG9Db250ZXh0czogYW55KSB7XG5cdFx0aWYgKG9Db250ZXh0cyAmJiBvQ29udGV4dHMubGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gb0NvbnRleHRzWzBdLmdldFBhdGgoKTtcblx0XHR9XG5cdH0pO1xufVxuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dEluc3RhbmNlcyhvQ29udGV4dDogYW55LCBvQ29udHJvbGxlcjogYW55LCBvRW50aXR5U2V0OiBhbnkpIHtcblx0Y29uc3QgYUFjdGl2ZUNvbnRleHRwcm9taXNlczogYW55W10gPSBbXTtcblx0Y29uc3QgYVBhZ2VzOiBhbnlbXSA9IFtdO1xuXHRsZXQgc01ldGFQYXRoID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKS5nZXRNZXRhUGF0aChvQ29udGV4dC5nZXRQYXRoKCkpO1xuXHRpZiAoc01ldGFQYXRoLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0c01ldGFQYXRoID0gc01ldGFQYXRoLnN1YnN0cmluZygxKTtcblx0fVxuXHRjb25zdCBhTWV0YVBhdGhBcnJheSA9IHNNZXRhUGF0aC5zcGxpdChcIi9cIik7XG5cdGNvbnN0IHNDdXJyZW50SGFzaE5vUGFyYW1zID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCkuc3BsaXQoXCI/XCIpWzBdO1xuXHRjb25zdCBhQ3VycmVudEhhc2hBcnJheSA9IHNDdXJyZW50SGFzaE5vUGFyYW1zLnNwbGl0KFwiL1wiKTtcblxuXHQvLyBvUGFnZU1hcCAtIGNyZWF0aW5nIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIG1hcCBvZiBtZXRhcGF0aCBuYW1lIGFuZCBpdCdzIHRlY2huaWNhbCBkZXRhaWxzXG5cdC8vIHdoaWNoIGlzIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIGZpbHRlciB0byBmZXRjaCB0aGUgcmVsYXZhbnQvY29ycmVjdCBhY3RpdmUgY29udGV4dFxuXHQvLyBFeGFtcGxlOiB7U2FsZXNPcmRlck1hbmFnZTp7dGVjaG5pY2FsSUQ6dGVjaG5pY2FsSURWYWx1ZX0sIF9JdGVtOnt0ZWNobmljYWxJRDp0ZWNobmljYWxJRFZhbHVlfX0gZXRjLixcblx0Y29uc3Qgb1BhZ2VNYXA6IGFueSA9IHt9O1xuXHRjb25zdCBhUGFnZUhhc2hBcnJheTogYW55W10gPSBbXTtcblx0YUN1cnJlbnRIYXNoQXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoc1BhZ2VIYXNoOiBhbnkpIHtcblx0XHRjb25zdCBhS2V5VmFsdWVzID0gc1BhZ2VIYXNoLnN1YnN0cmluZyhzUGFnZUhhc2guaW5kZXhPZihcIihcIikgKyAxLCBzUGFnZUhhc2gubGVuZ3RoIC0gMSkuc3BsaXQoXCIsXCIpO1xuXHRcdGNvbnN0IG1LZXlWYWx1ZXM6IGFueSA9IHt9O1xuXHRcdGNvbnN0IHNQYWdlSGFzaE5hbWUgPSBzUGFnZUhhc2guc3BsaXQoXCIoXCIpWzBdO1xuXHRcdG9QYWdlTWFwW3NQYWdlSGFzaE5hbWVdID0ge307XG5cdFx0YVBhZ2VIYXNoQXJyYXkucHVzaChzUGFnZUhhc2hOYW1lKTtcblx0XHRvUGFnZU1hcFtzUGFnZUhhc2hOYW1lXVtcImJJc0FjdGl2ZUVudGl0eURlZmluZWRcIl0gPSB0cnVlO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYUtleVZhbHVlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3Qgc0tleUFzc2lnbm1lbnQgPSBhS2V5VmFsdWVzW2ldO1xuXHRcdFx0Y29uc3QgYVBhcnRzID0gc0tleUFzc2lnbm1lbnQuc3BsaXQoXCI9XCIpO1xuXHRcdFx0bGV0IHNLZXlWYWx1ZSA9IGFQYXJ0c1sxXTtcblx0XHRcdGxldCBzS2V5ID0gYVBhcnRzWzBdO1xuXHRcdFx0Ly8gSW4gY2FzZSBpZiBvbmx5IG9uZSB0ZWNobmljYWwga2V5IGlzIGRlZmluZWQgdGhlbiB0aGUgdXJsIGp1c3QgY29udGFpbnMgdGhlIHRlY2huaWNhbElEVmFsdWUgYnV0IG5vdCB0aGUgdGVjaG5pY2FsSURcblx0XHRcdC8vIEV4YW1wbGU6IFNhbGVzT3JkZXJNYW5hZ2UoSUQ9MTExMTExMjktYWFhYS1iYmJiLWNjY2MtZGRkZGVlZWVmZmZmLElzQWN0aXZlRW50aXR5PWZhbHNlKS9fSXRlbSgxMTExMTEyOS1hYWFhLWJiYmItY2NjYy1kZGRkZWVlZWZmZmYpXG5cdFx0XHQvLyBJbiBhYm92ZSBleGFtcGxlIFNhbGVzT3JkZXJJdGVtIGhhcyBvbmx5IG9uZSB0ZWNobmljYWwga2V5IGRlZmluZWQsIGhlbmNlIHRlY2huaWNhbElEIGluZm8gaXMgbm90IHByZXNlbnQgaW4gdGhlIHVybFxuXHRcdFx0Ly8gSGVuY2UgaW4gc3VjaCBjYXNlcyB3ZSBnZXQgdGVjaG5pY2FsIGtleSBhbmQgdXNlIHRoZW0gdG8gZmV0Y2ggYWN0aXZlIGNvbnRleHRcblx0XHRcdGlmIChzS2V5QXNzaWdubWVudC5pbmRleE9mKFwiPVwiKSA9PT0gLTEpIHtcblx0XHRcdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9Db250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRcdGNvbnN0IGFUZWNobmljYWxLZXlzID0gb01ldGFNb2RlbC5nZXRPYmplY3QoYC8ke2FQYWdlSGFzaEFycmF5LmpvaW4oXCIvXCIpfS8kVHlwZS8kS2V5YCk7XG5cdFx0XHRcdHNLZXlWYWx1ZSA9IGFQYXJ0c1swXTtcblx0XHRcdFx0c0tleSA9IGFUZWNobmljYWxLZXlzWzBdO1xuXHRcdFx0XHRvUGFnZU1hcFtzUGFnZUhhc2guc3BsaXQoXCIoXCIpWzBdXVtcImJJc0FjdGl2ZUVudGl0eURlZmluZWRcIl0gPSBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHNLZXkgIT09IFwiSXNBY3RpdmVFbnRpdHlcIikge1xuXHRcdFx0XHRpZiAoc0tleVZhbHVlLmluZGV4T2YoXCInXCIpID09PSAwICYmIHNLZXlWYWx1ZS5sYXN0SW5kZXhPZihcIidcIikgPT09IHNLZXlWYWx1ZS5sZW5ndGggLSAxKSB7XG5cdFx0XHRcdFx0Ly8gUmVtb3ZlIHRoZSBxdW90ZXMgZnJvbSB0aGUgdmFsdWUgYW5kIGRlY29kZSBzcGVjaWFsIGNoYXJzXG5cdFx0XHRcdFx0c0tleVZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KHNLZXlWYWx1ZS5zdWJzdHJpbmcoMSwgc0tleVZhbHVlLmxlbmd0aCAtIDEpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRtS2V5VmFsdWVzW3NLZXldID0gc0tleVZhbHVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRvUGFnZU1hcFtzUGFnZUhhc2hOYW1lXS5tS2V5VmFsdWVzID0gbUtleVZhbHVlcztcblx0fSk7XG5cblx0bGV0IG9QYWdlRW50aXR5U2V0ID0gb0VudGl0eVNldDtcblx0YU1ldGFQYXRoQXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoc05hdmlnYXRpb25QYXRoOiBhbnkpIHtcblx0XHRjb25zdCBvUGFnZUluZm86IGFueSA9IHt9O1xuXHRcdGNvbnN0IHNQYWdlRW50aXR5U2V0TmFtZSA9IG9QYWdlRW50aXR5U2V0LiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nICYmIG9QYWdlRW50aXR5U2V0LiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW3NOYXZpZ2F0aW9uUGF0aF07XG5cdFx0aWYgKHNQYWdlRW50aXR5U2V0TmFtZSkge1xuXHRcdFx0b1BhZ2VJbmZvLnBhZ2VFbnRpdHlOYW1lID0gb1BhZ2VFbnRpdHlTZXQuJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbc05hdmlnYXRpb25QYXRoXTtcblx0XHRcdG9QYWdlRW50aXR5U2V0ID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKS5nZXRPYmplY3QoYC8ke3NQYWdlRW50aXR5U2V0TmFtZX1gKSB8fCBvRW50aXR5U2V0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvUGFnZUluZm8ucGFnZUVudGl0eU5hbWUgPSBzTmF2aWdhdGlvblBhdGg7XG5cdFx0fVxuXHRcdG9QYWdlSW5mby5tS2V5VmFsdWVzID0gb1BhZ2VNYXBbc05hdmlnYXRpb25QYXRoXS5tS2V5VmFsdWVzO1xuXHRcdG9QYWdlSW5mby5iSXNBY3RpdmVFbnRpdHlEZWZpbmVkID0gb1BhZ2VNYXBbc05hdmlnYXRpb25QYXRoXS5iSXNBY3RpdmVFbnRpdHlEZWZpbmVkO1xuXHRcdGFQYWdlcy5wdXNoKG9QYWdlSW5mbyk7XG5cdH0pO1xuXG5cdGFQYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChvUGFnZUluZm86IGFueSkge1xuXHRcdGNvbnN0IG9GaWx0ZXIgPSBjcmVhdGVGaWx0ZXJUb0ZldGNoQWN0aXZlQ29udGV4dChvUGFnZUluZm8ubUtleVZhbHVlcywgb1BhZ2VJbmZvLmJJc0FjdGl2ZUVudGl0eURlZmluZWQpO1xuXHRcdGFBY3RpdmVDb250ZXh0cHJvbWlzZXMucHVzaChnZXRBY3RpdmVDb250ZXh0UGF0aChvQ29udHJvbGxlciwgb1BhZ2VJbmZvLnBhZ2VFbnRpdHlOYW1lLCBvRmlsdGVyKSk7XG5cdH0pO1xuXG5cdHJldHVybiBhQWN0aXZlQ29udGV4dHByb21pc2VzO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBmZXRjaCBhY3RpdmUgY29udGV4dCBwYXRoJ3MuXG4gKlxuICogQHBhcmFtIG9Db250ZXh0IFRoZSBQYWdlIENvbnRleHRcbiAqIEBwYXJhbSBvQ29udHJvbGxlclxuICogQHJldHVybnMgUHJvbWlzZSB3aGljaCBpcyByZXNvbHZlZCBvbmNlIHRoZSBhY3RpdmUgY29udGV4dCdzIGFyZSBmZXRjaGVkXG4gKi9cbmZ1bmN0aW9uIGdldEFjdGl2ZUNvbnRleHRQYXRocyhvQ29udGV4dDogYW55LCBvQ29udHJvbGxlcjogYW55KSB7XG5cdGNvbnN0IHNDdXJyZW50SGFzaE5vUGFyYW1zID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCkuc3BsaXQoXCI/XCIpWzBdO1xuXHRsZXQgc1Jvb3RFbnRpdHlOYW1lID0gc0N1cnJlbnRIYXNoTm9QYXJhbXMgJiYgc0N1cnJlbnRIYXNoTm9QYXJhbXMuc3Vic3RyKDAsIHNDdXJyZW50SGFzaE5vUGFyYW1zLmluZGV4T2YoXCIoXCIpKTtcblx0aWYgKHNSb290RW50aXR5TmFtZS5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdHNSb290RW50aXR5TmFtZSA9IHNSb290RW50aXR5TmFtZS5zdWJzdHJpbmcoMSk7XG5cdH1cblx0Y29uc3Qgb0VudGl0eVNldCA9IG9Db250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkuZ2V0T2JqZWN0KGAvJHtzUm9vdEVudGl0eU5hbWV9YCk7XG5cdGNvbnN0IG9QYWdlQ29udGV4dCA9IG9Db250ZXh0O1xuXHRjb25zdCBhQWN0aXZlQ29udGV4dHByb21pc2VzID0gZ2V0QWN0aXZlQ29udGV4dEluc3RhbmNlcyhvQ29udGV4dCwgb0NvbnRyb2xsZXIsIG9FbnRpdHlTZXQpO1xuXHRpZiAoYUFjdGl2ZUNvbnRleHRwcm9taXNlcy5sZW5ndGggPiAwKSB7XG5cdFx0cmV0dXJuIFByb21pc2UuYWxsKGFBY3RpdmVDb250ZXh0cHJvbWlzZXMpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoYURhdGE6IGFueVtdKSB7XG5cdFx0XHRcdGNvbnN0IGFBY3RpdmVDb250ZXh0UGF0aHMgPSBbXTtcblx0XHRcdFx0bGV0IG9QYWdlRW50aXR5U2V0ID0gb0VudGl0eVNldDtcblx0XHRcdFx0aWYgKGFEYXRhWzBdLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0XHRcdFx0YUFjdGl2ZUNvbnRleHRQYXRocy5wdXNoKGFEYXRhWzBdLnN1YnN0cmluZygxKSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YUFjdGl2ZUNvbnRleHRQYXRocy5wdXNoKGFEYXRhWzBdKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBJbiB0aGUgYWN0aXZlIGNvbnRleHQgcGF0aHMgaWRlbnRpZnkgYW5kIHJlcGxhY2UgdGhlIGVudGl0eVNldCBOYW1lIHdpdGggY29ycmVzcG9uZGluZyBuYXZpZ2F0aW9uIHByb3BlcnR5IG5hbWVcblx0XHRcdFx0Ly8gUmVxdWlyZWQgdG8gZm9ybSB0aGUgdXJsIHBvaW50aW5nIHRvIGFjdGl2ZSBjb250ZXh0XG5cdFx0XHRcdC8vIEV4YW1wbGUgOiBTYWxlc09yZGVySXRlbSAtLT4gX0l0ZW0sIE1hdGVyaWFsRGV0YWlscyAtLT4gX01hdGVyaWFsRGV0YWlscyBldGMuLFxuXHRcdFx0XHRmb3IgKGxldCBpID0gMTsgaSA8IGFEYXRhLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0bGV0IHNBY3RpdmVDb250ZXh0UGF0aCA9IGFEYXRhW2ldO1xuXHRcdFx0XHRcdGxldCBzTmF2aWdhdGlvUHJvcGVydHkgPSBcIlwiO1xuXHRcdFx0XHRcdGxldCBzRW50aXR5U2V0TmFtZSA9IHNBY3RpdmVDb250ZXh0UGF0aCAmJiBzQWN0aXZlQ29udGV4dFBhdGguc3Vic3RyKDAsIHNBY3RpdmVDb250ZXh0UGF0aC5pbmRleE9mKFwiKFwiKSk7XG5cdFx0XHRcdFx0aWYgKHNFbnRpdHlTZXROYW1lLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0XHRcdFx0XHRzRW50aXR5U2V0TmFtZSA9IHNFbnRpdHlTZXROYW1lLnN1YnN0cmluZygxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHNBY3RpdmVDb250ZXh0UGF0aC5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0c0FjdGl2ZUNvbnRleHRQYXRoID0gc0FjdGl2ZUNvbnRleHRQYXRoLnN1YnN0cmluZygxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c05hdmlnYXRpb1Byb3BlcnR5ID0gT2JqZWN0LmtleXMob1BhZ2VFbnRpdHlTZXQuJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcpW1xuXHRcdFx0XHRcdFx0T2JqZWN0LnZhbHVlcyhvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZykuaW5kZXhPZihzRW50aXR5U2V0TmFtZSlcblx0XHRcdFx0XHRdO1xuXHRcdFx0XHRcdGlmIChzTmF2aWdhdGlvUHJvcGVydHkpIHtcblx0XHRcdFx0XHRcdGFBY3RpdmVDb250ZXh0UGF0aHMucHVzaChzQWN0aXZlQ29udGV4dFBhdGgucmVwbGFjZShzRW50aXR5U2V0TmFtZSwgc05hdmlnYXRpb1Byb3BlcnR5KSk7XG5cdFx0XHRcdFx0XHRvUGFnZUVudGl0eVNldCA9IG9QYWdlQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE9iamVjdChgLyR7c0VudGl0eVNldE5hbWV9YCkgfHwgb0VudGl0eVNldDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YUFjdGl2ZUNvbnRleHRQYXRocy5wdXNoKHNBY3RpdmVDb250ZXh0UGF0aCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhQWN0aXZlQ29udGV4dFBhdGhzO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmluZm8oXCJGYWlsZWQgdG8gcmV0cmlldmUgb25lIG9yIG1vcmUgYWN0aXZlIGNvbnRleHQgcGF0aCdzXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdH1cbn1cbmZ1bmN0aW9uIGZldGNoQWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnkpIHtcblx0bGV0IG9Qcm9taXNlLCBhU2VtYW50aWNLZXlzO1xuXHRjb25zdCBzQ3VycmVudEhhc2hOb1BhcmFtcyA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpLnNwbGl0KFwiP1wiKVswXTtcblx0aWYgKG9Db250ZXh0KSB7XG5cdFx0Y29uc3Qgb01vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb01vZGVsLmdldE1ldGFNb2RlbCgpO1xuXHRcdGJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCA9IE1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChvTWV0YU1vZGVsKTtcblx0XHRsZXQgc1Jvb3RFbnRpdHlOYW1lID0gc0N1cnJlbnRIYXNoTm9QYXJhbXMgJiYgc0N1cnJlbnRIYXNoTm9QYXJhbXMuc3Vic3RyKDAsIHNDdXJyZW50SGFzaE5vUGFyYW1zLmluZGV4T2YoXCIoXCIpKTtcblx0XHRpZiAoc1Jvb3RFbnRpdHlOYW1lLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0XHRzUm9vdEVudGl0eU5hbWUgPSBzUm9vdEVudGl0eU5hbWUuc3Vic3RyaW5nKDEpO1xuXHRcdH1cblx0XHRhU2VtYW50aWNLZXlzID0gU2VtYW50aWNLZXlIZWxwZXIuZ2V0U2VtYW50aWNLZXlzKG9NZXRhTW9kZWwsIHNSb290RW50aXR5TmFtZSk7XG5cdH1cblx0Ly8gRmV0Y2ggYWN0aXZlIGNvbnRleHQgZGV0YWlscyBpbmNhc2Ugb2YgYmVsb3cgc2NlbmFyaW8ncyh3aGVyZSBwYWdlIGlzIG5vdCBzdGlja3kgc3VwcG9ydGVkKHdlIGRvIG5vdCBoYXZlIGRyYWZ0IGluc3RhbmNlKSlcblx0Ly8gMS4gSW4gY2FzZSBvZiBkcmFmdCBlbmFibGVkIE9iamVjdCBwYWdlIHdoZXJlIHNlbWFudGljIGtleSBiYXNlZCBVUkwgaXMgbm90IHBvc3NpYmxlKGxpa2Ugc2VtYW50aWMga2V5cyBhcmUgbm90IG1vZGVsZWQgaW4gdGhlIGVudGl0eSBzZXQpXG5cdC8vIDIuIEluIGNhc2Ugb2YgZHJhZnQgZW5hYmxlZCBTdWIgT2JqZWN0IFBhZ2VzICh3aGVyZSBzZW1hbnRpYyBib29rbWFya2luZyBpcyBub3Qgc3VwcG9ydGVkKVxuXHRjb25zdCBvVmlld0RhdGEgPSBvQ29udHJvbGxlci5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKTtcblx0aWYgKG9Db250ZXh0ICYmICFiR2xvYmFsSXNTdGlja3lTdXBwb3J0ZWQgJiYgKChvVmlld0RhdGEudmlld0xldmVsID09PSAxICYmICFhU2VtYW50aWNLZXlzKSB8fCBvVmlld0RhdGEudmlld0xldmVsID49IDIpKSB7XG5cdFx0b1Byb21pc2UgPSBnZXRBY3RpdmVDb250ZXh0UGF0aHMob0NvbnRleHQsIG9Db250cm9sbGVyKTtcblx0XHRyZXR1cm4gb1Byb21pc2U7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHR9XG59XG5cbi8vIC8qKlxuLy8gICogR2V0IHNoYXJlIFVSTC5cbi8vICAqIEBwYXJhbSBiSXNFZGl0YWJsZVxuLy8gICogQHBhcmFtIGJJc1N0aWNreVN1cHBvcnRlZFxuLy8gICogQHBhcmFtIGFBY3RpdmVDb250ZXh0UGF0aHNcbi8vICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzaGFyZSBVUkxcbi8vICAqIEBwcm90ZWN0ZWRcbi8vICAqIEBzdGF0aWNcbi8vICAqL1xuZnVuY3Rpb24gZ2V0U2hhcmVVcmwoYklzRWRpdGFibGU6IGFueSwgYklzU3RpY2t5U3VwcG9ydGVkOiBhbnksIGFBY3RpdmVDb250ZXh0UGF0aHM6IGFueSkge1xuXHRsZXQgc1NoYXJlVXJsO1xuXHRjb25zdCBzSGFzaCA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpO1xuXHRjb25zdCBzQmFzZVBhdGggPSAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2hcblx0XHQ/IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaChcIlwiKVxuXHRcdDogXCJcIjtcblx0aWYgKGJJc0VkaXRhYmxlICYmICFiSXNTdGlja3lTdXBwb3J0ZWQgJiYgYUFjdGl2ZUNvbnRleHRQYXRocykge1xuXHRcdHNTaGFyZVVybCA9IHNCYXNlUGF0aCArIGFBY3RpdmVDb250ZXh0UGF0aHMuam9pbihcIi9cIik7XG5cdH0gZWxzZSB7XG5cdFx0c1NoYXJlVXJsID0gc0hhc2ggPyBzQmFzZVBhdGggKyBzSGFzaCA6IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHR9XG5cdHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgd2luZG93LmxvY2F0aW9uLnNlYXJjaCArIHNTaGFyZVVybDtcbn1cbmZ1bmN0aW9uIGdldFNoYXJlRW1haWxVcmwoKSB7XG5cdGNvbnN0IG9VU2hlbGxDb250YWluZXIgPSBzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyO1xuXHRpZiAob1VTaGVsbENvbnRhaW5lcikge1xuXHRcdHJldHVybiBvVVNoZWxsQ29udGFpbmVyXG5cdFx0XHQuZ2V0RkxQVXJsQXN5bmModHJ1ZSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzRkxQVXJsOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIHNGTFBVcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChzRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJDb3VsZCBub3QgcmV0cmlldmUgY0ZMUCBVUkwgZm9yIHRoZSBzaGFyaW5nIGRpYWxvZyAoZGlhbG9nIHdpbGwgbm90IGJlIG9wZW5lZClcIiwgc0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZG9jdW1lbnQuVVJMKTtcblx0fVxufVxuXG5mdW5jdGlvbiBnZXRKYW1VcmwoYklzRWRpdE1vZGU6IGJvb2xlYW4sIGJJc1N0aWNreVN1cHBvcnRlZDogYW55LCBhQWN0aXZlQ29udGV4dFBhdGhzOiBhbnkpIHtcblx0bGV0IHNKYW1Vcmw6IHN0cmluZztcblx0Y29uc3Qgc0hhc2ggPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKTtcblx0Y29uc3Qgc0Jhc2VQYXRoID0gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoXG5cdFx0PyAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2goXCJcIilcblx0XHQ6IFwiXCI7XG5cdGlmIChiSXNFZGl0TW9kZSAmJiAhYklzU3RpY2t5U3VwcG9ydGVkICYmIGFBY3RpdmVDb250ZXh0UGF0aHMpIHtcblx0XHRzSmFtVXJsID0gc0Jhc2VQYXRoICsgYUFjdGl2ZUNvbnRleHRQYXRocy5qb2luKFwiL1wiKTtcblx0fSBlbHNlIHtcblx0XHRzSmFtVXJsID0gc0hhc2ggPyBzQmFzZVBhdGggKyBzSGFzaCA6IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHR9XG5cdC8vIGluIGNhc2Ugd2UgYXJlIGluIGNGTFAgc2NlbmFyaW8sIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nXG5cdC8vIGluc2lkZSBhbiBpZnJhbWUsIGFuZCB0aGVyZSBmb3Igd2UgbmVlZCB0byBnZXQgdGhlIGNGTFAgVVJMXG5cdC8vIGFuZCBub3QgJ2RvY3VtZW50LlVSTCcgdGhhdCByZXByZXNlbnRzIHRoZSBpZnJhbWUgVVJMXG5cdGlmIChzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyICYmIHNhcC51c2hlbGwuQ29udGFpbmVyLnJ1bm5pbmdJbklmcmFtZSAmJiBzYXAudXNoZWxsLkNvbnRhaW5lci5ydW5uaW5nSW5JZnJhbWUoKSkge1xuXHRcdHNhcC51c2hlbGwuQ29udGFpbmVyLmdldEZMUFVybCh0cnVlKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKHNVcmw6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gc1VybC5zdWJzdHIoMCwgc1VybC5pbmRleE9mKFwiI1wiKSkgKyBzSmFtVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoc0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiQ291bGQgbm90IHJldHJpZXZlIGNGTFAgVVJMIGZvciB0aGUgc2hhcmluZyBkaWFsb2cgKGRpYWxvZyB3aWxsIG5vdCBiZSBvcGVuZWQpXCIsIHNFcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyBzSmFtVXJsKTtcblx0fVxufVxuXG5jb25zdCBTaGFyZUV4dGVuc2lvbk92ZXJyaWRlID0ge1xuXHRhZGFwdFNoYXJlTWV0YWRhdGE6IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBTaGFyZSwgb1NoYXJlTWV0YWRhdGE6IGFueSkge1xuXHRcdGNvbnN0IG9Db250ZXh0ID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGNvbnN0IG9VSU1vZGVsID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRNb2RlbChcInVpXCIpO1xuXHRcdGNvbnN0IGJJc0VkaXRhYmxlID0gb1VJTW9kZWwuZ2V0UHJvcGVydHkoXCIvaXNFZGl0YWJsZVwiKTtcblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBhQWN0aXZlQ29udGV4dFBhdGhzID0gYXdhaXQgZmV0Y2hBY3RpdmVDb250ZXh0UGF0aHMob0NvbnRleHQsIHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpKTtcblx0XHRcdGNvbnN0IG9QYWdlVGl0bGVJbmZvID0gKHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyKS5fZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24oKTtcblx0XHRcdGNvbnN0IG9EYXRhID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuXHRcdFx0XHRnZXRKYW1VcmwoYklzRWRpdGFibGUsIGJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCwgYUFjdGl2ZUNvbnRleHRQYXRocyksXG5cdFx0XHRcdGdldFNoYXJlVXJsKGJJc0VkaXRhYmxlLCBiR2xvYmFsSXNTdGlja3lTdXBwb3J0ZWQsIGFBY3RpdmVDb250ZXh0UGF0aHMpLFxuXHRcdFx0XHRnZXRTaGFyZUVtYWlsVXJsKClcblx0XHRcdF0pO1xuXG5cdFx0XHRsZXQgc1RpdGxlID0gb1BhZ2VUaXRsZUluZm8udGl0bGU7XG5cdFx0XHRjb25zdCBzT2JqZWN0U3VidGl0bGUgPSBvUGFnZVRpdGxlSW5mby5zdWJ0aXRsZSA/IG9QYWdlVGl0bGVJbmZvLnN1YnRpdGxlLnRvU3RyaW5nKCkgOiBcIlwiO1xuXHRcdFx0aWYgKHNPYmplY3RTdWJ0aXRsZSkge1xuXHRcdFx0XHRzVGl0bGUgPSBgJHtzVGl0bGV9IC0gJHtzT2JqZWN0U3VidGl0bGV9YDtcblx0XHRcdH1cblx0XHRcdG9TaGFyZU1ldGFkYXRhLnRpbGUgPSB7XG5cdFx0XHRcdHRpdGxlOiBvUGFnZVRpdGxlSW5mby50aXRsZSxcblx0XHRcdFx0c3VidGl0bGU6IHNPYmplY3RTdWJ0aXRsZVxuXHRcdFx0fTtcblx0XHRcdG9TaGFyZU1ldGFkYXRhLmVtYWlsLnRpdGxlID0gc1RpdGxlO1xuXHRcdFx0b1NoYXJlTWV0YWRhdGEudGl0bGUgPSBzVGl0bGU7XG5cdFx0XHRvU2hhcmVNZXRhZGF0YS5qYW0udXJsID0gb0RhdGFbMF07XG5cdFx0XHRvU2hhcmVNZXRhZGF0YS51cmwgPSBvRGF0YVsxXTtcblx0XHRcdG9TaGFyZU1ldGFkYXRhLmVtYWlsLnVybCA9IG9EYXRhWzJdO1xuXHRcdFx0Ly8gTVMgVGVhbXMgY29sbGFib3JhdGlvbiBkb2VzIG5vdCB3YW50IHRvIGFsbG93IGZ1cnRoZXIgY2hhbmdlcyB0byB0aGUgVVJMXG5cdFx0XHQvLyBzbyB1cGRhdGUgY29sbG9ib3JhdGlvbkluZm8gbW9kZWwgYXQgTFIgb3ZlcnJpZGUgdG8gaWdub3JlIGZ1cnRoZXIgZXh0ZW5zaW9uIGNoYW5nZXMgYXQgbXVsdGlwbGUgbGV2ZWxzXG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aW9uSW5mb01vZGVsOiBKU09OTW9kZWwgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKFwiY29sbGFib3JhdGlvbkluZm9cIikgYXMgSlNPTk1vZGVsO1xuXHRcdFx0Y29sbGFib3JhdGlvbkluZm9Nb2RlbC5zZXRQcm9wZXJ0eShcIi91cmxcIiwgb1NoYXJlTWV0YWRhdGEudXJsKTtcblx0XHRcdGNvbGxhYm9yYXRpb25JbmZvTW9kZWwuc2V0UHJvcGVydHkoXCIvYXBwVGl0bGVcIiwgb1NoYXJlTWV0YWRhdGEudGl0bGUpO1xuXHRcdFx0Y29sbGFib3JhdGlvbkluZm9Nb2RlbC5zZXRQcm9wZXJ0eShcIi9zdWJUaXRsZVwiLCBzT2JqZWN0U3VidGl0bGUpO1xuXHRcdH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcblx0XHRcdExvZy5lcnJvcihlcnJvcik7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9TaGFyZU1ldGFkYXRhO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTaGFyZUV4dGVuc2lvbk92ZXJyaWRlO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7O0VBVUEsSUFBSUEsd0JBQWlDO0VBRXJDLFNBQVNDLGdDQUFnQyxDQUFDQyxVQUFlLEVBQUVDLHNCQUEyQixFQUFFO0lBQ3ZGLE1BQU1DLEtBQUssR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUNKLFVBQVUsQ0FBQztJQUVyQyxNQUFNSyxRQUFRLEdBQUdILEtBQUssQ0FBQ0ksR0FBRyxDQUFDLFVBQVVDLElBQVksRUFBRTtNQUNsRCxNQUFNQyxNQUFNLEdBQUdSLFVBQVUsQ0FBQ08sSUFBSSxDQUFDO01BQy9CLElBQUlDLE1BQU0sS0FBS0MsU0FBUyxFQUFFO1FBQ3pCLE9BQU8sSUFBSUMsTUFBTSxDQUFDSCxJQUFJLEVBQUVJLGNBQWMsQ0FBQ0MsRUFBRSxFQUFFSixNQUFNLENBQUM7TUFDbkQ7SUFDRCxDQUFDLENBQUM7SUFFRixJQUFJUCxzQkFBc0IsRUFBRTtNQUMzQixNQUFNWSxhQUFhLEdBQUcsSUFBSUgsTUFBTSxDQUFDO1FBQ2hDSSxPQUFPLEVBQUUsQ0FBQyxJQUFJSixNQUFNLENBQUMsOEJBQThCLEVBQUVDLGNBQWMsQ0FBQ0MsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlFRyxHQUFHLEVBQUU7TUFDTixDQUFDLENBQUM7TUFFRlYsUUFBUSxDQUFDVyxJQUFJLENB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
|