@sapui5/sap.fe.templates 1.109.0 → 1.110.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/README.md +5 -1
  2. package/package.json +11 -8
  3. package/src/sap/fe/templates/.library +26 -27
  4. package/src/sap/fe/templates/AnalyticalListPage/Component.js +1 -7
  5. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +1 -4
  6. package/src/sap/fe/templates/ListComponent.js +45 -62
  7. package/src/sap/fe/templates/ListComponent.ts +43 -43
  8. package/src/sap/fe/templates/ListReport/Component.js +11 -19
  9. package/src/sap/fe/templates/ListReport/Component.ts +6 -0
  10. package/src/sap/fe/templates/ListReport/ExtensionAPI.js +11 -37
  11. package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +1 -1
  12. package/src/sap/fe/templates/ListReport/LRMessageStrip.js +196 -0
  13. package/src/sap/fe/templates/ListReport/LRMessageStrip.ts +216 -0
  14. package/src/sap/fe/templates/ListReport/ListReport.view.xml +31 -0
  15. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +140 -247
  16. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +49 -14
  17. package/src/sap/fe/templates/ListReport/ListReportTemplating.js +2 -7
  18. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +21 -108
  19. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +9 -17
  20. package/src/sap/fe/templates/ListReport/overrides/Share.js +9 -25
  21. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +51 -122
  22. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +1 -23
  23. package/src/sap/fe/templates/ObjectPage/Component.js +19 -40
  24. package/src/sap/fe/templates/ObjectPage/Component.ts +9 -2
  25. package/src/sap/fe/templates/ObjectPage/ExtendPageDefinition.js +64 -0
  26. package/src/sap/fe/templates/ObjectPage/ExtendPageDefinition.ts +80 -0
  27. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +21 -58
  28. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +4 -4
  29. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +2 -1
  30. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +173 -459
  31. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +13 -18
  32. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +129 -208
  33. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +62 -14
  34. package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.js +1 -32
  35. package/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +9 -37
  36. package/src/sap/fe/templates/ObjectPage/controls/StashableVBox.js +1 -7
  37. package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +9 -31
  38. package/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
  39. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +2 -4
  40. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
  41. package/src/sap/fe/templates/ObjectPage/flexibility/ScrollableHeaderContainer.flexibility.js +4 -5
  42. package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.js +4 -4
  43. package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.ts +3 -3
  44. package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.js +4 -4
  45. package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.ts +3 -3
  46. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +16 -21
  47. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.ts +1 -1
  48. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +19 -1
  49. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.ts +21 -0
  50. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +1 -1
  51. package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +4 -5
  52. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +19 -69
  53. package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +1 -1
  54. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +5 -20
  55. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +6 -6
  56. package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +4 -3
  57. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +3 -3
  58. package/src/sap/fe/templates/ObjectPage/view/fragments/FormActions.fragment.xml +1 -1
  59. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderContent.fragment.xml +1 -1
  60. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPoint.fragment.xml +1 -1
  61. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +4 -3
  62. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacetCustomContainer.fragment.xml +7 -5
  63. package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingAvatar.fragment.xml +1 -1
  64. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderContact.fragment.xml +3 -2
  65. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +2 -1
  66. package/src/sap/fe/templates/ObjectPage/view/fragments/SideContentCustomContainer.fragment.xml +7 -7
  67. package/src/sap/fe/templates/TableScroller.js +1 -6
  68. package/src/sap/fe/templates/library.js +4 -7
  69. package/src/sap/fe/templates/library.ts +1 -2
  70. package/src/sap/fe/templates/messagebundle.properties +30 -29
  71. package/src/sap/fe/templates/messagebundle_bg.properties +2 -2
  72. package/src/sap/fe/templates/messagebundle_cs.properties +1 -1
  73. package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +1 -1
  74. package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +1 -1
  75. package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +1 -1
  76. package/src/sap/fe/templates/messagebundle_no.properties +3 -3
  77. package/src/sap/fe/templates/messagebundle_sl.properties +7 -7
  78. package/ui5.yaml +0 -1
  79. package/src/sap/fe/templates/Feedback.js +0 -80
  80. package/src/sap/fe/templates/Feedback.ts +0 -64
  81. package/src/sap/fe/templates/ObjectPage/view/fragments/FormActionButtons.fragment.xml +0 -82
  82. package/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +0 -20
  83. package/src/sap/fe/templates/RootContainer/overrides/EditFlow.ts +0 -20
@@ -4,7 +4,6 @@ import ObjectPath from "sap/base/util/ObjectPath";
4
4
  import type DynamicPage from "sap/f/DynamicPage";
5
5
  import ActionRuntime from "sap/fe/core/ActionRuntime";
6
6
  import CommonUtils from "sap/fe/core/CommonUtils";
7
- import EditFlow from "sap/fe/core/controllerextensions/EditFlow";
8
7
  import IntentBasedNavigation from "sap/fe/core/controllerextensions/IntentBasedNavigation";
9
8
  import InternalIntentBasedNavigation from "sap/fe/core/controllerextensions/InternalIntentBasedNavigation";
10
9
  import InternalRouting from "sap/fe/core/controllerextensions/InternalRouting";
@@ -37,10 +36,8 @@ import FilterUtils from "sap/fe/macros/filter/FilterUtils";
37
36
  import TableHelper from "sap/fe/macros/table/TableHelper";
38
37
  import MultipleModeControl from "sap/fe/templates/ListReport/controls/MultipleModeControl";
39
38
  import ExtensionAPI from "sap/fe/templates/ListReport/ExtensionAPI";
40
- import EditFlowOverrides from "sap/fe/templates/RootContainer/overrides/EditFlow";
41
39
  import TableScroller from "sap/fe/templates/TableScroller";
42
40
  import type SegmentedButton from "sap/m/SegmentedButton";
43
- import Component from "sap/ui/core/Component";
44
41
  import type Control from "sap/ui/core/Control";
45
42
  import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
46
43
  import { system } from "sap/ui/Device";
@@ -58,6 +55,12 @@ import ViewStateOverrides from "./overrides/ViewState";
58
55
  const TemplateContentView = CoreLibrary.TemplateContentView,
59
56
  InitialLoadMode = CoreLibrary.InitialLoadMode;
60
57
 
58
+ /**
59
+ * Controller class for the list report page, used inside an SAP Fiori elements application.
60
+ *
61
+ * @hideconstructor
62
+ * @public
63
+ */
61
64
  @defineUI5Class("sap.fe.templates.ListReport.ListReportController")
62
65
  class ListReportController extends PageController {
63
66
  @usingExtension(
@@ -85,9 +88,6 @@ class ListReportController extends PageController {
85
88
  @usingExtension(Share.override(ShareOverrides))
86
89
  share!: Share;
87
90
 
88
- @usingExtension(EditFlow.override(EditFlowOverrides))
89
- editFlow!: EditFlow;
90
-
91
91
  @usingExtension(ViewState.override(ViewStateOverrides))
92
92
  viewState!: ViewState;
93
93
 
@@ -104,6 +104,12 @@ class ListReportController extends PageController {
104
104
  private hasPendingChartChanges?: boolean;
105
105
  private hasPendingTableChanges?: boolean;
106
106
 
107
+ /**
108
+ * Get the extension API for the current page.
109
+ *
110
+ * @public
111
+ * @returns The extension API.
112
+ */
107
113
  @publicExtension()
108
114
  @finalExtension()
109
115
  getExtensionAPI(): ExtensionAPI {
@@ -185,7 +191,12 @@ class ListReportController extends PageController {
185
191
  this._updateTableActions(aTables);
186
192
  }
187
193
 
188
- this.pageReady.waitFor(this.getAppComponent().getAppStateHandler().applyAppState());
194
+ const internalModelContext = this.getView().getBindingContext("internal") as InternalModelContext;
195
+ if (!internalModelContext.getProperty("initialVariantApplied")) {
196
+ const viewId = this.getView().getId();
197
+ this.pageReady.waitFor(this.getAppComponent().getAppStateHandler().applyAppState(viewId, this.getView()));
198
+ internalModelContext.setProperty("initialVariantApplied", true);
199
+ }
189
200
  }
190
201
 
191
202
  onBeforeRendering() {
@@ -224,7 +235,7 @@ class ListReportController extends PageController {
224
235
  }
225
236
 
226
237
  /**
227
- * Method called when the content of a list report view needs to be refreshed.
238
+ * Method called when the content of a custom view used in a list report needs to be refreshed.
228
239
  * This happens either when there is a change on the FilterBar and the search is triggered,
229
240
  * or when a tab with custom content is selected.
230
241
  * This method can be overwritten by the controller extension in case of customization.
@@ -276,6 +287,17 @@ class ListReportController extends PageController {
276
287
  return this._getTable()?.data("targetCollectionPath").slice(1);
277
288
  }
278
289
 
290
+ /**
291
+ * Method called when the 'Clear' button on the FilterBar is pressed.
292
+ *
293
+ * @public
294
+ */
295
+ @publicExtension()
296
+ @extensible(OverrideExecution.After)
297
+ onAfterClear() {
298
+ /* To be overriden */
299
+ }
300
+
279
301
  /**
280
302
  * This method initiates the update of the enabled state of the DataFieldForAction and the visible state of the DataFieldForIBN buttons.
281
303
  *
@@ -355,7 +377,7 @@ class ListReportController extends PageController {
355
377
  const oManifestEntry = this.getAppComponent().getManifestEntry("sap.app");
356
378
  return {
357
379
  title: oManifestEntry.title,
358
- subtitle: oManifestEntry.appSubTitle || "",
380
+ subtitle: oManifestEntry.subTitle || "",
359
381
  intent: "",
360
382
  icon: ""
361
383
  };
@@ -386,11 +408,6 @@ class ListReportController extends PageController {
386
408
  return controlId && this.getView().byId(controlId);
387
409
  }
388
410
 
389
- _getPageModel(): JSONModel | undefined {
390
- const pageComponent = Component.getOwnerComponentFor(this.getView()) as any;
391
- return pageComponent.getModel("_pageModel");
392
- }
393
-
394
411
  _getDynamicListReportControlId(): string {
395
412
  return this._getPageModel()?.getProperty("/dynamicListReportId") || "";
396
413
  }
@@ -664,9 +681,25 @@ class ListReportController extends PageController {
664
681
  const oVM = oEvent.getSource();
665
682
  const currentVariantKey = oEvent.getParameter("key");
666
683
  const oMultiModeControl = this._getMultiModeControl();
684
+ const initialControlStatesMapper = this.viewState.initialControlStatesMapper;
667
685
 
668
686
  oMultiModeControl?.invalidateContent();
669
687
  oMultiModeControl?.setFreezeContent(true);
688
+ // Reset the Controls Mapped to the selected VM
689
+ const vmAssociatedControlsToReset = oVM.getFor();
690
+ Object.keys(initialControlStatesMapper).forEach((controlKey) => {
691
+ let found = false;
692
+ for (const vmAssociatedcontrolKey of vmAssociatedControlsToReset) {
693
+ if (vmAssociatedcontrolKey.indexOf(controlKey) > -1) {
694
+ found = true;
695
+ break;
696
+ }
697
+ }
698
+ if (found) {
699
+ initialControlStatesMapper[controlKey] = {};
700
+ }
701
+ });
702
+
670
703
  // setTimeout cause the variant needs to be applied before judging the auto search or updating the app state
671
704
  setTimeout(() => {
672
705
  if (this._shouldAutoTriggerSearch(oVM)) {
@@ -678,6 +711,8 @@ class ListReportController extends PageController {
678
711
  }, 0);
679
712
  },
680
713
  onVariantSaved(this: ListReportController) {
714
+ this.viewState.initialControlStatesMapper = {};
715
+
681
716
  //TODO: Should remove this setTimeOut once Variant Management provides an api to fetch the current variant key on save!!!
682
717
  setTimeout(() => {
683
718
  this.getExtensionAPI().updateAppState();
@@ -7,7 +7,6 @@ sap.ui.define(["sap/fe/core/helpers/StableIdHelper"], function (StableIdHelper)
7
7
 
8
8
  var _exports = {};
9
9
  var generate = StableIdHelper.generate;
10
-
11
10
  /**
12
11
  * Method returns an VariantBackReference expression based on variantManagement and oConverterContext value.
13
12
  *
@@ -17,20 +16,17 @@ sap.ui.define(["sap/fe/core/helpers/StableIdHelper"], function (StableIdHelper)
17
16
  * @param {object} oConverterContext Object containing converted context
18
17
  * @returns {string}
19
18
  */
19
+
20
20
  var getVariantBackReference = function (oViewData, oConverterContext) {
21
21
  if (oViewData && oViewData.variantManagement === "Page") {
22
22
  return "fe::PageVariantManagement";
23
23
  }
24
-
25
24
  if (oViewData && oViewData.variantManagement === "Control") {
26
25
  return generate([oConverterContext.filterBarId, "VariantManagement"]);
27
26
  }
28
-
29
27
  return undefined;
30
28
  };
31
-
32
29
  _exports.getVariantBackReference = getVariantBackReference;
33
-
34
30
  var getDefaultPath = function (aViews) {
35
31
  for (var i = 0; i < aViews.length; i++) {
36
32
  if (aViews[i].defaultPath) {
@@ -38,8 +34,7 @@ sap.ui.define(["sap/fe/core/helpers/StableIdHelper"], function (StableIdHelper)
38
34
  }
39
35
  }
40
36
  };
41
-
42
37
  _exports.getDefaultPath = getDefaultPath;
43
38
  return _exports;
44
39
  }, false);
45
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRWYXJpYW50QmFja1JlZmVyZW5jZSIsIm9WaWV3RGF0YSIsIm9Db252ZXJ0ZXJDb250ZXh0IiwidmFyaWFudE1hbmFnZW1lbnQiLCJnZW5lcmF0ZSIsImZpbHRlckJhcklkIiwidW5kZWZpbmVkIiwiZ2V0RGVmYXVsdFBhdGgiLCJhVmlld3MiLCJpIiwibGVuZ3RoIiwiZGVmYXVsdFBhdGgiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkxpc3RSZXBvcnRUZW1wbGF0aW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRlbXBsYXRlIEhlbHBlcnMgZm9yIHRoZSBMaXN0IFJlcG9ydFxuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuXG4vKipcbiAqIE1ldGhvZCByZXR1cm5zIGFuIFZhcmlhbnRCYWNrUmVmZXJlbmNlIGV4cHJlc3Npb24gYmFzZWQgb24gdmFyaWFudE1hbmFnZW1lbnQgYW5kIG9Db252ZXJ0ZXJDb250ZXh0IHZhbHVlLlxuICpcbiAqIEBmdW5jdGlvblxuICogQG5hbWUgZ2V0VmFyaWFudEJhY2tSZWZlcmVuY2VcbiAqIEBwYXJhbSB7b2JqZWN0fSBvVmlld0RhdGEgT2JqZWN0IENvbnRhaW5pbmcgVmlldyBEYXRhXG4gKiBAcGFyYW0ge29iamVjdH0gb0NvbnZlcnRlckNvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgY29udmVydGVkIGNvbnRleHRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldFZhcmlhbnRCYWNrUmVmZXJlbmNlID0gZnVuY3Rpb24gKG9WaWV3RGF0YTogYW55LCBvQ29udmVydGVyQ29udGV4dDogYW55KSB7XG5cdGlmIChvVmlld0RhdGEgJiYgb1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIlBhZ2VcIikge1xuXHRcdHJldHVybiBcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIjtcblx0fVxuXHRpZiAob1ZpZXdEYXRhICYmIG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCA9PT0gXCJDb250cm9sXCIpIHtcblx0XHRyZXR1cm4gZ2VuZXJhdGUoW29Db252ZXJ0ZXJDb250ZXh0LmZpbHRlckJhcklkLCBcIlZhcmlhbnRNYW5hZ2VtZW50XCJdKTtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRQYXRoID0gZnVuY3Rpb24gKGFWaWV3czogYW55KSB7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYVZpZXdzLmxlbmd0aDsgaSsrKSB7XG5cdFx0aWYgKGFWaWV3c1tpXS5kZWZhdWx0UGF0aCkge1xuXHRcdFx0cmV0dXJuIGFWaWV3c1tpXS5kZWZhdWx0UGF0aDtcblx0XHR9XG5cdH1cbn07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7RUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFFTyxJQUFNQSx1QkFBdUIsR0FBRyxVQUFVQyxTQUFWLEVBQTBCQyxpQkFBMUIsRUFBa0Q7SUFDeEYsSUFBSUQsU0FBUyxJQUFJQSxTQUFTLENBQUNFLGlCQUFWLEtBQWdDLE1BQWpELEVBQXlEO01BQ3hELE9BQU8sMkJBQVA7SUFDQTs7SUFDRCxJQUFJRixTQUFTLElBQUlBLFNBQVMsQ0FBQ0UsaUJBQVYsS0FBZ0MsU0FBakQsRUFBNEQ7TUFDM0QsT0FBT0MsUUFBUSxDQUFDLENBQUNGLGlCQUFpQixDQUFDRyxXQUFuQixFQUFnQyxtQkFBaEMsQ0FBRCxDQUFmO0lBQ0E7O0lBQ0QsT0FBT0MsU0FBUDtFQUNBLENBUk07Ozs7RUFVQSxJQUFNQyxjQUFjLEdBQUcsVUFBVUMsTUFBVixFQUF1QjtJQUNwRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELE1BQU0sQ0FBQ0UsTUFBM0IsRUFBbUNELENBQUMsRUFBcEMsRUFBd0M7TUFDdkMsSUFBSUQsTUFBTSxDQUFDQyxDQUFELENBQU4sQ0FBVUUsV0FBZCxFQUEyQjtRQUMxQixPQUFPSCxNQUFNLENBQUNDLENBQUQsQ0FBTixDQUFVRSxXQUFqQjtNQUNBO0lBQ0Q7RUFDRCxDQU5NIn0=
40
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRWYXJpYW50QmFja1JlZmVyZW5jZSIsIm9WaWV3RGF0YSIsIm9Db252ZXJ0ZXJDb250ZXh0IiwidmFyaWFudE1hbmFnZW1lbnQiLCJnZW5lcmF0ZSIsImZpbHRlckJhcklkIiwidW5kZWZpbmVkIiwiZ2V0RGVmYXVsdFBhdGgiLCJhVmlld3MiLCJpIiwibGVuZ3RoIiwiZGVmYXVsdFBhdGgiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkxpc3RSZXBvcnRUZW1wbGF0aW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRlbXBsYXRlIEhlbHBlcnMgZm9yIHRoZSBMaXN0IFJlcG9ydFxuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuXG4vKipcbiAqIE1ldGhvZCByZXR1cm5zIGFuIFZhcmlhbnRCYWNrUmVmZXJlbmNlIGV4cHJlc3Npb24gYmFzZWQgb24gdmFyaWFudE1hbmFnZW1lbnQgYW5kIG9Db252ZXJ0ZXJDb250ZXh0IHZhbHVlLlxuICpcbiAqIEBmdW5jdGlvblxuICogQG5hbWUgZ2V0VmFyaWFudEJhY2tSZWZlcmVuY2VcbiAqIEBwYXJhbSB7b2JqZWN0fSBvVmlld0RhdGEgT2JqZWN0IENvbnRhaW5pbmcgVmlldyBEYXRhXG4gKiBAcGFyYW0ge29iamVjdH0gb0NvbnZlcnRlckNvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgY29udmVydGVkIGNvbnRleHRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldFZhcmlhbnRCYWNrUmVmZXJlbmNlID0gZnVuY3Rpb24gKG9WaWV3RGF0YTogYW55LCBvQ29udmVydGVyQ29udGV4dDogYW55KSB7XG5cdGlmIChvVmlld0RhdGEgJiYgb1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIlBhZ2VcIikge1xuXHRcdHJldHVybiBcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIjtcblx0fVxuXHRpZiAob1ZpZXdEYXRhICYmIG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCA9PT0gXCJDb250cm9sXCIpIHtcblx0XHRyZXR1cm4gZ2VuZXJhdGUoW29Db252ZXJ0ZXJDb250ZXh0LmZpbHRlckJhcklkLCBcIlZhcmlhbnRNYW5hZ2VtZW50XCJdKTtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRQYXRoID0gZnVuY3Rpb24gKGFWaWV3czogYW55KSB7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYVZpZXdzLmxlbmd0aDsgaSsrKSB7XG5cdFx0aWYgKGFWaWV3c1tpXS5kZWZhdWx0UGF0aCkge1xuXHRcdFx0cmV0dXJuIGFWaWV3c1tpXS5kZWZhdWx0UGF0aDtcblx0XHR9XG5cdH1cbn07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7OztFQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7RUFFTyxJQUFNQSx1QkFBdUIsR0FBRyxVQUFVQyxTQUFjLEVBQUVDLGlCQUFzQixFQUFFO0lBQ3hGLElBQUlELFNBQVMsSUFBSUEsU0FBUyxDQUFDRSxpQkFBaUIsS0FBSyxNQUFNLEVBQUU7TUFDeEQsT0FBTywyQkFBMkI7SUFDbkM7SUFDQSxJQUFJRixTQUFTLElBQUlBLFNBQVMsQ0FBQ0UsaUJBQWlCLEtBQUssU0FBUyxFQUFFO01BQzNELE9BQU9DLFFBQVEsQ0FBQyxDQUFDRixpQkFBaUIsQ0FBQ0csV0FBVyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDdEU7SUFDQSxPQUFPQyxTQUFTO0VBQ2pCLENBQUM7RUFBQztFQUVLLElBQU1DLGNBQWMsR0FBRyxVQUFVQyxNQUFXLEVBQUU7SUFDcEQsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdELE1BQU0sQ0FBQ0UsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtNQUN2QyxJQUFJRCxNQUFNLENBQUNDLENBQUMsQ0FBQyxDQUFDRSxXQUFXLEVBQUU7UUFDMUIsT0FBT0gsTUFBTSxDQUFDQyxDQUFDLENBQUMsQ0FBQ0UsV0FBVztNQUM3QjtJQUNEO0VBQ0QsQ0FBQztFQUFDO0VBQUE7QUFBQSJ9