@ui5/webcomponents-base 0.0.0-dff5837d7 → 0.0.0-e0658a650

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 (745) hide show
  1. package/.eslintignore +3 -0
  2. package/CHANGELOG.md +453 -0
  3. package/README.md +53 -7
  4. package/bundle.esm.js +28 -17
  5. package/dist/AssetRegistry.d.ts +5 -0
  6. package/dist/AssetRegistry.js +6 -10
  7. package/dist/AssetRegistry.js.map +1 -0
  8. package/dist/Boot.d.ts +8 -0
  9. package/dist/Boot.js +44 -0
  10. package/dist/Boot.js.map +1 -0
  11. package/dist/CSP.d.ts +30 -0
  12. package/dist/CSP.js +51 -0
  13. package/dist/CSP.js.map +1 -0
  14. package/dist/CustomElementsRegistry.d.ts +5 -0
  15. package/dist/CustomElementsRegistry.js +69 -30
  16. package/dist/CustomElementsRegistry.js.map +1 -0
  17. package/dist/CustomElementsScope.d.ts +7 -0
  18. package/dist/CustomElementsScope.js +11 -0
  19. package/dist/CustomElementsScope.js.map +1 -0
  20. package/dist/CustomElementsScopeUtils.d.ts +55 -0
  21. package/dist/CustomElementsScopeUtils.js +90 -0
  22. package/dist/CustomElementsScopeUtils.js.map +1 -0
  23. package/dist/DOMObserver.d.ts +11 -0
  24. package/dist/DOMObserver.js +23 -0
  25. package/dist/DOMObserver.js.map +1 -0
  26. package/dist/Device.d.ts +11 -0
  27. package/dist/Device.js +82 -816
  28. package/dist/Device.js.map +1 -0
  29. package/dist/EventProvider.d.ts +25 -0
  30. package/dist/EventProvider.js +67 -78
  31. package/dist/EventProvider.js.map +1 -0
  32. package/dist/FeaturesRegistry.d.ts +3 -0
  33. package/dist/FeaturesRegistry.js +5 -7
  34. package/dist/FeaturesRegistry.js.map +1 -0
  35. package/dist/FontFace.d.ts +2 -0
  36. package/dist/FontFace.js +21 -69
  37. package/dist/FontFace.js.map +1 -0
  38. package/dist/InitialConfiguration.d.ts +22 -0
  39. package/dist/InitialConfiguration.js +119 -103
  40. package/dist/InitialConfiguration.js.map +1 -0
  41. package/dist/Keys.d.ts +57 -0
  42. package/dist/Keys.js +174 -166
  43. package/dist/Keys.js.map +1 -0
  44. package/dist/ManagedStyles.d.ts +8 -0
  45. package/dist/ManagedStyles.js +77 -0
  46. package/dist/ManagedStyles.js.map +1 -0
  47. package/dist/MediaRange.d.ts +36 -0
  48. package/dist/MediaRange.js +96 -0
  49. package/dist/MediaRange.js.map +1 -0
  50. package/dist/PropertiesFileFormat.d.ts +8 -0
  51. package/dist/PropertiesFileFormat.js +85 -0
  52. package/dist/PropertiesFileFormat.js.map +1 -0
  53. package/dist/Render.d.ts +47 -0
  54. package/dist/Render.js +143 -0
  55. package/dist/Render.js.map +1 -0
  56. package/dist/RenderQueue.d.ts +19 -0
  57. package/dist/RenderQueue.js +53 -39
  58. package/dist/RenderQueue.js.map +1 -0
  59. package/dist/Runtimes.d.ts +27 -0
  60. package/dist/Runtimes.js +86 -0
  61. package/dist/Runtimes.js.map +1 -0
  62. package/dist/StaticArea.d.ts +0 -0
  63. package/dist/StaticArea.js +4 -39
  64. package/dist/StaticArea.js.map +1 -0
  65. package/dist/StaticAreaItem.d.ts +36 -0
  66. package/dist/StaticAreaItem.js +92 -98
  67. package/dist/StaticAreaItem.js.map +1 -0
  68. package/dist/SystemCSSVars.d.ts +2 -0
  69. package/dist/SystemCSSVars.js +6 -28
  70. package/dist/SystemCSSVars.js.map +1 -0
  71. package/dist/Theming.d.ts +3 -0
  72. package/dist/Theming.js +3 -2
  73. package/dist/Theming.js.map +1 -0
  74. package/dist/UI5Element.d.ts +371 -0
  75. package/dist/UI5Element.js +922 -969
  76. package/dist/UI5Element.js.map +1 -0
  77. package/dist/UI5ElementMetadata.d.ts +147 -0
  78. package/dist/UI5ElementMetadata.js +261 -174
  79. package/dist/UI5ElementMetadata.js.map +1 -0
  80. package/dist/animations/AnimationQueue.d.ts +8 -0
  81. package/dist/animations/AnimationQueue.js +31 -38
  82. package/dist/animations/AnimationQueue.js.map +1 -0
  83. package/dist/animations/animate.d.ts +14 -0
  84. package/dist/animations/animate.js +46 -51
  85. package/dist/animations/animate.js.map +1 -0
  86. package/dist/animations/scroll.d.ts +5 -0
  87. package/dist/animations/scroll.js +18 -27
  88. package/dist/animations/scroll.js.map +1 -0
  89. package/dist/animations/slideDown.d.ts +5 -0
  90. package/dist/animations/slideDown.js +53 -78
  91. package/dist/animations/slideDown.js.map +1 -0
  92. package/dist/animations/slideUp.d.ts +5 -0
  93. package/dist/animations/slideUp.js +49 -70
  94. package/dist/animations/slideUp.js.map +1 -0
  95. package/dist/api.json +1 -0
  96. package/dist/asset-registries/Icons.d.ts +30 -0
  97. package/dist/asset-registries/Icons.js +104 -31
  98. package/dist/asset-registries/Icons.js.map +1 -0
  99. package/dist/asset-registries/Illustrations.d.ts +16 -0
  100. package/dist/asset-registries/Illustrations.js +46 -0
  101. package/dist/asset-registries/Illustrations.js.map +1 -0
  102. package/dist/asset-registries/LocaleData.d.ts +7 -0
  103. package/dist/asset-registries/LocaleData.js +125 -114
  104. package/dist/asset-registries/LocaleData.js.map +1 -0
  105. package/dist/asset-registries/Themes.d.ts +10 -0
  106. package/dist/asset-registries/Themes.js +39 -76
  107. package/dist/asset-registries/Themes.js.map +1 -0
  108. package/dist/asset-registries/i18n.d.ts +23 -0
  109. package/dist/asset-registries/i18n.js +71 -82
  110. package/dist/asset-registries/i18n.js.map +1 -0
  111. package/dist/assets/bundle.esm.72c1d211.js +56 -0
  112. package/dist/assets-meta/IconCollectionsAlias.d.ts +17 -0
  113. package/dist/assets-meta/IconCollectionsAlias.js +18 -0
  114. package/dist/assets-meta/IconCollectionsAlias.js.map +1 -0
  115. package/dist/config/AnimationMode.d.ts +14 -0
  116. package/dist/config/AnimationMode.js +23 -10
  117. package/dist/config/AnimationMode.js.map +1 -0
  118. package/dist/config/CalendarType.d.ts +8 -0
  119. package/dist/config/CalendarType.js +13 -12
  120. package/dist/config/CalendarType.js.map +1 -0
  121. package/dist/config/FormatSettings.d.ts +11 -0
  122. package/dist/config/FormatSettings.js +10 -8
  123. package/dist/config/FormatSettings.js.map +1 -0
  124. package/dist/config/Icons.d.ts +30 -0
  125. package/dist/config/Icons.js +48 -0
  126. package/dist/config/Icons.js.map +1 -0
  127. package/dist/config/Language.d.ts +31 -0
  128. package/dist/config/Language.js +44 -29
  129. package/dist/config/Language.js.map +1 -0
  130. package/dist/config/NoConflict.d.ts +20 -0
  131. package/dist/config/NoConflict.js +40 -41
  132. package/dist/config/NoConflict.js.map +1 -0
  133. package/dist/config/RTL.d.ts +7 -0
  134. package/dist/config/RTL.js +23 -20
  135. package/dist/config/RTL.js.map +1 -0
  136. package/dist/config/Theme.d.ts +28 -0
  137. package/dist/config/Theme.js +45 -22
  138. package/dist/config/Theme.js.map +1 -0
  139. package/dist/config/ThemeRoots.d.ts +4 -0
  140. package/dist/config/ThemeRoots.js +28 -0
  141. package/dist/config/ThemeRoots.js.map +1 -0
  142. package/dist/css/BusyIndicator.css +80 -0
  143. package/dist/css/FontFace.css +66 -0
  144. package/dist/css/OverrideFontFace.css +32 -0
  145. package/dist/css/SystemCSSVars.css +17 -0
  146. package/dist/delegate/ItemNavigation.d.ts +113 -0
  147. package/dist/delegate/ItemNavigation.js +312 -278
  148. package/dist/delegate/ItemNavigation.js.map +1 -0
  149. package/dist/delegate/ResizeHandler.d.ts +24 -0
  150. package/dist/delegate/ResizeHandler.js +80 -62
  151. package/dist/delegate/ResizeHandler.js.map +1 -0
  152. package/dist/delegate/ScrollEnablement.d.ts +43 -0
  153. package/dist/delegate/ScrollEnablement.js +159 -153
  154. package/dist/delegate/ScrollEnablement.js.map +1 -0
  155. package/dist/features/F6Navigation.d.ts +16 -0
  156. package/dist/features/F6Navigation.js +112 -0
  157. package/dist/features/F6Navigation.js.map +1 -0
  158. package/dist/features/OpenUI5Element.d.ts +9 -0
  159. package/dist/features/OpenUI5Element.js +5 -0
  160. package/dist/features/OpenUI5Element.js.map +1 -0
  161. package/dist/features/OpenUI5Enablement.d.ts +11 -0
  162. package/dist/features/OpenUI5Enablement.js +96 -0
  163. package/dist/features/OpenUI5Enablement.js.map +1 -0
  164. package/dist/features/OpenUI5Support.d.ts +23 -0
  165. package/dist/features/OpenUI5Support.js +93 -86
  166. package/dist/features/OpenUI5Support.js.map +1 -0
  167. package/dist/generated/AssetParameters.js +1 -1
  168. package/dist/generated/VersionInfo.js +10 -0
  169. package/dist/generated/css/BusyIndicator.css.js +5 -0
  170. package/dist/generated/css/FontFace.css.js +5 -0
  171. package/dist/generated/css/OverrideFontFace.css.js +5 -0
  172. package/dist/generated/css/SystemCSSVars.css.js +5 -0
  173. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +11 -0
  174. package/dist/getSharedResource.d.ts +11 -0
  175. package/dist/getSharedResource.js +26 -0
  176. package/dist/getSharedResource.js.map +1 -0
  177. package/dist/i18nBundle.d.ts +43 -0
  178. package/dist/i18nBundle.js +73 -28
  179. package/dist/i18nBundle.js.map +1 -0
  180. package/dist/locale/Locale.d.ts +22 -0
  181. package/dist/locale/Locale.js +75 -87
  182. package/dist/locale/Locale.js.map +1 -0
  183. package/dist/locale/RTLAwareRegistry.d.ts +4 -0
  184. package/dist/locale/RTLAwareRegistry.js +6 -11
  185. package/dist/locale/RTLAwareRegistry.js.map +1 -0
  186. package/dist/locale/applyDirection.d.ts +10 -0
  187. package/dist/locale/applyDirection.js +10 -8
  188. package/dist/locale/applyDirection.js.map +1 -0
  189. package/dist/locale/directionChange.d.ts +15 -0
  190. package/dist/locale/directionChange.js +24 -0
  191. package/dist/locale/directionChange.js.map +1 -0
  192. package/dist/locale/getEffectiveDir.d.ts +2 -0
  193. package/dist/locale/getEffectiveDir.js +24 -0
  194. package/dist/locale/getEffectiveDir.js.map +1 -0
  195. package/dist/locale/getLocale.d.ts +7 -0
  196. package/dist/locale/getLocale.js +28 -21
  197. package/dist/locale/getLocale.js.map +1 -0
  198. package/dist/locale/languageChange.d.ts +5 -0
  199. package/dist/locale/languageChange.js +8 -16
  200. package/dist/locale/languageChange.js.map +1 -0
  201. package/dist/locale/nextFallbackLocale.d.ts +8 -0
  202. package/dist/locale/nextFallbackLocale.js +15 -19
  203. package/dist/locale/nextFallbackLocale.js.map +1 -0
  204. package/dist/locale/normalizeLocale.d.ts +7 -0
  205. package/dist/locale/normalizeLocale.js +34 -41
  206. package/dist/locale/normalizeLocale.js.map +1 -0
  207. package/dist/renderer/LitRenderer.d.ts +14 -0
  208. package/dist/renderer/LitRenderer.js +38 -12
  209. package/dist/renderer/LitRenderer.js.map +1 -0
  210. package/dist/renderer/directives/style-map.js +72 -0
  211. package/dist/renderer/executeTemplate.d.ts +13 -0
  212. package/dist/renderer/executeTemplate.js +30 -0
  213. package/dist/renderer/executeTemplate.js.map +1 -0
  214. package/dist/sap/base/Log.js +241 -0
  215. package/dist/sap/base/assert.js +8 -0
  216. package/dist/sap/base/security/URLListValidator.js +148 -0
  217. package/dist/sap/base/security/encodeCSS.js +14 -0
  218. package/dist/sap/base/security/encodeXML.js +23 -0
  219. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  220. package/dist/sap/base/strings/toHex.js +8 -0
  221. package/dist/sap/base/util/now.js +7 -0
  222. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  223. package/dist/theming/CustomStyle.d.ts +6 -0
  224. package/dist/theming/CustomStyle.js +44 -17
  225. package/dist/theming/CustomStyle.js.map +1 -0
  226. package/dist/theming/ThemeLoaded.d.ts +5 -0
  227. package/dist/theming/ThemeLoaded.js +14 -0
  228. package/dist/theming/ThemeLoaded.js.map +1 -0
  229. package/dist/theming/applyTheme.d.ts +2 -0
  230. package/dist/theming/applyTheme.js +63 -69
  231. package/dist/theming/applyTheme.js.map +1 -0
  232. package/dist/theming/getConstructableStyle.d.ts +9 -0
  233. package/dist/theming/getConstructableStyle.js +15 -15
  234. package/dist/theming/getConstructableStyle.js.map +1 -0
  235. package/dist/theming/getEffectiveLinksHrefs.d.ts +3 -0
  236. package/dist/theming/getEffectiveLinksHrefs.js +16 -0
  237. package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
  238. package/dist/theming/getEffectiveStyle.d.ts +3 -0
  239. package/dist/theming/getEffectiveStyle.js +30 -13
  240. package/dist/theming/getEffectiveStyle.js.map +1 -0
  241. package/dist/theming/getStylesString.d.ts +3 -0
  242. package/dist/theming/getStylesString.js +10 -0
  243. package/dist/theming/getStylesString.js.map +1 -0
  244. package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
  245. package/dist/theming/getThemeDesignerTheme.js +73 -60
  246. package/dist/theming/getThemeDesignerTheme.js.map +1 -0
  247. package/dist/theming/preloadLinks.d.ts +3 -0
  248. package/dist/theming/preloadLinks.js +19 -0
  249. package/dist/theming/preloadLinks.js.map +1 -0
  250. package/dist/thirdparty/_merge.d.ts +2 -0
  251. package/dist/thirdparty/_merge.js +7 -4
  252. package/dist/thirdparty/_merge.js.map +1 -0
  253. package/dist/thirdparty/isPlainObject.d.ts +2 -0
  254. package/dist/thirdparty/isPlainObject.js +11 -10
  255. package/dist/thirdparty/isPlainObject.js.map +1 -0
  256. package/dist/thirdparty/merge.d.ts +2 -0
  257. package/dist/thirdparty/merge.js +4 -8
  258. package/dist/thirdparty/merge.js.map +1 -0
  259. package/dist/types/AnimationMode.d.ts +32 -0
  260. package/dist/types/AnimationMode.js +33 -6
  261. package/dist/types/AnimationMode.js.map +1 -0
  262. package/dist/types/CSSColor.d.ts +16 -0
  263. package/dist/types/CSSColor.js +19 -0
  264. package/dist/types/CSSColor.js.map +1 -0
  265. package/dist/types/CalendarType.d.ts +37 -0
  266. package/dist/types/CalendarType.js +35 -18
  267. package/dist/types/CalendarType.js.map +1 -0
  268. package/dist/types/DOMReference.d.ts +17 -0
  269. package/dist/types/DOMReference.js +25 -0
  270. package/dist/types/DOMReference.js.map +1 -0
  271. package/dist/types/DataType.d.ts +25 -0
  272. package/dist/types/DataType.js +32 -13
  273. package/dist/types/DataType.js.map +1 -0
  274. package/dist/types/Float.d.ts +18 -0
  275. package/dist/types/Float.js +18 -6
  276. package/dist/types/Float.js.map +1 -0
  277. package/dist/types/Integer.d.ts +18 -0
  278. package/dist/types/Integer.js +18 -5
  279. package/dist/types/Integer.js.map +1 -0
  280. package/dist/types/InvisibleMessageMode.d.ts +25 -0
  281. package/dist/types/InvisibleMessageMode.js +27 -0
  282. package/dist/types/InvisibleMessageMode.js.map +1 -0
  283. package/dist/types/ItemNavigationBehavior.d.ts +24 -0
  284. package/dist/types/ItemNavigationBehavior.js +22 -17
  285. package/dist/types/ItemNavigationBehavior.js.map +1 -0
  286. package/dist/types/NavigationMode.d.ts +32 -0
  287. package/dist/types/NavigationMode.js +33 -6
  288. package/dist/types/NavigationMode.js.map +1 -0
  289. package/dist/types/ValueState.d.ts +42 -0
  290. package/dist/types/ValueState.js +41 -19
  291. package/dist/types/ValueState.js.map +1 -0
  292. package/dist/types.d.ts +13 -0
  293. package/dist/types.js +2 -0
  294. package/dist/types.js.map +1 -0
  295. package/dist/updateShadowRoot.d.ts +8 -0
  296. package/dist/updateShadowRoot.js +34 -0
  297. package/dist/updateShadowRoot.js.map +1 -0
  298. package/dist/util/AriaLabelHelper.d.ts +6 -0
  299. package/dist/util/AriaLabelHelper.js +44 -0
  300. package/dist/util/AriaLabelHelper.js.map +1 -0
  301. package/dist/util/Caret.d.ts +7 -0
  302. package/dist/util/Caret.js +23 -0
  303. package/dist/util/Caret.js.map +1 -0
  304. package/dist/util/ColorConversion.d.ts +33 -0
  305. package/dist/util/ColorConversion.js +337 -0
  306. package/dist/util/ColorConversion.js.map +1 -0
  307. package/dist/util/FetchHelper.d.ts +3 -0
  308. package/dist/util/FetchHelper.js +19 -25
  309. package/dist/util/FetchHelper.js.map +1 -0
  310. package/dist/util/FocusableElements.d.ts +3 -0
  311. package/dist/util/FocusableElements.js +57 -61
  312. package/dist/util/FocusableElements.js.map +1 -0
  313. package/dist/util/HTMLSanitizer.d.ts +3 -0
  314. package/dist/util/HTMLSanitizer.js +6 -0
  315. package/dist/util/HTMLSanitizer.js.map +1 -0
  316. package/dist/util/InvisibleMessage.d.ts +10 -0
  317. package/dist/util/InvisibleMessage.js +56 -0
  318. package/dist/util/InvisibleMessage.js.map +1 -0
  319. package/dist/util/PopupUtils.d.ts +7 -0
  320. package/dist/util/PopupUtils.js +74 -0
  321. package/dist/util/PopupUtils.js.map +1 -0
  322. package/dist/util/SlotsHelper.d.ts +9 -0
  323. package/dist/util/SlotsHelper.js +30 -0
  324. package/dist/util/SlotsHelper.js.map +1 -0
  325. package/dist/util/StringHelper.d.ts +3 -0
  326. package/dist/util/StringHelper.js +17 -20
  327. package/dist/util/StringHelper.js.map +1 -0
  328. package/dist/util/TabbableElements.d.ts +3 -0
  329. package/dist/util/TabbableElements.js +39 -43
  330. package/dist/util/TabbableElements.js.map +1 -0
  331. package/dist/util/arraysAreEqual.d.ts +2 -0
  332. package/dist/util/arraysAreEqual.js +13 -0
  333. package/dist/util/arraysAreEqual.js.map +1 -0
  334. package/dist/util/clamp.d.ts +9 -0
  335. package/dist/util/clamp.js +12 -0
  336. package/dist/util/clamp.js.map +1 -0
  337. package/dist/util/createLinkInHead.d.ts +7 -0
  338. package/dist/util/createLinkInHead.js +21 -0
  339. package/dist/util/createLinkInHead.js.map +1 -0
  340. package/dist/util/createStyleInHead.d.ts +8 -0
  341. package/dist/util/createStyleInHead.js +10 -10
  342. package/dist/util/createStyleInHead.js.map +1 -0
  343. package/dist/util/debounce.d.ts +2 -0
  344. package/dist/util/debounce.js +15 -0
  345. package/dist/util/debounce.js.map +1 -0
  346. package/dist/util/detectNavigatorLanguage.d.ts +2 -0
  347. package/dist/util/detectNavigatorLanguage.js +7 -10
  348. package/dist/util/detectNavigatorLanguage.js.map +1 -0
  349. package/dist/util/escapeRegex.d.ts +8 -0
  350. package/dist/util/escapeRegex.js +11 -0
  351. package/dist/util/escapeRegex.js.map +1 -0
  352. package/dist/util/formatMessage.d.ts +2 -0
  353. package/dist/util/formatMessage.js +15 -19
  354. package/dist/util/formatMessage.js.map +1 -0
  355. package/dist/util/generateHighlightedMarkup.d.ts +9 -0
  356. package/dist/util/generateHighlightedMarkup.js +41 -0
  357. package/dist/util/generateHighlightedMarkup.js.map +1 -0
  358. package/dist/util/getActiveElement.d.ts +2 -0
  359. package/dist/util/getActiveElement.js +9 -0
  360. package/dist/util/getActiveElement.js.map +1 -0
  361. package/dist/util/getClassCopy.d.ts +398 -0
  362. package/dist/util/getClassCopy.js +10 -0
  363. package/dist/util/getClassCopy.js.map +1 -0
  364. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
  365. package/dist/util/getDesigntimePropertyAsArray.js +4 -3
  366. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
  367. package/dist/util/getEffectiveContentDensity.d.ts +2 -0
  368. package/dist/util/getEffectiveContentDensity.js +4 -0
  369. package/dist/util/getEffectiveContentDensity.js.map +1 -0
  370. package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
  371. package/dist/util/getEffectiveScrollbarStyle.js +4 -0
  372. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
  373. package/dist/util/getFastNavigationGroups.d.ts +2 -0
  374. package/dist/util/getFastNavigationGroups.js +51 -0
  375. package/dist/util/getFastNavigationGroups.js.map +1 -0
  376. package/dist/util/getFileExtension.d.ts +12 -0
  377. package/dist/util/getFileExtension.js +9 -11
  378. package/dist/util/getFileExtension.js.map +1 -0
  379. package/dist/util/getNormalizedTarget.d.ts +7 -0
  380. package/dist/util/getNormalizedTarget.js +14 -0
  381. package/dist/util/getNormalizedTarget.js.map +1 -0
  382. package/dist/util/getSingletonElementInstance.d.ts +2 -0
  383. package/dist/util/getSingletonElementInstance.js +10 -0
  384. package/dist/util/getSingletonElementInstance.js.map +1 -0
  385. package/dist/util/isDefaultSlotProvided.d.ts +2 -0
  386. package/dist/util/isDefaultSlotProvided.js +10 -0
  387. package/dist/util/isDefaultSlotProvided.js.map +1 -0
  388. package/dist/util/isElementClickable.d.ts +2 -0
  389. package/dist/util/isElementClickable.js +16 -0
  390. package/dist/util/isElementClickable.js.map +1 -0
  391. package/dist/util/isElementHidden.d.ts +2 -0
  392. package/dist/util/isElementHidden.js +8 -0
  393. package/dist/util/isElementHidden.js.map +1 -0
  394. package/dist/util/isElementInView.d.ts +6 -0
  395. package/dist/util/isElementInView.js +12 -0
  396. package/dist/util/isElementInView.js.map +1 -0
  397. package/dist/util/isElementTabbable.d.ts +2 -0
  398. package/dist/util/isElementTabbable.js +22 -0
  399. package/dist/util/isElementTabbable.js.map +1 -0
  400. package/dist/util/isValidPropertyName.d.ts +8 -0
  401. package/dist/util/isValidPropertyName.js +18 -18
  402. package/dist/util/isValidPropertyName.js.map +1 -0
  403. package/dist/util/whenDOMReady.d.ts +2 -0
  404. package/dist/util/whenDOMReady.js +11 -10
  405. package/dist/util/whenDOMReady.js.map +1 -0
  406. package/dist/validateThemeRoot.d.ts +2 -0
  407. package/dist/validateThemeRoot.js +47 -0
  408. package/dist/validateThemeRoot.js.map +1 -0
  409. package/global.d.ts +44 -0
  410. package/index.js +1 -1
  411. package/lib/generate-asset-parameters/index.js +8 -5
  412. package/lib/generate-styles/index.js +26 -0
  413. package/lib/generate-version-info/index.js +32 -0
  414. package/package-scripts.js +48 -28
  415. package/package.json +21 -13
  416. package/src/AssetRegistry.ts +11 -0
  417. package/src/Boot.ts +61 -0
  418. package/src/CSP.ts +66 -0
  419. package/src/CustomElementsRegistry.ts +98 -0
  420. package/src/CustomElementsScope.ts +33 -0
  421. package/src/CustomElementsScopeUtils.ts +115 -0
  422. package/src/DOMObserver.ts +28 -0
  423. package/src/Device.ts +121 -0
  424. package/src/EventProvider.ts +87 -0
  425. package/src/FeaturesRegistry.ts +14 -0
  426. package/src/FontFace.ts +31 -0
  427. package/src/InitialConfiguration.ts +207 -0
  428. package/src/Keys.ts +295 -0
  429. package/src/ManagedStyles.ts +92 -0
  430. package/src/MediaRange.ts +109 -0
  431. package/src/{util/parseProperties.js → PropertiesFileFormat.ts} +14 -8
  432. package/src/Render.ts +180 -0
  433. package/src/RenderQueue.ts +71 -0
  434. package/src/Runtimes.ts +114 -0
  435. package/src/StaticArea.ts +3 -0
  436. package/src/StaticAreaItem.ts +113 -0
  437. package/src/SystemCSSVars.ts +10 -0
  438. package/src/Theming.ts +4 -0
  439. package/src/UI5Element.ts +1125 -0
  440. package/src/UI5ElementMetadata.ts +364 -0
  441. package/src/animations/{AnimationQueue.js → AnimationQueue.ts} +8 -7
  442. package/src/animations/animate.ts +64 -0
  443. package/src/animations/scroll.ts +21 -0
  444. package/src/animations/{slideDown.js → slideDown.ts} +27 -34
  445. package/src/animations/{slideUp.js → slideUp.ts} +28 -32
  446. package/src/asset-registries/Icons.ts +161 -0
  447. package/src/asset-registries/Illustrations.ts +73 -0
  448. package/src/asset-registries/LocaleData.ts +172 -0
  449. package/src/asset-registries/Themes.ts +67 -0
  450. package/src/asset-registries/i18n.ts +118 -0
  451. package/src/assets-meta/IconCollectionsAlias.ts +18 -0
  452. package/src/config/AnimationMode.ts +33 -0
  453. package/src/config/{CalendarType.js → CalendarType.ts} +8 -3
  454. package/src/config/FormatSettings.ts +21 -0
  455. package/src/config/Icons.ts +59 -0
  456. package/src/config/Language.ts +72 -0
  457. package/src/config/NoConflict.ts +67 -0
  458. package/src/config/{RTL.js → RTL.ts} +14 -4
  459. package/src/config/Theme.ts +64 -0
  460. package/src/config/ThemeRoots.ts +41 -0
  461. package/src/css/BusyIndicator.css +80 -0
  462. package/src/css/FontFace.css +66 -0
  463. package/src/css/OverrideFontFace.css +32 -0
  464. package/src/css/SystemCSSVars.css +17 -0
  465. package/src/delegate/ItemNavigation.ts +393 -0
  466. package/src/delegate/ResizeHandler.ts +95 -0
  467. package/src/delegate/ScrollEnablement.ts +215 -0
  468. package/src/features/F6Navigation.ts +141 -0
  469. package/src/features/OpenUI5Element.ts +11 -0
  470. package/src/features/OpenUI5Enablement.ts +117 -0
  471. package/src/features/OpenUI5Support.ts +148 -0
  472. package/src/getSharedResource.ts +30 -0
  473. package/src/i18nBundle.ts +108 -0
  474. package/src/locale/{Locale.js → Locale.ts} +15 -5
  475. package/src/locale/RTLAwareRegistry.ts +16 -0
  476. package/src/locale/applyDirection.ts +18 -0
  477. package/src/locale/directionChange.ts +34 -0
  478. package/src/locale/getEffectiveDir.ts +28 -0
  479. package/src/locale/{getLocale.js → getLocale.ts} +20 -5
  480. package/src/locale/languageChange.ts +24 -0
  481. package/src/locale/{nextFallbackLocale.js → nextFallbackLocale.ts} +1 -1
  482. package/src/locale/{normalizeLocale.js → normalizeLocale.ts} +4 -2
  483. package/src/renderer/LitRenderer.ts +60 -0
  484. package/src/renderer/directives/style-map.js +72 -0
  485. package/src/renderer/executeTemplate.ts +40 -0
  486. package/src/theming/CustomStyle.ts +62 -0
  487. package/src/theming/ThemeLoaded.ts +24 -0
  488. package/src/theming/applyTheme.ts +90 -0
  489. package/src/theming/getConstructableStyle.ts +31 -0
  490. package/src/theming/getEffectiveLinksHrefs.ts +24 -0
  491. package/src/theming/getEffectiveStyle.ts +41 -0
  492. package/src/theming/getStylesString.ts +13 -0
  493. package/src/theming/getThemeDesignerTheme.ts +101 -0
  494. package/src/theming/preloadLinks.ts +24 -0
  495. package/src/thirdparty/{_merge.js → _merge.ts} +2 -2
  496. package/src/thirdparty/{isPlainObject.js → isPlainObject.ts} +1 -1
  497. package/src/thirdparty/merge.ts +5 -0
  498. package/src/types/AnimationMode.ts +33 -0
  499. package/src/types/CSSColor.ts +20 -0
  500. package/src/types/CalendarType.ts +38 -0
  501. package/src/types/DOMReference.ts +28 -0
  502. package/src/types/DataType.ts +51 -0
  503. package/src/types/Float.ts +25 -0
  504. package/src/types/Integer.ts +25 -0
  505. package/src/types/InvisibleMessageMode.ts +27 -0
  506. package/src/types/ItemNavigationBehavior.ts +26 -0
  507. package/src/types/NavigationMode.ts +33 -0
  508. package/src/types/ValueState.ts +47 -0
  509. package/src/types.ts +22 -0
  510. package/src/updateShadowRoot.ts +37 -0
  511. package/src/util/AriaLabelHelper.ts +63 -0
  512. package/src/util/Caret.ts +28 -0
  513. package/src/util/ColorConversion.ts +394 -0
  514. package/src/util/{FetchHelper.js → FetchHelper.ts} +7 -7
  515. package/src/util/FocusableElements.ts +80 -0
  516. package/src/util/HTMLSanitizer.ts +9 -0
  517. package/src/util/InvisibleMessage.ts +69 -0
  518. package/src/util/PopupUtils.ts +114 -0
  519. package/src/util/SlotsHelper.ts +39 -0
  520. package/src/util/{StringHelper.js → StringHelper.ts} +7 -7
  521. package/src/util/TabbableElements.ts +56 -0
  522. package/src/util/arraysAreEqual.ts +15 -0
  523. package/src/util/clamp.ts +12 -0
  524. package/src/util/createLinkInHead.ts +25 -0
  525. package/src/util/{createStyleInHead.js → createStyleInHead.ts} +4 -2
  526. package/src/util/debounce.ts +18 -0
  527. package/src/util/{detectNavigatorLanguage.js → detectNavigatorLanguage.ts} +1 -1
  528. package/src/util/escapeRegex.ts +11 -0
  529. package/src/util/{formatMessage.js → formatMessage.ts} +4 -3
  530. package/src/util/generateHighlightedMarkup.ts +43 -0
  531. package/src/util/getActiveElement.ts +11 -0
  532. package/src/util/getClassCopy.ts +12 -0
  533. package/src/util/{getDesigntimePropertyAsArray.js → getDesigntimePropertyAsArray.ts} +1 -1
  534. package/src/util/getEffectiveContentDensity.ts +5 -0
  535. package/src/util/getEffectiveScrollbarStyle.ts +5 -0
  536. package/src/util/getFastNavigationGroups.ts +63 -0
  537. package/src/util/{getFileExtension.js → getFileExtension.ts} +3 -3
  538. package/src/util/getNormalizedTarget.ts +16 -0
  539. package/src/util/getSingletonElementInstance.ts +13 -0
  540. package/src/util/isDefaultSlotProvided.ts +11 -0
  541. package/src/util/isElementClickable.ts +19 -0
  542. package/src/util/isElementHidden.ts +9 -0
  543. package/src/util/isElementInView.ts +15 -0
  544. package/src/util/isElementTabbable.ts +28 -0
  545. package/src/util/{isValidPropertyName.js → isValidPropertyName.ts} +7 -6
  546. package/src/util/{whenDOMReady.js → whenDOMReady.ts} +1 -1
  547. package/src/validateThemeRoot.ts +58 -0
  548. package/tsconfig.json +13 -0
  549. package/used-modules.txt +10 -0
  550. package/bundle.es5.js +0 -28
  551. package/config/.eslintrc.js +0 -3
  552. package/config/rollup.config.js +0 -1
  553. package/dist/RenderScheduler.js +0 -178
  554. package/dist/SVGIconRegistry.js +0 -60
  555. package/dist/animations/config.js +0 -5
  556. package/dist/boot.js +0 -34
  557. package/dist/compatibility/DOMObserver.js +0 -62
  558. package/dist/compatibility/patchNodeValue.js +0 -24
  559. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  560. package/dist/delegate/CustomResize.js +0 -78
  561. package/dist/delegate/NativeResize.js +0 -44
  562. package/dist/features/PropertiesFormatSupport.js +0 -8
  563. package/dist/features/browsersupport/Edge.js +0 -6
  564. package/dist/features/browsersupport/IE11.js +0 -41
  565. package/dist/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  566. package/dist/renderer/ifDefined.js +0 -21
  567. package/dist/resources/bundle.es5.js +0 -212
  568. package/dist/resources/bundle.es5.js.map +0 -1
  569. package/dist/resources/bundle.esm.js +0 -129
  570. package/dist/resources/bundle.esm.js.map +0 -1
  571. package/dist/test-resources/assets/Themes.js +0 -13
  572. package/dist/test-resources/elements/Child.js +0 -35
  573. package/dist/test-resources/elements/Generic.js +0 -84
  574. package/dist/test-resources/elements/GenericExt.js +0 -26
  575. package/dist/test-resources/elements/NoShadowDOM.js +0 -13
  576. package/dist/test-resources/elements/Parent.js +0 -37
  577. package/dist/test-resources/elements/WithStaticArea.js +0 -76
  578. package/dist/test-resources/pages/AllTestElements.html +0 -42
  579. package/dist/test-resources/pages/Configuration.html +0 -20
  580. package/dist/test-resources/pages/ConfigurationScript.html +0 -36
  581. package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -25
  582. package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -61
  583. package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -45
  584. package/dist/test-resources/specs/CustomTheme.spec.js +0 -25
  585. package/dist/test-resources/specs/StaticArea.spec.js +0 -34
  586. package/dist/test-resources/specs/Theming.spec.js +0 -31
  587. package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -258
  588. package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -93
  589. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -101
  590. package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -40
  591. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -12
  592. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -65
  593. package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -22
  594. package/dist/test-resources/specs/UI5ElementSlots.js +0 -34
  595. package/dist/theming/CSSVarsPonyfill.js +0 -24
  596. package/dist/theming/adaptCSSForIE.js +0 -90
  597. package/dist/theming/createComponentStyleTag.js +0 -49
  598. package/dist/theming/createThemePropertiesStyleTag.js +0 -20
  599. package/dist/thirdparty/Array.from.js +0 -16
  600. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  601. package/dist/thirdparty/Array.prototype.find.js +0 -46
  602. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  603. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  604. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  605. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  606. package/dist/thirdparty/Number.isInteger.js +0 -5
  607. package/dist/thirdparty/Number.isNaN.js +0 -1
  608. package/dist/thirdparty/Number.parseInt.js +0 -1
  609. package/dist/thirdparty/Object.assign.js +0 -31
  610. package/dist/thirdparty/Object.entries.js +0 -11
  611. package/dist/thirdparty/Symbol.js +0 -2
  612. package/dist/thirdparty/WeakSet.js +0 -27
  613. package/dist/thirdparty/es6-string-methods.js +0 -182
  614. package/dist/thirdparty/events-polyfills.js +0 -89
  615. package/dist/thirdparty/fetch.js +0 -1
  616. package/dist/thirdparty/template.js +0 -600
  617. package/dist/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  618. package/dist/types/CSSSize.js +0 -9
  619. package/dist/types/PopupState.js +0 -37
  620. package/dist/util/findNodeOwner.js +0 -35
  621. package/dist/util/isDescendantOf.js +0 -15
  622. package/dist/util/isNodeClickable.js +0 -19
  623. package/dist/util/isNodeHidden.js +0 -9
  624. package/dist/util/isNodeTabbable.js +0 -28
  625. package/dist/util/isSlot.js +0 -3
  626. package/dist/util/parseProperties.js +0 -89
  627. package/dist/util/setToArray.js +0 -10
  628. package/dist/webcomponentsjs/LICENSE.md +0 -19
  629. package/dist/webcomponentsjs/README.md +0 -229
  630. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  631. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  632. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  633. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  634. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  635. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  636. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  637. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  638. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  639. package/dist/webcomponentsjs/package.json +0 -46
  640. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  641. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  642. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  643. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  644. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  645. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  646. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  647. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  648. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  649. package/src/AssetRegistry.js +0 -10
  650. package/src/CustomElementsRegistry.js +0 -39
  651. package/src/Device.js +0 -823
  652. package/src/EventProvider.js +0 -81
  653. package/src/FeaturesRegistry.js +0 -11
  654. package/src/FontFace.js +0 -73
  655. package/src/InitialConfiguration.js +0 -131
  656. package/src/Keys.js +0 -170
  657. package/src/RenderQueue.js +0 -42
  658. package/src/RenderScheduler.js +0 -178
  659. package/src/SVGIconRegistry.js +0 -60
  660. package/src/StaticArea.js +0 -41
  661. package/src/StaticAreaItem.js +0 -105
  662. package/src/SystemCSSVars.js +0 -31
  663. package/src/Theming.js +0 -3
  664. package/src/UI5Element.js +0 -992
  665. package/src/UI5ElementMetadata.js +0 -187
  666. package/src/animations/animate.js +0 -53
  667. package/src/animations/config.js +0 -5
  668. package/src/animations/scroll.js +0 -28
  669. package/src/asset-registries/Icons.js +0 -31
  670. package/src/asset-registries/LocaleData.js +0 -125
  671. package/src/asset-registries/Themes.js +0 -87
  672. package/src/asset-registries/i18n.js +0 -106
  673. package/src/boot.js +0 -34
  674. package/src/compatibility/DOMObserver.js +0 -62
  675. package/src/compatibility/patchNodeValue.js +0 -24
  676. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  677. package/src/config/AnimationMode.js +0 -13
  678. package/src/config/FormatSettings.js +0 -13
  679. package/src/config/Language.js +0 -41
  680. package/src/config/NoConflict.js +0 -51
  681. package/src/config/Theme.js +0 -28
  682. package/src/delegate/CustomResize.js +0 -78
  683. package/src/delegate/ItemNavigation.js +0 -282
  684. package/src/delegate/NativeResize.js +0 -44
  685. package/src/delegate/ResizeHandler.js +0 -65
  686. package/src/delegate/ScrollEnablement.js +0 -159
  687. package/src/features/OpenUI5Support.js +0 -90
  688. package/src/features/PropertiesFormatSupport.js +0 -8
  689. package/src/features/browsersupport/Edge.js +0 -6
  690. package/src/features/browsersupport/IE11.js +0 -41
  691. package/src/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  692. package/src/i18nBundle.js +0 -33
  693. package/src/locale/RTLAwareRegistry.js +0 -14
  694. package/src/locale/applyDirection.js +0 -15
  695. package/src/locale/languageChange.js +0 -22
  696. package/src/renderer/LitRenderer.js +0 -15
  697. package/src/renderer/ifDefined.js +0 -21
  698. package/src/theming/CSSVarsPonyfill.js +0 -24
  699. package/src/theming/CustomStyle.js +0 -19
  700. package/src/theming/adaptCSSForIE.js +0 -90
  701. package/src/theming/applyTheme.js +0 -81
  702. package/src/theming/createComponentStyleTag.js +0 -49
  703. package/src/theming/createThemePropertiesStyleTag.js +0 -20
  704. package/src/theming/getConstructableStyle.js +0 -25
  705. package/src/theming/getEffectiveStyle.js +0 -15
  706. package/src/theming/getThemeDesignerTheme.js +0 -67
  707. package/src/thirdparty/Array.from.js +0 -16
  708. package/src/thirdparty/Array.prototype.fill.js +0 -44
  709. package/src/thirdparty/Array.prototype.find.js +0 -46
  710. package/src/thirdparty/Array.prototype.includes.js +0 -51
  711. package/src/thirdparty/Element.prototype.closest.js +0 -11
  712. package/src/thirdparty/Element.prototype.matches.js +0 -6
  713. package/src/thirdparty/Map.prototype.keys.js +0 -9
  714. package/src/thirdparty/Number.isInteger.js +0 -5
  715. package/src/thirdparty/Number.isNaN.js +0 -1
  716. package/src/thirdparty/Number.parseInt.js +0 -1
  717. package/src/thirdparty/Object.assign.js +0 -31
  718. package/src/thirdparty/Object.entries.js +0 -11
  719. package/src/thirdparty/Symbol.js +0 -2
  720. package/src/thirdparty/WeakSet.js +0 -27
  721. package/src/thirdparty/es6-string-methods.js +0 -182
  722. package/src/thirdparty/events-polyfills.js +0 -89
  723. package/src/thirdparty/fetch.js +0 -1
  724. package/src/thirdparty/merge.js +0 -10
  725. package/src/thirdparty/template.js +0 -600
  726. package/src/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  727. package/src/types/AnimationMode.js +0 -7
  728. package/src/types/CSSSize.js +0 -9
  729. package/src/types/CalendarType.js +0 -22
  730. package/src/types/DataType.js +0 -25
  731. package/src/types/Float.js +0 -10
  732. package/src/types/Integer.js +0 -9
  733. package/src/types/ItemNavigationBehavior.js +0 -21
  734. package/src/types/NavigationMode.js +0 -7
  735. package/src/types/PopupState.js +0 -37
  736. package/src/types/ValueState.js +0 -22
  737. package/src/util/FocusableElements.js +0 -66
  738. package/src/util/TabbableElements.js +0 -47
  739. package/src/util/findNodeOwner.js +0 -35
  740. package/src/util/isDescendantOf.js +0 -15
  741. package/src/util/isNodeClickable.js +0 -19
  742. package/src/util/isNodeHidden.js +0 -9
  743. package/src/util/isNodeTabbable.js +0 -28
  744. package/src/util/isSlot.js +0 -3
  745. package/src/util/setToArray.js +0 -10
@@ -1,28 +1,43 @@
1
1
  import detectNavigatorLanguage from "../util/detectNavigatorLanguage.js";
2
2
  import { getLanguage as getConfigLanguage } from "../config/Language.js";
3
3
  import Locale from "./Locale.js";
4
+ import { DEFAULT_LOCALE } from "../generated/AssetParameters.js";
4
5
 
5
- const convertToLocaleOrNull = lang => {
6
+ const cache = new Map<string, Locale>();
7
+
8
+ const getLocaleInstance = (lang: string) => {
9
+ if (!cache.has(lang)) {
10
+ cache.set(lang, new Locale(lang));
11
+ }
12
+
13
+ return cache.get(lang)!;
14
+ };
15
+
16
+ const convertToLocaleOrNull = (lang: string) => {
6
17
  try {
7
18
  if (lang && typeof lang === "string") {
8
- return new Locale(lang);
19
+ return getLocaleInstance(lang);
9
20
  }
10
21
  } catch (e) {
11
22
  // ignore
12
23
  }
24
+
25
+ return new Locale(DEFAULT_LOCALE);
13
26
  };
14
27
 
15
28
  /**
16
29
  * Returns the locale based on the parameter or configured language Configuration#getLanguage
17
30
  * If no language has been configured - a new locale based on browser language is returned
18
31
  */
19
- const getLocale = lang => {
32
+ const getLocale = (lang?: string): Locale => {
20
33
  if (lang) {
21
34
  return convertToLocaleOrNull(lang);
22
35
  }
23
36
 
24
- if (getConfigLanguage()) {
25
- return new Locale(getConfigLanguage());
37
+ const configLanguage = getConfigLanguage();
38
+
39
+ if (configLanguage) {
40
+ return getLocaleInstance(configLanguage);
26
41
  }
27
42
 
28
43
  return convertToLocaleOrNull(detectNavigatorLanguage());
@@ -0,0 +1,24 @@
1
+ import EventProvider from "../EventProvider.js";
2
+
3
+ type LanguageChangeCallback = (lang: string) => Promise<void | Array<void>>;
4
+
5
+ const eventProvider = new EventProvider<string, Promise<void | Array<void>>>();
6
+ const LANG_CHANGE = "languageChange";
7
+
8
+ const attachLanguageChange = (listener: LanguageChangeCallback) => {
9
+ eventProvider.attachEvent(LANG_CHANGE, listener);
10
+ };
11
+
12
+ const detachLanguageChange = (listener: LanguageChangeCallback) => {
13
+ eventProvider.detachEvent(LANG_CHANGE, listener);
14
+ };
15
+
16
+ const fireLanguageChange = (lang: string) => {
17
+ return eventProvider.fireEventAsync(LANG_CHANGE, lang);
18
+ };
19
+
20
+ export {
21
+ attachLanguageChange,
22
+ detachLanguageChange,
23
+ fireLanguageChange,
24
+ };
@@ -6,7 +6,7 @@ import { DEFAULT_LOCALE } from "../generated/AssetParameters.js";
6
6
  * @param {string} locale Locale string in Java format (underscores) or null
7
7
  * @returns {string} Next fallback Locale or "en" if no fallbacks found.
8
8
  */
9
- const nextFallbackLocale = locale => {
9
+ const nextFallbackLocale = (locale: string) => {
10
10
  if (!locale) {
11
11
  return DEFAULT_LOCALE;
12
12
  }
@@ -16,7 +16,7 @@ const M_ISO639_NEW_TO_OLD = {
16
16
  * @param {string} locale locale to normalize
17
17
  * @returns {string} Normalized locale, "undefined" if the locale can't be normalized or the default locale, if no locale provided.
18
18
  */
19
- const normalizeLocale = locale => {
19
+ const normalizeLocale = (locale: string) => {
20
20
  let m;
21
21
 
22
22
  if (!locale) {
@@ -30,7 +30,7 @@ const normalizeLocale = locale => {
30
30
  const variants = m[4] ? m[4].slice(1) : undefined;
31
31
  const isPrivate = m[6];
32
32
 
33
- language = M_ISO639_NEW_TO_OLD[language] || language;
33
+ language = M_ISO639_NEW_TO_OLD[language as keyof typeof M_ISO639_NEW_TO_OLD] || language;
34
34
 
35
35
  // recognize and convert special SAP supportability locales (overwrites m[]!)
36
36
  if ((isPrivate && (m = SAPSupportabilityLocales.exec(isPrivate))) /* eslint-disable-line */ ||
@@ -49,6 +49,8 @@ const normalizeLocale = locale => {
49
49
 
50
50
  return language + (region ? "_" + region + (variants ? "_" + variants.replace("-", "_") : "") : ""); /* eslint-disable-line */
51
51
  }
52
+
53
+ return DEFAULT_LOCALE;
52
54
  };
53
55
 
54
56
  export default normalizeLocale;
@@ -0,0 +1,60 @@
1
+ import {
2
+ render,
3
+ html,
4
+ svg,
5
+ TemplateResult,
6
+ RenderOptions,
7
+ } from "lit-html";
8
+
9
+ import { getFeature } from "../FeaturesRegistry.js";
10
+ import type { LitStatic } from "../CustomElementsScope.js";
11
+ import type OpenUI5Enablement from "../features/OpenUI5Enablement.js";
12
+ import type UI5Element from "../UI5Element.js";
13
+ import { TemplateFunctionResult } from "./executeTemplate.js";
14
+
15
+ const effectiveHtml = (strings: TemplateStringsArray, ...values: Array<unknown>) => {
16
+ const litStatic = getFeature<typeof LitStatic>("LitStatic");
17
+ const fn = litStatic ? litStatic.html : html;
18
+ return fn(strings, ...values);
19
+ };
20
+
21
+ const effectiveSvg = (strings: TemplateStringsArray, ...values: Array<unknown>) => {
22
+ const litStatic = getFeature<typeof LitStatic>("LitStatic");
23
+ const fn = litStatic ? litStatic.svg : svg;
24
+ return fn(strings, ...values);
25
+ };
26
+
27
+ const litRender = (templateResult: TemplateFunctionResult, container: HTMLElement | DocumentFragment, styleStrOrHrefsArr: string | Array<string> | undefined, forStaticArea: boolean, options: RenderOptions) => {
28
+ const openUI5Enablement = getFeature<typeof OpenUI5Enablement>("OpenUI5Enablement");
29
+ if (openUI5Enablement && !forStaticArea) {
30
+ templateResult = openUI5Enablement.wrapTemplateResultInBusyMarkup(effectiveHtml, options.host as UI5Element, templateResult as TemplateResult);
31
+ }
32
+
33
+ if (typeof styleStrOrHrefsArr === "string") {
34
+ templateResult = effectiveHtml`<style>${styleStrOrHrefsArr}</style>${templateResult}`;
35
+ } else if (Array.isArray(styleStrOrHrefsArr) && styleStrOrHrefsArr.length) {
36
+ templateResult = effectiveHtml`${styleStrOrHrefsArr.map(href => effectiveHtml`<link type="text/css" rel="stylesheet" href="${href}">`)}${templateResult}`;
37
+ }
38
+ render(templateResult as TemplateResult, container, options);
39
+ };
40
+
41
+ const scopeTag = (tag: string, tags: Array<string>, suffix: string) => {
42
+ const litStatic = getFeature<typeof LitStatic>("LitStatic");
43
+ if (litStatic) {
44
+ return litStatic.unsafeStatic((tags || []).includes(tag) ? `${tag}-${suffix}` : tag);
45
+ }
46
+ };
47
+
48
+ export {
49
+ effectiveHtml as html,
50
+ effectiveSvg as svg,
51
+ };
52
+ export { scopeTag };
53
+ export { repeat } from "lit-html/directives/repeat.js";
54
+ export { classMap } from "lit-html/directives/class-map.js";
55
+ // @ts-ignore style-map is a JS file
56
+ export { styleMap } from "./directives/style-map.js";
57
+ export { ifDefined } from "lit-html/directives/if-defined.js";
58
+ export { unsafeHTML } from "lit-html/directives/unsafe-html.js";
59
+
60
+ export default litRender;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2018 Google LLC
4
+ * SPDX-License-Identifier: BSD-3-Clause
5
+ */
6
+
7
+ /**
8
+ * This is the original style-map.js directive from lit-html 2 with the only difference that "render" is not called even for the first rendering (update is used instead)
9
+ */
10
+
11
+ import { noChange } from 'lit-html';
12
+ import { directive, Directive, PartType, } from 'lit-html/directive.js';
13
+ class StyleMapDirective extends Directive {
14
+ constructor(partInfo) {
15
+ var _a;
16
+ super(partInfo);
17
+ if (partInfo.type !== PartType.ATTRIBUTE ||
18
+ partInfo.name !== 'style' ||
19
+ ((_a = partInfo.strings) === null || _a === void 0 ? void 0 : _a.length) > 2) {
20
+ throw new Error('The `styleMap` directive must be used in the `style` attribute ' +
21
+ 'and must be the only part in the attribute.');
22
+ }
23
+ }
24
+ render(styleInfo) {
25
+ return "";
26
+ }
27
+ update(part, [styleInfo]) {
28
+ const { style } = part.element;
29
+ if (this._previousStyleProperties === undefined) {
30
+ this._previousStyleProperties = new Set();
31
+ for (const name in styleInfo) {
32
+ this._previousStyleProperties.add(name);
33
+ }
34
+ // return this.render(styleInfo);
35
+ }
36
+ // Remove old properties that no longer exist in styleInfo
37
+ // We use forEach() instead of for-of so that re don't require down-level
38
+ // iteration.
39
+ this._previousStyleProperties.forEach((name) => {
40
+ // If the name isn't in styleInfo or it's null/undefined
41
+ if (styleInfo[name] == null) {
42
+ this._previousStyleProperties.delete(name);
43
+ if (name.includes('-')) {
44
+ style.removeProperty(name);
45
+ }
46
+ else {
47
+ // Note reset using empty string (vs null) as IE11 does not always
48
+ // reset via null (https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle/style#setting_styles)
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ style[name] = '';
51
+ }
52
+ }
53
+ });
54
+ // Add or update properties
55
+ for (const name in styleInfo) {
56
+ const value = styleInfo[name];
57
+ if (value != null) {
58
+ this._previousStyleProperties.add(name);
59
+ if (name.includes('-')) {
60
+ style.setProperty(name, value);
61
+ }
62
+ else {
63
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
+ style[name] = value;
65
+ }
66
+ }
67
+ }
68
+ return noChange;
69
+ }
70
+ }
71
+
72
+ export const styleMap = directive(StyleMapDirective);
@@ -0,0 +1,40 @@
1
+ import { getCustomElementsScopingSuffix, shouldScopeCustomElement } from "../CustomElementsScopeUtils.js";
2
+ import type UI5Element from "../UI5Element.js";
3
+
4
+ type TemplateFunctionResult = object;
5
+ type TemplateFunction = (component: UI5Element, tagsToScope: Array<string>, scope: string | undefined) => TemplateFunctionResult;
6
+
7
+ /**
8
+ * Runs a component's template with the component's current state, while also scoping HTML
9
+ *
10
+ * @param template - the template to execute
11
+ * @param component - the component
12
+ * @public
13
+ */
14
+ const executeTemplate = (template: TemplateFunction, component: UI5Element): TemplateFunctionResult => {
15
+ const tagsToScope = getTagsToScope(component);
16
+ const scope = getCustomElementsScopingSuffix();
17
+ return template(component, tagsToScope, scope);
18
+ };
19
+
20
+ /**
21
+ * Returns all tags, used inside component's template subject to scoping.
22
+ * @param component - the component
23
+ * @returns {Array[]}
24
+ * @private
25
+ */
26
+ const getTagsToScope = (component: UI5Element) => {
27
+ const ctor = component.constructor as typeof UI5Element;
28
+
29
+ const componentTag = ctor.getMetadata().getPureTag();
30
+ const tagsToScope = ctor.getUniqueDependencies().map((dep: typeof UI5Element) => dep.getMetadata().getPureTag()).filter(shouldScopeCustomElement);
31
+
32
+ if (shouldScopeCustomElement(componentTag)) {
33
+ tagsToScope.push(componentTag);
34
+ }
35
+
36
+ return tagsToScope;
37
+ };
38
+
39
+ export default executeTemplate;
40
+ export type { TemplateFunction, TemplateFunctionResult };
@@ -0,0 +1,62 @@
1
+ import { reRenderAllUI5Elements } from "../Render.js";
2
+ import getSharedResource from "../getSharedResource.js";
3
+ import EventProvider from "../EventProvider.js";
4
+
5
+ type CustomCSSChangeCallback = (tag: string) => void;
6
+
7
+ const eventProvider = getSharedResource("CustomStyle.eventProvider", new EventProvider<string, void>());
8
+ const CUSTOM_CSS_CHANGE = "CustomCSSChange";
9
+
10
+ const attachCustomCSSChange = (listener: CustomCSSChangeCallback) => {
11
+ eventProvider.attachEvent(CUSTOM_CSS_CHANGE, listener);
12
+ };
13
+
14
+ const detachCustomCSSChange = (listener: CustomCSSChangeCallback) => {
15
+ eventProvider.detachEvent(CUSTOM_CSS_CHANGE, listener);
16
+ };
17
+
18
+ const fireCustomCSSChange = (tag: string) => {
19
+ return eventProvider.fireEvent(CUSTOM_CSS_CHANGE, tag);
20
+ };
21
+
22
+ const customCSSFor = getSharedResource<Record<string, Array<string>>>("CustomStyle.customCSSFor", {});
23
+
24
+ // Listen to the eventProvider, in case other copies of this CustomStyle module fire this
25
+ // event, and this copy would therefore need to reRender the ui5 webcomponents; but
26
+ // don't reRender if it was this copy that fired the event to begin with.
27
+ let skipRerender: boolean;
28
+ attachCustomCSSChange((tag: string) => {
29
+ if (!skipRerender) {
30
+ reRenderAllUI5Elements({ tag });
31
+ }
32
+ });
33
+
34
+ const addCustomCSS = (tag: string, css: string) => {
35
+ if (!customCSSFor[tag]) {
36
+ customCSSFor[tag] = [];
37
+ }
38
+ customCSSFor[tag].push(css);
39
+
40
+ skipRerender = true;
41
+ try {
42
+ // The event is fired and the attached event listeners are all called synchronously
43
+ // The skipRerender flag will be used to avoid calling reRenderAllUI5Elements twice when it is this copy
44
+ // of CustomStyle.js which is firing the `CustomCSSChange` event.
45
+ fireCustomCSSChange(tag);
46
+ } finally {
47
+ skipRerender = false;
48
+ }
49
+
50
+ return reRenderAllUI5Elements({ tag });
51
+ };
52
+
53
+ const getCustomCSS = (tag: string) => {
54
+ return customCSSFor[tag] ? customCSSFor[tag].join("") : "";
55
+ };
56
+
57
+ export {
58
+ addCustomCSS,
59
+ getCustomCSS,
60
+ attachCustomCSSChange,
61
+ detachCustomCSSChange,
62
+ };
@@ -0,0 +1,24 @@
1
+ import EventProvider from "../EventProvider.js";
2
+
3
+ type ThemeLoadedCallback = (theme: string) => void;
4
+
5
+ const eventProvider = new EventProvider<string, void>();
6
+ const THEME_LOADED = "themeLoaded";
7
+
8
+ const attachThemeLoaded = (listener: ThemeLoadedCallback) => {
9
+ eventProvider.attachEvent(THEME_LOADED, listener);
10
+ };
11
+
12
+ const detachThemeLoaded = (listener: ThemeLoadedCallback) => {
13
+ eventProvider.detachEvent(THEME_LOADED, listener);
14
+ };
15
+
16
+ const fireThemeLoaded = (theme: string) => {
17
+ return eventProvider.fireEvent(THEME_LOADED, theme);
18
+ };
19
+
20
+ export {
21
+ attachThemeLoaded,
22
+ detachThemeLoaded,
23
+ fireThemeLoaded,
24
+ };
@@ -0,0 +1,90 @@
1
+ import { getThemeProperties, getRegisteredPackages, isThemeRegistered } from "../asset-registries/Themes.js";
2
+ import { removeStyle, createOrUpdateStyle } from "../ManagedStyles.js";
3
+ import getThemeDesignerTheme from "./getThemeDesignerTheme.js";
4
+ import { fireThemeLoaded } from "./ThemeLoaded.js";
5
+ import { getFeature } from "../FeaturesRegistry.js";
6
+ import { attachCustomThemeStylesToHead, getThemeRoot } from "../config/ThemeRoots.js";
7
+ import type OpenUI5Support from "../features/OpenUI5Support.js";
8
+ import { DEFAULT_THEME } from "../generated/AssetParameters.js";
9
+
10
+ const BASE_THEME_PACKAGE = "@ui5/webcomponents-theming";
11
+
12
+ const isThemeBaseRegistered = () => {
13
+ const registeredPackages = getRegisteredPackages();
14
+ return registeredPackages.has(BASE_THEME_PACKAGE);
15
+ };
16
+
17
+ const loadThemeBase = async (theme: string) => {
18
+ if (!isThemeBaseRegistered()) {
19
+ return;
20
+ }
21
+
22
+ const cssData = await getThemeProperties(BASE_THEME_PACKAGE, theme);
23
+ if (cssData) {
24
+ createOrUpdateStyle(cssData, "data-ui5-theme-properties", BASE_THEME_PACKAGE);
25
+ }
26
+ };
27
+
28
+ const deleteThemeBase = () => {
29
+ removeStyle("data-ui5-theme-properties", BASE_THEME_PACKAGE);
30
+ };
31
+
32
+ const loadComponentPackages = async (theme: string) => {
33
+ const registeredPackages = getRegisteredPackages();
34
+
35
+ const packagesStylesPromises = [...registeredPackages].map(async packageName => {
36
+ if (packageName === BASE_THEME_PACKAGE) {
37
+ return;
38
+ }
39
+
40
+ const cssData = await getThemeProperties(packageName, theme);
41
+ if (cssData) {
42
+ createOrUpdateStyle(cssData, "data-ui5-theme-properties", packageName);
43
+ }
44
+ });
45
+
46
+ return Promise.all(packagesStylesPromises);
47
+ };
48
+
49
+ const detectExternalTheme = async (theme: string) => {
50
+ // If theme designer theme is detected, use this
51
+ const extTheme = getThemeDesignerTheme();
52
+ if (extTheme) {
53
+ return extTheme;
54
+ }
55
+
56
+ // If OpenUI5Support is enabled, try to find out if it loaded variables
57
+ const openUI5Support = getFeature<typeof OpenUI5Support>("OpenUI5Support");
58
+ if (openUI5Support) {
59
+ const varsLoaded = openUI5Support.cssVariablesLoaded();
60
+ if (varsLoaded) {
61
+ return {
62
+ themeName: openUI5Support.getConfigurationSettingsObject()?.theme, // just themeName
63
+ baseThemeName: "", // baseThemeName is only relevant for custom themes
64
+ };
65
+ }
66
+ } else if (getThemeRoot()) {
67
+ await attachCustomThemeStylesToHead(theme);
68
+
69
+ return getThemeDesignerTheme();
70
+ }
71
+ };
72
+
73
+ const applyTheme = async (theme: string) => {
74
+ const extTheme = await detectExternalTheme(theme);
75
+
76
+ // Only load theme_base properties if there is no externally loaded theme, or there is, but it is not being loaded
77
+ if (!extTheme || theme !== extTheme.themeName) {
78
+ await loadThemeBase(theme);
79
+ } else {
80
+ deleteThemeBase();
81
+ }
82
+
83
+ // Always load component packages properties. For non-registered themes, try with the base theme, if any
84
+ const packagesTheme = isThemeRegistered(theme) ? theme : extTheme && extTheme.baseThemeName;
85
+ await loadComponentPackages(packagesTheme || DEFAULT_THEME);
86
+
87
+ fireThemeLoaded(theme);
88
+ };
89
+
90
+ export default applyTheme;
@@ -0,0 +1,31 @@
1
+ import getEffectiveStyle from "./getEffectiveStyle.js";
2
+ import { attachCustomCSSChange } from "./CustomStyle.js";
3
+ import UI5Element from "../UI5Element.js";
4
+
5
+ const constructableStyleMap = new Map<string, Array<CSSStyleSheet>>();
6
+
7
+ attachCustomCSSChange((tag: string) => {
8
+ constructableStyleMap.delete(`${tag}_normal`); // there is custom CSS only for the component itself, not for its static area part
9
+ });
10
+
11
+ /**
12
+ * Returns (and caches) a constructable style sheet for a web component class
13
+ * Note: Chrome
14
+ * @param ElementClass
15
+ * @returns {*}
16
+ */
17
+ const getConstructableStyle = (ElementClass: typeof UI5Element, forStaticArea = false) => {
18
+ const tag = ElementClass.getMetadata().getTag();
19
+ const key = `${tag}_${forStaticArea ? "static" : "normal"}`;
20
+
21
+ if (!constructableStyleMap.has(key)) {
22
+ const styleContent = getEffectiveStyle(ElementClass, forStaticArea);
23
+ const style = new CSSStyleSheet();
24
+ style.replaceSync(styleContent);
25
+ constructableStyleMap.set(key, [style]);
26
+ }
27
+
28
+ return constructableStyleMap.get(key)!;
29
+ };
30
+
31
+ export default getConstructableStyle;
@@ -0,0 +1,24 @@
1
+ import { getUrl } from "../CSP.js";
2
+ import { getFeature } from "../FeaturesRegistry.js";
3
+ import type UI5Element from "../UI5Element.js";
4
+ import type OpenUI5Enablement from "../features/OpenUI5Enablement.js";
5
+ import { StyleData, StyleDataCSP } from "../types.js";
6
+
7
+ const getEffectiveLinksHrefs = (ElementClass: typeof UI5Element, forStaticArea = false) => {
8
+ const stylesData: StyleData | Array<StyleData> = ElementClass[forStaticArea ? "staticAreaStyles" : "styles"];
9
+
10
+ if (!stylesData) {
11
+ return;
12
+ }
13
+
14
+ const stylesDataArray: Array<StyleData> = Array.isArray(stylesData) ? stylesData : [stylesData];
15
+
16
+ const openUI5Enablement = getFeature<typeof OpenUI5Enablement>("OpenUI5Enablement");
17
+ if (openUI5Enablement) {
18
+ stylesDataArray.push(openUI5Enablement.getBusyIndicatorStyles());
19
+ }
20
+
21
+ return stylesDataArray.flat().filter(data => !!data).map(data => getUrl((data as StyleDataCSP).packageName, (data as StyleDataCSP).fileName));
22
+ };
23
+
24
+ export default getEffectiveLinksHrefs;
@@ -0,0 +1,41 @@
1
+ import { getCustomCSS, attachCustomCSSChange } from "./CustomStyle.js";
2
+ import getStylesString from "./getStylesString.js";
3
+ import { getFeature } from "../FeaturesRegistry.js";
4
+ import type UI5Element from "../UI5Element.js";
5
+ import OpenUI5Enablement from "../features/OpenUI5Enablement.js";
6
+
7
+ const effectiveStyleMap = new Map<string, string>();
8
+
9
+ attachCustomCSSChange((tag: string) => {
10
+ effectiveStyleMap.delete(`${tag}_normal`); // there is custom CSS only for the component itself, not for its static area part
11
+ });
12
+
13
+ const getEffectiveStyle = (ElementClass: typeof UI5Element, forStaticArea = false) => {
14
+ const tag = ElementClass.getMetadata().getTag();
15
+ const key = `${tag}_${forStaticArea ? "static" : "normal"}`;
16
+ const openUI5Enablement = getFeature<typeof OpenUI5Enablement>("OpenUI5Enablement");
17
+
18
+ if (!effectiveStyleMap.has(key)) {
19
+ let effectiveStyle;
20
+ let busyIndicatorStyles = "";
21
+
22
+ if (openUI5Enablement) {
23
+ busyIndicatorStyles = getStylesString(openUI5Enablement.getBusyIndicatorStyles());
24
+ }
25
+
26
+ if (forStaticArea) {
27
+ effectiveStyle = getStylesString(ElementClass.staticAreaStyles);
28
+ } else {
29
+ const customStyle = getCustomCSS(tag) || "";
30
+ const builtInStyles = getStylesString(ElementClass.styles);
31
+ effectiveStyle = `${builtInStyles} ${customStyle}`;
32
+ }
33
+
34
+ effectiveStyle = `${effectiveStyle} ${busyIndicatorStyles}`;
35
+ effectiveStyleMap.set(key, effectiveStyle);
36
+ }
37
+
38
+ return effectiveStyleMap.get(key)!; // The key is guaranteed to exist
39
+ };
40
+
41
+ export default getEffectiveStyle;
@@ -0,0 +1,13 @@
1
+ import { StyleData } from "../types.js";
2
+
3
+ const getStylesString = (styles: Array<StyleData> | StyleData) => {
4
+ if (Array.isArray(styles)) {
5
+ return styles.filter(style => !!style).flat().map((style: StyleData) => {
6
+ return typeof style === "string" ? style : style.content;
7
+ }).join(" ");
8
+ }
9
+
10
+ return typeof styles === "string" ? styles : styles.content;
11
+ };
12
+
13
+ export default getStylesString;
@@ -0,0 +1,101 @@
1
+ type ThemeDescriptor = {
2
+ themeName: string,
3
+ baseThemeName?: string,
4
+ };
5
+
6
+ type ThemeMetadata = {
7
+ Path: string,
8
+ Extends: Array<string>,
9
+ };
10
+
11
+ const warnings = new Set<string>();
12
+
13
+ const getThemeMetadata = () => {
14
+ // Check if the class was already applied, most commonly to the link/style tag with the CSS Variables
15
+ let el = document.querySelector(".sapThemeMetaData-Base-baseLib") || document.querySelector(".sapThemeMetaData-UI5-sap-ui-core");
16
+ if (el) {
17
+ return getComputedStyle(el).backgroundImage;
18
+ }
19
+
20
+ el = document.createElement("span");
21
+ (el as HTMLSpanElement).style.display = "none";
22
+
23
+ // Try with sapThemeMetaData-Base-baseLib first
24
+ el.classList.add("sapThemeMetaData-Base-baseLib");
25
+ document.body.appendChild(el);
26
+ let metadata = getComputedStyle(el).backgroundImage;
27
+
28
+ // Try with sapThemeMetaData-UI5-sap-ui-core only if the previous selector was not found
29
+ if (metadata === "none") {
30
+ el.classList.add("sapThemeMetaData-UI5-sap-ui-core");
31
+ metadata = getComputedStyle(el).backgroundImage;
32
+ }
33
+
34
+ document.body.removeChild(el);
35
+
36
+ return metadata;
37
+ };
38
+
39
+ const parseThemeMetadata = (metadataString: string) => {
40
+ const params = /\(["']?data:text\/plain;utf-8,(.*?)['"]?\)$/i.exec(metadataString);
41
+ if (params && params.length >= 2) {
42
+ let paramsString = params[1];
43
+ paramsString = paramsString.replace(/\\"/g, `"`);
44
+ if (paramsString.charAt(0) !== "{" && paramsString.charAt(paramsString.length - 1) !== "}") {
45
+ try {
46
+ paramsString = decodeURIComponent(paramsString);
47
+ } catch (ex) {
48
+ if (!warnings.has("decode")) {
49
+ console.warn("Malformed theme metadata string, unable to decodeURIComponent"); // eslint-disable-line
50
+ warnings.add("decode");
51
+ }
52
+ return;
53
+ }
54
+ }
55
+ try {
56
+ return JSON.parse(paramsString) as ThemeMetadata;
57
+ } catch (ex) {
58
+ if (!warnings.has("parse")) {
59
+ console.warn("Malformed theme metadata string, unable to parse JSON"); // eslint-disable-line
60
+ warnings.add("parse");
61
+ }
62
+ }
63
+ }
64
+ };
65
+
66
+ const processThemeMetadata = (metadata: ThemeMetadata): ThemeDescriptor | undefined => {
67
+ let themeName;
68
+ let baseThemeName;
69
+
70
+ try {
71
+ themeName = metadata.Path.match(/\.([^.]+)\.css_variables$/)![1];
72
+ baseThemeName = metadata.Extends[0];
73
+ } catch (ex) {
74
+ if (!warnings.has("object")) {
75
+ console.warn("Malformed theme metadata Object", metadata); // eslint-disable-line
76
+ warnings.add("object");
77
+ }
78
+ return;
79
+ }
80
+
81
+ return {
82
+ themeName,
83
+ baseThemeName,
84
+ };
85
+ };
86
+
87
+ const getThemeDesignerTheme = (): ThemeDescriptor | undefined => {
88
+ const metadataString = getThemeMetadata();
89
+ if (!metadataString || metadataString === "none") {
90
+ return;
91
+ }
92
+
93
+ const metadata = parseThemeMetadata(metadataString);
94
+
95
+ if (metadata) {
96
+ return processThemeMetadata(metadata);
97
+ }
98
+ };
99
+
100
+ export default getThemeDesignerTheme;
101
+ export type { ThemeDescriptor };