@openui5/sap.ui.core 1.93.3 → 1.96.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/.eslintrc.json +13 -2
  2. package/.reuse/dep5 +6 -11
  3. package/THIRDPARTY.txt +10 -16
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +5 -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 +3 -3
  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 +6 -2
  13. package/src/sap/base/strings/whitespaceReplacer.js +52 -0
  14. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  15. package/src/sap/base/util/restricted/_castArray.js +1 -1
  16. package/src/sap/base/util/restricted/_compact.js +1 -1
  17. package/src/sap/base/util/restricted/_curry.js +1 -1
  18. package/src/sap/base/util/restricted/_debounce.js +1 -1
  19. package/src/sap/base/util/restricted/_difference.js +1 -1
  20. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  21. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  25. package/src/sap/base/util/restricted/_flatten.js +1 -1
  26. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  27. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  28. package/src/sap/base/util/restricted/_intersection.js +1 -1
  29. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  30. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  31. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  32. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isNil.js +1 -1
  34. package/src/sap/base/util/restricted/_max.js +1 -1
  35. package/src/sap/base/util/restricted/_merge.js +1 -1
  36. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  37. package/src/sap/base/util/restricted/_min.js +1 -1
  38. package/src/sap/base/util/restricted/_omit.js +1 -1
  39. package/src/sap/base/util/restricted/_pick.js +1 -1
  40. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  41. package/src/sap/base/util/restricted/_throttle.js +1 -1
  42. package/src/sap/base/util/restricted/_toArray.js +1 -1
  43. package/src/sap/base/util/restricted/_union.js +1 -1
  44. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  45. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  46. package/src/sap/base/util/restricted/_uniq.js +1 -1
  47. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  48. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  49. package/src/sap/base/util/restricted/_without.js +1 -1
  50. package/src/sap/base/util/restricted/_xor.js +1 -1
  51. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  52. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  53. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  54. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  55. package/src/sap/ui/Device.js +37 -42
  56. package/src/sap/ui/Global.js +8 -7
  57. package/src/sap/ui/base/DataType.js +14 -8
  58. package/src/sap/ui/base/Event.js +1 -1
  59. package/src/sap/ui/base/EventProvider.js +1 -1
  60. package/src/sap/ui/base/ExpressionParser.js +9 -6
  61. package/src/sap/ui/base/Interface.js +3 -49
  62. package/src/sap/ui/base/ManagedObject.js +12 -7
  63. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  64. package/src/sap/ui/base/Metadata.js +1 -1
  65. package/src/sap/ui/base/Object.js +49 -4
  66. package/src/sap/ui/base/ObjectPool.js +1 -1
  67. package/src/sap/ui/base/syncXHRFix.js +2 -1
  68. package/src/sap/ui/core/.library +5 -5
  69. package/src/sap/ui/core/AppCacheBuster.js +4 -4
  70. package/src/sap/ui/core/BusyIndicator.js +1 -11
  71. package/src/sap/ui/core/Component.js +300 -140
  72. package/src/sap/ui/core/ComponentContainer.js +24 -8
  73. package/src/sap/ui/core/ComponentMetadata.js +14 -3
  74. package/src/sap/ui/core/ComponentSupport.js +1 -1
  75. package/src/sap/ui/core/Configuration.js +67 -31
  76. package/src/sap/ui/core/Control.js +1 -1
  77. package/src/sap/ui/core/Core.js +103 -25
  78. package/src/sap/ui/core/CustomData.js +1 -1
  79. package/src/sap/ui/core/CustomizingConfiguration.js +35 -260
  80. package/src/sap/ui/core/DeclarativeSupport.js +3 -2
  81. package/src/sap/ui/core/Element.js +1 -1
  82. package/src/sap/ui/core/ElementMetadata.js +4 -2
  83. package/src/sap/ui/core/EnabledPropagator.js +91 -73
  84. package/src/sap/ui/core/EventBus.js +1 -1
  85. package/src/sap/ui/core/ExtensionPoint.js +7 -14
  86. package/src/sap/ui/core/Fragment.js +30 -32
  87. package/src/sap/ui/core/HTML.js +1 -1
  88. package/src/sap/ui/core/History.js +1 -1
  89. package/src/sap/ui/core/Icon.js +7 -8
  90. package/src/sap/ui/core/IconPool.js +26 -1097
  91. package/src/sap/ui/core/IconRenderer.js +6 -6
  92. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  93. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  94. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  95. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  96. package/src/sap/ui/core/InvisibleText.js +1 -1
  97. package/src/sap/ui/core/Item.js +1 -1
  98. package/src/sap/ui/core/LabelEnablement.js +1 -1
  99. package/src/sap/ui/core/LayoutData.js +1 -1
  100. package/src/sap/ui/core/ListItem.js +1 -1
  101. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  102. package/src/sap/ui/core/Locale.js +26 -4
  103. package/src/sap/ui/core/LocaleData.js +1 -1
  104. package/src/sap/ui/core/Manifest.js +4 -61
  105. package/src/sap/ui/core/Message.js +1 -1
  106. package/src/sap/ui/core/Patcher.js +27 -3
  107. package/src/sap/ui/core/Placeholder.js +28 -15
  108. package/src/sap/ui/core/RenderManager.js +36 -6
  109. package/src/sap/ui/core/Renderer.js +13 -3
  110. package/src/sap/ui/core/ResizeHandler.js +1 -1
  111. package/src/sap/ui/core/ScrollBar.js +2 -2
  112. package/src/sap/ui/core/SeparatorItem.js +1 -1
  113. package/src/sap/ui/core/ShortcutHintsMixin.js +14 -7
  114. package/src/sap/ui/core/Title.js +1 -1
  115. package/src/sap/ui/core/TooltipBase.js +1 -1
  116. package/src/sap/ui/core/UIArea.js +1 -1
  117. package/src/sap/ui/core/UIComponent.js +42 -16
  118. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  119. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  120. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  121. package/src/sap/ui/core/XMLComposite.js +2 -2
  122. package/src/sap/ui/core/XMLCompositeMetadata.js +2 -2
  123. package/src/sap/ui/core/XMLTemplateProcessor.js +116 -41
  124. package/src/sap/ui/core/_IconRegistry.js +1148 -0
  125. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  126. package/src/sap/ui/core/delegate/ScrollEnablement.js +6 -3
  127. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  128. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  129. package/src/sap/ui/core/dnd/DragInfo.js +2 -2
  130. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  131. package/src/sap/ui/core/format/NumberFormat.js +16 -1
  132. package/src/sap/ui/core/hyphenation/Hyphenation.js +73 -221
  133. package/src/sap/ui/core/hyphenation/HyphenationTestingWords.js +11 -10
  134. package/src/sap/ui/core/library.js +3 -3
  135. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  136. package/src/sap/ui/core/message/Message.js +1 -1
  137. package/src/sap/ui/core/message/MessageManager.js +13 -15
  138. package/src/sap/ui/core/message/MessageParser.js +1 -1
  139. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  140. package/src/sap/ui/core/messagebundle_de.properties +1 -1
  141. package/src/sap/ui/core/messagebundle_fr.properties +1 -1
  142. package/src/sap/ui/core/messagebundle_it.properties +1 -1
  143. package/src/sap/ui/core/messagebundle_pl.properties +1 -1
  144. package/src/sap/ui/core/messagebundle_th.properties +2 -2
  145. package/src/sap/ui/core/mvc/Controller.js +38 -19
  146. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +30 -32
  147. package/src/sap/ui/core/mvc/ControllerMetadata.js +18 -18
  148. package/src/sap/ui/core/mvc/HTMLView.js +2 -2
  149. package/src/sap/ui/core/mvc/JSONView.js +2 -2
  150. package/src/sap/ui/core/mvc/JSView.js +2 -2
  151. package/src/sap/ui/core/mvc/TemplateView.js +2 -2
  152. package/src/sap/ui/core/mvc/View.js +58 -85
  153. package/src/sap/ui/core/mvc/XMLView.js +2 -2
  154. package/src/sap/ui/core/mvc/XMLViewRenderer.js +17 -20
  155. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  156. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  157. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  158. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  159. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  160. package/src/sap/ui/core/routing/History.js +10 -2
  161. package/src/sap/ui/core/routing/Router.js +8 -1
  162. package/src/sap/ui/core/routing/Target.js +13 -0
  163. package/src/sap/ui/core/routing/Targets.js +13 -2
  164. package/src/sap/ui/core/routing/async/Route.js +1 -1
  165. package/src/sap/ui/core/routing/async/Target.js +353 -259
  166. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  167. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  168. package/src/sap/ui/core/service/Service.js +1 -1
  169. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  170. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  171. package/src/sap/ui/core/support/BootSupportTool.js +11 -0
  172. package/src/sap/ui/core/support/InteractionTree.css +4 -0
  173. package/src/sap/ui/core/support/Plugin.js +1 -1
  174. package/src/sap/ui/core/support/Support.js +1 -1
  175. package/src/sap/ui/core/support/ViewInfo.css +599 -0
  176. package/src/sap/ui/core/support/controls/InteractionTree.js +352 -222
  177. package/src/sap/ui/core/support/controls/ObjectViewer.js +3 -41
  178. package/src/sap/ui/core/support/controls/TimelineOverview.js +49 -24
  179. package/src/sap/ui/core/support/controls/TreeViewer.js +12 -58
  180. package/src/sap/ui/core/support/plugins/ControlTree.js +59 -68
  181. package/src/sap/ui/core/support/plugins/Debugging.js +9 -11
  182. package/src/sap/ui/core/support/plugins/Interaction.js +2 -2
  183. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  184. package/src/sap/ui/core/support/plugins/Performance.js +147 -75
  185. package/src/sap/ui/core/support/plugins/Selector.js +19 -24
  186. package/src/sap/ui/core/support/plugins/TechInfo.js +5 -5
  187. package/src/sap/ui/core/support/plugins/Trace.js +95 -32
  188. package/src/sap/ui/core/support/plugins/ViewInfo.js +9 -73
  189. package/src/sap/ui/core/support/support.css +109 -14
  190. package/src/sap/ui/core/support/support.html +6 -2
  191. package/src/sap/ui/core/support/techinfo/TechnicalInfo.fragment.xml +1 -0
  192. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +149 -72
  193. package/src/sap/ui/core/themes/base/Icon.less +9 -0
  194. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  195. package/src/sap/ui/core/theming/Parameters.js +6 -4
  196. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  197. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  198. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  199. package/src/sap/ui/core/tmpl/Template.js +10 -28
  200. package/src/sap/ui/core/tmpl/TemplateControl.js +4 -4
  201. package/src/sap/ui/core/tmpl/_parsePath.js +35 -0
  202. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  203. package/src/sap/ui/core/util/DraftEnabledMockServer.js +9 -4
  204. package/src/sap/ui/core/util/Export.js +1 -1
  205. package/src/sap/ui/core/util/ExportCell.js +1 -1
  206. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  207. package/src/sap/ui/core/util/ExportRow.js +1 -1
  208. package/src/sap/ui/core/util/ExportType.js +1 -1
  209. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  210. package/src/sap/ui/core/util/File.js +1 -1
  211. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  212. package/src/sap/ui/core/util/MockServer.js +5 -5
  213. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +3 -2
  214. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  215. package/src/sap/ui/core/util/XMLPreprocessor.js +11 -12
  216. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +136 -63
  217. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +170 -153
  218. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +424 -293
  219. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  220. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  221. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  222. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  223. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  224. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  225. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  226. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  227. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  228. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  229. package/src/sap/ui/debug/ControlTree.js +10 -4
  230. package/src/sap/ui/debug/DebugEnv.js +3 -4
  231. package/src/sap/ui/debug/Highlighter.js +8 -2
  232. package/src/sap/ui/debug/PropertyList.css +55 -0
  233. package/src/sap/ui/debug/PropertyList.js +111 -182
  234. package/src/sap/ui/model/Binding.js +174 -118
  235. package/src/sap/ui/model/ClientContextBinding.js +1 -1
  236. package/src/sap/ui/model/ClientListBinding.js +1 -3
  237. package/src/sap/ui/model/ClientModel.js +4 -4
  238. package/src/sap/ui/model/ClientPropertyBinding.js +4 -2
  239. package/src/sap/ui/model/ClientTreeBinding.js +15 -9
  240. package/src/sap/ui/model/ClientTreeBindingAdapter.js +28 -23
  241. package/src/sap/ui/model/CompositeBinding.js +98 -77
  242. package/src/sap/ui/model/CompositeDataState.js +2 -2
  243. package/src/sap/ui/model/CompositeType.js +2 -2
  244. package/src/sap/ui/model/Context.js +4 -2
  245. package/src/sap/ui/model/ContextBinding.js +6 -14
  246. package/src/sap/ui/model/DataState.js +2 -2
  247. package/src/sap/ui/model/Filter.js +255 -53
  248. package/src/sap/ui/model/FilterOperator.js +1 -1
  249. package/src/sap/ui/model/FilterProcessor.js +27 -17
  250. package/src/sap/ui/model/FilterType.js +1 -1
  251. package/src/sap/ui/model/ListBinding.js +180 -117
  252. package/src/sap/ui/model/MetaModel.js +4 -9
  253. package/src/sap/ui/model/Model.js +345 -294
  254. package/src/sap/ui/model/PropertyBinding.js +92 -58
  255. package/src/sap/ui/model/SelectionModel.js +2 -2
  256. package/src/sap/ui/model/SimpleType.js +2 -2
  257. package/src/sap/ui/model/Sorter.js +1 -1
  258. package/src/sap/ui/model/SorterProcessor.js +1 -1
  259. package/src/sap/ui/model/StaticBinding.js +1 -1
  260. package/src/sap/ui/model/TreeAutoExpandMode.js +2 -2
  261. package/src/sap/ui/model/TreeBinding.js +1 -1
  262. package/src/sap/ui/model/TreeBindingAdapter.js +251 -100
  263. package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +16 -9
  264. package/src/sap/ui/model/TreeBindingUtils.js +1 -0
  265. package/src/sap/ui/model/Type.js +1 -1
  266. package/src/sap/ui/model/analytics/AnalyticalBinding.js +8 -4
  267. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +1 -1
  268. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
  269. package/src/sap/ui/model/analytics/BatchResponseCollector.js +1 -1
  270. package/src/sap/ui/model/analytics/ODataModelAdapter.js +1 -1
  271. package/src/sap/ui/model/analytics/odata4analytics.js +34 -25
  272. package/src/sap/ui/model/base/ManagedObjectModel.js +4 -0
  273. package/src/sap/ui/model/json/JSONListBinding.js +8 -5
  274. package/src/sap/ui/model/json/JSONModel.js +24 -15
  275. package/src/sap/ui/model/json/JSONPropertyBinding.js +4 -3
  276. package/src/sap/ui/model/json/JSONTreeBinding.js +1 -1
  277. package/src/sap/ui/model/message/MessageListBinding.js +6 -3
  278. package/src/sap/ui/model/message/MessageModel.js +23 -15
  279. package/src/sap/ui/model/message/MessagePropertyBinding.js +2 -2
  280. package/src/sap/ui/model/odata/AnnotationHelper.js +1 -1
  281. package/src/sap/ui/model/odata/AnnotationParser.js +1 -1
  282. package/src/sap/ui/model/odata/CountMode.js +1 -1
  283. package/src/sap/ui/model/odata/Filter.js +1 -1
  284. package/src/sap/ui/model/odata/ODataAnnotations.js +2 -2
  285. package/src/sap/ui/model/odata/ODataContextBinding.js +1 -1
  286. package/src/sap/ui/model/odata/ODataListBinding.js +1 -1
  287. package/src/sap/ui/model/odata/ODataMessageParser.js +2 -2
  288. package/src/sap/ui/model/odata/ODataMetaModel.js +5 -3
  289. package/src/sap/ui/model/odata/ODataMetadata.js +2 -2
  290. package/src/sap/ui/model/odata/ODataModel.js +8 -7
  291. package/src/sap/ui/model/odata/ODataPropertyBinding.js +1 -1
  292. package/src/sap/ui/model/odata/ODataTreeBinding.js +65 -33
  293. package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +1 -1
  294. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +2 -2
  295. package/src/sap/ui/model/odata/ODataUtils.js +13 -11
  296. package/src/sap/ui/model/odata/OperationMode.js +1 -1
  297. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
  298. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  299. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  300. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  301. package/src/sap/ui/model/odata/type/Date.js +1 -1
  302. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  303. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  304. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  305. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  306. package/src/sap/ui/model/odata/type/Double.js +1 -1
  307. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  308. package/src/sap/ui/model/odata/type/Int.js +1 -1
  309. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  310. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  311. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  312. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  313. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  314. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  315. package/src/sap/ui/model/odata/type/Single.js +1 -1
  316. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  317. package/src/sap/ui/model/odata/type/String.js +1 -1
  318. package/src/sap/ui/model/odata/type/Time.js +1 -1
  319. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  320. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  321. package/src/sap/ui/model/odata/v2/Context.js +81 -9
  322. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +3 -3
  323. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +39 -49
  324. package/src/sap/ui/model/odata/v2/ODataListBinding.js +236 -73
  325. package/src/sap/ui/model/odata/v2/ODataModel.js +314 -164
  326. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +110 -97
  327. package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +129 -0
  328. package/src/sap/ui/model/odata/v4/Context.js +6 -3
  329. package/src/sap/ui/model/odata/v4/ODataBinding.js +5 -6
  330. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +117 -40
  331. package/src/sap/ui/model/odata/v4/ODataListBinding.js +95 -15
  332. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +44 -31
  333. package/src/sap/ui/model/odata/v4/ODataModel.js +86 -78
  334. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +47 -28
  335. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +11 -7
  336. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +10 -3
  337. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +8 -1
  338. package/src/sap/ui/model/odata/v4/lib/_Cache.js +24 -16
  339. package/src/sap/ui/model/odata/v4/lib/_Helper.js +32 -30
  340. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +52 -17
  341. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +2 -2
  342. package/src/sap/ui/model/resource/ResourceModel.js +6 -2
  343. package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
  344. package/src/sap/ui/model/type/Boolean.js +2 -2
  345. package/src/sap/ui/model/type/Currency.js +2 -2
  346. package/src/sap/ui/model/type/Date.js +9 -3
  347. package/src/sap/ui/model/type/DateInterval.js +4 -2
  348. package/src/sap/ui/model/type/DateTime.js +2 -2
  349. package/src/sap/ui/model/type/DateTimeInterval.js +2 -2
  350. package/src/sap/ui/model/type/FileSize.js +4 -2
  351. package/src/sap/ui/model/type/Float.js +4 -2
  352. package/src/sap/ui/model/type/Integer.js +4 -2
  353. package/src/sap/ui/model/type/String.js +2 -2
  354. package/src/sap/ui/model/type/Time.js +2 -2
  355. package/src/sap/ui/model/type/TimeInterval.js +2 -2
  356. package/src/sap/ui/model/type/Unit.js +14 -7
  357. package/src/sap/ui/model/xml/XMLListBinding.js +15 -9
  358. package/src/sap/ui/model/xml/XMLModel.js +70 -41
  359. package/src/sap/ui/model/xml/XMLPropertyBinding.js +4 -4
  360. package/src/sap/ui/model/xml/XMLTreeBinding.js +5 -4
  361. package/src/sap/ui/performance/trace/Interaction.js +30 -15
  362. package/src/sap/ui/performance/trace/initTraces.js +1 -1
  363. package/src/sap/ui/qunit/QUnitUtils.js +3 -2
  364. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  365. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +9 -11
  366. package/src/sap/ui/test/TestUtils.js +11 -4
  367. package/src/sap/ui/test/actions/Drag.js +6 -2
  368. package/src/sap/ui/test/actions/Drop.js +6 -2
  369. package/src/sap/ui/test/actions/EnterText.js +6 -0
  370. package/src/sap/ui/test/actions/Press.js +6 -0
  371. package/src/sap/ui/test/actions/Scroll.js +6 -0
  372. package/src/sap/ui/test/autowaiter/_resourceWaiter.js +4 -4
  373. package/src/sap/ui/test/launchers/componentLauncher.js +0 -4
  374. package/src/sap/ui/test/matchers/I18NText.js +29 -11
  375. package/src/sap/ui/test/opaQunit.js +5 -0
  376. package/src/sap/ui/thirdparty/crossroads.js +6 -4
  377. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly.js +1196 -0
  378. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly_Loader.js +797 -0
  379. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.asm.js +108 -127
  380. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.wasm +0 -0
  381. package/src/sap/ui/thirdparty/hyphenopoly/patterns/bg.hpb +0 -0
  382. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ca.hpb +0 -0
  383. package/src/sap/ui/thirdparty/hyphenopoly/patterns/da.hpb +0 -0
  384. package/src/sap/ui/thirdparty/hyphenopoly/patterns/de.hpb +0 -0
  385. package/src/sap/ui/thirdparty/hyphenopoly/patterns/el-monoton.hpb +0 -0
  386. package/src/sap/ui/thirdparty/hyphenopoly/patterns/en-us.hpb +0 -0
  387. package/src/sap/ui/thirdparty/hyphenopoly/patterns/es.hpb +0 -0
  388. package/src/sap/ui/thirdparty/hyphenopoly/patterns/et.hpb +0 -0
  389. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fi.hpb +0 -0
  390. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fr.hpb +0 -0
  391. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hi.hpb +0 -0
  392. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hr.hpb +0 -0
  393. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hu.hpb +0 -0
  394. package/src/sap/ui/thirdparty/hyphenopoly/patterns/it.hpb +0 -0
  395. package/src/sap/ui/thirdparty/hyphenopoly/patterns/lt.hpb +0 -0
  396. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nb-no.hpb +0 -0
  397. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nl.hpb +0 -0
  398. package/src/sap/ui/thirdparty/hyphenopoly/patterns/pt.hpb +0 -0
  399. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ru.hpb +0 -0
  400. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sl.hpb +0 -0
  401. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sv.hpb +0 -0
  402. package/src/sap/ui/thirdparty/hyphenopoly/patterns/th.hpb +0 -0
  403. package/src/sap/ui/thirdparty/hyphenopoly/patterns/tr.hpb +0 -0
  404. package/src/sap/ui/thirdparty/hyphenopoly/patterns/uk.hpb +0 -0
  405. package/src/sap/ui/thirdparty/jquery.js +9 -1
  406. package/src/sap/ui/thirdparty/qunit-2.js +1 -1
  407. package/src/sap/ui/thirdparty/qunit.js +1 -1
  408. package/src/sap/ui/util/Mobile.js +2 -20
  409. package/src/sap/ui/util/Storage.js +1 -1
  410. package/src/sap/ui/util/isCrossOriginURL.js +16 -6
  411. package/src/sap-ui-core-nojQuery.js +1 -1
  412. package/src/sap-ui-core.js +1 -1
  413. package/src/sap-ui-debug.js +3 -17
  414. package/ui5.yaml +5 -2
  415. package/src/sap/ui/core/support/plugins/MessageTest.js +0 -96
  416. 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.93.3
85
+ * @version 1.96.2
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.93.3
61
+ * @version 1.96.2
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.93.3
41
+ * @version 1.96.2
42
42
  *
43
43
  * @public
44
44
  * @since 1.52
@@ -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.93.3
25
+ * @version 1.96.2
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.93.3
25
+ * @version 1.96.2
26
26
  *
27
27
  * @public
28
28
  * @since 1.56
@@ -172,7 +172,7 @@ sap.ui.define(["./DragDropBase"],
172
172
  if (oParent && oParent.bOutput == true) {
173
173
  var sSourceAggregation = this.getSourceAggregation();
174
174
  if (sSourceAggregation) {
175
- [].concat(this.getAggregation(sSourceAggregation)).forEach(function(oAggregation) {
175
+ [].concat(oParent.getAggregation(sSourceAggregation)).forEach(function(oAggregation) {
176
176
  if (oAggregation && oAggregation.bOutput == true) {
177
177
  oAggregation.invalidate();
178
178
  }
@@ -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.93.3
24
+ * @version 1.96.2
25
25
  *
26
26
  * @public
27
27
  * @since 1.56
@@ -1082,6 +1082,20 @@ sap.ui.define([
1082
1082
  }
1083
1083
 
1084
1084
  if (oOptions.type == mNumberType.CURRENCY) {
1085
+ // Make sure the "trailingCurrencyCode" mode is only used on currency codes:
1086
+ // The "customCurrencies" format option takes precedence over CLDR and global configuration. If the given measure isn't found
1087
+ // there, we already return an empty string in the check above (look for error log 'Currency "xy" is unknown').
1088
+ // "mKnownCurrencyCodes" either contains the keys of the "customCurrencies" format option or the accumulated currency codes
1089
+ // from CLDR and global configuration. If the given measure isn't found there and does not have the three letter ISO code format,
1090
+ // it shouldn't be formatted with the "trailingCurrencyCode" pattern.
1091
+ if (sMeasure && oOptions.trailingCurrencyCode) {
1092
+ if (!this.mKnownCurrencyCodes[sMeasure] && !/(^[A-Z]{3}$)/.test(sMeasure)) {
1093
+ oOptions.trailingCurrencyCode = false;
1094
+ // Revert to non-"sap-" prefixed (trailing-currency-code) pattern. Also see code in getCurrencyInstance()
1095
+ oOptions.pattern = this.oLocaleData.getCurrencyPattern(oOptions.currencyContext);
1096
+ }
1097
+ }
1098
+
1085
1099
  if (!oOptions.showNumber) {
1086
1100
  // if the number should not be shown, return the sMeasure part standalone, without anything number specific
1087
1101
  if (!oOptions.currencyCode) {
@@ -1336,7 +1350,8 @@ sap.ui.define([
1336
1350
 
1337
1351
  if (oShortFormat && oShortFormat.formatString && oOptions.showScale) {
1338
1352
  var sStyle;
1339
- // Currency formatting only supports short style (no long)
1353
+
1354
+ // Currency formatting has only short style (no long)
1340
1355
  if (oOptions.trailingCurrencyCode) {
1341
1356
  sStyle = "sap-short";
1342
1357
  } else {
@@ -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.93.3
401
+ * @version 1.96.2
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;
@@ -19,7 +19,7 @@ sap.ui.define([
19
19
  // delegate further initialization of this library to the Core
20
20
  sap.ui.getCore().initLibrary({
21
21
  name : "sap.ui.core",
22
- version: "1.93.3",
22
+ version: "1.96.2",
23
23
  designtime: "sap/ui/core/designtime/library.designtime",
24
24
  types: [
25
25
 
@@ -159,7 +159,7 @@ sap.ui.define([
159
159
  * @namespace
160
160
  * @alias sap.ui.core
161
161
  * @author SAP SE
162
- * @version 1.93.3
162
+ * @version 1.96.2
163
163
  * @since 0.8
164
164
  * @public
165
165
  */
@@ -1511,7 +1511,7 @@ sap.ui.define([
1511
1511
  /**
1512
1512
  * Sort order of a column.
1513
1513
  *
1514
- * @version 1.93.3
1514
+ * @version 1.96.2
1515
1515
  * @enum {string}
1516
1516
  * @public
1517
1517
  * @since 1.61.0
@@ -29,7 +29,7 @@ sap.ui.define(['sap/ui/core/message/MessageProcessor'],
29
29
  * @extends sap.ui.core.message.MessageProcessor
30
30
  *
31
31
  * @author SAP SE
32
- * @version 1.93.3
32
+ * @version 1.96.2
33
33
  *
34
34
  * @public
35
35
  * @alias sap.ui.core.message.ControlMessageProcessor
@@ -35,7 +35,7 @@ sap.ui.define([
35
35
  * @extends sap.ui.base.Object
36
36
  *
37
37
  * @author SAP SE
38
- * @version 1.93.3
38
+ * @version 1.96.2
39
39
  *
40
40
  * @param {object} [mParameters] a map which contains the following parameter properties:
41
41
  * @param {string} [mParameters.id] The message id: will be generated if no id is set