@sapui5/sap.fe.core 1.103.0 → 1.104.1

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 (162) hide show
  1. package/package.json +3 -3
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +12 -5
  4. package/src/sap/fe/core/AppComponent.ts +9 -3
  5. package/src/sap/fe/core/AppStateHandler.js +74 -62
  6. package/src/sap/fe/core/AppStateHandler.ts +24 -29
  7. package/src/sap/fe/core/CommonUtils.js +10 -34
  8. package/src/sap/fe/core/CommonUtils.ts +10 -43
  9. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +181 -43
  10. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +150 -24
  11. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +582 -207
  12. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +237 -88
  13. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +4 -4
  14. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +4 -3
  15. package/src/sap/fe/core/controllerextensions/EditFlow.js +257 -219
  16. package/src/sap/fe/core/controllerextensions/EditFlow.ts +103 -108
  17. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +80 -54
  18. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +40 -44
  19. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +28 -26
  20. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +35 -30
  21. package/src/sap/fe/core/controllerextensions/InternalRouting.js +89 -47
  22. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +85 -48
  23. package/src/sap/fe/core/controllerextensions/MassEdit.js +2 -2
  24. package/src/sap/fe/core/controllerextensions/MassEdit.ts +1 -1
  25. package/src/sap/fe/core/controllerextensions/PageReady.js +2 -2
  26. package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -1
  27. package/src/sap/fe/core/controllerextensions/Share.js +153 -122
  28. package/src/sap/fe/core/controllerextensions/Share.ts +93 -95
  29. package/src/sap/fe/core/controllerextensions/ViewState.js +139 -73
  30. package/src/sap/fe/core/controllerextensions/ViewState.ts +78 -90
  31. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +6 -5
  32. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +5 -3
  33. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +18 -13
  34. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +17 -15
  35. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +88 -17
  36. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +105 -31
  37. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +5 -4
  38. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +28 -32
  39. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +10 -17
  40. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +1 -6
  41. package/src/sap/fe/core/controls/FileWrapper.js +6 -1
  42. package/src/sap/fe/core/controls/FileWrapper.ts +4 -0
  43. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -3
  44. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +2 -2
  45. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
  46. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +2 -2
  47. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +1 -1
  48. package/src/sap/fe/core/converters/ConverterContext.js +1 -1
  49. package/src/sap/fe/core/converters/ConverterContext.ts +1 -1
  50. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  51. package/src/sap/fe/core/converters/ManifestSettings.ts +3 -1
  52. package/src/sap/fe/core/converters/MetaModelConverter.js +15 -4
  53. package/src/sap/fe/core/converters/MetaModelConverter.ts +10 -3
  54. package/src/sap/fe/core/converters/annotations/DataField.js +5 -2
  55. package/src/sap/fe/core/converters/annotations/DataField.ts +5 -1
  56. package/src/sap/fe/core/converters/common/AnnotationConverter.js +11 -11
  57. package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
  58. package/src/sap/fe/core/converters/controls/Common/Chart.ts +4 -8
  59. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +4 -2
  60. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +25 -30
  61. package/src/sap/fe/core/converters/controls/Common/Form.js +3 -2
  62. package/src/sap/fe/core/converters/controls/Common/Form.ts +9 -14
  63. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  64. package/src/sap/fe/core/converters/controls/Common/KPI.ts +16 -15
  65. package/src/sap/fe/core/converters/controls/Common/Table.js +8 -15
  66. package/src/sap/fe/core/converters/controls/Common/Table.ts +14 -30
  67. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  68. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +3 -4
  69. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
  70. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +2 -2
  71. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +5 -2
  72. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +4 -2
  73. package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
  74. package/src/sap/fe/core/converters/helpers/Aggregation.ts +3 -3
  75. package/src/sap/fe/core/converters/helpers/ID.js +3 -1
  76. package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
  77. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  78. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +2 -3
  79. package/src/sap/fe/core/converters/templates/ListReportConverter.js +27 -15
  80. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +42 -27
  81. package/src/sap/fe/core/formatters/StandardFormatter.js +13 -6
  82. package/src/sap/fe/core/formatters/StandardFormatter.ts +20 -14
  83. package/src/sap/fe/core/helpers/BindingToolkit.js +36 -13
  84. package/src/sap/fe/core/helpers/BindingToolkit.ts +37 -11
  85. package/src/sap/fe/core/helpers/ClassSupport.js +30 -2
  86. package/src/sap/fe/core/helpers/ClassSupport.ts +23 -0
  87. package/src/sap/fe/core/helpers/MassEditHelper.js +94 -89
  88. package/src/sap/fe/core/helpers/MassEditHelper.ts +128 -157
  89. package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
  90. package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
  91. package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
  92. package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
  93. package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
  94. package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
  95. package/src/sap/fe/core/jsx-runtime/jsx-control.js +99 -0
  96. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +82 -0
  97. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
  98. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
  99. package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
  100. package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
  101. package/src/sap/fe/core/library.js +1 -1
  102. package/src/sap/fe/core/messagebundle.properties +4 -37
  103. package/src/sap/fe/core/messagebundle_ar.properties +20 -40
  104. package/src/sap/fe/core/messagebundle_bg.properties +20 -40
  105. package/src/sap/fe/core/messagebundle_ca.properties +20 -40
  106. package/src/sap/fe/core/messagebundle_cs.properties +20 -40
  107. package/src/sap/fe/core/messagebundle_cy.properties +20 -40
  108. package/src/sap/fe/core/messagebundle_da.properties +20 -40
  109. package/src/sap/fe/core/messagebundle_de.properties +20 -40
  110. package/src/sap/fe/core/messagebundle_el.properties +20 -40
  111. package/src/sap/fe/core/messagebundle_en.properties +19 -39
  112. package/src/sap/fe/core/messagebundle_en_GB.properties +19 -39
  113. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +21 -39
  114. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +19 -39
  115. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +22 -18
  116. package/src/sap/fe/core/messagebundle_es.properties +22 -42
  117. package/src/sap/fe/core/messagebundle_es_MX.properties +20 -40
  118. package/src/sap/fe/core/messagebundle_et.properties +20 -40
  119. package/src/sap/fe/core/messagebundle_fi.properties +20 -40
  120. package/src/sap/fe/core/messagebundle_fr.properties +21 -41
  121. package/src/sap/fe/core/messagebundle_fr_CA.properties +20 -40
  122. package/src/sap/fe/core/messagebundle_hi.properties +20 -40
  123. package/src/sap/fe/core/messagebundle_hr.properties +20 -40
  124. package/src/sap/fe/core/messagebundle_hu.properties +20 -40
  125. package/src/sap/fe/core/messagebundle_id.properties +20 -40
  126. package/src/sap/fe/core/messagebundle_it.properties +20 -40
  127. package/src/sap/fe/core/messagebundle_iw.properties +20 -40
  128. package/src/sap/fe/core/messagebundle_ja.properties +20 -40
  129. package/src/sap/fe/core/messagebundle_kk.properties +20 -40
  130. package/src/sap/fe/core/messagebundle_ko.properties +25 -45
  131. package/src/sap/fe/core/messagebundle_lt.properties +20 -40
  132. package/src/sap/fe/core/messagebundle_lv.properties +20 -40
  133. package/src/sap/fe/core/messagebundle_ms.properties +20 -40
  134. package/src/sap/fe/core/messagebundle_nl.properties +22 -42
  135. package/src/sap/fe/core/messagebundle_no.properties +20 -40
  136. package/src/sap/fe/core/messagebundle_pl.properties +21 -41
  137. package/src/sap/fe/core/messagebundle_pt.properties +21 -41
  138. package/src/sap/fe/core/messagebundle_pt_PT.properties +20 -40
  139. package/src/sap/fe/core/messagebundle_ro.properties +20 -40
  140. package/src/sap/fe/core/messagebundle_ru.properties +20 -40
  141. package/src/sap/fe/core/messagebundle_sh.properties +20 -40
  142. package/src/sap/fe/core/messagebundle_sk.properties +20 -40
  143. package/src/sap/fe/core/messagebundle_sl.properties +20 -40
  144. package/src/sap/fe/core/messagebundle_sv.properties +20 -40
  145. package/src/sap/fe/core/messagebundle_th.properties +20 -40
  146. package/src/sap/fe/core/messagebundle_tr.properties +20 -40
  147. package/src/sap/fe/core/messagebundle_uk.properties +20 -40
  148. package/src/sap/fe/core/messagebundle_vi.properties +20 -40
  149. package/src/sap/fe/core/messagebundle_zh_CN.properties +20 -40
  150. package/src/sap/fe/core/messagebundle_zh_TW.properties +20 -40
  151. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +96 -68
  152. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +58 -59
  153. package/src/sap/fe/core/services/NavigationServiceFactory.js +10 -7
  154. package/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -7
  155. package/src/sap/fe/core/services/ShellServicesFactory.js +21 -1
  156. package/src/sap/fe/core/services/ShellServicesFactory.ts +19 -0
  157. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +211 -190
  158. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +114 -120
  159. package/src/sap/fe/core/templating/FilterHelper.js +7 -7
  160. package/src/sap/fe/core/templating/FilterHelper.ts +5 -5
  161. package/src/sap/fe/core/templating/UIFormatters.js +5 -3
  162. package/src/sap/fe/core/templating/UIFormatters.ts +7 -5
@@ -0,0 +1,99 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/fe/core/helpers/BindingToolkit"], function (BindingToolkit) {
6
+ "use strict";
7
+
8
+ var compileExpression = BindingToolkit.compileExpression;
9
+
10
+ var addChildAggregation = function (aggregationChildren, aggregationName, child) {
11
+ if (child === undefined || typeof child === "string") {
12
+ return;
13
+ }
14
+
15
+ if (!aggregationChildren[aggregationName]) {
16
+ aggregationChildren[aggregationName] = [];
17
+ }
18
+
19
+ if (isChildAnElement(child)) {
20
+ aggregationChildren[aggregationName].push(child);
21
+ } else if (Array.isArray(child)) {
22
+ child.forEach(function (subChild) {
23
+ addChildAggregation(aggregationChildren, aggregationName, subChild);
24
+ });
25
+ } else {
26
+ Object.keys(child).forEach(function (childKey) {
27
+ addChildAggregation(aggregationChildren, childKey, child[childKey]);
28
+ });
29
+ }
30
+ };
31
+
32
+ var isChildAnElement = function (children) {
33
+ var _isA, _ref;
34
+
35
+ return children === null || children === void 0 ? void 0 : (_isA = (_ref = children).isA) === null || _isA === void 0 ? void 0 : _isA.call(_ref, "sap.ui.core.Element");
36
+ };
37
+
38
+ var jsxControl = function (ControlType, mSettings, key) {
39
+ if (ControlType.isFragment) {
40
+ return mSettings.children;
41
+ }
42
+
43
+ var metadata = ControlType.getMetadata();
44
+
45
+ if (key !== undefined) {
46
+ mSettings["key"] = key;
47
+ }
48
+
49
+ var metadataAggregations = metadata.getAllAggregations();
50
+ var defaultAggregationName = metadata.getDefaultAggregationName();
51
+ var aggregationChildren = {};
52
+ addChildAggregation(aggregationChildren, defaultAggregationName, mSettings.children);
53
+ delete mSettings.children; // find out which aggregation are bound (both in children and directly under it)
54
+
55
+ Object.keys(metadataAggregations).forEach(function (aggregationName) {
56
+ if (mSettings.hasOwnProperty(aggregationName)) {
57
+ mSettings[aggregationName].factory = aggregationChildren[aggregationName];
58
+ } else {
59
+ mSettings[aggregationName] = aggregationChildren[aggregationName];
60
+ }
61
+ });
62
+ var classDef = mSettings.class;
63
+ var refDef = mSettings.ref;
64
+ delete mSettings.ref;
65
+ delete mSettings.class;
66
+ var settingsKey;
67
+
68
+ for (settingsKey in mSettings) {
69
+ var _mSettings$settingsKe;
70
+
71
+ if ((_mSettings$settingsKe = mSettings[settingsKey]) !== null && _mSettings$settingsKe !== void 0 && _mSettings$settingsKe._type) {
72
+ mSettings[settingsKey] = compileExpression(mSettings[settingsKey]);
73
+ }
74
+ }
75
+
76
+ var targetControl = new ControlType(mSettings);
77
+
78
+ if (classDef) {
79
+ targetControl.addStyleClass(classDef);
80
+ }
81
+
82
+ if (refDef) {
83
+ refDef.setCurrent(targetControl);
84
+ } // const aggregationChildren: Record<string, string[]> = {
85
+ // [defaultAggregationName]: []
86
+ // };
87
+ // //addChildAggregation(aggregationChildren, defaultAggregationName, mSettings.children);
88
+ // Object.keys(metadataAggregations).forEach((aggregationName) => {
89
+ // const aggregationDefinition = metadataAggregations[aggregationName] as any;
90
+ // targetControl[aggregationDefinition._sMutator](o());
91
+ // });
92
+
93
+
94
+ return targetControl;
95
+ };
96
+
97
+ return jsxControl;
98
+ }, false);
99
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpzeC1jb250cm9sLnRzIl0sIm5hbWVzIjpbImFkZENoaWxkQWdncmVnYXRpb24iLCJhZ2dyZWdhdGlvbkNoaWxkcmVuIiwiYWdncmVnYXRpb25OYW1lIiwiY2hpbGQiLCJ1bmRlZmluZWQiLCJpc0NoaWxkQW5FbGVtZW50IiwicHVzaCIsIkFycmF5IiwiaXNBcnJheSIsImZvckVhY2giLCJzdWJDaGlsZCIsIk9iamVjdCIsImtleXMiLCJjaGlsZEtleSIsImNoaWxkcmVuIiwiaXNBIiwianN4Q29udHJvbCIsIkNvbnRyb2xUeXBlIiwibVNldHRpbmdzIiwia2V5IiwiaXNGcmFnbWVudCIsIm1ldGFkYXRhIiwiZ2V0TWV0YWRhdGEiLCJtZXRhZGF0YUFnZ3JlZ2F0aW9ucyIsImdldEFsbEFnZ3JlZ2F0aW9ucyIsImRlZmF1bHRBZ2dyZWdhdGlvbk5hbWUiLCJnZXREZWZhdWx0QWdncmVnYXRpb25OYW1lIiwiaGFzT3duUHJvcGVydHkiLCJmYWN0b3J5IiwiY2xhc3NEZWYiLCJjbGFzcyIsInJlZkRlZiIsInJlZiIsInNldHRpbmdzS2V5IiwiX3R5cGUiLCJjb21waWxlRXhwcmVzc2lvbiIsInRhcmdldENvbnRyb2wiLCJhZGRTdHlsZUNsYXNzIiwic2V0Q3VycmVudCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7O0FBSUEsTUFBTUEsbUJBQW1CLEdBQUcsVUFBVUMsbUJBQVYsRUFBb0NDLGVBQXBDLEVBQTZEQyxLQUE3RCxFQUF5RTtBQUNwRyxRQUFJQSxLQUFLLEtBQUtDLFNBQVYsSUFBdUIsT0FBT0QsS0FBUCxLQUFpQixRQUE1QyxFQUFzRDtBQUNyRDtBQUNBOztBQUNELFFBQUksQ0FBQ0YsbUJBQW1CLENBQUNDLGVBQUQsQ0FBeEIsRUFBMkM7QUFDMUNELE1BQUFBLG1CQUFtQixDQUFDQyxlQUFELENBQW5CLEdBQXVDLEVBQXZDO0FBQ0E7O0FBQ0QsUUFBSUcsZ0JBQWdCLENBQUNGLEtBQUQsQ0FBcEIsRUFBNkI7QUFDNUJGLE1BQUFB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O0FBQ2JPLE1BQUFBLGFBQWEsQ0FBQ0MsYUFBZCxDQUE0QlIsUUFBNUI7QUFDQTs7QUFDRCxRQUFJRSxNQUFKLEVBQVk7QUFDWEEsTUFBQUEsTUFBTSxDQUFDTyxVQUFQLENBQWtCRixhQUFsQjtBQUNBLEtBckNxQixDQXNDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsV0FBT0EsYUFBUDtBQUNBLEdBbkREOztTQXFEZXBCLFUiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgQ29udHJvbFByb3BlcnRpZXMsIE5vbkNvbnRyb2xQcm9wZXJ0aWVzLCBSZWYgfSBmcm9tIFwic2FwL2ZlL2NvcmUvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgRWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuXG5jb25zdCBhZGRDaGlsZEFnZ3JlZ2F0aW9uID0gZnVuY3Rpb24gKGFnZ3JlZ2F0aW9uQ2hpbGRyZW46IGFueSwgYWdncmVnYXRpb25OYW1lOiBzdHJpbmcsIGNoaWxkOiBhbnkpIHtcblx0aWYgKGNoaWxkID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGNoaWxkID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGlmICghYWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdKSB7XG5cdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdID0gW107XG5cdH1cblx0aWYgKGlzQ2hpbGRBbkVsZW1lbnQoY2hpbGQpKSB7XG5cdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdLnB1c2goY2hpbGQpO1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGQpKSB7XG5cdFx0Y2hpbGQuZm9yRWFjaCgoc3ViQ2hpbGQpID0+IHtcblx0XHRcdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgYWdncmVnYXRpb25OYW1lLCBzdWJDaGlsZCk7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0T2JqZWN0LmtleXMoY2hpbGQpLmZvckVhY2goKGNoaWxkS2V5KSA9PiB7XG5cdFx0XHRhZGRDaGlsZEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uQ2hpbGRyZW4sIGNoaWxkS2V5LCBjaGlsZFtjaGlsZEtleV0pO1xuXHRcdH0pO1xuXHR9XG59O1xuY29uc3QgaXNDaGlsZEFuRWxlbWVudCA9IGZ1bmN0aW9uIDxUPihjaGlsZHJlbj86IEVsZW1lbnQgfCBDb250cm9sUHJvcGVydGllczxUPik6IGNoaWxkcmVuIGlzIEVsZW1lbnQge1xuXHRyZXR1cm4gKGNoaWxkcmVuIGFzIEVsZW1lbnQpPy5pc0E/LihcInNhcC51aS5jb3JlLkVsZW1lbnRcIik7XG59O1xuY29uc3QganN4Q29udHJvbCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgRWxlbWVudD4oXG5cdENvbnRyb2xUeXBlOiB0eXBlb2YgQ29udHJvbCxcblx0bVNldHRpbmdzOiBOb25Db250cm9sUHJvcGVydGllczxUPiAmIHsga2V5OiBzdHJpbmc7IGNoaWxkcmVuPzogRWxlbWVudCB8IENvbnRyb2xQcm9wZXJ0aWVzPFQ+OyByZWY/OiBSZWY8VD47IGNsYXNzPzogc3RyaW5nIH0sXG5cdGtleTogc3RyaW5nXG4pOiBDb250cm9sIHwgQ29udHJvbFtdIHtcblx0aWYgKChDb250cm9sVHlwZSBhcyBhbnkpLmlzRnJhZ21lbnQpIHtcblx0XHRyZXR1cm4gbVNldHRpbmdzLmNoaWxkcmVuIGFzIGFueTtcblx0fVxuXHRjb25zdCBtZXRhZGF0YSA9IENvbnRyb2xUeXBlLmdldE1ldGFkYXRhKCk7XG5cdGlmIChrZXkgIT09IHVuZGVmaW5lZCkge1xuXHRcdG1TZXR0aW5nc1tcImtleVwiXSA9IGtleTtcblx0fVxuXHRjb25zdCBtZXRhZGF0YUFnZ3JlZ2F0aW9ucyA9IG1ldGFkYXRhLmdldEFsbEFnZ3JlZ2F0aW9ucygpIGFzIGFueTtcblx0Y29uc3QgZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSA9IG1ldGFkYXRhLmdldERlZmF1bHRBZ2dyZWdhdGlvbk5hbWUoKTtcblx0Y29uc3QgYWdncmVnYXRpb25DaGlsZHJlbjogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG5cdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSwgbVNldHRpbmdzLmNoaWxkcmVuKTtcblx0ZGVsZXRlIG1TZXR0aW5ncy5jaGlsZHJlbjtcblx0Ly8gZmluZCBvdXQgd2hpY2ggYWdncmVnYXRpb24gYXJlIGJvdW5kIChib3RoIGluIGNoaWxkcmVuIGFuZCBkaXJlY3RseSB1bmRlciBpdClcblx0T2JqZWN0LmtleXMobWV0YWRhdGFBZ2dyZWdhdGlvbnMpLmZvckVhY2goKGFnZ3JlZ2F0aW9uTmFtZSkgPT4ge1xuXHRcdGlmIChtU2V0dGluZ3MuaGFzT3duUHJvcGVydHkoYWdncmVnYXRpb25OYW1lKSkge1xuXHRcdFx0KG1TZXR0aW5ncyBhcyBhbnkpW2FnZ3JlZ2F0aW9uTmFtZV0uZmFjdG9yeSA9IGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0KG1TZXR0aW5ncyBhcyBhbnkpW2FnZ3JlZ2F0aW9uTmFtZV0gPSBhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV07XG5cdFx0fVxuXHR9KTtcblx0Y29uc3QgY2xhc3NEZWYgPSBtU2V0dGluZ3MuY2xhc3M7XG5cdGNvbnN0IHJlZkRlZiA9IG1TZXR0aW5ncy5yZWY7XG5cdGRlbGV0ZSBtU2V0dGluZ3MucmVmO1xuXHRkZWxldGUgbVNldHRpbmdzLmNsYXNzO1xuXHRsZXQgc2V0dGluZ3NLZXk6IGtleW9mIHR5cGVvZiBtU2V0dGluZ3M7XG5cdGZvciAoc2V0dGluZ3NLZXkgaW4gbVNldHRpbmdzKSB7XG5cdFx0aWYgKChtU2V0dGluZ3Nbc2V0dGluZ3NLZXldIGFzIGFueSk/Ll90eXBlKSB7XG5cdFx0XHRtU2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gY29tcGlsZUV4cHJlc3Npb24obVNldHRpbmdzW3NldHRpbmdzS2V5XSBhcyBhbnkpIGFzIGFueTtcblx0XHR9XG5cdH1cblx0Y29uc3QgdGFyZ2V0Q29udHJvbCA9IG5ldyBDb250cm9sVHlwZShtU2V0dGluZ3MgYXMgJENvbnRyb2xTZXR0aW5ncyk7XG5cdGlmIChjbGFzc0RlZikge1xuXHRcdHRhcmdldENvbnRyb2wuYWRkU3R5bGVDbGFzcyhjbGFzc0RlZik7XG5cdH1cblx0aWYgKHJlZkRlZikge1xuXHRcdHJlZkRlZi5zZXRDdXJyZW50KHRhcmdldENvbnRyb2wgYXMgYW55KTtcblx0fVxuXHQvLyBjb25zdCBhZ2dyZWdhdGlvbkNoaWxkcmVuOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7XG5cdC8vIFx0W2RlZmF1bHRBZ2dyZWdhdGlvbk5hbWVdOiBbXVxuXHQvLyB9O1xuXHQvLyAvL2FkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSwgbVNldHRpbmdzLmNoaWxkcmVuKTtcblx0Ly8gT2JqZWN0LmtleXMobWV0YWRhdGFBZ2dyZWdhdGlvbnMpLmZvckVhY2goKGFnZ3JlZ2F0aW9uTmFtZSkgPT4ge1xuXHQvLyBcdGNvbnN0IGFnZ3JlZ2F0aW9uRGVmaW5pdGlvbiA9IG1ldGFkYXRhQWdncmVnYXRpb25zW2FnZ3JlZ2F0aW9uTmFtZV0gYXMgYW55O1xuXHQvLyBcdHRhcmdldENvbnRyb2xbYWdncmVnYXRpb25EZWZpbml0aW9uLl9zTXV0YXRvcl0obygpKTtcblx0Ly8gfSk7XG5cdHJldHVybiB0YXJnZXRDb250cm9sO1xufTtcblxuZXhwb3J0IGRlZmF1bHQganN4Q29udHJvbDtcbiJdfQ==
@@ -0,0 +1,82 @@
1
+ import { compileExpression } from "sap/fe/core/helpers/BindingToolkit";
2
+ import type { ControlProperties, NonControlProperties, Ref } from "sap/fe/core/jsx-runtime/jsx";
3
+ import type Control from "sap/ui/core/Control";
4
+ import type { $ControlSettings } from "sap/ui/core/Control";
5
+ import type Element from "sap/ui/core/Element";
6
+
7
+ const addChildAggregation = function (aggregationChildren: any, aggregationName: string, child: any) {
8
+ if (child === undefined || typeof child === "string") {
9
+ return;
10
+ }
11
+ if (!aggregationChildren[aggregationName]) {
12
+ aggregationChildren[aggregationName] = [];
13
+ }
14
+ if (isChildAnElement(child)) {
15
+ aggregationChildren[aggregationName].push(child);
16
+ } else if (Array.isArray(child)) {
17
+ child.forEach((subChild) => {
18
+ addChildAggregation(aggregationChildren, aggregationName, subChild);
19
+ });
20
+ } else {
21
+ Object.keys(child).forEach((childKey) => {
22
+ addChildAggregation(aggregationChildren, childKey, child[childKey]);
23
+ });
24
+ }
25
+ };
26
+ const isChildAnElement = function <T>(children?: Element | ControlProperties<T>): children is Element {
27
+ return (children as Element)?.isA?.("sap.ui.core.Element");
28
+ };
29
+ const jsxControl = function <T extends Element>(
30
+ ControlType: typeof Control,
31
+ mSettings: NonControlProperties<T> & { key: string; children?: Element | ControlProperties<T>; ref?: Ref<T>; class?: string },
32
+ key: string
33
+ ): Control | Control[] {
34
+ if ((ControlType as any).isFragment) {
35
+ return mSettings.children as any;
36
+ }
37
+ const metadata = ControlType.getMetadata();
38
+ if (key !== undefined) {
39
+ mSettings["key"] = key;
40
+ }
41
+ const metadataAggregations = metadata.getAllAggregations() as any;
42
+ const defaultAggregationName = metadata.getDefaultAggregationName();
43
+ const aggregationChildren: Record<string, string[]> = {};
44
+ addChildAggregation(aggregationChildren, defaultAggregationName, mSettings.children);
45
+ delete mSettings.children;
46
+ // find out which aggregation are bound (both in children and directly under it)
47
+ Object.keys(metadataAggregations).forEach((aggregationName) => {
48
+ if (mSettings.hasOwnProperty(aggregationName)) {
49
+ (mSettings as any)[aggregationName].factory = aggregationChildren[aggregationName];
50
+ } else {
51
+ (mSettings as any)[aggregationName] = aggregationChildren[aggregationName];
52
+ }
53
+ });
54
+ const classDef = mSettings.class;
55
+ const refDef = mSettings.ref;
56
+ delete mSettings.ref;
57
+ delete mSettings.class;
58
+ let settingsKey: keyof typeof mSettings;
59
+ for (settingsKey in mSettings) {
60
+ if ((mSettings[settingsKey] as any)?._type) {
61
+ mSettings[settingsKey] = compileExpression(mSettings[settingsKey] as any) as any;
62
+ }
63
+ }
64
+ const targetControl = new ControlType(mSettings as $ControlSettings);
65
+ if (classDef) {
66
+ targetControl.addStyleClass(classDef);
67
+ }
68
+ if (refDef) {
69
+ refDef.setCurrent(targetControl as any);
70
+ }
71
+ // const aggregationChildren: Record<string, string[]> = {
72
+ // [defaultAggregationName]: []
73
+ // };
74
+ // //addChildAggregation(aggregationChildren, defaultAggregationName, mSettings.children);
75
+ // Object.keys(metadataAggregations).forEach((aggregationName) => {
76
+ // const aggregationDefinition = metadataAggregations[aggregationName] as any;
77
+ // targetControl[aggregationDefinition._sMutator](o());
78
+ // });
79
+ return targetControl;
80
+ };
81
+
82
+ export default jsxControl;
@@ -0,0 +1,105 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define([], function () {
6
+ "use strict";
7
+
8
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+
10
+ var writeChildren = function (val) {
11
+ if (Array.isArray(val)) {
12
+ return val.join("");
13
+ } else {
14
+ return val;
15
+ }
16
+ };
17
+
18
+ var addChildAggregation = function (aggregationChildren, aggregationName, child) {
19
+ if (child === undefined) {
20
+ return;
21
+ }
22
+
23
+ if (!aggregationChildren[aggregationName]) {
24
+ aggregationChildren[aggregationName] = [];
25
+ }
26
+
27
+ if (typeof child === "string" && child.trim().length > 0) {
28
+ aggregationChildren[aggregationName].push(child);
29
+ } else if (Array.isArray(child)) {
30
+ child.forEach(function (subChild) {
31
+ addChildAggregation(aggregationChildren, aggregationName, subChild);
32
+ });
33
+ } else {
34
+ Object.keys(child).forEach(function (childKey) {
35
+ addChildAggregation(aggregationChildren, childKey, child[childKey]);
36
+ });
37
+ }
38
+ };
39
+
40
+ var FL_DELEGATE = "fl:delegate";
41
+
42
+ var jsxXml = function (type, mSettings, key) {
43
+ var metadata = type.getMetadata();
44
+ var namesSplit = metadata.getName().split(".");
45
+
46
+ if (key !== undefined) {
47
+ mSettings["key"] = key;
48
+ }
49
+
50
+ var metadataProperties = metadata.getAllProperties();
51
+ var metadataAggregations = metadata.getAllAggregations();
52
+ metadataProperties["class"] = {
53
+ name: "class"
54
+ };
55
+ metadataProperties["id"] = {
56
+ name: "id"
57
+ };
58
+ metadataProperties[FL_DELEGATE] = {
59
+ name: FL_DELEGATE
60
+ };
61
+ metadataProperties["xmlns:fl"] = {
62
+ name: FL_DELEGATE
63
+ };
64
+
65
+ if (metadata.getName() === "sap.ui.core.Fragment") {
66
+ metadataProperties["fragmentName"] = {
67
+ name: "fragmentName"
68
+ };
69
+ }
70
+
71
+ var namespace = namesSplit.slice(0, -1);
72
+ var name = namesSplit[namesSplit.length - 1];
73
+ var namespaceAlias = namespace[namespace.length - 1];
74
+ var tagName = "".concat(namespaceAlias, ":").concat(name);
75
+ var propertiesString = [];
76
+ var aggregationString = [];
77
+ var defaultAggregationName = metadata.getDefaultAggregationName();
78
+ Object.keys(metadataProperties).forEach(function (propertyName) {
79
+ if (mSettings.hasOwnProperty(propertyName) && mSettings[propertyName] !== undefined) {
80
+ if (typeof mSettings[propertyName] === "object") {
81
+ propertiesString.push("".concat(propertyName, "='").concat(JSON.stringify(mSettings[propertyName]), "'"));
82
+ } else {
83
+ propertiesString.push("".concat(propertyName, "='").concat(mSettings[propertyName], "'"));
84
+ }
85
+ }
86
+ });
87
+
88
+ var aggregationChildren = _defineProperty({}, defaultAggregationName, []);
89
+
90
+ addChildAggregation(aggregationChildren, defaultAggregationName, mSettings.children);
91
+ Object.keys(metadataAggregations).forEach(function (aggregationName) {
92
+ if (aggregationChildren !== null && aggregationChildren !== void 0 && aggregationChildren.hasOwnProperty(aggregationName) && aggregationChildren[aggregationName].length > 0) {
93
+ aggregationString.push("<".concat(namespaceAlias, ":").concat(aggregationName, ">\n\t\t\t\t\t\t").concat(writeChildren(aggregationChildren[aggregationName]), "\n\t\t\t\t\t</").concat(namespaceAlias, ":").concat(aggregationName, ">"));
94
+ }
95
+
96
+ if (mSettings.hasOwnProperty(aggregationName) && mSettings[aggregationName] !== undefined) {
97
+ propertiesString.push("".concat(aggregationName, "='").concat(JSON.stringify(mSettings[aggregationName]), "'"));
98
+ }
99
+ });
100
+ return "<".concat(tagName, " xmlns:").concat(namespaceAlias, "=\"").concat(namespace.join("."), "\" ").concat(propertiesString.join(" "), ">").concat(aggregationString.join(""), "</").concat(tagName, ">");
101
+ };
102
+
103
+ return jsxXml;
104
+ }, false);
105
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpzeC14bWwudHMiXSwibmFtZXMiOlsid3JpdGVDaGlsZHJlbiIsInZhbCIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJhZGRDaGlsZEFnZ3JlZ2F0aW9uIiwiYWdncmVnYXRpb25DaGlsZHJlbiIsImFnZ3JlZ2F0aW9uTmFtZSIsImNoaWxkIiwidW5kZWZpbmVkIiwidHJpbSIsImxlbmd0aCIsInB1c2giLCJmb3JFYWNoIiwic3ViQ2hpbGQiLCJPYmplY3QiLCJrZXlzIiwiY2hpbGRLZXkiLCJGTF9ERUxFR0FURSIsImpzeFhtbCIsInR5cGUiLCJtU2V0dGluZ3MiLCJrZXkiLCJtZXRhZGF0YSIsImdldE1ldGFkYXRhIiwibmFtZXNTcGxpdCIsImdldE5hbWUiLCJzcGxpdCIsIm1ldGFkYXRhUHJvcGVydGllcyIsImdldEFsbFByb3BlcnRpZXMiLCJtZXRhZGF0YUFnZ3JlZ2F0aW9ucyIsImdldEFsbEFnZ3JlZ2F0aW9ucyIsIm5hbWUiLCJuYW1lc3BhY2UiLCJzbGljZSIsIm5hbWVzcGFjZUFsaWFzIiwidGFnTmFtZSIsInByb3BlcnRpZXNTdHJpbmciLCJhZ2dyZWdhdGlvblN0cmluZyIsImRlZmF1bHRBZ2dyZWdhdGlvbk5hbWUiLCJnZXREZWZhdWx0QWdncmVnYXRpb25OYW1lIiwicHJvcGVydHlOYW1lIiwiaGFzT3duUHJvcGVydHkiLCJKU09OIiwic3RyaW5naWZ5IiwiY2hpbGRyZW4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQUVBLE1BQU1BLGFBQWEsR0FBRyxVQUFVQyxHQUFWLEVBQWtDO0FBQ3ZELFFBQUlDLEtBQUssQ0FBQ0MsT0FBTixDQUFjRixHQUFkLENBQUosRUFBd0I7QUFDdkIsYUFBT0EsR0FBRyxDQUFDRyxJQUFKLENBQVMsRUFBVCxDQUFQO0FBQ0EsS0FGRCxNQUVPO0FBQ04sYUFBT0gsR0FBUDtBQUNBO0FBQ0QsR0FORDs7QUFRQSxNQUFNSSxtQkFBbUIsR0FBRyxVQUFVQyxtQkFBVixFQUFvQ0MsZUFB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LElBQWxCLFlBQ0t1QixjQURMLGNBQ3VCNUIsZUFEdkIsNEJBRUtQLGFBQWEsQ0FBQ00sbUJBQW1CLENBQUNDLGVBQUQsQ0FBcEIsQ0FGbEIsMkJBR000QixjQUhOLGNBR3dCNUIsZUFIeEI7QUFLQTs7QUFDRCxVQUFJYyxTQUFTLENBQUNxQixjQUFWLENBQXlCbkMsZUFBekIsS0FBOENjLFNBQUQsQ0FBbUJkLGVBQW5CLE1BQXdDRSxTQUF6RixFQUFvRztBQUNuRzRCLFFBQUFBLGdCQUFnQixDQUFDekIsSUFBakIsV0FBeUJMLGVBQXpCLGVBQTZDb0MsSUFBSSxDQUFDQyxTQUFMLENBQWdCdkIsU0FBRCxDQUFtQmQsZUFBbkIsQ0FBZixDQUE3QztBQUNBO0FBQ0QsS0FYRDtBQVlBLHNCQUFXNkIsT0FBWCxvQkFBNEJELGNBQTVCLGdCQUErQ0YsU0FBUyxDQUFDN0IsSUFBVixDQUFlLEdBQWYsQ0FBL0MsZ0JBQXVFaUMsZ0JBQWdCLENBQUNqQyxJQUFqQixDQUFzQixHQUF0QixDQUF2RSxjQUFxR2tDLGlCQUFpQixDQUFDbEMsSUFBbEIsQ0FDcEcsRUFEb0csQ0FBckcsZUFFTWdDLE9BRk47QUFHQSxHQXRERDs7U0F1RGVqQixNIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnRyb2xQcm9wZXJ0aWVzLCBOb25Db250cm9sUHJvcGVydGllcyB9IGZyb20gXCJzYXAvZmUvY29yZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5cbmNvbnN0IHdyaXRlQ2hpbGRyZW4gPSBmdW5jdGlvbiAodmFsOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuXHRpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG5cdFx0cmV0dXJuIHZhbC5qb2luKFwiXCIpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiB2YWw7XG5cdH1cbn07XG5cbmNvbnN0IGFkZENoaWxkQWdncmVnYXRpb24gPSBmdW5jdGlvbiAoYWdncmVnYXRpb25DaGlsZHJlbjogYW55LCBhZ2dyZWdhdGlvbk5hbWU6IHN0cmluZywgY2hpbGQ6IGFueSkge1xuXHRpZiAoY2hpbGQgPT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybjtcblx0fVxuXHRpZiAoIWFnZ3JlZ2F0aW9uQ2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSkge1xuXHRcdGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSA9IFtdO1xuXHR9XG5cdGlmICh0eXBlb2YgY2hpbGQgPT09IFwic3RyaW5nXCIgJiYgY2hpbGQudHJpbSgpLmxlbmd0aCA+IDApIHtcblx0XHRhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0ucHVzaChjaGlsZCk7XG5cdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjaGlsZCkpIHtcblx0XHRjaGlsZC5mb3JFYWNoKChzdWJDaGlsZCkgPT4ge1xuXHRcdFx0YWRkQ2hpbGRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbkNoaWxkcmVuLCBhZ2dyZWdhdGlvbk5hbWUsIHN1YkNoaWxkKTtcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRPYmplY3Qua2V5cyhjaGlsZCkuZm9yRWFjaCgoY2hpbGRLZXkpID0+IHtcblx0XHRcdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgY2hpbGRLZXksIGNoaWxkW2NoaWxkS2V5XSk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmNvbnN0IEZMX0RFTEVHQVRFID0gXCJmbDpkZWxlZ2F0ZVwiO1xuY29uc3QganN4WG1sID0gZnVuY3Rpb24gPFQ+KFxuXHR0eXBlOiB0eXBlb2YgQ29udHJvbCxcblx0bVNldHRpbmdzOiBOb25Db250cm9sUHJvcGVydGllczxUPiAmIHsga2V5OiBzdHJpbmc7IGNoaWxkcmVuPzogRWxlbWVudCB8IENvbnRyb2xQcm9wZXJ0aWVzPFQ+IH0sXG5cdGtleTogc3RyaW5nXG4pOiBzdHJpbmcge1xuXHRjb25zdCBtZXRhZGF0YSA9IHR5cGUuZ2V0TWV0YWRhdGEoKTtcblx0Y29uc3QgbmFtZXNTcGxpdCA9IG1ldGFkYXRhLmdldE5hbWUoKS5zcGxpdChcIi5cIik7XG5cdGlmIChrZXkgIT09IHVuZGVmaW5lZCkge1xuXHRcdG1TZXR0aW5nc1tcImtleVwiXSA9IGtleTtcblx0fVxuXHRjb25zdCBtZXRhZGF0YVByb3BlcnRpZXMgPSBtZXRhZGF0YS5nZXRBbGxQcm9wZXJ0aWVzKCk7XG5cdGNvbnN0IG1ldGFkYXRhQWdncmVnYXRpb25zID0gbWV0YWRhdGEuZ2V0QWxsQWdncmVnYXRpb25zKCk7XG5cdG1ldGFkYXRhUHJvcGVydGllc1tcImNsYXNzXCJdID0geyBuYW1lOiBcImNsYXNzXCIgfTtcblx0bWV0YWRhdGFQcm9wZXJ0aWVzW1wiaWRcIl0gPSB7IG5hbWU6IFwiaWRcIiB9O1xuXHRtZXRhZGF0YVByb3BlcnRpZXNbRkxfREVMRUdBVEVdID0geyBuYW1lOiBGTF9ERUxFR0FURSB9O1xuXHRtZXRhZGF0YVByb3BlcnRpZXNbXCJ4bWxuczpmbFwiXSA9IHsgbmFtZTogRkxfREVMRUdBVEUgfTtcblx0aWYgKG1ldGFkYXRhLmdldE5hbWUoKSA9PT0gXCJzYXAudWkuY29yZS5GcmFnbWVudFwiKSB7XG5cdFx0bWV0YWRhdGFQcm9wZXJ0aWVzW1wiZnJhZ21lbnROYW1lXCJdID0geyBuYW1lOiBcImZyYWdtZW50TmFtZVwiIH07XG5cdH1cblx0Y29uc3QgbmFtZXNwYWNlID0gbmFtZXNTcGxpdC5zbGljZSgwLCAtMSk7XG5cdGNvbnN0IG5hbWUgPSBuYW1lc1NwbGl0W25hbWVzU3BsaXQubGVuZ3RoIC0gMV07XG5cdGNvbnN0IG5hbWVzcGFjZUFsaWFzID0gbmFtZXNwYWNlW25hbWVzcGFjZS5sZW5ndGggLSAxXTtcblx0Y29uc3QgdGFnTmFtZSA9IGAke25hbWVzcGFjZUFsaWFzfToke25hbWV9YDtcblx0Y29uc3QgcHJvcGVydGllc1N0cmluZzogc3RyaW5nW10gPSBbXTtcblx0Y29uc3QgYWdncmVnYXRpb25TdHJpbmc6IHN0cmluZ1tdID0gW107XG5cdGNvbnN0IGRlZmF1bHRBZ2dyZWdhdGlvbk5hbWUgPSBtZXRhZGF0YS5nZXREZWZhdWx0QWdncmVnYXRpb25OYW1lKCk7XG5cdE9iamVjdC5rZXlzKG1ldGFkYXRhUHJvcGVydGllcykuZm9yRWFjaCgocHJvcGVydHlOYW1lKSA9PiB7XG5cdFx0aWYgKG1TZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpICYmIChtU2V0dGluZ3MgYXMgYW55KVtwcm9wZXJ0eU5hbWVdICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGlmICh0eXBlb2YgKG1TZXR0aW5ncyBhcyBhbnkpW3Byb3BlcnR5TmFtZV0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0cHJvcGVydGllc1N0cmluZy5wdXNoKGAke3Byb3BlcnR5TmFtZX09JyR7SlNPTi5zdHJpbmdpZnkoKG1TZXR0aW5ncyBhcyBhbnkpW3Byb3BlcnR5TmFtZV0pfSdgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHByb3BlcnRpZXNTdHJpbmcucHVzaChgJHtwcm9wZXJ0eU5hbWV9PSckeyhtU2V0dGluZ3MgYXMgYW55KVtwcm9wZXJ0eU5hbWVdfSdgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXHRjb25zdCBhZ2dyZWdhdGlvbkNoaWxkcmVuOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7XG5cdFx0W2RlZmF1bHRBZ2dyZWdhdGlvbk5hbWVdOiBbXVxuXHR9O1xuXHRhZGRDaGlsZEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uQ2hpbGRyZW4sIGRlZmF1bHRBZ2dyZWdhdGlvbk5hbWUsIG1TZXR0aW5ncy5jaGlsZHJlbik7XG5cdE9iamVjdC5rZXlzKG1ldGFkYXRhQWdncmVnYXRpb25zKS5mb3JFYWNoKChhZ2dyZWdhdGlvbk5hbWUpID0+IHtcblx0XHRpZiAoYWdncmVnYXRpb25DaGlsZHJlbj8uaGFzT3duUHJvcGVydHkoYWdncmVnYXRpb25OYW1lKSAmJiBhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0ubGVuZ3RoID4gMCkge1xuXHRcdFx0YWdncmVnYXRpb25TdHJpbmcucHVzaChcblx0XHRcdFx0YDwke25hbWVzcGFjZUFsaWFzfToke2FnZ3JlZ2F0aW9uTmFtZX0+XG5cdFx0XHRcdFx0XHQke3dyaXRlQ2hpbGRyZW4oYWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdKX1cblx0XHRcdFx0XHQ8LyR7bmFtZXNwYWNlQWxpYXN9OiR7YWdncmVnYXRpb25OYW1lfT5gXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAobVNldHRpbmdzLmhhc093blByb3BlcnR5KGFnZ3JlZ2F0aW9uTmFtZSkgJiYgKG1TZXR0aW5ncyBhcyBhbnkpW2FnZ3JlZ2F0aW9uTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cHJvcGVydGllc1N0cmluZy5wdXNoKGAke2FnZ3JlZ2F0aW9uTmFtZX09JyR7SlNPTi5zdHJpbmdpZnkoKG1TZXR0aW5ncyBhcyBhbnkpW2FnZ3JlZ2F0aW9uTmFtZV0pfSdgKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gYDwke3RhZ05hbWV9IHhtbG5zOiR7bmFtZXNwYWNlQWxpYXN9PVwiJHtuYW1lc3BhY2Uuam9pbihcIi5cIil9XCIgJHtwcm9wZXJ0aWVzU3RyaW5nLmpvaW4oXCIgXCIpfT4ke2FnZ3JlZ2F0aW9uU3RyaW5nLmpvaW4oXG5cdFx0XCJcIlxuXHQpfTwvJHt0YWdOYW1lfT5gO1xufTtcbmV4cG9ydCBkZWZhdWx0IGpzeFhtbDtcbiJdfQ==
@@ -0,0 +1,89 @@
1
+ import type { ControlProperties, NonControlProperties } from "sap/fe/core/jsx-runtime/jsx";
2
+ import type Control from "sap/ui/core/Control";
3
+ import Element from "sap/ui/core/Element";
4
+
5
+ const writeChildren = function (val: string | string[]) {
6
+ if (Array.isArray(val)) {
7
+ return val.join("");
8
+ } else {
9
+ return val;
10
+ }
11
+ };
12
+
13
+ const addChildAggregation = function (aggregationChildren: any, aggregationName: string, child: any) {
14
+ if (child === undefined) {
15
+ return;
16
+ }
17
+ if (!aggregationChildren[aggregationName]) {
18
+ aggregationChildren[aggregationName] = [];
19
+ }
20
+ if (typeof child === "string" && child.trim().length > 0) {
21
+ aggregationChildren[aggregationName].push(child);
22
+ } else if (Array.isArray(child)) {
23
+ child.forEach((subChild) => {
24
+ addChildAggregation(aggregationChildren, aggregationName, subChild);
25
+ });
26
+ } else {
27
+ Object.keys(child).forEach((childKey) => {
28
+ addChildAggregation(aggregationChildren, childKey, child[childKey]);
29
+ });
30
+ }
31
+ };
32
+
33
+ const FL_DELEGATE = "fl:delegate";
34
+ const jsxXml = function <T>(
35
+ type: typeof Control,
36
+ mSettings: NonControlProperties<T> & { key: string; children?: Element | ControlProperties<T> },
37
+ key: string
38
+ ): string {
39
+ const metadata = type.getMetadata();
40
+ const namesSplit = metadata.getName().split(".");
41
+ if (key !== undefined) {
42
+ mSettings["key"] = key;
43
+ }
44
+ const metadataProperties = metadata.getAllProperties();
45
+ const metadataAggregations = metadata.getAllAggregations();
46
+ metadataProperties["class"] = { name: "class" };
47
+ metadataProperties["id"] = { name: "id" };
48
+ metadataProperties[FL_DELEGATE] = { name: FL_DELEGATE };
49
+ metadataProperties["xmlns:fl"] = { name: FL_DELEGATE };
50
+ if (metadata.getName() === "sap.ui.core.Fragment") {
51
+ metadataProperties["fragmentName"] = { name: "fragmentName" };
52
+ }
53
+ const namespace = namesSplit.slice(0, -1);
54
+ const name = namesSplit[namesSplit.length - 1];
55
+ const namespaceAlias = namespace[namespace.length - 1];
56
+ const tagName = `${namespaceAlias}:${name}`;
57
+ const propertiesString: string[] = [];
58
+ const aggregationString: string[] = [];
59
+ const defaultAggregationName = metadata.getDefaultAggregationName();
60
+ Object.keys(metadataProperties).forEach((propertyName) => {
61
+ if (mSettings.hasOwnProperty(propertyName) && (mSettings as any)[propertyName] !== undefined) {
62
+ if (typeof (mSettings as any)[propertyName] === "object") {
63
+ propertiesString.push(`${propertyName}='${JSON.stringify((mSettings as any)[propertyName])}'`);
64
+ } else {
65
+ propertiesString.push(`${propertyName}='${(mSettings as any)[propertyName]}'`);
66
+ }
67
+ }
68
+ });
69
+ const aggregationChildren: Record<string, string[]> = {
70
+ [defaultAggregationName]: []
71
+ };
72
+ addChildAggregation(aggregationChildren, defaultAggregationName, mSettings.children);
73
+ Object.keys(metadataAggregations).forEach((aggregationName) => {
74
+ if (aggregationChildren?.hasOwnProperty(aggregationName) && aggregationChildren[aggregationName].length > 0) {
75
+ aggregationString.push(
76
+ `<${namespaceAlias}:${aggregationName}>
77
+ ${writeChildren(aggregationChildren[aggregationName])}
78
+ </${namespaceAlias}:${aggregationName}>`
79
+ );
80
+ }
81
+ if (mSettings.hasOwnProperty(aggregationName) && (mSettings as any)[aggregationName] !== undefined) {
82
+ propertiesString.push(`${aggregationName}='${JSON.stringify((mSettings as any)[aggregationName])}'`);
83
+ }
84
+ });
85
+ return `<${tagName} xmlns:${namespaceAlias}="${namespace.join(".")}" ${propertiesString.join(" ")}>${aggregationString.join(
86
+ ""
87
+ )}</${tagName}>`;
88
+ };
89
+ export default jsxXml;
@@ -2,104 +2,26 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define([], function () {
5
+ sap.ui.define(["sap/fe/core/jsx-runtime/jsx-control", "sap/fe/core/jsx-runtime/jsx-xml"], function (jsxControl, jsxXml) {
6
6
  "use strict";
7
7
 
8
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+ var renderNextAsXML = false;
9
9
 
10
- var writeChildren = function (val) {
11
- if (Array.isArray(val)) {
12
- return val.join("");
10
+ var jsx = function (ControlType, mSettings, key) {
11
+ if (!renderNextAsXML) {
12
+ return jsxControl(ControlType, mSettings, key);
13
13
  } else {
14
- return val;
14
+ return jsxXml(ControlType, mSettings, key);
15
15
  }
16
16
  };
17
17
 
18
- var addChildAggregation = function (aggregationChildren, aggregationName, child) {
19
- if (child === undefined) {
20
- return;
21
- }
22
-
23
- if (!aggregationChildren[aggregationName]) {
24
- aggregationChildren[aggregationName] = [];
25
- }
26
-
27
- if (typeof child === "string" && child.trim().length > 0) {
28
- aggregationChildren[aggregationName].push(child);
29
- } else if (Array.isArray(child)) {
30
- child.forEach(function (subChild) {
31
- addChildAggregation(aggregationChildren, aggregationName, subChild);
32
- });
33
- } else {
34
- Object.keys(child).forEach(function (childKey) {
35
- addChildAggregation(aggregationChildren, childKey, child[childKey]);
36
- });
37
- }
38
- };
39
-
40
- var FL_DELEGATE = "fl:delegate";
41
-
42
- var jsx = function (type, mSettings, key) {
43
- var metadata = type.getMetadata();
44
- var namesSplit = metadata.getName().split(".");
45
-
46
- if (key !== undefined) {
47
- mSettings["key"] = key;
48
- }
49
-
50
- var metadataProperties = metadata.getAllProperties();
51
- var metadataAggregations = metadata.getAllAggregations();
52
- metadataProperties["class"] = {
53
- name: "class"
54
- };
55
- metadataProperties["id"] = {
56
- name: "id"
57
- };
58
- metadataProperties[FL_DELEGATE] = {
59
- name: FL_DELEGATE
60
- };
61
- metadataProperties["xmlns:fl"] = {
62
- name: FL_DELEGATE
63
- };
64
-
65
- if (metadata.getName() === "sap.ui.core.Fragment") {
66
- metadataProperties["fragmentName"] = {
67
- name: "fragmentName"
68
- };
69
- }
70
-
71
- var namespace = namesSplit.slice(0, -1);
72
- var name = namesSplit[namesSplit.length - 1];
73
- var namespaceAlias = namespace[namespace.length - 1];
74
- var tagName = "".concat(namespaceAlias, ":").concat(name);
75
- var propertiesString = [];
76
- var aggregationString = [];
77
- var defaultAggregationName = metadata.getDefaultAggregationName();
78
- Object.keys(metadataProperties).forEach(function (propertyName) {
79
- if (mSettings.hasOwnProperty(propertyName) && mSettings[propertyName] !== undefined) {
80
- if (typeof mSettings[propertyName] === "object") {
81
- propertiesString.push("".concat(propertyName, "='").concat(JSON.stringify(mSettings[propertyName]), "'"));
82
- } else {
83
- propertiesString.push("".concat(propertyName, "='").concat(mSettings[propertyName], "'"));
84
- }
85
- }
86
- });
87
-
88
- var aggregationChildren = _defineProperty({}, defaultAggregationName, []);
89
-
90
- addChildAggregation(aggregationChildren, defaultAggregationName, mSettings.children);
91
- Object.keys(metadataAggregations).forEach(function (aggregationName) {
92
- if (aggregationChildren !== null && aggregationChildren !== void 0 && aggregationChildren.hasOwnProperty(aggregationName) && aggregationChildren[aggregationName].length > 0) {
93
- aggregationString.push("<".concat(namespaceAlias, ":").concat(aggregationName, ">\n\t\t\t\t\t\t").concat(writeChildren(aggregationChildren[aggregationName]), "\n\t\t\t\t\t</").concat(namespaceAlias, ":").concat(aggregationName, ">"));
94
- }
95
-
96
- if (mSettings.hasOwnProperty(aggregationName) && mSettings[aggregationName] !== undefined) {
97
- propertiesString.push("".concat(aggregationName, "='").concat(JSON.stringify(mSettings[aggregationName]), "'"));
98
- }
99
- });
100
- return "<".concat(tagName, " xmlns:").concat(namespaceAlias, "=\"").concat(namespace.join("."), "\" ").concat(propertiesString.join(" "), ">").concat(aggregationString.join(""), "</").concat(tagName, ">");
18
+ jsx.renderAsXML = function (renderMethod) {
19
+ renderNextAsXML = true;
20
+ var returnValue = renderMethod();
21
+ renderNextAsXML = false;
22
+ return returnValue;
101
23
  };
102
24
 
103
25
  return jsx;
104
26
  }, false);
105
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpzeC50cyJdLCJuYW1lcyI6WyJ3cml0ZUNoaWxkcmVuIiwidmFsIiwiQXJyYXkiLCJpc0FycmF5Iiwiam9pbiIsImFkZENoaWxkQWdncmVnYXRpb24iLCJhZ2dyZWdhdGlvbkNoaWxkcmVuIiwiYWdncmVnYXRpb25OYW1lIiwiY2hpbGQiLCJ1bmRlZmluZWQiLCJ0cmltIiwibGVuZ3RoIiwicHVzaCIsImZvckVhY2giLCJzdWJDaGlsZCIsIk9iamVjdCIsImtleXMiLCJjaGlsZEtleSIsIkZMX0RFTEVHQVRFIiwianN4IiwidHlwZSIsIm1TZXR0aW5ncyIsImtleSIsIm1ldGFkYXRhIiwiZ2V0TWV0YWRhdGEiLCJuYW1lc1NwbGl0IiwiZ2V0TmFtZSIsInNwbGl0IiwibWV0YWRhdGFQcm9wZXJ0aWVzIiwiZ2V0QWxsUHJvcGVydGllcyIsIm1ldGFkYXRhQWdncmVnYXRpb25zIiwiZ2V0QWxsQWdncmVnYXRpb25zIiwibmFtZSIsIm5hbWVzcGFjZSIsInNsaWNlIiwibmFtZXNwYWNlQWxpYXMiLCJ0YWdOYW1lIiwicHJvcGVydGllc1N0cmluZyIsImFnZ3JlZ2F0aW9uU3RyaW5nIiwiZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSIsImdldERlZmF1bHRBZ2dyZWdhdGlvbk5hbWUiLCJwcm9wZXJ0eU5hbWUiLCJoYXNPd25Qcm9wZXJ0eSIsIkpTT04iLCJzdHJpbmdpZnkiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7O0FBVUEsTUFBTUEsYUFBYSxHQUFHLFVBQVVDLEdBQVYsRUFBa0M7QUFDdkQsUUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLEdBQWQsQ0FBSixFQUF3QjtBQUN2QixhQUFPQSxHQUFHLENBQUNHLElBQUosQ0FBUyxFQUFULENBQVA7QUFDQSxLQUZELE1BRU87QUFDTixhQUFPSCxHQUFQO0FBQ0E7QUFDRCxHQU5EOztBQVFBLE1BQU1JLG1CQUFtQixHQUFHLFVBQVVDLG1CQUFWLEVBQW9DQyxlQUFwQyxFQUE2REMsS0FBN0QsRUFBeUU7QUFDcEcsUUFBSUEsS0FBSyxLQUFLQyxTQUFkLEVBQXlCO0FBQ3hCO0FBQ0E7O0FBQ0QsUUFBSSxDQUFDSCxtQkFBbUIsQ0FBQ0MsZUFBRCxDQUF4QixFQUEyQztBQUMxQ0QsTUFBQUEsbUJBQW1CLENBQUNDLGVBQUQsQ0FBbkIsR0FBdUMsRUFBdkM7QUFDQTs7QUFDRCxRQUFJLE9BQU9DLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJBLEtBQUssQ0FBQ0UsSUFBTixHQUFhQyxNQUFiLEdBQXNCLENBQXZELEVBQTBEO0FBQ3pETCxNQUFBQSxtQkFBbUIsQ0FBQ0MsZUFBRCxDQUFuQixDQUFxQ0ssSUFBckMsQ0FBMENKLEtBQTFDO0FBQ0EsS0FGRCxNQUVPLElBQUlOLEtBQUssQ0FBQ0MsT0FBTixDQUFjSyxLQUFkLENBQUosRUFBMEI7QUFDaENBLE1BQUFBLEtBQUssQ0FBQ0ssT0FBTixDQUFjLFVBQUNDLFFBQUQsRUFBYztBQUMzQlQsUUFBQUEsbUJBQW1CLENBQUNDLG1CQUFELEVBQXNCQyxlQUF0QixFQUF1Q08sUUFBdkMsQ0FBbkI7QUFDQSxPQUZEO0FBR0EsS0FKTSxNQUlBO0FBQ05DLE1BQUFBLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZUixLQUFaLEVBQW1CSyxPQUFuQixDQUEyQixVQUFDSSxRQUFELEVBQWM7QUFDeENaLFFBQUFBLG1CQUFtQixDQUFDQyxtQkFBRCxFQUFzQlcsUUFBdEIsRUFBZ0NULEtBQUssQ0FBQ1MsUUFBRCxDQUFyQyxDQUFuQjtBQUNBLE9BRkQ7QUFHQTtBQUNELEdBbEJEOztBQW9CQSxNQUFNQyxXQUFXLEdBQUcsYUFBcEI7O0FBQ0EsTUFBTUMsR0FBRyxHQUFHLFVBQ1hDLElBRFcsRUFFWEMsU0FGVyxFQUdYQyxHQUhXLEVBSUY7QUFDVCxRQUFNQyxRQUFRLEdBQUdILElBQUksQ0FBQ0ksV0FBTCxFQUFqQjtBQUNBLFFBQU1DLFVBQVUsR0FBR0YsUUFBUSxDQUFDRyxPQUFULEdBQW1CQyxLQUFuQixDQUF5QixHQUF6QixDQUFuQjs7QUFDQSxRQUFJTCxHQUFHLEtBQUtiLFNBQVosRUFBdUI7QUFDdEJZLE1BQUFBLFNBQVMsQ0FBQyxLQUFELENBQVQsR0FBbUJDLEdBQW5CO0FBQ0E7O0FBQ0QsUUFBTU0sa0JBQWtCLEdBQUdMLFFBQVEsQ0FBQ00sZ0JBQVQsRUFBM0I7QUFDQSxRQUFNQyxvQkFBb0IsR0FBR1AsUUFBUSxDQUFDUSxrQkFBVCxFQUE3QjtBQUNBSCxJQUFBQSxrQkFBa0IsQ0FBQyxPQUFELENBQWxCLEdBQThCO0FBQUVJLE1BQUFBLElBQUksRUFBRTtBQUFSLEtBQTlCO0FBQ0FKLElBQUFBLGtCQUFrQixDQUFDLElBQUQsQ0FBbEIsR0FBMkI7QUFBRUksTUFBQUEsSUFBSSxFQUFFO0FBQVIsS0FBM0I7QUFDQUosSUFBQUEsa0JBQWtCLENBQUNWLFdBQUQsQ0FBbEIsR0FBa0M7QUFBRWMsTUFBQUEsSUFBSSxFQUFFZDtBQUFSLEtBQWxDO0FBQ0FVLElBQUFBLGtCQUFrQixDQUFDLFVBQUQsQ0FBbEIsR0FBaUM7QUFBRUksTUFBQUEsSUFBSSxFQUFFZDtBQUFSLEtBQWpDOztBQUNBLFFBQUlLLFFBQVEsQ0FBQ0csT0FBVCxPQUF1QixzQkFBM0IsRUFBbUQ7QUFDbERFLE1BQUFBLGtCQUFrQixDQUFDLGNBQUQsQ0FBbEIsR0FBcUM7QUFBRUksUUFBQUEsSUFBSSxFQUFFO0FBQVIsT0FBckM7QUFDQTs7QUFDRCxRQUFNQyxTQUFTLEdBQUdSLFVBQVUsQ0FBQ1MsS0FBWCxDQUFpQixDQUFqQixFQUFvQixDQUFDLENBQXJCLENBQWxCO0FBQ0EsUUFBTUYsSUFBSSxHQUFHUCxVQUFVLENBQUNBLFVBQVUsQ0FBQ2QsTUFBWCxHQUFvQixDQUFyQixDQUF2QjtBQUNBLFFBQU13QixjQUFjLEdBQUdGLFNBQVMsQ0FBQ0EsU0FBUyxDQUFDdEIsTUFBVixHQUFtQixDQUFwQixDQUFoQztBQUNBLFFBQU15QixPQUFPLGFBQU1ELGNBQU4sY0FBd0JILElBQXhCLENBQWI7QUFDQSxRQUFNSyxnQkFBMEIsR0FBRyxFQUFuQztBQUNBLFFBQU1DLGlCQUEyQixHQUFHLEVBQXBDO0FBQ0EsUUFBTUMsc0JBQXNCLEdBQUdoQixRQUFRLENBQUNpQix5QkFBVCxFQUEvQjtBQUNBekIsSUFBQUEsTUFBTSxDQUFDQyxJQUFQLENBQVlZLGtCQUFaLEVBQWdDZixPQUFoQyxDQUF3QyxVQUFDNEIsWUFBRCxFQUFrQjtBQUN6RCxVQUFJcEIsU0FBUyxDQUFDcUIsY0FBVixDQUF5QkQsWUFBekIsS0FBMkNwQixTQUFELENBQW1Cb0IsWUFBbkIsTUFBcUNoQyxTQUFuRixFQUE4RjtBQUM3RixZQUFJLE9BQVFZLFNBQUQsQ0FBbUJvQixZQUFuQixDQUFQLEtBQTRDLFFBQWhELEVBQTBEO0FBQ3pESixVQUFBQSxnQkFBZ0IsQ0FBQ3pCLElBQWpCLFdBQXlCNkIsWUFBekIsZUFBMENFLElBQUksQ0FBQ0MsU0FBTCxDQUFnQnZCLFNBQUQsQ0FBbUJvQixZQUFuQixDQUFmLENBQTFDO0FBQ0EsU0FGRCxNQUVPO0FBQ05KLFVBQUFBLGdCQUFnQixDQUFDekIsSUFBakIsV0FBeUI2QixZQUF6QixlQUEyQ3BCLFNBQUQsQ0FBbUJvQixZQUFuQixDQUExQztBQUNBO0FBQ0Q7QUFDRCxLQVJEOztBQVNBLFFBQU1uQyxtQkFBNkMsdUJBQ2pEaUMsc0JBRGlELEVBQ3hCLEVBRHdCLENBQW5EOztBQUdBbEMsSUFBQUEsbUJBQW1CLENBQUNDLG1CQUFELEVBQXNCaUMsc0JBQXRCLEVBQThDbEIsU0FBUyxDQUFDd0IsUUFBeEQsQ0FBbkI7QUFDQTlCLElBQUFBLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZYyxvQkFBWixFQUFrQ2pCLE9BQWxDLENBQTBDLFVBQUNOLGVBQUQsRUFBcUI7QUFDOUQsVUFBSUQsbUJBQW1CLFNBQW5CLElBQUFBLG1CQUFtQixXQUFuQixJQUFBQSxtQkFBbUIsQ0FBRW9DLGNBQXJCLENBQW9DbkMsZUFBcEMsS0FBd0RELG1CQUFtQixDQUFDQyxlQUFELENBQW5CLENBQXFDSSxNQUFyQyxHQUE4QyxDQUExRyxFQUE2RztBQUM1RzJCLFFBQUFBLGlCQUFpQixDQUFDMUIsSUFBbEIsWUFDS3VCLGNBREwsY0FDdUI1QixlQUR2Qiw0QkFFS1AsYUFBYSxDQUFDTSxtQkFBbUIsQ0FBQ0MsZUFBRCxDQUFwQixDQUZsQiwyQkFHTTRCLGNBSE4sY0FHd0I1QixlQUh4QjtBQUtBOztBQUNELFVBQUljLFNBQVMsQ0FBQ3FCLGNBQVYsQ0FBeUJuQyxlQUF6QixLQUE4Q2MsU0FBRCxDQUFtQmQsZUFBbkIsTUFBd0NFLFNBQXpGLEVBQW9HO0FBQ25HNEIsUUFBQUEsZ0JBQWdCLENBQUN6QixJQUFqQixXQUF5QkwsZUFBekIsZUFBNkNvQyxJQUFJLENBQUNDLFNBQUwsQ0FBZ0J2QixTQUFELENBQW1CZCxlQUFuQixDQUFmLENBQTdDO0FBQ0E7QUFDRCxLQVhEO0FBWUEsc0JBQVc2QixPQUFYLG9CQUE0QkQsY0FBNUIsZ0JBQStDRixTQUFTLENBQUM3QixJQUFWLENBQWUsR0FBZixDQUEvQyxnQkFBdUVpQyxnQkFBZ0IsQ0FBQ2pDLElBQWpCLENBQXNCLEdBQXRCLENBQXZFLGNBQXFHa0MsaUJBQWlCLENBQUNsQyxJQUFsQixDQUNwRyxFQURvRyxDQUFyRyxlQUVNZ0MsT0FGTjtBQUdBLEdBdEREOztTQXVEZWpCLEciLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3RNZXRhZGF0YSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdE1ldGFkYXRhXCI7XG5cbnR5cGUgQ29udHJvbFByb3BlcnR5TmFtZXM8VD4gPSB7XG5cdFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgc3RyaW5nIHwgYm9vbGVhbiB8IEZ1bmN0aW9uIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgc3RyaW5nW10gPyBuZXZlciA6IEs7XG59W2tleW9mIFRdO1xudHlwZSBDb250cm9sUHJvcGVydGllczxUPiA9IFBhcnRpYWw8UmVjb3JkPENvbnRyb2xQcm9wZXJ0eU5hbWVzPFQ+LCBKU1guRWxlbWVudD4+O1xudHlwZSBOb25Db250cm9sUHJvcGVydGllczxUPiA9IFBhcnRpYWw8T21pdDxULCBDb250cm9sUHJvcGVydHlOYW1lczxUPj4+O1xudHlwZSBDb250cm9sV2l0aE1ldGFkYXRhID0ge1xuXHRnZXRNZXRhZGF0YSgpOiBNYW5hZ2VkT2JqZWN0TWV0YWRhdGE7XG59O1xuZXhwb3J0IHR5cGUgV3JhcHBlZENvbnRyb2w8VD4gPSAobVNldHRpbmdzOiBOb25Db250cm9sUHJvcGVydGllczxUPiAmIHsgY2hpbGRyZW4/OiBKU1guRWxlbWVudCB8IENvbnRyb2xQcm9wZXJ0aWVzPFQ+IH0pID0+IEpTWC5FbGVtZW50O1xuXG5jb25zdCB3cml0ZUNoaWxkcmVuID0gZnVuY3Rpb24gKHZhbDogc3RyaW5nIHwgc3RyaW5nW10pIHtcblx0aWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuXHRcdHJldHVybiB2YWwuam9pbihcIlwiKTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gdmFsO1xuXHR9XG59O1xuXG5jb25zdCBhZGRDaGlsZEFnZ3JlZ2F0aW9uID0gZnVuY3Rpb24gKGFnZ3JlZ2F0aW9uQ2hpbGRyZW46IGFueSwgYWdncmVnYXRpb25OYW1lOiBzdHJpbmcsIGNoaWxkOiBhbnkpIHtcblx0aWYgKGNoaWxkID09PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm47XG5cdH1cblx0aWYgKCFhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0pIHtcblx0XHRhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0gPSBbXTtcblx0fVxuXHRpZiAodHlwZW9mIGNoaWxkID09PSBcInN0cmluZ1wiICYmIGNoaWxkLnRyaW0oKS5sZW5ndGggPiAwKSB7XG5cdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdLnB1c2goY2hpbGQpO1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGQpKSB7XG5cdFx0Y2hpbGQuZm9yRWFjaCgoc3ViQ2hpbGQpID0+IHtcblx0XHRcdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgYWdncmVnYXRpb25OYW1lLCBzdWJDaGlsZCk7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0T2JqZWN0LmtleXMoY2hpbGQpLmZvckVhY2goKGNoaWxkS2V5KSA9PiB7XG5cdFx0XHRhZGRDaGlsZEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uQ2hpbGRyZW4sIGNoaWxkS2V5LCBjaGlsZFtjaGlsZEtleV0pO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5jb25zdCBGTF9ERUxFR0FURSA9IFwiZmw6ZGVsZWdhdGVcIjtcbmNvbnN0IGpzeCA9IGZ1bmN0aW9uIDxUPihcblx0dHlwZTogQ29udHJvbFdpdGhNZXRhZGF0YSxcblx0bVNldHRpbmdzOiBOb25Db250cm9sUHJvcGVydGllczxUPiAmIHsga2V5OiBzdHJpbmc7IGNoaWxkcmVuPzogSlNYLkVsZW1lbnQgfCBDb250cm9sUHJvcGVydGllczxUPiB9LFxuXHRrZXk6IHN0cmluZ1xuKTogc3RyaW5nIHtcblx0Y29uc3QgbWV0YWRhdGEgPSB0eXBlLmdldE1ldGFkYXRhKCk7XG5cdGNvbnN0IG5hbWVzU3BsaXQgPSBtZXRhZGF0YS5nZXROYW1lKCkuc3BsaXQoXCIuXCIpO1xuXHRpZiAoa2V5ICE9PSB1bmRlZmluZWQpIHtcblx0XHRtU2V0dGluZ3NbXCJrZXlcIl0gPSBrZXk7XG5cdH1cblx0Y29uc3QgbWV0YWRhdGFQcm9wZXJ0aWVzID0gbWV0YWRhdGEuZ2V0QWxsUHJvcGVydGllcygpO1xuXHRjb25zdCBtZXRhZGF0YUFnZ3JlZ2F0aW9ucyA9IG1ldGFkYXRhLmdldEFsbEFnZ3JlZ2F0aW9ucygpO1xuXHRtZXRhZGF0YVByb3BlcnRpZXNbXCJjbGFzc1wiXSA9IHsgbmFtZTogXCJjbGFzc1wiIH07XG5cdG1ldGFkYXRhUHJvcGVydGllc1tcImlkXCJdID0geyBuYW1lOiBcImlkXCIgfTtcblx0bWV0YWRhdGFQcm9wZXJ0aWVzW0ZMX0RFTEVHQVRFXSA9IHsgbmFtZTogRkxfREVMRUdBVEUgfTtcblx0bWV0YWRhdGFQcm9wZXJ0aWVzW1wieG1sbnM6ZmxcIl0gPSB7IG5hbWU6IEZMX0RFTEVHQVRFIH07XG5cdGlmIChtZXRhZGF0YS5nZXROYW1lKCkgPT09IFwic2FwLnVpLmNvcmUuRnJhZ21lbnRcIikge1xuXHRcdG1ldGFkYXRhUHJvcGVydGllc1tcImZyYWdtZW50TmFtZVwiXSA9IHsgbmFtZTogXCJmcmFnbWVudE5hbWVcIiB9O1xuXHR9XG5cdGNvbnN0IG5hbWVzcGFjZSA9IG5hbWVzU3BsaXQuc2xpY2UoMCwgLTEpO1xuXHRjb25zdCBuYW1lID0gbmFtZXNTcGxpdFtuYW1lc1NwbGl0Lmxlbmd0aCAtIDFdO1xuXHRjb25zdCBuYW1lc3BhY2VBbGlhcyA9IG5hbWVzcGFjZVtuYW1lc3BhY2UubGVuZ3RoIC0gMV07XG5cdGNvbnN0IHRhZ05hbWUgPSBgJHtuYW1lc3BhY2VBbGlhc306JHtuYW1lfWA7XG5cdGNvbnN0IHByb3BlcnRpZXNTdHJpbmc6IHN0cmluZ1tdID0gW107XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uU3RyaW5nOiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBkZWZhdWx0QWdncmVnYXRpb25OYW1lID0gbWV0YWRhdGEuZ2V0RGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSgpO1xuXHRPYmplY3Qua2V5cyhtZXRhZGF0YVByb3BlcnRpZXMpLmZvckVhY2goKHByb3BlcnR5TmFtZSkgPT4ge1xuXHRcdGlmIChtU2V0dGluZ3MuaGFzT3duUHJvcGVydHkocHJvcGVydHlOYW1lKSAmJiAobVNldHRpbmdzIGFzIGFueSlbcHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAodHlwZW9mIChtU2V0dGluZ3MgYXMgYW55KVtwcm9wZXJ0eU5hbWVdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdHByb3BlcnRpZXNTdHJpbmcucHVzaChgJHtwcm9wZXJ0eU5hbWV9PScke0pTT04uc3RyaW5naWZ5KChtU2V0dGluZ3MgYXMgYW55KVtwcm9wZXJ0eU5hbWVdKX0nYCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwcm9wZXJ0aWVzU3RyaW5nLnB1c2goYCR7cHJvcGVydHlOYW1lfT0nJHsobVNldHRpbmdzIGFzIGFueSlbcHJvcGVydHlOYW1lXX0nYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcblx0Y29uc3QgYWdncmVnYXRpb25DaGlsZHJlbjogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xuXHRcdFtkZWZhdWx0QWdncmVnYXRpb25OYW1lXTogW11cblx0fTtcblx0YWRkQ2hpbGRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbkNoaWxkcmVuLCBkZWZhdWx0QWdncmVnYXRpb25OYW1lLCBtU2V0dGluZ3MuY2hpbGRyZW4pO1xuXHRPYmplY3Qua2V5cyhtZXRhZGF0YUFnZ3JlZ2F0aW9ucykuZm9yRWFjaCgoYWdncmVnYXRpb25OYW1lKSA9PiB7XG5cdFx0aWYgKGFnZ3JlZ2F0aW9uQ2hpbGRyZW4/Lmhhc093blByb3BlcnR5KGFnZ3JlZ2F0aW9uTmFtZSkgJiYgYWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdLmxlbmd0aCA+IDApIHtcblx0XHRcdGFnZ3JlZ2F0aW9uU3RyaW5nLnB1c2goXG5cdFx0XHRcdGA8JHtuYW1lc3BhY2VBbGlhc306JHthZ2dyZWdhdGlvbk5hbWV9PlxuXHRcdFx0XHRcdFx0JHt3cml0ZUNoaWxkcmVuKGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSl9XG5cdFx0XHRcdFx0PC8ke25hbWVzcGFjZUFsaWFzfToke2FnZ3JlZ2F0aW9uTmFtZX0+YFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKG1TZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eShhZ2dyZWdhdGlvbk5hbWUpICYmIChtU2V0dGluZ3MgYXMgYW55KVthZ2dyZWdhdGlvbk5hbWVdICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHByb3BlcnRpZXNTdHJpbmcucHVzaChgJHthZ2dyZWdhdGlvbk5hbWV9PScke0pTT04uc3RyaW5naWZ5KChtU2V0dGluZ3MgYXMgYW55KVthZ2dyZWdhdGlvbk5hbWVdKX0nYCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGA8JHt0YWdOYW1lfSB4bWxuczoke25hbWVzcGFjZUFsaWFzfT1cIiR7bmFtZXNwYWNlLmpvaW4oXCIuXCIpfVwiICR7cHJvcGVydGllc1N0cmluZy5qb2luKFwiIFwiKX0+JHthZ2dyZWdhdGlvblN0cmluZy5qb2luKFxuXHRcdFwiXCJcblx0KX08LyR7dGFnTmFtZX0+YDtcbn07XG5leHBvcnQgZGVmYXVsdCBqc3g7XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpzeC50cyJdLCJuYW1lcyI6WyJyZW5kZXJOZXh0QXNYTUwiLCJqc3giLCJDb250cm9sVHlwZSIsIm1TZXR0aW5ncyIsImtleSIsImpzeENvbnRyb2wiLCJqc3hYbWwiLCJyZW5kZXJBc1hNTCIsInJlbmRlck1ldGhvZCIsInJldHVyblZhbHVlIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBU0EsTUFBSUEsZUFBZSxHQUFHLEtBQXRCOztBQUNBLE1BQU1DLEdBQUcsR0FBRyxVQUNYQyxXQURXLEVBRVhDLFNBRlcsRUFHWEMsR0FIVyxFQUlvQjtBQUMvQixRQUFJLENBQUNKLGVBQUwsRUFBc0I7QUFDckIsYUFBT0ssVUFBVSxDQUFDSCxXQUFELEVBQWNDLFNBQWQsRUFBeUJDLEdBQXpCLENBQWpCO0FBQ0EsS0FGRCxNQUVPO0FBQ04sYUFBT0UsTUFBTSxDQUFDSixXQUFELEVBQWNDLFNBQWQsRUFBeUJDLEdBQXpCLENBQWI7QUFDQTtBQUNELEdBVkQ7O0FBV0FILEVBQUFBLEdBQUcsQ0FBQ00sV0FBSixHQUFrQixVQUFVQyxZQUFWLEVBQWtDO0FBQ25EUixJQUFBQSxlQUFlLEdBQUcsSUFBbEI7QUFDQSxRQUFNUyxXQUFXLEdBQUdELFlBQVksRUFBaEM7QUFDQVIsSUFBQUEsZUFBZSxHQUFHLEtBQWxCO0FBQ0EsV0FBT1MsV0FBUDtBQUNBLEdBTEQ7O1NBWWVSLEciLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBqc3hDb250cm9sIGZyb20gXCJzYXAvZmUvY29yZS9qc3gtcnVudGltZS9qc3gtY29udHJvbFwiO1xuaW1wb3J0IGpzeFhtbCBmcm9tIFwic2FwL2ZlL2NvcmUvanN4LXJ1bnRpbWUvanN4LXhtbFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5cbnR5cGUgQ29udHJvbFByb3BlcnR5TmFtZXM8VD4gPSB7XG5cdFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgc3RyaW5nIHwgYm9vbGVhbiB8IEZ1bmN0aW9uIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgc3RyaW5nW10gPyBuZXZlciA6IEs7XG59W2tleW9mIFRdO1xuZXhwb3J0IHR5cGUgQ29udHJvbFByb3BlcnRpZXM8VD4gPSBQYXJ0aWFsPFJlY29yZDxDb250cm9sUHJvcGVydHlOYW1lczxUPiwgRWxlbWVudD4+O1xuZXhwb3J0IHR5cGUgTm9uQ29udHJvbFByb3BlcnRpZXM8VD4gPSBQYXJ0aWFsPE9taXQ8VCwgQ29udHJvbFByb3BlcnR5TmFtZXM8VD4+PjtcblxubGV0IHJlbmRlck5leHRBc1hNTCA9IGZhbHNlO1xuY29uc3QganN4ID0gZnVuY3Rpb24gPFQ+KFxuXHRDb250cm9sVHlwZTogdHlwZW9mIENvbnRyb2wsXG5cdG1TZXR0aW5nczogTm9uQ29udHJvbFByb3BlcnRpZXM8VD4gJiB7IGtleTogc3RyaW5nOyBjaGlsZHJlbj86IEVsZW1lbnQgfCBDb250cm9sUHJvcGVydGllczxUPiB9LFxuXHRrZXk6IHN0cmluZ1xuKTogc3RyaW5nIHwgQ29udHJvbCB8IENvbnRyb2xbXSB7XG5cdGlmICghcmVuZGVyTmV4dEFzWE1MKSB7XG5cdFx0cmV0dXJuIGpzeENvbnRyb2woQ29udHJvbFR5cGUsIG1TZXR0aW5ncywga2V5KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4ganN4WG1sKENvbnRyb2xUeXBlLCBtU2V0dGluZ3MsIGtleSk7XG5cdH1cbn07XG5qc3gucmVuZGVyQXNYTUwgPSBmdW5jdGlvbiAocmVuZGVyTWV0aG9kOiBGdW5jdGlvbikge1xuXHRyZW5kZXJOZXh0QXNYTUwgPSB0cnVlO1xuXHRjb25zdCByZXR1cm5WYWx1ZSA9IHJlbmRlck1ldGhvZCgpO1xuXHRyZW5kZXJOZXh0QXNYTUwgPSBmYWxzZTtcblx0cmV0dXJuIHJldHVyblZhbHVlO1xufTtcblxuZXhwb3J0IHR5cGUgUmVmPFQgZXh0ZW5kcyBFbGVtZW50PiA9IHtcblx0Y3VycmVudD86IFQ7XG5cdHNldEN1cnJlbnQob0NvbnRyb2xJbnN0YW5jZTogVCk6IHZvaWQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBqc3g7XG4iXX0=