@sapui5/sap.ushell 1.132.1 → 1.134.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 (1399) hide show
  1. package/package.json +1 -1
  2. package/src/main/js/sap/ushell/.library +3 -2
  3. package/src/main/js/sap/ushell/AppInfoParameters.js +18 -4
  4. package/src/main/js/sap/ushell/ApplicationType/UrlPostProcessing.js +217 -0
  5. package/src/main/js/sap/ushell/ApplicationType/guiResolution.js +1 -1
  6. package/src/main/js/sap/ushell/ApplicationType/systemAlias.js +4 -7
  7. package/src/main/js/sap/ushell/ApplicationType/ui5Resolution.js +1 -1
  8. package/src/main/js/sap/ushell/ApplicationType/urlResolution.js +1 -1
  9. package/src/main/js/sap/ushell/ApplicationType/urlTemplateResolution.js +14 -7
  10. package/src/main/js/sap/ushell/ApplicationType/utils.js +1 -1
  11. package/src/main/js/sap/ushell/ApplicationType/wcfResolution.js +1 -1
  12. package/src/main/js/sap/ushell/ApplicationType/wdaResolution.js +1 -1
  13. package/src/main/js/sap/ushell/ApplicationType.js +1 -1
  14. package/src/main/js/sap/ushell/CanvasShapesManager.js +1 -1
  15. package/src/main/js/sap/ushell/Config/utils.js +1 -1
  16. package/src/main/js/sap/ushell/Config.js +1 -1
  17. package/src/main/js/sap/ushell/Container.js +1 -1
  18. package/src/main/js/sap/ushell/EventHub.js +1 -1
  19. package/src/main/js/sap/ushell/Fiori20Adapter.js +2 -2
  20. package/src/main/js/sap/ushell/Fiori20AdapterTest.js +2 -2
  21. package/src/main/js/sap/ushell/Layout.js +1 -1
  22. package/src/main/js/sap/ushell/NWBCInterface.js +11 -5
  23. package/src/main/js/sap/ushell/SessionHandler.js +139 -97
  24. package/src/main/js/sap/ushell/System.js +1 -1
  25. package/src/main/js/sap/ushell/TechnicalParameters.js +2 -2
  26. package/src/main/js/sap/ushell/UI5ComponentType.js +1 -1
  27. package/src/main/js/sap/ushell/UIActions.js +1 -1
  28. package/src/main/js/sap/ushell/URLTemplateProcessor/DefinitionParameterSetBuilder.js +2 -2
  29. package/src/main/js/sap/ushell/URLTemplateProcessor/DependencyGraph.js +2 -2
  30. package/src/main/js/sap/ushell/URLTemplateProcessor/Functions.js +2 -2
  31. package/src/main/js/sap/ushell/URLTemplateProcessor/Resolvers.js +2 -2
  32. package/src/main/js/sap/ushell/URLTemplateProcessor/TemplateParameterParser.js +2 -2
  33. package/src/main/js/sap/ushell/URLTemplateProcessor/utils.js +2 -2
  34. package/src/main/js/sap/ushell/URLTemplateProcessor.js +2 -2
  35. package/src/main/js/sap/ushell/Ui5NativeServiceFactory.js +2 -2
  36. package/src/main/js/sap/ushell/Ui5ServiceFactory.js +2 -2
  37. package/src/main/js/sap/ushell/User.js +82 -12
  38. package/src/main/js/sap/ushell/UserActivityLog.js +1 -1
  39. package/src/main/js/sap/ushell/adapters/AppVariantPersonalizationAdapter.js +1 -1
  40. package/src/main/js/sap/ushell/adapters/cdm/ClientSideTargetResolutionAdapter.js +2 -2
  41. package/src/main/js/sap/ushell/adapters/cdm/CommonDataModelAdapter.js +2 -2
  42. package/src/main/js/sap/ushell/adapters/cdm/ConfigurationDefaultsAdapter.js +2 -2
  43. package/src/main/js/sap/ushell/adapters/cdm/ContainerAdapter.js +22 -6
  44. package/src/main/js/sap/ushell/adapters/cdm/LaunchPageAdapter.js +2 -2
  45. package/src/main/js/sap/ushell/adapters/cdm/MenuAdapter.js +1 -1
  46. package/src/main/js/sap/ushell/adapters/cdm/PagesCommonDataModelAdapter.js +2 -2
  47. package/src/main/js/sap/ushell/adapters/cdm/PersonalizationAdapter.js +2 -2
  48. package/src/main/js/sap/ushell/adapters/cdm/PersonalizationV2Adapter.js +2 -2
  49. package/src/main/js/sap/ushell/adapters/cdm/Settings/UserLanguageAndRegion/UserLanguageAndRegion.controller.js +251 -0
  50. package/src/main/js/sap/ushell/adapters/cdm/Settings/UserLanguageAndRegion/UserLanguageAndRegion.view.xml +69 -0
  51. package/src/main/js/sap/ushell/adapters/cdm/Settings/UserLanguageAndRegion/UserLanguageAndRegionEntry.js +67 -0
  52. package/src/main/js/sap/ushell/adapters/cdm/Ui5ComponentLoaderAdapter.js +2 -2
  53. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/modifyHome.js +2 -2
  54. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readCatalogs.js +2 -2
  55. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readHome.js +2 -2
  56. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/uri.transform.js +2 -2
  57. package/src/main/js/sap/ushell/adapters/cdm/_Personalization/internals.js +1 -1
  58. package/src/main/js/sap/ushell/adapters/cdm/util/AppForInbound.js +2 -2
  59. package/src/main/js/sap/ushell/adapters/cdm/util/cdmSiteUtils.js +2 -2
  60. package/src/main/js/sap/ushell/adapters/cdm/v3/AdapterBase.js +2 -2
  61. package/src/main/js/sap/ushell/adapters/cdm/v3/FlpLaunchPageAdapter.js +2 -2
  62. package/src/main/js/sap/ushell/adapters/cdm/v3/LaunchPageAdapter.js +2 -2
  63. package/src/main/js/sap/ushell/adapters/cdm/v3/StaticGroupsAdapter.js +2 -2
  64. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readApplications.js +2 -2
  65. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readCatalogs.js +2 -2
  66. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readHome.js +2 -2
  67. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readPages.js +2 -2
  68. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readUtils.js +2 -2
  69. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readVisualizations.js +2 -2
  70. package/src/main/js/sap/ushell/adapters/cdm/v3/utilsCdm.js +1 -1
  71. package/src/main/js/sap/ushell/adapters/cep/MenuAdapter.js +10 -5
  72. package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionAdapter.js +2 -2
  73. package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionInternalAdapter.js +2 -2
  74. package/src/main/js/sap/ushell/adapters/cep/SearchCEPAdapter.js +2 -2
  75. package/src/main/js/sap/ushell/adapters/cflp/UserDefaultParameterPersistenceAdapter.js +2 -2
  76. package/src/main/js/sap/ushell/adapters/local/AdapterContainer.js +2 -2
  77. package/src/main/js/sap/ushell/adapters/local/AppStateAdapter.js +2 -2
  78. package/src/main/js/sap/ushell/adapters/local/ClientSideTargetResolutionAdapter.js +2 -2
  79. package/src/main/js/sap/ushell/adapters/local/ContainerAdapter.js +2 -2
  80. package/src/main/js/sap/ushell/adapters/local/FlpLaunchPageAdapter.js +2 -2
  81. package/src/main/js/sap/ushell/adapters/local/LaunchPageAdapter.js +2 -2
  82. package/src/main/js/sap/ushell/adapters/local/MenuAdapter.js +1 -1
  83. package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionAdapter.js +2 -2
  84. package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionInternalAdapter.js +2 -2
  85. package/src/main/js/sap/ushell/adapters/local/PageBuildingAdapter.js +2 -2
  86. package/src/main/js/sap/ushell/adapters/local/PagePersistenceAdapter.js +2 -2
  87. package/src/main/js/sap/ushell/adapters/local/PersonalizationAdapter.js +2 -2
  88. package/src/main/js/sap/ushell/adapters/local/PersonalizationV2Adapter.js +2 -2
  89. package/src/main/js/sap/ushell/adapters/local/SearchAdapter.js +2 -2
  90. package/src/main/js/sap/ushell/adapters/local/SearchCEPAdapter.js +2 -2
  91. package/src/main/js/sap/ushell/adapters/local/SupportTicketAdapter.js +2 -2
  92. package/src/main/js/sap/ushell/adapters/local/Ui5ComponentLoaderAdapter.js +2 -2
  93. package/src/main/js/sap/ushell/adapters/local/UserDefaultParameterPersistenceAdapter.js +2 -2
  94. package/src/main/js/sap/ushell/adapters/local/UserInfoAdapter.js +2 -2
  95. package/src/main/js/sap/ushell/api/BootstrapObserver.js +1 -1
  96. package/src/main/js/sap/ushell/api/Copilot.js +1 -1
  97. package/src/main/js/sap/ushell/api/Inbox.js +1 -1
  98. package/src/main/js/sap/ushell/api/NewExperience/CustomOverflowListItem.js +1 -1
  99. package/src/main/js/sap/ushell/api/NewExperience.js +1 -1
  100. package/src/main/js/sap/ushell/api/RTA.js +1 -1
  101. package/src/main/js/sap/ushell/api/S4MyHome.js +1 -1
  102. package/src/main/js/sap/ushell/api/SAPBusinessClient.js +129 -0
  103. package/src/main/js/sap/ushell/api/common/ComponentInstantiation.js +1 -1
  104. package/src/main/js/sap/ushell/api/workpage/Designtime.js +1 -1
  105. package/src/main/js/sap/ushell/api/workpage/Runtime.js +1 -1
  106. package/src/main/js/sap/ushell/appRuntime/neo/AppInfoService.js +1 -1
  107. package/src/main/js/sap/ushell/appRuntime/neo/AppRuntimeNeo.js +1 -1
  108. package/src/main/js/sap/ushell/appRuntime/neo/ProxyAppUtils.js +1 -1
  109. package/src/main/js/sap/ushell/appRuntime/ui5/AppCommunicationMgr.js +24 -5
  110. package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntime.js +1 -1
  111. package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntimeContext.js +1 -1
  112. package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntimeService.js +1 -1
  113. package/src/main/js/sap/ushell/appRuntime/ui5/BusyIndicator.css +26 -0
  114. package/src/main/js/sap/ushell/appRuntime/ui5/BusyIndicator.js +16 -21
  115. package/src/main/js/sap/ushell/appRuntime/ui5/SessionHandlerAgent.js +1 -1
  116. package/src/main/js/sap/ushell/appRuntime/ui5/libsPreload.js +1 -1
  117. package/src/main/js/sap/ushell/appRuntime/ui5/performance/FesrEnhancer.js +1 -1
  118. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/AppLifeCycleUtils.js +1 -1
  119. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/BaseRTAPluginStatus.js +1 -1
  120. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/CheckConditions.js +4 -4
  121. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/Renderer.js +1 -1
  122. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/Trigger.js +1 -1
  123. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/rtaAgent/Component.js +4 -4
  124. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/rtaShell/Component.js +1 -1
  125. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/scriptAgent/Component.js +1 -1
  126. package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/AccessKeysAgent.js +1 -1
  127. package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/Renderer.js +1 -1
  128. package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/RendererExtensions.js +2 -2
  129. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppConfiguration.js +3 -2
  130. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycle.js +2 -2
  131. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycleAgent.js +1 -1
  132. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppState.js +2 -2
  133. package/src/main/js/sap/ushell/appRuntime/ui5/services/Bookmark.js +2 -2
  134. package/src/main/js/sap/ushell/appRuntime/ui5/services/BookmarkV2.js +2 -2
  135. package/src/main/js/sap/ushell/appRuntime/ui5/services/CommonDataModel.js +2 -2
  136. package/src/main/js/sap/ushell/appRuntime/ui5/services/Container.js +2 -2
  137. package/src/main/js/sap/ushell/appRuntime/ui5/services/CrossApplicationNavigation.js +2 -2
  138. package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension/Item.js +2 -2
  139. package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension.js +2 -2
  140. package/src/main/js/sap/ushell/appRuntime/ui5/services/FrameBoundExtension.js +2 -2
  141. package/src/main/js/sap/ushell/appRuntime/ui5/services/LaunchPage.js +2 -2
  142. package/src/main/js/sap/ushell/appRuntime/ui5/services/MessageBroker.js +2 -2
  143. package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolution.js +2 -2
  144. package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolutionInternal.js +2 -2
  145. package/src/main/js/sap/ushell/appRuntime/ui5/services/Navigation.js +2 -2
  146. package/src/main/js/sap/ushell/appRuntime/ui5/services/ReferenceResolver.js +2 -2
  147. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigation.js +2 -2
  148. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigationInternal.js +2 -2
  149. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellUIService.js +11 -4
  150. package/src/main/js/sap/ushell/appRuntime/ui5/services/UserDefaultParameters.js +1 -1
  151. package/src/main/js/sap/ushell/appRuntime/ui5/services/UserInfo.js +2 -2
  152. package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/ContainerAdapter.js +1 -1
  153. package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/EmptyAdapter.js +1 -1
  154. package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/Ui5ComponentLoaderAdapter.js +2 -2
  155. package/src/main/js/sap/ushell/appRuntime/ui5/ui/UIProxy.js +1 -1
  156. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/EventProcessor.js +1 -1
  157. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/FLPLoader.js +1 -1
  158. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/FLPScheduler.js +1 -1
  159. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/LoadingConfiguration.json +4 -0
  160. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/StepConfiguration.json +35 -3
  161. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/logger.js +2 -2
  162. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/state.js +2 -2
  163. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent.js +1 -1
  164. package/src/main/js/sap/ushell/bootstrap/cdm/cdm-def-dev.js +1 -1
  165. package/src/main/js/sap/ushell/bootstrap/cdm/cdm-def-loader.js +1 -1
  166. package/src/main/js/sap/ushell/bootstrap/cdm/cdm-def.js +1 -1
  167. package/src/main/js/sap/ushell/bootstrap/cdm/cdm.boot.task.js +1 -1
  168. package/src/main/js/sap/ushell/bootstrap/cdm/cdm.constants.js +1 -1
  169. package/src/main/js/sap/ushell/bootstrap/cdm.js +1 -1
  170. package/src/main/js/sap/ushell/bootstrap/common/common.boot.path.js +1 -1
  171. package/src/main/js/sap/ushell/bootstrap/common/common.boot.script.js +1 -1
  172. package/src/main/js/sap/ushell/bootstrap/common/common.boot.task.js +1 -1
  173. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5.extractLibs.js +1 -1
  174. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5.js +1 -1
  175. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5datetimeformat.js +2 -2
  176. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5language.js +1 -1
  177. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5theme.js +1 -1
  178. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ushell.js +1 -1
  179. package/src/main/js/sap/ushell/bootstrap/common/common.constants.js +1 -1
  180. package/src/main/js/sap/ushell/bootstrap/common/common.create.configcontract.core.js +68 -6
  181. package/src/main/js/sap/ushell/bootstrap/common/common.debug.mode.js +1 -1
  182. package/src/main/js/sap/ushell/bootstrap/common/common.load.bootstrapExtension.js +1 -1
  183. package/src/main/js/sap/ushell/bootstrap/common/common.load.core-min.js +1 -1
  184. package/src/main/js/sap/ushell/bootstrap/common/common.load.launchpad.js +1 -1
  185. package/src/main/js/sap/ushell/bootstrap/common/common.load.model.js +1 -1
  186. package/src/main/js/sap/ushell/bootstrap/common/common.load.script.js +1 -1
  187. package/src/main/js/sap/ushell/bootstrap/common/common.override.registermodulepath.js +1 -1
  188. package/src/main/js/sap/ushell/bootstrap/common/common.read.metatags.js +1 -1
  189. package/src/main/js/sap/ushell/bootstrap/common/common.read.ui5theme.from.config.js +1 -1
  190. package/src/main/js/sap/ushell/bootstrap/common/common.read.ushell.config.from.url.js +1 -1
  191. package/src/main/js/sap/ushell/bootstrap/common/common.util.js +1 -1
  192. package/src/main/js/sap/ushell/bootstrap/sandbox2/sandbox.js +1 -1
  193. package/src/main/js/sap/ushell/bootstrap/sandbox2/sandboxBootTask.js +1 -1
  194. package/src/main/js/sap/ushell/bootstrap/sandbox2.js +2 -2
  195. package/src/main/js/sap/ushell/bootstrap/ui5loader-config.js +1 -1
  196. package/src/main/js/sap/ushell/components/CatalogsManager.js +1 -1
  197. package/src/main/js/sap/ushell/components/ComponentKeysHandler.js +3 -3
  198. package/src/main/js/sap/ushell/components/DestroyHelper.js +1 -1
  199. package/src/main/js/sap/ushell/components/GroupsHelper.js +1 -1
  200. package/src/main/js/sap/ushell/components/HomepageManager.js +1 -1
  201. package/src/main/js/sap/ushell/components/MessagingHelper.js +1 -1
  202. package/src/main/js/sap/ushell/components/SharedComponentUtils.js +1 -1
  203. package/src/main/js/sap/ushell/components/_HomepageManager/DashboardLoadingManager.js +1 -1
  204. package/src/main/js/sap/ushell/components/_HomepageManager/PagingManager.js +1 -1
  205. package/src/main/js/sap/ushell/components/_HomepageManager/PersistentPageOperationAdapter.js +1 -1
  206. package/src/main/js/sap/ushell/components/_HomepageManager/TransientPageOperationAdapter.js +1 -1
  207. package/src/main/js/sap/ushell/components/appfinder/AppFinder.controller.js +11 -3
  208. package/src/main/js/sap/ushell/components/appfinder/AppFinderView.js +1 -1
  209. package/src/main/js/sap/ushell/components/appfinder/Catalog.controller.js +1 -1
  210. package/src/main/js/sap/ushell/components/appfinder/CatalogView.js +1 -1
  211. package/src/main/js/sap/ushell/components/appfinder/Component.js +1 -1
  212. package/src/main/js/sap/ushell/components/appfinder/EasyAccess.controller.js +1 -1
  213. package/src/main/js/sap/ushell/components/appfinder/EasyAccessView.js +1 -1
  214. package/src/main/js/sap/ushell/components/appfinder/GroupListPopover.controller.js +1 -1
  215. package/src/main/js/sap/ushell/components/appfinder/GroupListPopoverView.js +1 -1
  216. package/src/main/js/sap/ushell/components/appfinder/HierarchyApps.controller.js +1 -1
  217. package/src/main/js/sap/ushell/components/appfinder/HierarchyAppsView.js +1 -1
  218. package/src/main/js/sap/ushell/components/appfinder/HierarchyFolders.controller.js +1 -1
  219. package/src/main/js/sap/ushell/components/appfinder/HierarchyFoldersView.js +1 -1
  220. package/src/main/js/sap/ushell/components/appfinder/VisualizationOrganizerHelper.js +1 -1
  221. package/src/main/js/sap/ushell/components/appfinder/manifest.json +1 -1
  222. package/src/main/js/sap/ushell/components/applicationIntegration/AppLifeCycle.js +713 -910
  223. package/src/main/js/sap/ushell/components/applicationIntegration/ApplicationContainer.js +272 -0
  224. package/src/main/js/sap/ushell/components/applicationIntegration/ApplicationContainerCache.js +229 -0
  225. package/src/main/js/sap/ushell/components/applicationIntegration/ApplicationContainerRenderer.js +35 -0
  226. package/src/main/js/sap/ushell/components/applicationIntegration/IframeApplicationContainer.js +372 -0
  227. package/src/main/js/sap/ushell/components/applicationIntegration/IframeApplicationContainerRenderer.js +296 -0
  228. package/src/main/js/sap/ushell/components/applicationIntegration/KeepAliveApps.js +68 -0
  229. package/src/main/js/sap/ushell/components/applicationIntegration/PostMessageManager/AppruntimeHandler.js +120 -0
  230. package/src/main/js/sap/ushell/components/applicationIntegration/PostMessageManager/ExtensionItems.js +143 -0
  231. package/src/main/js/sap/ushell/components/applicationIntegration/PostMessageManager/LifecycleHandler.js +618 -0
  232. package/src/main/js/sap/ushell/components/applicationIntegration/PostMessageManager/MessageBrokerHandler.js +64 -0
  233. package/src/main/js/sap/ushell/components/applicationIntegration/PostMessageManager/NWBCHandler.js +83 -0
  234. package/src/main/js/sap/ushell/components/applicationIntegration/PostMessageManager/ServiceHandler.js +1503 -0
  235. package/src/main/js/sap/ushell/components/applicationIntegration/PostMessageManager.js +638 -0
  236. package/src/main/js/sap/ushell/components/applicationIntegration/PostMessagePluginInterface.js +152 -0
  237. package/src/main/js/sap/ushell/components/applicationIntegration/Storage.js +21 -50
  238. package/src/main/js/sap/ushell/components/applicationIntegration/UI5ApplicationContainer.js +168 -0
  239. package/src/main/js/sap/ushell/components/applicationIntegration/UI5ApplicationContainerRenderer.js +41 -0
  240. package/src/main/js/sap/ushell/components/applicationIntegration/application/Application.js +30 -679
  241. package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxHandler.js +13 -390
  242. package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxesCache.js +8 -249
  243. package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageAPI.js +9 -2365
  244. package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageAPIInterface.js +10 -127
  245. package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageUtils.js +10 -177
  246. package/src/main/js/sap/ushell/components/applicationIntegration/application/WebGUIStatefulHandler.js +10 -74
  247. package/src/main/js/sap/ushell/components/applicationIntegration/configuration/AppMeta.js +21 -12
  248. package/src/main/js/sap/ushell/components/applicationIntegration/contracts/EmbeddedUI5Handler.js +176 -0
  249. package/src/main/js/sap/ushell/components/applicationIntegration/contracts/StatefulContainerV1Handler.js +91 -0
  250. package/src/main/js/sap/ushell/components/applicationIntegration/contracts/StatefulContainerV2Handler.js +175 -0
  251. package/src/main/js/sap/ushell/components/applicationIntegration/relatedServices/RelatedServices.js +13 -74
  252. package/src/main/js/sap/ushell/components/applicationIntegrationOld/AppLifeCycle.js +1926 -0
  253. package/src/main/js/sap/ushell/components/applicationIntegrationOld/Storage.js +62 -0
  254. package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/Application.js +709 -0
  255. package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/BlueBoxHandler.js +406 -0
  256. package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/BlueBoxesCache.js +263 -0
  257. package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/PostMessageAPI.js +2382 -0
  258. package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/PostMessageAPIInterface.js +143 -0
  259. package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/PostMessageUtils.js +192 -0
  260. package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/WebGUIStatefulHandler.js +90 -0
  261. package/src/main/js/sap/ushell/components/applicationIntegrationOld/configuration/AppMeta.js +193 -0
  262. package/src/main/js/sap/ushell/components/applicationIntegrationOld/relatedServices/RelatedServices.js +91 -0
  263. package/src/main/js/sap/ushell/components/cards/Card.controller.js +1 -1
  264. package/src/main/js/sap/ushell/components/cards/Configuration.controller.js +1 -1
  265. package/src/main/js/sap/ushell/components/cards/ManifestPropertyHelper.js +1 -1
  266. package/src/main/js/sap/ushell/components/cepsearchresult/app/Component.js +1 -1
  267. package/src/main/js/sap/ushell/components/cepsearchresult/app/Main.controller.js +1 -1
  268. package/src/main/js/sap/ushell/components/cepsearchresult/app/cards/searchresultwidget/Component.js +1 -1
  269. package/src/main/js/sap/ushell/components/cepsearchresult/app/cards/searchresultwidget/Config.js +1 -1
  270. package/src/main/js/sap/ushell/components/cepsearchresult/app/cards/searchresultwidget/Extension.js +1 -1
  271. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/AdvancedFormatters.js +1 -1
  272. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/Edition.js +1 -1
  273. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/EditionAdvanced.js +1 -1
  274. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/EditionStandard.js +1 -1
  275. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/appendStyleVars.js +1 -1
  276. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/Category.js +1 -1
  277. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/Highlighter.js +1 -1
  278. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/Paginator.js +1 -1
  279. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/All.js +1 -1
  280. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/Application.js +1 -1
  281. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/Event.js +1 -1
  282. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/People.js +1 -1
  283. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/Workpage.js +1 -1
  284. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_sk.properties +1 -1
  285. package/src/main/js/sap/ushell/components/container/ApplicationContainer.js +38 -22
  286. package/src/main/js/sap/ushell/components/container/IframePOSTUtils.js +5 -1
  287. package/src/main/js/sap/ushell/components/contentFinder/CatalogService.js +2 -2
  288. package/src/main/js/sap/ushell/components/contentFinder/Component.js +17 -7
  289. package/src/main/js/sap/ushell/components/contentFinder/controller/AppSearch.controller.js +2 -2
  290. package/src/main/js/sap/ushell/components/contentFinder/controller/ContentFinderDialog.controller.js +2 -2
  291. package/src/main/js/sap/ushell/components/contentFinder/dialog/Component.js +2 -2
  292. package/src/main/js/sap/ushell/components/contentFinder/dialog/manifest.json +1 -1
  293. package/src/main/js/sap/ushell/components/contentFinder/manifest.json +1 -1
  294. package/src/main/js/sap/ushell/components/contentFinder/model/GraphQLListBinding.js +1 -1
  295. package/src/main/js/sap/ushell/components/contentFinder/model/GraphQLModel.js +1 -1
  296. package/src/main/js/sap/ushell/components/contentFinder/model/formatter.js +32 -8
  297. package/src/main/js/sap/ushell/components/contentFinder/resources/resources.properties +6 -2
  298. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ar.properties +5 -14
  299. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_bg.properties +5 -14
  300. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ca.properties +5 -14
  301. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_cnr.properties +5 -14
  302. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_cs.properties +5 -14
  303. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_cy.properties +5 -14
  304. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_da.properties +5 -14
  305. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_de.properties +5 -14
  306. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_el.properties +5 -14
  307. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_en.properties +5 -14
  308. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_en_GB.properties +5 -14
  309. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_en_US_saprigi.properties +5 -14
  310. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_es.properties +5 -14
  311. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_es_MX.properties +5 -14
  312. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_et.properties +5 -14
  313. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_fi.properties +5 -14
  314. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_fr.properties +5 -14
  315. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_fr_CA.properties +5 -14
  316. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_hi.properties +5 -14
  317. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_hr.properties +5 -14
  318. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_hu.properties +5 -14
  319. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_id.properties +5 -14
  320. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_it.properties +5 -14
  321. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_iw.properties +5 -14
  322. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ja.properties +5 -14
  323. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_kk.properties +5 -14
  324. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ko.properties +5 -14
  325. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_lt.properties +5 -14
  326. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_lv.properties +5 -14
  327. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_mk.properties +5 -14
  328. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ms.properties +5 -14
  329. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_nl.properties +5 -14
  330. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_no.properties +5 -14
  331. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_pl.properties +5 -14
  332. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_pt.properties +5 -14
  333. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_pt_PT.properties +5 -14
  334. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ro.properties +5 -14
  335. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ru.properties +5 -14
  336. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sh.properties +5 -14
  337. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sk.properties +5 -14
  338. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sl.properties +5 -14
  339. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sr.properties +5 -14
  340. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sv.properties +5 -14
  341. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_th.properties +5 -14
  342. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_tr.properties +5 -14
  343. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_uk.properties +5 -14
  344. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_vi.properties +5 -14
  345. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_zh_CN.properties +5 -14
  346. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_zh_TW.properties +5 -14
  347. package/src/main/js/sap/ushell/components/contentFinder/view/VisualizationsNoDataIllustratedMessage.fragment.xml +6 -3
  348. package/src/main/js/sap/ushell/components/contentFinderStandalone/Component.js +2 -2
  349. package/src/main/js/sap/ushell/components/contentFinderStandalone/controller/ContentFinderStandalone.controller.js +54 -14
  350. package/src/main/js/sap/ushell/components/contentFinderStandalone/manifest.json +1 -1
  351. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources.properties +6 -0
  352. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_ar.properties +3 -0
  353. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_bg.properties +3 -0
  354. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_ca.properties +3 -0
  355. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_cnr.properties +3 -0
  356. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_cs.properties +3 -0
  357. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_cy.properties +3 -0
  358. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_da.properties +3 -0
  359. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_de.properties +3 -0
  360. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_el.properties +3 -0
  361. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_en.properties +3 -0
  362. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_en_GB.properties +3 -0
  363. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_en_US_saprigi.properties +3 -0
  364. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_es.properties +3 -0
  365. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_es_MX.properties +3 -0
  366. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_et.properties +3 -0
  367. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_fi.properties +3 -0
  368. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_fr.properties +3 -0
  369. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_fr_CA.properties +3 -0
  370. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_hi.properties +3 -0
  371. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_hr.properties +3 -0
  372. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_hu.properties +3 -0
  373. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_id.properties +3 -0
  374. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_it.properties +4 -1
  375. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_iw.properties +3 -0
  376. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_ja.properties +3 -0
  377. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_kk.properties +3 -0
  378. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_ko.properties +3 -0
  379. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_lt.properties +3 -0
  380. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_lv.properties +3 -0
  381. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_mk.properties +3 -0
  382. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_ms.properties +3 -0
  383. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_nl.properties +3 -0
  384. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_no.properties +3 -0
  385. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_pl.properties +3 -0
  386. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_pt.properties +3 -0
  387. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_pt_PT.properties +3 -0
  388. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_ro.properties +3 -0
  389. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_ru.properties +3 -0
  390. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_sh.properties +3 -0
  391. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_sk.properties +3 -0
  392. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_sl.properties +3 -0
  393. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_sr.properties +3 -0
  394. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_sv.properties +3 -0
  395. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_th.properties +3 -0
  396. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_tr.properties +3 -0
  397. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_uk.properties +3 -0
  398. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_vi.properties +3 -0
  399. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_zh_CN.properties +3 -0
  400. package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_zh_TW.properties +3 -0
  401. package/src/main/js/sap/ushell/components/factsheet/Component.js +2 -2
  402. package/src/main/js/sap/ushell/components/factsheet/annotation/Mapping.js +1 -1
  403. package/src/main/js/sap/ushell/components/factsheet/controls/PictureTile.js +1 -1
  404. package/src/main/js/sap/ushell/components/factsheet/controls/PictureTileRenderer.js +1 -1
  405. package/src/main/js/sap/ushell/components/factsheet/controls/PictureViewer.js +1 -1
  406. package/src/main/js/sap/ushell/components/factsheet/controls/PictureViewerItem.js +1 -1
  407. package/src/main/js/sap/ushell/components/factsheet/controls/PictureViewerRenderer.js +1 -1
  408. package/src/main/js/sap/ushell/components/factsheet/factory/ThingInspector.js +1 -1
  409. package/src/main/js/sap/ushell/components/factsheet/tools/ODataUrlTemplating.js +1 -1
  410. package/src/main/js/sap/ushell/components/factsheet/views/ThingViewer.controller.js +1 -1
  411. package/src/main/js/sap/ushell/components/factsheet/views/ThingViewer.view.js +1 -1
  412. package/src/main/js/sap/ushell/components/homeApp/error/Component.js +1 -1
  413. package/src/main/js/sap/ushell/components/homeApp/error/HomeAppError.controller.js +1 -1
  414. package/src/main/js/sap/ushell/components/homepage/ActionMode.js +2 -2
  415. package/src/main/js/sap/ushell/components/homepage/Component.js +1 -1
  416. package/src/main/js/sap/ushell/components/homepage/DashboardContent.controller.js +1 -1
  417. package/src/main/js/sap/ushell/components/homepage/DashboardContent.view.js +2 -2
  418. package/src/main/js/sap/ushell/components/homepage/DashboardGroupsBox.js +2 -2
  419. package/src/main/js/sap/ushell/components/homepage/DashboardUIActions.js +2 -2
  420. package/src/main/js/sap/ushell/components/homepage/manifest.json +1 -1
  421. package/src/main/js/sap/ushell/components/pages/ActionMode.js +2 -2
  422. package/src/main/js/sap/ushell/components/pages/Component.js +2 -2
  423. package/src/main/js/sap/ushell/components/pages/MyHomeImport.js +2 -2
  424. package/src/main/js/sap/ushell/components/pages/StateManager.js +1 -1
  425. package/src/main/js/sap/ushell/components/pages/controller/ImportDialog.controller.js +1 -1
  426. package/src/main/js/sap/ushell/components/pages/controller/MyHome.controller.js +1 -1
  427. package/src/main/js/sap/ushell/components/pages/controller/PageRuntime.controller.js +141 -147
  428. package/src/main/js/sap/ushell/components/pages/controller/PagesAndSpaceId.js +1 -1
  429. package/src/main/js/sap/ushell/components/pages/fragment/DialogPageNotExists.fragment.xml +5 -4
  430. package/src/main/js/sap/ushell/components/pages/manifest.json +1 -1
  431. package/src/main/js/sap/ushell/components/runtimeSwitcher/Component.js +1 -1
  432. package/src/main/js/sap/ushell/components/runtimeSwitcher/controller/RuntimeSwitcher.controller.js +2 -2
  433. package/src/main/js/sap/ushell/components/runtimeSwitcher/manifest.json +1 -1
  434. package/src/main/js/sap/ushell/components/shell/FloatingContainer/Component.js +1 -1
  435. package/src/main/js/sap/ushell/components/shell/FloatingContainer/controls/FloatingContainer.js +1 -1
  436. package/src/main/js/sap/ushell/components/shell/FloatingContainer/manifest.json +1 -1
  437. package/src/main/js/sap/ushell/components/shell/MenuBar/Component.js +1 -1
  438. package/src/main/js/sap/ushell/components/shell/MenuBar/controller/MenuBar.controller.js +1 -2
  439. package/src/main/js/sap/ushell/components/shell/MenuBar/manifest.json +1 -1
  440. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/Component.js +39 -4
  441. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenu.controller.js +30 -63
  442. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenuButton.controller.js +118 -0
  443. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/manifest.json +1 -1
  444. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/view/NavigationBarMenu.view.xml +64 -17
  445. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/view/NavigationBarMenuButton.view.xml +24 -0
  446. package/src/main/js/sap/ushell/components/shell/Notifications/Component.js +2 -2
  447. package/src/main/js/sap/ushell/components/shell/Notifications/Notifications.controller.js +1 -1
  448. package/src/main/js/sap/ushell/components/shell/PostLoadingHeaderEnhancement/Component.js +1 -1
  449. package/src/main/js/sap/ushell/components/shell/ProductSwitch/Component.js +2 -2
  450. package/src/main/js/sap/ushell/components/shell/Search/Component.js +1 -1
  451. package/src/main/js/sap/ushell/components/shell/Search/ESearch.js +1 -1
  452. package/src/main/js/sap/ushell/components/shell/Search/manifest.json +1 -1
  453. package/src/main/js/sap/ushell/components/shell/SearchCEP/Component.js +2 -2
  454. package/src/main/js/sap/ushell/components/shell/SearchCEP/ProvidersExecuter.js +1 -1
  455. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchCEP.controller.js +1 -1
  456. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/FrequentActivityProvider.js +2 -2
  457. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/RecentSearchProvider.js +2 -2
  458. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchProvider.js +2 -2
  459. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchServiceProvider.js +2 -2
  460. package/src/main/js/sap/ushell/components/shell/Settings/Component.js +19 -16
  461. package/src/main/js/sap/ushell/components/shell/Settings/ContentWrapper.fragment.xml +3 -2
  462. package/src/main/js/sap/ushell/components/shell/Settings/ErrorMessageHelper.js +1 -1
  463. package/src/main/js/sap/ushell/components/shell/Settings/UserSettings.controller.js +46 -22
  464. package/src/main/js/sap/ushell/components/shell/Settings/appearance/Appearance.controller.js +99 -50
  465. package/src/main/js/sap/ushell/components/shell/Settings/appearance/Appearance.view.xml +11 -2
  466. package/src/main/js/sap/ushell/components/shell/Settings/appearance/AppearanceEntry.js +1 -1
  467. package/src/main/js/sap/ushell/components/shell/Settings/homepage/HomepageEntry.js +1 -1
  468. package/src/main/js/sap/ushell/components/shell/Settings/notifications/NotificationsEntry.js +1 -1
  469. package/src/main/js/sap/ushell/components/shell/Settings/notifications/NotificationsSetting.controller.js +1 -1
  470. package/src/main/js/sap/ushell/components/shell/Settings/search/Search.controller.js +1 -1
  471. package/src/main/js/sap/ushell/components/shell/Settings/search/SearchEntry.js +1 -1
  472. package/src/main/js/sap/ushell/components/shell/Settings/spaces/SpacesEntry.js +1 -1
  473. package/src/main/js/sap/ushell/components/shell/Settings/spaces/SpacesSetting.controller.js +1 -1
  474. package/src/main/js/sap/ushell/components/shell/Settings/userAccount/UserAccountEntry.js +1 -1
  475. package/src/main/js/sap/ushell/components/shell/Settings/userAccount/UserAccountSelector.controller.js +1 -1
  476. package/src/main/js/sap/ushell/components/shell/Settings/userActivities/UserActivitiesEntry.js +1 -1
  477. package/src/main/js/sap/ushell/components/shell/Settings/userActivities/UserActivitiesSetting.controller.js +1 -1
  478. package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/Component.js +1 -1
  479. package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/UserDefaultsEntry.js +1 -1
  480. package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/UserDefaultsForm.js +1 -1
  481. package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/controller/ExtendedValueDialog.controller.js +1 -1
  482. package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/controller/UserDefaultsSetting.controller.js +1 -1
  483. package/src/main/js/sap/ushell/components/shell/Settings/userLanguageRegion/LanguageRegionSelector.controller.js +1 -1
  484. package/src/main/js/sap/ushell/components/shell/Settings/userLanguageRegion/UserLanguageRegionEntry.js +1 -1
  485. package/src/main/js/sap/ushell/components/shell/SideNavigation/Component.js +206 -30
  486. package/src/main/js/sap/ushell/components/shell/SideNavigation/controller/SideNavigation.controller.js +79 -314
  487. package/src/main/js/sap/ushell/components/shell/SideNavigation/css/style.css +3 -0
  488. package/src/main/js/sap/ushell/components/shell/SideNavigation/fragment/Popover.fragment.xml +13 -0
  489. package/src/main/js/sap/ushell/components/shell/SideNavigation/manifest.json +8 -1
  490. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/AllSpaces.js +52 -0
  491. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/AppFinder.js +48 -0
  492. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/Favorites.js +222 -0
  493. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/GenericFixedNavigationListProvider.js +142 -0
  494. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/GenericNavigationListProvider.js +186 -0
  495. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/MyHome.js +73 -0
  496. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/NavigationHelper.js +79 -0
  497. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/RecentActivity.js +141 -0
  498. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/Spaces.js +288 -0
  499. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/SpacesNavigationListProvider.js +79 -0
  500. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources.properties +21 -4
  501. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ar.properties +11 -0
  502. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_bg.properties +11 -0
  503. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ca.properties +11 -0
  504. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_cnr.properties +11 -0
  505. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_cs.properties +11 -0
  506. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_cy.properties +11 -0
  507. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_da.properties +11 -0
  508. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_de.properties +11 -0
  509. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_el.properties +11 -0
  510. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_en.properties +11 -0
  511. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_en_GB.properties +11 -0
  512. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_en_US_saprigi.properties +11 -0
  513. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_es.properties +11 -0
  514. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_es_MX.properties +11 -0
  515. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_et.properties +11 -0
  516. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_fi.properties +11 -0
  517. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_fr.properties +11 -0
  518. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_fr_CA.properties +11 -0
  519. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_hi.properties +11 -0
  520. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_hr.properties +11 -0
  521. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_hu.properties +11 -0
  522. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_id.properties +11 -0
  523. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_it.properties +11 -0
  524. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_iw.properties +11 -0
  525. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ja.properties +11 -0
  526. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_kk.properties +11 -0
  527. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ko.properties +11 -0
  528. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_lt.properties +11 -0
  529. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_lv.properties +11 -0
  530. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_mk.properties +11 -0
  531. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ms.properties +11 -0
  532. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_nl.properties +11 -0
  533. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_no.properties +11 -0
  534. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_pl.properties +11 -0
  535. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_pt.properties +11 -0
  536. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_pt_PT.properties +11 -0
  537. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ro.properties +11 -0
  538. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ru.properties +11 -0
  539. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sh.properties +11 -0
  540. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sk.properties +11 -0
  541. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sl.properties +11 -0
  542. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sr.properties +11 -0
  543. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sv.properties +11 -0
  544. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_th.properties +11 -0
  545. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_tr.properties +11 -0
  546. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_uk.properties +11 -0
  547. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_vi.properties +11 -0
  548. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_zh_CN.properties +11 -0
  549. package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_zh_TW.properties +11 -0
  550. package/src/main/js/sap/ushell/components/shell/SideNavigation/view/Main.view.xml +15 -0
  551. package/src/main/js/sap/ushell/components/shell/SideNavigation/view/SideNavigation.view.xml +33 -16
  552. package/src/main/js/sap/ushell/components/shell/UserActionsMenu/Component.js +2 -2
  553. package/src/main/js/sap/ushell/components/shell/UserActionsMenu/UserActionsMenu.controller.js +153 -19
  554. package/src/main/js/sap/ushell/components/shell/UserActionsMenu/UserActionsMenu.fragment.xml +33 -0
  555. package/src/main/js/sap/ushell/components/shell/UserActionsMenu/UserActionsMenuPopover.fragment.xml +42 -4
  556. package/src/main/js/sap/ushell/components/shell/UserImage/Component.js +2 -2
  557. package/src/main/js/sap/ushell/components/tiles/action/ActionTile.controller.js +1 -1
  558. package/src/main/js/sap/ushell/components/tiles/action/Configuration.controller.js +1 -1
  559. package/src/main/js/sap/ushell/components/tiles/applauncher/Component.js +1 -1
  560. package/src/main/js/sap/ushell/components/tiles/applauncher/Configuration.controller.js +1 -1
  561. package/src/main/js/sap/ushell/components/tiles/applauncher/StaticTile.controller.js +1 -1
  562. package/src/main/js/sap/ushell/components/tiles/applauncher/StaticTile.view.js +1 -1
  563. package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/Component.js +1 -1
  564. package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/Configuration.controller.js +1 -1
  565. package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/DynamicTile.controller.js +1 -3
  566. package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/DynamicTile.view.js +1 -1
  567. package/src/main/js/sap/ushell/components/tiles/cdm/applauncher/Component.js +1 -1
  568. package/src/main/js/sap/ushell/components/tiles/cdm/applauncher/StaticTile.controller.js +1 -1
  569. package/src/main/js/sap/ushell/components/tiles/cdm/applauncher/StaticTile.view.js +1 -1
  570. package/src/main/js/sap/ushell/components/tiles/cdm/applauncherdynamic/Component.js +1 -1
  571. package/src/main/js/sap/ushell/components/tiles/cdm/applauncherdynamic/DynamicTile.controller.js +1 -1
  572. package/src/main/js/sap/ushell/components/tiles/cdm/applauncherdynamic/DynamicTile.view.js +1 -1
  573. package/src/main/js/sap/ushell/components/tiles/generic.js +1 -1
  574. package/src/main/js/sap/ushell/components/tiles/indicatorArea/AreaChartTile.controller.js +1 -1
  575. package/src/main/js/sap/ushell/components/tiles/indicatorArea/AreaChartTile.view.js +1 -1
  576. package/src/main/js/sap/ushell/components/tiles/indicatorDual/DualTile.controller.js +1 -1
  577. package/src/main/js/sap/ushell/components/tiles/indicatorDual/DualTile.view.js +1 -1
  578. package/src/main/js/sap/ushell/components/tiles/indicatorDualComparison/DualComparison.controller.js +1 -1
  579. package/src/main/js/sap/ushell/components/tiles/indicatorDualComparison/DualComparison.view.js +1 -1
  580. package/src/main/js/sap/ushell/components/tiles/indicatorDualContribution/DualContribution.controller.js +1 -1
  581. package/src/main/js/sap/ushell/components/tiles/indicatorDualContribution/DualContribution.view.js +1 -1
  582. package/src/main/js/sap/ushell/components/tiles/indicatorDualDeviation/DualDeviation.controller.js +1 -1
  583. package/src/main/js/sap/ushell/components/tiles/indicatorDualDeviation/DualDeviation.view.js +1 -1
  584. package/src/main/js/sap/ushell/components/tiles/indicatorDualTrend/DualTrend.controller.js +1 -1
  585. package/src/main/js/sap/ushell/components/tiles/indicatorDualTrend/DualTrend.view.js +1 -1
  586. package/src/main/js/sap/ushell/components/tiles/indicatorHarveyBall/HarveyBallTile.controller.js +1 -1
  587. package/src/main/js/sap/ushell/components/tiles/indicatorHarveyBall/HarveyBallTile.view.js +1 -1
  588. package/src/main/js/sap/ushell/components/tiles/indicatorTileUtils/cache.js +1 -1
  589. package/src/main/js/sap/ushell/components/tiles/indicatorTileUtils/indicatorTileHelper.js +1 -1
  590. package/src/main/js/sap/ushell/components/tiles/indicatorTileUtils/oData4Analytics.js +1 -1
  591. package/src/main/js/sap/ushell/components/tiles/indicatorTileUtils/smartBusinessUtil.js +1 -1
  592. package/src/main/js/sap/ushell/components/tiles/indicatorcomparison/ComparisonTile.controller.js +1 -1
  593. package/src/main/js/sap/ushell/components/tiles/indicatorcomparison/ComparisonTile.view.js +1 -1
  594. package/src/main/js/sap/ushell/components/tiles/indicatorcontribution/ContributionTile.controller.js +1 -1
  595. package/src/main/js/sap/ushell/components/tiles/indicatorcontribution/ContributionTile.view.js +1 -1
  596. package/src/main/js/sap/ushell/components/tiles/indicatordeviation/DeviationTile.controller.js +1 -1
  597. package/src/main/js/sap/ushell/components/tiles/indicatordeviation/DeviationTile.view.js +1 -1
  598. package/src/main/js/sap/ushell/components/tiles/indicatornumeric/NumericTile.controller.js +1 -1
  599. package/src/main/js/sap/ushell/components/tiles/indicatornumeric/NumericTile.view.js +1 -1
  600. package/src/main/js/sap/ushell/components/tiles/sbtilecontent.js +1 -1
  601. package/src/main/js/sap/ushell/components/tiles/utils.js +3 -4
  602. package/src/main/js/sap/ushell/components/visualizationOrganizer/Component.js +2 -2
  603. package/src/main/js/sap/ushell/components/workPageBuilder/Component.js +2 -2
  604. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.accessibility.js +2 -2
  605. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.controller.js +2 -2
  606. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.layout.js +1 -1
  607. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPage.js +2 -2
  608. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageButton.js +2 -2
  609. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageCell.js +2 -2
  610. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumn.js +2 -2
  611. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnRenderer.js +1 -1
  612. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnResizer.js +2 -2
  613. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRenderer.js +1 -1
  614. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRow.js +2 -2
  615. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRowRenderer.js +1 -1
  616. package/src/main/js/sap/ushell/components/workPageBuilder/manifest.json +1 -1
  617. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ar.properties +3 -0
  618. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_bg.properties +3 -0
  619. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ca.properties +3 -0
  620. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_cnr.properties +3 -0
  621. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_cs.properties +3 -0
  622. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_cy.properties +3 -0
  623. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_da.properties +3 -0
  624. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_de.properties +3 -0
  625. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_el.properties +3 -0
  626. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_en.properties +3 -0
  627. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_en_GB.properties +3 -0
  628. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_en_US_saprigi.properties +3 -0
  629. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_es.properties +3 -0
  630. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_es_MX.properties +3 -0
  631. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_et.properties +3 -0
  632. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_fi.properties +3 -0
  633. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_fr.properties +3 -0
  634. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_fr_CA.properties +3 -0
  635. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_hi.properties +3 -0
  636. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_hr.properties +3 -0
  637. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_hu.properties +3 -0
  638. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_id.properties +3 -0
  639. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_it.properties +3 -0
  640. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_iw.properties +4 -1
  641. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ja.properties +3 -0
  642. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_kk.properties +3 -0
  643. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ko.properties +3 -0
  644. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_lt.properties +3 -0
  645. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_lv.properties +3 -0
  646. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_mk.properties +3 -0
  647. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ms.properties +3 -0
  648. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_nl.properties +3 -0
  649. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_no.properties +3 -0
  650. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_pl.properties +3 -0
  651. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_pt.properties +3 -0
  652. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_pt_PT.properties +3 -0
  653. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ro.properties +3 -0
  654. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ru.properties +3 -0
  655. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sh.properties +3 -0
  656. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sk.properties +3 -0
  657. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sl.properties +3 -0
  658. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sr.properties +3 -0
  659. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sv.properties +3 -0
  660. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_th.properties +3 -0
  661. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_tr.properties +3 -0
  662. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_uk.properties +3 -0
  663. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_vi.properties +3 -0
  664. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_zh_CN.properties +3 -0
  665. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_zh_TW.properties +3 -0
  666. package/src/main/js/sap/ushell/components/workPageRuntime/Component.js +2 -2
  667. package/src/main/js/sap/ushell/components/workPageRuntime/controller/WorkPageRuntime.controller.js +2 -2
  668. package/src/main/js/sap/ushell/components/workPageRuntime/manifest.json +1 -1
  669. package/src/main/js/sap/ushell/designtime/ApplicationContainer.designtime.js +2 -2
  670. package/src/main/js/sap/ushell/functionBindPrototype.js +1 -1
  671. package/src/main/js/sap/ushell/iconfonts.js +1 -1
  672. package/src/main/js/sap/ushell/library.js +68 -2
  673. package/src/main/js/sap/ushell/navigationMode.js +2 -2
  674. package/src/main/js/sap/ushell/override.js +1 -1
  675. package/src/main/js/sap/ushell/performance/FesrEnhancer.js +1 -1
  676. package/src/main/js/sap/ushell/performance/ShellAnalytics.js +2 -2
  677. package/src/main/js/sap/ushell/performance/StatisticalRecord.js +2 -2
  678. package/src/main/js/sap/ushell/plugins/BaseRTAPlugin.js +1 -1
  679. package/src/main/js/sap/ushell/plugins/appwarmup/Component.js +2 -2
  680. package/src/main/js/sap/ushell/plugins/appwarmup/ShellUIService.js +1 -1
  681. package/src/main/js/sap/ushell/plugins/ghostapp/Component.js +1 -1
  682. package/src/main/js/sap/ushell/plugins/ghostapp/FakeModel.js +1 -1
  683. package/src/main/js/sap/ushell/plugins/rta/Component.js +16 -1
  684. package/src/main/js/sap/ushell/plugins/rta-personalize/Component.js +1 -1
  685. package/src/main/js/sap/ushell/renderer/AccessKeysHandler.js +4 -2
  686. package/src/main/js/sap/ushell/renderer/History.js +1 -1
  687. package/src/main/js/sap/ushell/renderer/LogonFrameProvider.js +1 -1
  688. package/src/main/js/sap/ushell/renderer/Renderer.js +3 -3
  689. package/src/main/js/sap/ushell/renderer/Shell.controller.js +392 -155
  690. package/src/main/js/sap/ushell/renderer/Shell.view.js +1 -1
  691. package/src/main/js/sap/ushell/renderer/ShellLayout.js +10 -2
  692. package/src/main/js/sap/ushell/renderer/allMyApps/AllMyApps.controller.js +1 -1
  693. package/src/main/js/sap/ushell/renderer/allMyApps/AllMyAppsManager.js +1 -1
  694. package/src/main/js/sap/ushell/renderer/resources/resources.properties +37 -8
  695. package/src/main/js/sap/ushell/renderer/resources/resources_ar.properties +11 -2
  696. package/src/main/js/sap/ushell/renderer/resources/resources_bg.properties +11 -2
  697. package/src/main/js/sap/ushell/renderer/resources/resources_ca.properties +11 -2
  698. package/src/main/js/sap/ushell/renderer/resources/resources_cnr.properties +11 -2
  699. package/src/main/js/sap/ushell/renderer/resources/resources_cs.properties +11 -2
  700. package/src/main/js/sap/ushell/renderer/resources/resources_cy.properties +11 -2
  701. package/src/main/js/sap/ushell/renderer/resources/resources_da.properties +11 -2
  702. package/src/main/js/sap/ushell/renderer/resources/resources_de.properties +12 -3
  703. package/src/main/js/sap/ushell/renderer/resources/resources_el.properties +11 -2
  704. package/src/main/js/sap/ushell/renderer/resources/resources_en.properties +11 -2
  705. package/src/main/js/sap/ushell/renderer/resources/resources_en_GB.properties +11 -2
  706. package/src/main/js/sap/ushell/renderer/resources/resources_en_US_saprigi.properties +11 -2
  707. package/src/main/js/sap/ushell/renderer/resources/resources_es.properties +11 -2
  708. package/src/main/js/sap/ushell/renderer/resources/resources_es_MX.properties +11 -2
  709. package/src/main/js/sap/ushell/renderer/resources/resources_et.properties +11 -2
  710. package/src/main/js/sap/ushell/renderer/resources/resources_fi.properties +11 -2
  711. package/src/main/js/sap/ushell/renderer/resources/resources_fr.properties +11 -2
  712. package/src/main/js/sap/ushell/renderer/resources/resources_fr_CA.properties +11 -2
  713. package/src/main/js/sap/ushell/renderer/resources/resources_hi.properties +11 -2
  714. package/src/main/js/sap/ushell/renderer/resources/resources_hr.properties +11 -2
  715. package/src/main/js/sap/ushell/renderer/resources/resources_hu.properties +11 -2
  716. package/src/main/js/sap/ushell/renderer/resources/resources_id.properties +11 -2
  717. package/src/main/js/sap/ushell/renderer/resources/resources_it.properties +11 -2
  718. package/src/main/js/sap/ushell/renderer/resources/resources_iw.properties +11 -2
  719. package/src/main/js/sap/ushell/renderer/resources/resources_ja.properties +11 -2
  720. package/src/main/js/sap/ushell/renderer/resources/resources_kk.properties +51 -42
  721. package/src/main/js/sap/ushell/renderer/resources/resources_ko.properties +11 -2
  722. package/src/main/js/sap/ushell/renderer/resources/resources_lt.properties +13 -4
  723. package/src/main/js/sap/ushell/renderer/resources/resources_lv.properties +11 -2
  724. package/src/main/js/sap/ushell/renderer/resources/resources_mk.properties +11 -2
  725. package/src/main/js/sap/ushell/renderer/resources/resources_ms.properties +11 -2
  726. package/src/main/js/sap/ushell/renderer/resources/resources_nl.properties +11 -2
  727. package/src/main/js/sap/ushell/renderer/resources/resources_no.properties +11 -2
  728. package/src/main/js/sap/ushell/renderer/resources/resources_pl.properties +11 -2
  729. package/src/main/js/sap/ushell/renderer/resources/resources_pt.properties +11 -2
  730. package/src/main/js/sap/ushell/renderer/resources/resources_pt_PT.properties +11 -2
  731. package/src/main/js/sap/ushell/renderer/resources/resources_ro.properties +11 -2
  732. package/src/main/js/sap/ushell/renderer/resources/resources_ru.properties +11 -2
  733. package/src/main/js/sap/ushell/renderer/resources/resources_sh.properties +11 -2
  734. package/src/main/js/sap/ushell/renderer/resources/resources_sk.properties +11 -2
  735. package/src/main/js/sap/ushell/renderer/resources/resources_sl.properties +13 -4
  736. package/src/main/js/sap/ushell/renderer/resources/resources_sr.properties +11 -2
  737. package/src/main/js/sap/ushell/renderer/resources/resources_sv.properties +11 -2
  738. package/src/main/js/sap/ushell/renderer/resources/resources_th.properties +11 -2
  739. package/src/main/js/sap/ushell/renderer/resources/resources_tr.properties +11 -2
  740. package/src/main/js/sap/ushell/renderer/resources/resources_uk.properties +11 -2
  741. package/src/main/js/sap/ushell/renderer/resources/resources_vi.properties +11 -2
  742. package/src/main/js/sap/ushell/renderer/resources/resources_zh_CN.properties +11 -2
  743. package/src/main/js/sap/ushell/renderer/resources/resources_zh_TW.properties +11 -2
  744. package/src/main/js/sap/ushell/renderer/search/searchComponent/Component.js +1 -1
  745. package/src/main/js/sap/ushell/renderer/search/searchComponent/controller/CEPSearchApp.controller.js +1 -1
  746. package/src/main/js/sap/ushell/renderer/search/searchComponent/controller/SearchApp.controller.js +1 -1
  747. package/src/main/js/sap/ushell/renderer/search/searchComponent/manifest.json +1 -1
  748. package/src/main/js/sap/ushell/renderer/search/searchComponent/view/CEPSearchApp.view.js +1 -1
  749. package/src/main/js/sap/ushell/renderer/search/searchComponent/view/SearchApp.view.js +1 -1
  750. package/src/main/js/sap/ushell/renderer/search/util.js +1 -1
  751. package/src/main/js/sap/ushell/renderer/shellHeader/ShellHeader.controller.js +13 -7
  752. package/src/main/js/sap/ushell/renderer/utils.js +1 -1
  753. package/src/main/js/sap/ushell/renderers/fiori2/History.js +1 -1
  754. package/src/main/js/sap/ushell/renderers/fiori2/LogonFrameProvider.js +1 -1
  755. package/src/main/js/sap/ushell/renderers/fiori2/Renderer.js +1 -1
  756. package/src/main/js/sap/ushell/renderers/fiori2/RendererExtensions.js +1 -1
  757. package/src/main/js/sap/ushell/renderers/fiori2/Shell.controller.js +1 -1
  758. package/src/main/js/sap/ushell/renderers/fiori2/Shell.view.js +1 -1
  759. package/src/main/js/sap/ushell/renderers/fiori2/allMyApps/AllMyAppsManager.js +1 -1
  760. package/src/main/js/sap/ushell/resources.js +1 -1
  761. package/src/main/js/sap/ushell/services/AllMyApps.js +1 -1
  762. package/src/main/js/sap/ushell/services/AppConfiguration.js +2 -2
  763. package/src/main/js/sap/ushell/services/AppLifeCycle.js +4 -3
  764. package/src/main/js/sap/ushell/services/AppState.js +2 -2
  765. package/src/main/js/sap/ushell/services/AppType.js +1 -1
  766. package/src/main/js/sap/ushell/services/Bookmark.js +2 -2
  767. package/src/main/js/sap/ushell/services/BookmarkV2.js +2 -2
  768. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Formatter.js +2 -2
  769. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundIndex.js +2 -2
  770. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundProvider.js +2 -2
  771. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/ParameterMapping.js +1 -1
  772. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/PrelaunchOperations.js +2 -2
  773. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Search.js +2 -2
  774. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/StagedLogger.js +2 -2
  775. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/SystemContext.js +2 -2
  776. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Utils.js +2 -2
  777. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/VirtualInbounds.js +2 -2
  778. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/XAppStateProcessing.js +2 -2
  779. package/src/main/js/sap/ushell/services/ClientSideTargetResolution.js +2 -2
  780. package/src/main/js/sap/ushell/services/CommonDataModel/PersonalizationProcessor.js +1 -1
  781. package/src/main/js/sap/ushell/services/CommonDataModel/SiteConverter.js +2 -2
  782. package/src/main/js/sap/ushell/services/CommonDataModel/vizTypeDefaults/VizTypeDefaults.js +2 -2
  783. package/src/main/js/sap/ushell/services/CommonDataModel.js +2 -13
  784. package/src/main/js/sap/ushell/services/Configuration.js +2 -2
  785. package/src/main/js/sap/ushell/services/ConfigurationDefaults.js +2 -2
  786. package/src/main/js/sap/ushell/services/Container.js +1 -1
  787. package/src/main/js/sap/ushell/services/ContentExtensionAdapterFactory.js +2 -2
  788. package/src/main/js/sap/ushell/services/CrossApplicationNavigation.js +2 -2
  789. package/src/main/js/sap/ushell/services/DarkModeSupport.js +15 -6
  790. package/src/main/js/sap/ushell/services/EndUserFeedback.js +1 -1
  791. package/src/main/js/sap/ushell/services/Extension/Item.js +2 -2
  792. package/src/main/js/sap/ushell/services/Extension.js +2 -2
  793. package/src/main/js/sap/ushell/services/FlpLaunchPage.js +2 -2
  794. package/src/main/js/sap/ushell/services/FrameBoundExtension/FloatingContainer.js +2 -2
  795. package/src/main/js/sap/ushell/services/FrameBoundExtension/Footer.js +2 -2
  796. package/src/main/js/sap/ushell/services/FrameBoundExtension/Item.js +2 -2
  797. package/src/main/js/sap/ushell/services/FrameBoundExtension/SidePane.js +2 -2
  798. package/src/main/js/sap/ushell/services/FrameBoundExtension/ToolArea.js +2 -2
  799. package/src/main/js/sap/ushell/services/FrameBoundExtension/UserSettingsEntry.js +63 -0
  800. package/src/main/js/sap/ushell/services/FrameBoundExtension.js +14 -10
  801. package/src/main/js/sap/ushell/services/LaunchPage.js +2 -2
  802. package/src/main/js/sap/ushell/services/Menu.js +2 -2
  803. package/src/main/js/sap/ushell/services/Message.js +2 -2
  804. package/src/main/js/sap/ushell/services/MessageBroker/MessageBrokerEngine.js +269 -143
  805. package/src/main/js/sap/ushell/services/MessageBroker.js +2 -2
  806. package/src/main/js/sap/ushell/services/MessageInternal.js +2 -2
  807. package/src/main/js/sap/ushell/services/NavTargetResolution.js +1 -1
  808. package/src/main/js/sap/ushell/services/NavTargetResolutionInternal.js +1 -1
  809. package/src/main/js/sap/ushell/services/Navigation/compatibility.js +2 -2
  810. package/src/main/js/sap/ushell/services/Navigation/utils.js +2 -2
  811. package/src/main/js/sap/ushell/services/Navigation.js +6 -6
  812. package/src/main/js/sap/ushell/services/NavigationDataProvider.js +2 -2
  813. package/src/main/js/sap/ushell/services/Notifications.js +1 -1
  814. package/src/main/js/sap/ushell/services/NotificationsV2.js +1 -1
  815. package/src/main/js/sap/ushell/services/PageBuilding.js +2 -2
  816. package/src/main/js/sap/ushell/services/PagePersistence.js +2 -2
  817. package/src/main/js/sap/ushell/services/PageReferencing.js +2 -2
  818. package/src/main/js/sap/ushell/services/Pages.js +2 -2
  819. package/src/main/js/sap/ushell/services/Personalization.js +2 -2
  820. package/src/main/js/sap/ushell/services/PersonalizationV2/ContextContainer.js +1 -1
  821. package/src/main/js/sap/ushell/services/PersonalizationV2/Personalizer.js +1 -1
  822. package/src/main/js/sap/ushell/services/PersonalizationV2/TransientPersonalizer.js +1 -1
  823. package/src/main/js/sap/ushell/services/PersonalizationV2/Variant.js +1 -1
  824. package/src/main/js/sap/ushell/services/PersonalizationV2/VariantSet.js +1 -1
  825. package/src/main/js/sap/ushell/services/PersonalizationV2/VariantSetAdapter.js +1 -1
  826. package/src/main/js/sap/ushell/services/PersonalizationV2/WindowAdapter.js +1 -1
  827. package/src/main/js/sap/ushell/services/PersonalizationV2/WindowAdapterContainer.js +1 -1
  828. package/src/main/js/sap/ushell/services/PersonalizationV2/constants.js +1 -1
  829. package/src/main/js/sap/ushell/services/PersonalizationV2/constants.private.js +1 -1
  830. package/src/main/js/sap/ushell/services/PersonalizationV2/utils.js +1 -1
  831. package/src/main/js/sap/ushell/services/PersonalizationV2.js +2 -2
  832. package/src/main/js/sap/ushell/services/PluginManager/Extensions.js +2 -2
  833. package/src/main/js/sap/ushell/services/PluginManager/HeaderExtensions.js +2 -2
  834. package/src/main/js/sap/ushell/services/PluginManager/MenuExtensions.js +2 -2
  835. package/src/main/js/sap/ushell/services/PluginManager/SimpleExpression.js +89 -0
  836. package/src/main/js/sap/ushell/services/PluginManager.js +68 -25
  837. package/src/main/js/sap/ushell/services/ReferenceResolver.js +4 -4
  838. package/src/main/js/sap/ushell/services/Search.js +2 -2
  839. package/src/main/js/sap/ushell/services/SearchCEP.js +2 -2
  840. package/src/main/js/sap/ushell/services/SearchableContent.js +2 -2
  841. package/src/main/js/sap/ushell/services/ShellNavigation.js +2 -2
  842. package/src/main/js/sap/ushell/services/ShellNavigationHashChanger.js +1 -1
  843. package/src/main/js/sap/ushell/services/ShellNavigationInternal.js +1 -1
  844. package/src/main/js/sap/ushell/services/SmartNavigation.js +2 -2
  845. package/src/main/js/sap/ushell/services/SpaceContent.js +2 -2
  846. package/src/main/js/sap/ushell/services/SupportTicket.js +1 -1
  847. package/src/main/js/sap/ushell/services/UITracer.js +2 -2
  848. package/src/main/js/sap/ushell/services/URLParsing.js +1 -1
  849. package/src/main/js/sap/ushell/services/URLShortening.js +2 -2
  850. package/src/main/js/sap/ushell/services/URLTemplate.js +2 -2
  851. package/src/main/js/sap/ushell/services/Ui5ComponentHandle.js +11 -1
  852. package/src/main/js/sap/ushell/services/Ui5ComponentLoader/utils.js +2 -2
  853. package/src/main/js/sap/ushell/services/Ui5ComponentLoader.js +2 -2
  854. package/src/main/js/sap/ushell/services/UsageAnalytics.js +1 -1
  855. package/src/main/js/sap/ushell/services/UserDefaultParameterPersistence.js +2 -2
  856. package/src/main/js/sap/ushell/services/UserDefaultParameters.js +2 -2
  857. package/src/main/js/sap/ushell/services/UserInfo.js +2 -2
  858. package/src/main/js/sap/ushell/services/UserRecents/RecentActivity.js +1 -1
  859. package/src/main/js/sap/ushell/services/UserRecents/RecentAppsUsage.js +1 -1
  860. package/src/main/js/sap/ushell/services/UserRecents/RecentsList.js +1 -1
  861. package/src/main/js/sap/ushell/services/UserRecents/UserRecentsBase.js +1 -1
  862. package/src/main/js/sap/ushell/services/UserRecents.js +2 -2
  863. package/src/main/js/sap/ushell/services/VisualizationDataProvider.js +2 -2
  864. package/src/main/js/sap/ushell/services/VisualizationInstantiation.js +2 -2
  865. package/src/main/js/sap/ushell/services/_AppState/AppStatePersistencyMethod.js +1 -1
  866. package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/ContentExtensionAdapterConfig.js +2 -2
  867. package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/FeaturedGroupConfig.js +2 -2
  868. package/src/main/js/sap/ushell/services/_CrossApplicationNavigation/utils.js +2 -2
  869. package/src/main/js/sap/ushell/services/_PageReferencing/PageReferencer.js +2 -2
  870. package/src/main/js/sap/ushell/services/_Personalization/ContextContainer.js +1 -1
  871. package/src/main/js/sap/ushell/services/_Personalization/PersonalizationContainer.js +1 -1
  872. package/src/main/js/sap/ushell/services/_Personalization/PersonalizationContainerVariant.js +1 -1
  873. package/src/main/js/sap/ushell/services/_Personalization/PersonalizationContainerVariantSet.js +1 -1
  874. package/src/main/js/sap/ushell/services/_Personalization/Personalizer.js +1 -1
  875. package/src/main/js/sap/ushell/services/_Personalization/TransientPersonalizer.js +1 -1
  876. package/src/main/js/sap/ushell/services/_Personalization/Variant.js +1 -1
  877. package/src/main/js/sap/ushell/services/_Personalization/VariantSet.js +1 -1
  878. package/src/main/js/sap/ushell/services/_Personalization/VariantSetAdapter.js +1 -1
  879. package/src/main/js/sap/ushell/services/_Personalization/WindowAdapter.js +1 -1
  880. package/src/main/js/sap/ushell/services/_Personalization/WindowAdapterContainer.js +1 -1
  881. package/src/main/js/sap/ushell/services/_Personalization/constants.js +1 -1
  882. package/src/main/js/sap/ushell/services/_Personalization/constants.private.js +1 -1
  883. package/src/main/js/sap/ushell/services/_Personalization/utils.js +1 -1
  884. package/src/main/js/sap/ushell/services/appstate/AppState.js +1 -1
  885. package/src/main/js/sap/ushell/services/appstate/AppStatePersistencyMethod.js +1 -1
  886. package/src/main/js/sap/ushell/services/appstate/AppStatePersistencySettings.js +1 -1
  887. package/src/main/js/sap/ushell/services/appstate/LimitedBuffer.js +1 -1
  888. package/src/main/js/sap/ushell/services/appstate/Sequentializer.js +1 -1
  889. package/src/main/js/sap/ushell/services/appstate/SequentializingAdapter.js +1 -1
  890. package/src/main/js/sap/ushell/services/appstate/WindowAdapter.js +1 -1
  891. package/src/main/js/sap/ushell/services/personalization/VariantSetAdapter.js +1 -1
  892. package/src/main/js/sap/ushell/state/BackNavigation.js +91 -0
  893. package/src/main/js/sap/ushell/state/BaseState.js +1 -1
  894. package/src/main/js/sap/ushell/state/BindingHelper.js +18 -15
  895. package/src/main/js/sap/ushell/state/ControlManager.js +1 -1
  896. package/src/main/js/sap/ushell/state/CurrentState.js +1 -1
  897. package/src/main/js/sap/ushell/state/KeepAlive.js +1 -1
  898. package/src/main/js/sap/ushell/state/ShellModel.js +1 -1
  899. package/src/main/js/sap/ushell/state/StateManager/LaunchpadState.js +1 -1
  900. package/src/main/js/sap/ushell/state/StateManager/Operation.js +1 -1
  901. package/src/main/js/sap/ushell/state/StateManager/ShellMode.js +1 -1
  902. package/src/main/js/sap/ushell/state/StateManager.js +7 -1
  903. package/src/main/js/sap/ushell/state/StateRules.js +1 -1
  904. package/src/main/js/sap/ushell/state/StrategyFactory/DefaultStrategy.js +1 -1
  905. package/src/main/js/sap/ushell/state/StrategyFactory/FloatingActionsStrategy.js +1 -1
  906. package/src/main/js/sap/ushell/state/StrategyFactory/FloatingContainerStrategy.js +1 -1
  907. package/src/main/js/sap/ushell/state/StrategyFactory/HeadEndItemsStrategy.js +1 -1
  908. package/src/main/js/sap/ushell/state/StrategyFactory/HeadItemsStrategy.js +4 -2
  909. package/src/main/js/sap/ushell/state/StrategyFactory/SidePaneStrategy.js +1 -1
  910. package/src/main/js/sap/ushell/state/StrategyFactory/SubHeaderStrategy.js +1 -1
  911. package/src/main/js/sap/ushell/state/StrategyFactory/UserActionsStrategy.js +7 -6
  912. package/src/main/js/sap/ushell/state/StrategyFactory.js +1 -1
  913. package/src/main/js/sap/ushell/support/plugins/flpConfig/FlpConfigurationPlugin.js +2 -2
  914. package/src/main/js/sap/ushell/themes/base/library.source.less +1 -1
  915. package/src/main/js/sap/ushell/themes/sap_belize/Section.less +6 -6
  916. package/src/main/js/sap/ushell/themes/sap_belize/TileContainer.less +9 -9
  917. package/src/main/js/sap/ushell/themes/sap_belize/library.source.less +1 -1
  918. package/src/main/js/sap/ushell/themes/sap_belize_base/library.source.less +1 -1
  919. package/src/main/js/sap/ushell/themes/sap_belize_hcb/HistoryScreen.less +1 -1
  920. package/src/main/js/sap/ushell/themes/sap_belize_hcb/library.source.less +1 -1
  921. package/src/main/js/sap/ushell/themes/sap_belize_hcw/HistoryScreen.less +1 -1
  922. package/src/main/js/sap/ushell/themes/sap_belize_hcw/library.source.less +1 -1
  923. package/src/main/js/sap/ushell/themes/sap_belize_plus/library.source.less +1 -1
  924. package/src/main/js/sap/ushell/themes/sap_bluecrystal/HistoryScreen.less +1 -1
  925. package/src/main/js/sap/ushell/themes/sap_bluecrystal/library.source.less +1 -1
  926. package/src/main/js/sap/ushell/themes/sap_bluecrystal_base/library.source.less +1 -1
  927. package/src/main/js/sap/ushell/themes/sap_fiori_3/Section.less +6 -6
  928. package/src/main/js/sap/ushell/themes/sap_fiori_3/TileContainer.less +7 -7
  929. package/src/main/js/sap/ushell/themes/sap_fiori_3/library.source.less +1 -1
  930. package/src/main/js/sap/ushell/themes/sap_fiori_3_dark/Section.less +6 -6
  931. package/src/main/js/sap/ushell/themes/sap_fiori_3_dark/ShellHeader.less +4 -4
  932. package/src/main/js/sap/ushell/themes/sap_fiori_3_dark/TileContainer.less +7 -7
  933. package/src/main/js/sap/ushell/themes/sap_fiori_3_dark/library.source.less +1 -1
  934. package/src/main/js/sap/ushell/themes/sap_fiori_3_hcb/library.source.less +1 -1
  935. package/src/main/js/sap/ushell/themes/sap_fiori_3_hcw/library.source.less +1 -1
  936. package/src/main/js/sap/ushell/themes/sap_hcb/HistoryScreen.less +1 -1
  937. package/src/main/js/sap/ushell/themes/sap_hcb/library.source.less +1 -1
  938. package/src/main/js/sap/ushell/themes/sap_horizon/Section.less +4 -6
  939. package/src/main/js/sap/ushell/themes/sap_horizon/TileContainer.less +7 -8
  940. package/src/main/js/sap/ushell/themes/sap_horizon/library.source.less +1 -1
  941. package/src/main/js/sap/ushell/themes/sap_horizon_dark/Section.less +7 -7
  942. package/src/main/js/sap/ushell/themes/sap_horizon_dark/TileContainer.less +7 -7
  943. package/src/main/js/sap/ushell/themes/sap_horizon_dark/library.source.less +1 -1
  944. package/src/main/js/sap/ushell/themes/sap_horizon_hcb/library.source.less +1 -1
  945. package/src/main/js/sap/ushell/themes/sap_horizon_hcw/library.source.less +1 -1
  946. package/src/main/js/sap/ushell/thirdparty/Icons.js +19 -0
  947. package/src/main/js/sap/ushell/thirdparty/Theme.js +130 -0
  948. package/src/main/js/sap/ushell/thirdparty/UserMenu.js +1819 -0
  949. package/src/main/js/sap/ushell/thirdparty/UserMenuAccount.js +104 -0
  950. package/src/main/js/sap/ushell/thirdparty/UserMenuItem.js +420 -0
  951. package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons.js +2508 -0
  952. package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons2.js +2508 -0
  953. package/src/main/js/sap/ushell/thirdparty/_dynamics/ar.js +7139 -0
  954. package/src/main/js/sap/ushell/thirdparty/_dynamics/ar_EG.js +7139 -0
  955. package/src/main/js/sap/ushell/thirdparty/_dynamics/ar_SA.js +7138 -0
  956. package/src/main/js/sap/ushell/thirdparty/_dynamics/bg.js +6031 -0
  957. package/src/main/js/sap/ushell/thirdparty/_dynamics/ca.js +6133 -0
  958. package/src/main/js/sap/ushell/thirdparty/_dynamics/cnr.js +6219 -0
  959. package/src/main/js/sap/ushell/thirdparty/_dynamics/cs.js +6759 -0
  960. package/src/main/js/sap/ushell/thirdparty/_dynamics/da.js +5977 -0
  961. package/src/main/js/sap/ushell/thirdparty/_dynamics/de.js +6098 -0
  962. package/src/main/js/sap/ushell/thirdparty/_dynamics/de_AT.js +6099 -0
  963. package/src/main/js/sap/ushell/thirdparty/_dynamics/de_CH.js +6097 -0
  964. package/src/main/js/sap/ushell/thirdparty/_dynamics/el.js +5882 -0
  965. package/src/main/js/sap/ushell/thirdparty/_dynamics/el_CY.js +5882 -0
  966. package/src/main/js/sap/ushell/thirdparty/_dynamics/en.js +6094 -0
  967. package/src/main/js/sap/ushell/thirdparty/_dynamics/en_AU.js +6134 -0
  968. package/src/main/js/sap/ushell/thirdparty/_dynamics/en_GB.js +6125 -0
  969. package/src/main/js/sap/ushell/thirdparty/_dynamics/en_HK.js +6136 -0
  970. package/src/main/js/sap/ushell/thirdparty/_dynamics/en_IE.js +6125 -0
  971. package/src/main/js/sap/ushell/thirdparty/_dynamics/en_IN.js +6132 -0
  972. package/src/main/js/sap/ushell/thirdparty/_dynamics/en_NZ.js +6125 -0
  973. package/src/main/js/sap/ushell/thirdparty/_dynamics/en_PG.js +6126 -0
  974. package/src/main/js/sap/ushell/thirdparty/_dynamics/en_SG.js +6132 -0
  975. package/src/main/js/sap/ushell/thirdparty/_dynamics/en_ZA.js +6126 -0
  976. package/src/main/js/sap/ushell/thirdparty/_dynamics/es.js +6153 -0
  977. package/src/main/js/sap/ushell/thirdparty/_dynamics/es_AR.js +6156 -0
  978. package/src/main/js/sap/ushell/thirdparty/_dynamics/es_BO.js +6155 -0
  979. package/src/main/js/sap/ushell/thirdparty/_dynamics/es_CL.js +6048 -0
  980. package/src/main/js/sap/ushell/thirdparty/_dynamics/es_CO.js +6048 -0
  981. package/src/main/js/sap/ushell/thirdparty/_dynamics/es_MX.js +6157 -0
  982. package/src/main/js/sap/ushell/thirdparty/_dynamics/es_PE.js +5939 -0
  983. package/src/main/js/sap/ushell/thirdparty/_dynamics/es_UY.js +5941 -0
  984. package/src/main/js/sap/ushell/thirdparty/_dynamics/es_VE.js +5940 -0
  985. package/src/main/js/sap/ushell/thirdparty/_dynamics/et.js +6077 -0
  986. package/src/main/js/sap/ushell/thirdparty/_dynamics/fa.js +6002 -0
  987. package/src/main/js/sap/ushell/thirdparty/_dynamics/fi.js +6245 -0
  988. package/src/main/js/sap/ushell/thirdparty/_dynamics/fr.js +6047 -0
  989. package/src/main/js/sap/ushell/thirdparty/_dynamics/fr_BE.js +6047 -0
  990. package/src/main/js/sap/ushell/thirdparty/_dynamics/fr_CA.js +6041 -0
  991. package/src/main/js/sap/ushell/thirdparty/_dynamics/fr_CH.js +6065 -0
  992. package/src/main/js/sap/ushell/thirdparty/_dynamics/fr_LU.js +6047 -0
  993. package/src/main/js/sap/ushell/thirdparty/_dynamics/he.js +6593 -0
  994. package/src/main/js/sap/ushell/thirdparty/_dynamics/hi.js +5911 -0
  995. package/src/main/js/sap/ushell/thirdparty/_dynamics/hr.js +6246 -0
  996. package/src/main/js/sap/ushell/thirdparty/_dynamics/hu.js +5995 -0
  997. package/src/main/js/sap/ushell/thirdparty/_dynamics/id.js +5783 -0
  998. package/src/main/js/sap/ushell/thirdparty/_dynamics/it.js +6036 -0
  999. package/src/main/js/sap/ushell/thirdparty/_dynamics/it_CH.js +6036 -0
  1000. package/src/main/js/sap/ushell/thirdparty/_dynamics/ja.js +5942 -0
  1001. package/src/main/js/sap/ushell/thirdparty/_dynamics/kk.js +5989 -0
  1002. package/src/main/js/sap/ushell/thirdparty/_dynamics/ko.js +5823 -0
  1003. package/src/main/js/sap/ushell/thirdparty/_dynamics/lt.js +6628 -0
  1004. package/src/main/js/sap/ushell/thirdparty/_dynamics/lv.js +6164 -0
  1005. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar.js +182 -0
  1006. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar2.js +650 -0
  1007. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar3.js +515 -0
  1008. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg.js +182 -0
  1009. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg2.js +650 -0
  1010. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg3.js +515 -0
  1011. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca.js +182 -0
  1012. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca2.js +650 -0
  1013. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca3.js +515 -0
  1014. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr.js +182 -0
  1015. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr2.js +650 -0
  1016. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr3.js +515 -0
  1017. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs.js +182 -0
  1018. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs2.js +650 -0
  1019. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs3.js +515 -0
  1020. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy.js +182 -0
  1021. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy2.js +650 -0
  1022. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy3.js +515 -0
  1023. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da.js +182 -0
  1024. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da2.js +650 -0
  1025. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da3.js +515 -0
  1026. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de.js +182 -0
  1027. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de2.js +650 -0
  1028. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de3.js +515 -0
  1029. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el.js +182 -0
  1030. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el2.js +650 -0
  1031. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el3.js +515 -0
  1032. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en.js +182 -0
  1033. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en2.js +650 -0
  1034. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en3.js +515 -0
  1035. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB.js +182 -0
  1036. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB2.js +650 -0
  1037. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB3.js +515 -0
  1038. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd.js +182 -0
  1039. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd2.js +650 -0
  1040. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd3.js +515 -0
  1041. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi.js +182 -0
  1042. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi2.js +656 -0
  1043. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi3.js +542 -0
  1044. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc.js +182 -0
  1045. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc2.js +650 -0
  1046. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc3.js +515 -0
  1047. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es.js +182 -0
  1048. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es2.js +650 -0
  1049. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es3.js +515 -0
  1050. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX.js +182 -0
  1051. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX2.js +650 -0
  1052. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX3.js +515 -0
  1053. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et.js +182 -0
  1054. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et2.js +650 -0
  1055. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et3.js +515 -0
  1056. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi.js +182 -0
  1057. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi2.js +650 -0
  1058. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi3.js +515 -0
  1059. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr.js +182 -0
  1060. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr2.js +650 -0
  1061. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr3.js +515 -0
  1062. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA.js +182 -0
  1063. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA2.js +650 -0
  1064. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA3.js +515 -0
  1065. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi.js +182 -0
  1066. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi2.js +650 -0
  1067. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi3.js +515 -0
  1068. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr.js +182 -0
  1069. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr2.js +650 -0
  1070. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr3.js +515 -0
  1071. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu.js +182 -0
  1072. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu2.js +650 -0
  1073. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu3.js +515 -0
  1074. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_in.js +182 -0
  1075. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_in2.js +266 -0
  1076. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_in3.js +143 -0
  1077. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it.js +182 -0
  1078. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it2.js +650 -0
  1079. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it3.js +515 -0
  1080. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw.js +182 -0
  1081. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw2.js +650 -0
  1082. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw3.js +515 -0
  1083. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja.js +182 -0
  1084. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja2.js +650 -0
  1085. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja3.js +515 -0
  1086. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk.js +182 -0
  1087. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk2.js +650 -0
  1088. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk3.js +515 -0
  1089. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko.js +182 -0
  1090. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko2.js +650 -0
  1091. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko3.js +515 -0
  1092. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt.js +182 -0
  1093. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt2.js +650 -0
  1094. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt3.js +515 -0
  1095. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv.js +182 -0
  1096. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv2.js +650 -0
  1097. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv3.js +515 -0
  1098. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk.js +182 -0
  1099. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk2.js +650 -0
  1100. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk3.js +515 -0
  1101. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms.js +182 -0
  1102. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms2.js +650 -0
  1103. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms3.js +515 -0
  1104. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl.js +182 -0
  1105. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl2.js +650 -0
  1106. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl3.js +515 -0
  1107. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no.js +182 -0
  1108. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no2.js +650 -0
  1109. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no3.js +515 -0
  1110. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl.js +182 -0
  1111. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl2.js +650 -0
  1112. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl3.js +515 -0
  1113. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt.js +182 -0
  1114. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt2.js +650 -0
  1115. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt3.js +515 -0
  1116. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT.js +182 -0
  1117. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT2.js +650 -0
  1118. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT3.js +515 -0
  1119. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro.js +182 -0
  1120. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro2.js +650 -0
  1121. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro3.js +515 -0
  1122. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru.js +182 -0
  1123. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru2.js +650 -0
  1124. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru3.js +515 -0
  1125. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh.js +182 -0
  1126. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh2.js +650 -0
  1127. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh3.js +515 -0
  1128. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk.js +182 -0
  1129. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk2.js +650 -0
  1130. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk3.js +515 -0
  1131. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl.js +182 -0
  1132. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl2.js +650 -0
  1133. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl3.js +515 -0
  1134. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr.js +182 -0
  1135. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr2.js +650 -0
  1136. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr3.js +515 -0
  1137. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv.js +182 -0
  1138. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv2.js +650 -0
  1139. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv3.js +515 -0
  1140. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th.js +182 -0
  1141. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th2.js +650 -0
  1142. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th3.js +515 -0
  1143. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr.js +182 -0
  1144. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr2.js +650 -0
  1145. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr3.js +515 -0
  1146. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk.js +182 -0
  1147. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk2.js +650 -0
  1148. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk3.js +515 -0
  1149. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi.js +182 -0
  1150. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi2.js +650 -0
  1151. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi3.js +515 -0
  1152. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN.js +182 -0
  1153. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN2.js +650 -0
  1154. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN3.js +515 -0
  1155. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW.js +182 -0
  1156. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW2.js +650 -0
  1157. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW3.js +515 -0
  1158. package/src/main/js/sap/ushell/thirdparty/_dynamics/mk.js +6095 -0
  1159. package/src/main/js/sap/ushell/thirdparty/_dynamics/ms.js +5617 -0
  1160. package/src/main/js/sap/ushell/thirdparty/_dynamics/nb.js +6085 -0
  1161. package/src/main/js/sap/ushell/thirdparty/_dynamics/nl.js +6252 -0
  1162. package/src/main/js/sap/ushell/thirdparty/_dynamics/nl_BE.js +6252 -0
  1163. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css.js +7 -0
  1164. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css10.js +7 -0
  1165. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css11.js +7 -0
  1166. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css12.js +7 -0
  1167. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css13.js +7 -0
  1168. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css14.js +7 -0
  1169. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css15.js +7 -0
  1170. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css16.js +7 -0
  1171. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css17.js +7 -0
  1172. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css18.js +7 -0
  1173. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css19.js +7 -0
  1174. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css2.js +7 -0
  1175. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css20.js +7 -0
  1176. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css21.js +7 -0
  1177. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css22.js +7 -0
  1178. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css23.js +7 -0
  1179. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css24.js +7 -0
  1180. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css3.js +7 -0
  1181. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css4.js +7 -0
  1182. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css5.js +7 -0
  1183. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css6.js +7 -0
  1184. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css7.js +7 -0
  1185. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css8.js +7 -0
  1186. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css9.js +7 -0
  1187. package/src/main/js/sap/ushell/thirdparty/_dynamics/pl.js +6639 -0
  1188. package/src/main/js/sap/ushell/thirdparty/_dynamics/pt.js +6165 -0
  1189. package/src/main/js/sap/ushell/thirdparty/_dynamics/pt_PT.js +6230 -0
  1190. package/src/main/js/sap/ushell/thirdparty/_dynamics/ro.js +6250 -0
  1191. package/src/main/js/sap/ushell/thirdparty/_dynamics/ru.js +6553 -0
  1192. package/src/main/js/sap/ushell/thirdparty/_dynamics/ru_UA.js +6553 -0
  1193. package/src/main/js/sap/ushell/thirdparty/_dynamics/sk.js +6482 -0
  1194. package/src/main/js/sap/ushell/thirdparty/_dynamics/sl.js +6494 -0
  1195. package/src/main/js/sap/ushell/thirdparty/_dynamics/sr.js +6291 -0
  1196. package/src/main/js/sap/ushell/thirdparty/_dynamics/sr_Latn.js +6278 -0
  1197. package/src/main/js/sap/ushell/thirdparty/_dynamics/sv.js +6126 -0
  1198. package/src/main/js/sap/ushell/thirdparty/_dynamics/th.js +5928 -0
  1199. package/src/main/js/sap/ushell/thirdparty/_dynamics/tr.js +6146 -0
  1200. package/src/main/js/sap/ushell/thirdparty/_dynamics/uk.js +6504 -0
  1201. package/src/main/js/sap/ushell/thirdparty/_dynamics/vi.js +5720 -0
  1202. package/src/main/js/sap/ushell/thirdparty/_dynamics/zh_CN.js +5770 -0
  1203. package/src/main/js/sap/ushell/thirdparty/_dynamics/zh_HK.js +5779 -0
  1204. package/src/main/js/sap/ushell/thirdparty/_dynamics/zh_SG.js +5779 -0
  1205. package/src/main/js/sap/ushell/thirdparty/_dynamics/zh_TW.js +5846 -0
  1206. package/src/main/js/sap/ushell/thirdparty/i18n.js +25 -0
  1207. package/src/main/js/sap/ushell/thirdparty/i18nBundle.js +9 -0
  1208. package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css25.js +7203 -0
  1209. package/src/main/js/sap/ushell/thirdparty/property.js +50 -0
  1210. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/dist/ListItem.js +81 -0
  1211. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/dist/ListItemBase.js +44 -0
  1212. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/dist/MenuItem.js +119 -0
  1213. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-base.js +198 -0
  1214. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/UserMenu.js +4 -0
  1215. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/UserMenuAccount.js +4 -0
  1216. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/UserMenuItem.js +4 -0
  1217. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/UserMenu.js +99 -0
  1218. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/UserMenuAccount.js +75 -0
  1219. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/UserMenuItem.js +39 -0
  1220. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori.js +333 -0
  1221. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-icons/AllIcons.js +26 -0
  1222. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents.js +636 -0
  1223. package/src/main/js/sap/ushell/thirdparty/webcomponents-base.js +26 -0
  1224. package/src/main/js/sap/ushell/thirdparty/webcomponents-fiori.js +146 -0
  1225. package/src/main/js/sap/ushell/thirdparty/webcomponents.js +385 -0
  1226. package/src/main/js/sap/ushell/ui/AppContainer.js +23 -9
  1227. package/src/main/js/sap/ushell/ui/AppContainerRenderer.js +1 -1
  1228. package/src/main/js/sap/ushell/ui/ContentNodeSelector.js +1 -1
  1229. package/src/main/js/sap/ushell/ui/ContentNodeSelectorRenderer.js +1 -1
  1230. package/src/main/js/sap/ushell/ui/ContentNodeTreeItem.js +1 -1
  1231. package/src/main/js/sap/ushell/ui/CustomGroupHeaderListItem.js +1 -1
  1232. package/src/main/js/sap/ushell/ui/CustomGroupHeaderListItemRenderer.js +1 -1
  1233. package/src/main/js/sap/ushell/ui/QuickAccess.js +1 -1
  1234. package/src/main/js/sap/ushell/ui/ShellHeader.js +215 -57
  1235. package/src/main/js/sap/ushell/ui/ShellHeaderRenderer.js +83 -44
  1236. package/src/main/js/sap/ushell/ui/appfinder/AppBox.js +1 -1
  1237. package/src/main/js/sap/ushell/ui/appfinder/AppBoxInternal.js +1 -1
  1238. package/src/main/js/sap/ushell/ui/appfinder/AppBoxInternalRenderer.js +1 -1
  1239. package/src/main/js/sap/ushell/ui/appfinder/AppBoxRenderer.js +1 -1
  1240. package/src/main/js/sap/ushell/ui/appfinder/PinButton.js +1 -1
  1241. package/src/main/js/sap/ushell/ui/appfinder/PinButtonRenderer.js +1 -1
  1242. package/src/main/js/sap/ushell/ui/bookmark/SaveOnPage.controller.js +1 -1
  1243. package/src/main/js/sap/ushell/ui/cards/FrequentActivitiesExtension.js +1 -1
  1244. package/src/main/js/sap/ushell/ui/cards/RecentActivitiesExtension.js +2 -2
  1245. package/src/main/js/sap/ushell/ui/footerbar/AboutButton.js +1 -1
  1246. package/src/main/js/sap/ushell/ui/footerbar/AboutDialog.controller.js +1 -1
  1247. package/src/main/js/sap/ushell/ui/footerbar/AddBookmarkButton.js +1 -1
  1248. package/src/main/js/sap/ushell/ui/footerbar/ContactSupportButton.js +1 -1
  1249. package/src/main/js/sap/ushell/ui/footerbar/ContactSupportDialog.controller.js +1 -1
  1250. package/src/main/js/sap/ushell/ui/footerbar/JamDiscussButton.js +1 -1
  1251. package/src/main/js/sap/ushell/ui/footerbar/JamShareButton.js +1 -1
  1252. package/src/main/js/sap/ushell/ui/footerbar/LogoutButton.js +1 -1
  1253. package/src/main/js/sap/ushell/ui/footerbar/SaveAsTile.controller.js +1 -1
  1254. package/src/main/js/sap/ushell/ui/footerbar/SaveAsTile.view.js +1 -1
  1255. package/src/main/js/sap/ushell/ui/footerbar/SendAsEmailButton.js +1 -1
  1256. package/src/main/js/sap/ushell/ui/launchpad/AccessibilityCustomData.js +1 -1
  1257. package/src/main/js/sap/ushell/ui/launchpad/ActionItem.js +1 -1
  1258. package/src/main/js/sap/ushell/ui/launchpad/AnchorItem.js +1 -1
  1259. package/src/main/js/sap/ushell/ui/launchpad/AnchorItemRenderer.js +1 -1
  1260. package/src/main/js/sap/ushell/ui/launchpad/AnchorNavigationBar.js +1 -1
  1261. package/src/main/js/sap/ushell/ui/launchpad/AnchorNavigationBarRenderer.js +1 -1
  1262. package/src/main/js/sap/ushell/ui/launchpad/CatalogEntryContainer.js +1 -1
  1263. package/src/main/js/sap/ushell/ui/launchpad/CatalogsContainer.js +1 -1
  1264. package/src/main/js/sap/ushell/ui/launchpad/DashboardGroupsContainer.js +1 -1
  1265. package/src/main/js/sap/ushell/ui/launchpad/DashboardGroupsContainerRenderer.js +1 -1
  1266. package/src/main/js/sap/ushell/ui/launchpad/ExtendedChangeDetection.js +2 -2
  1267. package/src/main/js/sap/ushell/ui/launchpad/FailedTileDialog.js +1 -1
  1268. package/src/main/js/sap/ushell/ui/launchpad/GroupHeaderActions.js +1 -1
  1269. package/src/main/js/sap/ushell/ui/launchpad/GroupListItem.js +1 -1
  1270. package/src/main/js/sap/ushell/ui/launchpad/GroupListItemRenderer.js +1 -1
  1271. package/src/main/js/sap/ushell/ui/launchpad/LinkTileWrapper.js +1 -1
  1272. package/src/main/js/sap/ushell/ui/launchpad/LinkTileWrapperRenderer.js +1 -1
  1273. package/src/main/js/sap/ushell/ui/launchpad/LoadingDialog.js +1 -1
  1274. package/src/main/js/sap/ushell/ui/launchpad/LoadingDialogRenderer.js +1 -1
  1275. package/src/main/js/sap/ushell/ui/launchpad/Page.js +1 -1
  1276. package/src/main/js/sap/ushell/ui/launchpad/PageRenderer.js +1 -1
  1277. package/src/main/js/sap/ushell/ui/launchpad/PlusTile.js +1 -1
  1278. package/src/main/js/sap/ushell/ui/launchpad/PlusTileRenderer.js +1 -1
  1279. package/src/main/js/sap/ushell/ui/launchpad/Section.js +2 -2
  1280. package/src/main/js/sap/ushell/ui/launchpad/SectionRenderer.js +1 -1
  1281. package/src/main/js/sap/ushell/ui/launchpad/Tile.js +1 -1
  1282. package/src/main/js/sap/ushell/ui/launchpad/TileContainer.js +1 -1
  1283. package/src/main/js/sap/ushell/ui/launchpad/TileContainerRenderer.js +1 -1
  1284. package/src/main/js/sap/ushell/ui/launchpad/TileContainerUtils.js +1 -1
  1285. package/src/main/js/sap/ushell/ui/launchpad/TileRenderer.js +1 -1
  1286. package/src/main/js/sap/ushell/ui/launchpad/TileState.js +1 -1
  1287. package/src/main/js/sap/ushell/ui/launchpad/TileStateInternal.js +1 -1
  1288. package/src/main/js/sap/ushell/ui/launchpad/TileStateInternalRenderer.js +1 -1
  1289. package/src/main/js/sap/ushell/ui/launchpad/TileStateRenderer.js +1 -1
  1290. package/src/main/js/sap/ushell/ui/launchpad/ViewPortState.js +1 -1
  1291. package/src/main/js/sap/ushell/ui/launchpad/VizInstance.js +1 -1
  1292. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceAbap.js +1 -1
  1293. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceBase.js +1 -1
  1294. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceCdm.js +1 -1
  1295. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceLaunchPage.js +1 -1
  1296. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceLink.js +1 -1
  1297. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceRenderer.js +1 -1
  1298. package/src/main/js/sap/ushell/ui/launchpad/section/CompactArea.js +2 -2
  1299. package/src/main/js/sap/ushell/ui/launchpad/section/CompactAreaRenderer.js +1 -1
  1300. package/src/main/js/sap/ushell/ui/shell/ContentRenderer.js +1 -1
  1301. package/src/main/js/sap/ushell/ui/shell/NavigationMiniTile.js +1 -1
  1302. package/src/main/js/sap/ushell/ui/shell/OverflowListItem.js +1 -1
  1303. package/src/main/js/sap/ushell/ui/shell/RightFloatingContainer.js +1 -1
  1304. package/src/main/js/sap/ushell/ui/shell/ShellAppTitle.js +1 -1
  1305. package/src/main/js/sap/ushell/ui/shell/ShellFloatingAction.js +1 -1
  1306. package/src/main/js/sap/ushell/ui/shell/ShellFloatingActionRenderer.js +1 -1
  1307. package/src/main/js/sap/ushell/ui/shell/ShellFloatingActions.js +1 -9
  1308. package/src/main/js/sap/ushell/ui/shell/ShellHeadItem.js +1 -1
  1309. package/src/main/js/sap/ushell/ui/shell/ShellNavigationMenu.js +1 -1
  1310. package/src/main/js/sap/ushell/ui/shell/SidePane.js +1 -1
  1311. package/src/main/js/sap/ushell/ui/shell/SubHeader.js +8 -51
  1312. package/src/main/js/sap/ushell/ui/shell/SysInfoBar.js +1 -1
  1313. package/src/main/js/sap/ushell/ui/shell/SysInfoBarRenderer.js +1 -1
  1314. package/src/main/js/sap/ushell/ui/shell/ToolArea.js +1 -1
  1315. package/src/main/js/sap/ushell/ui/shell/ToolAreaItem.js +2 -2
  1316. package/src/main/js/sap/ushell/ui/tile/DynamicTile.js +1 -1
  1317. package/src/main/js/sap/ushell/ui/tile/DynamicTileRenderer.js +1 -1
  1318. package/src/main/js/sap/ushell/ui/tile/ImageTile.js +1 -1
  1319. package/src/main/js/sap/ushell/ui/tile/ImageTileRenderer.js +1 -1
  1320. package/src/main/js/sap/ushell/ui/tile/StaticTile.js +1 -1
  1321. package/src/main/js/sap/ushell/ui/tile/StaticTileRenderer.js +1 -1
  1322. package/src/main/js/sap/ushell/ui/tile/TileBase.js +1 -1
  1323. package/src/main/js/sap/ushell/ui/tile/TileBaseRenderer.js +1 -1
  1324. package/src/main/js/sap/ushell/ui/utils.js +2 -2
  1325. package/src/main/js/sap/ushell/ui5service/ShellUIService.js +120 -13
  1326. package/src/main/js/sap/ushell/ui5service/ShellUIServiceFactory.js +2 -2
  1327. package/src/main/js/sap/ushell/ui5service/UserStatus.js +2 -2
  1328. package/src/main/js/sap/ushell/utils/AppType.js +1 -1
  1329. package/src/main/js/sap/ushell/utils/Deferred.js +1 -1
  1330. package/src/main/js/sap/ushell/utils/DynamicTileRequest.js +1 -1
  1331. package/src/main/js/sap/ushell/utils/HttpClient.js +1 -1
  1332. package/src/main/js/sap/ushell/utils/RestrictedJSONModel.js +17 -1
  1333. package/src/main/js/sap/ushell/utils/UriParameters.js +1 -1
  1334. package/src/main/js/sap/ushell/utils/UrlParsing.js +1 -1
  1335. package/src/main/js/sap/ushell/utils/UrlShortening.js +2 -2
  1336. package/src/main/js/sap/ushell/utils/WindowUtils.js +1 -1
  1337. package/src/main/js/sap/ushell/utils/chipsUtils.js +1 -1
  1338. package/src/main/js/sap/ushell/utils/objectOperations.js +1 -1
  1339. package/src/main/js/sap/ushell/utils/tilecard/TileCard.js +1 -1
  1340. package/src/main/js/sap/ushell/utils/tilecard/TileCardExtension.js +1 -1
  1341. package/src/main/js/sap/ushell/utils/type.js +1 -1
  1342. package/src/main/js/sap/ushell/utils/utilsCdm.js +1 -1
  1343. package/src/main/js/sap/ushell/utils/workpage/DestinationResolver.js +1 -1
  1344. package/src/main/js/sap/ushell/utils/workpage/WorkPageHost.js +2 -2
  1345. package/src/main/js/sap/ushell/utils/workpage/WorkPageService.js +3 -3
  1346. package/src/main/js/sap/ushell/utils/workpage/WorkPageVizInstantiation.js +3 -3
  1347. package/src/main/js/sap/ushell/utils/workpage/resources/resources_ar.properties +3 -0
  1348. package/src/main/js/sap/ushell/utils/workpage/resources/resources_bg.properties +3 -0
  1349. package/src/main/js/sap/ushell/utils/workpage/resources/resources_ca.properties +3 -0
  1350. package/src/main/js/sap/ushell/utils/workpage/resources/resources_cnr.properties +3 -0
  1351. package/src/main/js/sap/ushell/utils/workpage/resources/resources_cs.properties +3 -0
  1352. package/src/main/js/sap/ushell/utils/workpage/resources/resources_cy.properties +3 -0
  1353. package/src/main/js/sap/ushell/utils/workpage/resources/resources_da.properties +3 -0
  1354. package/src/main/js/sap/ushell/utils/workpage/resources/resources_de.properties +3 -0
  1355. package/src/main/js/sap/ushell/utils/workpage/resources/resources_el.properties +3 -0
  1356. package/src/main/js/sap/ushell/utils/workpage/resources/resources_en.properties +3 -0
  1357. package/src/main/js/sap/ushell/utils/workpage/resources/resources_en_GB.properties +3 -0
  1358. package/src/main/js/sap/ushell/utils/workpage/resources/resources_en_US_saprigi.properties +3 -0
  1359. package/src/main/js/sap/ushell/utils/workpage/resources/resources_es.properties +3 -0
  1360. package/src/main/js/sap/ushell/utils/workpage/resources/resources_es_MX.properties +3 -0
  1361. package/src/main/js/sap/ushell/utils/workpage/resources/resources_et.properties +3 -0
  1362. package/src/main/js/sap/ushell/utils/workpage/resources/resources_fi.properties +3 -0
  1363. package/src/main/js/sap/ushell/utils/workpage/resources/resources_fr.properties +3 -0
  1364. package/src/main/js/sap/ushell/utils/workpage/resources/resources_fr_CA.properties +3 -0
  1365. package/src/main/js/sap/ushell/utils/workpage/resources/resources_hi.properties +3 -0
  1366. package/src/main/js/sap/ushell/utils/workpage/resources/resources_hr.properties +3 -0
  1367. package/src/main/js/sap/ushell/utils/workpage/resources/resources_hu.properties +3 -0
  1368. package/src/main/js/sap/ushell/utils/workpage/resources/resources_id.properties +3 -0
  1369. package/src/main/js/sap/ushell/utils/workpage/resources/resources_it.properties +3 -0
  1370. package/src/main/js/sap/ushell/utils/workpage/resources/resources_iw.properties +3 -0
  1371. package/src/main/js/sap/ushell/utils/workpage/resources/resources_ja.properties +3 -0
  1372. package/src/main/js/sap/ushell/utils/workpage/resources/resources_kk.properties +3 -0
  1373. package/src/main/js/sap/ushell/utils/workpage/resources/resources_ko.properties +3 -0
  1374. package/src/main/js/sap/ushell/utils/workpage/resources/resources_lt.properties +3 -0
  1375. package/src/main/js/sap/ushell/utils/workpage/resources/resources_lv.properties +3 -0
  1376. package/src/main/js/sap/ushell/utils/workpage/resources/resources_mk.properties +3 -0
  1377. package/src/main/js/sap/ushell/utils/workpage/resources/resources_ms.properties +3 -0
  1378. package/src/main/js/sap/ushell/utils/workpage/resources/resources_nl.properties +3 -0
  1379. package/src/main/js/sap/ushell/utils/workpage/resources/resources_no.properties +3 -0
  1380. package/src/main/js/sap/ushell/utils/workpage/resources/resources_pl.properties +3 -0
  1381. package/src/main/js/sap/ushell/utils/workpage/resources/resources_pt.properties +3 -0
  1382. package/src/main/js/sap/ushell/utils/workpage/resources/resources_pt_PT.properties +3 -0
  1383. package/src/main/js/sap/ushell/utils/workpage/resources/resources_ro.properties +3 -0
  1384. package/src/main/js/sap/ushell/utils/workpage/resources/resources_ru.properties +3 -0
  1385. package/src/main/js/sap/ushell/utils/workpage/resources/resources_sh.properties +3 -0
  1386. package/src/main/js/sap/ushell/utils/workpage/resources/resources_sk.properties +3 -0
  1387. package/src/main/js/sap/ushell/utils/workpage/resources/resources_sl.properties +3 -0
  1388. package/src/main/js/sap/ushell/utils/workpage/resources/resources_sr.properties +3 -0
  1389. package/src/main/js/sap/ushell/utils/workpage/resources/resources_sv.properties +3 -0
  1390. package/src/main/js/sap/ushell/utils/workpage/resources/resources_th.properties +3 -0
  1391. package/src/main/js/sap/ushell/utils/workpage/resources/resources_tr.properties +3 -0
  1392. package/src/main/js/sap/ushell/utils/workpage/resources/resources_uk.properties +3 -0
  1393. package/src/main/js/sap/ushell/utils/workpage/resources/resources_vi.properties +3 -0
  1394. package/src/main/js/sap/ushell/utils/workpage/resources/resources_zh_CN.properties +3 -0
  1395. package/src/main/js/sap/ushell/utils/workpage/resources/resources_zh_TW.properties +3 -0
  1396. package/src/main/js/sap/ushell/utils.js +9 -1
  1397. package/src/test/js/sap/ushell/bootstrap/sandbox.js +2 -2
  1398. package/ui5.yaml +41 -5
  1399. package/src/main/js/sap/ushell/appRuntime/ui5/style.css +0 -48
@@ -1,20 +1,31 @@
1
- // Copyright (c) 2009-2023 SAP SE, All Rights Reserved
1
+ // Copyright (c) 2009-2025 SAP SE, All Rights Reserved
2
2
 
3
3
  /**
4
4
  * @fileOverview handle all the resources for the different applications.
5
- * @version 1.132.1
5
+ * @version 1.134.0
6
6
  */
7
7
  sap.ui.define([
8
+ "sap/base/util/deepEqual",
9
+ "sap/base/util/ObjectPath",
8
10
  "sap/ui/Device",
9
11
  "sap/ui/core/Element",
10
12
  "sap/ui/core/EventBus",
11
- "sap/ushell/components/applicationIntegration/Storage",
12
- "sap/ushell/components/applicationIntegration/application/BlueBoxHandler",
13
- "sap/ushell/components/applicationIntegration/application/Application",
14
- "sap/ushell/components/applicationIntegration/application/PostMessageUtils",
15
- "sap/ushell/components/applicationIntegration/application/WebGUIStatefulHandler",
16
- "sap/ushell/components/applicationIntegration/relatedServices/RelatedServices",
13
+ "sap/ushell/components/applicationIntegration/KeepAliveApps",
14
+ "sap/ushell/state/BackNavigation",
17
15
  "sap/ushell/components/applicationIntegration/configuration/AppMeta",
16
+ "sap/ushell/components/applicationIntegration/contracts/EmbeddedUI5Handler",
17
+ "sap/ushell/components/applicationIntegration/contracts/StatefulContainerV1Handler",
18
+ "sap/ushell/components/applicationIntegration/contracts/StatefulContainerV2Handler",
19
+ "sap/ushell/components/applicationIntegration/ApplicationContainerCache",
20
+ "sap/ushell/components/applicationIntegration/PostMessageManager/AppruntimeHandler",
21
+ "sap/ushell/components/applicationIntegration/PostMessageManager/NWBCHandler",
22
+ "sap/ushell/components/applicationIntegration/PostMessageManager/LifecycleHandler",
23
+ "sap/ushell/components/applicationIntegration/PostMessageManager/ServiceHandler",
24
+ "sap/ushell/components/applicationIntegration/PostMessageManager/MessageBrokerHandler",
25
+ "sap/ushell/components/applicationIntegration/PostMessageManager",
26
+ "sap/ushell/components/applicationIntegration/PostMessagePluginInterface",
27
+ "sap/ushell/components/applicationIntegration/IframeApplicationContainer",
28
+ "sap/ushell/components/applicationIntegration/UI5ApplicationContainer",
18
29
  "sap/ushell/services/AppConfiguration",
19
30
  "sap/ushell/utils",
20
31
  "sap/ushell/Config",
@@ -36,18 +47,30 @@ sap.ui.define([
36
47
  "sap/ushell/state/KeepAlive",
37
48
  "sap/ushell/ui5service/ShellUIServiceFactory",
38
49
  "sap/ui/core/service/ServiceFactoryRegistry",
39
- "sap/base/util/ObjectPath"
50
+ "sap/ushell/library",
51
+ "sap/ushell/components/applicationIntegrationOld/AppLifeCycle"
40
52
  ], (
53
+ deepEqual,
54
+ ObjectPath,
41
55
  Device,
42
56
  Element,
43
57
  EventBus,
44
- Storage,
45
- BlueBoxHandler,
46
- Application,
47
- PostMessageUtils,
48
- WebGUIStatefulHandler,
49
- RelatedServices,
58
+ KeepAliveApps,
59
+ BackNavigation,
50
60
  AppMeta,
61
+ EmbeddedUI5Handler,
62
+ StatefulContainerV1Handler,
63
+ StatefulContainerV2Handler,
64
+ ApplicationContainerCache,
65
+ AppRuntimeHandler,
66
+ NWBCHandler,
67
+ LifecycleHandler,
68
+ ServiceHandler,
69
+ MessageBrokerHandler,
70
+ PostMessageManager,
71
+ PostMessagePluginInterface,
72
+ IframeApplicationContainer,
73
+ UI5ApplicationContainer,
51
74
  AppConfiguration,
52
75
  ushellUtils,
53
76
  Config,
@@ -69,10 +92,19 @@ sap.ui.define([
69
92
  KeepAlive,
70
93
  ShellUIServiceFactory,
71
94
  ServiceFactoryRegistry,
72
- ObjectPath
95
+ ushellLibrary,
96
+ AppLifeCycleFallback
73
97
  ) => {
74
98
  "use strict";
75
99
 
100
+ if (Config.last("/core/navigation/enableAppLifeCycleFallback")) {
101
+ ObjectPath.set("sap.ushell.components.applicationIntegration.AppLifeCycle", AppLifeCycleFallback);
102
+ return AppLifeCycleFallback;
103
+ }
104
+
105
+ // shortcut for sap.ushell.components.applicationIntegration.contracts.StatefulType
106
+ const StatefulType = ushellLibrary.components.applicationIntegration.contracts.StatefulType;
107
+
76
108
  // shortcut for sap.ushell.state.StateManager.ShellMode
77
109
  const ShellMode = StateManager.ShellMode;
78
110
 
@@ -89,11 +121,13 @@ sap.ui.define([
89
121
  // const CACHED_APP_TYPES = ["URL"];
90
122
 
91
123
  const KEEP_ALIVE_MODES = {
92
- FULL: "true",
93
- RESTRICTED: "restricted",
94
- FALSE: "false"
124
+ True: "true",
125
+ Restricted: "restricted",
126
+ False: ""
95
127
  };
96
128
 
129
+ const iValidIframeTimeout = 3500;
130
+
97
131
  function AppLifeCycle () {
98
132
  //Dangling controls is a queue of requests to change shell elements attributes, requested by the application in the process of createContent before the actual application state was apply.
99
133
  let bDisableHomeAppCache = false;
@@ -109,13 +143,6 @@ sap.ui.define([
109
143
  MessageBrokerEngine.connect("FLP");
110
144
  }
111
145
 
112
- /**
113
- * @returns {object} Returns the RelatedServices API.
114
- */
115
- this.service = function () {
116
- return RelatedServices;
117
- };
118
-
119
146
  /**
120
147
  * Sets the componentCreated promise for a given appId if it does not exist yet.
121
148
  * Returns the promise along with the resolve and reject functions.
@@ -156,12 +183,14 @@ sap.ui.define([
156
183
  /**
157
184
  * Returns the componentCreated promise for the given appId. If the promise does not yet exist, it is created.
158
185
  * @param {string} sStorageAppId The id of the created application.
159
- * @returns {Promise | undefined} The componentCreated promise for the given appId or undefined if no appId is given.
186
+ * @returns {Promise} The componentCreated promise for the given appId.
160
187
  * @private
161
188
  * @since 1.125.0
162
189
  */
163
- this._getComponentCreatedPromise = function (sStorageAppId) {
164
- if (!sStorageAppId) { return; }
190
+ this._getComponentCreatedPromise = async function (sStorageAppId) {
191
+ if (!sStorageAppId) {
192
+ return;
193
+ }
165
194
  return this._setComponentCreatedPromise(sStorageAppId).promise;
166
195
  };
167
196
 
@@ -185,20 +214,18 @@ sap.ui.define([
185
214
  * @param {object} oData
186
215
  */
187
216
  this._onComponentCreated = function (oEvent, sChannel, oData) {
188
- const oApp = oData.component;
189
- const sStorageAppId = this._normalizeAppId(oApp.getId());
190
- const oStorageEntry = Storage.get(sStorageAppId);
217
+ const oAppComponent = oData.component;
218
+ const sStorageAppId = this._normalizeAppId(oAppComponent.getId());
219
+ const oStorageEntry = KeepAliveApps.get(sStorageAppId);
191
220
 
192
221
  if (oStorageEntry) {
193
- oStorageEntry.app = oApp;
194
- Application.active(oStorageEntry.app);
195
-
222
+ oStorageEntry.app = oAppComponent;
196
223
  } else {
197
- oCurrentApplication.app = oApp;
224
+ oCurrentApplication.app = oAppComponent;
225
+ }
198
226
 
199
- if (oApp.active) {
200
- oApp.active();
201
- }
227
+ if (oAppComponent.active) {
228
+ oAppComponent.active();
202
229
  }
203
230
 
204
231
  this._resolveComponentCreatedPromise(sStorageAppId);
@@ -216,56 +243,108 @@ sap.ui.define([
216
243
  /**
217
244
  * @param {string} sStorageAppId
218
245
  */
219
- this._store = function (sStorageAppId) {
220
- const oStorageEntry = Storage.get(sStorageAppId);
246
+ this._storeApplication = async function (sStorageAppId) {
247
+ const oStorageEntry = KeepAliveApps.get(sStorageAppId);
221
248
 
222
249
  if (oStorageEntry) {
223
- Application.store(oStorageEntry);
250
+ const oApplicationContainer = oStorageEntry.container;
251
+ const bShouldBeKeptAlive = oApplicationContainer.getIsKeepAlive();
252
+ if (!bShouldBeKeptAlive) {
253
+ Log.error("Application should be kept alive but the flag is not set", null, "sap.ushell.components.applicationIntegration.AppLifeCycle");
254
+ return;
255
+ }
256
+
257
+ if (oApplicationContainer.isA("sap.ushell.components.applicationIntegration.IframeApplicationContainer")) {
258
+ if (oApplicationContainer.getStatefulType() === StatefulType.ContractV2) {
259
+ const bSupportsKeepAliveWithinSameFrame = StatefulContainerV2Handler.isStatefulContainerSupportingKeepAlive(oApplicationContainer);
260
+
261
+ if (bSupportsKeepAliveWithinSameFrame) {
262
+ const sActualAppFromId = oApplicationContainer.getCurrentAppId();
263
+ if (!sActualAppFromId) {
264
+ return; // stateful container is already stored
265
+ }
266
+
267
+ // return the container to the pool
268
+ this._setContainerReadyForReuse(oApplicationContainer);
269
+
270
+ await StatefulContainerV2Handler.storeAppWithinSameFrame(oApplicationContainer, sActualAppFromId);
271
+ }
272
+ }
273
+
274
+ await oApplicationContainer.sendRequest("sap.ushell.appRuntime.keepAliveAppHide", {}, false);
275
+
276
+ } else if (oApplicationContainer.isA("sap.ushell.components.applicationIntegration.UI5ApplicationContainer")) {
277
+ await EmbeddedUI5Handler.storeApp(oApplicationContainer, oStorageEntry);
278
+ }
279
+
280
+ // close storage entry
224
281
  oStorageEntry.stateStored = true;
282
+
283
+ // todo: [FLPCOREANDUX-10024] clarify how to handle appClosed events
284
+ EventBus.getInstance().publish("sap.ushell", "appClosed", oApplicationContainer);
225
285
  }
226
286
  };
227
287
 
228
288
  /**
289
+ * Should remove their foot print and prepare for possible reuse.
229
290
  * @param {string} sStorageAppId
230
291
  * @param {object} oApplicationContainer
231
- * @param {boolean} bHardDestroy
292
+ * @param {boolean} [bIgnoreReuse=false]
232
293
  * @returns {Promise} Resolves when the app is destroyed.
233
294
  */
234
- this._destroyApplication = async function (sStorageAppId, oApplicationContainer, bHardDestroy) {
235
- const oStorageEntry = Storage.get(sStorageAppId);
295
+ this._destroyApplication = async function (sStorageAppId, oApplicationContainer, bIgnoreReuse) {
296
+ if (typeof sStorageAppId !== "string" || !oApplicationContainer) {
297
+ return;
298
+ }
236
299
 
237
- if (!sStorageAppId || !oApplicationContainer) {
300
+ if (!oApplicationContainer.getCurrentAppId() && !bIgnoreReuse) {
301
+ // no active app in the container, only destroy this app if it shall not be reused.
238
302
  return;
239
303
  }
240
304
 
241
- // todo: [FLPCOREANDUX-10024] instead we should check for keepAlive property
242
- // ignore stateful destroy when hard destroy is requested
243
- if (oStorageEntry && !bHardDestroy) { // keep alive
244
- Storage.removeById(sStorageAppId);
305
+ const oStorageEntry = KeepAliveApps.get(sStorageAppId);
245
306
 
246
- // Stateful - appruntime (v1, v2 keepAlive is not stateful)
247
- if (BlueBoxHandler.isStatefulContainer(oStorageEntry.container)) {
248
- await BlueBoxHandler.statefulDestroyApp(oStorageEntry.container, sStorageAppId);
307
+ KeepAliveApps.removeById(sStorageAppId);
308
+ KeepAlive.destroy(oStorageEntry);
249
309
 
250
- // Return v1, v2 keepAlive to pool
251
- } else if (oStorageEntry.container.getIsKeepAlive() && BlueBoxHandler.isReusableContainer(oStorageEntry.container)) {
252
- BlueBoxHandler.returnUnusedKeepAliveContainer(oStorageEntry.container);
253
- await this._handleExitStateful(oStorageEntry.container, false);
310
+ // ===============================================================================
311
+ // try to reuse the iframe
254
312
 
255
- // embedded keep alive
256
- } else {
257
- this._removeApplicationContainerFromViewPort(sStorageAppId);
258
- BlueBoxHandler.deleteBlueBoxByContainer(oStorageEntry.container);
259
- oStorageEntry.container.destroy();
313
+ const bIsReusableContainer = oApplicationContainer.getStatefulType() !== StatefulType.NotSupported;
314
+ if (!bIgnoreReuse && bIsReusableContainer) {
315
+ // First return the container to the pool in case it was keep alive.
316
+ // the "return to pool" step requires the current metadata and has to be done before the actual close
317
+ this._setContainerReadyForReuse(oApplicationContainer);
318
+
319
+ // Second close the app
320
+ if (oApplicationContainer.getStatefulType() === StatefulType.ContractV2) {
321
+ await StatefulContainerV2Handler.destroyApp(oApplicationContainer, sStorageAppId);
322
+
323
+ } else if (oApplicationContainer.getStatefulType() === StatefulType.ContractV1) {
324
+ await StatefulContainerV1Handler.destroyApp(oApplicationContainer, sStorageAppId);
260
325
  }
326
+
327
+ // todo: [FLPCOREANDUX-10024] clarify how to handle appClosed events
328
+ EventBus.getInstance().publish("sap.ushell", "appClosed", oApplicationContainer);
261
329
  return;
262
330
  }
263
331
 
264
- if (bHardDestroy) {
265
- Storage.removeByContainer(oApplicationContainer);
332
+ // ===============================================================================
333
+ // the app or iframe cannot be reused (or should not be reused) so we destroy it
334
+
335
+ // try to close the iframe gracefully
336
+ if (oApplicationContainer.getStatefulType() === StatefulType.ContractV2) {
337
+ await StatefulContainerV2Handler.destroyApp(oApplicationContainer, sStorageAppId);
338
+
339
+ } else if (oApplicationContainer.getStatefulType() === StatefulType.ContractV1) {
340
+ await StatefulContainerV1Handler.destroyApp(oApplicationContainer, sStorageAppId);
266
341
  }
267
342
 
268
- this._removeApplicationContainerFromViewPort(sStorageAppId);
343
+ // remove all other related apps from the storage
344
+ KeepAliveApps.removeByContainer(oApplicationContainer, (oStorageEntry) => {
345
+ KeepAlive.destroy(oStorageEntry);
346
+ });
347
+
269
348
  /**
270
349
  * If the application running in an iframe registered for "before close" event,
271
350
  * we first post it a message to prepare for closing (usually, the app will close
@@ -290,158 +369,105 @@ sap.ui.define([
290
369
  );
291
370
  }
292
371
 
293
- if (oStorageEntry) {
294
- KeepAlive.destroy(oStorageEntry);
295
- }
372
+ ApplicationContainerCache.removeByContainer(oApplicationContainer);
373
+ this._removeApplicationContainerFromViewPort(oApplicationContainer);
296
374
 
297
- BlueBoxHandler.deleteBlueBoxByContainer(oApplicationContainer);
298
- Application.destroy(oApplicationContainer);
375
+ try {
376
+ oApplicationContainer.destroy();
377
+ } catch (oError) {
378
+ Log.error(
379
+ `Exception when trying to close application with id '${oApplicationContainer.getId()}'. This error must be fixed in order for FLP to operate properly.`,
380
+ oError,
381
+ "sap.ushell.components.applicationIntegration.AppLifeCycle"
382
+ );
383
+ }
299
384
  };
300
385
 
301
386
  /**
302
387
  * @param {string} sStorageAppId
303
388
  */
304
- this._restore = function (sStorageAppId) {
305
- const oStorageEntry = Storage.get(sStorageAppId);
389
+ this._restoreApplication = async function (sStorageAppId) {
390
+ const oStorageEntry = KeepAliveApps.get(sStorageAppId);
306
391
 
307
392
  if (oStorageEntry?.stateStored) {
308
393
  // 1) Extensions
309
- RelatedServices.restore(oStorageEntry.service);
394
+ BackNavigation.restore(oStorageEntry.service);
310
395
  AppMeta.restore(oStorageEntry.meta);
396
+
311
397
  // 2) Extension API
312
398
  ShellUIServiceFactory.restore(oStorageEntry);
399
+
313
400
  // 3) Application
314
- Application.restore(oStorageEntry);
315
- }
316
- };
401
+ const oApplicationContainer = oStorageEntry.container;
402
+ if (oApplicationContainer.isA("sap.ushell.components.applicationIntegration.IframeApplicationContainer")) {
403
+ await oApplicationContainer.sendRequest("sap.ushell.appRuntime.keepAliveAppShow", {}, false);
317
404
 
318
- /**
319
- * @param {object} oApplicationContainer
320
- * @param {boolean} bNavigationToFlpComponent
321
- * @param {boolean} [bForceCloseApp]
322
- * @returns {Promise} Resolves when the app is closed.
323
- */
324
- this._handleExitStateful = function (oApplicationContainer, bNavigationToFlpComponent, bForceCloseApp) {
325
- const sActualAppFromId = oApplicationContainer.getCurrentAppId();
326
-
327
- if (Storage.get(sActualAppFromId)) {
328
- const bDestroyApp = bForceCloseApp || (RelatedServices.isBackNavigation() && !bNavigationToFlpComponent);
329
- if (bDestroyApp) {
330
- EventBus.getInstance().publish("sap.ushell", "appClosed", oApplicationContainer);
331
- Storage.removeById(sActualAppFromId);
332
- return BlueBoxHandler.statefulDestroyApp(oApplicationContainer);
405
+ } else if (oApplicationContainer.isA("sap.ushell.components.applicationIntegration.UI5ApplicationContainer")) {
406
+ await EmbeddedUI5Handler.restoreAppAfterNavigate(oApplicationContainer, oStorageEntry);
333
407
  }
334
- // in this case the store of the currently running application, so we do not need to pass the sCacheId
335
- EventBus.getInstance().publish("sap.ushell", "appClosed", oApplicationContainer);
336
- return BlueBoxHandler.statefulStoreKeepAliveApp(oApplicationContainer, sActualAppFromId);
337
408
  }
338
- // in this case the destroy of the currently running application, so we do not need to pass the sCacheId
339
- return BlueBoxHandler.statefulDestroyApp(oApplicationContainer);
340
409
  };
341
410
 
342
411
  /**
343
412
  * @param {object} oOldApplicationContainer
344
413
  * @param {boolean} bNavigationToFlpComponent
345
- * @param {boolean} bFromAfterNavigate
346
414
  * @returns {Promise} Resolves when the app is closed.
347
415
  */
348
- this._handleExitApplication = async function (oOldApplicationContainer, bNavigationToFlpComponent, bFromAfterNavigate) {
416
+ this._handleExitApplication = async function (oOldApplicationContainer, bNavigationToFlpComponent) {
349
417
  if (!oOldApplicationContainer) {
350
418
  return;
351
419
  }
352
420
 
353
421
  const sOldStorageAppId = oOldApplicationContainer.getCurrentAppId();
354
-
355
422
  if (!sOldStorageAppId) {
423
+ // no active app in the container
356
424
  return;
357
425
  }
358
426
 
359
- // todo: [FLPCOREANDUX-10024] should not be necessary; the destroy should be callable multiple times w/o issues
360
- // if called from onAfterNavigate, do nothing if oOldApplicationContainer is stateful container, because
361
- // application was already closed at the beginning of 'handleCreateApplicationContainer'
362
- if (!bNavigationToFlpComponent
363
- && bFromAfterNavigate
364
- && (
365
- BlueBoxHandler.isStatefulContainer(oOldApplicationContainer)
366
- || BlueBoxHandler.isStatefulContainerInKeepAlivePool(oOldApplicationContainer)
367
- )
368
- ) {
369
- return;
370
- }
371
-
372
- const oOldStorageEntry = Storage.get(sOldStorageAppId);
373
- // STATEFUL
374
- if (BlueBoxHandler.isStatefulContainer(oOldApplicationContainer)) {
375
- await this._handleExitStateful(oOldApplicationContainer, bNavigationToFlpComponent);
376
-
377
- //STATELESS
378
- } else if (oOldStorageEntry) {
379
- // Back Navigation Case
380
- if (RelatedServices.isBackNavigation() && !bNavigationToFlpComponent) {
381
- //check if the Iframe needs to be cached instead of destroy
382
- if (oOldApplicationContainer.getIsKeepAlive() && BlueBoxHandler.isReusableContainer(oOldApplicationContainer)) {
383
- BlueBoxHandler.returnUnusedKeepAliveContainer(oOldApplicationContainer);
384
- await this._handleExitStateful(oOldApplicationContainer, bNavigationToFlpComponent);
427
+ const bNavigationBackToApp = BackNavigation.isBackNavigation() && !bNavigationToFlpComponent;
385
428
 
386
- } else {
387
- await this._destroyApplication(sOldStorageAppId, oOldApplicationContainer);
388
- }
429
+ // Back Navigation Case
430
+ if (bNavigationBackToApp) {
431
+ await this._destroyApplication(sOldStorageAppId, oOldApplicationContainer); // todo: [FLPCOREANDUX-10024] new marker
389
432
 
390
- // Forward Navigation Cases
391
- } else if (oOldApplicationContainer.getApplicationType() === "UI5") {
433
+ // Forward Navigation Case
434
+ // (and back navigation to FLP component)
435
+ } else {
436
+ // todo: [FLPCOREANDUX-10024] this should probably moved to a UI5 ApplicationContainer implementation
437
+ if (oOldApplicationContainer.isA("sap.ushell.components.applicationIntegration.UI5ApplicationContainer")) {
392
438
  // Wait until navigation's source app has been started completely, so that a later back navigation finds a proper app that
393
439
  // can be re-enabled (keep-alive scenario)
394
440
  await this._getComponentCreatedPromise(sOldStorageAppId);
395
- this._store(sOldStorageAppId);
396
- } else {
397
- this._store(sOldStorageAppId);
398
441
  }
399
- EventBus.getInstance().publish("sap.ushell", "appClosed", oOldApplicationContainer);
400
442
 
401
- // LEGACY STATEFUL (WebGUI)
402
- } else if (oOldApplicationContainer.getStatefulType() === BlueBoxHandler.STATEFUL_TYPES.GUI_V1) {
403
- if (bNavigationToFlpComponent) {
404
- await PostMessageUtils.postMessageToIframeApp(oOldApplicationContainer, "sap.gui", "triggerCloseSessionImmediately");
443
+ if (oOldApplicationContainer.getIsKeepAlive()) {
444
+ return this._storeApplication(sOldStorageAppId);
405
445
  }
406
-
407
- // THE REST...
408
- } else {
409
- //destroy the application and its resources
410
- await this._destroyApplication(sOldStorageAppId, oOldApplicationContainer);
446
+ return this._destroyApplication(sOldStorageAppId, oOldApplicationContainer);
411
447
  }
412
448
  };
413
449
 
414
450
  /**
415
451
  * @param {function(): boolean} fnFilterApps The filter function
452
+ * @param {boolean} [bIgnoreReuse=false]
416
453
  * @returns {Promise} Resolves when all keep alive apps are closed.
417
454
  */
418
- this._closeKeepAliveApps = function (fnFilterApps) {
455
+ this._destroyKeepAliveApps = async function (fnFilterApps, bIgnoreReuse) {
419
456
  try {
420
- const aKeepAliveRestrictedApps = [];
457
+ const aFilteredApps = [];
421
458
 
422
- Storage.forEach((oStorageEntry) => {
459
+ KeepAliveApps.forEach((oStorageEntry) => {
423
460
  if (fnFilterApps(oStorageEntry)) {
424
- aKeepAliveRestrictedApps.push(oStorageEntry);
461
+ aFilteredApps.push(oStorageEntry);
425
462
  }
426
463
  });
427
- const aClosePromises = aKeepAliveRestrictedApps.map((oRestrictedApp) => {
428
- //check if it needs to be cached instead of destroy
429
- const bCanHandleKeepAlive = BlueBoxHandler.isStatefulContainerSupportingKeepAlive(oRestrictedApp.container);
430
- const bIsKeepAlive = oRestrictedApp.container.getIsKeepAlive();
431
- const bIsReusable = BlueBoxHandler.isReusableContainer(oRestrictedApp.container);
432
-
433
- if (!bCanHandleKeepAlive && bIsKeepAlive && bIsReusable) {
434
- BlueBoxHandler.returnUnusedKeepAliveContainer(oRestrictedApp.container);
435
- // todo: [FLPCOREANDUX-10024] what is the actual difference between destroyApplication and handleExitStateful?
436
- return this._handleExitStateful(oRestrictedApp.container, true, true);
437
- }
438
-
439
- return this._destroyApplication(oRestrictedApp.appId, oRestrictedApp.container);
464
+ const aClosePromises = aFilteredApps.map((oFilteredApp) => {
465
+ return this._destroyApplication(oFilteredApp.appId, oFilteredApp.container, bIgnoreReuse);
440
466
  });
441
467
 
442
- return Promise.all(aClosePromises);
468
+ await Promise.allSettled(aClosePromises);
443
469
  } catch (e) {
444
- Log.error("closeKeepAliveApps call failed", e);
470
+ Log.error("_destroyKeepAliveApps call failed", e);
445
471
  }
446
472
  };
447
473
 
@@ -450,18 +476,18 @@ sap.ui.define([
450
476
  * @param {object} oFrom
451
477
  */
452
478
  this.onBeforeNavigate = function (sFromId, oFrom) {
453
- if (sFromId && oFrom && oFrom.isA("sap.ushell.components.container.ApplicationContainer")) {
479
+ if (sFromId && oFrom && oFrom.isA("sap.ushell.components.applicationIntegration.ApplicationContainer")) {
454
480
  const sStorageAppId = sFromId;
455
481
  const oApplicationContainer = oFrom;
456
482
 
457
- const bHasIframe = !!oApplicationContainer._getIFrame(); // todo: [FLPCOREANDUX-10024] is this really required?
458
- const bIsSupportedType = oApplicationContainer.getStatefulType() > BlueBoxHandler.STATEFUL_TYPES.NOT_SUPPORTED;
483
+ const bHasIframe = !!oApplicationContainer.isA("sap.ushell.components.applicationIntegration.IframeApplicationContainer"); // todo: [FLPCOREANDUX-10024] is this really required?
484
+ const bIsSupportedType = oApplicationContainer.getStatefulType() > StatefulType.NotSupported;
459
485
 
460
- const bCached = !!Storage.get(sStorageAppId);
486
+ const bCached = !!KeepAliveApps.get(sStorageAppId);
461
487
  const bSessionHandlingSupported = bHasIframe && bIsSupportedType;
462
488
 
463
- if (bCached || bSessionHandlingSupported) {
464
- PostMessageUtils.postMessageToIframeApp(oApplicationContainer, "sap.ushell.sessionHandler", "beforeApplicationHide", {}, false);
489
+ if (bHasIframe && (bCached || bSessionHandlingSupported)) {
490
+ oApplicationContainer.sendRequest("sap.ushell.sessionHandler.beforeApplicationHide", {}, false);
465
491
  }
466
492
  }
467
493
 
@@ -480,7 +506,7 @@ sap.ui.define([
480
506
  if (!sFromId) {
481
507
  sFromId = "";
482
508
  }
483
- //destroy the application if not cached or marked for reuse.
509
+
484
510
  const aFlpComponentIds = [
485
511
  "Shell-appfinder-component",
486
512
  "Shell-home-component",
@@ -491,71 +517,63 @@ sap.ui.define([
491
517
  ];
492
518
 
493
519
  const bNavigationToFlpComponent = aFlpComponentIds.some((sFlpComponentId) => sToId.includes(sFlpComponentId));
494
- const bNavigationFromFlpComponent = aFlpComponentIds.some((sFlpComponentId) => sFromId.includes(sFlpComponentId));
495
520
 
496
- if (bNavigationToFlpComponent) {
497
- await this._closeKeepAliveApps((oStorageEntry) => oStorageEntry.keepAliveMode === KEEP_ALIVE_MODES.RESTRICTED);
521
+ if (sToId && oTo) {
522
+ // ==== Navigation from [any] to app ====
523
+ if (oTo.isA("sap.ushell.components.applicationIntegration.ApplicationContainer")) {
524
+ const sStorageAppId = sToId;
525
+ const oApplicationContainer = oTo;
526
+
527
+ // this code must be at the beginning of the function to allow it to be processed once in
528
+ // a cycle of opening an app
529
+ if (oApplicationContainer.getIframeReusedForApp()) {
530
+ oApplicationContainer.setProperty("iframeReusedForApp", false, true);
531
+ if (oApplicationContainer.isA("sap.ushell.components.applicationIntegration.IframeApplicationContainer")) {
532
+ oApplicationContainer.sendRequest("sap.ushell.sessionHandler.afterApplicationShow", {}, false);
533
+ }
534
+ }
498
535
 
499
- Application.setActiveAppContainer(undefined);
536
+ if (KeepAliveApps.get(sStorageAppId)) {
537
+ await this._restoreApplication(sStorageAppId);
538
+ }
500
539
 
501
- // Clear custom About Dialog parameters
502
- AppInfoParameters.flush();
503
- } else if (sToId && oTo) {
504
- const sStorageAppId = sToId;
505
- const oApplicationContainer = oTo;
506
-
507
- // this code must be at the beginning of the function to allow it to be processed once in
508
- // a cycle of opening an app
509
- if (oApplicationContainer.getIframeReusedForApp()) {
510
- oApplicationContainer.setProperty("iframeReusedForApp", false, true);
511
- PostMessageUtils.postMessageToIframeApp(oApplicationContainer, "sap.ushell.sessionHandler", "afterApplicationShow", {}, false);
512
- }
540
+ // ==== Navigation from [any] to renderer managed component ====
541
+ } else {
542
+ // navigation to home
543
+ if (bNavigationToFlpComponent) {
544
+ await this._destroyKeepAliveApps((oStorageEntry) => oStorageEntry.keepAliveMode === KEEP_ALIVE_MODES.Restricted);
545
+ }
513
546
 
514
- if (Storage.get(sStorageAppId)) {
515
- this._restore(sStorageAppId);
547
+ // Clear custom About Dialog parameters
548
+ AppInfoParameters.flush();
516
549
  }
517
550
  }
518
551
 
519
- if (bNavigationFromFlpComponent) {
520
- //handle the case of appFinder
521
- if (sToId.indexOf("Shell-appfinder-component") > 0) {
522
- EventBus.getInstance().publish("sap.ushell", "appFinderAfterNavigate");
523
- }
524
-
525
- if (bDisableHomeAppCache) {
526
- try {
527
- this._removeApplicationContainerFromViewPort(sFromId);
528
- oFrom.destroy();
529
- } catch (oError) {
530
- Log.error(`Error when trying to destroy the home component: '${sToId}'`, oError);
531
- }
532
- }
533
- } else if (sFromId && oFrom) {
534
- const oApplicationContainer = oFrom;
552
+ if (sFromId && oFrom) {
553
+ // ==== Navigation from app to [any] ====
554
+ if (oFrom.isA("sap.ushell.components.applicationIntegration.ApplicationContainer")) {
555
+ const oApplicationContainer = oFrom;
535
556
 
536
- await this._handleExitApplication(oApplicationContainer, bNavigationToFlpComponent, true);
537
- }
538
- };
557
+ await this._handleExitApplication(oApplicationContainer, bNavigationToFlpComponent);
539
558
 
540
- /**
541
- * @param {object} oOldResolvedHashFragment
542
- * @param {object} oResolvedHashFragment
543
- * @returns {Promise} Resolves when the after navigation was handled.
544
- */
545
- // todo: [FLPCOREANDUX-10024] should be moved to onAfterNavigate
546
- this.handleAfterNavigate = async function (oResolvedHashFragment, oOldResolvedHashFragment) {
547
- if (!oOldResolvedHashFragment) {
548
- return;
549
- }
559
+ // ==== Navigation from renderer managed component to [any] ====
560
+ } else {
561
+ const sFromControlId = sFromId;
562
+ const oFromControl = oFrom;
550
563
 
551
- const sAppFrameworkId = ObjectPath.get("appCapabilities.appFrameworkId", oOldResolvedHashFragment);
552
- const bFromApplicationIsTR = ushellUtils.isTRApplicationType(oOldResolvedHashFragment.applicationType, sAppFrameworkId);
553
- const bToApplicationIsTR = ushellUtils.isTRApplicationType(oResolvedHashFragment.applicationType);
564
+ // handle the case of appFinder
565
+ if (sToId.indexOf("Shell-appfinder-component") > 0) {
566
+ EventBus.getInstance().publish("sap.ushell", "appFinderAfterNavigate");
567
+ }
554
568
 
555
- if (bFromApplicationIsTR && !bToApplicationIsTR) {
556
- const oPreviousStatefulContainer = BlueBoxHandler.getBlueBoxByUrl(oOldResolvedHashFragment.url);
557
- if (oPreviousStatefulContainer && oPreviousStatefulContainer.getStatefulType() === BlueBoxHandler.STATEFUL_TYPES.GUI_V1) {
558
- return WebGUIStatefulHandler.guiStatefulCloseCurrentApp(oPreviousStatefulContainer);
569
+ if (bDisableHomeAppCache) {
570
+ try {
571
+ this._removeApplicationContainerFromViewPort(oFromControl);
572
+ oFromControl.destroy();
573
+ } catch (oError) {
574
+ Log.error(`Error when trying to destroy the home component: '${sFromControlId}'`, oError);
575
+ }
576
+ }
559
577
  }
560
578
  }
561
579
  };
@@ -566,16 +584,15 @@ sap.ui.define([
566
584
  * @param {object} oResolvedHashFragment
567
585
  * @param {string} oParsedShellHash
568
586
  * @param {string} sKeepAliveMode
569
- * @returns {boolean} Returns true if the app was stored
587
+ * @returns {object} Returns the storage entry.
570
588
  */
571
- this._storeApp = function (sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode) {
572
- if (Storage.get(sStorageAppId)) {
573
- return false;
589
+ this._addStorageEntry = function (sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode) {
590
+ const oOldStorageEntry = KeepAliveApps.get(sStorageAppId);
591
+ if (oOldStorageEntry) {
592
+ return oOldStorageEntry;
574
593
  }
575
594
 
576
- oApplicationContainer.setProperty("isKeepAlive", true, true);
577
-
578
- Storage.set(sStorageAppId, {
595
+ const oNewStorageEntry = {
579
596
  service: {},
580
597
  shellHash: `#${UrlParsing.constructShellHash(oParsedShellHash)}`,
581
598
  appId: sStorageAppId,
@@ -583,16 +600,18 @@ sap.ui.define([
583
600
  currentState: null, // current state is stored before close see: sap/ushell/state/CurrentState
584
601
  controlManager: null, // control manager state is stored before close see: sap/ushell/state/ControlManager
585
602
  container: oApplicationContainer,
586
- meta: AppConfiguration.getMetadata(oResolvedHashFragment),
603
+ meta: undefined, // is set after application start
587
604
  app: undefined,
588
605
  keepAliveMode: sKeepAliveMode,
589
606
  appTarget: oResolvedHashFragment,
590
607
  ui5ComponentName: oResolvedHashFragment.ui5ComponentName,
591
608
  enableRouterRetrigger: bEnableRouterRetrigger,
592
609
  stateStored: false
593
- });
610
+ };
611
+
612
+ KeepAliveApps.set(sStorageAppId, oNewStorageEntry);
594
613
 
595
- return true;
614
+ return oNewStorageEntry;
596
615
  };
597
616
 
598
617
  /**
@@ -611,19 +630,19 @@ sap.ui.define([
611
630
  return;
612
631
  }
613
632
  const sStorageAppId = oCurrentApp.appId;
614
- const oStorageEntry = Storage.get(sStorageAppId);
633
+ const oStorageEntry = KeepAliveApps.get(sStorageAppId);
615
634
 
616
635
  if (!oStorageEntry) {
617
636
  // do not store for non-keep-alive apps
618
637
  return;
619
638
  }
620
639
 
621
- if (oStorageEntry.container.getApplicationType() === "UI5") {
640
+ if (oStorageEntry.container.isA("sap.ushell.components.applicationIntegration.UI5ApplicationContainer")) {
622
641
  await this._getComponentCreatedPromise(sStorageAppId);
623
642
  }
624
643
 
625
644
  // back navigation
626
- RelatedServices.store(oStorageEntry.service);
645
+ BackNavigation.store(oStorageEntry.service);
627
646
  // currentState, controlManager
628
647
  KeepAlive.store(oStorageEntry);
629
648
  // About Dialog
@@ -637,34 +656,30 @@ sap.ui.define([
637
656
  * @returns {string} Returns the keep alive mode.
638
657
  */
639
658
  this._calculateKeepAliveMode = function (sStorageAppId, oResolvedHashFragment, oParsedShellHash) {
659
+ const aKeepAliveModes = Object.values(KEEP_ALIVE_MODES);
660
+
640
661
  //generic intent currently can never be keep alive
641
662
  if (sStorageAppId === "application-Shell-startIntent") {
642
- return;
663
+ return KEEP_ALIVE_MODES.False;
643
664
  }
644
665
 
645
666
  // Global override in query parameters
646
667
  let sKeepAlive = new URLSearchParams(window.location.search).get("sap-keep-alive");
647
- if (sKeepAlive === KEEP_ALIVE_MODES.FULL || sKeepAlive === KEEP_ALIVE_MODES.RESTRICTED) {
668
+ if (aKeepAliveModes.includes(sKeepAlive)) {
648
669
  return sKeepAlive;
649
- } else if (sKeepAlive === KEEP_ALIVE_MODES.FALSE) {
650
- return;
651
670
  }
652
671
 
653
672
  // App override in intent parameters
654
673
  sKeepAlive = oParsedShellHash.params?.["sap-keep-alive"];
655
- if (sKeepAlive === KEEP_ALIVE_MODES.FULL || sKeepAlive === KEEP_ALIVE_MODES.RESTRICTED) {
674
+ if (aKeepAliveModes.includes(sKeepAlive)) {
656
675
  return sKeepAlive;
657
- } else if (sKeepAlive === KEEP_ALIVE_MODES.FALSE) {
658
- return;
659
676
  }
660
677
 
661
678
  // Magic override in resolved hash fragment
662
679
  if (oResolvedHashFragment.url) {
663
680
  sKeepAlive = UriParameters.fromURL(oResolvedHashFragment.url).get("sap-keep-alive");
664
- if (sKeepAlive === KEEP_ALIVE_MODES.FULL || sKeepAlive === KEEP_ALIVE_MODES.RESTRICTED) {
681
+ if (aKeepAliveModes.includes(sKeepAlive)) {
665
682
  return sKeepAlive;
666
- } else if (sKeepAlive === KEEP_ALIVE_MODES.FALSE) {
667
- return;
668
683
  }
669
684
  }
670
685
 
@@ -672,8 +687,10 @@ sap.ui.define([
672
687
  // can be overridden by the above checks
673
688
  const sShellHash = UrlParsing.constructShellHash(oParsedShellHash);
674
689
  if (sShellHash && ushellUtils.isRootIntent(sShellHash)) {
675
- return KEEP_ALIVE_MODES.FULL;
690
+ return KEEP_ALIVE_MODES.True;
676
691
  }
692
+
693
+ return KEEP_ALIVE_MODES.False;
677
694
  };
678
695
 
679
696
  /**
@@ -692,14 +709,9 @@ sap.ui.define([
692
709
  * @returns {Promise} Resolves when the app is reloaded.
693
710
  */
694
711
  this._reloadCurrentApp = async function (oData) {
695
- const oTmpAppContainer = BlueBoxHandler.getBlueBoxById(oData.sAppContainerId);
696
- if (oTmpAppContainer) {
697
- // todo: [FLPCOREANDUX-10024] this destroy/remove can be simplified
698
- const sTmpUrl = oTmpAppContainer.getUrl();
699
- BlueBoxHandler.removeCapabilities(oTmpAppContainer);
700
- Storage.removeByContainer(oTmpAppContainer);
701
- await this._destroyApplication(oData.sAppContainerId, oTmpAppContainer);
702
- BlueBoxHandler.deleteBlueBoxByUrl(sTmpUrl);
712
+ const oTargetApplicationContainer = ApplicationContainerCache.getById(oData.sAppContainerId);
713
+ if (oTargetApplicationContainer) {
714
+ await this._destroyApplication(oTargetApplicationContainer.getCurrentAppId(), oTargetApplicationContainer);
703
715
  }
704
716
 
705
717
  const ShellNavigationInternal = await Container.getServiceAsync("ShellNavigationInternal");
@@ -711,141 +723,74 @@ sap.ui.define([
711
723
  };
712
724
 
713
725
  /**
714
- * @param {string} sAppId
715
- * @param {object} oResolvedHashFragment
716
- * @param {object} oParsedShellHash
726
+ * Opens an application in an application container and sets it as the current application.
727
+ *
728
+ * @param {string} sStorageAppId the id of the application.
729
+ * @param {object} oResolvedHashFragment the resolved hash fragment.
730
+ * @param {object} bShouldBeCached Wether it should be cached.
717
731
  */
718
- this._openApp = async function (sAppId, oResolvedHashFragment, oParsedShellHash) {
719
- let oTmpAppContainer,
720
- oApplicationContainerToUse,
721
- sTmpUrl;
722
-
723
- //format appId, the is the storage identifier
724
- const sStorageAppId = `application-${sAppId}`;
732
+ this._createOrReuseApplicationContainer = function (sStorageAppId, oResolvedHashFragment, bShouldBeCached) {
733
+ let oApplicationContainer;
725
734
 
726
- //this case will handle the stateful containers flow.
727
- let oApplicationContainer = BlueBoxHandler.getBlueBoxByUrl(oResolvedHashFragment.url);
728
-
729
- const sKeepAliveMode = this._calculateKeepAliveMode(sStorageAppId, oResolvedHashFragment, oParsedShellHash);
730
- const bShouldBeCached = !!sKeepAliveMode;
731
-
732
- if (BlueBoxHandler.isStatefulContainer(oApplicationContainer)) {
733
- if (bShouldBeCached) {
734
- //this is the case where we have a stateful container and keep alive
735
- //is cached application
736
- let oStorageEntry = Storage.get(sStorageAppId);
737
- if (!oStorageEntry) {
738
- this._storeApp(sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode);
739
- oStorageEntry = Storage.get(sStorageAppId);
740
- }
735
+ const oStorageEntry = KeepAliveApps.get(sStorageAppId);
736
+ // app was kept alive
737
+ if (oStorageEntry && oStorageEntry.container) {
738
+ oApplicationContainer = oStorageEntry.container;
739
+ }
741
740
 
742
- oCurrentApplication = oStorageEntry;
743
- } else {
744
- //create application that is not persisted and not cashed
745
- oCurrentApplication = {
746
- appId: sStorageAppId,
747
- stt: "loading",
748
- container: oApplicationContainer,
749
- meta: AppConfiguration.getMetadata(oResolvedHashFragment),
750
- app: undefined
751
- };
752
- }
753
- } else if (bShouldBeCached) {
754
- //is cached application
755
- let oStorageEntry = Storage.get(sStorageAppId);
756
- if (!oStorageEntry) {
757
- oApplicationContainerToUse = BlueBoxHandler.findFreeContainerForNewKeepAliveApp(oResolvedHashFragment);
758
- if (!oApplicationContainerToUse) {
759
- //in cFLP, there night me an existing container of the same app from a different server,
760
- //so we will need to destroy it to avoid duplicate id
761
- oTmpAppContainer = BlueBoxHandler.getBlueBoxById(sStorageAppId) || this._getApplicationContainerFromViewPort(sAppId);
762
- // todo: [FLPCOREANDUX-10024] this destroy/remove can be simplified
763
- if (oTmpAppContainer) {
764
- sTmpUrl = oTmpAppContainer.getUrl();
765
- BlueBoxHandler.removeCapabilities(oTmpAppContainer);
766
- await this._destroyApplication(sStorageAppId, oTmpAppContainer);
767
- BlueBoxHandler.deleteBlueBoxByUrl(sTmpUrl);
768
- }
769
- oApplicationContainer = Application.createApplicationContainer(sStorageAppId, oResolvedHashFragment);
770
- } else {
771
- oApplicationContainer = oApplicationContainerToUse;
772
- }
741
+ // try to find a reusable container
742
+ if (!oApplicationContainer) {
743
+ const oStatefulApplicationContainer = ApplicationContainerCache.findFreeContainerByUrl(oResolvedHashFragment.url);
773
744
 
774
- this._storeApp(sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode);
775
- oStorageEntry = Storage.get(sStorageAppId);
745
+ const bIsReusableContainer = oStatefulApplicationContainer?.getStatefulType() !== StatefulType.NotSupported;
746
+ if (bIsReusableContainer) {
747
+ oApplicationContainer = oStatefulApplicationContainer;
776
748
  }
749
+ }
777
750
 
778
- oCurrentApplication = oStorageEntry;
779
- } else if (oResolvedHashFragment.applicationType === "TR" || oResolvedHashFragment.appCapabilities?.appFrameworkId === "GUI") {
780
- oApplicationContainer = BlueBoxHandler.getBlueBoxByUrl(oResolvedHashFragment.url);
781
- if (oApplicationContainer && oApplicationContainer.getStatefulType() !== BlueBoxHandler.STATEFUL_TYPES.GUI_V1) {
782
- oApplicationContainer = undefined;
783
- }
751
+ // create a new container if no reusable container was found
752
+ if (!oApplicationContainer) {
753
+ // Add new ShellUIService instance of the interface to the application container
754
+ // this will only be used by iframe applications
755
+ oResolvedHashFragment.shellUIService = oGlobalShellUIService.getInterface();
756
+ const sTargetUi5ComponentName = oResolvedHashFragment?.ui5ComponentName;
757
+ const bIsUI5App = !!sTargetUi5ComponentName;
758
+
759
+ const oCommonProperties = {
760
+ id: sStorageAppId,
761
+ currentAppId: sStorageAppId,
762
+ currentAppUrl: oResolvedHashFragment.url,
763
+ shellUIService: oResolvedHashFragment.shellUIService,
764
+ currentAppTargetResolution: oResolvedHashFragment,
765
+ applicationType: oResolvedHashFragment.applicationType,
766
+ openWithPostByAppParam: oResolvedHashFragment.openWithPostByAppParam,
767
+ reservedParameters: oResolvedHashFragment.reservedParameters,
768
+ systemAlias: oResolvedHashFragment.systemAlias,
769
+ targetNavigationMode: oResolvedHashFragment.targetNavigationMode,
770
+ url: oResolvedHashFragment.url,
771
+ frameworkId: oResolvedHashFragment.appCapabilities?.appFrameworkId
772
+ };
784
773
 
785
- //in cFLP, there night me an existing container of the same app from a different server,
786
- //so we will need to destroy it to avoid duplicate id
787
- oTmpAppContainer = BlueBoxHandler.getBlueBoxById(sStorageAppId) || this._getApplicationContainerFromViewPort(sAppId);
788
- // todo: [FLPCOREANDUX-10024] this destroy/remove can be simplified
789
- if (oTmpAppContainer && (!oApplicationContainer || oTmpAppContainer !== oApplicationContainer)) {
790
- sTmpUrl = oTmpAppContainer.getUrl();
791
- BlueBoxHandler.removeCapabilities(oTmpAppContainer);
792
- await this._destroyApplication(sStorageAppId, oTmpAppContainer);
793
- BlueBoxHandler.deleteBlueBoxByUrl(sTmpUrl);
774
+ if (bIsUI5App) {
775
+ oApplicationContainer = new UI5ApplicationContainer({
776
+ ...oCommonProperties,
777
+ ui5ComponentName: oResolvedHashFragment.ui5ComponentName
778
+ });
779
+ } else {
780
+ oApplicationContainer = new IframeApplicationContainer({
781
+ ...oCommonProperties
782
+ });
794
783
  }
795
784
 
796
- if (!oApplicationContainer) {
797
- oApplicationContainer = Application.createApplicationContainer(sStorageAppId, oResolvedHashFragment);
798
- }
799
- //create application that is not persisted and not cashed
800
- oCurrentApplication = {
801
- appId: sStorageAppId,
802
- stt: "loading",
803
- container: oApplicationContainer,
804
- meta: AppConfiguration.getMetadata(oResolvedHashFragment),
805
- app: undefined
806
- };
785
+ this._initializeApplicationContainer(oApplicationContainer, oResolvedHashFragment);
807
786
  } else {
808
- if (oApplicationContainer) {
809
- const oApplicationContainer = this._getApplicationContainerFromViewPort(sAppId);
787
+ oApplicationContainer.setProperty("isFetchedFromCache", true, true);
788
+ }
810
789
 
811
- if (oApplicationContainer) {
812
- this._removeApplicationContainerFromViewPort(oApplicationContainer.getId());
813
- oApplicationContainer.destroy();
814
- }
815
- }
816
- if (oResolvedHashFragment.applicationType === "URL"
817
- || oResolvedHashFragment.applicationType === "TR"
818
- || oResolvedHashFragment.applicationType === "NWBC"
819
- || oResolvedHashFragment.applicationType === "WDA"
820
- ) {
821
- //Temporary fix - fix duplicate app container id in cFLP
822
- //explanation: in cFLP, there might be a case where there are
823
- // two apps with the same Semantic object + Action, but from different
824
- // backend. The stateful container mechanism does not support it.
825
- // Until it is supported, and due to an urgent fix needed for a customer,
826
- // we delete here the blue box and then create the new one.
827
- // In future BLI, we will change the id of the container to be
828
- // more unique.
829
- oTmpAppContainer = BlueBoxHandler.getBlueBoxById(sStorageAppId) || this._getApplicationContainerFromViewPort(sAppId);
830
- if (oTmpAppContainer) {
831
- // todo: [FLPCOREANDUX-10024] this destroy/remove can be simplified
832
- sTmpUrl = oTmpAppContainer.getUrl();
833
- BlueBoxHandler.removeCapabilities(oTmpAppContainer);
834
- await this._destroyApplication(sStorageAppId, oTmpAppContainer, true);
835
- BlueBoxHandler.deleteBlueBoxByUrl(sTmpUrl);
836
- }
837
- }
838
- oApplicationContainer = Application.createApplicationContainer(sStorageAppId, oResolvedHashFragment);
790
+ ApplicationContainerCache.setContainerActive(oApplicationContainer);
791
+ oApplicationContainer.setProperty("isKeepAlive", bShouldBeCached, true);
839
792
 
840
- // //create application that is not persisted and not cashed
841
- oCurrentApplication = {
842
- appId: sStorageAppId,
843
- stt: "loading",
844
- container: oApplicationContainer,
845
- meta: AppConfiguration.getMetadata(oResolvedHashFragment),
846
- app: undefined
847
- };
848
- }
793
+ return oApplicationContainer;
849
794
  };
850
795
 
851
796
  /**
@@ -865,8 +810,9 @@ sap.ui.define([
865
810
 
866
811
  bEnableRouterRetrigger = oData.disable;
867
812
 
868
- if (Storage.get(sStorageAppId)) {
869
- Storage.get(sStorageAppId).enableRouterRetrigger = oData.disable;
813
+ const oStorageEntry = KeepAliveApps.get(sStorageAppId);
814
+ if (oStorageEntry) {
815
+ oStorageEntry.enableRouterRetrigger = oData.disable;
870
816
  }
871
817
  });
872
818
  EventHub.on("setApplicationFullWidth").do((oData) => {
@@ -905,6 +851,8 @@ sap.ui.define([
905
851
  });
906
852
  }
907
853
 
854
+ this._startPostMessageHandling();
855
+
908
856
  ShellUIServiceFactory.init().then(() => {
909
857
  ServiceFactoryRegistry.register(
910
858
  "sap.ushell.ui5service.ShellUIService",
@@ -916,116 +864,87 @@ sap.ui.define([
916
864
  oViewPortContainer = oInViewPortContainer;
917
865
  bDisableHomeAppCache = bInDisableHomeAppCache;
918
866
 
919
- BlueBoxHandler.init();
920
- Application.init(BlueBoxHandler, PostMessageUtils);
921
- PostMessageUtils.init(Application, BlueBoxHandler);
922
-
923
- //setup & register communication
924
- this.registerShellCommunicationHandler({
925
- "sap.ushell.services.AppLifeCycle": {
926
- oRequestCalls: {
927
- create: {
928
- isActiveOnly: true,
929
- distributionType: ["URL"]
930
- },
931
- destroy: {
932
- isActiveOnly: true,
933
- distributionType: ["URL"]
934
- },
935
- store: {
936
- isActiveOnly: true,
937
- distributionType: ["URL"]
938
- },
939
- restore: {
940
- isActiveOnly: true,
941
- distributionType: ["URL"]
942
- }
943
- },
944
- oServiceCalls: {
945
- subscribe: {
946
- executeServiceCallFn: async function (oServiceParams) {
947
- const { oContainer: oApplicationContainer } = oServiceParams;
948
- const aNewCapabilities = oServiceParams.oMessageData.body;
949
- if (!Array.isArray(aNewCapabilities)) {
950
- Log.error("subscribe service call failed: capabilities must be an array");
951
- return {};
952
- }
953
- oApplicationContainer.addBlueBoxCapabilities(aNewCapabilities);
954
- return {};
955
- }
956
- },
957
- setup: {
958
- executeServiceCallFn: async function (oServiceParams) {
959
- const oSetup = oServiceParams?.oMessageData?.body;
960
- const { oContainer: oApplicationContainer } = oServiceParams;
961
-
962
- const aNewCapabilities = [];
963
- if (oSetup) {
964
- const bIsSAPLegacyApplicationType = ushellUtils.isSAPLegacyApplicationType(oApplicationContainer.getApplicationType(), oApplicationContainer.getFrameworkId());
965
- // appruntime supports statefulContainer + keepAlive
966
- const bIgnoreStateful = oApplicationContainer.getIsKeepAlive() && bIsSAPLegacyApplicationType;
967
-
968
- if (oSetup.isStateful) {
969
- if (bIgnoreStateful) {
970
- // todo: [FLPCOREANDUX-10024] why not NOT_SUPPORTED instead?
971
- oApplicationContainer.setProperty("statefulType", BlueBoxHandler.STATEFUL_TYPES.FLP_V2_KEEP_ALIVE, true);
972
- } else {
973
- aNewCapabilities.push({ service: "sap.ushell.services.AppLifeCycle", action: "create" });
974
- aNewCapabilities.push({ service: "sap.ushell.services.AppLifeCycle", action: "destroy" });
975
- oApplicationContainer.setProperty("statefulType", BlueBoxHandler.STATEFUL_TYPES.FLP_V2, true);
867
+ //TODO add unsubscribe
868
+ EventBus.getInstance().subscribe("sap.ushell", "appComponentLoaded", this._onComponentCreated, this);
869
+ EventBus.getInstance().subscribe("sap.ushell", "getAppLifeCycle", this._onGetMe, this);
870
+
871
+ this._addEvents();
872
+ };
873
+
874
+ this._startPostMessageHandling = function () {
875
+ PostMessageManager.init({
876
+ getCurrentApplication: () => {
877
+ return this.getCurrentApplication().container;
878
+ },
879
+ getAllApplications: () => {
880
+ return ApplicationContainerCache.getAll();
881
+ }
882
+ });
883
+ AppRuntimeHandler.register();
884
+ NWBCHandler.register();
885
+ LifecycleHandler.register();
886
+ ServiceHandler.register();
887
+ MessageBrokerHandler.register();
888
+ this._waitForPluginsAndReplayPostMessages();
889
+
890
+ // todo: [FLPCOREANDUX-10024] harmonize with Appruntime
891
+ PostMessagePluginInterface.init(
892
+ true, // bRunsInOuterShell
893
+ (oCommObj) => { // fnAddCommunicationObject
894
+ Object.keys(oCommObj).forEach((sService) => {
895
+ const oServiceDef = oCommObj[sService];
896
+
897
+ if (oServiceDef.oServiceCalls) {
898
+ Object.keys(oServiceDef.oServiceCalls).forEach((sInterface) => {
899
+ const oInterface = oServiceDef.oServiceCalls[sInterface];
900
+ const sServiceRequest = `${sService}.${sInterface}`;
901
+
902
+ if (oInterface.executeServiceCallFn) {
903
+ PostMessageManager.setRequestHandler(
904
+ sServiceRequest,
905
+ async (oMessageBody, oEvent) => {
906
+ const oServiceParams = {
907
+ oMessageData: JSON.parse(oEvent.data),
908
+ oMessage: oEvent
909
+ };
910
+ return ushellUtils.promisify(oInterface.executeServiceCallFn(oServiceParams));
976
911
  }
977
- }
978
- if (oSetup.isIframeValid) {
979
- aNewCapabilities.push({ action: "iframeIsValid", service: "sap.ushell.appRuntime" });
980
- }
981
- if (oSetup.session?.bLogoutSupport) {
982
- aNewCapabilities.push({ action: "logout", service: "sap.ushell.sessionHandler" });
983
- }
984
-
985
- // todo: [FLPCOREANDUX-10024] this is a workaround
986
- const bIsAppruntime = ushellUtils.isSAPLegacyApplicationType(oApplicationContainer.getApplicationType(), oApplicationContainer.getFrameworkId());
987
- if (bIsAppruntime) {
988
- aNewCapabilities.push({ service: "sap.ushell.services.AppLifeCycle", action: "store" });
989
- aNewCapabilities.push({ service: "sap.ushell.services.AppLifeCycle", action: "restore" });
990
- }
991
-
992
- oApplicationContainer.addBlueBoxCapabilities(aNewCapabilities);
912
+ );
993
913
  }
994
- }
914
+ });
995
915
  }
996
- }
997
- },
998
- "sap.gui": {
999
- oServiceCalls: {
1000
- loadFinished: {
1001
- executeServiceCallFn: async function (oServiceParams) {
1002
- const { oContainer: oApplicationContainer } = oServiceParams;
1003
-
1004
- if (!oApplicationContainer.getIsKeepAlive()) {
1005
- oApplicationContainer.setProperty("statefulType", BlueBoxHandler.STATEFUL_TYPES.GUI_V1, true);
1006
- oCurrentApplication = {
1007
- appId: oApplicationContainer.getId(),
1008
- stt: "loading",
1009
- container: oApplicationContainer,
1010
- meta: undefined,
1011
- app: undefined
1012
- };
1013
- } else {
1014
- oApplicationContainer.setProperty("statefulType", BlueBoxHandler.STATEFUL_TYPES.GUI_V1_KEEP_ALIVE, true);
916
+
917
+ if (oServiceDef.oRequestCalls) {
918
+ Object.keys(oServiceDef.oRequestCalls).forEach((sInterface) => {
919
+ const oInterface = oServiceDef.oRequestCalls[sInterface];
920
+ const sServiceRequest = `${sService}.${sInterface}`;
921
+ const oTarget = {};
922
+
923
+ if (deepEqual(oInterface.distributionType, ["all"])) {
924
+ oTarget.ignoreCapabilities = true;
925
+ } else if (oInterface.distributionType) {
926
+ Log.error("Unsupported distribution type", oInterface.distributionType, "sap.ushell.components.applicationIntegration.AppLifeCycle");
1015
927
  }
1016
- return {};
1017
- }
928
+
929
+ if (oInterface.isActiveOnly) {
930
+ oTarget.activeOnly = true;
931
+ }
932
+
933
+ PostMessageManager.setDistributionPolicy(sServiceRequest, oTarget);
934
+ });
1018
935
  }
1019
- }
936
+ });
1020
937
  }
938
+ );
939
+ };
1021
940
 
1022
- });
941
+ this._waitForPluginsAndReplayPostMessages = async function () {
942
+ const PluginManager = await Container.getServiceAsync("PluginManager");
943
+ const oPluginDeferred = PluginManager.getPluginLoadingPromise("RendererExtensions");
1023
944
 
1024
- //TODO add unsubscribe
1025
- EventBus.getInstance().subscribe("sap.ushell", "appComponentLoaded", this._onComponentCreated, this);
1026
- EventBus.getInstance().subscribe("sap.ushell", "getAppLifeCycle", this._onGetMe, this);
945
+ await ushellUtils.promisify(oPluginDeferred);
1027
946
 
1028
- this._addEvents();
947
+ PostMessageManager.replayStoredMessages();
1029
948
  };
1030
949
 
1031
950
  /**
@@ -1042,14 +961,14 @@ sap.ui.define([
1042
961
  return;
1043
962
  }
1044
963
  if (oHashChange.mParameters && oShellNavigationInternal.hashChanger.isInnerAppNavigation(oHashChange.mParameters.newHash, oHashChange.mParameters.oldHash)) {
1045
- PostMessageUtils.postMessageToMultipleIframes("sap.ushell.appRuntime", "innerAppRouteChange", {
964
+ PostMessageManager.sendRequestToAllApplications("sap.ushell.appRuntime.innerAppRouteChange", {
1046
965
  oHash: oHashChange.mParameters
1047
- });
966
+ }, false);
1048
967
  }
1049
968
 
1050
- PostMessageUtils.postMessageToMultipleIframes("sap.ushell.appRuntime", "hashChange", {
969
+ PostMessageManager.sendRequestToAllApplications("sap.ushell.appRuntime.hashChange", {
1051
970
  sHash: oHashChange.mParameters.fullHash
1052
- });
971
+ }, false);
1053
972
  });
1054
973
  };
1055
974
 
@@ -1063,13 +982,8 @@ sap.ui.define([
1063
982
  /**
1064
983
  * @param {string} sId
1065
984
  */
1066
- this._removeApplicationContainerFromViewPort = function (sId) {
1067
- const oBlueBox = BlueBoxHandler.getBlueBoxById(sId);
1068
- const bIsStateful = BlueBoxHandler.isStatefulContainer(oBlueBox);
1069
-
1070
- if (!bIsStateful) {
1071
- oViewPortContainer.removeCenterViewPort(sId, true);
1072
- }
985
+ this._removeApplicationContainerFromViewPort = function (oApplicationContainer) {
986
+ oViewPortContainer.removeCenterViewPort(oApplicationContainer.getId(), true);
1073
987
  };
1074
988
 
1075
989
  /**
@@ -1105,12 +1019,6 @@ sap.ui.define([
1105
1019
  return oCurrentApplication;
1106
1020
  };
1107
1021
 
1108
- /**
1109
- */
1110
- this.unsetCurrentApplication = function () {
1111
- oCurrentApplication = {};
1112
- };
1113
-
1114
1022
  /**
1115
1023
  * @param {boolean} bIsFull
1116
1024
  */
@@ -1171,8 +1079,8 @@ sap.ui.define([
1171
1079
  *
1172
1080
  * @private
1173
1081
  */
1174
- this._activeContainer = function (oTargetApplicationContainer) {
1175
- BlueBoxHandler.forEach((oApplicationContainer) => {
1082
+ this._setApplicationContainerActive = function (oTargetApplicationContainer) {
1083
+ ApplicationContainerCache.forEach((oApplicationContainer) => {
1176
1084
  if (oApplicationContainer && oApplicationContainer !== oTargetApplicationContainer) {
1177
1085
  try {
1178
1086
  Log.info(`Deactivating container ${oApplicationContainer.getId()}`);
@@ -1189,19 +1097,107 @@ sap.ui.define([
1189
1097
  }
1190
1098
  };
1191
1099
 
1100
+ /**
1101
+ * @param {*} sStorageAppId
1102
+ * @param {*} oApplicationContainer
1103
+ * @param {*} oResolvedHashFragment
1104
+ * @param {*} oParsedShellHash
1105
+ * @param {*} bWasKeptAlive
1106
+ * @returns
1107
+ */
1108
+ this._openApp = async function (sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, bWasKeptAlive) {
1109
+ const bWasFetchedFromCache = oApplicationContainer.getIsFetchedFromCache();
1110
+ if (bWasKeptAlive && bWasFetchedFromCache && StatefulContainerV2Handler.isStatefulContainerSupportingKeepAlive(oApplicationContainer)) {
1111
+ return StatefulContainerV2Handler.restoreAppWithinSameFrame(
1112
+ oApplicationContainer,
1113
+ oResolvedHashFragment.url,
1114
+ sStorageAppId,
1115
+ oResolvedHashFragment
1116
+ );
1117
+ }
1118
+
1119
+ if (oApplicationContainer.getStatefulType() === StatefulType.ContractV2) {
1120
+ if (bWasFetchedFromCache && oApplicationContainer.getCurrentAppId() === sStorageAppId) {
1121
+ // application is already running within container
1122
+ return;
1123
+ }
1124
+ const oResult = await StatefulContainerV2Handler.createApp(
1125
+ oApplicationContainer,
1126
+ oResolvedHashFragment.url,
1127
+ sStorageAppId,
1128
+ oResolvedHashFragment
1129
+ );
1130
+ if (oResult?.deletedKeepAliveId) {
1131
+ await this._destroyApplication(oResult.deletedKeepAliveId, oApplicationContainer);
1132
+ }
1133
+ return;
1134
+ }
1135
+
1136
+ if (oApplicationContainer.getStatefulType() === StatefulType.ContractV1) {
1137
+ if (bWasFetchedFromCache && oApplicationContainer.getCurrentAppId() === sStorageAppId) {
1138
+ // application is already running within container
1139
+ return;
1140
+ }
1141
+ await StatefulContainerV1Handler.createApp(
1142
+ oApplicationContainer,
1143
+ sStorageAppId,
1144
+ oResolvedHashFragment
1145
+ );
1146
+ return;
1147
+ }
1148
+
1149
+ // for SAPUI5 apps, the application type is still "URL" due to backwards compatibility, but the
1150
+ // NavTargetResolutionInternal service already extracts the component name, so this can directly be used as indicator
1151
+ const sTargetUi5ComponentName = oResolvedHashFragment?.ui5ComponentName;
1152
+ const bIsUI5App = !!sTargetUi5ComponentName;
1153
+
1154
+ if (bIsUI5App && !bWasKeptAlive) { // UI5 Application
1155
+ // happens for direct app start scenario on the abap platform (sap/ushell_abap/bootstrap/evo/boottask)
1156
+ const bComponentLoadedInDirectAppStart = !!oResolvedHashFragment?.componentHandle;
1157
+ if (!bComponentLoadedInDirectAppStart) {
1158
+ AppConfiguration.setApplicationInInitMode();
1159
+
1160
+ await EmbeddedUI5Handler.createApp(oApplicationContainer, oResolvedHashFragment, oParsedShellHash);
1161
+
1162
+ // todo: [FLPCOREANDUX-10024] check whether the issue still persists
1163
+ // the activation of user activity logging must be done after the app component is fully loaded
1164
+ // otherwise the module loading sequence causes race conditions on firefox
1165
+ const bContactSupportEnabled = Config.last("/core/extension/SupportTicket");
1166
+ if (bContactSupportEnabled) {
1167
+ ushellUtils.awaitTimeout(0)
1168
+ .then(() => {
1169
+ return ushellUtils.requireAsync(["sap/ushell/UserActivityLog"]);
1170
+ })
1171
+ .then(([UserActivityLog]) => {
1172
+ UserActivityLog.activate();
1173
+ });
1174
+ }
1175
+ } else {
1176
+ oApplicationContainer.setProperty("componentHandle", oResolvedHashFragment.componentHandle, true);
1177
+ }
1178
+
1179
+ // The trampoline application subsequently gets destroyed after it's used to enable the redirection.
1180
+ const sNavigationRedirectHash = await EmbeddedUI5Handler.getNavigationRedirectHash(oApplicationContainer);
1181
+ if (typeof sNavigationRedirectHash === "string") {
1182
+ await this._destroyApplication(sStorageAppId, oApplicationContainer);
1183
+ return sNavigationRedirectHash;
1184
+ }
1185
+ }
1186
+ };
1187
+
1192
1188
  /**
1193
1189
  * @param {object} oApplicationContainer
1194
- * @param {object} oApplication
1190
+ * @param {object} oResolvedHashFragment
1195
1191
  * @param {function} fnOnAfterRendering
1196
1192
  */
1197
- this._publishNavigationStateEvents = function (oApplicationContainer, oApplication, fnOnAfterRendering) {
1193
+ this._publishNavigationStateEvents = function (oApplicationContainer, oResolvedHashFragment, oMetadata) {
1198
1194
  //after the app container is rendered, publish an event to notify
1199
1195
  //that an app was opened
1200
1196
  const sId = oApplicationContainer.getId ? oApplicationContainer.getId() : "";
1201
- const appMetaData = AppConfiguration.getMetadata();
1202
- const sIcon = appMetaData.icon;
1203
- const sTitle = appMetaData.title;
1197
+ const sIcon = oMetadata.icon;
1198
+ const sTitle = oMetadata.title;
1204
1199
 
1200
+ const fnOnAfterRendering = this._onAppAfterRendering.bind(this, oResolvedHashFragment);
1205
1201
  //Attach an event handler which will be called onAfterRendering
1206
1202
  oApplicationContainer.addEventDelegate({ onAfterRendering: fnOnAfterRendering });
1207
1203
 
@@ -1220,7 +1216,7 @@ sap.ui.define([
1220
1216
  setTimeout(() => {
1221
1217
  // TODO: do not mutate an internal structure (in a Timeout!),
1222
1218
  // create a new object
1223
- const oEventData = deepExtend({}, oApplication);
1219
+ const oEventData = deepExtend({}, oResolvedHashFragment);
1224
1220
  delete oEventData.componentHandle;
1225
1221
  oEventData.appId = sId;
1226
1222
  oEventData.usageIcon = sIcon;
@@ -1232,7 +1228,7 @@ sap.ui.define([
1232
1228
  // the former code leaked an *internal* data structure, making it part of a public API
1233
1229
  // restrict hte public api to the minimal set of precise documented properties which can be retained under
1234
1230
  // under future evolutions
1235
- const oPublicEventData = that._publicEventDataFromResolutionResult(oApplication);
1231
+ const oPublicEventData = that._publicEventDataFromResolutionResult(oResolvedHashFragment);
1236
1232
  //publish the event externally
1237
1233
  RendererUtils.publishExternalEvent("appClosed", oPublicEventData);
1238
1234
  };
@@ -1257,91 +1253,15 @@ sap.ui.define([
1257
1253
  };
1258
1254
 
1259
1255
  /**
1260
- * @param {string} sAppId
1261
- * @param {string} sShellHash
1262
- * @param {boolean} bNavigationFromHome
1263
- * @param {boolean} bNavigationWithInnerAppRoute
1264
- * @returns {object}
1256
+ * @param {*} oResolvedHashFragment
1257
+ * @returns
1265
1258
  */
1266
- this._getInMemoryInstance = function (sAppId, sShellHash, bNavigationFromHome, bNavigationWithInnerAppRoute) {
1267
- const sStorageAppId = `application-${sAppId}`;
1268
- const oAppEntry = Storage.get(sStorageAppId);
1269
-
1270
- //remove application from cache if has different parameters
1271
- if (oAppEntry) {
1272
- //Special case - when we're navigating from homepage to an application with state, when keep-alive
1273
- //is active. In this case, although keep alive is active we need to destroy the application
1274
- //ans re-open it.
1275
- const bNavigatingFromHomeWithInnerAppRoute = bNavigationFromHome && bNavigationWithInnerAppRoute;
1276
- // todo: [FLPCOREANDUX-10024] Add logging
1277
-
1278
- const bSameParameters = oAppEntry.shellHash === sShellHash;
1279
- if (bSameParameters && !bNavigatingFromHomeWithInnerAppRoute) {
1280
- return {
1281
- destroyApplication: false,
1282
- appId: oAppEntry.appId,
1283
- container: oAppEntry.container
1284
- };
1285
- }
1286
- return {
1287
- destroyApplication: true,
1288
- appId: oAppEntry.appId,
1289
- container: oAppEntry.container
1290
- };
1291
- }
1292
-
1293
- return {
1294
- destroyApplication: true,
1295
- appId: undefined,
1296
- container: undefined
1297
- };
1298
- };
1299
-
1300
- /**
1301
- * @param {boolean} bNewlyCreatedApplicationContainer
1302
- * @param {boolean} bShouldBeCached
1303
- * @param {string} sStorageAppId
1304
- * @param {object} oApplicationContainer
1305
- * @param {object} oResolvedHashFragment
1306
- * @param {string} oParsedShellHash
1307
- * @param {string} sKeepAliveMode
1308
- * @param {boolean} bNavigationInSameStatefulContainer
1309
- * @param {boolean} bReturnedFromKeepAlivePoolFLPV2
1310
- * @returns {Promise} Resolves when the stateful app was opened.
1311
- */ // eslint-disable-next-line max-len
1312
- this._handleOpenStateful = async function (bNewlyCreatedApplicationContainer, bShouldBeCached, sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode, bNavigationInSameStatefulContainer, bReturnedFromKeepAlivePoolFLPV2) {
1313
- oApplicationContainer.setProperty("iframeReusedForApp", true, true);
1314
- try {
1315
- if (Storage.get(sStorageAppId) && !bNewlyCreatedApplicationContainer && !bReturnedFromKeepAlivePoolFLPV2) {
1316
- await BlueBoxHandler.statefulRestoreKeepAliveApp(oApplicationContainer, oResolvedHashFragment.url, sStorageAppId, oResolvedHashFragment, bNavigationInSameStatefulContainer);
1317
- } else {
1318
- const oResult = await BlueBoxHandler.statefulCreateApp(oApplicationContainer, oResolvedHashFragment.url, sStorageAppId, oResolvedHashFragment, bNavigationInSameStatefulContainer);
1319
- if (oResult?.deletedKeepAliveId) {
1320
- Storage.removeById(oResult.deletedKeepAliveId);
1321
- }
1322
-
1323
- //creating a new application check if needs to be keep (for the keep alive), and if so store the application
1324
- if (bShouldBeCached && !Storage.get(sStorageAppId)) {
1325
- this._storeApp(sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode);
1326
- }
1327
- }
1328
-
1329
- Application.setActiveAppContainer(oApplicationContainer);
1330
-
1331
- Log.info("New application context opened successfully in an existing transaction UI session.");
1332
- } catch (vError) {
1333
- Log.error(vError?.message || vError);
1334
- // do not bubble up the error
1335
- }
1336
- };
1337
-
1338
- this._isFullWidth = function (oResolvedHashFragment) {
1259
+ this._isFullWidth = function (oResolvedHashFragment, oMetadata) {
1339
1260
  let bFullWidth;
1340
1261
  const sAppType = this._calculateAppType(oResolvedHashFragment);
1341
1262
  const bDefaultFullWidth = ApplicationType.getDefaultFullWidthSetting(sAppType);
1342
1263
 
1343
1264
  const bFullWidthCapability = oResolvedHashFragment.appCapabilities?.fullWidth;
1344
- const oMetadata = AppConfiguration.getMetadata(oResolvedHashFragment);
1345
1265
  //Here there's a double check for the fullwidth - once as a type of boolean and one as a string.
1346
1266
  //This is because we found that developers configured this variable in the manifest also as a string,
1347
1267
  //so the checks of the oMetadata and the oResolvedHashFragment are to avoid regression with the use of this field.
@@ -1362,213 +1282,94 @@ sap.ui.define([
1362
1282
  };
1363
1283
 
1364
1284
  /**
1365
- * formerly known as "handleControl"
1366
- * @param {string} sAppId
1367
- * @param {object} oParsedShellHash
1368
- * @param {object} oResolvedHashFragment
1369
- * @param {string} sOldShellHash
1370
- * @param {boolean} bNavigationFromHome
1371
- * @returns {Promise} Resolves when the control is handled
1285
+ * @param {*} sAppId
1286
+ * @param {*} oParsedShellHash
1287
+ * @param {*} oResolvedHashFragment
1288
+ * @param {*} bNavigationFromHome
1289
+ * @param {*} bNavigationWithInnerAppRoute
1290
+ * @returns
1372
1291
  */
1373
- this.handleCreateApplicationContainer = async function (sAppId, oParsedShellHash, oResolvedHashFragment, sOldShellHash, bNavigationFromHome) {
1374
- let bReturnedFromKeepAlivePoolFLPV2 = false;
1375
- let bReturnedFromKeepAlivePoolGuiV1 = false;
1292
+ this.createApplication = async function (sAppId, oParsedShellHash, oResolvedHashFragment, bNavigationFromHome, bNavigationWithInnerAppRoute) {
1376
1293
  const sStorageAppId = `application-${sAppId}`;
1377
- let bNewlyCreatedApplicationContainer = false;
1378
- let bNavigationInSameStatefulContainer = false;
1379
- let oApplicationContainer,
1380
- bReuseStatefulContainer,
1381
- oTargetAppContainer,
1382
- iLastValidTimeDelta,
1383
- bKeptAliveApp,
1384
- oCachedEntry;
1385
-
1386
- //get the potential target stateful container and check if it's valid. if not, destroy it
1387
- //before we try to create the new application
1388
- oTargetAppContainer = BlueBoxHandler.getBlueBoxByUrl(oResolvedHashFragment.url);
1389
- // todo: [FLPCOREANDUX-10024] DELETES iframe
1390
- if (BlueBoxHandler.isStatefulContainer(oTargetAppContainer)) {
1391
- iLastValidTimeDelta = new Date().getTime() - oTargetAppContainer.getIsIframeValidTime().time;
1392
- if ((BlueBoxHandler.isIframeIsValidSupported(oTargetAppContainer) && iLastValidTimeDelta >= 3500) ||
1393
- oTargetAppContainer.getIsInvalidIframe()) {
1394
- const sReason = oTargetAppContainer.getIsInvalidIframe() ? `iframe did not ping in the last '${iLastValidTimeDelta}' ms` : "iframe is in invalid state";
1395
- Log.warning(
1396
- `Destroying stateful container iframe due to unresponsiveness (${oTargetAppContainer.getId()})`,
1397
- `reason: ${sReason}`,
1398
- "sap.ushell.components.applicationIntegration.AppLifeCycle"
1399
- );
1400
1294
 
1401
- // todo: [FLPCOREANDUX-10024] this destroy/remove can be simplified
1402
- BlueBoxHandler.removeCapabilities(oTargetAppContainer);
1403
- await this._destroyApplication(sStorageAppId, oTargetAppContainer);
1404
- BlueBoxHandler.deleteBlueBoxByUrl(oResolvedHashFragment.url);
1405
- oTargetAppContainer = undefined;
1406
- //in this case we do not care about the old application intent as it is currently relevant only when
1407
- //trying to open app in the same current stateful container
1408
- sOldShellHash = undefined;
1409
- }
1410
- }
1295
+ await this._cleanupBeforeNewApp(
1296
+ sAppId,
1297
+ oParsedShellHash,
1298
+ oResolvedHashFragment,
1299
+ bNavigationFromHome,
1300
+ bNavigationWithInnerAppRoute
1301
+ );
1411
1302
 
1412
- //we will close the application we are leaving when:
1413
- // 1. the application is running in a stateful container
1414
- // 2. this is a legacy keep alive app, and we navigate back (this in order to return the container to the pool
1415
- // of containers to it can be used again for the upcoming opened app)
1416
- // todo: [FLPCOREANDUX-10024] DELETES more iframe
1417
- if (!bNavigationFromHome) {
1418
- const oCurrentAppContainer = this.getCurrentApplication()?.container;
1419
- bReuseStatefulContainer = BlueBoxHandler.isStatefulContainer(oCurrentAppContainer);
1420
- // todo [FLPCOREANDUX-10024] why is id required here?
1421
- const bSourceIsKeepAliveFromPool = oCurrentAppContainer && !!oCurrentAppContainer.getCurrentAppId() && BlueBoxHandler.isStatefulContainerInKeepAlivePool(oCurrentAppContainer);
1422
- if (bReuseStatefulContainer || bSourceIsKeepAliveFromPool) {
1423
- await this._handleExitApplication(oCurrentAppContainer, false, false);
1424
- if (oCurrentAppContainer === oTargetAppContainer) {
1425
- bNavigationInSameStatefulContainer = true;
1426
- }
1427
- }
1428
- }
1303
+ this._sendFocusBackToShell();
1304
+ this._announceAppOpening(oResolvedHashFragment);
1429
1305
 
1430
- //now, we can open the new application
1431
1306
  const sKeepAliveMode = this._calculateKeepAliveMode(sStorageAppId, oResolvedHashFragment, oParsedShellHash);
1432
- const bShouldBeCached = !!sKeepAliveMode;
1433
-
1434
- oApplicationContainer = BlueBoxHandler.getBlueBoxByUrl(oResolvedHashFragment.url);
1435
- bReuseStatefulContainer = BlueBoxHandler.isStatefulContainer(oApplicationContainer);
1436
- // todo: [FLPCOREANDUX-10024] GETTER of innerControl for keep alive / stateful
1437
- if (!bReuseStatefulContainer) {
1438
- // only clear oApplicationContainer in case it is not a navigation from an application to the same application
1439
- if (oCurrentApplication && sStorageAppId !== oCurrentApplication.appId) {
1440
- oApplicationContainer = undefined;
1441
- }
1442
-
1443
- oCachedEntry = Storage.get(sStorageAppId);
1444
- oApplicationContainer = oCachedEntry?.container;
1445
-
1446
- if (oApplicationContainer && bShouldBeCached) {
1447
- bKeptAliveApp = true;
1448
- }
1449
- }
1450
-
1451
- // todo: [FLPCOREANDUX-10024] CREATE / SETTER of currentApplication
1452
- if (bReuseStatefulContainer) {
1453
- if (!oApplicationContainer) {
1454
- oApplicationContainer = await this._createApplicationContainer(sAppId, oParsedShellHash, oResolvedHashFragment);
1455
-
1456
- // todo: [FLPCOREANDUX-10024] the following should be obsolete
1457
- const oStorageEntry = Storage.get(oApplicationContainer.getId());
1458
- if (oStorageEntry) {
1459
- oCurrentApplication = oStorageEntry;
1460
- }
1461
-
1462
- bNewlyCreatedApplicationContainer = true;
1463
- }
1464
- } else if (oApplicationContainer && !bShouldBeCached && BlueBoxHandler.getStatefulContainerType(oResolvedHashFragment.url, true) !== BlueBoxHandler.STATEFUL_TYPES.GUI_V1) {
1465
- //this case this controller can't be reused and we need it to be embed, so delete it.
1466
- await this._destroyApplication(oApplicationContainer.getId(), oApplicationContainer);
1467
-
1468
- // The immediately following method call internally calls
1469
- // `this.oViewPortContainer.addCenterViewPort(oApplicationContainer)`
1470
- // when Gui V1 Stateful Container is true, and in that case
1471
- // `oApplicationContainer` will be the component control of an existing session.
1472
- oApplicationContainer = await this._createApplicationContainer(sAppId, oParsedShellHash, oResolvedHashFragment);
1473
- } else if (!oApplicationContainer) {
1474
- // The immediately following method call internally calls
1475
- // `this.oViewPortContainer.addCenterViewPort(oApplicationContainer)`
1476
- // when Gui V1 Stateful Container is true, and in that case
1477
- // `oApplicationContainer` will be the component control of an existing session.
1478
- oApplicationContainer = await this._createApplicationContainer(sAppId, oParsedShellHash, oResolvedHashFragment);
1479
-
1480
- //if we got an iframe from cache, simulate stateful container
1481
- //open that should happen later here
1482
- if (oApplicationContainer.getIsFetchedFromCache()) {
1483
- if (oApplicationContainer.getStatefulType() === BlueBoxHandler.STATEFUL_TYPES.GUI_V1_KEEP_ALIVE) {
1484
- bReturnedFromKeepAlivePoolGuiV1 = true;
1485
- } else {
1486
- bReuseStatefulContainer = true;
1487
- bReturnedFromKeepAlivePoolFLPV2 = true;
1488
- }
1489
- }
1490
- }
1307
+ const bShouldBeCached = sKeepAliveMode !== KEEP_ALIVE_MODES.False;
1491
1308
 
1492
- // todo: [FLPCOREANDUX-10024] rework empty applicationContainer case
1493
- // fallback?
1309
+ const oApplicationContainer = this._createOrReuseApplicationContainer(sStorageAppId, oResolvedHashFragment, bShouldBeCached);
1494
1310
 
1495
- await ushellUtils.promisify(oApplicationContainer.getDeffedControlCreation());
1496
-
1497
- //here, we simply show (turning to visible) the container of the new opened application in case it is not stateful container
1498
- //and not old gui v1 stateful
1499
- if (oApplicationContainer.getStatefulType() !== BlueBoxHandler.STATEFUL_TYPES.GUI_V1 && !bReuseStatefulContainer) {
1500
- if (bKeptAliveApp) {
1501
- EventBus.getInstance().publish("launchpad", "appOpening", oResolvedHashFragment);
1502
- }
1503
- const oStorageEntry = Storage.get(oApplicationContainer.getId());
1504
- if (oStorageEntry) {
1505
- oCurrentApplication = oStorageEntry;
1506
- }
1311
+ // check after cleanup, but before creating the storage entry
1312
+ const bWasKeptAlive = !!KeepAliveApps.get(sStorageAppId);
1507
1313
 
1508
- if (bKeptAliveApp) {
1509
- EventBus.getInstance().publish("sap.ushell", "appOpened", oResolvedHashFragment);
1510
- }
1314
+ // Set current application
1315
+ if (bShouldBeCached) {
1316
+ oCurrentApplication = this._addStorageEntry(
1317
+ sStorageAppId,
1318
+ oApplicationContainer,
1319
+ oResolvedHashFragment,
1320
+ oParsedShellHash,
1321
+ sKeepAliveMode
1322
+ );
1323
+ } else {
1324
+ // create application that is not persisted and not cached
1325
+ oCurrentApplication = {
1326
+ appId: sStorageAppId,
1327
+ stt: "loading",
1328
+ container: oApplicationContainer,
1329
+ meta: undefined, // is set after application start
1330
+ app: undefined
1331
+ };
1511
1332
  }
1512
1333
 
1513
- // Assuming a previously existing TR container existed and is now
1514
- // going to be reused, we prompt the container to load the new application context.
1515
-
1516
- // SAP GUI is sending post messages for back navigation as soon the create application event is sent to the iframe,
1517
- // so this makes sure the container is active before sending the event.
1518
- // For WD applications, the application is active only after the application is created.
1519
- // So it is not navigated twice.
1520
- if (oApplicationContainer.getApplicationType() === ApplicationType.TR.type) {
1521
- this._activeContainer(oApplicationContainer);
1522
- }
1334
+ ushellUtils.setPerformanceMark("FLP - addAppContainer");
1523
1335
 
1524
- const oStorageEntry = Storage.get(sStorageAppId);
1336
+ // restore the app info parameters before activating the application container
1337
+ const oStorageEntry = KeepAliveApps.get(sStorageAppId);
1525
1338
  if (oStorageEntry) {
1526
1339
  AppInfoParameters.restore(oStorageEntry);
1527
1340
  } else {
1528
1341
  AppInfoParameters.flush();
1529
1342
  }
1530
1343
 
1344
+ // enable the PostMessageAPI for the application
1345
+ this._setApplicationContainerActive(oApplicationContainer);
1531
1346
 
1532
- //here, we create the application in case this is a stateful container (meaning, using the existing iframe)
1533
- if (bReuseStatefulContainer) {
1534
- //for scube - make sure the container is active before we open the app
1535
- //to allow post messages form the iframe to flp that are sent
1536
- //as part of the target resolution process
1537
- if (oResolvedHashFragment.appCapabilities?.appFrameworkId === "UI5") {
1538
- oApplicationContainer.setProperty("active", true, true);
1539
- }
1540
- // eslint-disable-next-line max-len
1541
- await this._handleOpenStateful(bNewlyCreatedApplicationContainer, bShouldBeCached, sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode, bNavigationInSameStatefulContainer, bReturnedFromKeepAlivePoolFLPV2);
1347
+ const sNavigationRedirectHash = await this._openApp(
1348
+ sStorageAppId,
1349
+ oApplicationContainer,
1350
+ oResolvedHashFragment,
1351
+ oParsedShellHash,
1352
+ bWasKeptAlive
1353
+ );
1542
1354
 
1543
- } else if (oApplicationContainer.getStatefulType() === BlueBoxHandler.STATEFUL_TYPES.GUI_V1 || bReturnedFromKeepAlivePoolGuiV1) {
1544
- //here, we create the application in case this is old gui v1 stateful
1545
- await WebGUIStatefulHandler.guiStatefulCreateApp(this, oApplicationContainer, oResolvedHashFragment);
1355
+ if (typeof sNavigationRedirectHash === "string") {
1356
+ // do not add the deleted application to the view port
1357
+ return sNavigationRedirectHash;
1546
1358
  }
1547
1359
 
1548
- //for case of stateful container or gui v1 stateful, show the application view (make it visible)
1360
+ // todo: [FLPCOREANDUX-10024] fix this
1361
+ // initialize now because the app is required for additional information
1362
+ this._initializeAppWithMetadata(oApplicationContainer, oResolvedHashFragment);
1363
+
1364
+ // todo: [FLPCOREANDUX-10024] fix this
1365
+ // finally add the application container to the view port (triggers render call)
1366
+ // do not add it earlier to prevent the application container
1367
+ // from creating the component before this process is done
1368
+ this._addApplicationContainerToViewPort(oApplicationContainer);
1549
1369
  ushellUtils.setPerformanceMark("FLP -- centerViewPort");
1550
- if (oApplicationContainer.getApplicationType() !== ApplicationType.TR.type) {
1551
- // Activate container before showing it (start reacting to postMessage calls)
1552
- this._activeContainer(oApplicationContainer);
1553
- }
1554
1370
 
1555
- /*
1556
- * Workaround:
1557
- * The oCurrentApplication object does not reflect the currently opened application.
1558
- * This leads to store/restore calls on the wrong application.
1559
- * Create application that is not persisted and not cashed as a fallback.
1560
- *
1561
- * This issue occurs for iframe applications reusing the iframe.
1562
- */
1563
- if (oCurrentApplication.appId !== sStorageAppId) {
1564
- oCurrentApplication = {
1565
- appId: sStorageAppId,
1566
- stt: "loading",
1567
- container: oApplicationContainer,
1568
- meta: AppConfiguration.getMetadata(oResolvedHashFragment),
1569
- app: undefined
1570
- };
1571
- }
1371
+ EventBus.getInstance().publish("sap.ushell", "appOpened", oResolvedHashFragment);
1372
+ Log.info("app was opened");
1572
1373
  };
1573
1374
 
1574
1375
  /**
@@ -1599,7 +1400,7 @@ sap.ui.define([
1599
1400
  */
1600
1401
  this.switchViewState = function (sLaunchpadState, sAppId, sAppType, bIsExplaceNavigation) {
1601
1402
  // Store state before creating a new one
1602
- const oFromStorageEntry = Storage.get(oCurrentApplication.appId);
1403
+ const oFromStorageEntry = KeepAliveApps.get(oCurrentApplication.appId);
1603
1404
  if (!oFromStorageEntry) {
1604
1405
  // We have to destroy managed queue BEFORE we're applying the pending changes
1605
1406
  StateManager.destroyManagedControls();
@@ -1621,7 +1422,7 @@ sap.ui.define([
1621
1422
 
1622
1423
  // Restore state if it already exists
1623
1424
  const sToStorageAppId = `application-${sAppId}`;
1624
- const oToStorageEntry = Storage.get(sToStorageAppId);
1425
+ const oToStorageEntry = KeepAliveApps.get(sToStorageAppId);
1625
1426
  if (oToStorageEntry) {
1626
1427
  KeepAlive.restore(oToStorageEntry);
1627
1428
  } else {
@@ -1632,13 +1433,6 @@ sap.ui.define([
1632
1433
  StateManager.applyStalledChanges();
1633
1434
  };
1634
1435
 
1635
- /**
1636
- * @param {object} oCommunicationHandler
1637
- */
1638
- this.registerShellCommunicationHandler = function (oCommunicationHandler) {
1639
- Application.registerShellCommunicationHandler(oCommunicationHandler);
1640
- };
1641
-
1642
1436
  /**
1643
1437
  * @returns {boolean} Whether the floating container is docked.
1644
1438
  */
@@ -1693,48 +1487,24 @@ sap.ui.define([
1693
1487
  }, 0);
1694
1488
  };
1695
1489
 
1696
- /**
1697
- * @param {string} sAppId
1698
- * @param {object} oParsedShellHash
1699
- * @param {object} oResolvedHashFragment
1700
- * @param {string} sShellHash
1701
- * @returns {object} The app container.
1702
- */
1703
- this._createApplicationContainer = async function (sAppId, oParsedShellHash, oResolvedHashFragment) {
1704
- const oMetadata = AppConfiguration.getMetadata(oResolvedHashFragment, oResolvedHashFragment?.sFixedShellHash);
1705
- const bFullWidth = this._isFullWidth(oResolvedHashFragment);
1706
-
1707
- /*
1708
- * The external navigation mode in the resolution result is calculated
1709
- * statically, and indicates a future state. It currently answers the
1710
- * question: "is the application going to be opened explace?".
1711
- *
1712
- * The target navigation mode, instead, answers the question: "was
1713
- * the application opened explace?".
1714
- *
1715
- * We need to have this logic, because embedded applications do not
1716
- * check the coldstart condition.
1717
- */
1718
- oResolvedHashFragment.targetNavigationMode = ushellUtils.isColdStart() ? "explace" : "inplace";
1719
- oResolvedHashFragment.shellUIService = oGlobalShellUIService.getInterface();
1720
-
1721
- // send focus back to shell for new ApplicationContainers
1722
- this._sendFocusBackToShell();
1723
-
1724
- this._announceAppOpening(oResolvedHashFragment);
1490
+ this._initializeApplicationContainer = function (oApplicationContainer, oResolvedHashFragment) {
1491
+ if (ushellUtils.isSAPLegacyApplicationType(oApplicationContainer.getApplicationType(), oApplicationContainer.getFrameworkId())) {
1492
+ oApplicationContainer.addStyleClass("sapUShellApplicationContainerShiftedIframe");
1493
+ }
1494
+ };
1725
1495
 
1726
- await this._openApp(sAppId, oResolvedHashFragment, oParsedShellHash);
1727
- const oApplicationContainer = oCurrentApplication.container;
1496
+ this._initializeAppWithMetadata = function (oApplicationContainer, oResolvedHashFragment) {
1497
+ const oMetadata = AppConfiguration.getMetadata(oResolvedHashFragment, oResolvedHashFragment?.sFixedShellHash);
1728
1498
 
1729
- const bContainerFromCachePool = oApplicationContainer.getIsFetchedFromCache();
1499
+ oCurrentApplication.meta = oMetadata;
1730
1500
 
1731
- if (!bContainerFromCachePool) {
1732
- this._publishNavigationStateEvents(oApplicationContainer, oResolvedHashFragment, this.onAppAfterRendering.bind(this, oResolvedHashFragment));
1501
+ // ApplicationContainer is newly created
1502
+ if (!oApplicationContainer.getIsFetchedFromCache()) {
1503
+ this._publishNavigationStateEvents(oApplicationContainer, oResolvedHashFragment, oMetadata);
1733
1504
 
1734
- if (ushellUtils.isSAPLegacyApplicationType(oApplicationContainer.getApplicationType(), oApplicationContainer.getFrameworkId())) {
1735
- oApplicationContainer.addStyleClass("sapUShellApplicationContainerShiftedIframe");
1736
- }
1505
+ oApplicationContainer.toggleStyleClass("sapUshellDefaultBackground", !oMetadata.hideLightBackground);
1737
1506
 
1507
+ const bFullWidth = this._isFullWidth(oResolvedHashFragment, oMetadata);
1738
1508
  if (!bFullWidth) {
1739
1509
  oApplicationContainer.addStyleClass("sapUShellApplicationContainerLimitedWidth");
1740
1510
  }
@@ -1748,115 +1518,124 @@ sap.ui.define([
1748
1518
  oApplicationContainer.removeStyleClass("sapUShellApplicationContainerLimitedWidth");
1749
1519
  }
1750
1520
 
1751
- oApplicationContainer.toggleStyleClass("sapUshellDefaultBackground", !oMetadata.hideLightBackground);
1752
-
1753
1521
  AppMeta._applyContentDensityByPriority();
1754
-
1755
- // Add inner control for next request
1756
- this._addApplicationContainerToViewPort(oApplicationContainer);
1757
1522
  }
1758
-
1759
- ushellUtils.setPerformanceMark("FLP - addAppContainer");
1760
-
1761
- return oApplicationContainer;
1762
1523
  };
1763
1524
 
1764
1525
  /**
1765
- * @param {string} sShellHash
1526
+ * - prevent duplicated ids in the viewport container.
1527
+ * - prevent reuse of stateful containers for different servers.
1528
+ * - destroy the keep alive app for certain navigation cases.
1529
+ * - destroy the app if the iframe is invalid/unresponsive.
1530
+ * - exit the current application if it is a stateful container.
1531
+ *
1532
+ * @param {string} sAppId
1533
+ * @param {string} oParsedShellHash
1766
1534
  * @param {object} oResolvedHashFragment
1767
1535
  * @param {boolean} bNavigationFromHome
1768
1536
  * @param {boolean} bNavigationWithInnerAppRoute
1769
1537
  */
1770
- this.handleBeforeCreateApp = async function (sShellHash, oResolvedHashFragment, bNavigationFromHome, bNavigationWithInnerAppRoute) {
1771
- const sIntent = UrlParsing.getBasicHash(sShellHash);
1772
- const bComponentLoaded = !!oResolvedHashFragment?.componentHandle;
1773
- // for SAPUI5 apps, the application type is still "URL" due to backwards compatibility, but the
1774
- // NavTargetResolutionInternal service already extracts the component name, so this can directly be used as indicator
1775
- const sTargetUi5ComponentName = oResolvedHashFragment?.ui5ComponentName;
1776
-
1777
- // handle special case when navigating from home to an application with state, when keep-alive is active
1778
- const oInMemoryApplicationInstance = this._getInMemoryInstance(sIntent, sShellHash, bNavigationFromHome, bNavigationWithInnerAppRoute);
1779
-
1780
- if (!oInMemoryApplicationInstance.destroyApplication) {
1781
- // no destroy required
1782
-
1783
- } else if (bComponentLoaded || !sTargetUi5ComponentName) { // non UI5 Application
1784
- if ((
1785
- oResolvedHashFragment.applicationType === "URL"
1786
- || ushellUtils.isSAPLegacyApplicationType(oResolvedHashFragment.applicationType)
1787
- )
1788
- && oInMemoryApplicationInstance.destroyApplication
1789
- && oInMemoryApplicationInstance.appId
1790
- ) {
1791
- await this._destroyApplication(oInMemoryApplicationInstance.appId, oInMemoryApplicationInstance.container);
1792
- }
1538
+ this._cleanupBeforeNewApp = async function (sAppId, oParsedShellHash, oResolvedHashFragment, bNavigationFromHome, bNavigationWithInnerAppRoute) {
1539
+ // todo: [FLPCOREANDUX-10024] add staged logging for createApplication including the cleanup similar to CSTR
1540
+ // ====== Exit current iframe app ======
1541
+ /*
1542
+ * for stateful containers, we need to exit/close the current application BEFORE any
1543
+ * navigation in the viewportContainer
1544
+ */
1545
+ const oCurrentApplicationContainer = this.getCurrentApplication()?.container;
1546
+ const bIsReusableContainer = oCurrentApplicationContainer && oCurrentApplicationContainer.getStatefulType() !== StatefulType.NotSupported;
1547
+ if (bIsReusableContainer) {
1548
+ await this._handleExitApplication(oCurrentApplicationContainer, false);
1549
+ }
1793
1550
 
1794
- } else { // UI5 Application
1795
- await this._destroyApplication(oInMemoryApplicationInstance.appId, oInMemoryApplicationInstance.container);
1796
- const oApplicationContainer = this._getApplicationContainerFromViewPort(sIntent);
1551
+ const sStorageAppId = `application-${sAppId}`;
1552
+ const oStorageEntry = KeepAliveApps.get(sStorageAppId);
1553
+ const bTargetAppWasKeptAlive = !!oStorageEntry;
1554
+ // the appId on the storage entry and the appId on the application container might be different.
1555
+ const oStoredApplicationContainer = oStorageEntry?.container;
1797
1556
 
1798
- if (oApplicationContainer) {
1799
- this._removeApplicationContainerFromViewPort(oApplicationContainer.getId());
1800
- oApplicationContainer.destroy();
1557
+ // For SAPUI5 apps, the application type is still "URL" due to backwards compatibility, but the
1558
+ // NavTargetResolutionInternal service already extracts the component name, so this can directly be used as indicator
1559
+ const bIsUI5AppWithoutIframe = !!oResolvedHashFragment?.ui5ComponentName;
1560
+
1561
+ // ====== Handle special navigation scenarios for keep alive apps ======
1562
+ if (bTargetAppWasKeptAlive) {
1563
+ const sNewShellHash = `#${UrlParsing.constructShellHash(oParsedShellHash)}`;
1564
+ const oComparison = UrlParsing.compareHashes(sNewShellHash, oStorageEntry.shellHash);
1565
+ const bSameTarget = oComparison.sameIntent && oComparison.sameParameters;
1566
+
1567
+ // Case: different app
1568
+ if (!bSameTarget) {
1569
+ Log.warning(`The keepAlive app '${sStorageAppId}' has to be destroyed because of id clashes.`);
1570
+ await this._destroyApplication(sStorageAppId, oStoredApplicationContainer);
1571
+
1572
+ // Case: Navigating from homepage to a keepAlive application via deep link (bookmark).
1573
+ // In this case, although keepAlive is active we need to destroy the application and re-open it.
1574
+ } else if (bNavigationFromHome && bNavigationWithInnerAppRoute) {
1575
+ Log.warning(`The keepAlive app '${sStorageAppId}' has to be destroyed because of a bookmark start.`);
1576
+ await this._destroyApplication(sStorageAppId, oStoredApplicationContainer);
1801
1577
  }
1802
1578
 
1803
- // close all keep alive apps with the same component name
1804
- await this._closeKeepAliveApps((oStorageEntry) => oStorageEntry.ui5ComponentName === oResolvedHashFragment.ui5ComponentName);
1579
+ // => we are navigating to the right keep alive app, so we keep it alive
1805
1580
  }
1806
- };
1807
1581
 
1808
- /**
1809
- * @param {string} sShellHash
1810
- * @param {object} oParsedShellHash
1811
- * @param {object} oResolvedHashFragment
1812
- * @param {boolean} bNavigationFromHome
1813
- * @param {boolean} bNavigationWithInnerAppRoute
1814
- */
1815
- this.handleCreateApp = async function (sShellHash, oParsedShellHash, oResolvedHashFragment, bNavigationFromHome, bNavigationWithInnerAppRoute) {
1816
- const sIntent = UrlParsing.getBasicHash(sShellHash);
1817
- const bComponentLoaded = !!oResolvedHashFragment?.componentHandle;
1818
- // for SAPUI5 apps, the application type is still "URL" due to backwards compatibility, but the
1819
- // NavTargetResolutionInternal service already extracts the component name, so this can directly be used as indicator
1820
- const sTargetUi5ComponentName = oResolvedHashFragment?.ui5ComponentName;
1821
- const bIsUI5App = !!sTargetUi5ComponentName;
1822
- const oInMemoryApplicationInstance = this._getInMemoryInstance(sIntent, sShellHash, bNavigationFromHome, bNavigationWithInnerAppRoute);
1823
-
1824
- // todo: [FLPCOREANDUX-10024] checking on the destroyApplication flag is odd at this point
1825
- if (bIsUI5App && !bComponentLoaded && oInMemoryApplicationInstance.destroyApplication) { // UI5 Application
1826
- AppConfiguration.setApplicationInInitMode();
1827
-
1828
- /*
1829
- * normal application:
1830
- * fire the _prior.newUI5ComponentInstantion event before creating the new component instance, so that
1831
- * the ApplicationContainer can stop the router of the current app (avoid inner-app hash change notifications)
1832
- * NOTE: this dependency to the ApplicationContainer is not nice, but we need a fast fix now; we should refactor
1833
- * the ApplicationContainer code, because most of the logic has to be done by the shell controller;
1834
- * maybe rather introduce a utility module
1835
- */
1836
- EventBus.getInstance().publish("ApplicationContainer", "_prior.newUI5ComponentInstantion",
1837
- { name: sTargetUi5ComponentName }
1838
- );
1582
+ // ====== Ensure that no id clashes occur ======
1583
+ // Get the application container by its control id
1584
+ // This might be different from the appId
1585
+ const oApplicationContainer = this._getApplicationContainerFromViewPort(sAppId);
1586
+ const bMatchesTheKeepAliveApp = oApplicationContainer === oStoredApplicationContainer;
1839
1587
 
1840
- // load ui5 component via shell service; core-ext-light will be loaded as part of the asyncHints
1841
- await Container.getServiceAsync("Ui5ComponentLoader");
1842
-
1843
- /*
1844
- * FIXME: It would be better to call a function that simply
1845
- * and intentionally loads the dependencies of the UI5
1846
- * application, rather than creating a component and expecting
1847
- * the dependencies to be loaded as a side effect.
1848
- * Moreover, the comment reads "load ui5 component via shell service"
1849
- * however that is 'not needed' since the loaded component
1850
- * is not used. We should evaluate the possible performance
1851
- * hit taken due to this implicit means to an end.
1852
- */
1853
-
1854
- /*
1855
- * return value is unused.
1856
- * This is because oResolvedHashFragment contains the component handle already.
1857
- * See the preceding note in AppLifeCycle.createComponent.
1858
- */
1859
- await Application.createComponent(oResolvedHashFragment, oParsedShellHash);
1588
+ if (oApplicationContainer && !bMatchesTheKeepAliveApp) { // non kept alive app
1589
+ // Collision with a stateful container
1590
+ if (bIsUI5AppWithoutIframe) {
1591
+ Log.warning(`The app '${oApplicationContainer.getCurrentAppId()}' has to be destroyed because of id clashes.`);
1592
+ await this._destroyApplication(oApplicationContainer.getCurrentAppId(), oApplicationContainer, true); // force destroy
1593
+
1594
+ } else if (!ApplicationContainerCache.canBeReused(oApplicationContainer, oResolvedHashFragment.url)) {
1595
+
1596
+ // the application container found via id is from a different server
1597
+ Log.warning(`The app '${oApplicationContainer.getCurrentAppId()}' has to be destroyed because of id clashes.`);
1598
+ await this._destroyApplication(oApplicationContainer.getCurrentAppId(), oApplicationContainer, true); // force destroy
1599
+ }
1600
+ } // else means either no app container found or there is a stateful container with a matching url
1601
+
1602
+ // ====== Ensure that component name clashes are prevented ======
1603
+ if (bIsUI5AppWithoutIframe) {
1604
+ // close all keep alive apps with the same component name (except the current one)
1605
+ // otherwise we have clashes on the component name
1606
+ await this._destroyKeepAliveApps((oStorageEntry) => {
1607
+ return oStorageEntry.appId !== sStorageAppId
1608
+ && oStorageEntry.ui5ComponentName === oResolvedHashFragment.ui5ComponentName;
1609
+ }, true); // force destroy
1610
+ }
1611
+
1612
+ // ====== Handle invalid iframes ======
1613
+ // get the potential target stateful container and check if it's valid. if not, destroy it
1614
+ // before we try to create the new application within the same stateful container
1615
+ const oPotentialApplicationContainer = ApplicationContainerCache.findFreeContainerByUrl(oResolvedHashFragment.url);
1616
+ if (oPotentialApplicationContainer && oPotentialApplicationContainer.getStatefulType() === StatefulType.ContractV2) {
1617
+ let bIframeInvalid = false;
1618
+ let sReason;
1619
+ if (oPotentialApplicationContainer.getIsInvalidIframe()) {
1620
+ bIframeInvalid = true;
1621
+ sReason = "iframe is in invalid state";
1622
+
1623
+ } else if (StatefulContainerV2Handler.isIframeIsValidSupported(oPotentialApplicationContainer)) {
1624
+ const iLastValidTimeDelta = new Date().getTime() - oPotentialApplicationContainer.getIsIframeValidTime().time;
1625
+ bIframeInvalid = iLastValidTimeDelta >= iValidIframeTimeout;
1626
+ sReason = `iframe did not ping in the last '${iLastValidTimeDelta}' ms`;
1627
+ }
1628
+
1629
+ if (bIframeInvalid) {
1630
+ Log.warning(
1631
+ `Destroying stateful container iframe due to unresponsiveness (${oPotentialApplicationContainer.getId()})`,
1632
+ `reason: ${sReason}`,
1633
+ "sap.ushell.components.applicationIntegration.AppLifeCycle"
1634
+ );
1635
+
1636
+ // not able to exit gracefully, destroy the container directly forcefully
1637
+ return this._destroyApplication(sStorageAppId, oPotentialApplicationContainer, true); // force destroy
1638
+ }
1860
1639
  }
1861
1640
  };
1862
1641
 
@@ -1864,7 +1643,7 @@ sap.ui.define([
1864
1643
  *
1865
1644
  * @param {sap.ui.core.Component} oApplication
1866
1645
  */
1867
- this.onAppAfterRendering = function (oApplication) {
1646
+ this._onAppAfterRendering = function (oApplication) {
1868
1647
  // wrapped in setTimeout since "publish" is not async
1869
1648
  window.setTimeout(() => {
1870
1649
  EventBus.getInstance().publish("sap.ushell", "appOpened", oApplication);
@@ -1893,7 +1672,31 @@ sap.ui.define([
1893
1672
  this.setViewPortContainer = function (oNewViewPortContainer) {
1894
1673
  oViewPortContainer = oNewViewPortContainer;
1895
1674
  };
1675
+
1676
+ /**
1677
+ * Only for testing
1678
+ */
1679
+ this.reset = function () {
1680
+ oCurrentApplication = {};
1681
+ KeepAliveApps._clean();
1682
+ ApplicationContainerCache.destroyAllContainers();
1683
+ PostMessageManager.reset();
1684
+ };
1685
+
1686
+ this._setContainerReadyForReuse = function (oApplicationContainer) {
1687
+ if (!oApplicationContainer) {
1688
+ return;
1689
+ }
1690
+
1691
+ ApplicationContainerCache.setContainerReadyForReuse(oApplicationContainer, oApplicationContainer.getCurrentAppUrl());
1692
+
1693
+ oApplicationContainer.setProperty("isKeepAlive", false, true);
1694
+ oApplicationContainer.setProperty("currentAppUrl", "", true);
1695
+ oApplicationContainer.setProperty("isFetchedFromCache", false, true);
1696
+ };
1896
1697
  }
1897
1698
 
1699
+ AppLifeCycle.prototype.KeepAliveMode = KEEP_ALIVE_MODES;
1700
+
1898
1701
  return new AppLifeCycle();
1899
- }, /* bExport= */ true);
1702
+ });