@openui5/sap.ui.core 1.99.1 → 1.102.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 (469) hide show
  1. package/.eslintrc.json +27 -5
  2. package/THIRDPARTY.txt +5 -5
  3. package/package.json +1 -1
  4. package/src/jquery.sap.global.js +6 -3
  5. package/src/jquery.sap.properties.js +1 -1
  6. package/src/jquery.sap.resources.js +1 -1
  7. package/src/jquery.sap.script.js +1 -1
  8. package/src/jquery.sap.storage.js +3 -3
  9. package/src/sap/base/Log.js +1 -1
  10. package/src/sap/base/assert.js +1 -1
  11. package/src/sap/base/strings/whitespaceReplacer.js +1 -1
  12. package/src/sap/base/util/LoaderExtensions.js +1 -10
  13. package/src/sap/base/util/UriParameters.js +2 -2
  14. package/src/sap/base/util/restricted/_CancelablePromise.js +2 -2
  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 +3 -3
  56. package/src/sap/ui/Global.js +4 -4
  57. package/src/sap/ui/base/Event.js +1 -1
  58. package/src/sap/ui/base/EventProvider.js +2 -2
  59. package/src/sap/ui/base/ExpressionParser.js +1 -1
  60. package/src/sap/ui/base/Interface.js +1 -1
  61. package/src/sap/ui/base/ManagedObject.js +1 -1
  62. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  63. package/src/sap/ui/base/ManagedObjectObserver.js +2 -0
  64. package/src/sap/ui/base/ManagedObjectRegistry.js +10 -5
  65. package/src/sap/ui/base/Metadata.js +1 -1
  66. package/src/sap/ui/base/Object.js +1 -1
  67. package/src/sap/ui/base/ObjectPool.js +1 -1
  68. package/src/sap/ui/core/.library +2 -1
  69. package/src/sap/ui/core/BusyIndicator.js +1 -1
  70. package/src/sap/ui/core/CommandExecution.js +15 -12
  71. package/src/sap/ui/core/Component.js +50 -27
  72. package/src/sap/ui/core/ComponentContainer.js +1 -1
  73. package/src/sap/ui/core/ComponentMetadata.js +28 -13
  74. package/src/sap/ui/core/ComponentSupport.js +1 -1
  75. package/src/sap/ui/core/Configuration.js +25 -9
  76. package/src/sap/ui/core/Control.js +2 -3
  77. package/src/sap/ui/core/Core.js +121 -36
  78. package/src/sap/ui/core/CustomData.js +1 -1
  79. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  80. package/src/sap/ui/core/Element.js +1 -1
  81. package/src/sap/ui/core/ElementMetadata.js +1 -1
  82. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  83. package/src/sap/ui/core/EventBus.js +1 -1
  84. package/src/sap/ui/core/ExtensionPoint.js +6 -1
  85. package/src/sap/ui/core/FocusHandler.js +2 -3
  86. package/src/sap/ui/core/Fragment.js +1 -1
  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 +17 -3
  90. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  91. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  92. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  93. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  94. package/src/sap/ui/core/InvisibleText.js +1 -1
  95. package/src/sap/ui/core/Item.js +1 -1
  96. package/src/sap/ui/core/LabelEnablement.js +1 -1
  97. package/src/sap/ui/core/LayoutData.js +1 -1
  98. package/src/sap/ui/core/ListItem.js +1 -1
  99. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  100. package/src/sap/ui/core/Locale.js +1 -1
  101. package/src/sap/ui/core/LocaleData.js +159 -9
  102. package/src/sap/ui/core/Manifest.js +5 -3
  103. package/src/sap/ui/core/Message.js +1 -1
  104. package/src/sap/ui/core/Patcher.js +6 -4
  105. package/src/sap/ui/core/Popup.js +21 -20
  106. package/src/sap/ui/core/RenderManager.js +1 -1
  107. package/src/sap/ui/core/Renderer.js +1 -1
  108. package/src/sap/ui/core/ResizeHandler.js +1 -1
  109. package/src/sap/ui/core/ScrollBar.js +21 -15
  110. package/src/sap/ui/core/SeparatorItem.js +1 -1
  111. package/src/sap/ui/core/ShortcutHintsMixin.js +2 -4
  112. package/src/sap/ui/core/Title.js +1 -1
  113. package/src/sap/ui/core/TooltipBase.js +1 -1
  114. package/src/sap/ui/core/UIArea.js +3 -5
  115. package/src/sap/ui/core/UIComponent.js +1 -1
  116. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  117. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  118. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  119. package/src/sap/ui/core/XMLComposite.js +1 -1
  120. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  121. package/src/sap/ui/core/XMLTemplateProcessor.js +521 -395
  122. package/src/sap/ui/core/_IconRegistry.js +3 -2
  123. package/src/sap/ui/core/cache/CacheManager.js +28 -1
  124. package/src/sap/ui/core/cache/CacheManagerNOP.js +3 -0
  125. package/src/sap/ui/core/cache/LRUPersistentCache.js +76 -4
  126. package/src/sap/ui/core/cldr/ar.json +469 -1
  127. package/src/sap/ui/core/cldr/ar_EG.json +469 -1
  128. package/src/sap/ui/core/cldr/ar_SA.json +469 -1
  129. package/src/sap/ui/core/cldr/bg.json +469 -1
  130. package/src/sap/ui/core/cldr/ca.json +469 -1
  131. package/src/sap/ui/core/cldr/cs.json +469 -1
  132. package/src/sap/ui/core/cldr/cy.json +469 -1
  133. package/src/sap/ui/core/cldr/da.json +469 -1
  134. package/src/sap/ui/core/cldr/de.json +469 -1
  135. package/src/sap/ui/core/cldr/de_AT.json +469 -1
  136. package/src/sap/ui/core/cldr/de_CH.json +469 -1
  137. package/src/sap/ui/core/cldr/el.json +469 -1
  138. package/src/sap/ui/core/cldr/el_CY.json +469 -1
  139. package/src/sap/ui/core/cldr/en.json +469 -1
  140. package/src/sap/ui/core/cldr/en_AU.json +470 -2
  141. package/src/sap/ui/core/cldr/en_GB.json +469 -1
  142. package/src/sap/ui/core/cldr/en_HK.json +469 -1
  143. package/src/sap/ui/core/cldr/en_IE.json +469 -1
  144. package/src/sap/ui/core/cldr/en_IN.json +469 -1
  145. package/src/sap/ui/core/cldr/en_NZ.json +469 -1
  146. package/src/sap/ui/core/cldr/en_PG.json +469 -1
  147. package/src/sap/ui/core/cldr/en_SG.json +469 -1
  148. package/src/sap/ui/core/cldr/en_ZA.json +469 -1
  149. package/src/sap/ui/core/cldr/es.json +469 -1
  150. package/src/sap/ui/core/cldr/es_AR.json +469 -1
  151. package/src/sap/ui/core/cldr/es_BO.json +469 -1
  152. package/src/sap/ui/core/cldr/es_CL.json +469 -1
  153. package/src/sap/ui/core/cldr/es_CO.json +469 -1
  154. package/src/sap/ui/core/cldr/es_MX.json +469 -1
  155. package/src/sap/ui/core/cldr/es_PE.json +469 -1
  156. package/src/sap/ui/core/cldr/es_UY.json +469 -1
  157. package/src/sap/ui/core/cldr/es_VE.json +469 -1
  158. package/src/sap/ui/core/cldr/et.json +469 -1
  159. package/src/sap/ui/core/cldr/fa.json +469 -1
  160. package/src/sap/ui/core/cldr/fi.json +469 -1
  161. package/src/sap/ui/core/cldr/fr.json +469 -1
  162. package/src/sap/ui/core/cldr/fr_BE.json +469 -1
  163. package/src/sap/ui/core/cldr/fr_CA.json +469 -1
  164. package/src/sap/ui/core/cldr/fr_CH.json +469 -1
  165. package/src/sap/ui/core/cldr/fr_LU.json +469 -1
  166. package/src/sap/ui/core/cldr/he.json +469 -1
  167. package/src/sap/ui/core/cldr/hi.json +469 -1
  168. package/src/sap/ui/core/cldr/hr.json +469 -1
  169. package/src/sap/ui/core/cldr/hu.json +469 -1
  170. package/src/sap/ui/core/cldr/id.json +469 -1
  171. package/src/sap/ui/core/cldr/it.json +469 -1
  172. package/src/sap/ui/core/cldr/it_CH.json +469 -1
  173. package/src/sap/ui/core/cldr/ja.json +469 -1
  174. package/src/sap/ui/core/cldr/kk.json +469 -1
  175. package/src/sap/ui/core/cldr/ko.json +469 -1
  176. package/src/sap/ui/core/cldr/lt.json +469 -1
  177. package/src/sap/ui/core/cldr/lv.json +469 -1
  178. package/src/sap/ui/core/cldr/ms.json +469 -1
  179. package/src/sap/ui/core/cldr/nb.json +469 -1
  180. package/src/sap/ui/core/cldr/nl.json +469 -1
  181. package/src/sap/ui/core/cldr/nl_BE.json +469 -1
  182. package/src/sap/ui/core/cldr/pl.json +469 -1
  183. package/src/sap/ui/core/cldr/pt.json +469 -1
  184. package/src/sap/ui/core/cldr/pt_PT.json +469 -1
  185. package/src/sap/ui/core/cldr/ro.json +469 -1
  186. package/src/sap/ui/core/cldr/ru.json +469 -1
  187. package/src/sap/ui/core/cldr/ru_UA.json +469 -1
  188. package/src/sap/ui/core/cldr/sk.json +469 -1
  189. package/src/sap/ui/core/cldr/sl.json +469 -1
  190. package/src/sap/ui/core/cldr/sr.json +469 -1
  191. package/src/sap/ui/core/cldr/sr_Latn.json +469 -1
  192. package/src/sap/ui/core/cldr/sv.json +469 -1
  193. package/src/sap/ui/core/cldr/th.json +469 -1
  194. package/src/sap/ui/core/cldr/tr.json +469 -1
  195. package/src/sap/ui/core/cldr/uk.json +469 -1
  196. package/src/sap/ui/core/cldr/vi.json +469 -1
  197. package/src/sap/ui/core/cldr/zh_CN.json +470 -2
  198. package/src/sap/ui/core/cldr/zh_HK.json +470 -2
  199. package/src/sap/ui/core/cldr/zh_SG.json +470 -2
  200. package/src/sap/ui/core/cldr/zh_TW.json +469 -1
  201. package/src/sap/ui/core/date/Buddhist.js +3 -3
  202. package/src/sap/ui/core/date/Japanese.js +3 -3
  203. package/src/sap/ui/core/date/UniversalDate.js +10 -0
  204. package/src/sap/ui/core/date/UniversalDateUtils.js +49 -49
  205. package/src/sap/ui/core/delegate/ItemNavigation.js +13 -14
  206. package/src/sap/ui/core/delegate/ScrollEnablement.js +11 -7
  207. package/src/sap/ui/core/dnd/DragAndDrop.js +27 -22
  208. package/src/sap/ui/core/dnd/DragDropBase.js +1 -2
  209. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  210. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  211. package/src/sap/ui/core/dnd/DropInfo.js +3 -3
  212. package/src/sap/ui/core/format/DateFormat.js +285 -151
  213. package/src/sap/ui/core/format/DateFormatTimezoneDisplay.js +4 -0
  214. package/src/sap/ui/core/format/NumberFormat.js +331 -179
  215. package/src/sap/ui/core/format/TimezoneUtil.js +50 -18
  216. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  217. package/src/sap/ui/core/library.js +219 -188
  218. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  219. package/src/sap/ui/core/message/Message.js +1 -1
  220. package/src/sap/ui/core/message/MessageManager.js +1 -1
  221. package/src/sap/ui/core/message/MessageParser.js +1 -1
  222. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  223. package/src/sap/ui/core/messagebundle.properties +0 -2
  224. package/src/sap/ui/core/messagebundle_ar.properties +0 -1
  225. package/src/sap/ui/core/messagebundle_bg.properties +0 -1
  226. package/src/sap/ui/core/messagebundle_ca.properties +0 -1
  227. package/src/sap/ui/core/messagebundle_cs.properties +0 -1
  228. package/src/sap/ui/core/messagebundle_cy.properties +0 -1
  229. package/src/sap/ui/core/messagebundle_da.properties +0 -1
  230. package/src/sap/ui/core/messagebundle_de.properties +0 -1
  231. package/src/sap/ui/core/messagebundle_el.properties +0 -1
  232. package/src/sap/ui/core/messagebundle_en.properties +0 -1
  233. package/src/sap/ui/core/messagebundle_en_GB.properties +0 -1
  234. package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +0 -1
  235. package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +0 -1
  236. package/src/sap/ui/core/messagebundle_es.properties +0 -1
  237. package/src/sap/ui/core/messagebundle_es_MX.properties +0 -1
  238. package/src/sap/ui/core/messagebundle_et.properties +0 -1
  239. package/src/sap/ui/core/messagebundle_fi.properties +0 -1
  240. package/src/sap/ui/core/messagebundle_fr.properties +0 -1
  241. package/src/sap/ui/core/messagebundle_fr_CA.properties +0 -1
  242. package/src/sap/ui/core/messagebundle_hi.properties +0 -1
  243. package/src/sap/ui/core/messagebundle_hr.properties +0 -1
  244. package/src/sap/ui/core/messagebundle_hu.properties +0 -1
  245. package/src/sap/ui/core/messagebundle_id.properties +0 -1
  246. package/src/sap/ui/core/messagebundle_it.properties +0 -1
  247. package/src/sap/ui/core/messagebundle_iw.properties +0 -1
  248. package/src/sap/ui/core/messagebundle_ja.properties +0 -1
  249. package/src/sap/ui/core/messagebundle_kk.properties +0 -1
  250. package/src/sap/ui/core/messagebundle_ko.properties +1 -2
  251. package/src/sap/ui/core/messagebundle_lt.properties +0 -1
  252. package/src/sap/ui/core/messagebundle_lv.properties +0 -1
  253. package/src/sap/ui/core/messagebundle_ms.properties +0 -1
  254. package/src/sap/ui/core/messagebundle_nl.properties +0 -1
  255. package/src/sap/ui/core/messagebundle_no.properties +0 -1
  256. package/src/sap/ui/core/messagebundle_pl.properties +0 -1
  257. package/src/sap/ui/core/messagebundle_pt.properties +0 -1
  258. package/src/sap/ui/core/messagebundle_pt_PT.properties +0 -1
  259. package/src/sap/ui/core/messagebundle_ro.properties +0 -1
  260. package/src/sap/ui/core/messagebundle_ru.properties +0 -1
  261. package/src/sap/ui/core/messagebundle_sh.properties +0 -1
  262. package/src/sap/ui/core/messagebundle_sk.properties +0 -1
  263. package/src/sap/ui/core/messagebundle_sl.properties +0 -1
  264. package/src/sap/ui/core/messagebundle_sv.properties +0 -1
  265. package/src/sap/ui/core/messagebundle_th.properties +0 -1
  266. package/src/sap/ui/core/messagebundle_tr.properties +0 -1
  267. package/src/sap/ui/core/messagebundle_uk.properties +0 -1
  268. package/src/sap/ui/core/messagebundle_vi.properties +0 -1
  269. package/src/sap/ui/core/messagebundle_zh_CN.properties +0 -1
  270. package/src/sap/ui/core/messagebundle_zh_TW.properties +0 -1
  271. package/src/sap/ui/core/mvc/Controller.js +1 -1
  272. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +1 -1
  273. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  274. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  275. package/src/sap/ui/core/mvc/JSView.js +2 -2
  276. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  277. package/src/sap/ui/core/mvc/View.js +2 -1
  278. package/src/sap/ui/core/mvc/XMLView.js +25 -21
  279. package/src/sap/ui/core/mvc/XMLViewRenderer.js +81 -59
  280. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  281. package/src/sap/ui/core/plugin/LessSupport.js +3 -3
  282. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  283. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  284. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  285. package/src/sap/ui/core/routing/Router.js +1 -1
  286. package/src/sap/ui/core/rules/App.support.js +14 -9
  287. package/src/sap/ui/core/rules/Config.support.js +12 -12
  288. package/src/sap/ui/core/rules/Misc.support.js +8 -3
  289. package/src/sap/ui/core/rules/Model.support.js +8 -8
  290. package/src/sap/ui/core/rules/Rendering.support.js +1 -1
  291. package/src/sap/ui/core/rules/Theming.support.js +4 -4
  292. package/src/sap/ui/core/rules/View.support.js +9 -9
  293. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  294. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  295. package/src/sap/ui/core/service/Service.js +1 -1
  296. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  297. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  298. package/src/sap/ui/core/support/Plugin.js +29 -1
  299. package/src/sap/ui/core/support/Support.js +4 -4
  300. package/src/sap/ui/core/support/controls/InteractionSlider.js +395 -407
  301. package/src/sap/ui/core/support/plugins/Breakpoint.js +5 -5
  302. package/src/sap/ui/core/support/plugins/ControlTree.js +440 -349
  303. package/src/sap/ui/core/support/plugins/Debugging.js +153 -129
  304. package/src/sap/ui/core/support/plugins/Interaction.js +71 -85
  305. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  306. package/src/sap/ui/core/support/plugins/Performance.js +10 -13
  307. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  308. package/src/sap/ui/core/support/plugins/TechInfo.js +5 -3
  309. package/src/sap/ui/core/support/plugins/Trace.js +7 -7
  310. package/src/sap/ui/core/support/plugins/ViewInfo.js +91 -43
  311. package/src/sap/ui/core/support/support.css +23 -23
  312. package/src/sap/ui/core/support/support.html +5 -7
  313. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +1 -1
  314. package/src/sap/ui/core/themes/base/CommandShortcutHints.less +1 -1
  315. package/src/sap/ui/core/themes/base/DragAndDrop.less +3 -3
  316. package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +15 -1
  317. package/src/sap/ui/core/themes/base/base.less +1524 -54
  318. package/src/sap/ui/core/themes/base/global.less +171 -13
  319. package/src/sap/ui/core/themes/base/shared.less +1 -0
  320. package/src/sap/ui/core/themes/sap_hcb/global.less +166 -7
  321. package/src/sap/ui/core/theming/Parameters.js +1 -1
  322. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  323. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  324. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  325. package/src/sap/ui/core/tmpl/Template.js +1 -1
  326. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  327. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  328. package/src/sap/ui/core/util/Export.js +1 -1
  329. package/src/sap/ui/core/util/ExportCell.js +1 -1
  330. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  331. package/src/sap/ui/core/util/ExportRow.js +1 -1
  332. package/src/sap/ui/core/util/ExportType.js +1 -1
  333. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  334. package/src/sap/ui/core/util/File.js +1 -1
  335. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  336. package/src/sap/ui/core/util/MockServer.js +4 -3
  337. package/src/sap/ui/core/util/PasteHelper.js +2 -2
  338. package/src/sap/ui/core/util/XMLPreprocessor.js +1 -0
  339. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  340. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  341. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  342. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  343. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  344. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  345. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  346. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  347. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  348. package/src/sap/ui/core/ws/WebSocket.js +7 -8
  349. package/src/sap/ui/debug/ControlTree.js +1 -1
  350. package/src/sap/ui/debug/DebugEnv.js +1 -1
  351. package/src/sap/ui/debug/LogViewer.js +2 -2
  352. package/src/sap/ui/debug/PropertyList.js +1 -1
  353. package/src/sap/ui/model/ClientListBinding.js +127 -21
  354. package/src/sap/ui/model/ClientModel.js +1 -1
  355. package/src/sap/ui/model/CompositeBinding.js +3 -0
  356. package/src/sap/ui/model/CompositeDataState.js +1 -1
  357. package/src/sap/ui/model/CompositeType.js +13 -1
  358. package/src/sap/ui/model/DataState.js +1 -1
  359. package/src/sap/ui/model/ListBinding.js +32 -13
  360. package/src/sap/ui/model/MetaModel.js +1 -1
  361. package/src/sap/ui/model/Model.js +10 -7
  362. package/src/sap/ui/model/SelectionModel.js +1 -1
  363. package/src/sap/ui/model/SimpleType.js +1 -1
  364. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  365. package/src/sap/ui/model/Type.js +1 -1
  366. package/src/sap/ui/model/_Helper.js +26 -0
  367. package/src/sap/ui/model/analytics/AnalyticalBinding.js +29 -13
  368. package/src/sap/ui/model/analytics/ODataModelAdapter.js +2 -1
  369. package/src/sap/ui/model/base/ManagedObjectModel.js +8 -6
  370. package/src/sap/ui/model/json/JSONListBinding.js +0 -58
  371. package/src/sap/ui/model/json/JSONModel.js +15 -8
  372. package/src/sap/ui/model/message/MessageListBinding.js +0 -42
  373. package/src/sap/ui/model/message/MessageModel.js +1 -1
  374. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  375. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  376. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  377. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  378. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  379. package/src/sap/ui/model/odata/ODataPropertyBinding.js +3 -1
  380. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +5 -4
  381. package/src/sap/ui/model/odata/ODataUtils.js +7 -9
  382. package/src/sap/ui/model/odata/OperationMode.js +6 -0
  383. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  384. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  385. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  386. package/src/sap/ui/model/odata/type/Date.js +1 -1
  387. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  388. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  389. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  390. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +78 -68
  391. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  392. package/src/sap/ui/model/odata/type/Double.js +1 -1
  393. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  394. package/src/sap/ui/model/odata/type/Int.js +1 -1
  395. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  396. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  397. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  398. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  399. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  400. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  401. package/src/sap/ui/model/odata/type/Single.js +1 -1
  402. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  403. package/src/sap/ui/model/odata/type/String.js +1 -1
  404. package/src/sap/ui/model/odata/type/Time.js +1 -1
  405. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  406. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  407. package/src/sap/ui/model/odata/type/UnitMixin.js +1 -1
  408. package/src/sap/ui/model/odata/v2/Context.js +78 -5
  409. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  410. package/src/sap/ui/model/odata/v2/ODataListBinding.js +280 -76
  411. package/src/sap/ui/model/odata/v2/ODataModel.js +342 -96
  412. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +8 -4
  413. package/src/sap/ui/model/odata/v4/Context.js +52 -25
  414. package/src/sap/ui/model/odata/v4/ODataBinding.js +50 -32
  415. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +35 -6
  416. package/src/sap/ui/model/odata/v4/ODataListBinding.js +302 -110
  417. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +13 -6
  418. package/src/sap/ui/model/odata/v4/ODataModel.js +297 -30
  419. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +25 -57
  420. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +3 -2
  421. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +59 -5
  422. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +15 -0
  423. package/src/sap/ui/model/odata/v4/lib/_Cache.js +309 -130
  424. package/src/sap/ui/model/odata/v4/lib/_ConcatHelper.js +5 -13
  425. package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +16 -0
  426. package/src/sap/ui/model/odata/v4/lib/_Helper.js +114 -41
  427. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +270 -36
  428. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  429. package/src/sap/ui/model/type/Boolean.js +1 -1
  430. package/src/sap/ui/model/type/Currency.js +1 -1
  431. package/src/sap/ui/model/type/Date.js +1 -1
  432. package/src/sap/ui/model/type/DateInterval.js +1 -1
  433. package/src/sap/ui/model/type/DateTime.js +1 -1
  434. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  435. package/src/sap/ui/model/type/FileSize.js +1 -1
  436. package/src/sap/ui/model/type/Float.js +1 -1
  437. package/src/sap/ui/model/type/Integer.js +1 -1
  438. package/src/sap/ui/model/type/String.js +1 -1
  439. package/src/sap/ui/model/type/Time.js +1 -1
  440. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  441. package/src/sap/ui/model/type/Unit.js +1 -1
  442. package/src/sap/ui/model/xml/XMLListBinding.js +0 -53
  443. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  444. package/src/sap/ui/performance/trace/FESR.js +1 -1
  445. package/src/sap/ui/performance/trace/FESRHelper.js +72 -0
  446. package/src/sap/ui/performance/trace/Interaction.js +6 -2
  447. package/src/sap/ui/qunit/qunit-2-css.js +4 -4
  448. package/src/sap/ui/qunit/qunit-css.js +4 -4
  449. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  450. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  451. package/src/sap/ui/test/BranchTracking.js +1 -0
  452. package/src/sap/ui/test/Opa5.js +9 -5
  453. package/src/sap/ui/test/OpaBuilder.js +7 -7
  454. package/src/sap/ui/test/TestUtils.js +11 -0
  455. package/src/sap/ui/test/_UsageReport.js +1 -1
  456. package/src/sap/ui/test/actions/Action.js +3 -3
  457. package/src/sap/ui/test/actions/Press.js +1 -1
  458. package/src/sap/ui/test/generic/GenericTestCollection.js +176 -0
  459. package/src/sap/ui/test/generic/TestBase.js +151 -0
  460. package/src/sap/ui/test/generic/Utils.js +284 -0
  461. package/src/sap/ui/test/gherkin/opa5TestHarness.js +14 -5
  462. package/src/sap/ui/test/opaQunit.js +11 -10
  463. package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +9 -8
  464. package/src/sap/ui/test/selectors/_ControlSelectorValidator.js +1 -1
  465. package/src/sap/ui/test/starter/_setupAndStart.js +4 -0
  466. package/src/sap/ui/thirdparty/jszip.js +0 -1
  467. package/src/sap/ui/util/Storage.js +1 -1
  468. package/src/ui5loader.js +8 -4
  469. package/ui5.yaml +1 -1
@@ -11,17 +11,20 @@ sap.ui.define([
11
11
  'sap/ui/core/util/File',
12
12
  'sap/ui/thirdparty/jszip',
13
13
  'sap/ui/base/DataType',
14
+ 'sap/ui/core/Component',
14
15
  'sap/ui/core/Element',
15
16
  'sap/ui/core/ElementMetadata',
16
17
  'sap/ui/core/UIArea',
17
18
  'sap/ui/core/mvc/View',
18
19
  'sap/ui/core/mvc/XMLView',
20
+ 'sap/ui/core/tmpl/Template',
19
21
  'sap/ui/model/Binding',
20
22
  'sap/ui/model/CompositeBinding',
23
+ 'sap/base/util/each',
24
+ 'sap/base/util/isEmptyObject',
21
25
  'sap/base/util/ObjectPath',
22
26
  "sap/ui/thirdparty/jquery",
23
27
  "sap/ui/events/KeyCodes",
24
- "sap/base/security/encodeXML",
25
28
  'sap/ui/core/mvc/Controller' // provides sap.ui.controller
26
29
  ], function(
27
30
  Plugin,
@@ -29,29 +32,31 @@ sap.ui.define([
29
32
  File,
30
33
  JSZip,
31
34
  DataType,
35
+ Component,
32
36
  Element,
33
37
  ElementMetadata,
34
38
  UIArea,
35
39
  View,
36
40
  XMLView,
41
+ Template,
37
42
  Binding,
38
43
  CompositeBinding,
44
+ each,
45
+ isEmptyObject,
39
46
  ObjectPath,
40
- jQueryDOM,
41
- KeyCodes,
42
- encodeXML
47
+ $,
48
+ KeyCodes
43
49
  ) {
44
50
  "use strict";
45
51
 
46
52
  /*global alert */
47
53
 
48
- var $ = jQuery;
49
54
  /**
50
55
  * Creates an instance of sap.ui.core.support.plugins.ControlTree.
51
56
  * @class This class represents the ControlTree plugin for the support tool functionality of UI5. This class is internal and all its functions must not be used by an application.
52
57
  *
53
58
  * @extends sap.ui.core.support.Plugin
54
- * @version 1.99.1
59
+ * @version 1.102.0
55
60
  * @private
56
61
  * @alias sap.ui.core.support.plugins.ControlTree
57
62
  */
@@ -130,24 +135,24 @@ sap.ui.define([
130
135
 
131
136
  function initInTools(oSupportStub) {
132
137
  $(document)
133
- .on("click", "li img.sapUiControlTreeIcon", $.proxy(this._onIconClick, this))
134
- .on("click", "li.sapUiControlTreeElement div", $.proxy(this._onNodeClick, this))
135
- .on("click", "li.sapUiControlTreeLink div", $.proxy(this._onControlTreeLinkClick, this))
136
- .on("click", "#sapUiSupportControlTabProperties", $.proxy(this._onPropertiesTab, this))
137
- .on("click", "#sapUiSupportControlTabBindingInfos", $.proxy(this._onBindingInfosTab, this))
138
- .on("click", "#sapUiSupportControlTabBreakpoints", $.proxy(this._onMethodsTab, this))
139
- .on("click", "#sapUiSupportControlTabExport", $.proxy(this._onExportTab, this))
140
- .on("change", "[data-sap-ui-name]", $.proxy(this._onPropertyChange, this))
141
- .on("change", "[data-sap-ui-method]", $.proxy(this._onPropertyBreakpointChange, this))
142
- .on("keyup", '.sapUiSupportControlMethods input[type="text"]', $.proxy(this._autoComplete, this))
143
- .on("blur", '.sapUiSupportControlMethods input[type="text"]', $.proxy(this._updateSelectOptions, this))
144
- .on("change", '.sapUiSupportControlMethods select', $.proxy(this._selectOptionsChanged, this))
145
- .on("click", '#sapUiSupportControlAddBreakPoint', $.proxy(this._onAddBreakpointClicked, this))
146
- .on("click", '#sapUiSupportControlExportToXml', $.proxy(this._onExportToXmlClicked, this))
147
- .on("click", '#sapUiSupportControlExportToHtml', $.proxy(this._onExportToHtmlClicked, this))
148
- .on("click", '#sapUiSupportControlActiveBreakpoints img.remove-breakpoint', $.proxy(this._onRemoveBreakpointClicked, this))
149
- .on("click", '#sapUiSupportControlPropertiesArea a.control-tree', $.proxy(this._onNavToControl, this))
150
- .on("click", '#sapUiSupportControlPropertiesArea img.sapUiSupportRefreshBinding', $.proxy(this._onRefreshBinding, this));
138
+ .on("click", "li img.sapUiControlTreeIcon", this._onIconClick.bind(this))
139
+ .on("click", "li.sapUiControlTreeElement div", this._onNodeClick.bind(this))
140
+ .on("click", "li.sapUiControlTreeLink div", this._onControlTreeLinkClick.bind(this))
141
+ .on("click", "#sapUiSupportControlTabProperties", this._onPropertiesTab.bind(this))
142
+ .on("click", "#sapUiSupportControlTabBindingInfos", this._onBindingInfosTab.bind(this))
143
+ .on("click", "#sapUiSupportControlTabBreakpoints", this._onMethodsTab.bind(this))
144
+ .on("click", "#sapUiSupportControlTabExport", this._onExportTab.bind(this))
145
+ .on("change", "[data-sap-ui-name]", this._onPropertyChange.bind(this))
146
+ .on("change", "[data-sap-ui-method]", this._onPropertyBreakpointChange.bind(this))
147
+ .on("keyup", '.sapUiSupportControlMethods input[type="text"]', this._autoComplete.bind(this))
148
+ .on("blur", '.sapUiSupportControlMethods input[type="text"]', this._updateSelectOptions.bind(this))
149
+ .on("change", '.sapUiSupportControlMethods select', this._selectOptionsChanged.bind(this))
150
+ .on("click", '#sapUiSupportControlAddBreakPoint', this._onAddBreakpointClicked.bind(this))
151
+ .on("click", '#sapUiSupportControlExportToXml', this._onExportToXmlClicked.bind(this))
152
+ .on("click", '#sapUiSupportControlExportToHtml', this._onExportToHtmlClicked.bind(this))
153
+ .on("click", '#sapUiSupportControlActiveBreakpoints img.remove-breakpoint', this._onRemoveBreakpointClicked.bind(this))
154
+ .on("click", '#sapUiSupportControlPropertiesArea a.control-tree', this._onNavToControl.bind(this))
155
+ .on("click", '#sapUiSupportControlPropertiesArea img.sapUiSupportRefreshBinding', this._onRefreshBinding.bind(this));
151
156
 
152
157
  this.renderContentAreas();
153
158
  }
@@ -189,26 +194,24 @@ sap.ui.define([
189
194
  return s.slice(1 + s.lastIndexOf('.'));
190
195
  }
191
196
 
192
- function encode(s) {
193
- return s == null ? "" : encodeXML(String(s));
194
- }
195
-
196
197
  ControlTree.prototype.renderContentAreas = function() {
197
198
  var rm = sap.ui.getCore().createRenderManager();
198
199
 
199
- rm.write('<div class="sapUiSupportControlTreeTitle">You can find a control in this tree by clicking it in the application UI while pressing the Ctrl+Alt+Shift keys.</div>');
200
+ rm.openStart("div").class("sapUiSupportControlTreeTitle").openEnd().text("You can find a control in this tree by clicking it in the application UI while pressing the Ctrl+Alt+Shift keys.").close("div");
200
201
 
201
- rm.write('<div id="sapUiSupportControlTreeArea"><ul class="sapUiSupportControlTreeList"></ul></div>');
202
+ rm.openStart("div", "sapUiSupportControlTreeArea").openEnd();
203
+ rm.openStart("ul").class("sapUiSupportControlTreeList").openEnd().close("ul");
204
+ rm.close("div");
202
205
 
203
- rm.write('<div id="sapUiSupportControlTabs" class="sapUiSupportControlTabsHidden">');
204
- rm.write('<button id="sapUiSupportControlTabProperties" class="sapUiSupportBtn sapUiSupportTab sapUiSupportTabLeft">Properties</button>');
205
- rm.write('<button id="sapUiSupportControlTabBindingInfos" class="sapUiSupportBtn sapUiSupportTab">Binding Infos</button>');
206
- rm.write('<button id="sapUiSupportControlTabBreakpoints" class="sapUiSupportBtn sapUiSupportTab">Breakpoints</button>');
207
- rm.write('<button id="sapUiSupportControlTabExport" class="sapUiSupportBtn sapUiSupportTab sapUiSupportTabRight">Export</button>');
208
- rm.write('</div>');
206
+ rm.openStart("div", "sapUiSupportControlTabs").class("sapUiSupportControlTabsHidden").openEnd();
207
+ rm.openStart("button", "sapUiSupportControlTabProperties").class("sapUiSupportBtn").class("sapUiSupportTab").class("sapUiSupportTabLeft").openEnd().text("Properties").close("button");
208
+ rm.openStart("button", "sapUiSupportControlTabBindingInfos").class("sapUiSupportBtn").class("sapUiSupportTab").openEnd().text("Binding Infos").close("button");
209
+ rm.openStart("button", "sapUiSupportControlTabBreakpoints").class("sapUiSupportBtn").class("sapUiSupportTab").openEnd().text("Breakpoints").close("button");
210
+ rm.openStart("button", "sapUiSupportControlTabExport").class("sapUiSupportBtn").class("sapUiSupportTab").class("sapUiSupportTabRight").openEnd().text("Export").close("button");
211
+ rm.close("div");
209
212
 
210
- rm.write('<div id="sapUiSupportControlPropertiesArea"></div>');
211
- rm.flush(this.$().get(0));
213
+ rm.openStart("div", "sapUiSupportControlPropertiesArea").openEnd().close("div");
214
+ rm.flush(this.dom());
212
215
  rm.destroy();
213
216
  };
214
217
 
@@ -218,54 +221,57 @@ sap.ui.define([
218
221
 
219
222
  function renderNode (iIndex, mElement) {
220
223
  var bHasChildren = mElement.aggregation.length > 0 || mElement.association.length > 0;
221
- rm.write("<li id=\"sap-debug-controltree-" + encode(mElement.id) + "\" class=\"sapUiControlTreeElement\">");
224
+ rm.openStart("li", "sap-debug-controltree-" + mElement.id).class("sapUiControlTreeElement").openEnd();
222
225
  var sImage = bHasChildren ? "minus" : "space";
223
- rm.write("<img class=\"sapUiControlTreeIcon\" src=\"../../debug/images/" + sImage + ".gif\">");
226
+ rm.voidStart("img").class("sapUiControlTreeIcon").attr("src", "../../debug/images/" + sImage + ".gif").voidEnd();
224
227
 
225
228
  if (mElement.isAssociation) {
226
- rm.write("<img title=\"Association\" class=\"sapUiControlTreeIcon\" src=\"../../debug/images/link.gif\">");
229
+ rm.voidStart("img").attr("title", "Association").class("sapUiControlTreeIcon").attr("src", "../../debug/images/link.gif").voidEnd();
227
230
  }
228
231
 
229
232
  var sClass = basename(mElement.type);
230
233
 
231
- rm.write('<div>');
234
+ rm.openStart("div").openEnd();
232
235
 
233
- rm.write('<span class="name" title="' + encode(mElement.type) + '">' + encode(sClass) + ' - ' + encode(mElement.id) + '</span>');
234
- rm.write('<span class="sapUiSupportControlTreeBreakpointCount sapUiSupportItemHidden" title="Number of active breakpoints / methods"></span>');
236
+ rm.openStart("span").class("name").attr("title", mElement.type).openEnd().text(sClass + ' - ' + mElement.id).close("span");
237
+ rm.openStart("span").class("sapUiSupportControlTreeBreakpointCount").class("sapUiSupportItemHidden").attr("title", "Number of active breakpoints / methods").openEnd().close("span");
235
238
 
236
- rm.write('</div>');
239
+ rm.close("div");
237
240
 
238
241
  if (mElement.aggregation.length > 0) {
239
- rm.write("<ul>");
240
- $.each(mElement.aggregation, renderNode);
241
- rm.write("</ul>");
242
+ rm.openStart("ul").openEnd();
243
+ each(mElement.aggregation, renderNode);
244
+ rm.close("ul");
242
245
  }
243
246
 
244
247
  if (mElement.association.length > 0) {
245
- rm.write("<ul>");
246
- $.each(mElement.association, function(iIndex, oValue) {
248
+ rm.openStart("ul").openEnd();
249
+ each(mElement.association, function(iIndex, oValue) {
247
250
 
248
251
  if (oValue.isAssociationLink) {
249
252
  var sType = basename(oValue.type);
250
- rm.write("<li data-sap-ui-controlid=\"" + encode(oValue.id) + "\" class=\"sapUiControlTreeLink\">");
251
- rm.write("<img class=\"sapUiControlTreeIcon\" align=\"middle\" src=\"../../debug/images/space.gif\">");
252
- rm.write("<img class=\"sapUiControlTreeIcon\" align=\"middle\" src=\"../../debug/images/link.gif\">");
253
- rm.write("<div><span title=\"Association '" + encode(oValue.name) + "' to '" + encode(oValue.id) + "' with type '" + encode(oValue.type) + "'\">" +
254
- encode(sType) + " - " + encode(oValue.id) + " (" + encode(oValue.name) + ")</span></div>");
255
- rm.write("</li>");
253
+ rm.openStart("li").attr("data-sap-ui-controlid", oValue.id).class("sapUiControlTreeLink").openEnd();
254
+ rm.voidStart("img").class("sapUiControlTreeIcon").attr("align", "middle").attr("src", "../../debug/images/space.gif").voidEnd();
255
+ rm.voidStart("img").class("sapUiControlTreeIcon").attr("align", "middle").attr("src", "../../debug/images/link.gif").voidEnd();
256
+ rm.openStart("div").openEnd();
257
+ rm.openStart("span").attr("title", "Association '" + oValue.name + "' to '" + oValue.id + "' with type '" + oValue.type).openEnd();
258
+ rm.text(sType + " - " + oValue.id + " (" + oValue.name + ")");
259
+ rm.close("span");
260
+ rm.close("div");
261
+ rm.close("li");
256
262
  } else {
257
263
  renderNode(0 /* not used */, oValue);
258
264
  }
259
265
 
260
266
  });
261
- rm.write("</ul>");
267
+ rm.close("ul");
262
268
  }
263
- rm.write("</li>");
269
+ rm.close("li");
264
270
  }
265
271
 
266
- $.each(aControlTree, renderNode);
272
+ each(aControlTree, renderNode);
267
273
 
268
- rm.flush(this.$().find("#sapUiSupportControlTreeArea > ul.sapUiSupportControlTreeList").get(0));
274
+ rm.flush(this.dom("#sapUiSupportControlTreeArea > ul.sapUiSupportControlTreeList"));
269
275
  rm.destroy();
270
276
  };
271
277
 
@@ -273,122 +279,162 @@ sap.ui.define([
273
279
 
274
280
  var rm = sap.ui.getCore().createRenderManager();
275
281
 
276
- rm.write('<ul class="sapUiSupportControlTreeList" data-sap-ui-controlid="' + encode(sControlId) + '">');
277
- $.each(aControlProps, function(iIndex, oValue) {
282
+ rm.openStart("ul").class("sapUiSupportControlTreeList").attr("data-sap-ui-controlid", sControlId).openEnd();
283
+ each(aControlProps, function(iIndex, oValue) {
278
284
 
279
- rm.write("<li>");
285
+ rm.openStart("li").openEnd();
280
286
 
281
- rm.write("<span><label class='sapUiSupportLabel'>BaseType:</label> <code>" + encode(oValue.control) + "</code></span>");
287
+ rm.openStart("span").openEnd()
288
+ .openStart("label").class("sapUiSupportLabel").openEnd().text("BaseType").close("label")
289
+ .text(" ")
290
+ .openStart("code").openEnd().text(oValue.control).close("code")
291
+ .close("span");
282
292
 
283
293
  if (oValue.properties.length > 0 || oValue.aggregations.length > 0) {
284
294
 
285
- rm.write('<div class="get" title="Activate debugger for get-method">G</div><div class="set" title="Activate debugger for set-method">S</div>');
295
+ rm.openStart("div").class("get").attr("title", "Activate debugger for get-method").openEnd().text("G").close("div");
296
+ rm.openStart("div").class("set").attr("title", "Activate debugger for set-method").openEnd().text("S").close("div");
297
+
298
+ rm.openStart("div").class("sapUiSupportControlProperties").openEnd();
299
+ rm.openStart("table").openEnd();
300
+ rm.openStart("colgroup").openEnd();
301
+ rm.voidStart("col").attr("width", "50%").voidEnd();
302
+ rm.voidStart("col").attr("width", "50%").voidEnd();
303
+ rm.close("colgroup");
286
304
 
287
- rm.write("<div class=\"sapUiSupportControlProperties\"><table><colgroup><col width=\"50%\"><col width=\"50%\"></colgroup>");
305
+ each(oValue.properties, function(iIndex, oProperty) {
288
306
 
289
- $.each(oValue.properties, function(iIndex, oProperty) {
307
+ rm.openStart("tr").openEnd();
290
308
 
291
- rm.write("<tr><td>");
292
- rm.write("<label class='sapUiSupportLabel'>" + encode(oProperty.name) + ((oProperty.isBound) ?
293
- '<img title="Value is bound (see Binding Infos)" src="../../debug/images/link.gif">' : "") + "</label>");
294
- rm.write("</td><td>");
309
+ rm.openStart("td").openEnd();
310
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text(oProperty.name);
311
+ if (oProperty.isBound) {
312
+ rm.voidStart("img").attr("title", "Value is bound (see Binding Infos)").attr("src", "../../debug/images/link.gif").voidEnd();
313
+ }
314
+ rm.close("label");
315
+ rm.close("td");
316
+
317
+ rm.openStart("td").openEnd();
295
318
 
296
319
  if (oProperty.type === "boolean") {
297
320
 
298
- rm.write("<input type='checkbox' ");
299
- rm.write("data-sap-ui-name='" + encode(oProperty.name) + "' ");
321
+ rm.voidStart("input").attr("type", "checkbox");
322
+ rm.attr("data-sap-ui-name", oProperty.name);
300
323
  if (oProperty.value == true) {
301
- rm.write("checked='checked'");
324
+ rm.attr("checked", "checked");
302
325
  }
303
- rm.write(">");
326
+ rm.voidEnd();
304
327
 
305
328
  } else if (oProperty.enumValues) {
306
329
 
307
- rm.write("<div><select ");
308
- rm.write("data-sap-ui-name='" + encode(oProperty.name) + "'>");
309
- $.each(oProperty.enumValues, function(sKey, sValue) {
310
- rm.write("<option");
330
+ rm.openStart("div").openEnd();
331
+ rm.openStart("select");
332
+ rm.attr("data-sap-ui-name", oProperty.name).openEnd();
333
+ each(oProperty.enumValues, function(sKey, sValue) {
334
+ rm.openStart("option");
311
335
 
312
336
  if (sKey === oProperty.value) {
313
- rm.write(" selected");
337
+ rm.attr("selected", "selected");
314
338
  }
315
339
 
316
- rm.write(">");
317
- rm.writeEscaped("" + sKey);
318
- rm.write("</option>");
340
+ rm.openEnd();
341
+ rm.text(sKey);
342
+ rm.close("option");
319
343
  });
320
- rm.write("</select></div>");
344
+ rm.close("select");
345
+ rm.close("div");
321
346
 
322
347
  } else {
323
348
 
324
- rm.write("<div><input type='text' ");
325
- rm.write("data-sap-ui-name='" + encode(oProperty.name) + "' ");
349
+ rm.openStart("div").openEnd();
350
+ rm.voidStart("input").attr("type", "text");
351
+ rm.attr("data-sap-ui-name", oProperty.name);
326
352
  if (oProperty.value) {
327
- rm.write("value='");
328
- rm.writeEscaped("" + oProperty.value);
329
- rm.write("'");
353
+ rm.attr("value", oProperty.value);
330
354
  }
331
- rm.write("></div>");
355
+ rm.voidEnd();
356
+ rm.close("div");
332
357
 
333
358
  }
334
359
 
335
- rm.write("</td>");
360
+ rm.close("td");
336
361
 
337
- rm.write('<td><input type="checkbox" data-sap-ui-method="' + encode(oProperty._sGetter) + '" title="Activate debugger for ' + encode(oProperty._sGetter) + '"');
338
- if (oProperty.bp_sGetter) {
339
- rm.write("checked='checked'");
340
- }
341
- rm.write('></td>');
342
-
343
- rm.write('<td><input type="checkbox" data-sap-ui-method="' + encode(oProperty._sMutator) + '" title="Activate debugger for ' + encode(oProperty._sMutator) + '"');
344
- if (oProperty.bp_sMutator) {
345
- rm.write("checked='checked'");
346
- }
347
- rm.write('></td>');
362
+ rm.openStart("td").openEnd();
363
+ rm.voidStart("input")
364
+ .attr("type", "checkbox")
365
+ .attr("data-sap-ui-method", oProperty._sGetter)
366
+ .attr("title", "Activate debugger for '" + oProperty._sGetter + "'");
367
+ if (oProperty.bp_sGetter) {
368
+ rm.attr("checked", "checked");
369
+ }
370
+ rm.voidEnd();
371
+ rm.close("td");
372
+
373
+ rm.openStart("td").openEnd();
374
+ rm.voidStart("input")
375
+ .attr("type", "checkbox")
376
+ .attr("data-sap-ui-method", oProperty._sMutator)
377
+ .attr("title", "Activate debugger for '" + oProperty._sMutator + "'");
378
+ if (oProperty.bp_sMutator) {
379
+ rm.attr("checked", "checked");
380
+ }
381
+ rm.voidEnd();
382
+ rm.close("td");
348
383
 
349
- rm.write("</tr>");
384
+ rm.close("tr");
350
385
 
351
386
  });
352
387
 
353
- $.each(oValue.aggregations, function(iIndex, oAggregation) {
354
-
355
- rm.write("<tr><td>");
388
+ each(oValue.aggregations, function(iIndex, oAggregation) {
356
389
 
357
- rm.write("<label class='sapUiSupportLabel'>" + encode(oAggregation.name) + "</label>");
358
- rm.write("</td><td>");
390
+ rm.openStart("tr").openEnd();
359
391
 
360
- rm.write(encode(oAggregation.value));
392
+ rm.openStart("td").openEnd();
393
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text(oAggregation.name).close("label");
394
+ rm.close("td");
361
395
 
362
- rm.write("</td>");
396
+ rm.openStart("td").openEnd();
397
+ rm.text(oAggregation.value);
398
+ rm.close("td");
363
399
 
364
- rm.write('<td><input type="checkbox" data-sap-ui-method="' + encode(oAggregation._sGetter) + '" title="Activate debugger for ' + encode(oAggregation._sGetter) + '"');
365
- if (oAggregation.bp_sGetter) {
366
- rm.write("checked='checked'");
367
- }
368
- rm.write('></td>');
369
-
370
- rm.write('<td><input type="checkbox" data-sap-ui-method="' + encode(oAggregation._sMutator) + '" title="Activate debugger for ' + encode(oAggregation._sMutator) + '"');
371
- if (oAggregation.bp_sMutator) {
372
- rm.write("checked='checked'");
373
- }
374
- rm.write('></td>');
400
+ rm.openStart("td").openEnd();
401
+ rm.voidStart("input")
402
+ .attr("type", "checkbox")
403
+ .attr("data-sap-ui-method", oAggregation._sGetter)
404
+ .attr("title", "Activate debugger for '" + oAggregation._sGetter + "'");
405
+ if (oAggregation.bp_sGetter) {
406
+ rm.attr("checked", "checked");
407
+ }
408
+ rm.voidEnd();
409
+ rm.close("td");
410
+
411
+ rm.openStart("td").openEnd();
412
+ rm.voidStart("input")
413
+ .attr("type", "checkbox")
414
+ .attr("data-sap-ui-method", oAggregation._sMutator)
415
+ .attr("title", "Activate debugger for '" + oAggregation._sMutator + "'");
416
+ if (oAggregation.bp_sMutator) {
417
+ rm.attr("checked", "checked");
418
+ }
419
+ rm.voidEnd();
420
+ rm.close("td");
375
421
 
376
- rm.write("</tr>");
422
+ rm.close("tr");
377
423
 
378
424
  });
379
425
 
380
- rm.write("</table></div>");
426
+ rm.close("table").close("div");
381
427
 
382
428
  }
383
429
 
384
- rm.write("</li>");
430
+ rm.close("li");
385
431
 
386
432
  });
387
- rm.write("</ul>");
388
- rm.flush(this.$().find("#sapUiSupportControlPropertiesArea").get(0));
433
+ rm.close("ul");
434
+ rm.flush(this.dom("#sapUiSupportControlPropertiesArea"));
389
435
  rm.destroy();
390
436
 
391
- this.$().find("#sapUiSupportControlTabs").removeClass("sapUiSupportControlTabsHidden");
437
+ this.dom("#sapUiSupportControlTabs").classList.remove("sapUiSupportControlTabsHidden");
392
438
 
393
439
  this.selectTab(this._tab.properties);
394
440
  };
@@ -399,267 +445,307 @@ sap.ui.define([
399
445
 
400
446
  if (mBindingInfos.contexts.length > 0) {
401
447
 
402
- rm.write('<h2>Contexts</h2>');
448
+ rm.openStart("h2").openEnd().text("Contexts").close("h2");
403
449
 
404
- rm.write('<ul class="sapUiSupportControlTreeList" data-sap-ui-controlid="' + encode(sControlId) + '">');
450
+ rm.openStart("ul").class("sapUiSupportControlTreeList").attr("data-sap-ui-controlid", sControlId).openEnd();
405
451
 
406
- $.each(mBindingInfos.contexts, function(iContextIndex, oContext) {
452
+ each(mBindingInfos.contexts, function(iContextIndex, oContext) {
407
453
 
408
- rm.write('<li>');
454
+ rm.openStart("li").openEnd();
409
455
 
410
- rm.write('<span><label class="sapUiSupportLabel">Model Name: ' + encode(oContext.modelName) + '</label></span>');
456
+ rm.openStart("span").openEnd();
457
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text("Model Name: " + oContext.modelName).close("label");
458
+ rm.close("span");
411
459
 
412
- rm.write('<div class="sapUiSupportControlProperties">');
460
+ rm.openStart("div").class("sapUiSupportControlProperties").openEnd();
413
461
 
414
- rm.write('<table><colgroup><col width="15%"><col width="35%"><col width="50%"></colgroup>');
415
- rm.write('<tbody>');
462
+ rm.openStart("table").openEnd()
463
+ .openStart("colgroup").openEnd()
464
+ .voidStart("col").attr("width", "15%").voidEnd()
465
+ .voidStart("col").attr("width", "35%").voidEnd()
466
+ .voidStart("col").attr("width", "50%").voidEnd()
467
+ .close("colgroup");
468
+ rm.openStart("tbody").openEnd();
416
469
 
417
470
  // Path
418
- rm.write('<tr><td colspan="2">');
419
-
420
- rm.write('<label class="sapUiSupportLabel">Path</label>');
471
+ rm.openStart("tr").openEnd();
421
472
 
422
- rm.write('</td><td>');
473
+ rm.openStart("td").attr("colspan", "2").openEnd();
474
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text("Path").close("label");
475
+ rm.close("td");
423
476
 
424
- rm.write('<div><span');
477
+ rm.openStart("td").openEnd();
478
+ rm.openStart("div").openEnd();
479
+ rm.openStart("span");
425
480
 
426
- if (oContext.invalidPath) {
427
- rm.write(' class="sapUiSupportModelPathInvalid"');
428
- } else if (oContext.unverifiedPath) {
429
- rm.write(' class="sapUiSupportModelPathUnverified"');
430
- }
481
+ if (oContext.invalidPath) {
482
+ rm.class("sapUiSupportModelPathInvalid");
483
+ } else if (oContext.unverifiedPath) {
484
+ rm.class("sapUiSupportModelPathUnverified");
485
+ }
431
486
 
432
- rm.write('>' + encode(oContext.path));
487
+ rm.openEnd().text(oContext.path);
433
488
 
434
- if (oContext.invalidPath) {
435
- rm.write(' (invalid)');
436
- } else if (oContext.unverifiedPath) {
437
- rm.write(' (unverified)');
438
- }
489
+ if (oContext.invalidPath) {
490
+ rm.text(" (invalid)");
491
+ } else if (oContext.unverifiedPath) {
492
+ rm.text(" (unverified)");
493
+ }
439
494
 
440
- rm.write('</span></div>');
495
+ rm.close("span");
496
+ rm.close("div");
497
+ rm.close("td");
441
498
 
442
- rm.write('</td></tr>');
499
+ rm.close("tr");
443
500
 
444
501
  if (oContext.location) {
445
502
 
446
503
  // Inherited from
447
- rm.write('<tr><td colspan="2">');
448
-
449
- rm.write('<label class="sapUiSupportLabel">Inherited from</label>');
450
-
451
- rm.write('</td><td>');
452
-
453
- rm.write('<div><a class="control-tree sapUiSupportLink" title="' + encode(oContext.location.name) + '" data-sap-ui-control-id="' + encode(oContext.location.id) + '" href="#">' +
454
- encode(basename(oContext.location.name)) +
455
- ' (' + encode(oContext.location.id) + ')</a></div>');
456
-
457
- rm.write('</td></tr>');
504
+ rm.openStart("tr").openEnd();
505
+
506
+ rm.openStart("td").attr("colspan", "2").openEnd();
507
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text("Inherited from").close("label");
508
+ rm.close("td");
509
+
510
+ rm.openStart("td").openEnd();
511
+ rm.openStart("div").openEnd();
512
+ rm.openStart("a")
513
+ .class("control-tree")
514
+ .class("sapUiSupportLink")
515
+ .attr("title", oContext.location.name)
516
+ .attr("data-sap-ui-control-id", oContext.location.id)
517
+ .attr("href", "#")
518
+ .openEnd()
519
+ .text(basename(oContext.location.name))
520
+ .text(" (" + oContext.location.id + ")")
521
+ .close("a")
522
+ .close("div");
523
+ rm.close("td");
524
+
525
+ rm.close("tr");
458
526
 
459
527
  }
460
528
 
461
- rm.write('</tbody></table></div></li>');
529
+ rm.close("tbody").close("table").close("div").close("li");
462
530
 
463
531
  });
464
532
 
465
- rm.write('</ul>');
533
+ rm.close("ul");
466
534
 
467
535
  }
468
536
 
469
537
  if (mBindingInfos.bindings.length > 0) {
470
538
 
471
- rm.write('<h2>Bindings</h2>');
539
+ rm.openStart("h2").openEnd().text("Bindings").close("h2");
472
540
 
473
- rm.write('<ul class="sapUiSupportControlTreeList" data-sap-ui-controlid="' + encode(sControlId) + '">');
541
+ rm.openStart("ul").class("sapUiSupportControlTreeList").attr("data-sap-ui-controlid", sControlId).openEnd();
474
542
 
475
- $.each(mBindingInfos.bindings, function(iBindingInfoIndex, oBindingInfo) {
543
+ each(mBindingInfos.bindings, function(iBindingInfoIndex, oBindingInfo) {
476
544
 
477
- rm.write('<li data-sap-ui-binding-name="' + encode(oBindingInfo.name) + '">');
545
+ rm.openStart("li").attr("data-sap-ui-binding-name", oBindingInfo.name).openEnd();
478
546
 
479
- rm.write('<span>');
547
+ rm.openStart("span").openEnd();
548
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text(oBindingInfo.name).close("label");
549
+ rm.voidStart("img").class("sapUiSupportRefreshBinding").attr("title", "Refresh Binding").attr("src", "../../debug/images/refresh.gif").voidEnd();
550
+ rm.close("span");
480
551
 
481
- rm.write('<label class="sapUiSupportLabel">' + encode(oBindingInfo.name) + '</label>');
482
- rm.write('<img class="sapUiSupportRefreshBinding" title="Refresh Binding" src="../../debug/images/refresh.gif">');
552
+ each(oBindingInfo.bindings, function(iBindingIndex, oBinding) {
483
553
 
484
- rm.write('</span>');
554
+ rm.openStart("div").class("sapUiSupportControlProperties").openEnd();
485
555
 
486
- $.each(oBindingInfo.bindings, function(iBindingIndex, oBinding) {
487
-
488
- rm.write('<div class="sapUiSupportControlProperties">');
489
-
490
- rm.write('<table><colgroup><col width="15%"><col width="35%"><col width="50%"></colgroup>');
491
- rm.write('<tbody>');
556
+ rm.openStart("table").openEnd()
557
+ .openStart("colgroup").openEnd()
558
+ .voidStart("col").attr("width", "15%").voidEnd()
559
+ .voidStart("col").attr("width", "35%").voidEnd()
560
+ .voidStart("col").attr("width", "50%").voidEnd()
561
+ .close("colgroup");
562
+ rm.openStart("tbody").openEnd();
492
563
 
493
564
  // Path
494
- rm.write('<tr><td colspan="2">');
565
+ rm.openStart("tr").openEnd();
495
566
 
496
- rm.write('<label class="sapUiSupportLabel">Path</label>');
567
+ rm.openStart("td").attr("colspan", "2").openEnd();
568
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text("Path").close("label");
569
+ rm.close("td");
497
570
 
498
- rm.write('</td><td>');
571
+ rm.openStart("td").openEnd();
499
572
 
500
- rm.write('<div><span');
573
+ rm.openStart("div").openEnd().openStart("span");
501
574
 
502
- if (oBinding.invalidPath) {
503
- rm.write(' class="sapUiSupportModelPathInvalid"');
504
- } else if (oBinding.unverifiedPath) {
505
- rm.write(' class="sapUiSupportModelPathUnverified"');
506
- }
575
+ if (oBinding.invalidPath) {
576
+ rm.class("sapUiSupportModelPathInvalid");
577
+ } else if (oBinding.unverifiedPath) {
578
+ rm.class("sapUiSupportModelPathUnverified");
579
+ }
507
580
 
508
- rm.write('>' + encode(oBinding.path));
581
+ rm.openEnd().text(oBinding.path);
509
582
 
510
- if (oBinding.invalidPath) {
511
- rm.write(' (invalid)');
512
- } else if (oBinding.unverifiedPath) {
513
- rm.write(' (unverified)');
514
- }
583
+ if (oBinding.invalidPath) {
584
+ rm.text(' (invalid)');
585
+ } else if (oBinding.unverifiedPath) {
586
+ rm.text(' (unverified)');
587
+ }
515
588
 
516
- rm.write('</span></div>');
589
+ rm.close("span").close("div");
517
590
 
518
- rm.write('</td></tr>');
591
+ rm.close("td");
592
+ rm.close("tr");
519
593
 
520
594
  // Absolute-Path
521
- rm.write('<tr><td colspan="2">');
522
-
523
- rm.write('<label class="sapUiSupportLabel">Absolute Path</label>');
524
-
525
- rm.write('</td><td>');
526
-
527
- if (typeof oBinding.absolutePath !== 'undefined') {
528
- rm.write('<div>' + encode(oBinding.absolutePath) + '</div>');
529
- } else {
530
- rm.write('<div>No binding</div>');
531
- }
532
-
533
- rm.write('</td></tr>');
595
+ rm.openStart("tr").openEnd();
596
+ rm.openStart("td").attr("colspan", "2").openEnd();
597
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text("Absolute Path").close("label");
598
+ rm.close("td");
599
+
600
+ rm.openStart("td").openEnd();
601
+ if (typeof oBinding.absolutePath !== 'undefined') {
602
+ rm.openStart("div").openEnd().text(oBinding.absolutePath).close("div");
603
+ } else {
604
+ rm.openStart("div").openEnd().text("No binding").close("div");
605
+ }
606
+ rm.close("td");
607
+ rm.close("tr");
534
608
 
535
609
  // Relative
536
- rm.write('<tr><td colspan="2">');
537
-
538
- rm.write('<label class="sapUiSupportLabel">Relative</label>');
539
-
540
- rm.write('</td><td>');
541
-
542
- if (typeof oBinding.isRelative !== 'undefined') {
543
- rm.write('<div>' + encode(oBinding.isRelative) + '</div>');
544
- } else {
545
- rm.write('<div>No binding</div>');
546
- }
547
-
548
- rm.write('</td></tr>');
610
+ rm.openStart("tr").openEnd();
611
+ rm.openStart("td").attr("colspan", "2").openEnd();
612
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text("Relative").close("label");
613
+ rm.close("td");
614
+
615
+ rm.openStart("td").openEnd();
616
+ if (typeof oBinding.isRelative !== 'undefined') {
617
+ rm.openStart("div").openEnd().text(oBinding.isRelative).close("div");
618
+ } else {
619
+ rm.openStart("div").openEnd().text("No binding").close("div");
620
+ }
621
+ rm.close("td");
622
+ rm.close("tr");
549
623
 
550
624
  // Binding-Type
551
- rm.write('<tr><td colspan="2">');
552
-
553
- rm.write('<label class="sapUiSupportLabel">Binding Type</label>');
554
-
555
- rm.write('</td><td>');
556
-
557
- if (!oBindingInfo.type) {
558
- rm.write('<div>No binding</div>');
559
- } else {
560
- rm.write('<div title="' + encode(oBindingInfo.type) + '">' + encode(basename(oBindingInfo.type)) + '</div>');
561
- }
562
-
563
- rm.write('</td></tr>');
625
+ rm.openStart("tr").openEnd();
626
+ rm.openStart("td").attr("colspan", "2").openEnd();
627
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text("Binding Type").close("label");
628
+ rm.close("td");
629
+
630
+ rm.openStart("td").openEnd();
631
+ if (!oBindingInfo.type) {
632
+ rm.openStart("div").openEnd().text("No binding").close("div");
633
+ } else {
634
+ rm.openStart("div").attr("title", oBindingInfo.type).openEnd().text(basename(oBindingInfo.type)).close("div");
635
+ }
636
+ rm.close("td");
637
+ rm.close("tr");
564
638
 
565
639
  // Binding-Mode
566
640
  if (oBinding.mode) {
567
- rm.write('<tr><td colspan="2">');
641
+ rm.openStart("tr").openEnd().openStart("td").attr("colspan", "2").openEnd();
568
642
 
569
- rm.write('<label class="sapUiSupportLabel">Binding Mode</label>');
643
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text("Binding Mode").close("label");
570
644
 
571
- rm.write('</td><td>');
645
+ rm.close("td");
646
+ rm.openStart("td").openEnd();
572
647
 
573
- rm.write('<div>' + encode(oBinding.mode) + '</div>');
648
+ rm.openStart("div").openEnd().text(oBindingInfo.mode).close("div");
574
649
 
575
- rm.write('</td></tr>');
650
+ rm.close("td").close("tr");
576
651
  }
577
652
 
578
653
  // Model-Name
579
- rm.write('<tr><td>');
580
-
581
- rm.write('<label class="sapUiSupportLabel">Model</label>');
582
-
583
- rm.write('</td><td>');
584
-
585
- rm.write('<label class="sapUiSupportLabel">Name</label>');
586
-
587
- rm.write('</td><td>');
588
-
589
- if (oBinding.model && oBinding.model.name) {
590
- rm.write('<div>' + encode(oBinding.model.name) + '</div>');
591
- } else {
592
- rm.write('<div>No binding</div>');
593
- }
594
-
595
- rm.write('</td></tr>');
654
+ rm.openStart("tr").openEnd();
655
+ rm.openStart("td").openEnd();
656
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text("Model").close("label");
657
+ rm.close("td");
658
+
659
+ rm.openStart("td").openEnd();
660
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text("Name").close("label");
661
+ rm.close("td");
662
+
663
+ rm.openStart("td").openEnd();
664
+ if (oBinding.model && oBinding.model.name) {
665
+ rm.openStart("div").openEnd().text(oBinding.model.name).close("div");
666
+ } else {
667
+ rm.openStart("div").openEnd().text("No binding").close("div");
668
+ }
669
+ rm.close("td");
670
+ rm.close("tr");
596
671
 
597
672
  // Model-Type
598
- rm.write('<tr><td>');
599
- rm.write('</td><td>');
600
-
601
- rm.write('<label class="sapUiSupportLabel">Type</label>');
602
-
603
- rm.write('</td><td>');
673
+ rm.openStart("tr").openEnd();
674
+ rm.openStart("td").openEnd().close("td");
604
675
 
605
- if (oBinding.model && oBinding.model.type) {
606
- rm.write('<div><span title="' + encode(oBinding.model.type) + '">' + encode(basename(oBinding.model.type)) + '</span></div>');
607
- } else {
608
- rm.write('<div><span>No binding</span></div>');
609
- }
676
+ rm.openStart("td").openEnd();
677
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text("Type").close("label");
678
+ rm.close("td");
610
679
 
611
- rm.write('</td></tr>');
680
+ rm.openStart("td").openEnd();
681
+ if (oBinding.model && oBinding.model.type) {
682
+ rm.openStart("div").openEnd().openStart("span").attr("title", oBinding.model.type).openEnd().text(basename(oBinding.model.type)).close("span").close("div");
683
+ } else {
684
+ rm.openStart("div").openEnd().openStart("span").openEnd().text("No binding").close("span").close("div");
685
+ }
686
+ rm.close("td");
687
+ rm.close("tr");
612
688
 
613
689
  // Model-DefaultBindingMode
614
- rm.write('<tr><td>');
615
- rm.write('</td><td>');
616
-
617
- rm.write('<label class="sapUiSupportLabel">Default Binding Mode</label>');
618
-
619
- rm.write('</td><td>');
690
+ rm.openStart("tr").openEnd();
691
+ rm.openStart("td").openEnd().close("td");
620
692
 
621
- if (oBinding.model && oBinding.model.bindingMode) {
622
- rm.write('<div><span>' + encode(oBinding.model.bindingMode) + '</span></div>');
623
- } else {
624
- rm.write('<div><span>No binding</span></div>');
625
- }
693
+ rm.openStart("td").openEnd();
694
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text("Default Binding Mode").close("label");
695
+ rm.close("td");
626
696
 
627
- rm.write('</td></tr>');
697
+ rm.openStart("td").openEnd();
698
+ if (oBinding.model && oBinding.model.bindingMode) {
699
+ rm.openStart("div").openEnd().openStart("span").openEnd().text(oBinding.model.bindingMode).close("span").close("div");
700
+ } else {
701
+ rm.openStart("div").openEnd().openStart("span").openEnd().text("No binding").close("span").close("div");
702
+ }
703
+ rm.close("td");
704
+ rm.close("tr");
628
705
 
629
706
  // Model-Location
630
- rm.write('<tr><td>');
631
- rm.write('</td><td>');
632
-
633
- rm.write('<label class="sapUiSupportLabel">Location</label>');
634
-
635
- rm.write('</td><td>');
636
-
637
- if (oBinding.model && oBinding.model.location && oBinding.model.location.type) {
638
- if (oBinding.model.location.type === 'control') {
639
- rm.write('<div><a class="control-tree sapUiSupportLink" title="' + encode(oBinding.model.location.name) + '" data-sap-ui-control-id="' + encode(oBinding.model.location.id) + '" href="#">' +
640
- encode(basename(oBinding.model.location.name)) +
641
- ' (' + encode(oBinding.model.location.id) + ')</a></div>');
707
+ rm.openStart("tr").openEnd();
708
+ rm.openStart("td").openEnd().close("td");
709
+
710
+ rm.openStart("td").openEnd();
711
+ rm.openStart("label").class("sapUiSupportLabel").openEnd().text("Location").close("label");
712
+ rm.close("td");
713
+
714
+ rm.openStart("td").openEnd();
715
+ if (oBinding.model && oBinding.model.location && oBinding.model.location.type) {
716
+ if (oBinding.model.location.type === 'control') {
717
+ rm.openStart("div").openEnd();
718
+ rm.openStart("a")
719
+ .class("control-tree")
720
+ .class("sapUiSupportLink")
721
+ .attr("title", oBinding.model.location.name)
722
+ .attr("data-sap-ui-control-id", oBinding.model.location.id)
723
+ .attr("href", "#").openEnd()
724
+ .text(basename(oBinding.model.location.name))
725
+ .text(" (" + oBinding.model.location.id + ")")
726
+ .close("a");
727
+ rm.close("div");
728
+ } else {
729
+ rm.openStart("div").openEnd().openStart("span").attr("title", "sap.ui.getCore()").openEnd().text("Core").close("span").close("div");
730
+ }
642
731
  } else {
643
- rm.write('<div><span title="sap.ui.getCore()">Core</span></div>');
732
+ rm.openStart("div").openEnd().openStart("span").openEnd().text("No binding").close("span").close("div");
644
733
  }
645
- } else {
646
- rm.write('<div><span>No binding</span></div>');
647
- }
648
-
649
- rm.write('</td></tr>');
734
+ rm.close("td");
735
+ rm.close("tr");
650
736
 
651
- rm.write('</tbody></table></div>');
737
+ rm.close("tbody").close("table").close("div");
652
738
 
653
739
  });
654
740
 
655
- rm.write('</li>');
741
+ rm.close("li");
656
742
  });
657
743
 
658
- rm.write('</ul>');
744
+ rm.close("ul");
659
745
 
660
746
  }
661
747
 
662
- rm.flush(this.$().find("#sapUiSupportControlPropertiesArea").get(0));
748
+ rm.flush(this.dom("#sapUiSupportControlPropertiesArea"));
663
749
  rm.destroy();
664
750
  };
665
751
 
@@ -667,50 +753,55 @@ sap.ui.define([
667
753
 
668
754
  var rm = sap.ui.getCore().createRenderManager();
669
755
 
670
- rm.write('<div class="sapUiSupportControlMethods" data-sap-ui-controlid="' + encode(sControlId) + '">');
756
+ rm.openStart("div").class("sapUiSupportControlMethods").attr("data-sap-ui-controlid", sControlId).openEnd();
671
757
 
672
- rm.write('<select id="sapUiSupportControlMethodsSelect" class="sapUiSupportAutocomplete sapUiSupportSelect"><option></option>');
758
+ rm.openStart("select", "sapUiSupportControlMethodsSelect").class("sapUiSupportAutocomplete").class("sapUiSupportSelect").openEnd();
759
+ rm.openStart("option").openEnd().close("option");
673
760
 
674
- $.each(aMethods, function(iIndex, oValue) {
761
+ each(aMethods, function(iIndex, oValue) {
675
762
  if (!oValue.active) {
676
- rm.write('<option>' + encode(oValue.name) + '</option>');
763
+ rm.openStart("option").openEnd().text("oValue.name").close("option");
677
764
  }
678
765
  });
679
766
 
680
- rm.write('</select>');
767
+ rm.close("select");
681
768
 
682
- rm.write('<input class="sapUiSupportControlBreakpointInput sapUiSupportAutocomplete" type="text">');
683
- rm.write('<button id="sapUiSupportControlAddBreakPoint" class="sapUiSupportRoundedButton ">Add breakpoint</button>');
684
- rm.write('<hr class="no-border"><ul id="sapUiSupportControlActiveBreakpoints" class="sapUiSupportList sapUiSupportBreakpointList">');
769
+ rm.voidStart("input").class("sapUiSupportControlBreakpointInput").class("sapUiSupportAutocomplete").attr("type", "text").voidEnd();
770
+ rm.openStart("button", "sapUiSupportControlAddBreakPoint").class("sapUiSupportRoundedButton").openEnd().text("Add breakpoint").close("button");
771
+ rm.voidStart("hr").class("no-border").voidEnd();
772
+ rm.openStart("ul", "sapUiSupportControlActiveBreakpoints").class("sapUiSupportList").class("sapUiSupportBreakpointList").openEnd();
685
773
 
686
- $.each(aMethods, function(iIndex, oValue) {
774
+ each(aMethods, function(iIndex, oValue) {
687
775
  if (!oValue.active) {
688
776
  return;
689
777
  }
690
778
 
691
- rm.write('<li><span>' + encode(oValue.name) + '</span>' +
692
- '<img class="remove-breakpoint" src="../../debug/images/delete.gif"></li>');
779
+ rm.openStart("li").openEnd()
780
+ .openStart("span").openEnd().text(oValue.name).close("span")
781
+ .voidStart("img").class("remove-breakpoint").attr("src", "../../debug/images/delete.gif").voidEnd()
782
+ .close("li");
693
783
  });
694
784
 
695
- rm.write('</ul></div>');
785
+ rm.close("ul").close("div");
696
786
 
697
- rm.flush(this.$().find("#sapUiSupportControlPropertiesArea").get(0));
787
+ rm.flush(this.dom("#sapUiSupportControlPropertiesArea"));
698
788
  rm.destroy();
699
789
 
700
790
  this.selectTab(this._tab.breakpoints);
701
791
 
702
- this.$().find('.sapUiSupportControlBreakpointInput').trigger("focus");
792
+ this.dom('.sapUiSupportControlBreakpointInput').focus();
703
793
  };
704
794
 
705
795
  ControlTree.prototype.renderExportTab = function() {
706
796
 
707
797
  var rm = sap.ui.getCore().createRenderManager();
708
798
 
709
- rm.write('<button id="sapUiSupportControlExportToXml" class="sapUiSupportRoundedButton sapUiSupportExportButton">Export To XML</button>');
710
- rm.write('<br><br>');
711
- rm.write('<button id="sapUiSupportControlExportToHtml" class="sapUiSupportRoundedButton sapUiSupportExportButton">Export To HTML</button>');
799
+ rm.openStart("button", "sapUiSupportControlExportToXml").class("sapUiSupportRoundedButton").class("sapUiSupportExportButton").openEnd().text("Export To XML").close("button");
800
+ rm.voidStart("br").voidEnd();
801
+ rm.voidStart("br").voidEnd();
802
+ rm.openStart("button", "sapUiSupportControlExportToHtml").class("sapUiSupportRoundedButton").class("sapUiSupportExportButton").openEnd().text("Export To HTML").close("button");
712
803
 
713
- rm.flush(this.$().find("#sapUiSupportControlPropertiesArea").get(0));
804
+ rm.flush(this.dom("#sapUiSupportControlPropertiesArea"));
714
805
  rm.destroy();
715
806
 
716
807
  this.selectTab(this._tab.exports);
@@ -774,7 +865,7 @@ sap.ui.define([
774
865
  var mViews = JSON.parse(oEvent.getParameter("serializedViews"));
775
866
  var sType = oEvent.getParameter("sType");
776
867
 
777
- if (!$.isEmptyObject(mViews)) {
868
+ if (!isEmptyObject(mViews)) {
778
869
  zip = new JSZip();
779
870
  for (var oViewName in mViews) {
780
871
  var data = mViews[oViewName];
@@ -957,11 +1048,11 @@ sap.ui.define([
957
1048
 
958
1049
  ControlTree.prototype._onAddBreakpointClicked = function (oEvent) {
959
1050
 
960
- var $select = this.$().find("#sapUiSupportControlMethodsSelect");
1051
+ var oSelect = this.dom("#sapUiSupportControlMethodsSelect");
961
1052
 
962
1053
  this._oStub.sendEvent(this._breakpointId + "ChangeInstanceBreakpoint", {
963
- controlId: $select.closest("[data-sap-ui-controlid]").attr("data-sap-ui-controlid"),
964
- methodName: $select.val(),
1054
+ controlId: oSelect.closest("[data-sap-ui-controlid]").dataset.sapUiControlid,
1055
+ methodName: oSelect.value,
965
1056
  active: true,
966
1057
  callback: this.getId() + "ReceiveMethods"
967
1058
  });
@@ -1056,14 +1147,14 @@ sap.ui.define([
1056
1147
 
1057
1148
  ControlTree.prototype.selectTab = function(sTab) {
1058
1149
 
1059
- var $button = this.$().find("#sapUiSupportControlTab" + sTab);
1150
+ var oButton = this.dom("#sapUiSupportControlTab" + sTab);
1060
1151
 
1061
- if ($button.hasClass("active")) {
1152
+ if (oButton.classList.contains("active")) {
1062
1153
  return false;
1063
1154
  }
1064
1155
 
1065
1156
  this.$().find("#sapUiSupportControlTabs button").removeClass("active");
1066
- $button.addClass("active");
1157
+ oButton.classList.add("active");
1067
1158
 
1068
1159
  this._currentTab = sTab;
1069
1160
 
@@ -1087,10 +1178,10 @@ sap.ui.define([
1087
1178
 
1088
1179
  $(".sapUiControlTreeElement > div").removeClass("sapUiSupportControlTreeSelected");
1089
1180
  var that = this;
1090
- jQueryDOM(document.getElementById("sap-debug-controltree-" + sControlId)).parents("[data-sap-ui-collapsed]").each(function(iIndex, oValue) {
1181
+ $(document.getElementById("sap-debug-controltree-" + sControlId)).parents("[data-sap-ui-collapsed]").each(function(iIndex, oValue) {
1091
1182
  that._onIconClick({ target: $(oValue).find("img:first").get(0) });
1092
1183
  });
1093
- var oPosition = jQueryDOM(document.getElementById("sap-debug-controltree-" + sControlId)).children("div").addClass("sapUiSupportControlTreeSelected").position();
1184
+ var oPosition = $(document.getElementById("sap-debug-controltree-" + sControlId)).children("div").addClass("sapUiSupportControlTreeSelected").position();
1094
1185
  var iScrollTop = this.$().find("#sapUiSupportControlTreeArea").scrollTop();
1095
1186
  this.$().find("#sapUiSupportControlTreeArea").scrollTop(iScrollTop + oPosition.top);
1096
1187
 
@@ -1264,7 +1355,7 @@ sap.ui.define([
1264
1355
  if (oElement instanceof UIArea) {
1265
1356
  mElement.library = "sap.ui.core";
1266
1357
  mElement.type = "sap.ui.core.UIArea";
1267
- $.each(oElement.getContent(), function(iIndex, oElement) {
1358
+ each(oElement.getContent(), function(iIndex, oElement) {
1268
1359
  var mChild = serializeElement(oElement);
1269
1360
  mElement.aggregation.push(mChild);
1270
1361
  });
@@ -1276,8 +1367,8 @@ sap.ui.define([
1276
1367
  for (var sAggrName in oElement.mAggregations) {
1277
1368
  var oAggrElement = oElement.mAggregations[sAggrName];
1278
1369
  if (oAggrElement) {
1279
- var aElements = $.isArray(oAggrElement) ? oAggrElement : [oAggrElement];
1280
- $.each(aElements, function(iIndex, oValue) {
1370
+ var aElements = Array.isArray(oAggrElement) ? oAggrElement : [oAggrElement];
1371
+ each(aElements, function(iIndex, oValue) {
1281
1372
  // tooltips are also part of aggregations
1282
1373
  if (oValue instanceof Element) {
1283
1374
  var mChild = serializeElement(oValue);
@@ -1295,8 +1386,8 @@ sap.ui.define([
1295
1386
  var sAssocId = oElement.mAssociations[sAssocName];
1296
1387
  var sAssocType = (mAssocMetadata[sAssocName]) ? mAssocMetadata[sAssocName].type : null;
1297
1388
  if (sAssocId && sAssocType) {
1298
- var aAssocIds = $.isArray(sAssocId) ? sAssocId : [sAssocId];
1299
- $.each(aAssocIds, function(iIndex, oValue) {
1389
+ var aAssocIds = Array.isArray(sAssocId) ? sAssocId : [sAssocId];
1390
+ each(aAssocIds, function(iIndex, oValue) {
1300
1391
  mElement.association.push({ id: oValue, type: sAssocType, name: sAssocName, isAssociationLink: true });
1301
1392
  });
1302
1393
  }
@@ -1307,7 +1398,7 @@ sap.ui.define([
1307
1398
  return mElement;
1308
1399
  }
1309
1400
 
1310
- $.each(oCore.mUIAreas, function(iIndex, oUIArea) {
1401
+ each(oCore.mUIAreas, function(iIndex, oUIArea) {
1311
1402
  var mElement = serializeElement(oUIArea);
1312
1403
  aControlTree.push(mElement);
1313
1404
  });
@@ -1334,10 +1425,10 @@ sap.ui.define([
1334
1425
  oObj = oCore.byId(mAssoc.id);
1335
1426
  break;
1336
1427
  case "component":
1337
- oObj = oCore.getComponent(mAssoc.id);
1428
+ oObj = Component.get(mAssoc.id);
1338
1429
  break;
1339
1430
  case "template":
1340
- oObj = oCore.getTemplate(mAssoc.id);
1431
+ oObj = Template.byId(mAssoc.id);
1341
1432
  break;
1342
1433
  default:
1343
1434
  break;
@@ -1355,10 +1446,10 @@ sap.ui.define([
1355
1446
  }
1356
1447
  /*eslint-enable no-loop-func */
1357
1448
 
1358
- $.each(mElement.aggregation, serializeAssociations);
1449
+ each(mElement.aggregation, serializeAssociations);
1359
1450
  }
1360
1451
 
1361
- $.each(aControlTree, serializeAssociations);
1452
+ each(aControlTree, serializeAssociations);
1362
1453
 
1363
1454
  return aControlTree;
1364
1455
  };
@@ -1393,9 +1484,9 @@ sap.ui.define([
1393
1484
  };
1394
1485
 
1395
1486
  var mProperties = oMetadata.getProperties();
1396
- $.each(mProperties, function(sKey, oProperty) {
1487
+ each(mProperties, function(sKey, oProperty) {
1397
1488
  var mProperty = {};
1398
- $.each(oProperty, function(sName, sValue) {
1489
+ each(oProperty, function(sName, sValue) {
1399
1490
 
1400
1491
  if (sName.substring(0, 1) !== "_" || (sName == '_sGetter' || sName == '_sMutator')) {
1401
1492
  mProperty[sName] = sValue;
@@ -1408,8 +1499,8 @@ sap.ui.define([
1408
1499
  }
1409
1500
 
1410
1501
  var oType = DataType.getType(oProperty.type);
1411
- if (oType && !(oType instanceof DataType)) {
1412
- mProperty["enumValues"] = oType;
1502
+ if (oType && oType.isEnumType()) {
1503
+ mProperty["enumValues"] = oType.getEnumValues();
1413
1504
  }
1414
1505
  });
1415
1506
  mProperty.value = oControl.getProperty(sKey);
@@ -1420,10 +1511,10 @@ sap.ui.define([
1420
1511
  });
1421
1512
 
1422
1513
  var mAggregations = oMetadata.getAggregations();
1423
- $.each(mAggregations, function(sKey, oAggregation) {
1514
+ each(mAggregations, function(sKey, oAggregation) {
1424
1515
  if (oAggregation.altTypes && oAggregation.altTypes[0] && pSimpleType.test(oAggregation.altTypes[0]) && typeof (oControl.getAggregation(sKey)) !== 'object') {
1425
1516
  var mAggregation = {};
1426
- $.each(oAggregation, function(sName, sValue) {
1517
+ each(oAggregation, function(sName, sValue) {
1427
1518
 
1428
1519
  if (sName.substring(0, 1) !== "_" || (sName == '_sGetter' || sName == '_sMutator')) {
1429
1520
  mAggregation[sName] = sValue;
@@ -1477,7 +1568,7 @@ sap.ui.define([
1477
1568
  var aBindings = [];
1478
1569
  var aBindingInfoBuffer, aBindingBuffer = [];
1479
1570
 
1480
- if ($.isArray(mBindingInfo.parts)) {
1571
+ if (Array.isArray(mBindingInfo.parts)) {
1481
1572
  aBindingInfoBuffer = mBindingInfo.parts;
1482
1573
  } else {
1483
1574
  aBindingInfoBuffer = [ mBindingInfo ];
@@ -1489,7 +1580,7 @@ sap.ui.define([
1489
1580
  aBindingBuffer = [ mBindingInfo.binding ];
1490
1581
  }
1491
1582
 
1492
- $.each(aBindingInfoBuffer, function(iIndex, oInfo) {
1583
+ each(aBindingInfoBuffer, function(iIndex, oInfo) {
1493
1584
 
1494
1585
  var mData = {};
1495
1586