@openui5/sap.ui.core 1.92.0 → 1.95.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 (394) hide show
  1. package/{.eslintrc → .eslintrc.json} +1 -2
  2. package/.reuse/dep5 +1 -6
  3. package/THIRDPARTY.txt +4 -10
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +9 -2
  6. package/src/jquery.sap.properties.js +1 -1
  7. package/src/jquery.sap.resources.js +1 -1
  8. package/src/jquery.sap.script.js +1 -1
  9. package/src/jquery.sap.storage.js +7 -4
  10. package/src/jquery.sap.stubs.js +2 -1
  11. package/src/jquery.sap.trace.js +2 -1
  12. package/src/sap/base/i18n/ResourceBundle.js +8 -4
  13. package/src/sap/base/strings/whitespaceReplacer.js +52 -0
  14. package/src/sap/base/util/Properties.js +4 -1
  15. package/src/sap/base/util/isEmptyObject.js +1 -2
  16. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  17. package/src/sap/base/util/restricted/_castArray.js +1 -1
  18. package/src/sap/base/util/restricted/_compact.js +1 -1
  19. package/src/sap/base/util/restricted/_curry.js +1 -1
  20. package/src/sap/base/util/restricted/_debounce.js +1 -1
  21. package/src/sap/base/util/restricted/_difference.js +1 -1
  22. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  23. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  25. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  26. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  27. package/src/sap/base/util/restricted/_flatten.js +1 -1
  28. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  29. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  30. package/src/sap/base/util/restricted/_intersection.js +1 -1
  31. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  32. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  34. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  35. package/src/sap/base/util/restricted/_isNil.js +1 -1
  36. package/src/sap/base/util/restricted/_max.js +1 -1
  37. package/src/sap/base/util/restricted/_merge.js +1 -1
  38. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  39. package/src/sap/base/util/restricted/_min.js +1 -1
  40. package/src/sap/base/util/restricted/_omit.js +1 -1
  41. package/src/sap/base/util/restricted/_pick.js +1 -1
  42. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  43. package/src/sap/base/util/restricted/_throttle.js +1 -1
  44. package/src/sap/base/util/restricted/_toArray.js +1 -1
  45. package/src/sap/base/util/restricted/_union.js +1 -1
  46. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  47. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  48. package/src/sap/base/util/restricted/_uniq.js +1 -1
  49. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  50. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  51. package/src/sap/base/util/restricted/_without.js +1 -1
  52. package/src/sap/base/util/restricted/_xor.js +1 -1
  53. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  54. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  55. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  56. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  57. package/src/sap/ui/Device.js +37 -42
  58. package/src/sap/ui/Global.js +6 -6
  59. package/src/sap/ui/VersionInfo.js +1 -0
  60. package/src/sap/ui/base/DataType.js +14 -7
  61. package/src/sap/ui/base/Event.js +1 -1
  62. package/src/sap/ui/base/EventProvider.js +1 -1
  63. package/src/sap/ui/base/ExpressionParser.js +9 -6
  64. package/src/sap/ui/base/Interface.js +3 -49
  65. package/src/sap/ui/base/ManagedObject.js +131 -24
  66. package/src/sap/ui/base/ManagedObjectMetadata.js +13 -4
  67. package/src/sap/ui/base/Metadata.js +1 -1
  68. package/src/sap/ui/base/Object.js +49 -4
  69. package/src/sap/ui/base/ObjectPool.js +1 -1
  70. package/src/sap/ui/base/syncXHRFix.js +2 -1
  71. package/src/sap/ui/core/.library +5 -5
  72. package/src/sap/ui/core/AppCacheBuster.js +4 -4
  73. package/src/sap/ui/core/BusyIndicator.js +1 -11
  74. package/src/sap/ui/core/BusyIndicatorUtils.js +4 -1
  75. package/src/sap/ui/core/Component.js +441 -179
  76. package/src/sap/ui/core/ComponentContainer.js +16 -6
  77. package/src/sap/ui/core/ComponentMetadata.js +14 -3
  78. package/src/sap/ui/core/ComponentSupport.js +1 -1
  79. package/src/sap/ui/core/Configuration.js +64 -32
  80. package/src/sap/ui/core/Control.js +1 -1
  81. package/src/sap/ui/core/Core.js +57 -40
  82. package/src/sap/ui/core/CustomData.js +1 -1
  83. package/src/sap/ui/core/CustomizingConfiguration.js +35 -260
  84. package/src/sap/ui/core/DeclarativeSupport.js +3 -2
  85. package/src/sap/ui/core/Element.js +1 -1
  86. package/src/sap/ui/core/ElementMetadata.js +4 -2
  87. package/src/sap/ui/core/EnabledPropagator.js +91 -73
  88. package/src/sap/ui/core/EventBus.js +1 -1
  89. package/src/sap/ui/core/ExtensionPoint.js +7 -14
  90. package/src/sap/ui/core/Fragment.js +30 -32
  91. package/src/sap/ui/core/HTML.js +1 -1
  92. package/src/sap/ui/core/History.js +1 -1
  93. package/src/sap/ui/core/Icon.js +5 -5
  94. package/src/sap/ui/core/IconPool.js +15 -1097
  95. package/src/sap/ui/core/IconRenderer.js +2 -2
  96. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  97. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  98. package/src/sap/ui/core/InvisibleMessage.js +9 -1
  99. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  100. package/src/sap/ui/core/InvisibleText.js +1 -1
  101. package/src/sap/ui/core/Item.js +1 -1
  102. package/src/sap/ui/core/LabelEnablement.js +1 -1
  103. package/src/sap/ui/core/LayoutData.js +1 -1
  104. package/src/sap/ui/core/ListItem.js +1 -1
  105. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  106. package/src/sap/ui/core/Locale.js +26 -4
  107. package/src/sap/ui/core/LocaleData.js +1 -1
  108. package/src/sap/ui/core/Manifest.js +124 -126
  109. package/src/sap/ui/core/Message.js +1 -1
  110. package/src/sap/ui/core/Patcher.js +53 -80
  111. package/src/sap/ui/core/Placeholder.js +25 -11
  112. package/src/sap/ui/core/Popup.js +29 -5
  113. package/src/sap/ui/core/RenderManager.js +41 -24
  114. package/src/sap/ui/core/Renderer.js +13 -3
  115. package/src/sap/ui/core/ResizeHandler.js +1 -1
  116. package/src/sap/ui/core/ScrollBar.js +2 -2
  117. package/src/sap/ui/core/SeparatorItem.js +1 -1
  118. package/src/sap/ui/core/ShortcutHintsMixin.js +14 -7
  119. package/src/sap/ui/core/ThemeCheck.js +13 -61
  120. package/src/sap/ui/core/Title.js +1 -1
  121. package/src/sap/ui/core/TooltipBase.js +1 -1
  122. package/src/sap/ui/core/UIArea.js +5 -2
  123. package/src/sap/ui/core/UIComponent.js +81 -40
  124. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  125. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  126. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  127. package/src/sap/ui/core/XMLComposite.js +1 -1
  128. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  129. package/src/sap/ui/core/XMLTemplateProcessor.js +5 -5
  130. package/src/sap/ui/core/_IconRegistry.js +1215 -0
  131. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  132. package/src/sap/ui/core/delegate/ScrollEnablement.js +6 -3
  133. package/src/sap/ui/core/dnd/DragDropBase.js +2 -9
  134. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  135. package/src/sap/ui/core/dnd/DragInfo.js +41 -1
  136. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  137. package/src/sap/ui/core/format/DateFormat.js +2 -0
  138. package/src/sap/ui/core/format/NumberFormat.js +2 -0
  139. package/src/sap/ui/core/hyphenation/Hyphenation.js +73 -221
  140. package/src/sap/ui/core/hyphenation/HyphenationTestingWords.js +11 -10
  141. package/src/sap/ui/core/library.js +3 -3
  142. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  143. package/src/sap/ui/core/message/Message.js +1 -1
  144. package/src/sap/ui/core/message/MessageManager.js +13 -13
  145. package/src/sap/ui/core/message/MessageParser.js +1 -1
  146. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  147. package/src/sap/ui/core/messagebundle_de.properties +1 -1
  148. package/src/sap/ui/core/messagebundle_fr.properties +1 -1
  149. package/src/sap/ui/core/messagebundle_it.properties +1 -1
  150. package/src/sap/ui/core/messagebundle_pl.properties +1 -1
  151. package/src/sap/ui/core/messagebundle_th.properties +2 -2
  152. package/src/sap/ui/core/mvc/Controller.js +166 -9
  153. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +30 -32
  154. package/src/sap/ui/core/mvc/ControllerMetadata.js +18 -18
  155. package/src/sap/ui/core/mvc/HTMLView.js +4 -2
  156. package/src/sap/ui/core/mvc/JSONView.js +8 -6
  157. package/src/sap/ui/core/mvc/JSView.js +5 -3
  158. package/src/sap/ui/core/mvc/TemplateView.js +2 -2
  159. package/src/sap/ui/core/mvc/View.js +73 -89
  160. package/src/sap/ui/core/mvc/ViewType.js +2 -0
  161. package/src/sap/ui/core/mvc/XMLView.js +14 -10
  162. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  163. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  164. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  165. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  166. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  167. package/src/sap/ui/core/routing/History.js +36 -18
  168. package/src/sap/ui/core/routing/Route.js +10 -1
  169. package/src/sap/ui/core/routing/Router.js +8 -5
  170. package/src/sap/ui/core/routing/Target.js +13 -0
  171. package/src/sap/ui/core/routing/TargetCache.js +1 -1
  172. package/src/sap/ui/core/routing/Targets.js +39 -2
  173. package/src/sap/ui/core/routing/async/Route.js +7 -4
  174. package/src/sap/ui/core/routing/async/Target.js +383 -262
  175. package/src/sap/ui/core/routing/sync/Target.js +15 -0
  176. package/src/sap/ui/core/rules/App.support.js +35 -1
  177. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  178. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  179. package/src/sap/ui/core/service/Service.js +1 -1
  180. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  181. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  182. package/src/sap/ui/core/support/BootSupportTool.js +11 -0
  183. package/src/sap/ui/core/support/InteractionTree.css +4 -0
  184. package/src/sap/ui/core/support/Plugin.js +1 -1
  185. package/src/sap/ui/core/support/Support.js +1 -1
  186. package/src/sap/ui/core/support/ViewInfo.css +599 -0
  187. package/src/sap/ui/core/support/controls/InteractionTree.js +352 -222
  188. package/src/sap/ui/core/support/controls/ObjectViewer.js +8 -50
  189. package/src/sap/ui/core/support/controls/TimelineOverview.js +49 -24
  190. package/src/sap/ui/core/support/controls/TreeViewer.js +12 -58
  191. package/src/sap/ui/core/support/plugins/ControlTree.js +23 -26
  192. package/src/sap/ui/core/support/plugins/Debugging.js +9 -11
  193. package/src/sap/ui/core/support/plugins/Interaction.js +2 -2
  194. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  195. package/src/sap/ui/core/support/plugins/Performance.js +147 -75
  196. package/src/sap/ui/core/support/plugins/Selector.js +19 -24
  197. package/src/sap/ui/core/support/plugins/TechInfo.js +5 -5
  198. package/src/sap/ui/core/support/plugins/Trace.js +95 -32
  199. package/src/sap/ui/core/support/plugins/ViewInfo.js +9 -73
  200. package/src/sap/ui/core/support/support.css +109 -14
  201. package/src/sap/ui/core/support/support.html +6 -2
  202. package/src/sap/ui/core/support/techinfo/TechnicalInfo.fragment.xml +1 -0
  203. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +149 -72
  204. package/src/sap/ui/core/support/trace/E2eTraceLib.js +3 -3
  205. package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +5 -0
  206. package/src/sap/ui/core/themes/base/base.less +27 -25
  207. package/src/sap/ui/core/themes/base/shared.less +1 -0
  208. package/src/sap/ui/core/theming/Parameters.js +225 -61
  209. package/src/sap/ui/core/theming/ThemeHelper.js +94 -0
  210. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  211. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  212. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  213. package/src/sap/ui/core/tmpl/Template.js +11 -28
  214. package/src/sap/ui/core/tmpl/TemplateControl.js +4 -4
  215. package/src/sap/ui/core/tmpl/_parsePath.js +35 -0
  216. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  217. package/src/sap/ui/core/util/DraftEnabledMockServer.js +9 -4
  218. package/src/sap/ui/core/util/Export.js +1 -1
  219. package/src/sap/ui/core/util/ExportCell.js +1 -1
  220. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  221. package/src/sap/ui/core/util/ExportRow.js +1 -1
  222. package/src/sap/ui/core/util/ExportType.js +1 -1
  223. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  224. package/src/sap/ui/core/util/File.js +1 -1
  225. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  226. package/src/sap/ui/core/util/MockServer.js +24 -5
  227. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +3 -2
  228. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  229. package/src/sap/ui/core/util/XMLPreprocessor.js +11 -12
  230. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +154 -63
  231. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +171 -152
  232. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +419 -291
  233. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  234. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  235. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  236. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  237. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  238. package/src/sap/ui/core/util/serializer/delegate/HTML.js +2 -2
  239. package/src/sap/ui/core/util/serializer/delegate/XML.js +2 -2
  240. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  241. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  242. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  243. package/src/sap/ui/debug/ControlTree.js +10 -4
  244. package/src/sap/ui/debug/DebugEnv.js +3 -4
  245. package/src/sap/ui/debug/PropertyList.css +55 -0
  246. package/src/sap/ui/debug/PropertyList.js +111 -182
  247. package/src/sap/ui/events/jquery/EventSimulation.js +7 -6
  248. package/src/sap/ui/events/jquery/EventTriggerHook.js +1 -1
  249. package/src/sap/ui/model/ClientModel.js +1 -1
  250. package/src/sap/ui/model/ClientPropertyBinding.js +3 -1
  251. package/src/sap/ui/model/ClientTreeBinding.js +14 -8
  252. package/src/sap/ui/model/CompositeDataState.js +1 -1
  253. package/src/sap/ui/model/CompositeType.js +1 -1
  254. package/src/sap/ui/model/Context.js +31 -11
  255. package/src/sap/ui/model/DataState.js +1 -1
  256. package/src/sap/ui/model/ListBinding.js +19 -0
  257. package/src/sap/ui/model/MetaModel.js +1 -1
  258. package/src/sap/ui/model/Model.js +3 -3
  259. package/src/sap/ui/model/SelectionModel.js +5 -1
  260. package/src/sap/ui/model/SimpleType.js +1 -1
  261. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  262. package/src/sap/ui/model/Type.js +1 -1
  263. package/src/sap/ui/model/analytics/AnalyticalBinding.js +14 -9
  264. package/src/sap/ui/model/analytics/odata4analytics.js +31 -23
  265. package/src/sap/ui/model/base/ManagedObjectModel.js +13 -1
  266. package/src/sap/ui/model/json/JSONModel.js +4 -2
  267. package/src/sap/ui/model/message/MessageModel.js +4 -2
  268. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  269. package/src/sap/ui/model/odata/ODataListBinding.js +1 -0
  270. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  271. package/src/sap/ui/model/odata/ODataMetaModel.js +5 -2
  272. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  273. package/src/sap/ui/model/odata/ODataModel.js +7 -6
  274. package/src/sap/ui/model/odata/ODataUtils.js +31 -10
  275. package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +30 -27
  276. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  277. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  278. package/src/sap/ui/model/odata/type/Currency.js +7 -2
  279. package/src/sap/ui/model/odata/type/Date.js +1 -1
  280. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  281. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  282. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  283. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  284. package/src/sap/ui/model/odata/type/Double.js +1 -1
  285. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  286. package/src/sap/ui/model/odata/type/Int.js +1 -1
  287. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  288. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  289. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  290. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  291. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  292. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  293. package/src/sap/ui/model/odata/type/Single.js +1 -1
  294. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  295. package/src/sap/ui/model/odata/type/String.js +3 -1
  296. package/src/sap/ui/model/odata/type/Time.js +1 -1
  297. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  298. package/src/sap/ui/model/odata/type/Unit.js +7 -2
  299. package/src/sap/ui/model/odata/type/UnitMixin.js +20 -7
  300. package/src/sap/ui/model/odata/v2/Context.js +187 -0
  301. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +2 -2
  302. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +55 -51
  303. package/src/sap/ui/model/odata/v2/ODataListBinding.js +42 -106
  304. package/src/sap/ui/model/odata/v2/ODataModel.js +251 -159
  305. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +163 -136
  306. package/src/sap/ui/model/odata/v4/Context.js +6 -3
  307. package/src/sap/ui/model/odata/v4/ODataBinding.js +3 -3
  308. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +97 -25
  309. package/src/sap/ui/model/odata/v4/ODataListBinding.js +112 -24
  310. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +15 -12
  311. package/src/sap/ui/model/odata/v4/ODataModel.js +85 -77
  312. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +25 -15
  313. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +21 -12
  314. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +10 -3
  315. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +13 -4
  316. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -1
  317. package/src/sap/ui/model/odata/v4/lib/_Cache.js +28 -17
  318. package/src/sap/ui/model/odata/v4/lib/_Helper.js +47 -30
  319. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +55 -19
  320. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +2 -2
  321. package/src/sap/ui/model/resource/ResourceModel.js +5 -2
  322. package/src/sap/ui/model/type/Boolean.js +1 -1
  323. package/src/sap/ui/model/type/Currency.js +1 -1
  324. package/src/sap/ui/model/type/Date.js +1 -1
  325. package/src/sap/ui/model/type/DateInterval.js +1 -1
  326. package/src/sap/ui/model/type/DateTime.js +1 -1
  327. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  328. package/src/sap/ui/model/type/FileSize.js +1 -1
  329. package/src/sap/ui/model/type/Float.js +1 -1
  330. package/src/sap/ui/model/type/Integer.js +1 -1
  331. package/src/sap/ui/model/type/String.js +1 -1
  332. package/src/sap/ui/model/type/Time.js +1 -1
  333. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  334. package/src/sap/ui/model/type/Unit.js +1 -1
  335. package/src/sap/ui/model/xml/XMLModel.js +4 -2
  336. package/src/sap/ui/performance/Measurement.js +1 -1
  337. package/src/sap/ui/performance/trace/FESR.js +2 -1
  338. package/src/sap/ui/performance/trace/Interaction.js +42 -25
  339. package/src/sap/ui/performance/trace/initTraces.js +1 -1
  340. package/src/sap/ui/qunit/QUnitUtils.js +1 -1
  341. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  342. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  343. package/src/sap/ui/security/FrameOptions.js +2 -1
  344. package/src/sap/ui/test/Opa5.js +1 -1
  345. package/src/sap/ui/test/OpaBuilder.js +1 -0
  346. package/src/sap/ui/test/TestUtils.js +28 -34
  347. package/src/sap/ui/test/actions/Drag.js +6 -2
  348. package/src/sap/ui/test/actions/Drop.js +6 -2
  349. package/src/sap/ui/test/actions/EnterText.js +6 -0
  350. package/src/sap/ui/test/actions/Press.js +6 -0
  351. package/src/sap/ui/test/actions/Scroll.js +6 -0
  352. package/src/sap/ui/test/autowaiter/_resourceWaiter.js +4 -4
  353. package/src/sap/ui/test/launchers/componentLauncher.js +1 -4
  354. package/src/sap/ui/test/matchers/I18NText.js +29 -11
  355. package/src/sap/ui/test/opaQunit.js +11 -9
  356. package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +4 -4
  357. package/src/sap/ui/thirdparty/caja-html-sanitizer.js +1 -1
  358. package/src/sap/ui/thirdparty/crossroads.js +16 -6
  359. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly.js +1196 -0
  360. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly_Loader.js +797 -0
  361. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.asm.js +108 -127
  362. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.wasm +0 -0
  363. package/src/sap/ui/thirdparty/hyphenopoly/patterns/bg.hpb +0 -0
  364. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ca.hpb +0 -0
  365. package/src/sap/ui/thirdparty/hyphenopoly/patterns/da.hpb +0 -0
  366. package/src/sap/ui/thirdparty/hyphenopoly/patterns/de.hpb +0 -0
  367. package/src/sap/ui/thirdparty/hyphenopoly/patterns/el-monoton.hpb +0 -0
  368. package/src/sap/ui/thirdparty/hyphenopoly/patterns/en-us.hpb +0 -0
  369. package/src/sap/ui/thirdparty/hyphenopoly/patterns/es.hpb +0 -0
  370. package/src/sap/ui/thirdparty/hyphenopoly/patterns/et.hpb +0 -0
  371. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fi.hpb +0 -0
  372. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fr.hpb +0 -0
  373. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hi.hpb +0 -0
  374. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hr.hpb +0 -0
  375. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hu.hpb +0 -0
  376. package/src/sap/ui/thirdparty/hyphenopoly/patterns/it.hpb +0 -0
  377. package/src/sap/ui/thirdparty/hyphenopoly/patterns/lt.hpb +0 -0
  378. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nb-no.hpb +0 -0
  379. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nl.hpb +0 -0
  380. package/src/sap/ui/thirdparty/hyphenopoly/patterns/pt.hpb +0 -0
  381. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ru.hpb +0 -0
  382. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sl.hpb +0 -0
  383. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sv.hpb +0 -0
  384. package/src/sap/ui/thirdparty/hyphenopoly/patterns/th.hpb +0 -0
  385. package/src/sap/ui/thirdparty/hyphenopoly/patterns/tr.hpb +0 -0
  386. package/src/sap/ui/thirdparty/hyphenopoly/patterns/uk.hpb +0 -0
  387. package/src/sap/ui/util/Storage.js +1 -1
  388. package/src/sap/ui/util/isCrossOriginURL.js +16 -6
  389. package/src/sap-ui-core-nojQuery.js +1 -1
  390. package/src/sap-ui-core.js +1 -1
  391. package/src/sap-ui-debug.js +3 -17
  392. package/src/ui5loader.js +5 -2
  393. package/src/sap/ui/core/support/plugins/MessageTest.js +0 -96
  394. package/src/sap/ui/thirdparty/hyphenopoly/hyphenopoly.bundle.js +0 -860
@@ -82,7 +82,7 @@ sap.ui.define([
82
82
  * @param {Element[]} aItemDomRefs Array of DOM references representing the items for the navigation
83
83
  * @param {boolean} [bNotInTabChain=false] Whether the selected element should be in the tab chain or not
84
84
  *
85
- * @version 1.92.0
85
+ * @version 1.95.0
86
86
  * @alias sap.ui.core.delegate.ItemNavigation
87
87
  * @public
88
88
  */
@@ -14,6 +14,7 @@
14
14
  sap.ui.define([
15
15
  'sap/ui/Device',
16
16
  'sap/ui/base/Object',
17
+ 'sap/ui/core/Core',
17
18
  'sap/ui/core/IntervalTrigger',
18
19
  'sap/ui/core/ResizeHandler',
19
20
  "sap/ui/thirdparty/jquery",
@@ -22,6 +23,7 @@ sap.ui.define([
22
23
  function(
23
24
  Device,
24
25
  BaseObject,
26
+ Core,
25
27
  IntervalTrigger,
26
28
  ResizeHandler,
27
29
  jQuery,
@@ -56,7 +58,7 @@ sap.ui.define([
56
58
  *
57
59
  * @protected
58
60
  * @alias sap.ui.core.delegate.ScrollEnablement
59
- * @version 1.92.0
61
+ * @version 1.95.0
60
62
  * @author SAP SE
61
63
  */
62
64
  var ScrollEnablement = BaseObject.extend("sap.ui.core.delegate.ScrollEnablement", /** @lends sap.ui.core.delegate.ScrollEnablement.prototype */ {
@@ -389,7 +391,8 @@ sap.ui.define([
389
391
  }
390
392
 
391
393
  if (!this.getVertical()) {
392
- left = this._scrollX;
394
+ left = Core.getConfiguration().getRTL() ?
395
+ container.clientWidth - container.scrollWidth : this._scrollX;
393
396
  }
394
397
 
395
398
  this._customScrollTo(left, top, oEvent);
@@ -805,7 +808,7 @@ sap.ui.define([
805
808
  if (oConfig.nonTouchScrolling === true) {
806
809
  this._bDragScroll = true; // optional drag instead of native scrolling
807
810
  }
808
- if (sap.ui.getCore().getConfiguration().getRTL()) {
811
+ if (Core.getConfiguration().getRTL()) {
809
812
  this._scrollX = 9999; // in RTL case initially scroll to the very right
810
813
  }
811
814
  },
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  *
39
39
  * @extends sap.ui.core.Element
40
40
  * @author SAP SE
41
- * @version 1.92.0
41
+ * @version 1.95.0
42
42
  *
43
43
  * @public
44
44
  * @since 1.52
@@ -59,7 +59,7 @@ sap.ui.define([
59
59
  * Indicates whether this configuration is active or not.
60
60
  * @since 1.56
61
61
  */
62
- enabled: {type: "boolean", defaultValue: true}
62
+ enabled: {type: "boolean", defaultValue: true, invalidate: false}
63
63
  }
64
64
  }
65
65
  });
@@ -102,13 +102,6 @@ sap.ui.define([
102
102
  return true;
103
103
  };
104
104
 
105
- /*
106
- * Enabled property should only invalidate for DragInfos.
107
- */
108
- DragDropBase.prototype.setEnabled = function(bEnabled) {
109
- return this.setProperty("enabled", bEnabled, !this.isA("sap.ui.core.dnd.IDragInfo"));
110
- };
111
-
112
105
  /*
113
106
  * Suppress invalidation when the invalidate attribute of the property metadata is "false".
114
107
  */
@@ -22,7 +22,7 @@ sap.ui.define(["./DragInfo", "./DropInfo", "sap/ui/Device", "sap/base/Log"],
22
22
  * @extends sap.ui.core.dnd.DropInfo
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.92.0
25
+ * @version 1.95.0
26
26
  *
27
27
  * @public
28
28
  * @since 1.52
@@ -22,7 +22,7 @@ sap.ui.define(["./DragDropBase"],
22
22
  * @extends sap.ui.core.dnd.DragDropBase
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.92.0
25
+ * @version 1.95.0
26
26
  *
27
27
  * @public
28
28
  * @since 1.56
@@ -143,6 +143,46 @@ sap.ui.define(["./DragDropBase"],
143
143
  });
144
144
  };
145
145
 
146
+ this.setEnabled = function(bEnabled) {
147
+ this.setProperty("enabled", bEnabled, false);
148
+ this.invalidateDraggables();
149
+ return this;
150
+ };
151
+
152
+ this.setParent = function() {
153
+ DragDropBase.prototype.setParent.apply(this, arguments);
154
+ this.invalidateDraggables();
155
+ return this;
156
+ };
157
+
158
+ this.setSourceAggregation = function(sSourceAggregation) {
159
+ var sOldSourceAggregation = this.getSourceAggregation();
160
+ if (sOldSourceAggregation == sSourceAggregation) {
161
+ return this;
162
+ }
163
+
164
+ sOldSourceAggregation && this.invalidateDraggables();
165
+ this.setProperty("sourceAggregation", sSourceAggregation, false);
166
+ this.invalidateDraggables();
167
+ return this;
168
+ };
169
+
170
+ this.invalidateDraggables = function() {
171
+ var oParent = this.getParent();
172
+ if (oParent && oParent.bOutput == true) {
173
+ var sSourceAggregation = this.getSourceAggregation();
174
+ if (sSourceAggregation) {
175
+ [].concat(oParent.getAggregation(sSourceAggregation)).forEach(function(oAggregation) {
176
+ if (oAggregation && oAggregation.bOutput == true) {
177
+ oAggregation.invalidate();
178
+ }
179
+ });
180
+ } else {
181
+ oParent.invalidate();
182
+ }
183
+ }
184
+ };
185
+
146
186
  };
147
187
 
148
188
  DragInfo.Mixin.apply(DragInfo.prototype);
@@ -21,7 +21,7 @@ sap.ui.define(["./DragDropBase"],
21
21
  * @extends sap.ui.core.dnd.DragDropBase
22
22
  *
23
23
  * @author SAP SE
24
- * @version 1.92.0
24
+ * @version 1.95.0
25
25
  *
26
26
  * @public
27
27
  * @since 1.56
@@ -1512,6 +1512,8 @@ sap.ui.define([
1512
1512
  sResult = aBuffer.join("");
1513
1513
 
1514
1514
  if (sap.ui.getCore().getConfiguration().getOriginInfo()) {
1515
+ // String object is created on purpose and must not be a string literal
1516
+ // eslint-disable-next-line no-new-wrappers
1515
1517
  sResult = new String(sResult);
1516
1518
  sResult.originInfo = {
1517
1519
  source: "Common Locale Data Repository",
@@ -1420,6 +1420,8 @@ sap.ui.define([
1420
1420
 
1421
1421
  NumberFormat.prototype._addOriginInfo = function(sResult) {
1422
1422
  if (sap.ui.getCore().getConfiguration().getOriginInfo()) {
1423
+ // String object is created on purpose and must not be a string literal
1424
+ // eslint-disable-next-line no-new-wrappers
1423
1425
  sResult = new String(sResult);
1424
1426
  sResult.originInfo = {
1425
1427
  source: "Common Locale Data Repository",
@@ -8,13 +8,11 @@ sap.ui.define([
8
8
  "./HyphenationTestingWords",
9
9
  "sap/ui/base/ManagedObject",
10
10
  "sap/base/Log",
11
- "sap/base/util/deepEqual",
12
11
  "sap/ui/core/Locale"
13
12
  ], function (
14
13
  HyphenationTestingWords,
15
14
  ManagedObject,
16
15
  Log,
17
- deepEqual,
18
16
  Locale
19
17
  ) {
20
18
  "use strict";
@@ -96,119 +94,59 @@ sap.ui.define([
96
94
  var oHyphenationInstance = null;
97
95
  var fakeBody = null;
98
96
  var oHyphenateMethods = {};
99
- var oPromisesForLang = {};
100
- var aLanguagesQueue = [];
101
- var mLanguageConfigs = {};
102
97
 
103
98
  /**
104
99
  * Calls Hyphenopoly to initialize a language.
105
100
  * Loads language-specific resources.
106
101
  *
107
102
  * @param {string} sLanguage What language to initialize
108
- * @param {object} oConfig What config to sent to Hyphenopoly
109
- * @param {function} resolve Callback to resolve the promise created on initialize
103
+ * @returns {Promise} Promise that resolves with the hyphenator function for that language
110
104
  * @private
111
105
  */
112
- function initializeLanguage(sLanguage, oConfig, resolve) {
106
+ function initializeLanguage(sLanguage) {
113
107
  Log.info(
114
108
  "[UI5 Hyphenation] Initializing third-party module for language " + getLanguageDisplayName(sLanguage),
115
109
  "sap.ui.core.hyphenation.Hyphenation.initialize()"
116
110
  );
117
111
 
118
- window.hyphenopoly.initializeLanguage(oConfig)
119
- .then(onLanguageInitialized.bind(this, sLanguage, resolve));
120
- }
121
-
122
- /**
123
- * Applies new config to a language.
124
- *
125
- * @param {string} sLanguage What language to re-initialize
126
- * @param {object} oConfig What is the new config
127
- * @param {function} resolve Callback to resolve the promise created on initialize
128
- * @private
129
- */
130
- function reInitializeLanguage(sLanguage, oConfig, resolve) {
131
- Log.info(
132
- "[UI5 Hyphenation] Re-initializing third-party module for language " + getLanguageDisplayName(sLanguage),
133
- "sap.ui.core.hyphenation.Hyphenation.initialize()"
134
- );
135
-
136
- window.hyphenopoly.reInitializeLanguage(sLanguage, oConfig)
137
- .then(onLanguageInitialized.bind(this, sLanguage, resolve));
138
- }
112
+ var oHyphenopolyConfig = createHyphenopolyConfig();
113
+ oHyphenopolyConfig.require[sLanguage] = "FORCEHYPHENOPOLY"; // force loading of the engine for this language
139
114
 
140
- /**
141
- * A callback for when language initialization is ready.
142
- *
143
- * @param {string} sLanguage What language was initialized
144
- * @param {function} resolve Callback to resolve the promise created on initialize
145
- * @param {string} hyphenateMethod Is it asm or wasm
146
- * @private
147
- */
148
- function onLanguageInitialized(sLanguage, resolve, hyphenateMethod) {
149
- oHyphenateMethods[sLanguage] = hyphenateMethod;
150
- oHyphenationInstance.bIsInitialized = true;
151
- if (aLanguagesQueue.length > 0) {
152
- aLanguagesQueue.forEach(function (oElement) {
153
- initializeLanguage(oElement.sLanguage, oElement.oConfig, oElement.resolve);
115
+ return loadScript(sap.ui.require.toUrl("sap/ui/thirdparty/hyphenopoly/"), "Hyphenopoly_Loader.js")
116
+ .then(function () {
117
+ delete oHyphenopolyConfig.require[sLanguage];
118
+ return window.Hyphenopoly.hyphenators[sLanguage];
154
119
  });
155
- aLanguagesQueue = [];
156
- }
157
- oHyphenationInstance.bLoading = false;
158
- resolve(
159
- getLanguageFromPattern(sLanguage)
160
- );
161
120
  }
162
121
 
163
- /**
164
- * Transforms the given config so it can be sent to Hyphenopoly.
165
- *
166
- * @param {string} sLanguage The language for which a config is prepared.
167
- * @param {object} oConfig Object map with configuration
168
- * @returns {Object} {{require: [*], hyphen: string, path: (string|*)}}
169
- * @private
170
- */
171
- function prepareConfig(sLanguage, oConfig) {
172
- //Creating default configuration
173
- var oConfigurationForLanguage = {
174
- "require": [sLanguage],
175
- "hyphen": "\u00AD",
176
- "leftmin": 3, // The minimum of chars to remain on the old line.
177
- "rightmin": 3,// The minimum of chars to go on the new line
178
- "compound": "all", // factory-made -> fac-tory-[ZWSP]made
179
- "path": sap.ui.require.toUrl("sap/ui/thirdparty/hyphenopoly")
180
- };
181
-
182
- // we are passing only 3 properties to hyphenopoly: hyphen, exceptions and minWordLength
183
- if (oConfig) {
184
- if ("hyphen" in oConfig) {
185
- oConfigurationForLanguage.hyphen = oConfig.hyphen;
186
- }
187
-
188
- if ("minWordLength" in oConfig) {
189
- oConfigurationForLanguage.minWordLength = oConfig.minWordLength;
190
- }
191
-
192
- if ("exceptions" in oConfig) {
193
- Log.info(
194
- "[UI5 Hyphenation] Add hyphenation exceptions '" + JSON.stringify(oConfig.exceptions) + "' for language " + getLanguageDisplayName(sLanguage),
195
- "sap.ui.core.hyphenation.Hyphenation"
196
- );
197
-
198
- // transform "exceptions: {word1: "w-o-r-d-1", word2: "w-o-r-d-2"}" to "exceptions: {en-us: 'w-o-r-d-1,w-o-r-d-2'}"
199
- var aWordsExceptions = [];
200
- Object.keys(oConfig.exceptions).forEach(function(sWord) {
201
- aWordsExceptions.push(oConfig.exceptions[sWord]);
202
- });
203
-
204
- if (aWordsExceptions.length > 0) {
205
- oConfigurationForLanguage.exceptions = {};
206
- oConfigurationForLanguage.exceptions[sLanguage] = aWordsExceptions.join(", ");
122
+ function createHyphenopolyConfig() {
123
+ if (!window.Hyphenopoly) {
124
+ window.Hyphenopoly = {
125
+ require: {},
126
+ setup: {
127
+ selectors: {
128
+ ".hyphenate": { // .hyphenate is the default CSS class (hence this is the default configuration for all words and langs)
129
+ hyphen: "\u00AD",
130
+ leftmin: 3,
131
+ rightmin: 3,
132
+ compound: "all" // hyphenate the parts and insert a zero-width space after the hyphen
133
+ }
134
+ },
135
+ hide: "DONT_HIDE" // prevent visiblity: hidden; of html tag while the engine is loading
136
+ },
137
+ handleEvent: {
138
+ error: function (e) {
139
+ // Hyphenopoly will try to find DOM elements and hyphenate them,
140
+ // but since we use only the hyphenators, prevent the warning
141
+ if (e.msg.match(/engine for language .* loaded, but no elements found./)) {
142
+ e.preventDefault(); //don't show error message in console
143
+ }
144
+ }
207
145
  }
208
- }
146
+ };
209
147
  }
210
148
 
211
- return oConfigurationForLanguage;
149
+ return window.Hyphenopoly;
212
150
  }
213
151
 
214
152
  /**
@@ -244,7 +182,6 @@ sap.ui.define([
244
182
  "visibility:hidden;",
245
183
  "-moz-hyphens:auto;",
246
184
  "-webkit-hyphens:auto;",
247
- "-ms-hyphens:auto;",
248
185
  "hyphens:auto;",
249
186
  "width:48px;",
250
187
  "font-size:12px;",
@@ -259,19 +196,20 @@ sap.ui.define([
259
196
  /**
260
197
  * Creates and appends div with CSS-hyphenated word.
261
198
  *
262
- * @param {string} sLang Language
199
+ * @param {string} sLanguageOnThePage Language (<code>lang</code> attribute of the HTML page)
200
+ * @param {string} sTestingWord Long word for that language
263
201
  * @private
264
202
  */
265
- function createTest(sLang) {
266
-
203
+ function createTest(sLanguageOnThePage, sTestingWord) {
267
204
  if (!fakeBody) {
268
205
  fakeBody = document.createElement("body");
269
206
  }
207
+
270
208
  var testDiv = document.createElement("div");
271
- testDiv.lang = sLang;
272
- testDiv.id = sLang;
209
+ testDiv.lang = sLanguageOnThePage;
210
+ testDiv.id = sLanguageOnThePage;
273
211
  testDiv.style.cssText = css;
274
- testDiv.appendChild(document.createTextNode(HyphenationTestingWords[sLang.toLowerCase()]));
212
+ testDiv.appendChild(document.createTextNode(sTestingWord));
275
213
  fakeBody.appendChild(testDiv);
276
214
  }
277
215
 
@@ -334,7 +272,7 @@ sap.ui.define([
334
272
 
335
273
  var sLanguage = oLocale.getLanguage().toLowerCase();
336
274
 
337
- // adjustment of the language to corresponds to Hyphenopoly pattern files (.hpb files)
275
+ // adjustment of the language to correspond to Hyphenopoly pattern files (.hpb files)
338
276
  switch (sLanguage) {
339
277
  case "en":
340
278
  sLanguage = "en-us";
@@ -348,13 +286,16 @@ sap.ui.define([
348
286
  case "el":
349
287
  sLanguage = "el-monoton";
350
288
  break;
289
+ default:
290
+ break;
351
291
  }
352
292
 
353
293
  return sLanguage;
354
294
  }
355
295
 
356
296
  /**
357
- * The "lang" attribute of the "html" tag determines the behavior of the native hyphenation.
297
+ * The <code>lang</code> attribute of the closest parent determines the behavior of the native hyphenation.
298
+ * Typically this is the HTML tag and its value can be read with the <code>getLocale</code> function.
358
299
  *
359
300
  * @param {string} [sLang=sap.ui.getCore().getConfiguration().getLocale().toString()] The language to get. If left empty - the global application language will be returned
360
301
  * @returns {string} The language code
@@ -457,7 +398,7 @@ sap.ui.define([
457
398
  * @see {@link topic:6322164936f047de941ec522b95d7b70 Hyphenation for Text Controls}
458
399
  * @extends sap.ui.base.ManagedObject
459
400
  * @author SAP SE
460
- * @version 1.92.0
401
+ * @version 1.95.0
461
402
  * @hideconstructor
462
403
  * @public
463
404
  * @since 1.60
@@ -493,15 +434,16 @@ sap.ui.define([
493
434
  * @public
494
435
  */
495
436
  Hyphenation.prototype.canUseNativeHyphenation = function (sLang) {
496
- var sLanguageOnThePage = getLanguageAsSetOnThePage(sLang);
497
- var bCanUseNativeHyphenation;
437
+ var sLanguageOnThePage = getLanguageAsSetOnThePage(sLang),
438
+ sMappedLanguage = getLanguage(sLang),
439
+ bCanUseNativeHyphenation;
498
440
 
499
- if (!this.isLanguageSupported(sLang)) {
441
+ if (!this.isLanguageSupported(sMappedLanguage)) {
500
442
  return null;
501
443
  }
502
444
 
503
445
  if (!oBrowserSupportCSS.hasOwnProperty(sLanguageOnThePage)) {
504
- createTest(sLanguageOnThePage);
446
+ createTest(sLanguageOnThePage, HyphenationTestingWords[sMappedLanguage.toLowerCase()]);
505
447
  var testContainer = appendTests(document.documentElement);
506
448
  if (testContainer !== null) {
507
449
  var el = document.getElementById(sLanguageOnThePage);
@@ -617,6 +559,7 @@ sap.ui.define([
617
559
  fireError("Language " + getLanguageDisplayName(sLanguage) + " is not initialized. You have to initialize it first with method 'initialize()'");
618
560
  return sText;
619
561
  }
562
+
620
563
  return oHyphenateMethods[sLanguage](sText);
621
564
  };
622
565
 
@@ -644,57 +587,6 @@ sap.ui.define([
644
587
  return Object.keys(oHyphenateMethods).indexOf(sLang) != -1;
645
588
  };
646
589
 
647
- /**
648
- * Gets a list of word exceptions which was added for the given language.
649
- *
650
- * A word exception is a custom-defined hyphenation for a specific word. It's useful if the hyphenation algorithm does not hyphenate a given word correctly.
651
- *
652
- * @see sap.ui.core.hyphenation.Hyphenation#addExceptions
653
- * @param {string} sLang The language for which to see the exceptions
654
- * @returns {Object<string,string>} An object map with all exceptions for the given language
655
- * @private
656
- */
657
- Hyphenation.prototype.getExceptions = function (sLang) {
658
- var sLang = getLanguage(sLang);
659
- if (this.isLanguageInitialized(sLang)) {
660
- return window.hyphenopoly.languages[sLang].exceptions;
661
- } else {
662
- fireError("Language " + getLanguageDisplayName(sLang) + " is not initialized. You have to initialize it first with method 'initialize()'");
663
- }
664
-
665
- };
666
-
667
- /**
668
- * Adds a list of exceptions defining how specific words should be hyphenated.
669
- *
670
- * This way a custom-defined hyphenation for a specific word can be defined. It's useful if the hyphenation algorithm does not hyphenate a given word correctly.
671
- *
672
- * @example
673
- *
674
- * addExceptions("en", {"academy": "a-c-a-d-e-m-y"})
675
- *
676
- * @param {string} sLang The language for which an exception is added
677
- * @param {Object<string,string>} oExceptions An object map of word exceptions. Example <code>{"academy": "a-c-a-d-e-m-y", "word": "w-o-r-d"}</code>
678
- * @throws {Error} Logs an error if the language is not initialized
679
- * @private
680
- */
681
- Hyphenation.prototype.addExceptions = function (sLang, oExceptions) {
682
- var sLang = getLanguage(sLang);
683
- if (this.isLanguageInitialized(sLang)) {
684
- Log.info(
685
- "[UI5 Hyphenation] Add hyphenation exceptions '" + JSON.stringify(oExceptions) + "' for language " + getLanguageDisplayName(sLang),
686
- "sap.ui.core.hyphenation.Hyphenation.addExceptions()"
687
- );
688
-
689
- Object.keys(oExceptions).forEach(function (key) {
690
- window.hyphenopoly.languages[sLang].cache[key] = oExceptions[key];
691
- window.hyphenopoly.languages[sLang].exceptions[key] = oExceptions[key];
692
- });
693
- } else {
694
- fireError("Language " + getLanguageDisplayName(sLang) + " is not initialized. You have to initialize it first with method 'initialize()'");
695
- }
696
- };
697
-
698
590
  /**
699
591
  * Initializes the third-party library for the given language.
700
592
  *
@@ -709,73 +601,35 @@ sap.ui.define([
709
601
  * @returns {Promise} A promise which resolves when all language resources are loaded. Rejects if the language is not supported
710
602
  * @public
711
603
  */
712
- // Parameter oConfig is not mentioned in jsdoc on purpose. It is only for internal use for now.
713
- Hyphenation.prototype.initialize = function (sLang, oConfig) {
604
+ Hyphenation.prototype.initialize = function (sLang) {
714
605
  var sLanguage = getLanguage(sLang);
715
606
 
716
- /**
717
- * @type map
718
- * @private
719
- * @example
720
- * {
721
- * hyphen: "-",
722
- * minWordLength: 6,
723
- * exceptions: {
724
- * "academy": "a-c-a-d-e-m-y",
725
- * "word": "w-o-r-d"
726
- * }
727
- * }
728
- */
729
- var oConfig = prepareConfig(sLanguage, oConfig);
730
-
731
- var bConfigChanged = true;
732
- if (mLanguageConfigs[sLanguage] && deepEqual(mLanguageConfigs[sLanguage], oConfig)) {
733
- bConfigChanged = false;
607
+ if (!oThirdPartySupportedLanguages[sLanguage]) {
608
+ var sMessage = "Language " + getLanguageDisplayName(sLang) + " can not be initialized. It is either not supported by the third-party module or an error occurred";
609
+ fireError(sMessage);
610
+ return Promise.reject(sMessage);
734
611
  }
735
612
 
736
- mLanguageConfigs[sLanguage] = oConfig;
737
-
738
- if (oThirdPartySupportedLanguages[sLanguage]) {
739
- if (!oHyphenationInstance.bIsInitialized && !oHyphenationInstance.bLoading) {
740
-
741
- oHyphenationInstance.bLoading = true;
742
- oPromisesForLang[sLanguage] = new Promise(function (resolve, reject) {
743
- loadScript(oConfig.path, "/hyphenopoly.bundle.js")
744
- .then(initializeLanguage.bind(this, sLanguage, oConfig, resolve));
745
- });
746
-
747
- return oPromisesForLang[sLanguage];
748
-
749
- } else if (oHyphenationInstance.bLoading && !oHyphenateMethods[sLanguage] && oPromisesForLang[sLanguage]) {
750
-
751
- return oPromisesForLang[sLanguage];
613
+ if (oHyphenateMethods[sLanguage]) {
614
+ return Promise.resolve();
615
+ }
752
616
 
753
- } else if (this.isLanguageInitialized(sLanguage)) {
754
- // Reinitialize only if the config has changed.
755
- if (bConfigChanged) {
756
- oPromisesForLang[sLanguage] = new Promise(function (resolve) {
757
- reInitializeLanguage(sLanguage, oConfig, resolve);
758
- });
759
- }
760
- } else {
761
- oPromisesForLang[sLanguage] = new Promise(function (resolve, reject) {
762
- if (!oHyphenationInstance.bIsInitialized) {
763
- aLanguagesQueue.push({sLanguage:sLanguage, oConfig:oConfig, resolve:resolve });
764
- } else {
765
- initializeLanguage(sLanguage, oConfig, resolve);
766
- }
617
+ var pInitLanguage;
767
618
 
768
- });
769
- }
770
- oHyphenationInstance.bLoading = true;
771
- return oPromisesForLang[sLanguage];
619
+ if (!this._pInitLanguage) {
620
+ pInitLanguage = this._pInitLanguage = initializeLanguage(sLanguage)
621
+ .then(function (fnHyphenator) {
622
+ oHyphenateMethods[sLanguage] = fnHyphenator;
623
+ this._pInitLanguage = null;
624
+ }.bind(this));
772
625
  } else {
773
- var sMessage = "Language " + getLanguageDisplayName(sLang) + " can not be initialized. It is either not supported by the third-party module or an error occurred";
774
- fireError(sMessage);
775
- return new Promise(function (resolve, reject) {
776
- reject(sMessage);
777
- });
626
+ // await the loading of the previous language, then initialize the current
627
+ pInitLanguage = this._pInitLanguage.then(function () {
628
+ return this.initialize(sLang);
629
+ }.bind(this));
778
630
  }
631
+
632
+ return pInitLanguage;
779
633
  };
780
634
 
781
635
  /**
@@ -789,8 +643,6 @@ sap.ui.define([
789
643
  Hyphenation.getInstance = function () {
790
644
  if (!oHyphenationInstance) {
791
645
  oHyphenationInstance = new Hyphenation();
792
- oHyphenationInstance.bIsInitialized = false;
793
- oHyphenationInstance.bLoading = false;
794
646
  }
795
647
 
796
648
  return oHyphenationInstance;
@@ -9,37 +9,38 @@ sap.ui.define([], function () {
9
9
 
10
10
  /**
11
11
  * Words which are suitable for testing of browser-native hyphenation.
12
+ * Firefox doesn't hyphenate uppercase words (besides in German).
12
13
  * @type {Object<string,string>}
13
14
  * @private
14
15
  */
15
16
  var oTestingWords = {
16
17
  "bg": "непротивоконституционствувателствувайте",
17
- "ca": "Psiconeuroimmunoendocrinologia",
18
+ "ca": "psiconeuroimmunoendocrinologia",
18
19
  "hr": "prijestolonasljednikovičičinima",
19
20
  "cs": "nejnezdevětadevadesáteronásobitelnějšími",
20
- "da": "Gedebukkebensoverogundergeneralkrigskommandersergenten",
21
+ "da": "gedebukkebensoverogundergeneralkrigskommandersergenten",
21
22
  "nl": "meervoudigepersoonlijkheidsstoornissen",
22
23
  "en-us": "pneumonoultramicroscopicsilicovolcanoconiosis",
23
- "et": "Sünnipäevanädalalõpupeopärastlõunaväsimus",
24
+ "et": "sünnipäevanädalalõpupeopärastlõunaväsimus",
24
25
  "fi": "kolmivaihekilowattituntimittari",
25
26
  "fr": "hippopotomonstrosesquippedaliophobie",
26
27
  "de": "Kindercarnavalsoptochtvoorbereidingswerkzaamhedenplan",
27
28
  "el-monoton": "ηλεκτροεγκεφαλογράφημα", // no native css hyphenation by documentation, but will be tested
28
29
  "hi": "किंकर्तव्यविमूढ़", // no native css hyphenation by documentation, but will be tested
29
- "hu": "Megszentségteleníthetetlenségeskedéseitekért",
30
+ "hu": "megszentségteleníthetetlenségeskedéseitekért",
30
31
  "it": "hippopotomonstrosesquippedaliofobia",
31
32
  "lt": "nebeprisikiškiakopūstlapiaujančiuosiuose",
32
33
  "nb-no": "supercalifragilisticexpialidocious",
33
34
  "pl": "dziewięćdziesięciokilkuletniemu",
34
35
  "pt": "pneumoultramicroscopicossilicovulcanoconiose",
35
36
  "ru": "превысокомногорассмотрительствующий",
36
- "sr": "Семпаравиливичинаверсаламилитипиковски",
37
- "sl": "Dialektičnomaterialističen",
38
- "es": "Electroencefalografistas",
39
- "sv": "Realisationsvinstbeskattning",
37
+ "sr": "семпаравиливичинаверсаламилитипиковски",
38
+ "sl": "dialektičnomaterialističen",
39
+ "es": "electroencefalografistas",
40
+ "sv": "realisationsvinstbeskattning",
40
41
  "th": "ตัวอย่างข้อความที่จะใช้ในการยืนยันการถ่ายโอน", // no native css hyphenation by documentation, but will be tested
41
- "tr": "Muvaffakiyetsizleştiricileştiriveremeyebileceklerimizdenmişsinizcesine",
42
- "uk": "Нікотинамідаденіндинуклеотидфосфат"
42
+ "tr": "muvaffakiyetsizleştiricileştiriveremeyebileceklerimizdenmişsinizcesine",
43
+ "uk": "нікотинамідаденіндинуклеотидфосфат"
43
44
  };
44
45
 
45
46
  return oTestingWords;