@sapui5/sap.fe.core 1.136.3 → 1.136.6

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 (70) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/controllerextensions/EditFlow.js +3 -3
  4. package/src/sap/fe/core/controllerextensions/EditFlow.ts +6 -2
  5. package/src/sap/fe/core/controllerextensions/MessageHandler.js +21 -5
  6. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +19 -1
  7. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +4 -3
  8. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +10 -3
  9. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +6 -5
  10. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +8 -4
  11. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +4 -3
  12. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +6 -2
  13. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +4 -17
  14. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +6 -19
  15. package/src/sap/fe/core/controls/HideFormGroupAutomatically.js +15 -1
  16. package/src/sap/fe/core/controls/HideFormGroupAutomatically.ts +18 -0
  17. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +4 -4
  18. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +3 -3
  19. package/src/sap/fe/core/fpm/manifest.json +1 -1
  20. package/src/sap/fe/core/library.js +1 -1
  21. package/src/sap/fe/core/messagebundle_ar.properties +2 -0
  22. package/src/sap/fe/core/messagebundle_bg.properties +2 -0
  23. package/src/sap/fe/core/messagebundle_ca.properties +2 -0
  24. package/src/sap/fe/core/messagebundle_cnr.properties +2 -0
  25. package/src/sap/fe/core/messagebundle_cs.properties +2 -0
  26. package/src/sap/fe/core/messagebundle_cy.properties +2 -0
  27. package/src/sap/fe/core/messagebundle_da.properties +2 -0
  28. package/src/sap/fe/core/messagebundle_de.properties +2 -0
  29. package/src/sap/fe/core/messagebundle_el.properties +2 -0
  30. package/src/sap/fe/core/messagebundle_en.properties +2 -0
  31. package/src/sap/fe/core/messagebundle_en_GB.properties +2 -0
  32. package/src/sap/fe/core/messagebundle_es.properties +3 -1
  33. package/src/sap/fe/core/messagebundle_es_MX.properties +2 -0
  34. package/src/sap/fe/core/messagebundle_et.properties +2 -0
  35. package/src/sap/fe/core/messagebundle_fi.properties +2 -0
  36. package/src/sap/fe/core/messagebundle_fr.properties +2 -0
  37. package/src/sap/fe/core/messagebundle_fr_CA.properties +2 -0
  38. package/src/sap/fe/core/messagebundle_hi.properties +2 -0
  39. package/src/sap/fe/core/messagebundle_hr.properties +2 -0
  40. package/src/sap/fe/core/messagebundle_hu.properties +2 -0
  41. package/src/sap/fe/core/messagebundle_id.properties +2 -0
  42. package/src/sap/fe/core/messagebundle_it.properties +2 -0
  43. package/src/sap/fe/core/messagebundle_iw.properties +2 -0
  44. package/src/sap/fe/core/messagebundle_ja.properties +2 -0
  45. package/src/sap/fe/core/messagebundle_kk.properties +2 -0
  46. package/src/sap/fe/core/messagebundle_ko.properties +2 -0
  47. package/src/sap/fe/core/messagebundle_lt.properties +2 -0
  48. package/src/sap/fe/core/messagebundle_lv.properties +2 -0
  49. package/src/sap/fe/core/messagebundle_mk.properties +2 -0
  50. package/src/sap/fe/core/messagebundle_ms.properties +2 -0
  51. package/src/sap/fe/core/messagebundle_nl.properties +2 -0
  52. package/src/sap/fe/core/messagebundle_no.properties +2 -0
  53. package/src/sap/fe/core/messagebundle_pl.properties +2 -0
  54. package/src/sap/fe/core/messagebundle_pt.properties +2 -0
  55. package/src/sap/fe/core/messagebundle_pt_PT.properties +2 -0
  56. package/src/sap/fe/core/messagebundle_ro.properties +2 -0
  57. package/src/sap/fe/core/messagebundle_ru.properties +2 -0
  58. package/src/sap/fe/core/messagebundle_sh.properties +2 -0
  59. package/src/sap/fe/core/messagebundle_sk.properties +2 -0
  60. package/src/sap/fe/core/messagebundle_sl.properties +2 -0
  61. package/src/sap/fe/core/messagebundle_sr.properties +2 -0
  62. package/src/sap/fe/core/messagebundle_sv.properties +2 -0
  63. package/src/sap/fe/core/messagebundle_th.properties +2 -0
  64. package/src/sap/fe/core/messagebundle_tr.properties +2 -0
  65. package/src/sap/fe/core/messagebundle_uk.properties +2 -0
  66. package/src/sap/fe/core/messagebundle_vi.properties +2 -0
  67. package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -0
  68. package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -0
  69. package/src/sap/fe/core/templating/PropertyHelper.js +3 -2
  70. package/src/sap/fe/core/templating/PropertyHelper.ts +2 -1
@@ -1,5 +1,6 @@
1
1
  import type ResourceBundle from "sap/base/i18n/ResourceBundle";
2
2
  import type ResourceModel from "sap/fe/core/ResourceModel";
3
+ import type MessageHandler from "sap/fe/core/controllerextensions/MessageHandler";
3
4
  import type { CustomMessage, ShowMessageDialogParameter } from "sap/fe/core/controllerextensions/MessageHandler";
4
5
  import { getResourceModel } from "sap/fe/core/helpers/ResourceModelHelper";
5
6
  import type Field from "sap/fe/macros/Field";
@@ -109,7 +110,8 @@ export type messageHandlingType = {
109
110
  viewType?: string,
110
111
  showStateMessages?: boolean,
111
112
  messageDialogParameter?: ShowMessageDialogParameter,
112
- resourceModel?: ResourceModel
113
+ resourceModel?: ResourceModel,
114
+ messageHandler?: MessageHandler
113
115
  ) => MessageUIDecisions;
114
116
  showMessagesInUI: (uiDecision: MessageUIDecisions) => Promise<void>;
115
117
  removeUnboundTransitionMessages: () => void;
@@ -186,7 +188,6 @@ export type messageHandlingType = {
186
188
  setGroupNameLRTable: (control: Control | undefined, aModelData: MessageWithHeader, sActionName: string | undefined) => void;
187
189
  isControlInTable: (oTable: MDCTable, sControlId: string) => UI5Element[] | boolean;
188
190
  isControlPartOfCreationRow: (oControl: UI5Element | undefined) => boolean;
189
- removeMessageShownInMessageStrip: (transientMessages: Message[], context: Context) => Message[];
190
191
  getFiltersForMessages: (showBoundTransition: boolean, showStateMessages?: boolean) => Filter[];
191
192
  showMessageToast: (message: Message) => Promise<void>;
192
193
  showMessageDialogControl: (uiDecisions: MessageUIDecisions, runToTest?: boolean) => Promise<void | Dialog>;
@@ -583,7 +584,8 @@ function getUIDecisions(
583
584
  viewType?: string,
584
585
  showStateMessages = false,
585
586
  messageDialogParameter?: ShowMessageDialogParameter,
586
- resourceModel?: ResourceModel
587
+ resourceModel?: ResourceModel,
588
+ messageHandlder?: MessageHandler
587
589
  ): MessageUIDecisions {
588
590
  // Add Custom messages
589
591
  // TODO: Will these messages be part of transitionMessages?
@@ -602,7 +604,7 @@ function getUIDecisions(
602
604
  const filters = getFiltersForMessages(showBoundTransition, showStateMessages);
603
605
  messagesToShow = getMessagesToShow(filters, messagesToShow ?? []);
604
606
  // handle context bound messages, If there is a single message of which is bounded to the context then remove that from the dialog
605
- messagesToShow = removeMessageShownInMessageStrip(messagesToShow, context);
607
+ messagesToShow = messageHandlder?.filterContextBoundMessages(messagesToShow, context) || messagesToShow;
606
608
  ({ messagesToShow, uiElementToUse } = processMessagesFromChangesetFailure({ messagesToShow, uiElementToUse }));
607
609
  // Modify ETag Messages
608
610
  const hasEtagMessage = this.modifyETagMessagesOnly(Library.getResourceBundleFor("sap.fe.core")!, concurrentEditFlag);
@@ -1040,20 +1042,6 @@ function showMessageBoxPerType(formattedText: string, close: { onClose: Function
1040
1042
  }
1041
1043
  }
1042
1044
 
1043
- function removeMessageShownInMessageStrip(transitionMessages: Message[], context: Context): Message[] {
1044
- const boundContextMessages: Message[] = [];
1045
- transitionMessages?.forEach((message: Message) => {
1046
- if (message.getTargets().length === 1 && message.getTargets()[0] === context?.getPath() && message.getPersistent() === true) {
1047
- boundContextMessages.push(message);
1048
- }
1049
- });
1050
- if (boundContextMessages.length === 1) {
1051
- transitionMessages = transitionMessages?.filter(function (message: Message) {
1052
- return message !== boundContextMessages[0];
1053
- });
1054
- }
1055
- return transitionMessages;
1056
- }
1057
1045
  /**
1058
1046
  * This function sets the group name for all messages in a dialog.
1059
1047
  * @param aModelDataArray Messages array
@@ -1982,7 +1970,6 @@ const messageHandling: messageHandlingType = {
1982
1970
  setGroupNameLRTable: setGroupNameLRTable,
1983
1971
  isControlInTable: isControlInTable,
1984
1972
  isControlPartOfCreationRow: isControlPartOfCreationRow,
1985
- removeMessageShownInMessageStrip: removeMessageShownInMessageStrip,
1986
1973
  getFiltersForMessages: getFiltersForMessages,
1987
1974
  showMessagesInUI: showMessagesInUI,
1988
1975
  showMessageDialogControl: showMessageDialogControl,
@@ -93,6 +93,12 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/EventDelegateHook", "../
93
93
  });
94
94
  const isUsingBindingOnVisibility = formContainer?.getBindingInfo?.("visible")?.parts?.length > 0;
95
95
 
96
+ /**
97
+ * This function checks the visibility of every field within the FormElement.
98
+ * It hides the FormElement when the visibility of all contained fields is set to false
99
+ */
100
+ this.hideFormElements(formElements);
101
+
96
102
  /**
97
103
  * This condition ignores the form container when a new group is created using the Adapt UI.
98
104
  * If the group is empty, we should not hide it, as it is required to be there to add additional form elements.
@@ -121,8 +127,16 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/EventDelegateHook", "../
121
127
  }
122
128
  return parent?.isA("sap.uxap.ObjectPageLayout") === true ? parent : null;
123
129
  };
130
+ _proto.hideFormElements = function hideFormElements(formElements) {
131
+ if (!Array.isArray(formElements)) return;
132
+ for (const formElement of formElements) {
133
+ const fields = formElement?.getFields();
134
+ const areAllFieldsHidden = fields?.every(field => field?.getVisible?.() === false);
135
+ if (areAllFieldsHidden) formElement.setVisible(false);
136
+ }
137
+ };
124
138
  return HideFormGroupAutomatically;
125
139
  }(EventDelegateHook)) || _class);
126
140
  return HideFormGroupAutomatically;
127
141
  }, false);
128
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJIaWRlRm9ybUdyb3VwQXV0b21hdGljYWxseSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9jbGFzcyIsIl9FdmVudERlbGVnYXRlSG9vayIsIl90aGlzIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjYWxsIiwiYXBwQ29tcG9uZW50IiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0UGFyZW50IiwiaGlkZVN1YnNlY3Rpb25zRm9ybUNvbnRhaW5lciIsImhpZGVIZWFkZXJDb250YWluZXIiLCJwYXJlbnQiLCJpc0EiLCJmb3JtQ29udGFpbmVycyIsImdldEZvcm1Db250YWluZXJzIiwiaGlkZUZvcm1Db250YWluZXJzIiwib3AiLCJmZXRjaE9iamVjdFBhZ2UiLCJzZWN0aW9ucyIsImdldFNlY3Rpb25zIiwiaXNBcnJheSIsInNlY3Rpb24iLCJzdWJTZWN0aW9ucyIsImdldFN1YlNlY3Rpb25zIiwic3ViU2VjdGlvbiIsInN1YlNlY3Rpb25CbG9ja3MiLCJnZXRCbG9ja3MiLCJpc0VkaXRhYmxlSGVhZGVyIiwic29tZSIsImhlYWRlckJsb2NrIiwic3ViU2VjdGlvbkJsb2NrIiwiZm9ybUNvbnRhaW5lciIsImZvcm1FbGVtZW50cyIsImdldEZvcm1FbGVtZW50cyIsImlzVGhlcmVBbnlWaXNpYmxlSXRlbSIsImZlIiwiZ2V0VmlzaWJsZSIsImlzVXNpbmdQYXJ0T2ZQcmV2aWV3QW5ub3RhdGlvbiIsImZvcm1FbGVtZW50IiwiYmluZGluZ0luZm8iLCJnZXRCaW5kaW5nSW5mbyIsInBhcnRzIiwiYmluZGluZ0luZm9QYXJ0IiwicGF0aCIsImlzVXNpbmdCaW5kaW5nT25WaXNpYmlsaXR5IiwiaXNBZGFwdGF0aW9uTW9kZSIsImRhdGEiLCJzZXRWaXNpYmxlIiwiRXZlbnREZWxlZ2F0ZUhvb2siXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkhpZGVGb3JtR3JvdXBBdXRvbWF0aWNhbGx5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEV2ZW50RGVsZWdhdGVIb29rIGZyb20gXCJzYXAvZmUvYmFzZS9FdmVudERlbGVnYXRlSG9va1wiO1xuaW1wb3J0IHR5cGUgU2VjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9TZWN0aW9uXCI7XG5pbXBvcnQgdHlwZSBTdWJTZWN0aW9uQmxvY2sgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvT2JqZWN0UGFnZS9jb250cm9scy9TdWJTZWN0aW9uQmxvY2tcIjtcbmltcG9ydCB0eXBlIEZvcm0gZnJvbSBcInNhcC91aS9sYXlvdXQvZm9ybS9Gb3JtXCI7XG5pbXBvcnQgdHlwZSBGb3JtQ29udGFpbmVyIGZyb20gXCJzYXAvdWkvbGF5b3V0L2Zvcm0vRm9ybUNvbnRhaW5lclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL21kYy9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlTGF5b3V0IGZyb20gXCJzYXAvdXhhcC9PYmplY3RQYWdlTGF5b3V0XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcIi4uL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCIuLi9Db21tb25VdGlsc1wiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9scy5IaWRlRm9ybUdyb3VwQXV0b21hdGljYWxseVwiKVxuY2xhc3MgSGlkZUZvcm1Hcm91cEF1dG9tYXRpY2FsbHkgZXh0ZW5kcyBFdmVudERlbGVnYXRlSG9vayB7XG5cdGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG5cblx0b25CZWZvcmVSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0dGhpcy5hcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5nZXRQYXJlbnQoKSBhcyBDb250cm9sKTtcblxuXHRcdHRoaXMuaGlkZVN1YnNlY3Rpb25zRm9ybUNvbnRhaW5lcigpO1xuXHRcdHRoaXMuaGlkZUhlYWRlckNvbnRhaW5lcigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIGFsbCB0aGUgZm9ybSBlbGVtZW50cyBhcmUgaGlkZGVuLCBhbmQgdGhlbiBoaWRlcyB0aGUgZm9ybSBjb250YWluZXIuXG5cdCAqL1xuXHRwcml2YXRlIGhpZGVTdWJzZWN0aW9uc0Zvcm1Db250YWluZXIoKTogdm9pZCB7XG5cdFx0Y29uc3QgcGFyZW50ID0gdGhpcz8uZ2V0UGFyZW50KCk7XG5cdFx0aWYgKHBhcmVudD8uaXNBPEZvcm0+KFwic2FwLnVpLmxheW91dC5mb3JtLkZvcm1cIikpIHtcblx0XHRcdGNvbnN0IGZvcm1Db250YWluZXJzID0gcGFyZW50Py5nZXRGb3JtQ29udGFpbmVycygpO1xuXHRcdFx0dGhpcy5oaWRlRm9ybUNvbnRhaW5lcnMoZm9ybUNvbnRhaW5lcnMpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3Mgd2hldGhlciBhbGwgdGhlIGZvcm0gZWxlbWVudHMgd2l0aGluIGFuIGVkaXRhYmxlIGhlYWRlciBhcmUgaGlkZGVuLCBhbmQgdGhlbiBoaWRlcyB0aGUgZm9ybSBjb250YWluZXIuXG5cdCAqL1xuXHRwcml2YXRlIGhpZGVIZWFkZXJDb250YWluZXIoKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3AgPSB0aGlzLmZldGNoT2JqZWN0UGFnZSgpO1xuXHRcdC8qKlxuXHRcdCAqIEdldCB0aGUgc2VjdGlvbnMgb2YgdGhlIG9iamVjdCBwYWdlXG5cdFx0ICovXG5cdFx0Y29uc3Qgc2VjdGlvbnMgPSBvcD8uZ2V0U2VjdGlvbnM/LigpIGFzIFNlY3Rpb25bXTtcblxuXHRcdGlmICghQXJyYXkuaXNBcnJheShzZWN0aW9ucykpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc2VjdGlvbnMpIHtcblx0XHRcdC8qKlxuXHRcdFx0ICogTmF2aWdhdGUgdGhyb3VnaCB0aGUgc3Vic2VjdGlvbnMgd2l0aGluIHRoZSBzZWN0aW9ucy5cblx0XHRcdCAqL1xuXHRcdFx0Y29uc3Qgc3ViU2VjdGlvbnMgPSBzZWN0aW9uPy5nZXRTdWJTZWN0aW9ucygpO1xuXG5cdFx0XHRmb3IgKGNvbnN0IHN1YlNlY3Rpb24gb2Ygc3ViU2VjdGlvbnMpIHtcblx0XHRcdFx0LyoqXG5cdFx0XHRcdCAqIEdldCB0aGUgc3Vic2VjdGlvbiBibG9ja3MuXG5cdFx0XHRcdCAqL1xuXHRcdFx0XHRjb25zdCBzdWJTZWN0aW9uQmxvY2tzID0gc3ViU2VjdGlvbj8uZ2V0QmxvY2tzKCkgYXMgU3ViU2VjdGlvbkJsb2NrW107XG5cdFx0XHRcdC8qKlxuXHRcdFx0XHQgKiBDaGVja3MgaWYgdGhlcmUgaXMgYSBmb3JtIGluc2lkZSB0aGUgYmxvY2suXG5cdFx0XHRcdCAqL1xuXHRcdFx0XHRjb25zdCBpc0VkaXRhYmxlSGVhZGVyID0gc3ViU2VjdGlvbkJsb2Nrcz8uc29tZSgoaGVhZGVyQmxvY2spID0+IGhlYWRlckJsb2NrLmlzQTxGb3JtPihcInNhcC51aS5sYXlvdXQuZm9ybS5Gb3JtXCIpKTtcblxuXHRcdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkoc3ViU2VjdGlvbkJsb2NrcykgfHwgIWlzRWRpdGFibGVIZWFkZXIpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAoY29uc3Qgc3ViU2VjdGlvbkJsb2NrIG9mIHN1YlNlY3Rpb25CbG9ja3MpIHtcblx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHQgKiBHZXQgdGhlIGZvcm0gY29udGFpbmVycyB3aXRoaW4gdGhlIHN1YnNlY3Rpb24uXG5cdFx0XHRcdFx0ICovXG5cdFx0XHRcdFx0aWYgKHN1YlNlY3Rpb25CbG9jay5pc0E8Rm9ybT4oXCJzYXAudWkubGF5b3V0LmZvcm0uRm9ybVwiKSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgZm9ybUNvbnRhaW5lcnMgPSBzdWJTZWN0aW9uQmxvY2s/LmdldEZvcm1Db250YWluZXJzPy4oKTtcblx0XHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGZvcm1Db250YWluZXJzKSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmhpZGVGb3JtQ29udGFpbmVycyhmb3JtQ29udGFpbmVycyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBoaWRlRm9ybUNvbnRhaW5lcnMoZm9ybUNvbnRhaW5lcnM6IEZvcm1Db250YWluZXJbXSk6IHZvaWQge1xuXHRcdGlmICghQXJyYXkuaXNBcnJheShmb3JtQ29udGFpbmVycykpIHJldHVybjtcblxuXHRcdGZvciAoY29uc3QgZm9ybUNvbnRhaW5lciBvZiBmb3JtQ29udGFpbmVycykge1xuXHRcdFx0Y29uc3QgZm9ybUVsZW1lbnRzID0gZm9ybUNvbnRhaW5lcj8uZ2V0Rm9ybUVsZW1lbnRzKCk7XG5cdFx0XHRjb25zdCBpc1RoZXJlQW55VmlzaWJsZUl0ZW0gPSBmb3JtRWxlbWVudHM/LnNvbWUoKGZlKSA9PiBmZT8uZ2V0VmlzaWJsZSgpKTtcblx0XHRcdGNvbnN0IGlzVXNpbmdQYXJ0T2ZQcmV2aWV3QW5ub3RhdGlvbiA9IGZvcm1FbGVtZW50cy5zb21lKChmb3JtRWxlbWVudCkgPT4ge1xuXHRcdFx0XHRjb25zdCBiaW5kaW5nSW5mbyA9IGZvcm1FbGVtZW50Py5nZXRCaW5kaW5nSW5mbz8uKFwidmlzaWJsZVwiKTtcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoYmluZGluZ0luZm8/LnBhcnRzKSlcblx0XHRcdFx0XHRyZXR1cm4gYmluZGluZ0luZm8ucGFydHMuc29tZSgoYmluZGluZ0luZm9QYXJ0OiB7IHBhdGg6IHN0cmluZyB9KSA9PiBiaW5kaW5nSW5mb1BhcnQucGF0aCA9PT0gXCJzaG93RGV0YWlsc1wiKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBpc1VzaW5nQmluZGluZ09uVmlzaWJpbGl0eSA9IGZvcm1Db250YWluZXI/LmdldEJpbmRpbmdJbmZvPy4oXCJ2aXNpYmxlXCIpPy5wYXJ0cz8ubGVuZ3RoID4gMDtcblxuXHRcdFx0LyoqXG5cdFx0XHQgKiBUaGlzIGNvbmRpdGlvbiBpZ25vcmVzIHRoZSBmb3JtIGNvbnRhaW5lciB3aGVuIGEgbmV3IGdyb3VwIGlzIGNyZWF0ZWQgdXNpbmcgdGhlIEFkYXB0IFVJLlxuXHRcdFx0ICogSWYgdGhlIGdyb3VwIGlzIGVtcHR5LCB3ZSBzaG91bGQgbm90IGhpZGUgaXQsIGFzIGl0IGlzIHJlcXVpcmVkIHRvIGJlIHRoZXJlIHRvIGFkZCBhZGRpdGlvbmFsIGZvcm0gZWxlbWVudHMuXG5cdFx0XHQgKiBJZiB0aGUgZm9ybSBjb250YWluZXIgaXRzZWxmIGlzIG1hcmtlZCBhcyBVSS5IaWRkZW4sIHRoZW4gd2Ugc2hvdWxkIG5vdCBoaWRlIGl0LlxuXHRcdFx0ICovXG5cdFx0XHRpZiAoXG5cdFx0XHRcdCh0aGlzLmFwcENvbXBvbmVudD8uaXNBZGFwdGF0aW9uTW9kZSgpID09PSB0cnVlICYmIGZvcm1FbGVtZW50cz8ubGVuZ3RoID09PSAwKSB8fFxuXHRcdFx0XHRpc1VzaW5nUGFydE9mUHJldmlld0Fubm90YXRpb24gfHxcblx0XHRcdFx0aXNVc2luZ0JpbmRpbmdPblZpc2liaWxpdHkgfHxcblx0XHRcdFx0Zm9ybUNvbnRhaW5lci5kYXRhKFwiVWlIaWRkZW5QcmVzZW50XCIpID09PSBcInRydWVcIlxuXHRcdFx0KSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvKipcblx0XHRcdCAqIFNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlcmUncyBhIGNoYW5nZSBpbiB0aGUgZm9ybSwgd2UgbmVlZCB0byBjb25zaWRlciB0d28gc2NlbmFyaW9zLlxuXHRcdFx0ICogRmlyc3QsIGlmIHRoZSBmb3JtIGNvbnRhaW5lciBpcyBoaWRkZW4sIHdlIG11c3QgZGV0ZXJtaW5lIHdoZXRoZXIgaXQgc2hvdWxkIGJlIHNob3duIGFnYWluLlxuXHRcdFx0ICogU2Vjb25kLCBpZiB0aGUgZm9ybSBjb250YWluZXIgaXMgY3VycmVudGx5IGRpc3BsYXllZCwgd2UgbmVlZCB0byBhc3Nlc3Mgd2hldGhlciBpdCBzaG91bGQgYmUgaGlkZGVuLlxuXHRcdFx0ICovXG5cdFx0XHRpZiAoaXNUaGVyZUFueVZpc2libGVJdGVtID09PSBmYWxzZSkge1xuXHRcdFx0XHRmb3JtQ29udGFpbmVyLnNldFZpc2libGUoZmFsc2UpO1xuXHRcdFx0fSBlbHNlIGlmICghZm9ybUNvbnRhaW5lci5nZXRWaXNpYmxlKCkpIHtcblx0XHRcdFx0Zm9ybUNvbnRhaW5lci5zZXRWaXNpYmxlKHRydWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgZmV0Y2hPYmplY3RQYWdlKCk6IE9iamVjdFBhZ2VMYXlvdXQgfCBudWxsIHtcblx0XHRsZXQgcGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoKTtcblxuXHRcdHdoaWxlICghKHBhcmVudD8uaXNBPE9iamVjdFBhZ2VMYXlvdXQ+KFwic2FwLnV4YXAuT2JqZWN0UGFnZUxheW91dFwiKSA/PyBmYWxzZSkgJiYgdHlwZW9mIHBhcmVudD8uZ2V0UGFyZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdHBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnQoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcGFyZW50Py5pc0E8T2JqZWN0UGFnZUxheW91dD4oXCJzYXAudXhhcC5PYmplY3RQYWdlTGF5b3V0XCIpID09PSB0cnVlID8gKHBhcmVudCBhcyBPYmplY3RQYWdlTGF5b3V0KSA6IG51bGw7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSGlkZUZvcm1Hcm91cEF1dG9tYXRp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
142
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJIaWRlRm9ybUdyb3VwQXV0b21hdGljYWxseSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9jbGFzcyIsIl9FdmVudERlbGVnYXRlSG9vayIsIl90aGlzIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjYWxsIiwiYXBwQ29tcG9uZW50IiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0UGFyZW50IiwiaGlkZVN1YnNlY3Rpb25zRm9ybUNvbnRhaW5lciIsImhpZGVIZWFkZXJDb250YWluZXIiLCJwYXJlbnQiLCJpc0EiLCJmb3JtQ29udGFpbmVycyIsImdldEZvcm1Db250YWluZXJzIiwiaGlkZUZvcm1Db250YWluZXJzIiwib3AiLCJmZXRjaE9iamVjdFBhZ2UiLCJzZWN0aW9ucyIsImdldFNlY3Rpb25zIiwiaXNBcnJheSIsInNlY3Rpb24iLCJzdWJTZWN0aW9ucyIsImdldFN1YlNlY3Rpb25zIiwic3ViU2VjdGlvbiIsInN1YlNlY3Rpb25CbG9ja3MiLCJnZXRCbG9ja3MiLCJpc0VkaXRhYmxlSGVhZGVyIiwic29tZSIsImhlYWRlckJsb2NrIiwic3ViU2VjdGlvbkJsb2NrIiwiZm9ybUNvbnRhaW5lciIsImZvcm1FbGVtZW50cyIsImdldEZvcm1FbGVtZW50cyIsImlzVGhlcmVBbnlWaXNpYmxlSXRlbSIsImZlIiwiZ2V0VmlzaWJsZSIsImlzVXNpbmdQYXJ0T2ZQcmV2aWV3QW5ub3RhdGlvbiIsImZvcm1FbGVtZW50IiwiYmluZGluZ0luZm8iLCJnZXRCaW5kaW5nSW5mbyIsInBhcnRzIiwiYmluZGluZ0luZm9QYXJ0IiwicGF0aCIsImlzVXNpbmdCaW5kaW5nT25WaXNpYmlsaXR5IiwiaGlkZUZvcm1FbGVtZW50cyIsImlzQWRhcHRhdGlvbk1vZGUiLCJkYXRhIiwic2V0VmlzaWJsZSIsImZpZWxkcyIsImdldEZpZWxkcyIsImFyZUFsbEZpZWxkc0hpZGRlbiIsImV2ZXJ5IiwiZmllbGQiLCJFdmVudERlbGVnYXRlSG9vayJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSGlkZUZvcm1Hcm91cEF1dG9tYXRpY2FsbHkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgRXZlbnREZWxlZ2F0ZUhvb2sgZnJvbSBcInNhcC9mZS9iYXNlL0V2ZW50RGVsZWdhdGVIb29rXCI7XG5pbXBvcnQgdHlwZSBTZWN0aW9uIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL1NlY3Rpb25cIjtcbmltcG9ydCB0eXBlIFN1YlNlY3Rpb25CbG9jayBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL2NvbnRyb2xzL1N1YlNlY3Rpb25CbG9ja1wiO1xuaW1wb3J0IHR5cGUgRm9ybSBmcm9tIFwic2FwL3VpL2xheW91dC9mb3JtL0Zvcm1cIjtcbmltcG9ydCB0eXBlIEZvcm1Db250YWluZXIgZnJvbSBcInNhcC91aS9sYXlvdXQvZm9ybS9Gb3JtQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBGb3JtRWxlbWVudCBmcm9tIFwic2FwL3VpL2xheW91dC9mb3JtL0Zvcm1FbGVtZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvbWRjL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIE9iamVjdFBhZ2VMYXlvdXQgZnJvbSBcInNhcC91eGFwL09iamVjdFBhZ2VMYXlvdXRcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwiLi4vQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcIi4uL0NvbW1vblV0aWxzXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xzLkhpZGVGb3JtR3JvdXBBdXRvbWF0aWNhbGx5XCIpXG5jbGFzcyBIaWRlRm9ybUdyb3VwQXV0b21hdGljYWxseSBleHRlbmRzIEV2ZW50RGVsZWdhdGVIb29rIHtcblx0YXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQgfCBudWxsID0gbnVsbDtcblxuXHRvbkJlZm9yZVJlbmRlcmluZygpOiB2b2lkIHtcblx0XHR0aGlzLmFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLmdldFBhcmVudCgpIGFzIENvbnRyb2wpO1xuXG5cdFx0dGhpcy5oaWRlU3Vic2VjdGlvbnNGb3JtQ29udGFpbmVyKCk7XG5cdFx0dGhpcy5oaWRlSGVhZGVyQ29udGFpbmVyKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIHdoZXRoZXIgYWxsIHRoZSBmb3JtIGVsZW1lbnRzIGFyZSBoaWRkZW4sIGFuZCB0aGVuIGhpZGVzIHRoZSBmb3JtIGNvbnRhaW5lci5cblx0ICovXG5cdHByaXZhdGUgaGlkZVN1YnNlY3Rpb25zRm9ybUNvbnRhaW5lcigpOiB2b2lkIHtcblx0XHRjb25zdCBwYXJlbnQgPSB0aGlzPy5nZXRQYXJlbnQoKTtcblx0XHRpZiAocGFyZW50Py5pc0E8Rm9ybT4oXCJzYXAudWkubGF5b3V0LmZvcm0uRm9ybVwiKSkge1xuXHRcdFx0Y29uc3QgZm9ybUNvbnRhaW5lcnMgPSBwYXJlbnQ/LmdldEZvcm1Db250YWluZXJzKCk7XG5cdFx0XHR0aGlzLmhpZGVGb3JtQ29udGFpbmVycyhmb3JtQ29udGFpbmVycyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIGFsbCB0aGUgZm9ybSBlbGVtZW50cyB3aXRoaW4gYW4gZWRpdGFibGUgaGVhZGVyIGFyZSBoaWRkZW4sIGFuZCB0aGVuIGhpZGVzIHRoZSBmb3JtIGNvbnRhaW5lci5cblx0ICovXG5cdHByaXZhdGUgaGlkZUhlYWRlckNvbnRhaW5lcigpOiB2b2lkIHtcblx0XHRjb25zdCBvcCA9IHRoaXMuZmV0Y2hPYmplY3RQYWdlKCk7XG5cdFx0LyoqXG5cdFx0ICogR2V0IHRoZSBzZWN0aW9ucyBvZiB0aGUgb2JqZWN0IHBhZ2Vcblx0XHQgKi9cblx0XHRjb25zdCBzZWN0aW9ucyA9IG9wPy5nZXRTZWN0aW9ucz8uKCkgYXMgU2VjdGlvbltdO1xuXG5cdFx0aWYgKCFBcnJheS5pc0FycmF5KHNlY3Rpb25zKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzZWN0aW9ucykge1xuXHRcdFx0LyoqXG5cdFx0XHQgKiBOYXZpZ2F0ZSB0aHJvdWdoIHRoZSBzdWJzZWN0aW9ucyB3aXRoaW4gdGhlIHNlY3Rpb25zLlxuXHRcdFx0ICovXG5cdFx0XHRjb25zdCBzdWJTZWN0aW9ucyA9IHNlY3Rpb24/LmdldFN1YlNlY3Rpb25zKCk7XG5cblx0XHRcdGZvciAoY29uc3Qgc3ViU2VjdGlvbiBvZiBzdWJTZWN0aW9ucykge1xuXHRcdFx0XHQvKipcblx0XHRcdFx0ICogR2V0IHRoZSBzdWJzZWN0aW9uIGJsb2Nrcy5cblx0XHRcdFx0ICovXG5cdFx0XHRcdGNvbnN0IHN1YlNlY3Rpb25CbG9ja3MgPSBzdWJTZWN0aW9uPy5nZXRCbG9ja3MoKSBhcyBTdWJTZWN0aW9uQmxvY2tbXTtcblx0XHRcdFx0LyoqXG5cdFx0XHRcdCAqIENoZWNrcyBpZiB0aGVyZSBpcyBhIGZvcm0gaW5zaWRlIHRoZSBibG9jay5cblx0XHRcdFx0ICovXG5cdFx0XHRcdGNvbnN0IGlzRWRpdGFibGVIZWFkZXIgPSBzdWJTZWN0aW9uQmxvY2tzPy5zb21lKChoZWFkZXJCbG9jaykgPT4gaGVhZGVyQmxvY2suaXNBPEZvcm0+KFwic2FwLnVpLmxheW91dC5mb3JtLkZvcm1cIikpO1xuXG5cdFx0XHRcdGlmICghQXJyYXkuaXNBcnJheShzdWJTZWN0aW9uQmxvY2tzKSB8fCAhaXNFZGl0YWJsZUhlYWRlcikge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Zm9yIChjb25zdCBzdWJTZWN0aW9uQmxvY2sgb2Ygc3ViU2VjdGlvbkJsb2Nrcykge1xuXHRcdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCAqIEdldCB0aGUgZm9ybSBjb250YWluZXJzIHdpdGhpbiB0aGUgc3Vic2VjdGlvbi5cblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHRpZiAoc3ViU2VjdGlvbkJsb2NrLmlzQTxGb3JtPihcInNhcC51aS5sYXlvdXQuZm9ybS5Gb3JtXCIpKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBmb3JtQ29udGFpbmVycyA9IHN1YlNlY3Rpb25CbG9jaz8uZ2V0Rm9ybUNvbnRhaW5lcnM/LigpO1xuXHRcdFx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoZm9ybUNvbnRhaW5lcnMpKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuaGlkZUZvcm1Db250YWluZXJzKGZvcm1Db250YWluZXJzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGhpZGVGb3JtQ29udGFpbmVycyhmb3JtQ29udGFpbmVyczogRm9ybUNvbnRhaW5lcltdKTogdm9pZCB7XG5cdFx0aWYgKCFBcnJheS5pc0FycmF5KGZvcm1Db250YWluZXJzKSkgcmV0dXJuO1xuXG5cdFx0Zm9yIChjb25zdCBmb3JtQ29udGFpbmVyIG9mIGZvcm1Db250YWluZXJzKSB7XG5cdFx0XHRjb25zdCBmb3JtRWxlbWVudHMgPSBmb3JtQ29udGFpbmVyPy5nZXRGb3JtRWxlbWVudHMoKTtcblx0XHRcdGNvbnN0IGlzVGhlcmVBbnlWaXNpYmxlSXRlbSA9IGZvcm1FbGVtZW50cz8uc29tZSgoZmUpID0+IGZlPy5nZXRWaXNpYmxlKCkpO1xuXHRcdFx0Y29uc3QgaXNVc2luZ1BhcnRPZlByZXZpZXdBbm5vdGF0aW9uID0gZm9ybUVsZW1lbnRzLnNvbWUoKGZvcm1FbGVtZW50KSA9PiB7XG5cdFx0XHRcdGNvbnN0IGJpbmRpbmdJbmZvID0gZm9ybUVsZW1lbnQ/LmdldEJpbmRpbmdJbmZvPy4oXCJ2aXNpYmxlXCIpO1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShiaW5kaW5nSW5mbz8ucGFydHMpKVxuXHRcdFx0XHRcdHJldHVybiBiaW5kaW5nSW5mby5wYXJ0cy5zb21lKChiaW5kaW5nSW5mb1BhcnQ6IHsgcGF0aDogc3RyaW5nIH0pID0+IGJpbmRpbmdJbmZvUGFydC5wYXRoID09PSBcInNob3dEZXRhaWxzXCIpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IGlzVXNpbmdCaW5kaW5nT25WaXNpYmlsaXR5ID0gZm9ybUNvbnRhaW5lcj8uZ2V0QmluZGluZ0luZm8/LihcInZpc2libGVcIik/LnBhcnRzPy5sZW5ndGggPiAwO1xuXG5cdFx0XHQvKipcblx0XHRcdCAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRoZSB2aXNpYmlsaXR5IG9mIGV2ZXJ5IGZpZWxkIHdpdGhpbiB0aGUgRm9ybUVsZW1lbnQuXG5cdFx0XHQgKiBJdCBoaWRlcyB0aGUgRm9ybUVsZW1lbnQgd2hlbiB0aGUgdmlzaWJpbGl0eSBvZiBhbGwgY29udGFpbmVkIGZpZWxkcyBpcyBzZXQgdG8gZmFsc2Vcblx0XHRcdCAqL1xuXHRcdFx0dGhpcy5oaWRlRm9ybUVsZW1lbnRzKGZvcm1FbGVtZW50cyk7XG5cblx0XHRcdC8qKlxuXHRcdFx0ICogVGhpcyBjb25kaXRpb24gaWdub3JlcyB0aGUgZm9ybSBjb250YWluZXIgd2hlbiBhIG5ldyBncm91cCBpcyBjcmVhdGVkIHVzaW5nIHRoZSBBZGFwdCBVSS5cblx0XHRcdCAqIElmIHRoZSBncm91cCBpcyBlbXB0eSwgd2Ugc2hvdWxkIG5vdCBoaWRlIGl0LCBhcyBpdCBpcyByZXF1aXJlZCB0byBiZSB0aGVyZSB0byBhZGQgYWRkaXRpb25hbCBmb3JtIGVsZW1lbnRzLlxuXHRcdFx0ICogSWYgdGhlIGZvcm0gY29udGFpbmVyIGl0c2VsZiBpcyBtYXJrZWQgYXMgVUkuSGlkZGVuLCB0aGVuIHdlIHNob3VsZCBub3QgaGlkZSBpdC5cblx0XHRcdCAqL1xuXHRcdFx0aWYgKFxuXHRcdFx0XHQodGhpcy5hcHBDb21wb25lbnQ/LmlzQWRhcHRhdGlvbk1vZGUoKSA9PT0gdHJ1ZSAmJiBmb3JtRWxlbWVudHM/Lmxlbmd0aCA9PT0gMCkgfHxcblx0XHRcdFx0aXNVc2luZ1BhcnRPZlByZXZpZXdBbm5vdGF0aW9uIHx8XG5cdFx0XHRcdGlzVXNpbmdCaW5kaW5nT25WaXNpYmlsaXR5IHx8XG5cdFx0XHRcdGZvcm1Db250YWluZXIuZGF0YShcIlVpSGlkZGVuUHJlc2VudFwiKSA9PT0gXCJ0cnVlXCJcblx0XHRcdCkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0LyoqXG5cdFx0XHQgKiBTaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBldmVyeSB0aW1lIHRoZXJlJ3MgYSBjaGFuZ2UgaW4gdGhlIGZvcm0sIHdlIG5lZWQgdG8gY29uc2lkZXIgdHdvIHNjZW5hcmlvcy5cblx0XHRcdCAqIEZpcnN0LCBpZiB0aGUgZm9ybSBjb250YWluZXIgaXMgaGlkZGVuLCB3ZSBtdXN0IGRldGVybWluZSB3aGV0aGVyIGl0IHNob3VsZCBiZSBzaG93biBhZ2Fpbi5cblx0XHRcdCAqIFNlY29uZCwgaWYgdGhlIGZvcm0gY29udGFpbmVyIGlzIGN1cnJlbnRseSBkaXNwbGF5ZWQsIHdlIG5lZWQgdG8gYXNzZXNzIHdoZXRoZXIgaXQgc2hvdWxkIGJlIGhpZGRlbi5cblx0XHRcdCAqL1xuXHRcdFx0aWYgKGlzVGhlcmVBbnlWaXNpYmxlSXRlbSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0Zm9ybUNvbnRhaW5lci5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHRcdH0gZWxzZSBpZiAoIWZvcm1Db250YWluZXIuZ2V0VmlzaWJsZSgpKSB7XG5cdFx0XHRcdGZvcm1Db250YWluZXIuc2V0VmlzaWJsZSh0cnVlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGZldGNoT2JqZWN0UGFnZSgpOiBPYmplY3RQYWdlTGF5b3V0IHwgbnVsbCB7XG5cdFx0bGV0IHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG5cblx0XHR3aGlsZSAoIShwYXJlbnQ/LmlzQTxPYmplY3RQYWdlTGF5b3V0PihcInNhcC51eGFwLk9iamVjdFBhZ2VMYXlvdXRcIikgPz8gZmFsc2UpICYmIHR5cGVvZiBwYXJlbnQ/LmdldFBhcmVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRwYXJlbnQgPSBwYXJlbnQuZ2V0UGFyZW50KCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHBhcmVudD8uaXNBPE9iamVjdFBhZ2VMYXlvdXQ+KFwic2FwLnV4YXAuT2JqZWN0UGFnZUxheW91dFwiKSA9PT0gdHJ1ZSA/IChwYXJlbnQgYXMgT2JqZWN0UGFnZUxheW91dCkgOiBudWxsO1xuXHR9XG5cblx0cHJpdmF0ZSBoaWRlRm9ybUVsZW1lbnRzKGZvcm1FbGVtZW50czogRm9ybUVsZW1lbnRbXSk6IHZvaWQge1xuXHRcdGlmICghQXJyYXkuaXNBcnJheShmb3JtRWxlbWVudHMpKSByZXR1cm47XG5cblx0XHRmb3IgKGNvbnN0IGZvcm1FbGVtZW50IG9mIGZvcm1FbGVtZW50cykge1xuXHRcdFx0Y29uc3QgZmllbGRzID0gZm9ybUVsZW1lbnQ/LmdldEZpZWxkcygpO1xuXHRcdFx0Y29uc3QgYXJlQWxsRmllbGRzSGlkZGVuID0gZmllbGRzPy5ldmVyeSgoZmllbGQpID0+IGZpZWxkPy5nZXRWaXNpYmxlPy4oKSA9PT0gZmFsc2UpO1xuXG5cdFx0XHRpZiAoYXJlQWxsRmllbGRzSGlkZGVuKSBmb3JtRWxlbWVudC5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSGlkZUZvcm1Hcm91cEF1dG9tYXRpY2FsbHk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O01BYU1BLDBCQUEwQixJQUFBQyxJQUFBLEdBRC9CQyxjQUFjLENBQUMsaURBQWlELENBQUMsRUFBQUQsSUFBQSxDQUFBRSxNQUFBLDBCQUFBQyxrQkFBQTtJQUFBLFNB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SSxDQUFDLGlCQUFpQixDQUFDLEtBQUssTUFBTSxFQUMvQztVQUNEO1FBQ0Q7O1FBRUE7QUFDSDtBQUNBO0FBQ0E7QUFDQTtRQUNHLElBQUliLHFCQUFxQixLQUFLLEtBQUssRUFBRTtVQUNwQ0gsYUFBYSxDQUFDaUIsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNoQyxDQUFDLE1BQU0sSUFBSSxDQUFDakIsYUFBYSxDQUFDSyxVQUFVLENBQUMsQ0FBQyxFQUFFO1VBQ3ZDTCxhQUFhLENBQUNpQixVQUFVLENBQUMsSUFBSSxDQUFDO1FBQy9CO01BQ0Q7SUFDRCxDQUFDO0lBQUE3QyxNQUFBLENBRU9jLGVBQWUsR0FBdkIsU0FBUUEsZUFBZUEsQ0FBQSxFQUE0QjtNQUNsRCxJQUFJTixNQUFNLEdBQUcsSUFBSSxDQUFDSCxTQUFTLENBQUMsQ0FBQztNQUU3QixPQUFPLEVBQUVHLE1BQU0sRUFBRUMsR0FBRyxDQUFtQiwyQkFBMkIsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLE9BQU9ELE1BQU0sRUFBRUgsU0FBUyxLQUFLLFVBQVUsRUFBRTtRQUN6SEcsTUFBTSxHQUFHQSxNQUFNLENBQUNILFNBQVMsQ0FBQyxDQUFDO01BQzVCO01BRUEsT0FBT0csTUFBTSxFQUFFQyxHQUFHLENBQW1CLDJCQUEyQixDQUFDLEtBQUssSUFBSSxHQUFJRCxNQUFNLEdBQXdCLElBQUk7SUFDakgsQ0FBQztJQUFBUixNQUFBLENBRU8wQyxnQkFBZ0IsR0FBeEIsU0FBUUEsZ0JBQWdCQSxDQUFDYixZQUEyQixFQUFRO01BQzNELElBQUksQ0FBQ2xDLEtBQUssQ0FBQ3NCLE9BQU8sQ0FBQ1ksWUFBWSxDQUFDLEVBQUU7TUFFbEMsS0FBSyxNQUFNTSxXQUFXLElBQUlOLFlBQVksRUFBRTtRQUN2QyxNQUFNaUIsTUFBTSxHQUFHWCxXQUFXLEVBQUVZLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU1DLGtCQUFrQixHQUFHRixNQUFNLEVBQUVHLEtBQUssQ0FBRUMsS0FBSyxJQUFLQSxLQUFLLEVBQUVqQixVQUFVLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQztRQUVwRixJQUFJZSxrQkFBa0IsRUFBRWIsV0FBVyxDQUFDVSxVQUFVLENBQUMsS0FBSyxDQUFDO01BQ3REO0lBQ0QsQ0FBQztJQUFBLE9BQUE1RCwwQkFBQTtFQUFBLEVBeEl1Q2tFLGlCQUFpQixNQUFBL0QsTUFBQTtFQUFBLE9BMkkzQ0gsMEJBQTBCO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -4,6 +4,7 @@ import type Section from "sap/fe/macros/controls/Section";
4
4
  import type SubSectionBlock from "sap/fe/templates/ObjectPage/controls/SubSectionBlock";
5
5
  import type Form from "sap/ui/layout/form/Form";
6
6
  import type FormContainer from "sap/ui/layout/form/FormContainer";
7
+ import type FormElement from "sap/ui/layout/form/FormElement";
7
8
  import type Control from "sap/ui/mdc/Control";
8
9
  import type ObjectPageLayout from "sap/uxap/ObjectPageLayout";
9
10
  import type AppComponent from "../AppComponent";
@@ -94,6 +95,12 @@ class HideFormGroupAutomatically extends EventDelegateHook {
94
95
  });
95
96
  const isUsingBindingOnVisibility = formContainer?.getBindingInfo?.("visible")?.parts?.length > 0;
96
97
 
98
+ /**
99
+ * This function checks the visibility of every field within the FormElement.
100
+ * It hides the FormElement when the visibility of all contained fields is set to false
101
+ */
102
+ this.hideFormElements(formElements);
103
+
97
104
  /**
98
105
  * This condition ignores the form container when a new group is created using the Adapt UI.
99
106
  * If the group is empty, we should not hide it, as it is required to be there to add additional form elements.
@@ -130,6 +137,17 @@ class HideFormGroupAutomatically extends EventDelegateHook {
130
137
 
131
138
  return parent?.isA<ObjectPageLayout>("sap.uxap.ObjectPageLayout") === true ? (parent as ObjectPageLayout) : null;
132
139
  }
140
+
141
+ private hideFormElements(formElements: FormElement[]): void {
142
+ if (!Array.isArray(formElements)) return;
143
+
144
+ for (const formElement of formElements) {
145
+ const fields = formElement?.getFields();
146
+ const areAllFieldsHidden = fields?.every((field) => field?.getVisible?.() === false);
147
+
148
+ if (areAllFieldsHidden) formElement.setVisible(false);
149
+ }
150
+ }
133
151
  }
134
152
 
135
153
  export default HideFormGroupAutomatically;