@sapui5/sap.fe.core 1.93.3 → 1.96.2

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 (182) hide show
  1. package/package.json +2 -2
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +9 -40
  4. package/src/sap/fe/core/BusyLocker.js +12 -0
  5. package/src/sap/fe/core/CommonUtils.js +430 -27
  6. package/src/sap/fe/core/ExtensionAPI.js +1 -1
  7. package/src/sap/fe/core/PageController.js +13 -2
  8. package/src/sap/fe/core/TemplateComponent.js +6 -0
  9. package/src/sap/fe/core/TransactionHelper.js +248 -170
  10. package/src/sap/fe/core/actions/draft.js +13 -1
  11. package/src/sap/fe/core/actions/operations.js +165 -45
  12. package/src/sap/fe/core/controllerextensions/EditFlow.js +56 -37
  13. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +13 -6
  14. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +127 -24
  15. package/src/sap/fe/core/controllerextensions/InternalRouting.js +183 -164
  16. package/src/sap/fe/core/controllerextensions/KPIManagement.js +834 -170
  17. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +890 -189
  18. package/src/sap/fe/core/controllerextensions/PageReady.js +48 -33
  19. package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -14
  20. package/src/sap/fe/core/controllerextensions/Paginator.js +150 -0
  21. package/src/sap/fe/core/controllerextensions/Placeholder.js +133 -270
  22. package/src/sap/fe/core/controllerextensions/Share.js +31 -13
  23. package/src/sap/fe/core/controllerextensions/SideEffects.js +5 -6
  24. package/src/sap/fe/core/controllerextensions/SideEffects.ts +13 -12
  25. package/src/sap/fe/core/controllerextensions/ViewState.js +173 -6
  26. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +39 -34
  27. package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +35 -0
  28. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +1 -1
  29. package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -0
  30. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +45 -0
  31. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +15 -4
  32. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +250 -94
  33. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +129 -135
  34. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +325 -0
  35. package/src/sap/fe/core/converters/ConverterContext.js +19 -5
  36. package/src/sap/fe/core/converters/ConverterContext.ts +13 -3
  37. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  38. package/src/sap/fe/core/converters/ManifestSettings.ts +9 -2
  39. package/src/sap/fe/core/converters/ManifestWrapper.js +9 -9
  40. package/src/sap/fe/core/converters/MetaModelConverter.js +858 -871
  41. package/src/sap/fe/core/converters/MetaModelConverter.ts +763 -826
  42. package/src/sap/fe/core/converters/TemplateConverter.js +4 -4
  43. package/src/sap/fe/core/converters/annotations/DataField.js +57 -7
  44. package/src/sap/fe/core/converters/annotations/DataField.ts +52 -2
  45. package/src/sap/fe/core/converters/common/AnnotationConverter.js +80 -46
  46. package/src/sap/fe/core/converters/controls/Common/Action.js +56 -54
  47. package/src/sap/fe/core/converters/controls/Common/Action.ts +48 -36
  48. package/src/sap/fe/core/converters/controls/Common/Chart.js +101 -9
  49. package/src/sap/fe/core/converters/controls/Common/Chart.ts +100 -5
  50. package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -1
  51. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +15 -16
  52. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +16 -30
  53. package/src/sap/fe/core/converters/controls/Common/Form.js +21 -12
  54. package/src/sap/fe/core/converters/controls/Common/Form.ts +28 -8
  55. package/src/sap/fe/core/converters/controls/Common/KPI.js +287 -109
  56. package/src/sap/fe/core/converters/controls/Common/KPI.ts +314 -139
  57. package/src/sap/fe/core/converters/controls/Common/Table.js +414 -171
  58. package/src/sap/fe/core/converters/controls/Common/Table.ts +412 -130
  59. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +487 -0
  60. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +541 -0
  61. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +364 -0
  62. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +338 -0
  63. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +74 -0
  64. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +50 -0
  65. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +11 -11
  66. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +47 -35
  67. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +45 -29
  68. package/src/sap/fe/core/converters/helpers/Aggregation.js +31 -32
  69. package/src/sap/fe/core/converters/helpers/Aggregation.ts +26 -27
  70. package/src/sap/fe/core/converters/helpers/BindingHelper.js +27 -2
  71. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +22 -2
  72. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
  73. package/src/sap/fe/core/converters/helpers/ID.js +1 -3
  74. package/src/sap/fe/core/converters/helpers/ID.ts +2 -3
  75. package/src/sap/fe/core/converters/helpers/IssueManager.js +5 -4
  76. package/src/sap/fe/core/converters/helpers/IssueManager.ts +4 -3
  77. package/src/sap/fe/core/converters/helpers/Key.js +3 -3
  78. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +11 -6
  79. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +9 -5
  80. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +18 -5
  81. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +14 -14
  82. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +91 -20
  83. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +77 -5
  84. package/src/sap/fe/core/converters/templates/ListReportConverter.js +76 -714
  85. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +75 -807
  86. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +106 -17
  87. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +121 -16
  88. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  89. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  90. package/src/sap/fe/core/formatters/FPMFormatter.ts +8 -3
  91. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
  92. package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  93. package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
  94. package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
  95. package/src/sap/fe/core/fpm/Component.js +1 -1
  96. package/src/sap/fe/core/helpers/AnnotationEnum.js +3 -3
  97. package/src/sap/fe/core/helpers/BindingExpression.js +6 -6
  98. package/src/sap/fe/core/helpers/ClassSupport.js +4 -4
  99. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +0 -2
  100. package/src/sap/fe/core/helpers/ModelHelper.js +27 -0
  101. package/src/sap/fe/core/helpers/PasteHelper.js +6 -0
  102. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +2 -2
  103. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  104. package/src/sap/fe/core/helpers/StableIdHelper.ts +1 -1
  105. package/src/sap/fe/core/jsx-runtime/jsx.js +2 -2
  106. package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
  107. package/src/sap/fe/core/library.js +1 -1
  108. package/src/sap/fe/core/messagebundle.properties +30 -1
  109. package/src/sap/fe/core/messagebundle_ar.properties +43 -1
  110. package/src/sap/fe/core/messagebundle_bg.properties +42 -0
  111. package/src/sap/fe/core/messagebundle_ca.properties +44 -2
  112. package/src/sap/fe/core/messagebundle_cs.properties +42 -0
  113. package/src/sap/fe/core/messagebundle_cy.properties +42 -0
  114. package/src/sap/fe/core/messagebundle_da.properties +43 -1
  115. package/src/sap/fe/core/messagebundle_de.properties +45 -3
  116. package/src/sap/fe/core/messagebundle_el.properties +43 -1
  117. package/src/sap/fe/core/messagebundle_en.properties +42 -0
  118. package/src/sap/fe/core/messagebundle_en_GB.properties +43 -1
  119. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +43 -1
  120. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +48 -0
  121. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +42 -0
  122. package/src/sap/fe/core/messagebundle_es.properties +50 -8
  123. package/src/sap/fe/core/messagebundle_es_MX.properties +45 -3
  124. package/src/sap/fe/core/messagebundle_et.properties +42 -0
  125. package/src/sap/fe/core/messagebundle_fi.properties +42 -0
  126. package/src/sap/fe/core/messagebundle_fr.properties +51 -9
  127. package/src/sap/fe/core/messagebundle_fr_CA.properties +42 -0
  128. package/src/sap/fe/core/messagebundle_hi.properties +43 -1
  129. package/src/sap/fe/core/messagebundle_hr.properties +43 -1
  130. package/src/sap/fe/core/messagebundle_hu.properties +42 -0
  131. package/src/sap/fe/core/messagebundle_id.properties +43 -1
  132. package/src/sap/fe/core/messagebundle_it.properties +43 -1
  133. package/src/sap/fe/core/messagebundle_iw.properties +44 -2
  134. package/src/sap/fe/core/messagebundle_ja.properties +43 -1
  135. package/src/sap/fe/core/messagebundle_kk.properties +43 -1
  136. package/src/sap/fe/core/messagebundle_ko.properties +43 -1
  137. package/src/sap/fe/core/messagebundle_lt.properties +43 -1
  138. package/src/sap/fe/core/messagebundle_lv.properties +43 -1
  139. package/src/sap/fe/core/messagebundle_ms.properties +43 -1
  140. package/src/sap/fe/core/messagebundle_nl.properties +47 -5
  141. package/src/sap/fe/core/messagebundle_no.properties +44 -2
  142. package/src/sap/fe/core/messagebundle_pl.properties +43 -1
  143. package/src/sap/fe/core/messagebundle_pt.properties +43 -1
  144. package/src/sap/fe/core/messagebundle_pt_PT.properties +43 -1
  145. package/src/sap/fe/core/messagebundle_ro.properties +43 -1
  146. package/src/sap/fe/core/messagebundle_ru.properties +43 -1
  147. package/src/sap/fe/core/messagebundle_sh.properties +43 -1
  148. package/src/sap/fe/core/messagebundle_sk.properties +42 -0
  149. package/src/sap/fe/core/messagebundle_sl.properties +43 -1
  150. package/src/sap/fe/core/messagebundle_sv.properties +43 -1
  151. package/src/sap/fe/core/messagebundle_th.properties +42 -0
  152. package/src/sap/fe/core/messagebundle_tr.properties +42 -0
  153. package/src/sap/fe/core/messagebundle_uk.properties +42 -0
  154. package/src/sap/fe/core/messagebundle_vi.properties +43 -1
  155. package/src/sap/fe/core/messagebundle_zh_CN.properties +43 -1
  156. package/src/sap/fe/core/messagebundle_zh_TW.properties +43 -1
  157. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +5 -5
  158. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +5 -5
  159. package/src/sap/fe/core/services/RoutingServiceFactory.js +155 -76
  160. package/src/sap/fe/core/services/ShellServicesFactory.js +9 -9
  161. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +11 -12
  162. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +11 -1
  163. package/src/sap/fe/core/support/AnnotationIssue.support.js +2 -4
  164. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +2 -4
  165. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -4
  166. package/src/sap/fe/core/support/CommonHelper.js +2 -4
  167. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  168. package/src/sap/fe/core/templating/CriticalityFormatters.js +4 -4
  169. package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -1
  170. package/src/sap/fe/core/templating/DataModelPathHelper.js +54 -6
  171. package/src/sap/fe/core/templating/DataModelPathHelper.ts +54 -4
  172. package/src/sap/fe/core/templating/EntitySetHelper.js +13 -3
  173. package/src/sap/fe/core/templating/EntitySetHelper.ts +4 -0
  174. package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
  175. package/src/sap/fe/core/templating/FilterHelper.js +23 -5
  176. package/src/sap/fe/core/templating/FilterHelper.ts +15 -1
  177. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  178. package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
  179. package/src/sap/fe/core/templating/PropertyHelper.js +8 -8
  180. package/src/sap/fe/core/templating/UIFormatters.js +72 -4
  181. package/src/sap/fe/core/templating/UIFormatters.ts +98 -3
  182. package/src/sap/fe/core/type/Email.js +1 -1
@@ -17,13 +17,13 @@ sap.ui.define(["sap/ui/core/service/ServiceFactory", "sap/ui/core/service/Servic
17
17
 
18
18
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
19
19
 
20
- function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
20
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
21
21
 
22
22
  function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
23
23
 
24
24
  function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
25
25
 
26
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
26
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
27
27
 
28
28
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
29
29
 
@@ -40,8 +40,8 @@ sap.ui.define(["sap/ui/core/service/ServiceFactory", "sap/ui/core/service/Servic
40
40
 
41
41
  _createClass(EnvironmentCapabilitiesService, [{
42
42
  key: "init",
43
- // !: means that we know it will be assigned before usage
44
- value: function init() {
43
+ value: // !: means that we know it will be assigned before usage
44
+ function init() {
45
45
  var _this = this;
46
46
 
47
47
  this.initPromise = new Promise(function (resolve, reject) {
@@ -125,4 +125,4 @@ sap.ui.define(["sap/ui/core/service/ServiceFactory", "sap/ui/core/service/Servic
125
125
 
126
126
  return EnvironmentServiceFactory;
127
127
  }, false);
128
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVudmlyb25tZW50U2VydmljZUZhY3RvcnkudHMiXSwibmFtZXMiOlsiRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIiwiaW5pdFByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlc29sdmVGbiIsInJlamVjdEZuIiwib0NvbnRleHQiLCJnZXRDb250ZXh0IiwiZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJPYmplY3QiLCJhc3NpZ24iLCJEZWZhdWx0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJWZXJzaW9uSW5mbyIsImxvYWQiLCJ1bmRlZmluZWQiLCJ0aGVuIiwidmVyc2lvbkluZm8iLCJDaGFydCIsImxpYnJhcmllcyIsImZpbmQiLCJsaWIiLCJuYW1lIiwiTWljcm9DaGFydCIsIlVTaGVsbCIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsIkludGVudEJhc2VkTmF2aWdhdGlvbiIsInNldHRpbmdzIiwiY2F0Y2giLCJsaWJyYXJ5TmFtZSIsInVpIiwiZ2V0Q29yZSIsImxvYWRMaWJyYXJ5IiwicmVwbGFjZSIsImFzeW5jIiwiZSIsIm9DYXBhYmlsaXRpZXMiLCJTZXJ2aWNlIiwiRW52aXJvbm1lbnRTZXJ2aWNlRmFjdG9yeSIsIm9TZXJ2aWNlQ29udGV4dCIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSIsIlNlcnZpY2VGYWN0b3J5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQUlNQSw4Qjs7Ozs7Ozs7Ozs7OztBQUtMOzZCQUVPO0FBQUE7O0FBQ04sYUFBS0MsV0FBTCxHQUFtQixJQUFJQyxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQ25ELFVBQUEsS0FBSSxDQUFDQyxTQUFMLEdBQWlCRixPQUFqQjtBQUNBLFVBQUEsS0FBSSxDQUFDRyxRQUFMLEdBQWdCRixNQUFoQjtBQUNBLFNBSGtCLENBQW5CO0FBSUEsWUFBTUcsUUFBUSxHQUFHLEtBQUtDLFVBQUwsRUFBakI7QUFDQSxhQUFLQyx1QkFBTCxHQUErQkMsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQkMsOEJBQWxCLENBQS9CO0FBQ0FDLFFBQUFBLFdBQVcsQ0FBQ0MsSUFBWixDQUFpQkMsU0FBakIsRUFDRUMsSUFERixDQUNPLFVBQUFDLFdBQVcsRUFBSTtBQUNwQixVQUFBLEtBQUksQ0FBQ1IsdUJBQUwsQ0FBNkJTLEtBQTdCLEdBQXFDLENBQUMsQ0FBQ0QsV0FBVyxDQUFDRSxTQUFaLENBQXNCQyxJQUF0QixDQUEyQixVQUFDQyxHQUFEO0FBQUEsbUJBQWNBLEdBQUcsQ0FBQ0MsSUFBSixLQUFhLFNBQTNCO0FBQUEsV0FBM0IsQ0FBdkM7QUFDQSxVQUFBLEtBQUksQ0FBQ2IsdUJBQUwsQ0FBNkJjLFVBQTdCLEdBQTBDLENBQUMsQ0FBQ04sV0FBVyxDQUFDRSxTQUFaLENBQXNCQyxJQUF0QixDQUMzQyxVQUFDQyxHQUFEO0FBQUEsbUJBQWNBLEdBQUcsQ0FBQ0MsSUFBSixLQUFhLHlCQUEzQjtBQUFBLFdBRDJDLENBQTVDO0FBR0EsVUFBQSxLQUFJLENBQUNiLHVCQUFMLENBQTZCZSxNQUE3QixHQUFzQyxDQUFDLEVBQUVDLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxNQUFYLElBQXFCRCxHQUFHLENBQUNDLE1BQUosQ0FBV0MsU0FBbEMsQ0FBdkM7QUFDQSxVQUFBLEtBQUksQ0FBQ2xCLHVCQUFMLENBQTZCbUIscUJBQTdCLEdBQXFELENBQUMsRUFBRUgsR0FBRyxJQUFJQSxHQUFHLENBQUNDLE1BQVgsSUFBcUJELEdBQUcsQ0FBQ0MsTUFBSixDQUFXQyxTQUFsQyxDQUF0RDtBQUNBLFVBQUEsS0FBSSxDQUFDbEIsdUJBQUwsR0FBK0JDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEtBQUksQ0FBQ0YsdUJBQW5CLEVBQTRDRixRQUFRLENBQUNzQixRQUFyRCxDQUEvQjs7QUFDQSxVQUFBLEtBQUksQ0FBQ3hCLFNBQUwsQ0FBZSxLQUFmO0FBQ0EsU0FWRixFQVdFeUIsS0FYRixDQVdRLEtBQUt4QixRQVhiO0FBWUE7OztxQ0FFY3lCLFcsRUFBdUM7QUFDckQsZUFBTyxJQUFJN0IsT0FBSixDQUFZLFVBQVNDLE9BQVQsRUFBa0I7QUFDcEMsY0FBSTtBQUNIc0IsWUFBQUEsR0FBRyxDQUFDTyxFQUFKLENBQ0VDLE9BREYsR0FFRUMsV0FGRixXQUVpQkgsV0FBVyxDQUFDSSxPQUFaLENBQW9CLEtBQXBCLEVBQTJCLEdBQTNCLENBRmpCLEdBRW9EO0FBQUVDLGNBQUFBLEtBQUssRUFBRTtBQUFULGFBRnBELEVBR0VwQixJQUhGLENBR08sWUFBVztBQUNoQmIsY0FBQUEsT0FBTyxDQUFDLElBQUQsQ0FBUDtBQUNBLGFBTEYsRUFNRTJCLEtBTkYsQ0FNUSxZQUFXO0FBQ2pCM0IsY0FBQUEsT0FBTyxDQUFDLEtBQUQsQ0FBUDtBQUNBLGFBUkY7QUFTQSxXQVZELENBVUUsT0FBT2tDLENBQVAsRUFBVTtBQUNYbEMsWUFBQUEsT0FBTyxDQUFDLEtBQUQsQ0FBUDtBQUNBO0FBQ0QsU0FkTSxDQUFQO0FBZUE7OztzQ0FFc0JtQyxhLEVBQXdDO0FBQzlELGFBQUs3Qix1QkFBTCxHQUErQjZCLGFBQS9CO0FBQ0E7Ozt3Q0FFd0I7QUFDeEIsZUFBTyxLQUFLN0IsdUJBQVo7QUFDQTs7O3FDQUVtQjtBQUNuQixlQUFPLElBQVA7QUFDQTs7OztJQXhEMkM4QixPOztNQTJEdkNDLHlCOzs7Ozs7Ozs7Ozs7O3FDQUNVQyxlLEVBQTBEO0FBQ3hFLFlBQU1DLDhCQUE4QixHQUFHLElBQUkxQyw4QkFBSixDQUFtQ3lDLGVBQW5DLENBQXZDO0FBQ0EsZUFBT0MsOEJBQThCLENBQUN6QyxXQUF0QztBQUNBOzs7O0lBSnNDMEMsYzs7U0FPekJILHlCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXJ2aWNlRmFjdG9yeSwgU2VydmljZSwgU2VydmljZUNvbnRleHQgfSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZVwiO1xuaW1wb3J0IHsgRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzLCBFbnZpcm9ubWVudENhcGFiaWxpdGllcyB9IGZyb20gXCIuLi9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgVmVyc2lvbkluZm8gfSBmcm9tIFwic2FwL3VpXCI7XG5cbmNsYXNzIEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSBleHRlbmRzIFNlcnZpY2U8RW52aXJvbm1lbnRDYXBhYmlsaXRpZXM+IHtcblx0cmVzb2x2ZUZuOiBhbnk7XG5cdHJlamVjdEZuOiBhbnk7XG5cdGluaXRQcm9taXNlITogUHJvbWlzZTxhbnk+O1xuXHRlbnZpcm9ubWVudENhcGFiaWxpdGllcyE6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzO1xuXHQvLyAhOiBtZWFucyB0aGF0IHdlIGtub3cgaXQgd2lsbCBiZSBhc3NpZ25lZCBiZWZvcmUgdXNhZ2VcblxuXHRpbml0KCkge1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHR0aGlzLnJlc29sdmVGbiA9IHJlc29sdmU7XG5cdFx0XHR0aGlzLnJlamVjdEZuID0gcmVqZWN0O1xuXHRcdH0pO1xuXHRcdGNvbnN0IG9Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cdFx0dGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcyA9IE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRFbnZpcm9ubWVudENhcGFiaWxpdGllcyk7XG5cdFx0VmVyc2lvbkluZm8ubG9hZCh1bmRlZmluZWQgYXMgYW55KVxuXHRcdFx0LnRoZW4odmVyc2lvbkluZm8gPT4ge1xuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzLkNoYXJ0ID0gISF2ZXJzaW9uSW5mby5saWJyYXJpZXMuZmluZCgobGliOiBhbnkpID0+IGxpYi5uYW1lID09PSBcInNhcC52aXpcIik7XG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMuTWljcm9DaGFydCA9ICEhdmVyc2lvbkluZm8ubGlicmFyaWVzLmZpbmQoXG5cdFx0XHRcdFx0KGxpYjogYW55KSA9PiBsaWIubmFtZSA9PT0gXCJzYXAuc3VpdGUudWkubWljcm9jaGFydFwiXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMuVVNoZWxsID0gISEoc2FwICYmIHNhcC51c2hlbGwgJiYgc2FwLnVzaGVsbC5Db250YWluZXIpO1xuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzLkludGVudEJhc2VkTmF2aWdhdGlvbiA9ICEhKHNhcCAmJiBzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyKTtcblx0XHRcdFx0dGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcyA9IE9iamVjdC5hc3NpZ24odGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcywgb0NvbnRleHQuc2V0dGluZ3MpO1xuXHRcdFx0XHR0aGlzLnJlc29sdmVGbih0aGlzKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2godGhpcy5yZWplY3RGbik7XG5cdH1cblxuXHRyZXNvbHZlTGlicmFyeShsaWJyYXJ5TmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHNhcC51aVxuXHRcdFx0XHRcdC5nZXRDb3JlKClcblx0XHRcdFx0XHQubG9hZExpYnJhcnkoYCR7bGlicmFyeU5hbWUucmVwbGFjZSgvXFwuL2csIFwiL1wiKX1gLCB7IGFzeW5jOiB0cnVlIH0pXG5cdFx0XHRcdFx0LnRoZW4oZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKHRydWUpO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmVzb2x2ZShmYWxzZSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHJlc29sdmUoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIHNldENhcGFiaWxpdGllcyhvQ2FwYWJpbGl0aWVzOiBFbnZpcm9ubWVudENhcGFiaWxpdGllcykge1xuXHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSBvQ2FwYWJpbGl0aWVzO1xuXHR9XG5cblx0cHVibGljIGdldENhcGFiaWxpdGllcygpIHtcblx0XHRyZXR1cm4gdGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcztcblx0fVxuXG5cdGdldEludGVyZmFjZSgpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5cbmNsYXNzIEVudmlyb25tZW50U2VydmljZUZhY3RvcnkgZXh0ZW5kcyBTZXJ2aWNlRmFjdG9yeTxFbnZpcm9ubWVudENhcGFiaWxpdGllcz4ge1xuXHRjcmVhdGVJbnN0YW5jZShvU2VydmljZUNvbnRleHQ6IFNlcnZpY2VDb250ZXh0PEVudmlyb25tZW50Q2FwYWJpbGl0aWVzPikge1xuXHRcdGNvbnN0IGVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSA9IG5ldyBFbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2Uob1NlcnZpY2VDb250ZXh0KTtcblx0XHRyZXR1cm4gZW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlLmluaXRQcm9taXNlO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVudmlyb25tZW50U2VydmljZUZhY3Rvcnk7XG4iXX0=
128
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVudmlyb25tZW50U2VydmljZUZhY3RvcnkudHMiXSwibmFtZXMiOlsiRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIiwiaW5pdFByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlc29sdmVGbiIsInJlamVjdEZuIiwib0NvbnRleHQiLCJnZXRDb250ZXh0IiwiZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJPYmplY3QiLCJhc3NpZ24iLCJEZWZhdWx0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJWZXJzaW9uSW5mbyIsImxvYWQiLCJ1bmRlZmluZWQiLCJ0aGVuIiwidmVyc2lvbkluZm8iLCJDaGFydCIsImxpYnJhcmllcyIsImZpbmQiLCJsaWIiLCJuYW1lIiwiTWljcm9DaGFydCIsIlVTaGVsbCIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsIkludGVudEJhc2VkTmF2aWdhdGlvbiIsInNldHRpbmdzIiwiY2F0Y2giLCJsaWJyYXJ5TmFtZSIsInVpIiwiZ2V0Q29yZSIsImxvYWRMaWJyYXJ5IiwicmVwbGFjZSIsImFzeW5jIiwiZSIsIm9DYXBhYmlsaXRpZXMiLCJTZXJ2aWNlIiwiRW52aXJvbm1lbnRTZXJ2aWNlRmFjdG9yeSIsIm9TZXJ2aWNlQ29udGV4dCIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSIsIlNlcnZpY2VGYWN0b3J5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQUVNQSw4Qjs7Ozs7Ozs7Ozs7OzthQUtMO0FBRUEsc0JBQU87QUFBQTs7QUFDTixhQUFLQyxXQUFMLEdBQW1CLElBQUlDLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDbkQsVUFBQSxLQUFJLENBQUNDLFNBQUwsR0FBaUJGLE9BQWpCO0FBQ0EsVUFBQSxLQUFJLENBQUNHLFFBQUwsR0FBZ0JGLE1BQWhCO0FBQ0EsU0FIa0IsQ0FBbkI7QUFJQSxZQUFNRyxRQUFRLEdBQUcsS0FBS0MsVUFBTCxFQUFqQjtBQUNBLGFBQUtDLHVCQUFMLEdBQStCQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCQyw4QkFBbEIsQ0FBL0I7QUFDQUMsUUFBQUEsV0FBVyxDQUFDQyxJQUFaLENBQWlCQyxTQUFqQixFQUNFQyxJQURGLENBQ08sVUFBQUMsV0FBVyxFQUFJO0FBQ3BCLFVBQUEsS0FBSSxDQUFDUix1QkFBTCxDQUE2QlMsS0FBN0IsR0FBcUMsQ0FBQyxDQUFDRCxXQUFXLENBQUNFLFNBQVosQ0FBc0JDLElBQXRCLENBQTJCLFVBQUNDLEdBQUQ7QUFBQSxtQkFBY0EsR0FBRyxDQUFDQyxJQUFKLEtBQWEsU0FBM0I7QUFBQSxXQUEzQixDQUF2QztBQUNBLFVBQUEsS0FBSSxDQUFDYix1QkFBTCxDQUE2QmMsVUFBN0IsR0FBMEMsQ0FBQyxDQUFDTixXQUFXLENBQUNFLFNBQVosQ0FBc0JDLElBQXRCLENBQzNDLFVBQUNDLEdBQUQ7QUFBQSxtQkFBY0EsR0FBRyxDQUFDQyxJQUFKLEtBQWEseUJBQTNCO0FBQUEsV0FEMkMsQ0FBNUM7QUFHQSxVQUFBLEtBQUksQ0FBQ2IsdUJBQUwsQ0FBNkJlLE1BQTdCLEdBQXNDLENBQUMsRUFBRUMsR0FBRyxJQUFJQSxHQUFHLENBQUNDLE1BQVgsSUFBcUJELEdBQUcsQ0FBQ0MsTUFBSixDQUFXQyxTQUFsQyxDQUF2QztBQUNBLFVBQUEsS0FBSSxDQUFDbEIsdUJBQUwsQ0FBNkJtQixxQkFBN0IsR0FBcUQsQ0FBQyxFQUFFSCxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsTUFBWCxJQUFxQkQsR0FBRyxDQUFDQyxNQUFKLENBQVdDLFNBQWxDLENBQXREO0FBQ0EsVUFBQSxLQUFJLENBQUNsQix1QkFBTCxHQUErQkMsTUFBTSxDQUFDQyxNQUFQLENBQWMsS0FBSSxDQUFDRix1QkFBbkIsRUFBNENGLFFBQVEsQ0FBQ3NCLFFBQXJELENBQS9COztBQUNBLFVBQUEsS0FBSSxDQUFDeEIsU0FBTCxDQUFlLEtBQWY7QUFDQSxTQVZGLEVBV0V5QixLQVhGLENBV1EsS0FBS3hCLFFBWGI7QUFZQTs7O2FBRUQsd0JBQWV5QixXQUFmLEVBQXNEO0FBQ3JELGVBQU8sSUFBSTdCLE9BQUosQ0FBWSxVQUFTQyxPQUFULEVBQWtCO0FBQ3BDLGNBQUk7QUFDSHNCLFlBQUFBLEdBQUcsQ0FBQ08sRUFBSixDQUNFQyxPQURGLEdBRUVDLFdBRkYsV0FFaUJILFdBQVcsQ0FBQ0ksT0FBWixDQUFvQixLQUFwQixFQUEyQixHQUEzQixDQUZqQixHQUVvRDtBQUFFQyxjQUFBQSxLQUFLLEVBQUU7QUFBVCxhQUZwRCxFQUdFcEIsSUFIRixDQUdPLFlBQVc7QUFDaEJiLGNBQUFBLE9BQU8sQ0FBQyxJQUFELENBQVA7QUFDQSxhQUxGLEVBTUUyQixLQU5GLENBTVEsWUFBVztBQUNqQjNCLGNBQUFBLE9BQU8sQ0FBQyxLQUFELENBQVA7QUFDQSxhQVJGO0FBU0EsV0FWRCxDQVVFLE9BQU9rQyxDQUFQLEVBQVU7QUFDWGxDLFlBQUFBLE9BQU8sQ0FBQyxLQUFELENBQVA7QUFDQTtBQUNELFNBZE0sQ0FBUDtBQWVBOzs7YUFFRCx5QkFBdUJtQyxhQUF2QixFQUErRDtBQUM5RCxhQUFLN0IsdUJBQUwsR0FBK0I2QixhQUEvQjtBQUNBOzs7YUFFRCwyQkFBeUI7QUFDeEIsZUFBTyxLQUFLN0IsdUJBQVo7QUFDQTs7O2FBRUQsd0JBQW9CO0FBQ25CLGVBQU8sSUFBUDtBQUNBOzs7O0lBeEQyQzhCLE87O01BMkR2Q0MseUI7Ozs7Ozs7Ozs7Ozs7YUFDTCx3QkFBZUMsZUFBZixFQUF5RTtBQUN4RSxZQUFNQyw4QkFBOEIsR0FBRyxJQUFJMUMsOEJBQUosQ0FBbUN5QyxlQUFuQyxDQUF2QztBQUNBLGVBQU9DLDhCQUE4QixDQUFDekMsV0FBdEM7QUFDQTs7OztJQUpzQzBDLGM7O1NBT3pCSCx5QiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VydmljZUZhY3RvcnksIFNlcnZpY2UsIFNlcnZpY2VDb250ZXh0IH0gZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2VcIjtcbmltcG9ydCB7IERlZmF1bHRFbnZpcm9ubWVudENhcGFiaWxpdGllcywgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgfSBmcm9tIFwiLi4vY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IFZlcnNpb25JbmZvIH0gZnJvbSBcInNhcC91aVwiO1xuXG5jbGFzcyBFbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPEVudmlyb25tZW50Q2FwYWJpbGl0aWVzPiB7XG5cdHJlc29sdmVGbjogYW55O1xuXHRyZWplY3RGbjogYW55O1xuXHRpbml0UHJvbWlzZSE6IFByb21pc2U8YW55Pjtcblx0ZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMhOiBFbnZpcm9ubWVudENhcGFiaWxpdGllcztcblx0Ly8gITogbWVhbnMgdGhhdCB3ZSBrbm93IGl0IHdpbGwgYmUgYXNzaWduZWQgYmVmb3JlIHVzYWdlXG5cblx0aW5pdCgpIHtcblx0XHR0aGlzLmluaXRQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0dGhpcy5yZXNvbHZlRm4gPSByZXNvbHZlO1xuXHRcdFx0dGhpcy5yZWplY3RGbiA9IHJlamVjdDtcblx0XHR9KTtcblx0XHRjb25zdCBvQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSBPYmplY3QuYXNzaWduKHt9LCBEZWZhdWx0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMpO1xuXHRcdFZlcnNpb25JbmZvLmxvYWQodW5kZWZpbmVkIGFzIGFueSlcblx0XHRcdC50aGVuKHZlcnNpb25JbmZvID0+IHtcblx0XHRcdFx0dGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcy5DaGFydCA9ICEhdmVyc2lvbkluZm8ubGlicmFyaWVzLmZpbmQoKGxpYjogYW55KSA9PiBsaWIubmFtZSA9PT0gXCJzYXAudml6XCIpO1xuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzLk1pY3JvQ2hhcnQgPSAhIXZlcnNpb25JbmZvLmxpYnJhcmllcy5maW5kKFxuXHRcdFx0XHRcdChsaWI6IGFueSkgPT4gbGliLm5hbWUgPT09IFwic2FwLnN1aXRlLnVpLm1pY3JvY2hhcnRcIlxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzLlVTaGVsbCA9ICEhKHNhcCAmJiBzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyKTtcblx0XHRcdFx0dGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcy5JbnRlbnRCYXNlZE5hdmlnYXRpb24gPSAhIShzYXAgJiYgc2FwLnVzaGVsbCAmJiBzYXAudXNoZWxsLkNvbnRhaW5lcik7XG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSBPYmplY3QuYXNzaWduKHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMsIG9Db250ZXh0LnNldHRpbmdzKTtcblx0XHRcdFx0dGhpcy5yZXNvbHZlRm4odGhpcyk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKHRoaXMucmVqZWN0Rm4pO1xuXHR9XG5cblx0cmVzb2x2ZUxpYnJhcnkobGlicmFyeU5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRzYXAudWlcblx0XHRcdFx0XHQuZ2V0Q29yZSgpXG5cdFx0XHRcdFx0LmxvYWRMaWJyYXJ5KGAke2xpYnJhcnlOYW1lLnJlcGxhY2UoL1xcLi9nLCBcIi9cIil9YCwgeyBhc3luYzogdHJ1ZSB9KVxuXHRcdFx0XHRcdC50aGVuKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJlc29sdmUoZmFsc2UpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRyZXNvbHZlKGZhbHNlKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBzZXRDYXBhYmlsaXRpZXMob0NhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXMpIHtcblx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzID0gb0NhcGFiaWxpdGllcztcblx0fVxuXG5cdHB1YmxpYyBnZXRDYXBhYmlsaXRpZXMoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXM7XG5cdH1cblxuXHRnZXRJbnRlcmZhY2UoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuXG5jbGFzcyBFbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5IGV4dGVuZHMgU2VydmljZUZhY3Rvcnk8RW52aXJvbm1lbnRDYXBhYmlsaXRpZXM+IHtcblx0Y3JlYXRlSW5zdGFuY2Uob1NlcnZpY2VDb250ZXh0OiBTZXJ2aWNlQ29udGV4dDxFbnZpcm9ubWVudENhcGFiaWxpdGllcz4pIHtcblx0XHRjb25zdCBlbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2UgPSBuZXcgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlKG9TZXJ2aWNlQ29udGV4dCk7XG5cdFx0cmV0dXJuIGVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZS5pbml0UHJvbWlzZTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBFbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5O1xuIl19
@@ -71,10 +71,11 @@ sap.ui.define(
71
71
 
72
72
  this.initPromise = Promise.resolve(that);
73
73
  },
74
-
75
- exit: function() {
74
+ beforeExit: function() {
76
75
  this.oRouter.detachRouteMatched(this._fnOnRouteMatched);
77
76
  this.eventProvider.fireEvent("routeMatched", {});
77
+ },
78
+ exit: function() {
78
79
  this.eventProvider.destroy();
79
80
  },
80
81
 
@@ -113,7 +114,7 @@ sap.ui.define(
113
114
 
114
115
  // Check route pattern: all patterns need to end with ':?query:', that we use for parameters
115
116
  if (sRoutePattern.length < 8 || sRoutePattern.indexOf(":?query:") !== sRoutePattern.length - 8) {
116
- Log.error("Pattern for route " + sRouteName + " doesn't end with ':?query:' : " + sRoutePattern);
117
+ Log.warning("Pattern for route " + sRouteName + " doesn't end with ':?query:' : " + sRoutePattern);
117
118
  }
118
119
  var iRouteLevel = that._getViewLevelFromPattern(sRoutePattern, 0);
119
120
  that._mRoutes[sRouteName] = {
@@ -335,56 +336,74 @@ sap.ui.define(
335
336
  },
336
337
 
337
338
  navigateTo: function(oContext, sRouteName, mParameterMapping, bPreserveHistory) {
338
- var sTargetURL;
339
+ var sTargetURLPromise;
339
340
  if (!mParameterMapping) {
340
341
  // if there is no parameter mapping define this mean we rely entirely on the binding context path
341
- sTargetURL = SemanticKeyHelper.getSemanticPath(oContext);
342
+ sTargetURLPromise = Promise.resolve(SemanticKeyHelper.getSemanticPath(oContext));
342
343
  } else {
343
- var mParameters = this.prepareParameters(mParameterMapping, sRouteName, oContext);
344
- sTargetURL = this.oRouter.getURL(sRouteName, mParameters);
344
+ sTargetURLPromise = this.prepareParameters(mParameterMapping, sRouteName, oContext).then(
345
+ function(mParameters) {
346
+ return this.oRouter.getURL(sRouteName, mParameters);
347
+ }.bind(this)
348
+ );
345
349
  }
346
- this.oRouterProxy.navToHash(sTargetURL, bPreserveHistory);
350
+ return sTargetURLPromise.then(
351
+ function(sTargetURL) {
352
+ this.oRouterProxy.navToHash(sTargetURL, bPreserveHistory);
353
+ }.bind(this)
354
+ );
347
355
  },
348
356
 
349
357
  /**
350
- * Will take a parameters map [k: string] : ComplexBindingSyntax.
351
- * and return a map where the binding syntax is resolved to the current model.
352
- * Additionally, relative path are supported.
358
+ * Method to return a map of routing target parameters where the binding syntax is resolved to the current model.
353
359
  *
354
- * @param mParameters
355
- * @param sTargetRoute
356
- * @param oContext
357
- * @returns {{}}
360
+ * @param {object} mParameters Parameters map in the format [k: string] : ComplexBindingSyntax
361
+ * @param {string} sTargetRoute Name of the target route
362
+ * @param {object} oContext The instance of the binding context
363
+ * @returns {Promise} A promise which resolves to the routing target parameters
358
364
  */
359
365
  prepareParameters: function(mParameters, sTargetRoute, oContext) {
360
- var oParameters;
366
+ var oParametersPromise;
361
367
  try {
362
368
  var sContextPath = oContext.getPath();
363
369
  var aContextPathParts = sContextPath.split("/");
364
- oParameters = Object.keys(mParameters).reduce(function(oReducer, sParameterKey) {
365
- var sParameterMappingExpression = mParameters[sParameterKey];
366
- // We assume the defined parameters will be compatible with a binding expression
367
- var oParsedExpression = BindingParser.complexParser(sParameterMappingExpression);
368
- var aParts = oParsedExpression.parts || [oParsedExpression];
369
- var aResolvedParameters = aParts.map(function(oPathPart) {
370
- var aRelativeParts = oPathPart.path.split("../");
371
- // We go up the current context path as many times as necessary
372
- var aLocalParts = aContextPathParts.slice(0, aContextPathParts.length - aRelativeParts.length + 1);
373
- aLocalParts.push(aRelativeParts[aRelativeParts.length - 1]);
374
- return oContext.getObject(aLocalParts.join("/"));
370
+ var aAllResolvedParameterPromises = Object.keys(mParameters).map(
371
+ function(sParameterKey) {
372
+ var sParameterMappingExpression = mParameters[sParameterKey];
373
+ // We assume the defined parameters will be compatible with a binding expression
374
+ var oParsedExpression = BindingParser.complexParser(sParameterMappingExpression);
375
+ var aParts = oParsedExpression.parts || [oParsedExpression];
376
+ var aResolvedParameterPromises = aParts.map(function(oPathPart) {
377
+ var aRelativeParts = oPathPart.path.split("../");
378
+ // We go up the current context path as many times as necessary
379
+ var aLocalParts = aContextPathParts.slice(0, aContextPathParts.length - aRelativeParts.length + 1);
380
+ aLocalParts.push(aRelativeParts[aRelativeParts.length - 1]);
381
+ return oContext.requestProperty(aLocalParts.join("/"));
382
+ });
383
+
384
+ return Promise.all(aResolvedParameterPromises).then(
385
+ function(aResolvedParameters) {
386
+ var value = oParsedExpression.formatter
387
+ ? oParsedExpression.formatter.apply(this, aResolvedParameters)
388
+ : aResolvedParameters.join("");
389
+ return { key: sParameterKey, value: value };
390
+ }.bind(this)
391
+ );
392
+ }.bind(this)
393
+ );
394
+
395
+ oParametersPromise = Promise.all(aAllResolvedParameterPromises).then(function(aAllResolvedParameters) {
396
+ var oParameters = {};
397
+ aAllResolvedParameters.forEach(function(oResolvedParameter) {
398
+ oParameters[oResolvedParameter.key] = oResolvedParameter.value;
375
399
  });
376
- if (oParsedExpression.formatter) {
377
- oReducer[sParameterKey] = oParsedExpression.formatter.apply(this, aResolvedParameters);
378
- } else {
379
- oReducer[sParameterKey] = aResolvedParameters.join("");
380
- }
381
- return oReducer;
382
- }, {});
383
- } catch (error) {
400
+ return oParameters;
401
+ });
402
+ } catch (oError) {
384
403
  Log.error("Could not parse the parameters for the navigation to route " + sTargetRoute);
385
- oParameters = undefined;
404
+ oParametersPromise = Promise.resolve(undefined);
386
405
  }
387
- return oParameters;
406
+ return oParametersPromise;
388
407
  },
389
408
 
390
409
  _fireRouteMatchEvents: function(mParameters) {
@@ -416,8 +435,7 @@ sap.ui.define(
416
435
  * @final
417
436
  */
418
437
  navigateToContext: function(oContext, mParameters, oViewData, oCurrentTargetInfo) {
419
- var sTargetRoute,
420
- oRouteParameters = null;
438
+ var sTargetRoute, oRouteParametersPromise;
421
439
 
422
440
  // Manage parameter mapping
423
441
  if (mParameters.targetPath && oViewData && oViewData.navigation) {
@@ -425,7 +443,7 @@ sap.ui.define(
425
443
  sTargetRoute = oRouteDetail.route;
426
444
 
427
445
  if (oRouteDetail.parameters) {
428
- oRouteParameters = this.prepareParameters(oRouteDetail.parameters, sTargetRoute, oContext);
446
+ oRouteParametersPromise = this.prepareParameters(oRouteDetail.parameters, sTargetRoute, oContext);
429
447
  }
430
448
  }
431
449
 
@@ -454,7 +472,8 @@ sap.ui.define(
454
472
  bTargetEditable: mParameters.editable,
455
473
  bPersistOPScroll: mParameters.bPersistOPScroll,
456
474
  useContext: mParameters.updateFCLLevel === -1 || mParameters.bRecreateContext ? undefined : oContext,
457
- bDraftNavigation: mParameters.bDraftNavigation
475
+ bDraftNavigation: mParameters.bDraftNavigation,
476
+ bShowPlaceholder: mParameters.showPlaceholder !== undefined ? mParameters.showPlaceholder : true
458
477
  };
459
478
 
460
479
  if (mParameters.checkNoHashChange) {
@@ -505,12 +524,15 @@ sap.ui.define(
505
524
  // Add the navigation parameters in the queue
506
525
  this.navigationInfoQueue.push(oNavigationInfo);
507
526
 
508
- if (sTargetRoute && oRouteParameters != null) {
509
- this.oRouter.navTo(sTargetRoute, oRouteParameters);
510
- return Promise.resolve();
511
- } else {
512
- return this.oRouterProxy.navToHash(sTargetPath, false, mParameters.noPreservationCache);
527
+ if (sTargetRoute && oRouteParametersPromise) {
528
+ return oRouteParametersPromise.then(
529
+ function(oRouteParameters) {
530
+ this.oRouter.navTo(sTargetRoute, oRouteParameters);
531
+ return Promise.resolve();
532
+ }.bind(this)
533
+ );
513
534
  }
535
+ return this.oRouterProxy.navToHash(sTargetPath, false, mParameters.noPreservationCache);
514
536
  },
515
537
 
516
538
  /**
@@ -553,6 +575,25 @@ sap.ui.define(
553
575
  }
554
576
  },
555
577
 
578
+ _checkContextForSemanticPath: function(oContext) {
579
+ var sPath = oContext.getPath();
580
+
581
+ // First, check if this is a level-1 object (path = /aaa(bbb))
582
+ if (!/^\/[^\(]+\([^\)]+\)$/.test(sPath)) {
583
+ return false;
584
+ }
585
+
586
+ // Then check if the entity has semantic keys
587
+ var oMetaModel = oContext.getModel().getMetaModel(),
588
+ sEntitySetName = oMetaModel.getMetaContext(oContext.getPath()).getObject("@sapui.name");
589
+ if (!SemanticKeyHelper.getSemanticKeys(oMetaModel, sEntitySetName)) {
590
+ return false;
591
+ }
592
+
593
+ // Then check the entity is draft-enabled
594
+ return ModelHelper.isDraftSupported(oMetaModel, sPath);
595
+ },
596
+
556
597
  _getPathFromContext: function(oContext, mParameters) {
557
598
  var sPath;
558
599
 
@@ -570,14 +611,19 @@ sap.ui.define(
570
611
  if (this.oLastSemanticMapping && this.oLastSemanticMapping.technicalPath === sPath) {
571
612
  sPath = this.oLastSemanticMapping.semanticPath;
572
613
  }
573
- } else if (ModelHelper.isDraftSupported(oContext.getModel().getMetaModel(), oContext.getPath())) {
614
+ } else if (this._checkContextForSemanticPath(oContext)) {
574
615
  // We check if we have to use a semantic path
575
- var sSemanticPath = SemanticKeyHelper.getSemanticPath(oContext);
576
-
577
- if (sSemanticPath !== sPath) {
616
+ var sSemanticPath = SemanticKeyHelper.getSemanticPath(oContext, true);
617
+
618
+ if (!sSemanticPath) {
619
+ // We were not able to build the semantic path --> Use the technical path and
620
+ // clear the previous mapping, otherwise the old mapping is used in EditFlow#updateDocument
621
+ // and it leads to unwanted page reloads
622
+ this.setLastSemanticMapping(undefined);
623
+ } else if (sSemanticPath !== sPath) {
578
624
  // Store the mapping technical <-> semantic path to avoid recalculating it later
579
625
  // and use the semantic path instead of the technical one
580
- this.oLastSemanticMapping = { technicalPath: sPath, semanticPath: sSemanticPath };
626
+ this.setLastSemanticMapping({ technicalPath: sPath, semanticPath: sSemanticPath });
581
627
  sPath = sSemanticPath;
582
628
  }
583
629
  }
@@ -731,9 +777,13 @@ sap.ui.define(
731
777
  // Manage startup parameters (in case of no iapp-state)
732
778
  if (!bIsIappState && bHasStartUpParameters) {
733
779
  var sHash = that.oRouter.getHashChanger().getHash();
734
- if (oStartupParameters.preferredMode && oStartupParameters.preferredMode[0] === "create" && !sHash) {
780
+ if (
781
+ oStartupParameters.preferredMode &&
782
+ oStartupParameters.preferredMode[0].indexOf("create") !== -1 &&
783
+ !sHash
784
+ ) {
735
785
  // Logic for create mode
736
- return that._managePreferredModeCreateStartup();
786
+ return that._managePreferredModeCreateStartup(oStartupParameters);
737
787
  } else {
738
788
  return that._manageDeeplinkStartup(oStartupParameters);
739
789
  }
@@ -746,9 +796,17 @@ sap.ui.define(
746
796
  return initPromise;
747
797
  },
748
798
 
749
- getDefaultCreateHash: function() {
750
- var sContextPath = this.getContextPath();
751
- var sHash = sContextPath.substring(1) + "(...)?i-action=create";
799
+ getDefaultCreateHash: function(oStartupParameters) {
800
+ var sContextPath = this.getContextPath(),
801
+ sDefaultCreateHash =
802
+ oStartupParameters && oStartupParameters.preferredMode ? oStartupParameters.preferredMode[0] : "create",
803
+ sHash;
804
+
805
+ sDefaultCreateHash =
806
+ sDefaultCreateHash.indexOf(":") !== -1 && sDefaultCreateHash.length > sDefaultCreateHash.indexOf(":") + 1
807
+ ? sDefaultCreateHash.substr(0, sDefaultCreateHash.indexOf(":"))
808
+ : "create";
809
+ sHash = sContextPath.substring(1) + "(...)?i-action=" + sDefaultCreateHash;
752
810
  if (this.oRouter.getRouteInfoByHash(sHash)) {
753
811
  return sHash;
754
812
  } else {
@@ -756,7 +814,7 @@ sap.ui.define(
756
814
  }
757
815
  },
758
816
 
759
- _managePreferredModeCreateStartup: function() {
817
+ _managePreferredModeCreateStartup: function(oStartupParameters) {
760
818
  var that = this;
761
819
  return this.oMetaModel
762
820
  .requestObject(this.getContextPath() + "@")
@@ -790,7 +848,7 @@ sap.ui.define(
790
848
  }
791
849
  }
792
850
  if (bCreatable) {
793
- var sPath = that.getDefaultCreateHash();
851
+ var sPath = that.getDefaultCreateHash(oStartupParameters);
794
852
  that.oRouter.getHashChanger().replaceHash(sPath);
795
853
  that.bExitOnNavigateBackToRoot = true;
796
854
  }
@@ -800,6 +858,31 @@ sap.ui.define(
800
858
  });
801
859
  },
802
860
 
861
+ _requestObjectsFromParameters: function(oStartUpParameters, aExternallyNavigablePages) {
862
+ var that = this;
863
+
864
+ // Load the respective objects for all object pages found in aExternallyNavigablePages
865
+ var aContextPromises = aExternallyNavigablePages.map(function(oPage) {
866
+ var oCompleteFilter, oListBind;
867
+ if (oPage.isSemanticKeyNavigation) {
868
+ oCompleteFilter = that._createFilter(oPage.draft, oPage.semanticKeys, oStartUpParameters);
869
+ } else {
870
+ oCompleteFilter = that._createFilter(oPage.draft, oPage.technicalKeys, oStartUpParameters);
871
+ }
872
+ // only request a minimum of fields to boost backend performance since this is only used to check if an object exists
873
+ oListBind = that.oModel.bindList(oPage.contextPath, undefined, undefined, oCompleteFilter, {
874
+ "$select": oPage.isSemanticKeyNavigation
875
+ ? oPage.semanticKeys.map(function(key) {
876
+ return key.$PropertyPath;
877
+ })
878
+ : oPage.technicalKeys
879
+ });
880
+ return oListBind.requestContexts(0, 2);
881
+ });
882
+
883
+ return Promise.all(aContextPromises);
884
+ },
885
+
803
886
  _manageDeeplinkStartup: function(oStartUpParameters) {
804
887
  var that = this,
805
888
  aExternallyNavigablePages;
@@ -813,19 +896,7 @@ sap.ui.define(
813
896
 
814
897
  aExternallyNavigablePages = that._findTargetPagesFromStartupParams(oLevelOfObjectPages, oStartUpParameters);
815
898
 
816
- // Load the respective objects for all object pages found in the previous step
817
- var aContextPromises = aExternallyNavigablePages.map(function(oPage) {
818
- var oCompleteFilter, oListBind;
819
- if (oPage.isSemanticKeyNavigation) {
820
- oCompleteFilter = that._createFilter(oPage.draft, oPage.semanticKeys, oStartUpParameters);
821
- } else {
822
- oCompleteFilter = that._createFilter(oPage.draft, oPage.technicalKeys, oStartUpParameters);
823
- }
824
- oListBind = that.oModel.bindList(oPage.contextPath, undefined, undefined, oCompleteFilter);
825
- return oListBind.requestContexts(0, 2);
826
- });
827
-
828
- return Promise.all(aContextPromises);
899
+ return that._requestObjectsFromParameters(oStartUpParameters, aExternallyNavigablePages);
829
900
  })
830
901
  .then(function(aValues) {
831
902
  if (aValues.length) {
@@ -958,13 +1029,14 @@ sap.ui.define(
958
1029
  /**
959
1030
  * Creates the filter for the entity set.
960
1031
  *
961
- * @param {object} oDraftDetail The details of Draft Node
1032
+ * @param {object} oDraftDetail The details of draft node
962
1033
  * @param {Array} aKeys Array of semantic keys or technical keys of the page
963
- * @param {object} oStartUpParameters URL Parameters
1034
+ * @param {object} oStartUpParameters URL parameters
964
1035
  * @returns {object} Filters for the entity set
965
1036
  */
966
1037
  _createFilter: function(oDraftDetail, aKeys, oStartUpParameters) {
967
- var aFilters = [];
1038
+ var aFilters = [],
1039
+ bFilteringCaseSensitive = ModelHelper.isFilteringCaseSensitive(this.oMetaModel);
968
1040
 
969
1041
  for (var j = 0; j < aKeys.length; j++) {
970
1042
  var sProperty = aKeys[j].$PropertyPath;
@@ -977,7 +1049,14 @@ sap.ui.define(
977
1049
  }
978
1050
  var sValue = oStartUpParameters[sProperty][0];
979
1051
  if (sValue) {
980
- aFilters.push(new Filter(sProperty, FilterOperator.EQ, sValue));
1052
+ aFilters.push(
1053
+ new Filter({
1054
+ path: sProperty,
1055
+ operator: FilterOperator.EQ,
1056
+ value1: sValue,
1057
+ caseSensitive: bFilteringCaseSensitive
1058
+ })
1059
+ );
981
1060
  } else {
982
1061
  return undefined;
983
1062
  }
@@ -1030,7 +1109,7 @@ sap.ui.define(
1030
1109
  if (sSemanticPath !== sTechnicalPath) {
1031
1110
  // Store the mapping technical <-> semantic path to avoid recalculating it later
1032
1111
  // and use the semantic path instead of the technical one
1033
- this.oLastSemanticMapping = { technicalPath: sTechnicalPath, semanticPath: sSemanticPath };
1112
+ this.setLastSemanticMapping({ technicalPath: sTechnicalPath, semanticPath: sSemanticPath });
1034
1113
  }
1035
1114
 
1036
1115
  sHash = sSemanticPath.substring(1); // To remove the leading '/'