@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
@@ -0,0 +1,1148 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2009-2021 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+ /* global FontFace */
7
+ /*
8
+ * IMPORTANT: This is a private module, its API must not be used and is subject to change.
9
+ * Code other than the UI5 core library must not introduce dependencies to this module.
10
+ */
11
+ sap.ui.define([
12
+ 'sap/ui/thirdparty/URI',
13
+ "sap/base/i18n/ResourceBundle",
14
+ "sap/base/Log"
15
+ ],
16
+ function(URI, ResourceBundle, Log) {
17
+ "use strict";
18
+
19
+ /**
20
+ * CSS font family used for the icons provided by SAP.
21
+ */
22
+ var SAP_ICON_FONT_FAMILY = 'SAP-icons';
23
+
24
+ /**
25
+ * Protocol that is used to identify icon URIs.
26
+ */
27
+ var ICON_PROTOCOL = 'sap-icon';
28
+
29
+ var mFontRegistry = {
30
+ undefined: {
31
+ config: {
32
+ fontFamily: SAP_ICON_FONT_FAMILY
33
+ },
34
+ metadataLoaded: true,
35
+ inserted: true
36
+ }
37
+ };
38
+
39
+ var mRegistry = {
40
+ /*
41
+ * Raw data for built-in icons.
42
+ *
43
+ * Maps the name of each icon to a numeric value. The lower 16 bit of the value (0xFFFF) represent the char code
44
+ * of the icon in the 'SAP-icons' font (multiple char codes are currently not needed).
45
+ * If the 17th bit is set (0x10000), then the icon doesn't need mirroring in right-to-left (RTL) mode.
46
+ *
47
+ * On first access to an icon, the raw data will be converted to an icon info object, see getIconInfo.
48
+ */
49
+ 'undefined' : {
50
+ 'accidental-leave': 0xe000,
51
+ 'account': 0xe001,
52
+ 'wrench': 0xe002,
53
+ 'windows-doors': 0xe003,
54
+ 'washing-machine': 0xe004,
55
+ 'visits': 0xe005,
56
+ 'video': 0xe006,
57
+ 'travel-expense': 0x1e007,
58
+ 'temperature': 0xe008,
59
+ 'task': 0x1e009,
60
+ 'synchronize': 0xe00a,
61
+ 'survey': 0x1e00b,
62
+ 'settings': 0xe00c,
63
+ 'search': 0x1e00d,
64
+ 'sales-document': 0x1e00e,
65
+ 'retail-store': 0xe00f,
66
+ 'refresh': 0xe010,
67
+ 'product': 0xe011,
68
+ 'present': 0xe012,
69
+ 'ppt-attachment': 0xe013,
70
+ 'pool': 0xe014,
71
+ 'pie-chart': 0xe015,
72
+ 'picture': 0xe016,
73
+ 'photo-voltaic': 0xe017,
74
+ 'phone': 0xe018,
75
+ 'pending': 0xe019,
76
+ 'pdf-attachment': 0xe01a,
77
+ 'past': 0x1e01b,
78
+ 'outgoing-call': 0xe01c,
79
+ 'opportunity': 0xe01d,
80
+ 'opportunities': 0x1e01e,
81
+ 'notes': 0xe01f,
82
+ 'money-bills': 0x1e020,
83
+ 'map': 0xe021,
84
+ 'log': 0xe022,
85
+ 'line-charts': 0xe023,
86
+ 'lightbulb': 0xe024,
87
+ 'leads': 0xe025,
88
+ 'lead': 0x1e026,
89
+ 'laptop': 0xe027,
90
+ 'kpi-managing-my-area': 0x1e028,
91
+ 'kpi-corporate-performance': 0x1e029,
92
+ 'incoming-call': 0xe02a,
93
+ 'inbox': 0xe02b,
94
+ 'horizontal-bar-chart': 0xe02c,
95
+ 'history': 0xe02d,
96
+ 'heating-cooling': 0xe02e,
97
+ 'gantt-bars': 0xe02f,
98
+ 'future': 0x1e030,
99
+ 'fridge': 0xe031,
100
+ 'fallback': 0xe032,
101
+ 'expense-report': 0x1e033,
102
+ 'excel-attachment': 0xe034,
103
+ 'energy-saving-lightbulb': 0xe035,
104
+ 'employee': 0xe036,
105
+ 'email': 0xe037,
106
+ 'edit': 0xe038,
107
+ 'duplicate': 0xe039,
108
+ 'download': 0xe03a,
109
+ 'doc-attachment': 0xe03b,
110
+ 'dishwasher': 0xe03c,
111
+ 'delete': 0xe03d,
112
+ 'decline': 0xe03e,
113
+ 'complete': 0x1e03f,
114
+ 'competitor': 0xe040,
115
+ 'collections-management': 0xe041,
116
+ 'chalkboard': 0x1e042,
117
+ 'cart': 0xe043,
118
+ 'card': 0xe044,
119
+ 'camera': 0xe045,
120
+ 'calendar': 0x1e046,
121
+ 'begin': 0xe047,
122
+ 'basket': 0xe048,
123
+ 'bar-chart': 0xe049,
124
+ 'attachment': 0xe04a,
125
+ 'arrow-top': 0xe04b,
126
+ 'arrow-right': 0xe04c,
127
+ 'arrow-left': 0xe04d,
128
+ 'arrow-bottom': 0xe04e,
129
+ 'approvals': 0x1e04f,
130
+ 'appointment': 0xe050,
131
+ 'alphabetical-order': 0x1e051,
132
+ 'along-stacked-chart': 0xe052,
133
+ 'alert': 0xe053,
134
+ 'addresses': 0xe054,
135
+ 'address-book': 0x1e055,
136
+ 'add-filter': 0xe056,
137
+ 'add-favorite': 0xe057,
138
+ 'add': 0xe058,
139
+ 'activities': 0x1e059,
140
+ 'action': 0xe05a,
141
+ 'accept': 0x1e05b,
142
+ 'hint': 0x1e05c,
143
+ 'group': 0xe05d,
144
+ 'check-availability': 0x1e05e,
145
+ 'weather-proofing': 0xe05f,
146
+ 'payment-approval': 0x1e060,
147
+ 'batch-payments': 0x1e061,
148
+ 'bed': 0xe062,
149
+ 'arobase': 0x1e063,
150
+ 'family-care': 0xe064,
151
+ 'favorite': 0xe065,
152
+ 'navigation-right-arrow': 0xe066,
153
+ 'navigation-left-arrow': 0xe067,
154
+ 'e-care': 0xe068,
155
+ 'less': 0xe069,
156
+ 'lateness': 0xe06a,
157
+ 'lab': 0xe06b,
158
+ 'internet-browser': 0xe06c,
159
+ 'instance': 0xe06d,
160
+ 'inspection': 0xe06e,
161
+ 'image-viewer': 0xe06f,
162
+ 'home': 0xe070,
163
+ 'grid': 0xe071,
164
+ 'goalseek': 0xe072,
165
+ 'general-leave-request': 0xe073,
166
+ 'create-leave-request': 0xe074,
167
+ 'flight': 0xe075,
168
+ 'filter': 0xe076,
169
+ 'favorite-list': 0xe077,
170
+ 'factory': 0xe078,
171
+ 'endoscopy': 0xe079,
172
+ 'employee-pane': 0xe07a,
173
+ 'employee-approvals': 0x1e07b,
174
+ 'email-read': 0xe07c,
175
+ 'electrocardiogram': 0xe07d,
176
+ 'documents': 0xe07e,
177
+ 'decision': 0xe07f,
178
+ 'database': 0xe080,
179
+ 'customer-history': 0xe081,
180
+ 'customer': 0xe082,
181
+ 'credit-card': 0xe083,
182
+ 'create-entry-time': 0xe084,
183
+ 'contacts': 0xe085,
184
+ 'compare': 0xe086,
185
+ 'clinical-order': 0xe087,
186
+ 'chain-link': 0xe088,
187
+ 'pull-down': 0xe089,
188
+ 'cargo-train': 0xe08a,
189
+ 'car-rental': 0xe08b,
190
+ 'business-card': 0xe08c,
191
+ 'bar-code': 0xe08d,
192
+ 'folder-blank': 0xe08e,
193
+ 'passenger-train': 0xe08f,
194
+ 'question-mark': 0x1e090,
195
+ 'world': 0xe091,
196
+ 'iphone': 0xe092,
197
+ 'ipad': 0xe093,
198
+ 'warning': 0xe094,
199
+ 'sort': 0xe095,
200
+ 'course-book': 0xe096,
201
+ 'course-program': 0xe097,
202
+ 'add-coursebook': 0xe098,
203
+ 'print': 0xe099,
204
+ 'save': 0xe09a,
205
+ 'play': 0x1e09b,
206
+ 'pause': 0xe09c,
207
+ 'record': 0xe09d,
208
+ 'response': 0xe09e,
209
+ 'pushpin-on': 0xe09f,
210
+ 'pushpin-off': 0xe0a0,
211
+ 'unfavorite': 0xe0a1,
212
+ 'learning-assistant': 0xe0a2,
213
+ 'timesheet': 0xe0a3,
214
+ 'time-entry-request': 0xe0a4,
215
+ 'list': 0xe0a5,
216
+ 'action-settings': 0xe0a6,
217
+ 'share': 0xe0a7,
218
+ 'feed': 0xe0a8,
219
+ 'role': 0xe0a9,
220
+ 'flag': 0x1e0aa,
221
+ 'post': 0xe0ab,
222
+ 'inspect': 0xe0ac,
223
+ 'inspect-down': 0xe0ad,
224
+ 'appointment-2': 0xe0ae,
225
+ 'target-group': 0xe0af,
226
+ 'marketing-campaign': 0xe0b0,
227
+ 'notification': 0xe0b1,
228
+ 'message-error': 0xe0b1,
229
+ 'comment': 0xe0b2,
230
+ 'shipping-status': 0xe0b3,
231
+ 'collaborate': 0xe0b4,
232
+ 'shortcut': 0xe0b5,
233
+ 'lead-outdated': 0x1e0b6,
234
+ 'tools-opportunity': 0xe0b7,
235
+ 'permission': 0xe0b8,
236
+ 'supplier': 0xe0b9,
237
+ 'table-view': 0xe0ba,
238
+ 'table-chart': 0xe0bb,
239
+ 'switch-views': 0xe0bc,
240
+ 'e-learning': 0xe0bd,
241
+ 'manager': 0xe0be,
242
+ 'switch-classes': 0xe0bf,
243
+ 'simple-payment': 0x1e0c0,
244
+ 'signature': 0xe0c1,
245
+ 'sales-order-item': 0x1e0c2,
246
+ 'sales-order': 0x1e0c3,
247
+ 'request': 0xe0c4,
248
+ 'receipt': 0xe0c5,
249
+ 'puzzle': 0xe0c6,
250
+ 'process': 0xe0c7,
251
+ 'private': 0xe0c8,
252
+ 'popup-window': 0xe0c9,
253
+ 'person-placeholder': 0xe0ca,
254
+ 'per-diem': 0x1e0cb,
255
+ 'paper-plane': 0xe0cc,
256
+ 'paid-leave': 0x1e0cd,
257
+ 'pdf-reader': 0x1e0ce,
258
+ 'overview-chart': 0xe0cf,
259
+ 'overlay': 0xe0d0,
260
+ 'org-chart': 0xe0d1,
261
+ 'number-sign': 0xe0d2,
262
+ 'notification-2': 0xe0d3,
263
+ 'my-sales-order': 0x1e0d4,
264
+ 'meal': 0xe0d5,
265
+ 'loan': 0x1e0d6,
266
+ 'order-status': 0x1e0d7,
267
+ 'customer-order-entry': 0x1e0d8,
268
+ 'performance': 0xe0d9,
269
+ 'menu': 0xe0da,
270
+ 'employee-lookup': 0xe0db,
271
+ 'education': 0xe0dc,
272
+ 'customer-briefing': 0xe0dd,
273
+ 'customer-and-contacts': 0xe0de,
274
+ 'my-view': 0xe0df,
275
+ 'accelerated': 0xe0e0,
276
+ 'to-be-reviewed': 0xe0e1,
277
+ 'warning2': 0xe0e2,
278
+ 'feeder-arrow': 0xe0e3,
279
+ 'quality-issue': 0xe0e4,
280
+ 'workflow-tasks': 0xe0e5,
281
+ 'create': 0xe0e6,
282
+ 'home-share': 0xe0e7,
283
+ 'globe': 0x1e0e8,
284
+ 'tags': 0xe0e9,
285
+ 'work-history': 0xe0ea,
286
+ 'x-ray': 0xe0eb,
287
+ 'wounds-doc': 0xe0ec,
288
+ 'web-cam': 0xe0ed,
289
+ 'waiver': 0x1e0ee,
290
+ 'vertical-bar-chart': 0xe0ef,
291
+ 'upstacked-chart': 0xe0f0,
292
+ 'trip-report': 0xe0f1,
293
+ 'microphone': 0xe0f2,
294
+ 'unpaid-leave': 0x1e0f3,
295
+ 'tree': 0xe0f4,
296
+ 'toaster-up': 0xe0f5,
297
+ 'toaster-top': 0xe0f6,
298
+ 'toaster-down': 0xe0f7,
299
+ 'time-account': 0xe0f8,
300
+ 'theater': 0xe0f9,
301
+ 'taxi': 0xe0fa,
302
+ 'subway-train': 0xe0fb,
303
+ 'study-leave': 0xe0fc,
304
+ 'stethoscope': 0xe0fd,
305
+ 'step': 0xe0fe,
306
+ 'sonography': 0xe0ff,
307
+ 'soccor': 0xe100,
308
+ 'soccer': 0xe100,
309
+ 'physical-activity': 0xe101,
310
+ 'pharmacy': 0xe102,
311
+ 'official-service': 0xe103,
312
+ 'offsite-work': 0xe104,
313
+ 'nutrition-activity': 0xe105,
314
+ 'newspaper': 0xe106,
315
+ 'monitor-payments': 0x1e107,
316
+ 'map-2': 0xe108,
317
+ 'machine': 0xe109,
318
+ 'mri-scan': 0xe10a,
319
+ 'end-user-experience-monitoring': 0xe10b,
320
+ 'unwired': 0xe10c,
321
+ 'customer-financial-fact-sheet': 0x1e10d,
322
+ 'retail-store-manager': 0xe10e,
323
+ 'Netweaver-business-client': 0xe10f,
324
+ 'electronic-medical-record': 0xe110,
325
+ 'eam-work-order': 0x1e111,
326
+ 'customer-view': 0xe112,
327
+ 'crm-service-manager': 0xe113,
328
+ 'crm-sales': 0x1e114,
329
+ 'widgets': 0x1e115,
330
+ 'commission-check': 0x1e116,
331
+ 'collections-insight': 0x1e117,
332
+ 'clinical-tast-tracker': 0xe118,
333
+ 'citizen-connect': 0xe119,
334
+ 'cart-approval': 0x1e11a,
335
+ 'capital-projects': 0x1e11b,
336
+ 'bo-strategy-management': 0xe11c,
337
+ 'business-objects-mobile': 0xe11d,
338
+ 'business-objects-explorer': 0xe11e,
339
+ 'business-objects-experience': 0xe11f,
340
+ 'bbyd-dashboard': 0xe120,
341
+ 'bbyd-active-sales': 0x1e121,
342
+ 'business-by-design': 0x1e122,
343
+ 'business-one': 0x1e123,
344
+ 'sap-box': 0xe124,
345
+ 'manager-insight': 0xe125,
346
+ 'accounting-document-verification': 0x1e126,
347
+ 'hr-approval': 0x1e127,
348
+ 'idea-wall': 0xe128,
349
+ 'Chart-Tree-Map': 0xe129,
350
+ 'cart-5': 0xe12a,
351
+ 'cart-4': 0xe12b,
352
+ 'wallet': 0xe12c,
353
+ 'vehicle-repair': 0xe12d,
354
+ 'upload': 0xe12e,
355
+ 'unlocked': 0xe12f,
356
+ 'umbrella': 0xe130,
357
+ 'travel-request': 0x1e131,
358
+ 'travel-expense-report': 0x1e132,
359
+ 'travel-itinerary': 0xe133,
360
+ 'time-overtime': 0x1e134,
361
+ 'thing-type': 0xe135,
362
+ 'technical-object': 0xe136,
363
+ 'tag': 0xe137,
364
+ 'syringe': 0xe138,
365
+ 'syntax': 0xe139,
366
+ 'suitcase': 0xe13a,
367
+ 'simulate': 0xe13b,
368
+ 'shield': 0xe13c,
369
+ 'share-2': 0xe13d,
370
+ 'sales-quote': 0x1e13e,
371
+ 'repost': 0xe13f,
372
+ 'provision': 0xe140,
373
+ 'projector': 0xe141,
374
+ 'add-product': 0xe142,
375
+ 'pipeline-analysis': 0xe143,
376
+ 'add-photo': 0xe144,
377
+ 'palette': 0xe145,
378
+ 'nurse': 0xe146,
379
+ 'sales-notification': 0x1e147,
380
+ 'mileage': 0xe148,
381
+ 'meeting-room': 0xe149,
382
+ 'media-forward': 0x1e14a,
383
+ 'media-play': 0x1e14b,
384
+ 'media-pause': 0xe14c,
385
+ 'media-reverse': 0x1e14d,
386
+ 'media-rewind': 0x1e14e,
387
+ 'measurement-document': 0xe14f,
388
+ 'measuring-point': 0xe150,
389
+ 'measure': 0xe151,
390
+ 'map-3': 0xe152,
391
+ 'locked': 0xe153,
392
+ 'letter': 0xe154,
393
+ 'journey-arrive': 0xe155,
394
+ 'journey-change': 0xe156,
395
+ 'journey-depart': 0xe157,
396
+ 'it-system': 0xe158,
397
+ 'it-instance': 0xe159,
398
+ 'it-host': 0xe15a,
399
+ 'iphone-2': 0xe15b,
400
+ 'ipad-2': 0xe15c,
401
+ 'inventory': 0xe15d,
402
+ 'insurance-house': 0xe15e,
403
+ 'insurance-life': 0xe15f,
404
+ 'insurance-car': 0xe160,
405
+ 'initiative': 0xe161,
406
+ 'incident': 0x1e162,
407
+ 'group-2': 0xe163,
408
+ 'goal': 0xe164,
409
+ 'functional-location': 0xe165,
410
+ 'full-screen': 0xe166,
411
+ 'form': 0xe167,
412
+ 'fob-watch': 0xe168,
413
+ 'blank-tag': 0xe169,
414
+ 'family-protection': 0xe16a,
415
+ 'folder': 0xe16b,
416
+ 'fax-machine': 0xe16c,
417
+ 'example': 0xe16d,
418
+ 'eraser': 0xe16e,
419
+ 'employee-rejections': 0xe16f,
420
+ 'drop-down-list': 0xe170,
421
+ 'draw-rectangle': 0xe171,
422
+ 'document': 0xe172,
423
+ 'doctor': 0xe173,
424
+ 'discussion-2': 0xe174,
425
+ 'discussion': 0xe175,
426
+ 'dimension': 0xe176,
427
+ 'customer-and-supplier': 0xe177,
428
+ 'crop': 0xe178,
429
+ 'add-contact': 0xe179,
430
+ 'compare-2': 0xe17a,
431
+ 'color-fill': 0xe17b,
432
+ 'collision': 0xe17c,
433
+ 'curriculum': 0xe17d,
434
+ 'chart-axis': 0xe17e,
435
+ 'full-stacked-chart': 0xe17f,
436
+ 'full-stacked-column-chart': 0xe180,
437
+ 'vertical-bar-chart-2': 0xe181,
438
+ 'horizontal-bar-chart-2': 0xe182,
439
+ 'horizontal-stacked-chart': 0xe183,
440
+ 'vertical-stacked-chart': 0xe184,
441
+ 'choropleth-chart': 0x1e185,
442
+ 'geographic-bubble-chart': 0x1e186,
443
+ 'multiple-radar-chart': 0xe187,
444
+ 'radar-chart': 0xe188,
445
+ 'crossed-line-chart': 0xe189,
446
+ 'multiple-line-chart': 0xe18a,
447
+ 'multiple-bar-chart': 0xe18b,
448
+ 'line-chart': 0xe18c,
449
+ 'line-chart-dual-axis': 0xe18d,
450
+ 'bubble-chart': 0xe18e,
451
+ 'scatter-chart': 0xe18f,
452
+ 'multiple-pie-chart': 0xe190,
453
+ 'column-chart-dual-axis': 0xe191,
454
+ 'tag-cloud-chart': 0xe192,
455
+ 'area-chart': 0xe193,
456
+ 'cause': 0xe194,
457
+ 'cart-3': 0xe195,
458
+ 'cart-2': 0xe196,
459
+ 'bus-public-transport': 0xe197,
460
+ 'burglary': 0xe198,
461
+ 'building': 0xe199,
462
+ 'border': 0xe19a,
463
+ 'bookmark': 0xe19b,
464
+ 'badge': 0xe19c,
465
+ 'attachment-audio': 0xe19d,
466
+ 'attachment-video': 0xe19e,
467
+ 'attachment-html': 0xe19f,
468
+ 'attachment-photo': 0xe1a0,
469
+ 'attachment-e-pub': 0xe1a1,
470
+ 'attachment-zip-file': 0xe1a2,
471
+ 'attachment-text-file': 0xe1a3,
472
+ 'add-equipment': 0xe1a4,
473
+ 'add-activity': 0x1e1a5,
474
+ 'activity-individual': 0xe1a6,
475
+ 'activity-2': 0x1e1a7,
476
+ 'add-activity-2': 0x1e1a8,
477
+ 'activity-items': 0xe1a9,
478
+ 'activity-assigned-to-goal': 0xe1aa,
479
+ 'status-completed': 0xe1ab,
480
+ 'status-positive': 0xe1ab,
481
+ 'status-error': 0xe1ac,
482
+ 'status-negative': 0xe1ac,
483
+ 'status-inactive': 0xe1ad,
484
+ 'status-in-process': 0xe1ae,
485
+ 'status-critical': 0xe1ae,
486
+ 'blank-tag-2': 0xe1af,
487
+ 'cart-full': 0xe1b0,
488
+ 'locate-me': 0xe1b1,
489
+ 'paging': 0xe1b2,
490
+ 'company-view': 0xe1b3,
491
+ 'document-text': 0xe1b4,
492
+ 'explorer': 0xe1b5,
493
+ 'personnel-view': 0xe1b6,
494
+ 'sorting-ranking': 0xe1b7,
495
+ 'drill-down': 0xe1b8,
496
+ 'drill-up': 0xe1b9,
497
+ 'vds-file': 0xe1ba,
498
+ 'sap-logo-shape': 0x1e1bb,
499
+ 'folder-full': 0xe1bc,
500
+ 'system-exit': 0xe1bd,
501
+ 'system-exit-2': 0xe1be,
502
+ 'close-command-field': 0xe1bf,
503
+ 'open-command-field': 0xe1c0,
504
+ 'sys-enter-2': 0x1e1c1,
505
+ 'sys-enter': 0x1e1c2,
506
+ 'sys-help-2': 0x1e1c3,
507
+ 'sys-help': 0x1e1c4,
508
+ 'sys-back': 0xe1c5,
509
+ 'sys-back-2': 0xe1c6,
510
+ 'sys-cancel': 0xe1c7,
511
+ 'sys-cancel-2': 0xe1c8,
512
+ 'open-folder': 0xe1c9,
513
+ 'sys-find-next': 0xe1ca,
514
+ 'sys-find': 0xe1cb,
515
+ 'sys-monitor': 0xe1cc,
516
+ 'sys-prev-page': 0xe1cd,
517
+ 'sys-first-page': 0xe1ce,
518
+ 'sys-next-page': 0xe1cf,
519
+ 'sys-last-page': 0xe1d0,
520
+ 'generate-shortcut': 0xe1d1,
521
+ 'create-session': 0xe1d2,
522
+ 'display-more': 0xe1d3,
523
+ 'enter-more': 0xe1d4,
524
+ 'zoom-in': 0xe1d5,
525
+ 'zoom-out': 0xe1d6,
526
+ 'header': 0xe1d7,
527
+ 'detail-view': 0xe1d8,
528
+ 'show-edit': 0xe1d8,
529
+ 'collapse': 0xe1d9,
530
+ 'expand': 0xe1da,
531
+ 'positive': 0xe1db,
532
+ 'negative': 0xe1dc,
533
+ 'display': 0xe1dd,
534
+ 'menu2': 0xe1de,
535
+ 'redo': 0xe1df,
536
+ 'undo': 0xe1e0,
537
+ 'navigation-up-arrow': 0xe1e1,
538
+ 'navigation-down-arrow': 0xe1e2,
539
+ 'down': 0xe1e3,
540
+ 'up': 0xe1e4,
541
+ 'shelf': 0xe1e5,
542
+ 'background': 0xe1e6,
543
+ 'resize': 0xe1e7,
544
+ 'move': 0xe1e8,
545
+ 'show': 0xe1e9,
546
+ 'hide': 0xe1ea,
547
+ 'nav-back': 0xe1eb,
548
+ 'error': 0xe1ec,
549
+ 'slim-arrow-right': 0xe1ed,
550
+ 'slim-arrow-left': 0xe1ee,
551
+ 'slim-arrow-down': 0xe1ef,
552
+ 'slim-arrow-up': 0xe1f0,
553
+ 'forward': 0xe1f1,
554
+ 'overflow': 0xe1f2,
555
+ 'value-help': 0xe1f3,
556
+ 'multi-select': 0x1e1f4,
557
+ 'exit-full-screen': 0xe1f5,
558
+ 'sys-add': 0xe1f6,
559
+ 'sys-minus': 0xe1f7,
560
+ 'dropdown': 0xe1f8,
561
+ 'expand-group': 0xe1f9,
562
+ 'collapse-group': 0xe200,
563
+ 'vertical-grip': 0xe1fa,
564
+ 'horizontal-grip': 0xe1fb,
565
+ 'sort-descending': 0xe1fc,
566
+ 'sort-ascending': 0xe1fd,
567
+ 'arrow-down': 0xe1fe,
568
+ 'legend': 0xe1ff,
569
+ 'message-warning': 0xe201,
570
+ 'message-information': 0x1e202,
571
+ 'message-success': 0x1e203,
572
+ 'restart': 0xe204,
573
+ 'stop': 0xe205,
574
+ 'add-process': 0xe206,
575
+ 'cancel-maintenance': 0xe207,
576
+ 'activate': 0xe208,
577
+ 'resize-horizontal': 0xe209,
578
+ 'resize-vertical': 0xe20a,
579
+ 'connected': 0xe20b,
580
+ 'disconnected': 0xe20c,
581
+ 'edit-outside': 0xe20d,
582
+ 'key': 0xe20e,
583
+ 'minimize': 0xe20f,
584
+ 'back-to-top': 0xe210,
585
+ 'hello-world': 0xe211,
586
+ 'outbox': 0xe212,
587
+ 'donut-chart': 0xe213,
588
+ 'heatmap-chart': 0xe214,
589
+ 'horizontal-bullet-chart': 0xe215,
590
+ 'vertical-bullet-chart': 0xe216,
591
+ 'call': 0xe217,
592
+ 'download-from-cloud': 0xe218,
593
+ 'upload-to-cloud': 0xe219,
594
+ 'jam': 0xe21a,
595
+ 'sap-ui5': 0xe21b,
596
+ 'message-popup': 0xe21c,
597
+ 'cloud': 0xe21d,
598
+ 'horizontal-waterfall-chart': 0x1e21e,
599
+ 'vertical-waterfall-chart': 0x1e21f,
600
+ 'broken-link': 0xe220,
601
+ 'headset': 0xe221,
602
+ 'thumb-up': 0x1e222,
603
+ 'thumb-down': 0x1e223,
604
+ 'multiselect-all': 0x1e224,
605
+ 'multiselect-none': 0x1e225,
606
+ 'scissors': 0xe226,
607
+ 'sound': 0x1e227,
608
+ 'sound-loud': 0x1e228,
609
+ 'sound-off': 0x1e229,
610
+ 'date-time': 0x1e22a,
611
+ 'user-settings': 0xe22b,
612
+ 'key-user-settings': 0xe22c,
613
+ 'developer-settings': 0xe22d,
614
+ 'text-formatting': 0x1e22e,
615
+ 'bold-text': 0x1e22f,
616
+ 'italic-text': 0x1e230,
617
+ 'underline-text': 0x1e231,
618
+ 'text-align-justified': 0x1e232,
619
+ 'text-align-left': 0x1e233,
620
+ 'text-align-center': 0x1e234,
621
+ 'text-align-right': 0x1e235,
622
+ 'bullet-text': 0x1e236,
623
+ 'numbered-text': 0x1e237,
624
+ 'co': 0xe238,
625
+ 'ui-notifications': 0xe239,
626
+ 'bell': 0xe23a,
627
+ 'cancel-share': 0xe23b,
628
+ 'write-new-document': 0xe23c,
629
+ 'write-new': 0xe23d,
630
+ 'cancel': 0x1e23e,
631
+ 'screen-split-one': 0xe23f,
632
+ 'screen-split-two': 0xe240,
633
+ 'screen-split-three': 0xe241,
634
+ 'customize': 0xe242,
635
+ 'user-edit': 0xe243,
636
+ 'source-code': 0xe244,
637
+ 'copy': 0xe245,
638
+ 'paste': 0xe246,
639
+ 'line-chart-time-axis': 0x1e247,
640
+ 'clear-filter': 0xe248,
641
+ 'reset': 0xe249,
642
+ 'trend-up': 0xe24a,
643
+ 'trend-down': 0xe24b,
644
+ 'cursor-arrow': 0xe24c,
645
+ 'add-document': 0xe24d,
646
+ 'create-form': 0xe24e,
647
+ 'resize-corner': 0xe24f,
648
+ 'chevron-phase': 0xe250,
649
+ 'chevron-phase-2': 0xe251,
650
+ 'rhombus-milestone': 0xe252,
651
+ 'rhombus-milestone-2': 0xe253,
652
+ 'circle-task': 0xe254,
653
+ 'circle-task-2': 0xe255,
654
+ 'project-definition-triangle': 0xe256,
655
+ 'project-definition-triangle-2': 0xe257,
656
+ 'master-task-triangle': 0xe258,
657
+ 'master-task-triangle-2': 0xe259,
658
+ 'program-triangles': 0xe25a,
659
+ 'program-triangles-2': 0xe25b,
660
+ 'mirrored-task-circle': 0xe25c,
661
+ 'mirrored-task-circle-2': 0xe25d,
662
+ 'checklist-item': 0xe25e,
663
+ 'checklist-item-2': 0xe25f,
664
+ 'checklist': 0xe260,
665
+ 'checklist-2': 0xe261,
666
+ 'chart-table-view': 0xe262,
667
+ 'filter-analytics': 0xe263,
668
+ 'filter-facets': 0xe264,
669
+ 'filter-fields': 0xe265,
670
+ 'indent': 0xe266,
671
+ 'outdent': 0xe267,
672
+ 'heading1': 0x1e268,
673
+ 'heading2': 0x1e269,
674
+ 'heading3': 0x1e26a,
675
+ 'decrease-line-height': 0xe26b,
676
+ 'increase-line-height': 0xe26c,
677
+ 'fx': 0x1e26d,
678
+ 'add-folder': 0xe26e,
679
+ 'away': 0xe26f,
680
+ 'busy': 0xe270,
681
+ 'appear-offline': 0xe271,
682
+ 'blur': 0xe272,
683
+ 'pixelate': 0xe273,
684
+ 'horizontal-combination-chart': 0xe274,
685
+ 'add-employee': 0xe275,
686
+ 'text-color': 0x1e276,
687
+ 'browse-folder': 0xe277,
688
+ 'primary-key': 0xe278,
689
+ 'two-keys': 0xe279,
690
+ 'strikethrough': 0xe27a,
691
+ 'text': 0xe27b,
692
+ 'responsive': 0xe27c,
693
+ 'desktop-mobile': 0xe27d,
694
+ 'table-row': 0xe27e,
695
+ 'table-column': 0xe27f,
696
+ 'validate': 0x1e280,
697
+ 'keyboard-and-mouse': 0xe281,
698
+ 'touch': 0xe282,
699
+ 'expand-all': 0xe283,
700
+ 'collapse-all': 0xe284,
701
+ 'combine': 0xe285,
702
+ 'split': 0xe286,
703
+ 'megamenu': 0xe287,
704
+ 'feedback': 0xe288,
705
+ 'information': 0xe289,
706
+ 's4hana': 0x1e28a,
707
+ 'translate': 0x1e28b,
708
+ 'clear-all': 0xe28c,
709
+ 'command-line-interfaces': 0xe28d,
710
+ 'sum': 0x1e28e,
711
+ 'qr-code': 0x1e28f,
712
+ 'space-navigation': 0xe290,
713
+ 'in-progress': 0x1e291,
714
+ 'not-editable': 0xe292
715
+ }
716
+ };
717
+
718
+ var oCoreResourceBundle;
719
+
720
+ // Lazy load core resource bundle
721
+ function getCoreResourceBundle() {
722
+ if (!oCoreResourceBundle) {
723
+ oCoreResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.ui.core");
724
+ }
725
+ return oCoreResourceBundle;
726
+ }
727
+
728
+ /*
729
+ * The private "sap/ui/core/_IconRegistry" holds the implementation for some functions exposed
730
+ * via the the "sap/ui/core/IconPool".
731
+ * Please see the corresponding API documentation there.
732
+ */
733
+ var _IconRegistry = {
734
+ sapIconFontFamily: SAP_ICON_FONT_FAMILY
735
+ };
736
+
737
+
738
+ _IconRegistry.get = function() {
739
+ return mRegistry;
740
+ };
741
+
742
+ _IconRegistry.getFontRegistry = function() {
743
+ return mFontRegistry;
744
+ };
745
+
746
+ /*
747
+ * See IconPool.addIcon
748
+ */
749
+ _IconRegistry.addIcon = function(iconName, collectionName, iconInfo) {
750
+ // OLD API Compatibility fontFamily, content, overWrite, suppressMirroring
751
+ if (typeof iconInfo === "string") {
752
+ iconInfo = {
753
+ fontFamily: arguments[2],
754
+ content: arguments[3],
755
+ overWrite: !!arguments[4],
756
+ suppressMirroring: !!arguments[5]
757
+ };
758
+ }
759
+
760
+ // if collectionName isn't a string, convert it to string
761
+ if (typeof collectionName !== "string") {
762
+ collectionName = String(collectionName);
763
+ }
764
+
765
+ // normalize "undefined" back to undefined because the default
766
+ // icon collection should have name undefined
767
+ collectionName = collectionName === 'undefined' ? undefined : collectionName;
768
+
769
+ if (!mRegistry[collectionName]) {
770
+ mRegistry[collectionName] = {};
771
+ }
772
+
773
+ var collection = mRegistry[collectionName],
774
+ icon = collection[iconName],
775
+ parts, sContent, sText, sKey;
776
+
777
+ if (icon) {
778
+ if (collectionName === undefined) {
779
+ Log.warning("Icon with name '" + iconName + "' in built-in collection already exists and can not be overwritten.", "sap.ui.core.IconPool");
780
+ return;
781
+ } else if (!iconInfo.overWrite) {
782
+ Log.warning("Icon with name '" + iconName + "' in collection '" + collectionName + "' already exists. Specify 'iconInfo.overWrite' in order to overwrite.", "sap.ui.core.IconPool");
783
+ return;
784
+ }
785
+ }
786
+
787
+ parts = {
788
+ protocol: ICON_PROTOCOL,
789
+ hostname: collectionName || iconName,
790
+ path: collectionName ? iconName : undefined
791
+ };
792
+
793
+ if (Array.isArray(iconInfo.content)) {
794
+ sContent = iconInfo.content.map(makeChar).join('');
795
+ } else {
796
+ sContent = makeChar(iconInfo.content);
797
+ }
798
+
799
+ if (iconInfo.resourceBundle instanceof ResourceBundle) {
800
+ sKey = "Icon." + iconName;
801
+ if (iconInfo.resourceBundle.hasText(sKey)) {
802
+ sText = iconInfo.resourceBundle.getText(sKey);
803
+ }
804
+ }
805
+
806
+ icon = collection[iconName] = {
807
+ name: iconName,
808
+ collection: collectionName,
809
+ uri: URI.build(parts),
810
+ fontFamily: iconInfo.fontFamily,
811
+ content: sContent,
812
+ text: sText || '',
813
+ suppressMirroring: iconInfo.suppressMirroring,
814
+ //keep compatibility with old name
815
+ skipMirroring: iconInfo.suppressMirroring
816
+ };
817
+
818
+ return icon;
819
+ };
820
+
821
+ /*
822
+ * See IconPool.getIconURI
823
+ */
824
+ _IconRegistry.getIconURI = function (iconName, collectionName) {
825
+ var icon = this.getIconInfo(iconName, collectionName);
826
+ return icon && icon.uri;
827
+ };
828
+
829
+ /*
830
+ * See IconPool.getIconInfo
831
+ */
832
+ _IconRegistry.getIconInfo = function (iconName, collectionName, loadingMode) {
833
+ var parts,
834
+ info,
835
+ async,
836
+ oLoaded,
837
+ nameIsURI = _IconRegistry.isIconURI(iconName);
838
+
839
+ if (!iconName) {
840
+ return;
841
+ }
842
+
843
+ // handle optional parameters
844
+ if (!loadingMode && nameIsURI) {
845
+ loadingMode = collectionName;
846
+ }
847
+ loadingMode = loadingMode || "sync";
848
+ async = (loadingMode === "async" || loadingMode === "mixed");
849
+
850
+ // retrieves the icon info from the internal registry
851
+ function getInfo() {
852
+ var collection = mRegistry[collectionName];
853
+ var info = collection && collection[iconName];
854
+
855
+ // convert raw data lazily to the icon info
856
+ if (typeof info === 'number') {
857
+ mRegistry[collectionName][iconName] = undefined; // avoid duplicate icon warning
858
+ info = _IconRegistry.addIcon(iconName, collectionName, {
859
+ fontFamily: mFontRegistry[collectionName].config.fontFamily,
860
+ content: info & 0xFFFF,
861
+ suppressMirroring: !!(info & 0x10000),
862
+ resourceBundle: getCoreResourceBundle()
863
+ });
864
+ }
865
+
866
+ return info;
867
+ }
868
+
869
+ // parse icon URI
870
+ if (nameIsURI) {
871
+ parts = URI.parse(iconName);
872
+
873
+ if (parts.path.length === 1) {
874
+ collectionName = undefined;
875
+ iconName = parts.hostname;
876
+ } else {
877
+ collectionName = parts.hostname;
878
+ iconName = parts.path.slice(1);
879
+ }
880
+
881
+ if (!iconName) {
882
+ return;
883
+ }
884
+ }
885
+
886
+ // if collectionName isn't a string, convert it to string
887
+ if (typeof collectionName !== "string") {
888
+ collectionName = String(collectionName);
889
+ }
890
+
891
+ // normalize "undefined" back to undefined because the default
892
+ // icon collection should have name undefined
893
+ collectionName = collectionName === 'undefined' ? undefined : collectionName;
894
+
895
+ // fetch the info from the registry
896
+ info = getInfo();
897
+
898
+ // load icon metadata if not available (except for default collection)
899
+ if (info === undefined && collectionName !== undefined) {
900
+ oLoaded = _IconRegistry._loadFontMetadata(collectionName, async);
901
+ }
902
+ if (async) {
903
+ if (oLoaded) {
904
+ // wait for the icon metadata to be loaded
905
+ return oLoaded.then(function () {
906
+ info = getInfo();
907
+ if (!info) {
908
+ Log.warning("Icon info for icon '" + iconName + "' in collection '" + collectionName + "' could not be fetched");
909
+ }
910
+ return info;
911
+ });
912
+ } else if (loadingMode === "async") {
913
+ return Promise.resolve(info);
914
+ } else {
915
+ info = getInfo();
916
+ }
917
+ } else {
918
+ // refresh info if needed and return it
919
+ info = getInfo();
920
+ }
921
+
922
+ // show a warning when the icon could not be found
923
+ if (!info) {
924
+ Log.warning("Icon info for icon '" + iconName + "' in collection '" + collectionName + "' could not be fetched");
925
+ }
926
+ return info;
927
+ };
928
+
929
+
930
+ /*
931
+ * See IconPool.isIconURI
932
+ */
933
+ _IconRegistry.isIconURI = function (uri) {
934
+ if (!uri) {
935
+ return false;
936
+ }
937
+ var parts = URI.parse(uri);
938
+
939
+ return parts.protocol === ICON_PROTOCOL && !!parts.hostname;
940
+ };
941
+
942
+ /*
943
+ * See IconPool.getIconCollectionNames
944
+ */
945
+ _IconRegistry.getIconCollectionNames = function () {
946
+ return Object.keys(mRegistry);
947
+ };
948
+
949
+ /*
950
+ * See IconPool.getIconNames
951
+ */
952
+ _IconRegistry.getIconNames = function (collectionName) {
953
+ var collection = mRegistry[collectionName];
954
+ return collection ? Object.keys(collection) : [];
955
+ };
956
+
957
+ /*
958
+ * See IconPool.insertFontFaceStyle
959
+ */
960
+ _IconRegistry.insertFontFaceStyle = function (sFontFace, sPath, sCollectionName) {
961
+ var oFontFace,
962
+ mFontRegistry = _IconRegistry.getFontRegistry();
963
+
964
+ function convertUrl(sUrl) {
965
+ // AppCacheBuster createds the '_covnertUrl' function when it's active. Call the function to include the
966
+ // CacheBuster token into the url.
967
+ return _IconRegistry._convertUrl ? _IconRegistry._convertUrl(sUrl) : sUrl;
968
+ }
969
+
970
+ if (arguments.length === 0 || sFontFace === SAP_ICON_FONT_FAMILY) {
971
+ // The font-face declaration for the predefined icon font is done in SAP-icons.css which is imported to the
972
+ // library.source.less. Therefore it's not needed to use inline css to declare it.
973
+ Log.info("It's not needed to call IconPool.insertFontFaceStyle to insert font-face for the predefined icon font SAP-icons because the font-face is included in the library.css of sap.ui.core");
974
+ return;
975
+ }
976
+
977
+ if (sFontFace && sPath === undefined) {
978
+ Log.error("IconPool.insertFontFaceStyle must be called with at least two parameters!");
979
+ return;
980
+ }
981
+
982
+ if (sCollectionName === undefined) {
983
+ // when the collection name isn't given
984
+ // set the collection name with sFontFace only when the icon font
985
+ // isn't the standard icon font. The collectionName of the standard icon font
986
+ // should always be set with undefined
987
+ sCollectionName = sFontFace;
988
+ }
989
+
990
+ // check if the font has not been registered yet
991
+ if (!mFontRegistry[sCollectionName]) {
992
+ Log.error("Icon font '" + sCollectionName + "' has not been registered yet.");
993
+ return;
994
+ }
995
+ // check if font face has already been inserted
996
+ if (mFontRegistry[sCollectionName].inserted) {
997
+ Log.info("The font face style of icon font '" + sCollectionName + "' was already inserted.");
998
+ return;
999
+ }
1000
+
1001
+ oFontFace = new FontFace(sFontFace,
1002
+ "url(" + convertUrl(sPath + sFontFace + ".woff2") + ") format('woff2')," +
1003
+ "local(" + sFontFace + ")",
1004
+ {
1005
+ weight: "normal",
1006
+ style: "normal"
1007
+ }
1008
+ );
1009
+
1010
+ document.fonts.add(oFontFace);
1011
+ oFontFace.load();
1012
+
1013
+ mFontRegistry[sCollectionName].inserted = true;
1014
+ mFontRegistry[sCollectionName].fontFace = sFontFace;
1015
+ };
1016
+
1017
+ /**
1018
+ * Loads the font metadata for the given collection.
1019
+ *
1020
+ * @param {string} collectionName the font collection name
1021
+ * @param {boolean} async whether the metadata is loaded async or sync
1022
+ * @returns {Promise<undefined>|undefined} if async is set to true a Promise is returned, otherwise undefined
1023
+ * @private
1024
+ */
1025
+ _IconRegistry._loadFontMetadata = function (collectionName, async) {
1026
+ var oConfig,
1027
+ mRegistry = _IconRegistry.get(),
1028
+ mFontRegistry = _IconRegistry.getFontRegistry();
1029
+
1030
+ if (mFontRegistry[collectionName]) {
1031
+ // early out for subsequent tries of loading a font that failed or is finished loading
1032
+ if (typeof mFontRegistry[collectionName].metadataLoaded === "boolean") {
1033
+ return;
1034
+ }
1035
+
1036
+ if (async && mFontRegistry[collectionName].metadataLoaded instanceof Promise) {
1037
+ return mFontRegistry[collectionName].metadataLoaded;
1038
+ }
1039
+ // fetch font config
1040
+ oConfig = mFontRegistry[collectionName].config;
1041
+ } else {
1042
+ // only display an error when the collection has not been manually registered by calling addIcon
1043
+ if (!mRegistry[collectionName]) {
1044
+ Log.error("The font configuration for collection '" + collectionName + "' is not registered");
1045
+ }
1046
+ // register an entry indicating the font loading failed
1047
+ mFontRegistry[collectionName] = {
1048
+ metadataLoaded: false
1049
+ };
1050
+ }
1051
+
1052
+ // add icons to registry and insert the font style
1053
+ function loadFont(oFontMetadata) {
1054
+ for (var sKey in oFontMetadata) {
1055
+ oFontMetadata[sKey] = parseInt(oFontMetadata[sKey], 16);
1056
+ }
1057
+ mRegistry[collectionName] = oFontMetadata;
1058
+ _IconRegistry.insertFontFaceStyle(oConfig.fontFamily, oConfig.fontURI, collectionName);
1059
+ mFontRegistry[collectionName].metadataLoaded = true;
1060
+ }
1061
+
1062
+ if (oConfig) {
1063
+ // search for a metadata file with the font family name in the same folder
1064
+ if (oConfig.metadataURI === undefined) {
1065
+ oConfig.metadataURI = oConfig.fontURI + oConfig.fontFamily + ".json";
1066
+ }
1067
+ if (async && !oConfig.metadata) {
1068
+ // while loading is pending return the promise
1069
+ if (mFontRegistry[collectionName].metadataLoaded instanceof Promise) {
1070
+ return mFontRegistry[collectionName].metadataLoaded;
1071
+ }
1072
+ // the first time create a metadataLoaded promise
1073
+ var oPromise = new Promise(function (fnResolve) {
1074
+ if (mRegistry[collectionName] === undefined) {
1075
+ // store fnResolve to call it from outside the Promise
1076
+ mFontRegistry[collectionName].metadataLoadedResolve = fnResolve;
1077
+ // load the metadata asynchronously and save the XHR object
1078
+ mFontRegistry[collectionName].metadataXhr = jQuery.ajax(oConfig.metadataURI, {
1079
+ dataType: "json",
1080
+ success: function (oJSON) {
1081
+ loadFont(oJSON);
1082
+ delete mFontRegistry[collectionName].metadataXhr;
1083
+ delete mFontRegistry[collectionName].metadataLoadedResolve;
1084
+ fnResolve();
1085
+ },
1086
+ error: function (jqXHR, sStatus) {
1087
+ if (sStatus !== "abort") { // log an error if it isn't aborted
1088
+ Log.error("An error occurred loading the font metadata for collection '" + collectionName + "'");
1089
+ mFontRegistry[collectionName].metadataLoaded = false;
1090
+ fnResolve();
1091
+ }
1092
+ }
1093
+ });
1094
+ }
1095
+ });
1096
+
1097
+ mFontRegistry[collectionName].metadataLoaded = oPromise;
1098
+ return oPromise;
1099
+ } else if (oConfig.metadataURI) {
1100
+ if (mFontRegistry[collectionName].metadataXhr) { // there is an async request ongoing
1101
+ // the async request is aborted before the sync request is sent
1102
+ mFontRegistry[collectionName].metadataXhr.abort("Replaced by sync request");
1103
+ mFontRegistry[collectionName].metadataXhr = null;
1104
+ }
1105
+ Log.warning("Synchronous loading of font meta data in IconPool, due to .getIconInfo() call" +
1106
+ " for '" + collectionName + "'. Use loading mode 'async' to avoid this call.", "SyncXHR", null, function() {
1107
+ return {
1108
+ type: "SyncXHR",
1109
+ name: "IconPool"
1110
+ };
1111
+ });
1112
+ // load the metadata synchronously
1113
+ jQuery.ajax(oConfig.metadataURI, {
1114
+ dataType: "json",
1115
+ async: false,
1116
+ success: function (oJSON) {
1117
+ loadFont(oJSON);
1118
+ if (mFontRegistry[collectionName].metadataLoadedResolve) {
1119
+ // resolve the Promise for the async request
1120
+ mFontRegistry[collectionName].metadataLoadedResolve();
1121
+ delete mFontRegistry[collectionName].metadataLoadedResolve;
1122
+ }
1123
+ },
1124
+ error: function () {
1125
+ if (mFontRegistry[collectionName].metadataLoadedResolve) {
1126
+ // resolve the Promise for the async request
1127
+ mFontRegistry[collectionName].metadataLoadedResolve();
1128
+ delete mFontRegistry[collectionName].metadataLoadedResolve;
1129
+ }
1130
+ Log.error("An error occurred loading the font metadata for collection '" + collectionName + "'");
1131
+ mFontRegistry[collectionName].metadataLoaded = false;
1132
+ }
1133
+ });
1134
+ } else {
1135
+ // pass on the configuration object
1136
+ loadFont(oConfig.metadata);
1137
+ }
1138
+ }
1139
+ };
1140
+
1141
+ // helper functions
1142
+ function makeChar(code) {
1143
+ return String.fromCharCode(typeof code === 'number' ? code : parseInt(code, 16));
1144
+ }
1145
+
1146
+ return _IconRegistry;
1147
+
1148
+ });