@sapui5/sap.fe.core 1.97.0 → 1.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/package.json +7 -4
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AnnotationHelper.js +309 -405
  4. package/src/sap/fe/core/AnnotationHelper.ts +315 -0
  5. package/src/sap/fe/core/AppComponent.js +389 -397
  6. package/src/sap/fe/core/AppComponent.ts +403 -0
  7. package/src/sap/fe/core/AppStateHandler.js +198 -181
  8. package/src/sap/fe/core/AppStateHandler.ts +171 -0
  9. package/src/sap/fe/core/BaseController.js +83 -58
  10. package/src/sap/fe/core/BaseController.ts +68 -0
  11. package/src/sap/fe/core/BusyLocker.js +105 -121
  12. package/src/sap/fe/core/BusyLocker.ts +98 -0
  13. package/src/sap/fe/core/CommonUtils.js +2164 -2379
  14. package/src/sap/fe/core/CommonUtils.ts +2177 -0
  15. package/src/sap/fe/core/ExtensionAPI.js +279 -266
  16. package/src/sap/fe/core/ExtensionAPI.ts +250 -0
  17. package/src/sap/fe/core/PageController.js +218 -125
  18. package/src/sap/fe/core/PageController.ts +129 -0
  19. package/src/sap/fe/core/RouterProxy.js +924 -807
  20. package/src/sap/fe/core/RouterProxy.ts +840 -0
  21. package/src/sap/fe/core/Synchronization.js +41 -35
  22. package/src/sap/fe/core/Synchronization.ts +29 -0
  23. package/src/sap/fe/core/TemplateComponent.js +173 -155
  24. package/src/sap/fe/core/TemplateComponent.ts +173 -0
  25. package/src/sap/fe/core/TemplateModel.js +79 -54
  26. package/src/sap/fe/core/TemplateModel.ts +63 -0
  27. package/src/sap/fe/core/TransactionHelper.js +1560 -1579
  28. package/src/sap/fe/core/TransactionHelper.ts +1717 -0
  29. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +392 -0
  30. package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
  31. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +136 -0
  32. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
  33. package/src/sap/fe/core/actions/collaboration/Manage.js +262 -0
  34. package/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
  35. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
  36. package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
  37. package/src/sap/fe/core/actions/draft.js +521 -581
  38. package/src/sap/fe/core/actions/draft.ts +566 -0
  39. package/src/sap/fe/core/actions/messageHandling.js +564 -511
  40. package/src/sap/fe/core/actions/messageHandling.ts +552 -0
  41. package/src/sap/fe/core/actions/nonDraft.js +17 -19
  42. package/src/sap/fe/core/actions/nonDraft.ts +12 -0
  43. package/src/sap/fe/core/actions/operations.js +1093 -1211
  44. package/src/sap/fe/core/actions/operations.ts +1192 -0
  45. package/src/sap/fe/core/actions/sticky.js +114 -104
  46. package/src/sap/fe/core/actions/sticky.ts +119 -0
  47. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +70 -66
  48. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
  49. package/src/sap/fe/core/controllerextensions/EditFlow.js +1594 -1701
  50. package/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
  51. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +80 -54
  52. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
  53. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +719 -505
  54. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
  55. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +797 -813
  56. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
  57. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1005 -973
  58. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
  59. package/src/sap/fe/core/controllerextensions/KPIManagement.js +530 -476
  60. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +137 -46
  61. package/src/sap/fe/core/controllerextensions/MassEdit.js +144 -0
  62. package/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
  63. package/src/sap/fe/core/controllerextensions/MessageHandler.js +234 -232
  64. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
  65. package/src/sap/fe/core/controllerextensions/PageReady.js +302 -337
  66. package/src/sap/fe/core/controllerextensions/PageReady.ts +23 -17
  67. package/src/sap/fe/core/controllerextensions/Paginator.js +189 -148
  68. package/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
  69. package/src/sap/fe/core/controllerextensions/Placeholder.js +158 -146
  70. package/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
  71. package/src/sap/fe/core/controllerextensions/Routing.js +145 -106
  72. package/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
  73. package/src/sap/fe/core/controllerextensions/RoutingListener.js +8 -6
  74. package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
  75. package/src/sap/fe/core/controllerextensions/Share.js +220 -244
  76. package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
  77. package/src/sap/fe/core/controllerextensions/SideEffects.js +593 -634
  78. package/src/sap/fe/core/controllerextensions/SideEffects.ts +29 -27
  79. package/src/sap/fe/core/controllerextensions/ViewState.js +789 -806
  80. package/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
  81. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +4 -3
  82. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
  83. package/src/sap/fe/core/controls/CommandExecution.js +68 -66
  84. package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
  85. package/src/sap/fe/core/controls/ConditionalWrapper.js +91 -75
  86. package/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
  87. package/src/sap/fe/core/controls/CustomQuickViewPage.js +131 -125
  88. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
  89. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +105 -110
  90. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
  91. package/src/sap/fe/core/controls/FieldWrapper.js +122 -140
  92. package/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
  93. package/src/sap/fe/core/controls/FilterBar.js +163 -159
  94. package/src/sap/fe/core/controls/FilterBar.ts +143 -0
  95. package/src/sap/fe/core/controls/FormElementWrapper.js +46 -44
  96. package/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
  97. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +38 -42
  98. package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
  99. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +2 -1
  100. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +127 -116
  101. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
  102. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -255
  103. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
  104. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +151 -141
  105. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
  106. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +336 -322
  107. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
  108. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +106 -0
  109. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +79 -0
  110. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
  111. package/src/sap/fe/core/converters/ConverterContext.js +348 -367
  112. package/src/sap/fe/core/converters/ConverterContext.ts +33 -19
  113. package/src/sap/fe/core/converters/ManifestSettings.js +12 -1
  114. package/src/sap/fe/core/converters/ManifestSettings.ts +16 -1
  115. package/src/sap/fe/core/converters/ManifestWrapper.js +354 -354
  116. package/src/sap/fe/core/converters/ManifestWrapper.ts +34 -6
  117. package/src/sap/fe/core/converters/MetaModelConverter.js +72 -9
  118. package/src/sap/fe/core/converters/MetaModelConverter.ts +75 -16
  119. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  120. package/src/sap/fe/core/converters/TemplateConverter.ts +4 -3
  121. package/src/sap/fe/core/converters/annotations/DataField.js +28 -14
  122. package/src/sap/fe/core/converters/annotations/DataField.ts +38 -14
  123. package/src/sap/fe/core/converters/common/AnnotationConverter.js +33 -21
  124. package/src/sap/fe/core/converters/controls/Common/Action.js +11 -2
  125. package/src/sap/fe/core/converters/controls/Common/Action.ts +8 -2
  126. package/src/sap/fe/core/converters/controls/Common/Chart.js +5 -3
  127. package/src/sap/fe/core/converters/controls/Common/Chart.ts +11 -3
  128. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +3 -3
  129. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +2 -2
  130. package/src/sap/fe/core/converters/controls/Common/Form.js +21 -11
  131. package/src/sap/fe/core/converters/controls/Common/Form.ts +28 -6
  132. package/src/sap/fe/core/converters/controls/Common/KPI.js +69 -4
  133. package/src/sap/fe/core/converters/controls/Common/KPI.ts +75 -2
  134. package/src/sap/fe/core/converters/controls/Common/Table.js +507 -408
  135. package/src/sap/fe/core/converters/controls/Common/Table.ts +618 -500
  136. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +592 -0
  137. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +718 -0
  138. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +465 -59
  139. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +462 -72
  140. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +2 -2
  141. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +1 -1
  142. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +17 -9
  143. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +24 -9
  144. package/src/sap/fe/core/converters/helpers/Aggregation.js +118 -121
  145. package/src/sap/fe/core/converters/helpers/Aggregation.ts +28 -5
  146. package/src/sap/fe/core/converters/helpers/BindingHelper.js +20 -6
  147. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
  148. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +12 -1
  149. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
  150. package/src/sap/fe/core/converters/helpers/IssueManager.js +7 -1
  151. package/src/sap/fe/core/converters/helpers/IssueManager.ts +6 -0
  152. package/src/sap/fe/core/converters/helpers/Key.js +42 -57
  153. package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  154. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +28 -7
  155. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +23 -6
  156. package/src/sap/fe/core/converters/templates/ListReportConverter.js +20 -7
  157. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +36 -14
  158. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +7 -5
  159. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
  160. package/src/sap/fe/core/designtime/AppComponent.designtime.js +93 -90
  161. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
  162. package/src/sap/fe/core/formatters/CollaborationFormatter.js +104 -0
  163. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
  164. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  165. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +1 -1
  166. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  167. package/src/sap/fe/core/formatters/FPMFormatter.ts +4 -10
  168. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
  169. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -1
  170. package/src/sap/fe/core/formatters/TableFormatter.js +91 -29
  171. package/src/sap/fe/core/formatters/TableFormatter.ts +94 -28
  172. package/src/sap/fe/core/formatters/ValueFormatter.js +30 -5
  173. package/src/sap/fe/core/formatters/ValueFormatter.ts +30 -7
  174. package/src/sap/fe/core/fpm/Component.js +51 -54
  175. package/src/sap/fe/core/fpm/Component.ts +48 -0
  176. package/src/sap/fe/core/helpers/AppStartupHelper.js +373 -0
  177. package/src/sap/fe/core/helpers/AppStartupHelper.ts +417 -0
  178. package/src/sap/fe/core/helpers/BindingExpression.js +489 -442
  179. package/src/sap/fe/core/helpers/BindingExpression.ts +486 -469
  180. package/src/sap/fe/core/helpers/ClassSupport.js +212 -76
  181. package/src/sap/fe/core/helpers/ClassSupport.ts +198 -71
  182. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +64 -59
  183. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +52 -0
  184. package/src/sap/fe/core/helpers/EditState.js +81 -84
  185. package/src/sap/fe/core/helpers/EditState.ts +81 -0
  186. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +62 -48
  187. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +49 -0
  188. package/src/sap/fe/core/helpers/FPMHelper.js +52 -56
  189. package/src/sap/fe/core/helpers/FPMHelper.ts +62 -0
  190. package/src/sap/fe/core/helpers/KeepAliveHelper.js +4 -5
  191. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +10 -10
  192. package/src/sap/fe/core/helpers/MassEditHelper.js +604 -0
  193. package/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
  194. package/src/sap/fe/core/helpers/ModelHelper.js +253 -225
  195. package/src/sap/fe/core/helpers/ModelHelper.ts +250 -0
  196. package/src/sap/fe/core/helpers/PasteHelper.js +210 -132
  197. package/src/sap/fe/core/helpers/PasteHelper.ts +196 -0
  198. package/src/sap/fe/core/helpers/SemanticDateOperators.js +336 -313
  199. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +334 -0
  200. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +66 -67
  201. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +73 -0
  202. package/src/sap/fe/core/helpers/StableIdHelper.js +4 -7
  203. package/src/sap/fe/core/helpers/StableIdHelper.ts +2 -6
  204. package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
  205. package/src/sap/fe/core/jsx-runtime/jsx.ts +1 -1
  206. package/src/sap/fe/core/library.js +427 -425
  207. package/src/sap/fe/core/library.support.js +23 -27
  208. package/src/sap/fe/core/library.support.ts +23 -0
  209. package/src/sap/fe/core/library.ts +420 -0
  210. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +64 -0
  211. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +69 -0
  212. package/src/sap/fe/core/messagebundle.properties +78 -13
  213. package/src/sap/fe/core/messagebundle_ar.properties +58 -7
  214. package/src/sap/fe/core/messagebundle_bg.properties +58 -7
  215. package/src/sap/fe/core/messagebundle_ca.properties +58 -7
  216. package/src/sap/fe/core/messagebundle_cs.properties +59 -8
  217. package/src/sap/fe/core/messagebundle_cy.properties +58 -7
  218. package/src/sap/fe/core/messagebundle_da.properties +58 -7
  219. package/src/sap/fe/core/messagebundle_de.properties +58 -7
  220. package/src/sap/fe/core/messagebundle_el.properties +58 -7
  221. package/src/sap/fe/core/messagebundle_en.properties +57 -6
  222. package/src/sap/fe/core/messagebundle_en_GB.properties +57 -6
  223. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +61 -6
  224. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +58 -7
  225. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +58 -7
  226. package/src/sap/fe/core/messagebundle_es.properties +58 -7
  227. package/src/sap/fe/core/messagebundle_es_MX.properties +58 -7
  228. package/src/sap/fe/core/messagebundle_et.properties +58 -7
  229. package/src/sap/fe/core/messagebundle_fi.properties +60 -9
  230. package/src/sap/fe/core/messagebundle_fr.properties +64 -13
  231. package/src/sap/fe/core/messagebundle_fr_CA.properties +59 -8
  232. package/src/sap/fe/core/messagebundle_hi.properties +58 -7
  233. package/src/sap/fe/core/messagebundle_hr.properties +58 -7
  234. package/src/sap/fe/core/messagebundle_hu.properties +59 -8
  235. package/src/sap/fe/core/messagebundle_id.properties +61 -10
  236. package/src/sap/fe/core/messagebundle_it.properties +58 -7
  237. package/src/sap/fe/core/messagebundle_iw.properties +58 -7
  238. package/src/sap/fe/core/messagebundle_ja.properties +58 -7
  239. package/src/sap/fe/core/messagebundle_kk.properties +58 -7
  240. package/src/sap/fe/core/messagebundle_ko.properties +58 -7
  241. package/src/sap/fe/core/messagebundle_lt.properties +58 -7
  242. package/src/sap/fe/core/messagebundle_lv.properties +59 -8
  243. package/src/sap/fe/core/messagebundle_ms.properties +58 -7
  244. package/src/sap/fe/core/messagebundle_nl.properties +58 -7
  245. package/src/sap/fe/core/messagebundle_no.properties +58 -7
  246. package/src/sap/fe/core/messagebundle_pl.properties +58 -7
  247. package/src/sap/fe/core/messagebundle_pt.properties +59 -8
  248. package/src/sap/fe/core/messagebundle_pt_PT.properties +58 -7
  249. package/src/sap/fe/core/messagebundle_ro.properties +58 -7
  250. package/src/sap/fe/core/messagebundle_ru.properties +58 -7
  251. package/src/sap/fe/core/messagebundle_sh.properties +58 -7
  252. package/src/sap/fe/core/messagebundle_sk.properties +58 -7
  253. package/src/sap/fe/core/messagebundle_sl.properties +58 -7
  254. package/src/sap/fe/core/messagebundle_sv.properties +59 -8
  255. package/src/sap/fe/core/messagebundle_th.properties +58 -7
  256. package/src/sap/fe/core/messagebundle_tr.properties +60 -9
  257. package/src/sap/fe/core/messagebundle_uk.properties +58 -7
  258. package/src/sap/fe/core/messagebundle_vi.properties +58 -7
  259. package/src/sap/fe/core/messagebundle_zh_CN.properties +58 -7
  260. package/src/sap/fe/core/messagebundle_zh_TW.properties +58 -7
  261. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +45 -71
  262. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
  263. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +231 -202
  264. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +212 -0
  265. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +67 -92
  266. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +10 -6
  267. package/src/sap/fe/core/services/NavigationServiceFactory.js +351 -300
  268. package/src/sap/fe/core/services/NavigationServiceFactory.ts +313 -0
  269. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +114 -81
  270. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +83 -0
  271. package/src/sap/fe/core/services/RoutingServiceFactory.js +927 -1152
  272. package/src/sap/fe/core/services/RoutingServiceFactory.ts +898 -0
  273. package/src/sap/fe/core/services/ShellServicesFactory.js +649 -707
  274. package/src/sap/fe/core/services/ShellServicesFactory.ts +52 -15
  275. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +569 -637
  276. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +78 -102
  277. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +429 -478
  278. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +460 -0
  279. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +10 -8
  280. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +8 -0
  281. package/src/sap/fe/core/support/AnnotationIssue.support.js +15 -3
  282. package/src/sap/fe/core/support/AnnotationIssue.support.ts +16 -2
  283. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -2
  284. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +1 -1
  285. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  286. package/src/sap/fe/core/support/CommonHelper.ts +1 -1
  287. package/src/sap/fe/core/support/Diagnostics.js +36 -48
  288. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +38 -0
  289. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +18 -0
  290. package/src/sap/fe/core/templating/DataModelPathHelper.js +97 -127
  291. package/src/sap/fe/core/templating/DataModelPathHelper.ts +112 -135
  292. package/src/sap/fe/core/templating/DisplayModeFormatter.js +114 -0
  293. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +86 -0
  294. package/src/sap/fe/core/templating/FieldControlHelper.js +8 -8
  295. package/src/sap/fe/core/templating/FieldControlHelper.ts +25 -7
  296. package/src/sap/fe/core/templating/FilterHelper.js +140 -78
  297. package/src/sap/fe/core/templating/FilterHelper.ts +149 -78
  298. package/src/sap/fe/core/templating/PropertyHelper.js +3 -3
  299. package/src/sap/fe/core/templating/PropertyHelper.ts +2 -2
  300. package/src/sap/fe/core/templating/UIFormatters.js +76 -135
  301. package/src/sap/fe/core/templating/UIFormatters.ts +76 -99
  302. package/src/sap/fe/core/type/Email.js +1 -1
  303. package/src/sap/fe/core/type/Email.ts +4 -6
  304. package/ui5.yaml +0 -3
  305. package/src/sap/fe/core/controls/filterbar.d.js +0 -8
  306. package/src/sap/fe/core/controls/filterbar.d.ts +0 -0
@@ -0,0 +1,212 @@
1
+ import Service from "sap/ui/core/service/Service";
2
+ import ServiceFactory from "sap/ui/core/service/ServiceFactory";
3
+ import CacheManager from "sap/ui/core/cache/CacheManager";
4
+ import hash from "sap/base/strings/hash";
5
+ import { ServiceContext } from "sap/ui/core/service";
6
+ import jQuery from "sap/ui/thirdparty/jquery";
7
+ import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
8
+ import AppComponent from "sap/fe/core/AppComponent";
9
+ import UIComponent from "sap/ui/core/UIComponent";
10
+
11
+ function getMetadataETag(sUrl: any, sETag: any, mUpdatedMetaModelETags: any) {
12
+ return new Promise(function(resolve) {
13
+ // There is an Url in the FE cache, that's not in the MetaModel yet -> we need to check the ETag
14
+ (jQuery as any)
15
+ .ajax(sUrl, { method: "GET" })
16
+ .done(function(oResponse: any, sTextStatus: any, jqXHR: any) {
17
+ // ETag is not the same -> invalid
18
+ // ETag is the same -> valid
19
+ // If ETag is available use it, otherwise use Last-Modified
20
+ mUpdatedMetaModelETags[sUrl] = jqXHR.getResponseHeader("ETag") || jqXHR.getResponseHeader("Last-Modified");
21
+ resolve(sETag === mUpdatedMetaModelETags[sUrl]);
22
+ })
23
+ .fail(function() {
24
+ // Case 2z - Make sure we update the map so that we invalidate the cache
25
+ mUpdatedMetaModelETags[sUrl] = "";
26
+ resolve(false);
27
+ });
28
+ });
29
+ }
30
+ type CacheHandlerServiceSettings = {
31
+ metaModel: ODataMetaModel;
32
+ };
33
+
34
+ export class CacheHandlerService extends Service<CacheHandlerServiceSettings> {
35
+ resolveFn: any;
36
+ rejectFn: any;
37
+ initPromise!: Promise<any>;
38
+
39
+ oFactory!: CacheHandlerServiceFactory;
40
+ oMetaModel!: ODataMetaModel;
41
+ oAppComponent!: AppComponent;
42
+ oComponent!: UIComponent;
43
+ mCacheNeedsInvalidate: any;
44
+
45
+ init() {
46
+ const oContext = this.getContext();
47
+ this.oFactory = oContext.factory;
48
+ const mSettings = oContext.settings;
49
+ if (!mSettings.metaModel) {
50
+ throw new Error("a `metaModel` property is expected when instantiating the CacheHandlerService");
51
+ }
52
+ this.oMetaModel = mSettings.metaModel;
53
+ this.oAppComponent = mSettings.appComponent;
54
+ this.oComponent = mSettings.component;
55
+ this.initPromise = (this.oMetaModel as any).fetchEntityContainer().then(() => {
56
+ return this;
57
+ });
58
+ this.mCacheNeedsInvalidate = {};
59
+ }
60
+ exit() {
61
+ // Deregister global instance
62
+ this.oFactory.removeGlobalInstance(this.oMetaModel);
63
+ }
64
+ validateCacheKey(sCacheIdentifier: any): Promise<string> {
65
+ // Keep track if the cache will anyway need to be updated
66
+ let bCacheNeedUpdate = true;
67
+ return CacheManager.get(sCacheIdentifier)
68
+ .then((mCacheOutput: any) => {
69
+ // We provide a default key so that an xml view cache is written
70
+ const mMetaModelETags = this.getETags();
71
+ let sUpdatedCacheKey: string | null = JSON.stringify(mMetaModelETags);
72
+ // Case #1a - No cache, so mCacheOuput is empty, cacheKey = current metamodel ETags
73
+ if (mCacheOutput) {
74
+ // Case #2 - Cache entry found, check if it's still valid
75
+ const mUpdatedMetaModelETags: any = {};
76
+ const mCachedETags = JSON.parse(mCacheOutput.cachedETags);
77
+ return Promise.all(
78
+ Object.keys(mCachedETags).map(function(sUrl: string) {
79
+ // Check validity of every single Url that's in the FE Cache object
80
+ if (mCachedETags[sUrl]) {
81
+ if (mMetaModelETags[sUrl]) {
82
+ // Case #2a - Same number of ETags in the cache and in the metadata
83
+ mUpdatedMetaModelETags[sUrl] = mMetaModelETags[sUrl];
84
+ return mCachedETags[sUrl] === mMetaModelETags[sUrl];
85
+ } else {
86
+ // Case #2b - No ETag in the cache for that URL, cachedETags was enhanced
87
+ return getMetadataETag(sUrl, mCachedETags[sUrl], mUpdatedMetaModelETags);
88
+ }
89
+ } else {
90
+ // Case #2z - Last Templating added an URL without ETag
91
+ mUpdatedMetaModelETags[sUrl] = mMetaModelETags[sUrl];
92
+ return mCachedETags[sUrl] === mMetaModelETags[sUrl];
93
+ }
94
+ })
95
+ ).then(function(aValidETags: any[]) {
96
+ bCacheNeedUpdate = aValidETags.indexOf(false) >= 0;
97
+ // Case #2a - Same number of ETags and all valid -> we return the viewCacheKey
98
+ // Case #2b - Different number of ETags and still all valid -> we return the viewCacheKey
99
+ // Case #2c - Same number of ETags but different values, main service Etag has changed, use that as cache key
100
+ // Case #2d - Different number of ETags but different value, main service Etag or linked service Etag has changed, new ETags should be used as cacheKey
101
+ // Case #2z - Cache has an invalid Etag - if there is an Etag provided from MetaModel use it as cacheKey
102
+ if (
103
+ Object.keys(mUpdatedMetaModelETags).some(function(sUrl: string) {
104
+ return !mUpdatedMetaModelETags[sUrl];
105
+ })
106
+ ) {
107
+ // At least one of the MetaModel URLs doesn't provide an ETag, so no caching
108
+ return null;
109
+ } else {
110
+ return bCacheNeedUpdate ? JSON.stringify(mUpdatedMetaModelETags) : mCacheOutput.viewCacheKey;
111
+ }
112
+ });
113
+ } else if (
114
+ Object.keys(mMetaModelETags).some(function(sUrl: string) {
115
+ return !mMetaModelETags[sUrl];
116
+ })
117
+ ) {
118
+ // Check if cache can be used (all the metadata and annotations have to provide at least a ETag or a Last-Modified header)
119
+ // Case #1-b - No Cache, mCacheOuput is empty, but metamodel etags cannot be used, so no caching
120
+ bCacheNeedUpdate = true;
121
+ sUpdatedCacheKey = null;
122
+ }
123
+ return sUpdatedCacheKey;
124
+ })
125
+ .catch(() => {
126
+ // Don't use view cache in case of issues with the LRU cache
127
+ bCacheNeedUpdate = true;
128
+ return null;
129
+ })
130
+ .then((sCacheKey: any) => {
131
+ this.mCacheNeedsInvalidate[sCacheIdentifier] = bCacheNeedUpdate;
132
+ return sCacheKey;
133
+ });
134
+ }
135
+ invalidateIfNeeded(sCacheKeys: string, sCacheIdentifier: string) {
136
+ // Check FE cache after XML view is processed completely
137
+ const sDataSourceETags = JSON.stringify(this.getETags());
138
+ if (this.mCacheNeedsInvalidate[sCacheIdentifier] || (sCacheKeys && sCacheKeys !== sDataSourceETags)) {
139
+ // Something in the sources and/or its ETags changed -> update the FE cache
140
+ const mCacheKeys: any = {};
141
+ // New ETags that need to be verified, may differ from the one used to generate the view
142
+ mCacheKeys.cachedETags = sDataSourceETags;
143
+ // Old ETags that are used for the xml view cache as key
144
+ mCacheKeys.viewCacheKey = sCacheKeys;
145
+ return CacheManager.set(sCacheIdentifier, mCacheKeys);
146
+ } else {
147
+ return Promise.resolve();
148
+ }
149
+ }
150
+ getETags() {
151
+ const mMetaModelETags = (this.oMetaModel as any).getETags();
152
+ // ETags from UI5 are either a Date or a string, let's rationalize that
153
+ Object.keys(mMetaModelETags).forEach(function(sMetaModelKey: string) {
154
+ if (mMetaModelETags[sMetaModelKey] instanceof Date) {
155
+ // MetaModel contains a Last-Modified timestamp for the URL
156
+ mMetaModelETags[sMetaModelKey] = mMetaModelETags[sMetaModelKey].toISOString();
157
+ }
158
+ });
159
+
160
+ // add also the manifest hash as UI5 only considers the root component hash
161
+ const oManifestContent: any = this.oAppComponent.getManifest();
162
+ const sManifestHash = hash(
163
+ JSON.stringify({
164
+ sapApp: oManifestContent["sap.app"],
165
+ viewData: (this.oComponent as any).getViewData()
166
+ })
167
+ );
168
+ mMetaModelETags["manifest"] = sManifestHash;
169
+ return mMetaModelETags;
170
+ }
171
+ getInterface(): any {
172
+ return this;
173
+ }
174
+ }
175
+
176
+ class CacheHandlerServiceFactory extends ServiceFactory<CacheHandlerServiceSettings> {
177
+ _oInstanceRegistry: Record<string, CacheHandlerService | null> = {};
178
+ createInstance(oServiceContext: ServiceContext<CacheHandlerServiceSettings>) {
179
+ const sMetaModelId = oServiceContext.settings.metaModel.getId();
180
+ let cacheHandlerInstance = this._oInstanceRegistry[sMetaModelId];
181
+ if (!cacheHandlerInstance) {
182
+ this._oInstanceRegistry[sMetaModelId] = cacheHandlerInstance = new CacheHandlerService(
183
+ Object.assign(
184
+ {
185
+ factory: this,
186
+ scopeObject: null,
187
+ scopeType: "service"
188
+ },
189
+ oServiceContext
190
+ )
191
+ );
192
+ }
193
+
194
+ return cacheHandlerInstance.initPromise
195
+ .then(() => {
196
+ return this._oInstanceRegistry[sMetaModelId] as CacheHandlerService;
197
+ })
198
+ .catch((e: any) => {
199
+ // In case of error delete the global instance;
200
+ this._oInstanceRegistry[sMetaModelId] = null;
201
+ throw e;
202
+ });
203
+ }
204
+ getInstance(oMetaModel: ODataMetaModel) {
205
+ return this._oInstanceRegistry[oMetaModel.getId()];
206
+ }
207
+ removeGlobalInstance(oMetaModel: ODataMetaModel) {
208
+ this._oInstanceRegistry[oMetaModel.getId()] = null;
209
+ }
210
+ }
211
+
212
+ export default CacheHandlerServiceFactory;
@@ -2,127 +2,102 @@
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(["sap/ui/core/service/ServiceFactory", "sap/ui/core/service/Service", "../converters/MetaModelConverter", "sap/ui/VersionInfo"], function (ServiceFactory, Service, MetaModelConverter, VersionInfo) {
5
+ sap.ui.define(["sap/ui/core/service/ServiceFactory", "sap/ui/core/service/Service", "../converters/MetaModelConverter", "sap/ui/VersionInfo", "sap/base/util/UriParameters"], function (ServiceFactory, Service, MetaModelConverter, VersionInfo, UriParameters) {
6
6
  "use strict";
7
7
 
8
+ var _exports = {};
8
9
  var DefaultEnvironmentCapabilities = MetaModelConverter.DefaultEnvironmentCapabilities;
9
10
 
10
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
-
12
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
13
-
14
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
15
-
16
11
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
17
12
 
18
13
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
19
14
 
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
-
22
- function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
23
-
24
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
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 { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
27
-
28
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
29
-
30
15
  var EnvironmentCapabilitiesService = /*#__PURE__*/function (_Service) {
31
16
  _inherits(EnvironmentCapabilitiesService, _Service);
32
17
 
33
- var _super = _createSuper(EnvironmentCapabilitiesService);
34
-
35
18
  function EnvironmentCapabilitiesService() {
36
- _classCallCheck(this, EnvironmentCapabilitiesService);
37
-
38
- return _super.apply(this, arguments);
19
+ return _Service.apply(this, arguments) || this;
39
20
  }
40
21
 
41
- _createClass(EnvironmentCapabilitiesService, [{
42
- key: "init",
43
- value: // !: means that we know it will be assigned before usage
44
- function init() {
45
- var _this = this;
46
-
47
- this.initPromise = new Promise(function (resolve, reject) {
48
- _this.resolveFn = resolve;
49
- _this.rejectFn = reject;
22
+ _exports.EnvironmentCapabilitiesService = EnvironmentCapabilitiesService;
23
+ var _proto = EnvironmentCapabilitiesService.prototype;
24
+
25
+ // !: means that we know it will be assigned before usage
26
+ _proto.init = function init() {
27
+ var _this = this;
28
+
29
+ this.initPromise = new Promise(function (resolve, reject) {
30
+ _this.resolveFn = resolve;
31
+ _this.rejectFn = reject;
32
+ });
33
+ var oContext = this.getContext();
34
+ this.environmentCapabilities = Object.assign({}, DefaultEnvironmentCapabilities);
35
+ VersionInfo.load(undefined).then(function (versionInfo) {
36
+ _this.environmentCapabilities.Chart = !!versionInfo.libraries.find(function (lib) {
37
+ return lib.name === "sap.viz";
50
38
  });
51
- var oContext = this.getContext();
52
- this.environmentCapabilities = Object.assign({}, DefaultEnvironmentCapabilities);
53
- VersionInfo.load(undefined).then(function (versionInfo) {
54
- _this.environmentCapabilities.Chart = !!versionInfo.libraries.find(function (lib) {
55
- return lib.name === "sap.viz";
56
- });
57
- _this.environmentCapabilities.MicroChart = !!versionInfo.libraries.find(function (lib) {
58
- return lib.name === "sap.suite.ui.microchart";
59
- });
60
- _this.environmentCapabilities.UShell = !!(sap && sap.ushell && sap.ushell.Container);
61
- _this.environmentCapabilities.IntentBasedNavigation = !!(sap && sap.ushell && sap.ushell.Container);
62
- _this.environmentCapabilities = Object.assign(_this.environmentCapabilities, oContext.settings);
63
-
64
- _this.resolveFn(_this);
65
- }).catch(this.rejectFn);
66
- }
67
- }, {
68
- key: "resolveLibrary",
69
- value: function resolveLibrary(libraryName) {
70
- return new Promise(function (resolve) {
71
- try {
72
- sap.ui.getCore().loadLibrary("".concat(libraryName.replace(/\./g, "/")), {
73
- async: true
74
- }).then(function () {
75
- resolve(true);
76
- }).catch(function () {
77
- resolve(false);
78
- });
79
- } catch (e) {
80
- resolve(false);
81
- }
39
+ _this.environmentCapabilities.MicroChart = !!versionInfo.libraries.find(function (lib) {
40
+ return lib.name === "sap.suite.ui.microchart";
82
41
  });
83
- }
84
- }, {
85
- key: "setCapabilities",
86
- value: function setCapabilities(oCapabilities) {
87
- this.environmentCapabilities = oCapabilities;
88
- }
89
- }, {
90
- key: "getCapabilities",
91
- value: function getCapabilities() {
92
- return this.environmentCapabilities;
93
- }
94
- }, {
95
- key: "getInterface",
96
- value: function getInterface() {
97
- return this;
98
- }
99
- }]);
42
+ _this.environmentCapabilities.UShell = !!(sap && sap.ushell && sap.ushell.Container);
43
+ _this.environmentCapabilities.IntentBasedNavigation = !!(sap && sap.ushell && sap.ushell.Container);
44
+ _this.environmentCapabilities.Situations = UriParameters.fromQuery(window.location.search).get("sap-fe-xx-situations") === "true";
45
+ _this.environmentCapabilities = Object.assign(_this.environmentCapabilities, oContext.settings);
46
+
47
+ _this.resolveFn(_this);
48
+ }).catch(this.rejectFn);
49
+ };
50
+
51
+ _proto.resolveLibrary = function resolveLibrary(libraryName) {
52
+ return new Promise(function (resolve) {
53
+ try {
54
+ sap.ui.getCore().loadLibrary("".concat(libraryName.replace(/\./g, "/")), {
55
+ async: true
56
+ }).then(function () {
57
+ resolve(true);
58
+ }).catch(function () {
59
+ resolve(false);
60
+ });
61
+ } catch (e) {
62
+ resolve(false);
63
+ }
64
+ });
65
+ };
66
+
67
+ _proto.setCapabilities = function setCapabilities(oCapabilities) {
68
+ this.environmentCapabilities = oCapabilities;
69
+ };
70
+
71
+ _proto.getCapabilities = function getCapabilities() {
72
+ return this.environmentCapabilities;
73
+ };
74
+
75
+ _proto.getInterface = function getInterface() {
76
+ return this;
77
+ };
100
78
 
101
79
  return EnvironmentCapabilitiesService;
102
80
  }(Service);
103
81
 
82
+ _exports.EnvironmentCapabilitiesService = EnvironmentCapabilitiesService;
83
+
104
84
  var EnvironmentServiceFactory = /*#__PURE__*/function (_ServiceFactory) {
105
85
  _inherits(EnvironmentServiceFactory, _ServiceFactory);
106
86
 
107
- var _super2 = _createSuper(EnvironmentServiceFactory);
108
-
109
87
  function EnvironmentServiceFactory() {
110
- _classCallCheck(this, EnvironmentServiceFactory);
111
-
112
- return _super2.apply(this, arguments);
88
+ return _ServiceFactory.apply(this, arguments) || this;
113
89
  }
114
90
 
115
- _createClass(EnvironmentServiceFactory, [{
116
- key: "createInstance",
117
- value: function createInstance(oServiceContext) {
118
- var environmentCapabilitiesService = new EnvironmentCapabilitiesService(oServiceContext);
119
- return environmentCapabilitiesService.initPromise;
120
- }
121
- }]);
91
+ var _proto2 = EnvironmentServiceFactory.prototype;
92
+
93
+ _proto2.createInstance = function createInstance(oServiceContext) {
94
+ var environmentCapabilitiesService = new EnvironmentCapabilitiesService(oServiceContext);
95
+ return environmentCapabilitiesService.initPromise;
96
+ };
122
97
 
123
98
  return EnvironmentServiceFactory;
124
99
  }(ServiceFactory);
125
100
 
126
101
  return EnvironmentServiceFactory;
127
102
  }, false);
128
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVudmlyb25tZW50U2VydmljZUZhY3RvcnkudHMiXSwibmFtZXMiOlsiRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIiwiaW5pdFByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlc29sdmVGbiIsInJlamVjdEZuIiwib0NvbnRleHQiLCJnZXRDb250ZXh0IiwiZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJPYmplY3QiLCJhc3NpZ24iLCJEZWZhdWx0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJWZXJzaW9uSW5mbyIsImxvYWQiLCJ1bmRlZmluZWQiLCJ0aGVuIiwidmVyc2lvbkluZm8iLCJDaGFydCIsImxpYnJhcmllcyIsImZpbmQiLCJsaWIiLCJuYW1lIiwiTWljcm9DaGFydCIsIlVTaGVsbCIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsIkludGVudEJhc2VkTmF2aWdhdGlvbiIsInNldHRpbmdzIiwiY2F0Y2giLCJsaWJyYXJ5TmFtZSIsInVpIiwiZ2V0Q29yZSIsImxvYWRMaWJyYXJ5IiwicmVwbGFjZSIsImFzeW5jIiwiZSIsIm9DYXBhYmlsaXRpZXMiLCJTZXJ2aWNlIiwiRW52aXJvbm1lbnRTZXJ2aWNlRmFjdG9yeSIsIm9TZXJ2aWNlQ29udGV4dCIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSIsIlNlcnZpY2VGYWN0b3J5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQUVNQSw4Qjs7Ozs7Ozs7Ozs7OzthQUtMO0FBRUEsc0JBQU87QUFBQTs7QUFDTixhQUFLQyxXQUFMLEdBQW1CLElBQUlDLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDbkQsVUFBQSxLQUFJLENBQUNDLFNBQUwsR0FBaUJGLE9BQWpCO0FBQ0EsVUFBQSxLQUFJLENBQUNHLFFBQUwsR0FBZ0JGLE1BQWhCO0FBQ0EsU0FIa0IsQ0FBbkI7QUFJQSxZQUFNRyxRQUFRLEdBQUcsS0FBS0MsVUFBTCxFQUFqQjtBQUNBLGFBQUtDLHVCQUFMLEdBQStCQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCQyw4QkFBbEIsQ0FBL0I7QUFDQUMsUUFBQUEsV0FBVyxDQUFDQyxJQUFaLENBQWlCQyxTQUFqQixFQUNFQyxJQURGLENBQ08sVUFBQUMsV0FBVyxFQUFJO0FBQ3BCLFVBQUEsS0FBSSxDQUFDUix1QkFBTCxDQUE2QlMsS0FBN0IsR0FBcUMsQ0FBQyxDQUFDRCxXQUFXLENBQUNFLFNBQVosQ0FBc0JDLElBQXRCLENBQTJCLFVBQUNDLEdBQUQ7QUFBQSxtQkFBY0EsR0FBRyxDQUFDQyxJQUFKLEtBQWEsU0FBM0I7QUFBQSxXQUEzQixDQUF2QztBQUNBLFVBQUEsS0FBSSxDQUFDYix1QkFBTCxDQUE2QmMsVUFBN0IsR0FBMEMsQ0FBQyxDQUFDTixXQUFXLENBQUNFLFNBQVosQ0FBc0JDLElBQXRCLENBQzNDLFVBQUNDLEdBQUQ7QUFBQSxtQkFBY0EsR0FBRyxDQUFDQyxJQUFKLEtBQWEseUJBQTNCO0FBQUEsV0FEMkMsQ0FBNUM7QUFHQSxVQUFBLEtBQUksQ0FBQ2IsdUJBQUwsQ0FBNkJlLE1BQTdCLEdBQXNDLENBQUMsRUFBRUMsR0FBRyxJQUFJQSxHQUFHLENBQUNDLE1BQVgsSUFBcUJELEdBQUcsQ0FBQ0MsTUFBSixDQUFXQyxTQUFsQyxDQUF2QztBQUNBLFVBQUEsS0FBSSxDQUFDbEIsdUJBQUwsQ0FBNkJtQixxQkFBN0IsR0FBcUQsQ0FBQyxFQUFFSCxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsTUFBWCxJQUFxQkQsR0FBRyxDQUFDQyxNQUFKLENBQVdDLFNBQWxDLENBQXREO0FBQ0EsVUFBQSxLQUFJLENBQUNsQix1QkFBTCxHQUErQkMsTUFBTSxDQUFDQyxNQUFQLENBQWMsS0FBSSxDQUFDRix1QkFBbkIsRUFBNENGLFFBQVEsQ0FBQ3NCLFFBQXJELENBQS9COztBQUNBLFVBQUEsS0FBSSxDQUFDeEIsU0FBTCxDQUFlLEtBQWY7QUFDQSxTQVZGLEVBV0V5QixLQVhGLENBV1EsS0FBS3hCLFFBWGI7QUFZQTs7O2FBRUQsd0JBQWV5QixXQUFmLEVBQXNEO0FBQ3JELGVBQU8sSUFBSTdCLE9BQUosQ0FBWSxVQUFTQyxPQUFULEVBQWtCO0FBQ3BDLGNBQUk7QUFDSHNCLFlBQUFBLEdBQUcsQ0FBQ08sRUFBSixDQUNFQyxPQURGLEdBRUVDLFdBRkYsV0FFaUJILFdBQVcsQ0FBQ0ksT0FBWixDQUFvQixLQUFwQixFQUEyQixHQUEzQixDQUZqQixHQUVvRDtBQUFFQyxjQUFBQSxLQUFLLEVBQUU7QUFBVCxhQUZwRCxFQUdFcEIsSUFIRixDQUdPLFlBQVc7QUFDaEJiLGNBQUFBLE9BQU8sQ0FBQyxJQUFELENBQVA7QUFDQSxhQUxGLEVBTUUyQixLQU5GLENBTVEsWUFBVztBQUNqQjNCLGNBQUFBLE9BQU8sQ0FBQyxLQUFELENBQVA7QUFDQSxhQVJGO0FBU0EsV0FWRCxDQVVFLE9BQU9rQyxDQUFQLEVBQVU7QUFDWGxDLFlBQUFBLE9BQU8sQ0FBQyxLQUFELENBQVA7QUFDQTtBQUNELFNBZE0sQ0FBUDtBQWVBOzs7YUFFRCx5QkFBdUJtQyxhQUF2QixFQUErRDtBQUM5RCxhQUFLN0IsdUJBQUwsR0FBK0I2QixhQUEvQjtBQUNBOzs7YUFFRCwyQkFBeUI7QUFDeEIsZUFBTyxLQUFLN0IsdUJBQVo7QUFDQTs7O2FBRUQsd0JBQW9CO0FBQ25CLGVBQU8sSUFBUDtBQUNBOzs7O0lBeEQyQzhCLE87O01BMkR2Q0MseUI7Ozs7Ozs7Ozs7Ozs7YUFDTCx3QkFBZUMsZUFBZixFQUF5RTtBQUN4RSxZQUFNQyw4QkFBOEIsR0FBRyxJQUFJMUMsOEJBQUosQ0FBbUN5QyxlQUFuQyxDQUF2QztBQUNBLGVBQU9DLDhCQUE4QixDQUFDekMsV0FBdEM7QUFDQTs7OztJQUpzQzBDLGM7O1NBT3pCSCx5QiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VydmljZUZhY3RvcnksIFNlcnZpY2UsIFNlcnZpY2VDb250ZXh0IH0gZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2VcIjtcbmltcG9ydCB7IERlZmF1bHRFbnZpcm9ubWVudENhcGFiaWxpdGllcywgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgfSBmcm9tIFwiLi4vY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IFZlcnNpb25JbmZvIH0gZnJvbSBcInNhcC91aVwiO1xuXG5jbGFzcyBFbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPEVudmlyb25tZW50Q2FwYWJpbGl0aWVzPiB7XG5cdHJlc29sdmVGbjogYW55O1xuXHRyZWplY3RGbjogYW55O1xuXHRpbml0UHJvbWlzZSE6IFByb21pc2U8YW55Pjtcblx0ZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMhOiBFbnZpcm9ubWVudENhcGFiaWxpdGllcztcblx0Ly8gITogbWVhbnMgdGhhdCB3ZSBrbm93IGl0IHdpbGwgYmUgYXNzaWduZWQgYmVmb3JlIHVzYWdlXG5cblx0aW5pdCgpIHtcblx0XHR0aGlzLmluaXRQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0dGhpcy5yZXNvbHZlRm4gPSByZXNvbHZlO1xuXHRcdFx0dGhpcy5yZWplY3RGbiA9IHJlamVjdDtcblx0XHR9KTtcblx0XHRjb25zdCBvQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSBPYmplY3QuYXNzaWduKHt9LCBEZWZhdWx0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMpO1xuXHRcdFZlcnNpb25JbmZvLmxvYWQodW5kZWZpbmVkIGFzIGFueSlcblx0XHRcdC50aGVuKHZlcnNpb25JbmZvID0+IHtcblx0XHRcdFx0dGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcy5DaGFydCA9ICEhdmVyc2lvbkluZm8ubGlicmFyaWVzLmZpbmQoKGxpYjogYW55KSA9PiBsaWIubmFtZSA9PT0gXCJzYXAudml6XCIpO1xuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzLk1pY3JvQ2hhcnQgPSAhIXZlcnNpb25JbmZvLmxpYnJhcmllcy5maW5kKFxuXHRcdFx0XHRcdChsaWI6IGFueSkgPT4gbGliLm5hbWUgPT09IFwic2FwLnN1aXRlLnVpLm1pY3JvY2hhcnRcIlxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzLlVTaGVsbCA9ICEhKHNhcCAmJiBzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyKTtcblx0XHRcdFx0dGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcy5JbnRlbnRCYXNlZE5hdmlnYXRpb24gPSAhIShzYXAgJiYgc2FwLnVzaGVsbCAmJiBzYXAudXNoZWxsLkNvbnRhaW5lcik7XG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSBPYmplY3QuYXNzaWduKHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMsIG9Db250ZXh0LnNldHRpbmdzKTtcblx0XHRcdFx0dGhpcy5yZXNvbHZlRm4odGhpcyk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKHRoaXMucmVqZWN0Rm4pO1xuXHR9XG5cblx0cmVzb2x2ZUxpYnJhcnkobGlicmFyeU5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRzYXAudWlcblx0XHRcdFx0XHQuZ2V0Q29yZSgpXG5cdFx0XHRcdFx0LmxvYWRMaWJyYXJ5KGAke2xpYnJhcnlOYW1lLnJlcGxhY2UoL1xcLi9nLCBcIi9cIil9YCwgeyBhc3luYzogdHJ1ZSB9KVxuXHRcdFx0XHRcdC50aGVuKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJlc29sdmUoZmFsc2UpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRyZXNvbHZlKGZhbHNlKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBzZXRDYXBhYmlsaXRpZXMob0NhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXMpIHtcblx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzID0gb0NhcGFiaWxpdGllcztcblx0fVxuXG5cdHB1YmxpYyBnZXRDYXBhYmlsaXRpZXMoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXM7XG5cdH1cblxuXHRnZXRJbnRlcmZhY2UoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuXG5jbGFzcyBFbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5IGV4dGVuZHMgU2VydmljZUZhY3Rvcnk8RW52aXJvbm1lbnRDYXBhYmlsaXRpZXM+IHtcblx0Y3JlYXRlSW5zdGFuY2Uob1NlcnZpY2VDb250ZXh0OiBTZXJ2aWNlQ29udGV4dDxFbnZpcm9ubWVudENhcGFiaWxpdGllcz4pIHtcblx0XHRjb25zdCBlbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2UgPSBuZXcgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlKG9TZXJ2aWNlQ29udGV4dCk7XG5cdFx0cmV0dXJuIGVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZS5pbml0UHJvbWlzZTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBFbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5O1xuIl19
103
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVudmlyb25tZW50U2VydmljZUZhY3RvcnkudHMiXSwibmFtZXMiOlsiRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIiwiaW5pdCIsImluaXRQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZXNvbHZlRm4iLCJyZWplY3RGbiIsIm9Db250ZXh0IiwiZ2V0Q29udGV4dCIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiT2JqZWN0IiwiYXNzaWduIiwiRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiVmVyc2lvbkluZm8iLCJsb2FkIiwidW5kZWZpbmVkIiwidGhlbiIsInZlcnNpb25JbmZvIiwiQ2hhcnQiLCJsaWJyYXJpZXMiLCJmaW5kIiwibGliIiwibmFtZSIsIk1pY3JvQ2hhcnQiLCJVU2hlbGwiLCJzYXAiLCJ1c2hlbGwiLCJDb250YWluZXIiLCJJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJTaXR1YXRpb25zIiwiVXJpUGFyYW1ldGVycyIsImZyb21RdWVyeSIsIndpbmRvdyIsImxvY2F0aW9uIiwic2VhcmNoIiwiZ2V0Iiwic2V0dGluZ3MiLCJjYXRjaCIsInJlc29sdmVMaWJyYXJ5IiwibGlicmFyeU5hbWUiLCJ1aSIsImdldENvcmUiLCJsb2FkTGlicmFyeSIsInJlcGxhY2UiLCJhc3luYyIsImUiLCJzZXRDYXBhYmlsaXRpZXMiLCJvQ2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiZ2V0SW50ZXJmYWNlIiwiU2VydmljZSIsIkVudmlyb25tZW50U2VydmljZUZhY3RvcnkiLCJjcmVhdGVJbnN0YW5jZSIsIm9TZXJ2aWNlQ29udGV4dCIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSIsIlNlcnZpY2VGYWN0b3J5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7OztNQU1hQSw4Qjs7Ozs7Ozs7OztBQUtaO1dBRUFDLEksR0FBQSxnQkFBTztBQUFBOztBQUNOLFdB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YUFBTyxLQUFLdkMsdUJBQVo7QUFDQSxLOztXQUVEd0MsWSxHQUFBLHdCQUFvQjtBQUNuQixhQUFPLElBQVA7QUFDQSxLOzs7SUF4RGtEQyxPOzs7O01BMkQ5Q0MseUI7Ozs7Ozs7OztZQUNMQyxjLEdBQUEsd0JBQWVDLGVBQWYsRUFBeUU7QUFDeEUsVUFBTUMsOEJBQThCLEdBQUcsSUFBSXZELDhCQUFKLENBQW1Dc0QsZUFBbkMsQ0FBdkM7QUFDQSxhQUFPQyw4QkFBOEIsQ0FBQ3JELFdBQXRDO0FBQ0EsSzs7O0lBSnNDc0QsYzs7U0FPekJKLHlCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2VydmljZUZhY3RvcnkgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBTZXJ2aWNlIGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VcIjtcbmltcG9ydCB7IFNlcnZpY2VDb250ZXh0IH0gZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2VcIjtcblxuaW1wb3J0IHsgRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzLCBFbnZpcm9ubWVudENhcGFiaWxpdGllcyB9IGZyb20gXCIuLi9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IFZlcnNpb25JbmZvIGZyb20gXCJzYXAvdWkvVmVyc2lvbkluZm9cIjtcbmltcG9ydCBVcmlQYXJhbWV0ZXJzIGZyb20gXCJzYXAvYmFzZS91dGlsL1VyaVBhcmFtZXRlcnNcIjtcblxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSBleHRlbmRzIFNlcnZpY2U8RW52aXJvbm1lbnRDYXBhYmlsaXRpZXM+IHtcblx0cmVzb2x2ZUZuOiBhbnk7XG5cdHJlamVjdEZuOiBhbnk7XG5cdGluaXRQcm9taXNlITogUHJvbWlzZTxhbnk+O1xuXHRlbnZpcm9ubWVudENhcGFiaWxpdGllcyE6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzO1xuXHQvLyAhOiBtZWFucyB0aGF0IHdlIGtub3cgaXQgd2lsbCBiZSBhc3NpZ25lZCBiZWZvcmUgdXNhZ2VcblxuXHRpbml0KCkge1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHR0aGlzLnJlc29sdmVGbiA9IHJlc29sdmU7XG5cdFx0XHR0aGlzLnJlamVjdEZuID0gcmVqZWN0O1xuXHRcdH0pO1xuXHRcdGNvbnN0IG9Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cdFx0dGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcyA9IE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRFbnZpcm9ubWVudENhcGFiaWxpdGllcyk7XG5cdFx0VmVyc2lvbkluZm8ubG9hZCh1bmRlZmluZWQgYXMgYW55KVxuXHRcdFx0LnRoZW4odmVyc2lvbkluZm8gPT4ge1xuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzLkNoYXJ0ID0gISF2ZXJzaW9uSW5mby5saWJyYXJpZXMuZmluZCgobGliOiBhbnkpID0+IGxpYi5uYW1lID09PSBcInNhcC52aXpcIik7XG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMuTWljcm9DaGFydCA9ICEhdmVyc2lvbkluZm8ubGlicmFyaWVzLmZpbmQoXG5cdFx0XHRcdFx0KGxpYjogYW55KSA9PiBsaWIubmFtZSA9PT0gXCJzYXAuc3VpdGUudWkubWljcm9jaGFydFwiXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMuVVNoZWxsID0gISEoc2FwICYmIHNhcC51c2hlbGwgJiYgc2FwLnVzaGVsbC5Db250YWluZXIpO1xuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzLkludGVudEJhc2VkTmF2aWdhdGlvbiA9ICEhKHNhcCAmJiBzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyKTtcblx0XHRcdFx0dGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcy5TaXR1YXRpb25zID1cblx0XHRcdFx0XHRVcmlQYXJhbWV0ZXJzLmZyb21RdWVyeSh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5nZXQoXCJzYXAtZmUteHgtc2l0dWF0aW9uc1wiKSA9PT0gXCJ0cnVlXCI7XG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSBPYmplY3QuYXNzaWduKHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMsIG9Db250ZXh0LnNldHRpbmdzKTtcblx0XHRcdFx0dGhpcy5yZXNvbHZlRm4odGhpcyk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKHRoaXMucmVqZWN0Rm4pO1xuXHR9XG5cblx0cmVzb2x2ZUxpYnJhcnkobGlicmFyeU5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHQoc2FwLnVpLmdldENvcmUoKS5sb2FkTGlicmFyeShgJHtsaWJyYXJ5TmFtZS5yZXBsYWNlKC9cXC4vZywgXCIvXCIpfWAsIHsgYXN5bmM6IHRydWUgfSkgYXMgUHJvbWlzZTxvYmplY3Q+KVxuXHRcdFx0XHRcdC50aGVuKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJlc29sdmUoZmFsc2UpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRyZXNvbHZlKGZhbHNlKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBzZXRDYXBhYmlsaXRpZXMob0NhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXMpIHtcblx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzID0gb0NhcGFiaWxpdGllcztcblx0fVxuXG5cdHB1YmxpYyBnZXRDYXBhYmlsaXRpZXMoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXM7XG5cdH1cblxuXHRnZXRJbnRlcmZhY2UoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuXG5jbGFzcyBFbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5IGV4dGVuZHMgU2VydmljZUZhY3Rvcnk8RW52aXJvbm1lbnRDYXBhYmlsaXRpZXM+IHtcblx0Y3JlYXRlSW5zdGFuY2Uob1NlcnZpY2VDb250ZXh0OiBTZXJ2aWNlQ29udGV4dDxFbnZpcm9ubWVudENhcGFiaWxpdGllcz4pIHtcblx0XHRjb25zdCBlbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2UgPSBuZXcgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlKG9TZXJ2aWNlQ29udGV4dCk7XG5cdFx0cmV0dXJuIGVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZS5pbml0UHJvbWlzZTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBFbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5O1xuIl19
@@ -1,8 +1,12 @@
1
- import { ServiceFactory, Service, ServiceContext } from "sap/ui/core/service";
1
+ import ServiceFactory from "sap/ui/core/service/ServiceFactory";
2
+ import Service from "sap/ui/core/service/Service";
3
+ import { ServiceContext } from "sap/ui/core/service";
4
+
2
5
  import { DefaultEnvironmentCapabilities, EnvironmentCapabilities } from "../converters/MetaModelConverter";
3
- import { VersionInfo } from "sap/ui";
6
+ import VersionInfo from "sap/ui/VersionInfo";
7
+ import UriParameters from "sap/base/util/UriParameters";
4
8
 
5
- class EnvironmentCapabilitiesService extends Service<EnvironmentCapabilities> {
9
+ export class EnvironmentCapabilitiesService extends Service<EnvironmentCapabilities> {
6
10
  resolveFn: any;
7
11
  rejectFn: any;
8
12
  initPromise!: Promise<any>;
@@ -24,6 +28,8 @@ class EnvironmentCapabilitiesService extends Service<EnvironmentCapabilities> {
24
28
  );
25
29
  this.environmentCapabilities.UShell = !!(sap && sap.ushell && sap.ushell.Container);
26
30
  this.environmentCapabilities.IntentBasedNavigation = !!(sap && sap.ushell && sap.ushell.Container);
31
+ this.environmentCapabilities.Situations =
32
+ UriParameters.fromQuery(window.location.search).get("sap-fe-xx-situations") === "true";
27
33
  this.environmentCapabilities = Object.assign(this.environmentCapabilities, oContext.settings);
28
34
  this.resolveFn(this);
29
35
  })
@@ -33,9 +39,7 @@ class EnvironmentCapabilitiesService extends Service<EnvironmentCapabilities> {
33
39
  resolveLibrary(libraryName: string): Promise<boolean> {
34
40
  return new Promise(function(resolve) {
35
41
  try {
36
- sap.ui
37
- .getCore()
38
- .loadLibrary(`${libraryName.replace(/\./g, "/")}`, { async: true })
42
+ (sap.ui.getCore().loadLibrary(`${libraryName.replace(/\./g, "/")}`, { async: true }) as Promise<object>)
39
43
  .then(function() {
40
44
  resolve(true);
41
45
  })