@openui5/sap.ui.core 1.92.0 → 1.95.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/{.eslintrc → .eslintrc.json} +1 -2
  2. package/.reuse/dep5 +1 -6
  3. package/THIRDPARTY.txt +4 -10
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +9 -2
  6. package/src/jquery.sap.properties.js +1 -1
  7. package/src/jquery.sap.resources.js +1 -1
  8. package/src/jquery.sap.script.js +1 -1
  9. package/src/jquery.sap.storage.js +7 -4
  10. package/src/jquery.sap.stubs.js +2 -1
  11. package/src/jquery.sap.trace.js +2 -1
  12. package/src/sap/base/i18n/ResourceBundle.js +8 -4
  13. package/src/sap/base/strings/whitespaceReplacer.js +52 -0
  14. package/src/sap/base/util/Properties.js +4 -1
  15. package/src/sap/base/util/isEmptyObject.js +1 -2
  16. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  17. package/src/sap/base/util/restricted/_castArray.js +1 -1
  18. package/src/sap/base/util/restricted/_compact.js +1 -1
  19. package/src/sap/base/util/restricted/_curry.js +1 -1
  20. package/src/sap/base/util/restricted/_debounce.js +1 -1
  21. package/src/sap/base/util/restricted/_difference.js +1 -1
  22. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  23. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  25. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  26. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  27. package/src/sap/base/util/restricted/_flatten.js +1 -1
  28. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  29. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  30. package/src/sap/base/util/restricted/_intersection.js +1 -1
  31. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  32. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  34. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  35. package/src/sap/base/util/restricted/_isNil.js +1 -1
  36. package/src/sap/base/util/restricted/_max.js +1 -1
  37. package/src/sap/base/util/restricted/_merge.js +1 -1
  38. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  39. package/src/sap/base/util/restricted/_min.js +1 -1
  40. package/src/sap/base/util/restricted/_omit.js +1 -1
  41. package/src/sap/base/util/restricted/_pick.js +1 -1
  42. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  43. package/src/sap/base/util/restricted/_throttle.js +1 -1
  44. package/src/sap/base/util/restricted/_toArray.js +1 -1
  45. package/src/sap/base/util/restricted/_union.js +1 -1
  46. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  47. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  48. package/src/sap/base/util/restricted/_uniq.js +1 -1
  49. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  50. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  51. package/src/sap/base/util/restricted/_without.js +1 -1
  52. package/src/sap/base/util/restricted/_xor.js +1 -1
  53. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  54. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  55. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  56. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  57. package/src/sap/ui/Device.js +37 -42
  58. package/src/sap/ui/Global.js +6 -6
  59. package/src/sap/ui/VersionInfo.js +1 -0
  60. package/src/sap/ui/base/DataType.js +14 -7
  61. package/src/sap/ui/base/Event.js +1 -1
  62. package/src/sap/ui/base/EventProvider.js +1 -1
  63. package/src/sap/ui/base/ExpressionParser.js +9 -6
  64. package/src/sap/ui/base/Interface.js +3 -49
  65. package/src/sap/ui/base/ManagedObject.js +131 -24
  66. package/src/sap/ui/base/ManagedObjectMetadata.js +13 -4
  67. package/src/sap/ui/base/Metadata.js +1 -1
  68. package/src/sap/ui/base/Object.js +49 -4
  69. package/src/sap/ui/base/ObjectPool.js +1 -1
  70. package/src/sap/ui/base/syncXHRFix.js +2 -1
  71. package/src/sap/ui/core/.library +5 -5
  72. package/src/sap/ui/core/AppCacheBuster.js +4 -4
  73. package/src/sap/ui/core/BusyIndicator.js +1 -11
  74. package/src/sap/ui/core/BusyIndicatorUtils.js +4 -1
  75. package/src/sap/ui/core/Component.js +441 -179
  76. package/src/sap/ui/core/ComponentContainer.js +16 -6
  77. package/src/sap/ui/core/ComponentMetadata.js +14 -3
  78. package/src/sap/ui/core/ComponentSupport.js +1 -1
  79. package/src/sap/ui/core/Configuration.js +64 -32
  80. package/src/sap/ui/core/Control.js +1 -1
  81. package/src/sap/ui/core/Core.js +57 -40
  82. package/src/sap/ui/core/CustomData.js +1 -1
  83. package/src/sap/ui/core/CustomizingConfiguration.js +35 -260
  84. package/src/sap/ui/core/DeclarativeSupport.js +3 -2
  85. package/src/sap/ui/core/Element.js +1 -1
  86. package/src/sap/ui/core/ElementMetadata.js +4 -2
  87. package/src/sap/ui/core/EnabledPropagator.js +91 -73
  88. package/src/sap/ui/core/EventBus.js +1 -1
  89. package/src/sap/ui/core/ExtensionPoint.js +7 -14
  90. package/src/sap/ui/core/Fragment.js +30 -32
  91. package/src/sap/ui/core/HTML.js +1 -1
  92. package/src/sap/ui/core/History.js +1 -1
  93. package/src/sap/ui/core/Icon.js +5 -5
  94. package/src/sap/ui/core/IconPool.js +15 -1097
  95. package/src/sap/ui/core/IconRenderer.js +2 -2
  96. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  97. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  98. package/src/sap/ui/core/InvisibleMessage.js +9 -1
  99. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  100. package/src/sap/ui/core/InvisibleText.js +1 -1
  101. package/src/sap/ui/core/Item.js +1 -1
  102. package/src/sap/ui/core/LabelEnablement.js +1 -1
  103. package/src/sap/ui/core/LayoutData.js +1 -1
  104. package/src/sap/ui/core/ListItem.js +1 -1
  105. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  106. package/src/sap/ui/core/Locale.js +26 -4
  107. package/src/sap/ui/core/LocaleData.js +1 -1
  108. package/src/sap/ui/core/Manifest.js +124 -126
  109. package/src/sap/ui/core/Message.js +1 -1
  110. package/src/sap/ui/core/Patcher.js +53 -80
  111. package/src/sap/ui/core/Placeholder.js +25 -11
  112. package/src/sap/ui/core/Popup.js +29 -5
  113. package/src/sap/ui/core/RenderManager.js +41 -24
  114. package/src/sap/ui/core/Renderer.js +13 -3
  115. package/src/sap/ui/core/ResizeHandler.js +1 -1
  116. package/src/sap/ui/core/ScrollBar.js +2 -2
  117. package/src/sap/ui/core/SeparatorItem.js +1 -1
  118. package/src/sap/ui/core/ShortcutHintsMixin.js +14 -7
  119. package/src/sap/ui/core/ThemeCheck.js +13 -61
  120. package/src/sap/ui/core/Title.js +1 -1
  121. package/src/sap/ui/core/TooltipBase.js +1 -1
  122. package/src/sap/ui/core/UIArea.js +5 -2
  123. package/src/sap/ui/core/UIComponent.js +81 -40
  124. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  125. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  126. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  127. package/src/sap/ui/core/XMLComposite.js +1 -1
  128. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  129. package/src/sap/ui/core/XMLTemplateProcessor.js +5 -5
  130. package/src/sap/ui/core/_IconRegistry.js +1215 -0
  131. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  132. package/src/sap/ui/core/delegate/ScrollEnablement.js +6 -3
  133. package/src/sap/ui/core/dnd/DragDropBase.js +2 -9
  134. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  135. package/src/sap/ui/core/dnd/DragInfo.js +41 -1
  136. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  137. package/src/sap/ui/core/format/DateFormat.js +2 -0
  138. package/src/sap/ui/core/format/NumberFormat.js +2 -0
  139. package/src/sap/ui/core/hyphenation/Hyphenation.js +73 -221
  140. package/src/sap/ui/core/hyphenation/HyphenationTestingWords.js +11 -10
  141. package/src/sap/ui/core/library.js +3 -3
  142. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  143. package/src/sap/ui/core/message/Message.js +1 -1
  144. package/src/sap/ui/core/message/MessageManager.js +13 -13
  145. package/src/sap/ui/core/message/MessageParser.js +1 -1
  146. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  147. package/src/sap/ui/core/messagebundle_de.properties +1 -1
  148. package/src/sap/ui/core/messagebundle_fr.properties +1 -1
  149. package/src/sap/ui/core/messagebundle_it.properties +1 -1
  150. package/src/sap/ui/core/messagebundle_pl.properties +1 -1
  151. package/src/sap/ui/core/messagebundle_th.properties +2 -2
  152. package/src/sap/ui/core/mvc/Controller.js +166 -9
  153. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +30 -32
  154. package/src/sap/ui/core/mvc/ControllerMetadata.js +18 -18
  155. package/src/sap/ui/core/mvc/HTMLView.js +4 -2
  156. package/src/sap/ui/core/mvc/JSONView.js +8 -6
  157. package/src/sap/ui/core/mvc/JSView.js +5 -3
  158. package/src/sap/ui/core/mvc/TemplateView.js +2 -2
  159. package/src/sap/ui/core/mvc/View.js +73 -89
  160. package/src/sap/ui/core/mvc/ViewType.js +2 -0
  161. package/src/sap/ui/core/mvc/XMLView.js +14 -10
  162. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  163. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  164. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  165. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  166. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  167. package/src/sap/ui/core/routing/History.js +36 -18
  168. package/src/sap/ui/core/routing/Route.js +10 -1
  169. package/src/sap/ui/core/routing/Router.js +8 -5
  170. package/src/sap/ui/core/routing/Target.js +13 -0
  171. package/src/sap/ui/core/routing/TargetCache.js +1 -1
  172. package/src/sap/ui/core/routing/Targets.js +39 -2
  173. package/src/sap/ui/core/routing/async/Route.js +7 -4
  174. package/src/sap/ui/core/routing/async/Target.js +383 -262
  175. package/src/sap/ui/core/routing/sync/Target.js +15 -0
  176. package/src/sap/ui/core/rules/App.support.js +35 -1
  177. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  178. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  179. package/src/sap/ui/core/service/Service.js +1 -1
  180. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  181. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  182. package/src/sap/ui/core/support/BootSupportTool.js +11 -0
  183. package/src/sap/ui/core/support/InteractionTree.css +4 -0
  184. package/src/sap/ui/core/support/Plugin.js +1 -1
  185. package/src/sap/ui/core/support/Support.js +1 -1
  186. package/src/sap/ui/core/support/ViewInfo.css +599 -0
  187. package/src/sap/ui/core/support/controls/InteractionTree.js +352 -222
  188. package/src/sap/ui/core/support/controls/ObjectViewer.js +8 -50
  189. package/src/sap/ui/core/support/controls/TimelineOverview.js +49 -24
  190. package/src/sap/ui/core/support/controls/TreeViewer.js +12 -58
  191. package/src/sap/ui/core/support/plugins/ControlTree.js +23 -26
  192. package/src/sap/ui/core/support/plugins/Debugging.js +9 -11
  193. package/src/sap/ui/core/support/plugins/Interaction.js +2 -2
  194. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  195. package/src/sap/ui/core/support/plugins/Performance.js +147 -75
  196. package/src/sap/ui/core/support/plugins/Selector.js +19 -24
  197. package/src/sap/ui/core/support/plugins/TechInfo.js +5 -5
  198. package/src/sap/ui/core/support/plugins/Trace.js +95 -32
  199. package/src/sap/ui/core/support/plugins/ViewInfo.js +9 -73
  200. package/src/sap/ui/core/support/support.css +109 -14
  201. package/src/sap/ui/core/support/support.html +6 -2
  202. package/src/sap/ui/core/support/techinfo/TechnicalInfo.fragment.xml +1 -0
  203. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +149 -72
  204. package/src/sap/ui/core/support/trace/E2eTraceLib.js +3 -3
  205. package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +5 -0
  206. package/src/sap/ui/core/themes/base/base.less +27 -25
  207. package/src/sap/ui/core/themes/base/shared.less +1 -0
  208. package/src/sap/ui/core/theming/Parameters.js +225 -61
  209. package/src/sap/ui/core/theming/ThemeHelper.js +94 -0
  210. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  211. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  212. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  213. package/src/sap/ui/core/tmpl/Template.js +11 -28
  214. package/src/sap/ui/core/tmpl/TemplateControl.js +4 -4
  215. package/src/sap/ui/core/tmpl/_parsePath.js +35 -0
  216. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  217. package/src/sap/ui/core/util/DraftEnabledMockServer.js +9 -4
  218. package/src/sap/ui/core/util/Export.js +1 -1
  219. package/src/sap/ui/core/util/ExportCell.js +1 -1
  220. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  221. package/src/sap/ui/core/util/ExportRow.js +1 -1
  222. package/src/sap/ui/core/util/ExportType.js +1 -1
  223. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  224. package/src/sap/ui/core/util/File.js +1 -1
  225. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  226. package/src/sap/ui/core/util/MockServer.js +24 -5
  227. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +3 -2
  228. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  229. package/src/sap/ui/core/util/XMLPreprocessor.js +11 -12
  230. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +154 -63
  231. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +171 -152
  232. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +419 -291
  233. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  234. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  235. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  236. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  237. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  238. package/src/sap/ui/core/util/serializer/delegate/HTML.js +2 -2
  239. package/src/sap/ui/core/util/serializer/delegate/XML.js +2 -2
  240. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  241. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  242. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  243. package/src/sap/ui/debug/ControlTree.js +10 -4
  244. package/src/sap/ui/debug/DebugEnv.js +3 -4
  245. package/src/sap/ui/debug/PropertyList.css +55 -0
  246. package/src/sap/ui/debug/PropertyList.js +111 -182
  247. package/src/sap/ui/events/jquery/EventSimulation.js +7 -6
  248. package/src/sap/ui/events/jquery/EventTriggerHook.js +1 -1
  249. package/src/sap/ui/model/ClientModel.js +1 -1
  250. package/src/sap/ui/model/ClientPropertyBinding.js +3 -1
  251. package/src/sap/ui/model/ClientTreeBinding.js +14 -8
  252. package/src/sap/ui/model/CompositeDataState.js +1 -1
  253. package/src/sap/ui/model/CompositeType.js +1 -1
  254. package/src/sap/ui/model/Context.js +31 -11
  255. package/src/sap/ui/model/DataState.js +1 -1
  256. package/src/sap/ui/model/ListBinding.js +19 -0
  257. package/src/sap/ui/model/MetaModel.js +1 -1
  258. package/src/sap/ui/model/Model.js +3 -3
  259. package/src/sap/ui/model/SelectionModel.js +5 -1
  260. package/src/sap/ui/model/SimpleType.js +1 -1
  261. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  262. package/src/sap/ui/model/Type.js +1 -1
  263. package/src/sap/ui/model/analytics/AnalyticalBinding.js +14 -9
  264. package/src/sap/ui/model/analytics/odata4analytics.js +31 -23
  265. package/src/sap/ui/model/base/ManagedObjectModel.js +13 -1
  266. package/src/sap/ui/model/json/JSONModel.js +4 -2
  267. package/src/sap/ui/model/message/MessageModel.js +4 -2
  268. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  269. package/src/sap/ui/model/odata/ODataListBinding.js +1 -0
  270. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  271. package/src/sap/ui/model/odata/ODataMetaModel.js +5 -2
  272. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  273. package/src/sap/ui/model/odata/ODataModel.js +7 -6
  274. package/src/sap/ui/model/odata/ODataUtils.js +31 -10
  275. package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +30 -27
  276. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  277. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  278. package/src/sap/ui/model/odata/type/Currency.js +7 -2
  279. package/src/sap/ui/model/odata/type/Date.js +1 -1
  280. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  281. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  282. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  283. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  284. package/src/sap/ui/model/odata/type/Double.js +1 -1
  285. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  286. package/src/sap/ui/model/odata/type/Int.js +1 -1
  287. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  288. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  289. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  290. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  291. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  292. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  293. package/src/sap/ui/model/odata/type/Single.js +1 -1
  294. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  295. package/src/sap/ui/model/odata/type/String.js +3 -1
  296. package/src/sap/ui/model/odata/type/Time.js +1 -1
  297. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  298. package/src/sap/ui/model/odata/type/Unit.js +7 -2
  299. package/src/sap/ui/model/odata/type/UnitMixin.js +20 -7
  300. package/src/sap/ui/model/odata/v2/Context.js +187 -0
  301. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +2 -2
  302. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +55 -51
  303. package/src/sap/ui/model/odata/v2/ODataListBinding.js +42 -106
  304. package/src/sap/ui/model/odata/v2/ODataModel.js +251 -159
  305. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +163 -136
  306. package/src/sap/ui/model/odata/v4/Context.js +6 -3
  307. package/src/sap/ui/model/odata/v4/ODataBinding.js +3 -3
  308. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +97 -25
  309. package/src/sap/ui/model/odata/v4/ODataListBinding.js +112 -24
  310. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +15 -12
  311. package/src/sap/ui/model/odata/v4/ODataModel.js +85 -77
  312. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +25 -15
  313. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +21 -12
  314. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +10 -3
  315. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +13 -4
  316. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -1
  317. package/src/sap/ui/model/odata/v4/lib/_Cache.js +28 -17
  318. package/src/sap/ui/model/odata/v4/lib/_Helper.js +47 -30
  319. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +55 -19
  320. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +2 -2
  321. package/src/sap/ui/model/resource/ResourceModel.js +5 -2
  322. package/src/sap/ui/model/type/Boolean.js +1 -1
  323. package/src/sap/ui/model/type/Currency.js +1 -1
  324. package/src/sap/ui/model/type/Date.js +1 -1
  325. package/src/sap/ui/model/type/DateInterval.js +1 -1
  326. package/src/sap/ui/model/type/DateTime.js +1 -1
  327. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  328. package/src/sap/ui/model/type/FileSize.js +1 -1
  329. package/src/sap/ui/model/type/Float.js +1 -1
  330. package/src/sap/ui/model/type/Integer.js +1 -1
  331. package/src/sap/ui/model/type/String.js +1 -1
  332. package/src/sap/ui/model/type/Time.js +1 -1
  333. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  334. package/src/sap/ui/model/type/Unit.js +1 -1
  335. package/src/sap/ui/model/xml/XMLModel.js +4 -2
  336. package/src/sap/ui/performance/Measurement.js +1 -1
  337. package/src/sap/ui/performance/trace/FESR.js +2 -1
  338. package/src/sap/ui/performance/trace/Interaction.js +42 -25
  339. package/src/sap/ui/performance/trace/initTraces.js +1 -1
  340. package/src/sap/ui/qunit/QUnitUtils.js +1 -1
  341. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  342. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  343. package/src/sap/ui/security/FrameOptions.js +2 -1
  344. package/src/sap/ui/test/Opa5.js +1 -1
  345. package/src/sap/ui/test/OpaBuilder.js +1 -0
  346. package/src/sap/ui/test/TestUtils.js +28 -34
  347. package/src/sap/ui/test/actions/Drag.js +6 -2
  348. package/src/sap/ui/test/actions/Drop.js +6 -2
  349. package/src/sap/ui/test/actions/EnterText.js +6 -0
  350. package/src/sap/ui/test/actions/Press.js +6 -0
  351. package/src/sap/ui/test/actions/Scroll.js +6 -0
  352. package/src/sap/ui/test/autowaiter/_resourceWaiter.js +4 -4
  353. package/src/sap/ui/test/launchers/componentLauncher.js +1 -4
  354. package/src/sap/ui/test/matchers/I18NText.js +29 -11
  355. package/src/sap/ui/test/opaQunit.js +11 -9
  356. package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +4 -4
  357. package/src/sap/ui/thirdparty/caja-html-sanitizer.js +1 -1
  358. package/src/sap/ui/thirdparty/crossroads.js +16 -6
  359. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly.js +1196 -0
  360. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly_Loader.js +797 -0
  361. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.asm.js +108 -127
  362. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.wasm +0 -0
  363. package/src/sap/ui/thirdparty/hyphenopoly/patterns/bg.hpb +0 -0
  364. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ca.hpb +0 -0
  365. package/src/sap/ui/thirdparty/hyphenopoly/patterns/da.hpb +0 -0
  366. package/src/sap/ui/thirdparty/hyphenopoly/patterns/de.hpb +0 -0
  367. package/src/sap/ui/thirdparty/hyphenopoly/patterns/el-monoton.hpb +0 -0
  368. package/src/sap/ui/thirdparty/hyphenopoly/patterns/en-us.hpb +0 -0
  369. package/src/sap/ui/thirdparty/hyphenopoly/patterns/es.hpb +0 -0
  370. package/src/sap/ui/thirdparty/hyphenopoly/patterns/et.hpb +0 -0
  371. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fi.hpb +0 -0
  372. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fr.hpb +0 -0
  373. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hi.hpb +0 -0
  374. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hr.hpb +0 -0
  375. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hu.hpb +0 -0
  376. package/src/sap/ui/thirdparty/hyphenopoly/patterns/it.hpb +0 -0
  377. package/src/sap/ui/thirdparty/hyphenopoly/patterns/lt.hpb +0 -0
  378. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nb-no.hpb +0 -0
  379. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nl.hpb +0 -0
  380. package/src/sap/ui/thirdparty/hyphenopoly/patterns/pt.hpb +0 -0
  381. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ru.hpb +0 -0
  382. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sl.hpb +0 -0
  383. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sv.hpb +0 -0
  384. package/src/sap/ui/thirdparty/hyphenopoly/patterns/th.hpb +0 -0
  385. package/src/sap/ui/thirdparty/hyphenopoly/patterns/tr.hpb +0 -0
  386. package/src/sap/ui/thirdparty/hyphenopoly/patterns/uk.hpb +0 -0
  387. package/src/sap/ui/util/Storage.js +1 -1
  388. package/src/sap/ui/util/isCrossOriginURL.js +16 -6
  389. package/src/sap-ui-core-nojQuery.js +1 -1
  390. package/src/sap-ui-core.js +1 -1
  391. package/src/sap-ui-debug.js +3 -17
  392. package/src/ui5loader.js +5 -2
  393. package/src/sap/ui/core/support/plugins/MessageTest.js +0 -96
  394. package/src/sap/ui/thirdparty/hyphenopoly/hyphenopoly.bundle.js +0 -860
@@ -0,0 +1,1215 @@
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
+ }
713
+ };
714
+
715
+ var oCoreResourceBundle;
716
+
717
+ // Lazy load core resource bundle
718
+ function getCoreResourceBundle() {
719
+ if (!oCoreResourceBundle) {
720
+ oCoreResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.ui.core");
721
+ }
722
+ return oCoreResourceBundle;
723
+ }
724
+
725
+ /**
726
+ * The IconPool is a static class for retrieving or registering icons.
727
+ * It also provides helping methods for easier consumption of icons.
728
+ * There are already icons registered in IconPool, please use the Demo App named
729
+ * "Icon Explorer" to find the name of the icon.
730
+ *
731
+ * In order to use the icon inside an existing control, please call
732
+ * {@link sap.ui.core.IconPool.getIconURI} and assign the URI to the control's property
733
+ * which supports icons.
734
+ * If you want to support both, icons and standard images in your own control, please use
735
+ * the static method {@link sap.ui.core.IconPool.createControlByURI} to either create an Icon in
736
+ * case the first argument is an icon-URL or another control which you define by
737
+ * providing it as the second argument.
738
+ *
739
+ * @namespace
740
+ * @public
741
+ * @alias sap.ui.core.IconPool
742
+ */
743
+ var _IconRegistry = {
744
+ sapIconFontFamily: SAP_ICON_FONT_FAMILY
745
+ };
746
+
747
+
748
+ _IconRegistry.get = function() {
749
+ return mRegistry;
750
+ };
751
+
752
+ _IconRegistry.getFontRegistry = function() {
753
+ return mFontRegistry;
754
+ };
755
+
756
+ /**
757
+ * Register an additional icon to the sap.ui.core.IconPool.
758
+ *
759
+ * @param {string} iconName the name of the icon.
760
+ * @param {string} collectionName the name of icon collection. The built in icons are with empty collectionName, so if additional icons need to be registered in IconPool, the collectionName can't be empty.
761
+ * @param {object} iconInfo the icon info which contains the following properties:
762
+ * @param {string} iconInfo.fontFamily is the name of the font when importing the font using @font-face in CSS
763
+ * @param {string|string[]} iconInfo.content is the special hexadecimal code without the prefix, for example "e000" or several of them
764
+ * @param {boolean} [iconInfo.overWrite=false] indicates if already registered icons should be overwritten when the same name and collection are given. The built in icons can never be overwritten.
765
+ * @param {boolean} [iconInfo.suppressMirroring=false] indicates whether this icon should NOT be mirrored in RTL (right to left) mode.
766
+ * @param {module:sap/base/i18n/ResourceBundle} [iconInfo.resourceBundle] ResourceBundle to be used for translation. Key format: "Icon.<iconName>".
767
+ *
768
+ * @return {object} the info object of the registered icon which has the name, collection, uri, fontFamily, content and suppressMirroring properties.
769
+ * @static
770
+ * @public
771
+ */
772
+ _IconRegistry.addIcon = function(iconName, collectionName, iconInfo) {
773
+ // OLD API Compatibility fontFamily, content, overWrite, suppressMirroring
774
+ if (typeof iconInfo === "string") {
775
+ iconInfo = {
776
+ fontFamily: arguments[2],
777
+ content: arguments[3],
778
+ overWrite: !!arguments[4],
779
+ suppressMirroring: !!arguments[5]
780
+ };
781
+ }
782
+
783
+ // if collectionName isn't a string, convert it to string
784
+ if (typeof collectionName !== "string") {
785
+ collectionName = String(collectionName);
786
+ }
787
+
788
+ // normalize "undefined" back to undefined because the default
789
+ // icon collection should have name undefined
790
+ collectionName = collectionName === 'undefined' ? undefined : collectionName;
791
+
792
+ if (!mRegistry[collectionName]) {
793
+ mRegistry[collectionName] = {};
794
+ }
795
+
796
+ var collection = mRegistry[collectionName],
797
+ icon = collection[iconName],
798
+ parts, sContent, sText, sKey;
799
+
800
+ if (icon) {
801
+ if (collectionName === undefined) {
802
+ Log.warning("Icon with name '" + iconName + "' in built-in collection already exists and can not be overwritten.", "sap.ui.core.IconPool");
803
+ return;
804
+ } else if (!iconInfo.overWrite) {
805
+ Log.warning("Icon with name '" + iconName + "' in collection '" + collectionName + "' already exists. Specify 'iconInfo.overWrite' in order to overwrite.", "sap.ui.core.IconPool");
806
+ return;
807
+ }
808
+ }
809
+
810
+ parts = {
811
+ protocol: ICON_PROTOCOL,
812
+ hostname: collectionName || iconName,
813
+ path: collectionName ? iconName : undefined
814
+ };
815
+
816
+ if (Array.isArray(iconInfo.content)) {
817
+ sContent = iconInfo.content.map(makeChar).join('');
818
+ } else {
819
+ sContent = makeChar(iconInfo.content);
820
+ }
821
+
822
+ if (iconInfo.resourceBundle instanceof ResourceBundle) {
823
+ sKey = "Icon." + iconName;
824
+ if (iconInfo.resourceBundle.hasText(sKey)) {
825
+ sText = iconInfo.resourceBundle.getText(sKey);
826
+ }
827
+ }
828
+
829
+ icon = collection[iconName] = {
830
+ name: iconName,
831
+ collection: collectionName,
832
+ uri: URI.build(parts),
833
+ fontFamily: iconInfo.fontFamily,
834
+ content: sContent,
835
+ text: sText || '',
836
+ suppressMirroring: iconInfo.suppressMirroring,
837
+ //keep compatibility with old name
838
+ skipMirroring: iconInfo.suppressMirroring
839
+ };
840
+
841
+ return icon;
842
+ };
843
+
844
+ /**
845
+ * Returns the URI of the icon in the pool which has the given <code>iconName</code> and <code>collectionName</code>.
846
+ *
847
+ * @param {string} iconName Name of the icon, must not be empty
848
+ * @param {string} [collectionName] Name of the icon collection; to access built-in icons, omit the collection name
849
+ * @return {string} URI of the icon or <code>undefined</code> if the icon can't be found in the IconPool
850
+ * @static
851
+ * @public
852
+ */
853
+ _IconRegistry.getIconURI = function (iconName, collectionName) {
854
+ var icon = this.getIconInfo(iconName, collectionName);
855
+ return icon && icon.uri;
856
+ };
857
+
858
+ /**
859
+ * Returns an info object for the icon with the given <code>iconName</code> and <code>collectionName</code>.
860
+ *
861
+ * Instead of giving name and collection, a complete icon-URI can be provided as <code>iconName</code>.
862
+ * The method will determine name and collection from the URI, see {@link #.isIconURI IconPool.isIconURI}
863
+ * for details.
864
+ *
865
+ * The returned info object has the following properties:
866
+ * <ul>
867
+ * <li><code>string: name</code> Name of the icon</li>
868
+ * <li><code>string: collection</code> Name of the collection that contains the icon or <code>undefined</code> in case of the default collection</li>
869
+ * <li><code>string: uri</code> Icon URI that identifies the icon</li>
870
+ * <li><code>string: fontFamily</code> CSS font family to use for this icon</li>
871
+ * <li><code>string: content</code> Character sequence that represents the icon in the icon font</li>
872
+ * <li><code>string: text</code> Alternative text describing the icon (optional, might be empty)</li>
873
+ * <li><code>boolean: suppressMirroring</code> Whether the icon needs no mirroring in right-to-left mode</li>
874
+ * </ul>
875
+ *
876
+ * @param {string} iconName Name of the icon, or a complete icon-URI with icon collection and icon name;
877
+ * must not be empty
878
+ * @param {string} [collectionName] Name of the icon collection; to access built-in icons,
879
+ * omit the collection name
880
+ * @param {string} [loadingMode="sync"] The approach for loading the icon info, if it is not already available:
881
+ * sync - font metadata is loaded synchronously and the icon info is returned immediately
882
+ * async - a promise is returned that returns the icon info when the font metadata is loaded
883
+ * mixed - until the font metadata is loaded a promise is returned, afterwards the icon info
884
+ * @return {object|Promise|undefined} Info object or Promise for the icon depending on the loadingMode
885
+ * or <code>undefined</code> when the icon can't be found or no icon name was given.
886
+ * @static
887
+ * @public
888
+ */
889
+ _IconRegistry.getIconInfo = function (iconName, collectionName, loadingMode) {
890
+ var parts,
891
+ info,
892
+ async,
893
+ oLoaded,
894
+ nameIsURI = _IconRegistry.isIconURI(iconName);
895
+
896
+ if (!iconName) {
897
+ return;
898
+ }
899
+
900
+ // handle optional parameters
901
+ if (!loadingMode && nameIsURI) {
902
+ loadingMode = collectionName;
903
+ }
904
+ loadingMode = loadingMode || "sync";
905
+ async = (loadingMode === "async" || loadingMode === "mixed");
906
+
907
+ // retrieves the icon info from the internal registry
908
+ function getInfo() {
909
+ var collection = mRegistry[collectionName];
910
+ var info = collection && collection[iconName];
911
+
912
+ // convert raw data lazily to the icon info
913
+ if (typeof info === 'number') {
914
+ mRegistry[collectionName][iconName] = undefined; // avoid duplicate icon warning
915
+ info = _IconRegistry.addIcon(iconName, collectionName, {
916
+ fontFamily: mFontRegistry[collectionName].config.fontFamily,
917
+ content: info & 0xFFFF,
918
+ suppressMirroring: !!(info & 0x10000),
919
+ resourceBundle: getCoreResourceBundle()
920
+ });
921
+ }
922
+
923
+ return info;
924
+ }
925
+
926
+ // parse icon URI
927
+ if (nameIsURI) {
928
+ parts = URI.parse(iconName);
929
+
930
+ if (parts.path.length === 1) {
931
+ collectionName = undefined;
932
+ iconName = parts.hostname;
933
+ } else {
934
+ collectionName = parts.hostname;
935
+ iconName = parts.path.slice(1);
936
+ }
937
+
938
+ if (!iconName) {
939
+ return;
940
+ }
941
+ }
942
+
943
+ // if collectionName isn't a string, convert it to string
944
+ if (typeof collectionName !== "string") {
945
+ collectionName = String(collectionName);
946
+ }
947
+
948
+ // normalize "undefined" back to undefined because the default
949
+ // icon collection should have name undefined
950
+ collectionName = collectionName === 'undefined' ? undefined : collectionName;
951
+
952
+ // fetch the info from the registry
953
+ info = getInfo();
954
+
955
+ // load icon metadata if not available (except for default collection)
956
+ if (info === undefined && collectionName !== undefined) {
957
+ oLoaded = _IconRegistry._loadFontMetadata(collectionName, async);
958
+ }
959
+ if (async) {
960
+ if (oLoaded) {
961
+ // wait for the icon metadata to be loaded
962
+ return oLoaded.then(function () {
963
+ info = getInfo();
964
+ if (!info) {
965
+ Log.warning("Icon info for icon '" + iconName + "' in collection '" + collectionName + "' could not be fetched");
966
+ }
967
+ return info;
968
+ });
969
+ } else if (loadingMode === "async") {
970
+ return Promise.resolve(info);
971
+ } else {
972
+ info = getInfo();
973
+ }
974
+ } else {
975
+ // refresh info if needed and return it
976
+ info = getInfo();
977
+ }
978
+
979
+ // show a warning when the icon could not be found
980
+ if (!info) {
981
+ Log.warning("Icon info for icon '" + iconName + "' in collection '" + collectionName + "' could not be fetched");
982
+ }
983
+ return info;
984
+ };
985
+
986
+
987
+ /**
988
+ * Returns whether the given <code>uri</code> is an icon URI.
989
+ *
990
+ * A string is an icon URI when it can be parsed as a URI and when it has one of the two forms
991
+ * <ul>
992
+ * <li>sap-icon://collectionName/iconName</li>
993
+ * <li>sap-icon://iconName</li>
994
+ * </ul>
995
+ * where collectionName and iconName must be non-empty.
996
+ *
997
+ * @param {string} uri The URI to check
998
+ * @return {boolean} Whether the URI matches the icon URI format
999
+ * @static
1000
+ * @public
1001
+ */
1002
+ _IconRegistry.isIconURI = function (uri) {
1003
+ if (!uri) {
1004
+ return false;
1005
+ }
1006
+ var parts = URI.parse(uri);
1007
+
1008
+ return parts.protocol === ICON_PROTOCOL && !!parts.hostname;
1009
+ };
1010
+
1011
+ /**
1012
+ * Returns all names of registered collections in IconPool
1013
+ *
1014
+ * @return {array} An array contains all of the registered collections' names.
1015
+ * @static
1016
+ * @public
1017
+ */
1018
+ _IconRegistry.getIconCollectionNames = function () {
1019
+ return Object.keys(mRegistry);
1020
+ };
1021
+
1022
+ /**
1023
+ * Returns all name of icons that are registered under the given collection.
1024
+ *
1025
+ * @param {string} collectionName the name of collection where icon names are retrieved.
1026
+ * @return {array} An array contains all of the registered icon names under the given collection.
1027
+ * @static
1028
+ * @public
1029
+ */
1030
+ _IconRegistry.getIconNames = function (collectionName) {
1031
+ var collection = mRegistry[collectionName];
1032
+ return collection ? Object.keys(collection) : [];
1033
+ };
1034
+
1035
+ _IconRegistry.insertFontFaceStyle = function (sFontFace, sPath, sCollectionName) {
1036
+ var oFontFace,
1037
+ mFontRegistry = _IconRegistry.getFontRegistry();
1038
+
1039
+ function convertUrl(sUrl) {
1040
+ // AppCacheBuster createds the '_covnertUrl' function when it's active. Call the function to include the
1041
+ // CacheBuster token into the url.
1042
+ return _IconRegistry._convertUrl ? _IconRegistry._convertUrl(sUrl) : sUrl;
1043
+ }
1044
+
1045
+ if (arguments.length === 0 || sFontFace === SAP_ICON_FONT_FAMILY) {
1046
+ // The font-face declaration for the predefined icon font is done in SAP-icons.css which is imported to the
1047
+ // library.source.less. Therefore it's not needed to use inline css to declare it.
1048
+ 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");
1049
+ return;
1050
+ }
1051
+
1052
+ if (sFontFace && sPath === undefined) {
1053
+ Log.error("IconPool.insertFontFaceStyle must be called with at least two parameters!");
1054
+ return;
1055
+ }
1056
+
1057
+ if (sCollectionName === undefined) {
1058
+ // when the collection name isn't given
1059
+ // set the collection name with sFontFace only when the icon font
1060
+ // isn't the standard icon font. The collectionName of the standard icon font
1061
+ // should always be set with undefined
1062
+ sCollectionName = sFontFace;
1063
+ }
1064
+
1065
+ // check if the font has not been registered yet
1066
+ if (!mFontRegistry[sCollectionName]) {
1067
+ Log.error("Icon font '" + sCollectionName + "' has not been registered yet.");
1068
+ return;
1069
+ }
1070
+ // check if font face has already been inserted
1071
+ if (mFontRegistry[sCollectionName].inserted) {
1072
+ Log.info("The font face style of icon font '" + sCollectionName + "' was already inserted.");
1073
+ return;
1074
+ }
1075
+
1076
+ oFontFace = new FontFace(sFontFace,
1077
+ "url(" + convertUrl(sPath + sFontFace + ".woff2") + ") format('woff2')," +
1078
+ "local(" + sFontFace + ")",
1079
+ {
1080
+ weight: "normal",
1081
+ style: "normal"
1082
+ }
1083
+ );
1084
+
1085
+ document.fonts.add(oFontFace);
1086
+ oFontFace.load();
1087
+
1088
+ mFontRegistry[sCollectionName].inserted = true;
1089
+ mFontRegistry[sCollectionName].fontFace = sFontFace;
1090
+ };
1091
+
1092
+ _IconRegistry._loadFontMetadata = function (collectionName, async) {
1093
+ var oConfig,
1094
+ mRegistry = _IconRegistry.get(),
1095
+ mFontRegistry = _IconRegistry.getFontRegistry();
1096
+
1097
+ if (mFontRegistry[collectionName]) {
1098
+ // early out for subsequent tries of loading a font that failed or is finished loading
1099
+ if (typeof mFontRegistry[collectionName].metadataLoaded === "boolean") {
1100
+ return;
1101
+ }
1102
+
1103
+ if (async && mFontRegistry[collectionName].metadataLoaded instanceof Promise) {
1104
+ return mFontRegistry[collectionName].metadataLoaded;
1105
+ }
1106
+ // fetch font config
1107
+ oConfig = mFontRegistry[collectionName].config;
1108
+ } else {
1109
+ // only display an error when the collection has not been manually registered by calling addIcon
1110
+ if (!mRegistry[collectionName]) {
1111
+ Log.error("The font configuration for collection '" + collectionName + "' is not registered");
1112
+ }
1113
+ // register an entry indicating the font loading failed
1114
+ mFontRegistry[collectionName] = {
1115
+ metadataLoaded: false
1116
+ };
1117
+ }
1118
+
1119
+ // add icons to registry and insert the font style
1120
+ function loadFont(oFontMetadata) {
1121
+ for (var sKey in oFontMetadata) {
1122
+ oFontMetadata[sKey] = parseInt(oFontMetadata[sKey], 16);
1123
+ }
1124
+ mRegistry[collectionName] = oFontMetadata;
1125
+ _IconRegistry.insertFontFaceStyle(oConfig.fontFamily, oConfig.fontURI, collectionName);
1126
+ mFontRegistry[collectionName].metadataLoaded = true;
1127
+ }
1128
+
1129
+ if (oConfig) {
1130
+ // search for a metadata file with the font family name in the same folder
1131
+ if (oConfig.metadataURI === undefined) {
1132
+ oConfig.metadataURI = oConfig.fontURI + oConfig.fontFamily + ".json";
1133
+ }
1134
+ if (async && !oConfig.metadata) {
1135
+ // while loading is pending return the promise
1136
+ if (mFontRegistry[collectionName].metadataLoaded instanceof Promise) {
1137
+ return mFontRegistry[collectionName].metadataLoaded;
1138
+ }
1139
+ // the first time create a metadataLoaded promise
1140
+ var oPromise = new Promise(function (fnResolve) {
1141
+ if (mRegistry[collectionName] === undefined) {
1142
+ // store fnResolve to call it from outside the Promise
1143
+ mFontRegistry[collectionName].metadataLoadedResolve = fnResolve;
1144
+ // load the metadata asynchronously and save the XHR object
1145
+ mFontRegistry[collectionName].metadataXhr = jQuery.ajax(oConfig.metadataURI, {
1146
+ dataType: "json",
1147
+ success: function (oJSON) {
1148
+ loadFont(oJSON);
1149
+ delete mFontRegistry[collectionName].metadataXhr;
1150
+ delete mFontRegistry[collectionName].metadataLoadedResolve;
1151
+ fnResolve();
1152
+ },
1153
+ error: function (jqXHR, sStatus) {
1154
+ if (sStatus !== "abort") { // log an error if it isn't aborted
1155
+ Log.error("An error occurred loading the font metadata for collection '" + collectionName + "'");
1156
+ mFontRegistry[collectionName].metadataLoaded = false;
1157
+ fnResolve();
1158
+ }
1159
+ }
1160
+ });
1161
+ }
1162
+ });
1163
+
1164
+ mFontRegistry[collectionName].metadataLoaded = oPromise;
1165
+ return oPromise;
1166
+ } else if (oConfig.metadataURI) {
1167
+ if (mFontRegistry[collectionName].metadataXhr) { // there is an async request ongoing
1168
+ // the async request is aborted before the sync request is sent
1169
+ mFontRegistry[collectionName].metadataXhr.abort("Replaced by sync request");
1170
+ mFontRegistry[collectionName].metadataXhr = null;
1171
+ }
1172
+ Log.warning("Synchronous loading of font meta data in IconPool, due to .getIconInfo() call" +
1173
+ " for '" + collectionName + "'. Use loading mode 'async' to avoid this call.", "SyncXHR", null, function() {
1174
+ return {
1175
+ type: "SyncXHR",
1176
+ name: "IconPool"
1177
+ };
1178
+ });
1179
+ // load the metadata synchronously
1180
+ jQuery.ajax(oConfig.metadataURI, {
1181
+ dataType: "json",
1182
+ async: false,
1183
+ success: function (oJSON) {
1184
+ loadFont(oJSON);
1185
+ if (mFontRegistry[collectionName].metadataLoadedResolve) {
1186
+ // resolve the Promise for the async request
1187
+ mFontRegistry[collectionName].metadataLoadedResolve();
1188
+ delete mFontRegistry[collectionName].metadataLoadedResolve;
1189
+ }
1190
+ },
1191
+ error: function () {
1192
+ if (mFontRegistry[collectionName].metadataLoadedResolve) {
1193
+ // resolve the Promise for the async request
1194
+ mFontRegistry[collectionName].metadataLoadedResolve();
1195
+ delete mFontRegistry[collectionName].metadataLoadedResolve;
1196
+ }
1197
+ Log.error("An error occurred loading the font metadata for collection '" + collectionName + "'");
1198
+ mFontRegistry[collectionName].metadataLoaded = false;
1199
+ }
1200
+ });
1201
+ } else {
1202
+ // pass on the configuration object
1203
+ loadFont(oConfig.metadata);
1204
+ }
1205
+ }
1206
+ };
1207
+
1208
+ // helper functions
1209
+ function makeChar(code) {
1210
+ return String.fromCharCode(typeof code === 'number' ? code : parseInt(code, 16));
1211
+ }
1212
+
1213
+ return _IconRegistry;
1214
+
1215
+ });