@ui5/webcomponents-base 0.0.0-c6155714e → 0.0.0-c638668a1

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 (476) hide show
  1. package/.eslintignore +5 -0
  2. package/CHANGELOG.md +293 -0
  3. package/README.md +26 -2
  4. package/bundle.esm.js +18 -16
  5. package/dist/AssetRegistry.js +8 -6
  6. package/dist/Boot.js +61 -0
  7. package/dist/CSP.js +59 -0
  8. package/dist/CustomElementsRegistry.js +95 -0
  9. package/dist/CustomElementsScope.js +108 -0
  10. package/dist/DOMObserver.js +65 -0
  11. package/dist/Device.js +69 -776
  12. package/dist/EventProvider.js +38 -26
  13. package/dist/FeaturesRegistry.js +4 -1
  14. package/dist/FontFace.js +20 -56
  15. package/dist/InitialConfiguration.js +61 -21
  16. package/dist/Keys.js +271 -0
  17. package/dist/ManagedStyles.js +83 -0
  18. package/dist/MediaRange.js +109 -0
  19. package/dist/PropertiesFileFormat.js +95 -0
  20. package/dist/Render.js +175 -0
  21. package/dist/RenderQueue.js +41 -17
  22. package/dist/RenderScheduler.js +24 -140
  23. package/dist/Runtimes.js +107 -0
  24. package/dist/StaticArea.js +3 -0
  25. package/dist/StaticAreaItem.js +101 -0
  26. package/dist/SystemCSSVars.js +10 -0
  27. package/dist/Theming.js +3 -44
  28. package/dist/UI5Element.js +503 -314
  29. package/dist/UI5ElementMetadata.js +194 -23
  30. package/dist/asset-registries/Icons.js +129 -14
  31. package/dist/asset-registries/Illustrations.js +30 -0
  32. package/dist/asset-registries/LocaleData.js +108 -50
  33. package/dist/asset-registries/Themes.js +35 -32
  34. package/dist/asset-registries/i18n.js +80 -34
  35. package/dist/assets-meta/IconCollectionsAlias.js +18 -0
  36. package/dist/config/AnimationMode.js +16 -2
  37. package/dist/config/CalendarType.js +7 -7
  38. package/dist/config/FormatSettings.js +5 -1
  39. package/dist/config/Language.js +62 -3
  40. package/dist/config/NoConflict.js +10 -3
  41. package/dist/config/Theme.js +21 -3
  42. package/dist/css/FontFace.css +45 -0
  43. package/dist/css/OverrideFontFace.css +32 -0
  44. package/dist/css/SystemCSSVars.css +17 -0
  45. package/dist/delegate/ItemNavigation.js +246 -130
  46. package/dist/delegate/ResizeHandler.js +78 -38
  47. package/dist/delegate/ScrollEnablement.js +122 -14
  48. package/dist/features/F6Navigation.js +106 -0
  49. package/dist/features/OpenUI5Support.js +125 -0
  50. package/dist/generated/AssetParameters.js +13 -0
  51. package/dist/generated/VersionInfo.js +10 -0
  52. package/dist/generated/css/FontFace.css.js +5 -0
  53. package/dist/generated/css/OverrideFontFace.css.js +5 -0
  54. package/dist/generated/css/SystemCSSVars.css.js +5 -0
  55. package/dist/getSharedResource.js +30 -0
  56. package/dist/i18nBundle.js +62 -11
  57. package/dist/isLegacyBrowser.js +3 -0
  58. package/dist/{Locale.js → locale/Locale.js} +0 -10
  59. package/dist/locale/RTLAwareRegistry.js +14 -0
  60. package/dist/locale/applyDirection.js +17 -0
  61. package/dist/locale/directionChange.js +32 -0
  62. package/dist/locale/getEffectiveDir.js +28 -0
  63. package/dist/locale/getLocale.js +41 -0
  64. package/dist/locale/languageChange.js +22 -0
  65. package/dist/locale/nextFallbackLocale.js +28 -0
  66. package/{src/util → dist/locale}/normalizeLocale.js +8 -31
  67. package/dist/renderer/LitRenderer.js +26 -7
  68. package/dist/renderer/directives/style-map.js +72 -0
  69. package/dist/renderer/executeTemplate.js +17 -0
  70. package/dist/resources/bundle.esm.js +20 -106
  71. package/dist/resources/bundle.esm.js.map +1 -1
  72. package/dist/sap/base/Log.js +241 -0
  73. package/dist/sap/base/assert.js +8 -0
  74. package/dist/sap/base/security/URLListValidator.js +148 -0
  75. package/dist/sap/base/security/encodeCSS.js +14 -0
  76. package/dist/sap/base/security/encodeXML.js +23 -0
  77. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  78. package/dist/sap/base/strings/toHex.js +8 -0
  79. package/dist/sap/base/util/now.js +7 -0
  80. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  81. package/dist/test-resources/assets/Themes.js +11 -5
  82. package/dist/test-resources/elements/Generic.js +1 -0
  83. package/dist/test-resources/elements/Parent.js +7 -2
  84. package/dist/test-resources/elements/WithStaticArea.js +77 -0
  85. package/dist/test-resources/pages/AllTestElements.html +5 -5
  86. package/dist/test-resources/pages/Configuration.html +0 -2
  87. package/dist/test-resources/pages/ConfigurationScript.html +1 -4
  88. package/dist/test-resources/pages/assets/messagebundle_de.properties +1 -0
  89. package/dist/test-resources/pages/assets/messagebundle_en.properties +1 -0
  90. package/dist/test-resources/pages/assets/messagebundle_es.properties +1 -0
  91. package/dist/test-resources/pages/assets/messagebundle_fr.properties +1 -0
  92. package/dist/test-resources/pages/i18n.html +33 -0
  93. package/dist/test-resources/specs/ConfigurationChange.spec.js +10 -17
  94. package/dist/test-resources/specs/ConfigurationScript.spec.js +25 -31
  95. package/dist/test-resources/specs/ConfigurationURL.spec.js +65 -25
  96. package/dist/test-resources/specs/CustomTheme.spec.js +9 -7
  97. package/dist/test-resources/specs/EventProvider.spec.js +63 -0
  98. package/dist/test-resources/specs/StaticArea.spec.js +78 -0
  99. package/dist/test-resources/specs/Theming.spec.js +12 -10
  100. package/dist/test-resources/specs/UI5ElementInvalidation.js +54 -70
  101. package/dist/test-resources/specs/UI5ElementLifecycle.js +19 -14
  102. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +25 -51
  103. package/dist/test-resources/specs/UI5ElementMetadataExt.js +9 -7
  104. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +7 -5
  105. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +37 -35
  106. package/dist/test-resources/specs/UI5ElementShadowDOM.js +10 -8
  107. package/dist/test-resources/specs/UI5ElementSlots.js +10 -8
  108. package/dist/theming/CustomStyle.js +47 -6
  109. package/dist/theming/ThemeLoaded.js +22 -0
  110. package/dist/theming/applyTheme.js +79 -0
  111. package/dist/theming/getConstructableStyle.js +30 -0
  112. package/dist/theming/getEffectiveLinksHrefs.js +20 -0
  113. package/dist/theming/getEffectiveStyle.js +30 -0
  114. package/dist/theming/getStylesString.js +15 -0
  115. package/dist/theming/getThemeDesignerTheme.js +87 -0
  116. package/dist/theming/preloadLinks.js +23 -0
  117. package/dist/thirdparty/_merge.js +32 -0
  118. package/dist/thirdparty/isPlainObject.js +18 -0
  119. package/dist/thirdparty/merge.js +10 -0
  120. package/dist/types/CSSColor.js +9 -0
  121. package/dist/{dates → types}/CalendarType.js +2 -2
  122. package/dist/types/DataType.js +13 -1
  123. package/dist/types/Float.js +14 -0
  124. package/dist/types/Integer.js +4 -0
  125. package/dist/types/InvisibleMessageMode.js +30 -0
  126. package/dist/types/ItemNavigationBehavior.js +2 -7
  127. package/dist/types/NavigationMode.js +1 -0
  128. package/dist/types/PopupState.js +1 -1
  129. package/dist/types/ValueState.js +2 -1
  130. package/dist/updateShadowRoot.js +30 -0
  131. package/dist/util/AriaLabelHelper.js +41 -0
  132. package/dist/util/Caret.js +45 -0
  133. package/dist/util/ColorConversion.js +370 -0
  134. package/dist/util/FocusableElements.js +30 -11
  135. package/dist/util/HTMLSanitizer.js +7 -0
  136. package/dist/util/InvisibleMessage.js +58 -0
  137. package/dist/util/PopupUtils.js +93 -0
  138. package/dist/util/SlotsHelper.js +43 -0
  139. package/dist/util/StringHelper.js +17 -2
  140. package/dist/util/TabbableElements.js +5 -2
  141. package/dist/util/arraysAreEqual.js +15 -0
  142. package/dist/util/clamp.js +12 -0
  143. package/dist/util/createLinkInHead.js +19 -0
  144. package/dist/util/debounce.js +17 -0
  145. package/dist/util/detectNavigatorLanguage.js +3 -1
  146. package/dist/util/escapeRegex.js +10 -0
  147. package/dist/util/findNodeOwner.js +35 -0
  148. package/dist/util/generateHighlightedMarkup.js +42 -0
  149. package/dist/util/getActiveElement.js +11 -0
  150. package/dist/util/getClassCopy.js +10 -0
  151. package/dist/util/getEffectiveContentDensity.js +5 -0
  152. package/dist/util/getFileExtension.js +21 -0
  153. package/dist/util/getSingletonElementInstance.js +13 -0
  154. package/dist/util/isElementInView.js +15 -0
  155. package/dist/util/isNodeHidden.js +1 -5
  156. package/dist/util/isNodeTabbable.js +4 -4
  157. package/dist/util/isValidPropertyName.js +11 -2
  158. package/dist/util/setToArray.js +10 -0
  159. package/hash.txt +1 -0
  160. package/index.js +1 -1
  161. package/lib/generate-asset-parameters/index.js +21 -0
  162. package/lib/generate-styles/index.js +18 -0
  163. package/lib/generate-version-info/index.js +27 -0
  164. package/package-scripts.js +43 -18
  165. package/package.json +21 -14
  166. package/src/AssetRegistry.js +8 -6
  167. package/src/Boot.js +61 -0
  168. package/src/CSP.js +59 -0
  169. package/src/CustomElementsRegistry.js +95 -0
  170. package/src/CustomElementsScope.js +108 -0
  171. package/src/DOMObserver.js +65 -0
  172. package/src/Device.js +69 -776
  173. package/src/EventProvider.js +38 -26
  174. package/src/FeaturesRegistry.js +4 -1
  175. package/src/FontFace.js +20 -56
  176. package/src/InitialConfiguration.js +61 -21
  177. package/src/Keys.js +271 -0
  178. package/src/ManagedStyles.js +83 -0
  179. package/src/MediaRange.js +109 -0
  180. package/src/PropertiesFileFormat.js +95 -0
  181. package/src/Render.js +175 -0
  182. package/src/RenderQueue.js +41 -17
  183. package/src/RenderScheduler.js +24 -140
  184. package/src/Runtimes.js +107 -0
  185. package/src/StaticArea.js +3 -0
  186. package/src/StaticAreaItem.js +101 -0
  187. package/src/SystemCSSVars.js +10 -0
  188. package/src/Theming.js +3 -44
  189. package/src/UI5Element.js +503 -314
  190. package/src/UI5ElementMetadata.js +194 -23
  191. package/src/asset-registries/Icons.js +129 -14
  192. package/src/asset-registries/Illustrations.js +30 -0
  193. package/src/asset-registries/LocaleData.js +108 -50
  194. package/src/asset-registries/Themes.js +35 -32
  195. package/src/asset-registries/i18n.js +80 -34
  196. package/src/assets-meta/IconCollectionsAlias.js +18 -0
  197. package/src/config/AnimationMode.js +16 -2
  198. package/src/config/CalendarType.js +7 -7
  199. package/src/config/FormatSettings.js +5 -1
  200. package/src/config/Language.js +62 -3
  201. package/src/config/NoConflict.js +10 -3
  202. package/src/config/Theme.js +21 -3
  203. package/src/css/FontFace.css +45 -0
  204. package/src/css/OverrideFontFace.css +32 -0
  205. package/src/css/SystemCSSVars.css +17 -0
  206. package/src/delegate/ItemNavigation.js +246 -129
  207. package/src/delegate/ResizeHandler.js +78 -38
  208. package/src/delegate/ScrollEnablement.js +122 -14
  209. package/src/features/F6Navigation.js +106 -0
  210. package/src/features/OpenUI5Support.js +125 -0
  211. package/src/getSharedResource.js +30 -0
  212. package/src/i18nBundle.js +62 -11
  213. package/src/isLegacyBrowser.js +3 -0
  214. package/src/{Locale.js → locale/Locale.js} +0 -10
  215. package/src/locale/RTLAwareRegistry.js +14 -0
  216. package/src/locale/applyDirection.js +17 -0
  217. package/src/locale/directionChange.js +32 -0
  218. package/src/locale/getEffectiveDir.js +28 -0
  219. package/src/locale/getLocale.js +41 -0
  220. package/src/locale/languageChange.js +22 -0
  221. package/src/locale/nextFallbackLocale.js +28 -0
  222. package/{dist/util → src/locale}/normalizeLocale.js +8 -31
  223. package/src/renderer/LitRenderer.js +26 -7
  224. package/src/renderer/directives/style-map.js +72 -0
  225. package/src/renderer/executeTemplate.js +17 -0
  226. package/src/theming/CustomStyle.js +47 -6
  227. package/src/theming/ThemeLoaded.js +22 -0
  228. package/src/theming/applyTheme.js +79 -0
  229. package/src/theming/getConstructableStyle.js +30 -0
  230. package/src/theming/getEffectiveLinksHrefs.js +20 -0
  231. package/src/theming/getEffectiveStyle.js +30 -0
  232. package/src/theming/getStylesString.js +15 -0
  233. package/src/theming/getThemeDesignerTheme.js +87 -0
  234. package/src/theming/preloadLinks.js +23 -0
  235. package/src/thirdparty/_merge.js +32 -0
  236. package/src/thirdparty/isPlainObject.js +18 -0
  237. package/src/thirdparty/merge.js +10 -0
  238. package/src/types/CSSColor.js +9 -0
  239. package/src/{dates → types}/CalendarType.js +2 -2
  240. package/src/types/DataType.js +13 -1
  241. package/src/types/Float.js +14 -0
  242. package/src/types/Integer.js +4 -0
  243. package/src/types/InvisibleMessageMode.js +30 -0
  244. package/src/types/ItemNavigationBehavior.js +2 -7
  245. package/src/types/NavigationMode.js +1 -0
  246. package/src/types/PopupState.js +1 -1
  247. package/src/types/ValueState.js +2 -1
  248. package/src/updateShadowRoot.js +30 -0
  249. package/src/util/AriaLabelHelper.js +41 -0
  250. package/src/util/Caret.js +45 -0
  251. package/src/util/ColorConversion.js +370 -0
  252. package/src/util/FocusableElements.js +30 -11
  253. package/src/util/HTMLSanitizer.js +7 -0
  254. package/src/util/InvisibleMessage.js +58 -0
  255. package/src/util/PopupUtils.js +93 -0
  256. package/src/util/SlotsHelper.js +43 -0
  257. package/src/util/StringHelper.js +17 -2
  258. package/src/util/TabbableElements.js +5 -2
  259. package/src/util/arraysAreEqual.js +15 -0
  260. package/src/util/clamp.js +12 -0
  261. package/src/util/createLinkInHead.js +19 -0
  262. package/src/util/debounce.js +17 -0
  263. package/src/util/detectNavigatorLanguage.js +3 -1
  264. package/src/util/escapeRegex.js +10 -0
  265. package/src/util/findNodeOwner.js +35 -0
  266. package/src/util/generateHighlightedMarkup.js +42 -0
  267. package/src/util/getActiveElement.js +11 -0
  268. package/src/util/getClassCopy.js +10 -0
  269. package/src/util/getEffectiveContentDensity.js +5 -0
  270. package/src/util/getFileExtension.js +21 -0
  271. package/src/util/getSingletonElementInstance.js +13 -0
  272. package/src/util/isElementInView.js +15 -0
  273. package/src/util/isNodeHidden.js +1 -5
  274. package/src/util/isNodeTabbable.js +4 -4
  275. package/src/util/isValidPropertyName.js +11 -2
  276. package/src/util/setToArray.js +10 -0
  277. package/used-modules.txt +10 -0
  278. package/bundle.es5.js +0 -31
  279. package/dist/Assets.js +0 -2
  280. package/dist/CSS.js +0 -48
  281. package/dist/ContentDensity.js +0 -20
  282. package/dist/FormatSettings.js +0 -31
  283. package/dist/LocaleProvider.js +0 -34
  284. package/dist/ResourceLoaderOverrides.js +0 -38
  285. package/dist/SVGIconRegistry.js +0 -54
  286. package/dist/boot.js +0 -28
  287. package/dist/cldr/en.js +0 -4788
  288. package/dist/compatibility/DOMObserver.js +0 -62
  289. package/dist/compatibility/patchNodeValue.js +0 -24
  290. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  291. package/dist/config/CompactSize.js +0 -23
  292. package/dist/dates/CalendarDate.js +0 -203
  293. package/dist/dates/CalendarDatesRegistry.js +0 -17
  294. package/dist/dates/CalendarUtils.js +0 -99
  295. package/dist/delegate/CustomResize.js +0 -78
  296. package/dist/delegate/NativeResize.js +0 -44
  297. package/dist/events/EventEnrichment.js +0 -38
  298. package/dist/events/PseudoEvents.js +0 -58
  299. package/dist/features/browsersupport/Edge.js +0 -6
  300. package/dist/features/browsersupport/IE11.js +0 -41
  301. package/dist/features/calendar/Buddhist.js +0 -1
  302. package/dist/features/calendar/Islamic.js +0 -1
  303. package/dist/features/calendar/Japanese.js +0 -1
  304. package/dist/features/calendar/Persian.js +0 -1
  305. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar.json +0 -5598
  306. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_EG.json +0 -5598
  307. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_SA.json +0 -5598
  308. package/dist/generated/assets/cldr/sap/ui/core/cldr/bg.json +0 -4789
  309. package/dist/generated/assets/cldr/sap/ui/core/cldr/ca.json +0 -4801
  310. package/dist/generated/assets/cldr/sap/ui/core/cldr/cs.json +0 -5245
  311. package/dist/generated/assets/cldr/sap/ui/core/cldr/da.json +0 -4696
  312. package/dist/generated/assets/cldr/sap/ui/core/cldr/de.json +0 -4797
  313. package/dist/generated/assets/cldr/sap/ui/core/cldr/de_AT.json +0 -4798
  314. package/dist/generated/assets/cldr/sap/ui/core/cldr/de_CH.json +0 -4796
  315. package/dist/generated/assets/cldr/sap/ui/core/cldr/el.json +0 -4694
  316. package/dist/generated/assets/cldr/sap/ui/core/cldr/el_CY.json +0 -4694
  317. package/dist/generated/assets/cldr/sap/ui/core/cldr/en.json +0 -4777
  318. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_AU.json +0 -4769
  319. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_GB.json +0 -4778
  320. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_HK.json +0 -4784
  321. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IE.json +0 -4778
  322. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IN.json +0 -4779
  323. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_NZ.json +0 -4778
  324. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_PG.json +0 -4779
  325. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_SG.json +0 -4780
  326. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_ZA.json +0 -4779
  327. package/dist/generated/assets/cldr/sap/ui/core/cldr/es.json +0 -4719
  328. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_AR.json +0 -4721
  329. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_BO.json +0 -4720
  330. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CL.json +0 -4721
  331. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CO.json +0 -4721
  332. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_MX.json +0 -4722
  333. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_PE.json +0 -4720
  334. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_UY.json +0 -4722
  335. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_VE.json +0 -4721
  336. package/dist/generated/assets/cldr/sap/ui/core/cldr/et.json +0 -4776
  337. package/dist/generated/assets/cldr/sap/ui/core/cldr/fa.json +0 -4704
  338. package/dist/generated/assets/cldr/sap/ui/core/cldr/fi.json +0 -4816
  339. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr.json +0 -4788
  340. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_BE.json +0 -4788
  341. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CA.json +0 -4782
  342. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CH.json +0 -4806
  343. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_LU.json +0 -4788
  344. package/dist/generated/assets/cldr/sap/ui/core/cldr/he.json +0 -5133
  345. package/dist/generated/assets/cldr/sap/ui/core/cldr/hi.json +0 -4680
  346. package/dist/generated/assets/cldr/sap/ui/core/cldr/hr.json +0 -4910
  347. package/dist/generated/assets/cldr/sap/ui/core/cldr/hu.json +0 -4664
  348. package/dist/generated/assets/cldr/sap/ui/core/cldr/id.json +0 -4500
  349. package/dist/generated/assets/cldr/sap/ui/core/cldr/it.json +0 -4757
  350. package/dist/generated/assets/cldr/sap/ui/core/cldr/it_CH.json +0 -4757
  351. package/dist/generated/assets/cldr/sap/ui/core/cldr/ja.json +0 -4599
  352. package/dist/generated/assets/cldr/sap/ui/core/cldr/kk.json +0 -4537
  353. package/dist/generated/assets/cldr/sap/ui/core/cldr/ko.json +0 -4574
  354. package/dist/generated/assets/cldr/sap/ui/core/cldr/lt.json +0 -5234
  355. package/dist/generated/assets/cldr/sap/ui/core/cldr/lv.json +0 -4902
  356. package/dist/generated/assets/cldr/sap/ui/core/cldr/ms.json +0 -4352
  357. package/dist/generated/assets/cldr/sap/ui/core/cldr/nb.json +0 -4784
  358. package/dist/generated/assets/cldr/sap/ui/core/cldr/nl.json +0 -4790
  359. package/dist/generated/assets/cldr/sap/ui/core/cldr/nl_BE.json +0 -4790
  360. package/dist/generated/assets/cldr/sap/ui/core/cldr/pl.json +0 -5223
  361. package/dist/generated/assets/cldr/sap/ui/core/cldr/pt.json +0 -4703
  362. package/dist/generated/assets/cldr/sap/ui/core/cldr/pt_PT.json +0 -4753
  363. package/dist/generated/assets/cldr/sap/ui/core/cldr/ro.json +0 -4881
  364. package/dist/generated/assets/cldr/sap/ui/core/cldr/ru.json +0 -5157
  365. package/dist/generated/assets/cldr/sap/ui/core/cldr/ru_UA.json +0 -5157
  366. package/dist/generated/assets/cldr/sap/ui/core/cldr/sk.json +0 -5125
  367. package/dist/generated/assets/cldr/sap/ui/core/cldr/sl.json +0 -5105
  368. package/dist/generated/assets/cldr/sap/ui/core/cldr/sr.json +0 -4908
  369. package/dist/generated/assets/cldr/sap/ui/core/cldr/sv.json +0 -4818
  370. package/dist/generated/assets/cldr/sap/ui/core/cldr/th.json +0 -4633
  371. package/dist/generated/assets/cldr/sap/ui/core/cldr/tr.json +0 -4791
  372. package/dist/generated/assets/cldr/sap/ui/core/cldr/uk.json +0 -5126
  373. package/dist/generated/assets/cldr/sap/ui/core/cldr/vi.json +0 -4510
  374. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_CN.json +0 -4469
  375. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_HK.json +0 -4479
  376. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_SG.json +0 -4479
  377. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_TW.json +0 -4565
  378. package/dist/json-imports/LocaleData.js +0 -171
  379. package/dist/renderer/ifDefined.js +0 -21
  380. package/dist/resources/bundle.es5.js +0 -212
  381. package/dist/resources/bundle.es5.js.map +0 -1
  382. package/dist/shims/Core-shim.js +0 -52
  383. package/dist/shims/jquery-shim.js +0 -89
  384. package/dist/test-resources/elements/DensityAware.js +0 -14
  385. package/dist/test-resources/specs/UI5ElementDensityAware.spec.js +0 -51
  386. package/dist/theming/StyleInjection.js +0 -67
  387. package/dist/theming/ThemeBundle.js +0 -29
  388. package/dist/thirdparty/Array.from.js +0 -16
  389. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  390. package/dist/thirdparty/Array.prototype.find.js +0 -46
  391. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  392. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  393. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  394. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  395. package/dist/thirdparty/Number.isInteger.js +0 -5
  396. package/dist/thirdparty/Number.isNaN.js +0 -1
  397. package/dist/thirdparty/Number.parseInt.js +0 -1
  398. package/dist/thirdparty/Object.assign.js +0 -31
  399. package/dist/thirdparty/Object.entries.js +0 -11
  400. package/dist/thirdparty/Symbol.js +0 -2
  401. package/dist/thirdparty/WeakSet.js +0 -27
  402. package/dist/thirdparty/events-polyfills.js +0 -89
  403. package/dist/thirdparty/fetch.js +0 -1
  404. package/dist/thirdparty/template.js +0 -600
  405. package/dist/util/CSSTransformUtils.js +0 -90
  406. package/dist/webcomponentsjs/LICENSE.md +0 -19
  407. package/dist/webcomponentsjs/README.md +0 -229
  408. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  409. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  410. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  411. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  412. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  413. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  414. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  415. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  416. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  417. package/dist/webcomponentsjs/package.json +0 -46
  418. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  419. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  420. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  421. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  422. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  423. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  424. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  425. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  426. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  427. package/src/Assets.js +0 -2
  428. package/src/CSS.js +0 -48
  429. package/src/ContentDensity.js +0 -20
  430. package/src/FormatSettings.js +0 -31
  431. package/src/LocaleProvider.js +0 -34
  432. package/src/ResourceLoaderOverrides.js +0 -38
  433. package/src/SVGIconRegistry.js +0 -54
  434. package/src/boot.js +0 -28
  435. package/src/cldr/en.js +0 -4788
  436. package/src/compatibility/DOMObserver.js +0 -62
  437. package/src/compatibility/patchNodeValue.js +0 -24
  438. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  439. package/src/config/CompactSize.js +0 -23
  440. package/src/dates/CalendarDate.js +0 -203
  441. package/src/dates/CalendarDatesRegistry.js +0 -17
  442. package/src/dates/CalendarUtils.js +0 -99
  443. package/src/delegate/CustomResize.js +0 -78
  444. package/src/delegate/NativeResize.js +0 -44
  445. package/src/events/EventEnrichment.js +0 -38
  446. package/src/events/PseudoEvents.js +0 -58
  447. package/src/features/browsersupport/Edge.js +0 -6
  448. package/src/features/browsersupport/IE11.js +0 -41
  449. package/src/features/calendar/Buddhist.js +0 -1
  450. package/src/features/calendar/Islamic.js +0 -1
  451. package/src/features/calendar/Japanese.js +0 -1
  452. package/src/features/calendar/Persian.js +0 -1
  453. package/src/json-imports/LocaleData.js +0 -171
  454. package/src/renderer/ifDefined.js +0 -21
  455. package/src/shims/Core-shim.js +0 -52
  456. package/src/shims/jquery-shim.js +0 -89
  457. package/src/theming/StyleInjection.js +0 -67
  458. package/src/theming/ThemeBundle.js +0 -29
  459. package/src/thirdparty/Array.from.js +0 -16
  460. package/src/thirdparty/Array.prototype.fill.js +0 -44
  461. package/src/thirdparty/Array.prototype.find.js +0 -46
  462. package/src/thirdparty/Array.prototype.includes.js +0 -51
  463. package/src/thirdparty/Element.prototype.closest.js +0 -11
  464. package/src/thirdparty/Element.prototype.matches.js +0 -6
  465. package/src/thirdparty/Map.prototype.keys.js +0 -9
  466. package/src/thirdparty/Number.isInteger.js +0 -5
  467. package/src/thirdparty/Number.isNaN.js +0 -1
  468. package/src/thirdparty/Number.parseInt.js +0 -1
  469. package/src/thirdparty/Object.assign.js +0 -31
  470. package/src/thirdparty/Object.entries.js +0 -11
  471. package/src/thirdparty/Symbol.js +0 -2
  472. package/src/thirdparty/WeakSet.js +0 -27
  473. package/src/thirdparty/events-polyfills.js +0 -89
  474. package/src/thirdparty/fetch.js +0 -1
  475. package/src/thirdparty/template.js +0 -600
  476. package/src/util/CSSTransformUtils.js +0 -90
@@ -1,11 +1,13 @@
1
1
  const assert = require("chai").assert;
2
2
 
3
3
  describe("Metadata can be extended", () => {
4
- browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
4
+ before(async () => {
5
+ await browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
6
+ });
5
7
 
6
- it("When extending metadata, both own and extended entities exist in the resulting metadata", () => {
8
+ it("When extending metadata, both own and extended entities exist in the resulting metadata", async () => {
7
9
 
8
- const res = browser.execute( () => {
10
+ const res = await browser.executeAsync(done => {
9
11
 
10
12
  const el = document.getElementById("genExt");
11
13
  const m = el.constructor.getMetadata();
@@ -15,15 +17,15 @@ describe("Metadata can be extended", () => {
15
17
  !!m.getSlots().default &&
16
18
  !!m.getSlots().extSlot;
17
19
 
18
- return ok;
20
+ done(ok);
19
21
  });
20
22
 
21
23
  assert.strictEqual(res, true, "Metadata properly extended");
22
24
  });
23
25
 
24
- it("When extending metadata, property defaultValue can be modified", () => {
26
+ it("When extending metadata, property defaultValue can be modified", async () => {
25
27
 
26
- const res = browser.execute( () => {
28
+ const res = await browser.executeAsync(done => {
27
29
 
28
30
  const el = document.getElementById("genExt");
29
31
  const m = el.constructor.getMetadata();
@@ -31,7 +33,7 @@ describe("Metadata can be extended", () => {
31
33
  const ok = !!m.getProperties().strProp &&
32
34
  m.getProperties().strProp.defaultValue === "Ext";
33
35
 
34
- return ok;
36
+ done(ok);
35
37
  });
36
38
 
37
39
  assert.strictEqual(res, true, "Property defaultValue changed");
@@ -1,12 +1,14 @@
1
1
  const assert = require("chai").assert;
2
2
 
3
3
  describe("Properties can only have values, restricted to their types", () => {
4
- browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
4
+ before(async () => {
5
+ await browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
6
+ });
5
7
 
6
- it("String property enforced to string", () => {
7
- const el = browser.$("#gen");
8
- el.setProperty("strProp", 5);
9
- assert.strictEqual(el.getProperty("strProp"), "5", "String property is string");
8
+ it("String property enforced to string", async () => {
9
+ const el = await browser.$("#gen");
10
+ await el.setProperty("strProp", 5);
11
+ assert.strictEqual(await el.getProperty("strProp"), "5", "String property is string");
10
12
  });
11
13
 
12
14
  });
@@ -1,65 +1,67 @@
1
1
  const assert = require("chai").assert;
2
2
 
3
3
  describe("Properties and attributes convert to each other", () => {
4
- browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
4
+ before(async () => {
5
+ await browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
6
+ });
5
7
 
6
- it("Tests that properties with default values are initialized with the default value", () => {
7
- const el = browser.$("#gen");
8
+ it("Tests that properties with default values are initialized with the default value", async () => {
9
+ const el = await browser.$("#gen");
8
10
 
9
- assert.strictEqual(el.getProperty("defaultValueProp"), "Hello", "defaultValueProp is properly initialized");
11
+ assert.strictEqual(await el.getProperty("defaultValueProp"), "Hello", "defaultValueProp is properly initialized");
10
12
  });
11
13
 
12
- it("Tests that prop-attr conversion works for string properties", () => {
13
- const el = browser.$("#gen");
14
+ it("Tests that prop-attr conversion works for string properties", async () => {
15
+ const el = await browser.$("#gen");
14
16
 
15
- el.setProperty("strProp", "test1");
16
- assert.strictEqual(el.getAttribute("str-prop"), "test1", "Attribute affected by property change");
17
+ await el.setProperty("strProp", "test1");
18
+ assert.strictEqual(await el.getAttribute("str-prop"), "test1", "Attribute affected by property change");
17
19
 
18
- el.setAttribute("str-prop", "test2");
19
- assert.strictEqual(el.getProperty("strProp"), "test2", "Property affected by attribute change");
20
+ await el.setAttribute("str-prop", "test2");
21
+ assert.strictEqual(await el.getProperty("strProp"), "test2", "Property affected by attribute change");
20
22
  });
21
23
 
22
- it("Tests that prop-attr conversion works for boolean properties", () => {
23
- const el = browser.$("#gen");
24
+ it("Tests that prop-attr conversion works for boolean properties", async () => {
25
+ const el = await browser.$("#gen");
24
26
 
25
- el.setProperty("boolProp", true);
26
- assert.strictEqual(el.getAttribute("bool-prop"), "", "Attribute affected by property change");
27
+ await el.setProperty("boolProp", true);
28
+ assert.strictEqual(await el.getAttribute("bool-prop"), "", "Attribute affected by property change");
27
29
 
28
- el.setProperty("boolProp", false);
29
- assert.strictEqual(el.getAttribute("bool-prop"), null, "Attribute affected by property change");
30
+ await el.setProperty("boolProp", false);
31
+ assert.strictEqual(await el.getAttribute("bool-prop"), null, "Attribute affected by property change");
30
32
 
31
- el.setAttribute("bool-prop", "");
32
- assert.strictEqual(el.getProperty("boolProp"), true, "Property affected by attribute change");
33
+ await el.setAttribute("bool-prop", "");
34
+ assert.strictEqual(await el.getProperty("boolProp"), true, "Property affected by attribute change");
33
35
 
34
- el.removeAttribute("bool-prop");
35
- assert.strictEqual(el.getProperty("boolProp"), false, "Property affected by attribute change");
36
+ await el.removeAttribute("bool-prop");
37
+ assert.strictEqual(await el.getProperty("boolProp"), false, "Property affected by attribute change");
36
38
  });
37
39
 
38
- it("Tests that object properties have no attributes", () => {
39
- const el = browser.$("#gen");
40
+ it("Tests that object properties have no attributes", async () => {
41
+ const el = await browser.$("#gen");
40
42
 
41
- el.setProperty("objectProp", {});
42
- assert.strictEqual(el.getAttribute("object-prop"), null, "Attribute not there");
43
+ await el.setProperty("objectProp", {});
44
+ assert.strictEqual(await el.getAttribute("object-prop"), null, "Attribute not there");
43
45
  });
44
46
 
45
- it("Tests that array properties have no attributes", () => {
46
- const el = browser.$("#gen");
47
+ it("Tests that array properties have no attributes", async () => {
48
+ const el = await browser.$("#gen");
47
49
 
48
- el.setProperty("multiProp", ["a", "b"]);
49
- assert.strictEqual(el.getAttribute("multi-prop"), null, "Attribute not there");
50
+ await el.setProperty("multiProp", ["a", "b"]);
51
+ assert.strictEqual(await el.getAttribute("multi-prop"), null, "Attribute not there");
50
52
  });
51
53
 
52
- it("Tests that noAttribute properties have no attributes", () => {
53
- const el = browser.$("#gen");
54
+ it("Tests that noAttribute properties have no attributes", async () => {
55
+ const el = await browser.$("#gen");
54
56
 
55
- el.setProperty("noAttributeProp", "some value");
56
- assert.strictEqual(el.getAttribute("no-attribute-prop"), null, "Attribute not there");
57
+ await el.setProperty("noAttributeProp", "some value");
58
+ assert.strictEqual(await el.getAttribute("no-attribute-prop"), null, "Attribute not there");
57
59
  });
58
60
 
59
- it("Tests that properties with default values do not automatically set attributes", () => {
60
- const el = browser.$("#gen");
61
+ it("Tests that properties with default values do not automatically set attributes", async () => {
62
+ const el = await browser.$("#gen");
61
63
 
62
- assert.strictEqual(el.getAttribute("default-value-prop"), null, "Attribute not there for defaultValueProp");
64
+ assert.strictEqual(await el.getAttribute("default-value-prop"), null, "Attribute not there for defaultValueProp");
63
65
  });
64
66
 
65
67
  });
@@ -1,20 +1,22 @@
1
1
  const assert = require("chai").assert;
2
2
 
3
3
  describe("The framework can define web components", () => {
4
- browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
4
+ before(async () => {
5
+ await browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
6
+ });
5
7
 
6
- it("Tests that element's Shadow DOM is rendered if it has a template", () => {
7
- const res = browser.execute(() => {
8
- return document.getElementById("gen").shadowRoot;
8
+ it("Tests that element's Shadow DOM is rendered if it has a template", async () => {
9
+ const res = await browser.executeAsync(done => {
10
+ done(document.getElementById("gen").shadowRoot);
9
11
  });
10
12
 
11
13
  assert.strictEqual(!!res, true, "Shadow root created");
12
- assert.strictEqual(browser.$("#gen").shadow$("div>p").isExisting(), true, "Shadow root content created");
14
+ assert.strictEqual(await browser.$("#gen").shadow$("div>p").isExisting(), true, "Shadow root content created");
13
15
  });
14
16
 
15
- it("Tests that element's Shadow DOM is not rendered if it has no template", () => {
16
- const res = browser.execute(() => {
17
- return document.getElementById("noShadow").shadowRoot;
17
+ it("Tests that element's Shadow DOM is not rendered if it has no template", async () => {
18
+ const res = await browser.executeAsync(done => {
19
+ done(document.getElementById("noShadow").shadowRoot);
18
20
  });
19
21
 
20
22
  assert.strictEqual(!!res, false, "Shadow root not created");
@@ -1,10 +1,12 @@
1
1
  const assert = require("chai").assert;
2
2
 
3
3
  describe("Slots work properly", () => {
4
- browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
4
+ before(async () => {
5
+ await browser.url("http://localhost:9191/test-resources/pages/AllTestElements.html");
6
+ });
5
7
 
6
- it("Tests that properties exist on the element for each slot", () => {
7
- const res = browser.execute(() => {
8
+ it("Tests that properties exist on the element for each slot", async () => {
9
+ const res = await browser.executeAsync(done => {
8
10
  const expectedValues = {};
9
11
 
10
12
  const el = document.getElementById("withContent");
@@ -15,7 +17,7 @@ describe("Slots work properly", () => {
15
17
  expectedValues.items = el.items.length === 2;
16
18
  expectedValues.named = el.named === undefined;
17
19
 
18
- return expectedValues;
20
+ done(expectedValues);
19
21
  });
20
22
 
21
23
  assert.strictEqual(res.default, true, "There are elements in the default property");
@@ -25,10 +27,10 @@ describe("Slots work properly", () => {
25
27
  assert.strictEqual(res.named, true, "There is no named property as propertyName changed it to items");
26
28
  });
27
29
 
28
- it("Tests that individualSlots modifies the slot property of slotted children", () => {
29
- assert.strictEqual(browser.$$("#withContent>[slot=individual]").length, 0, "There are no children with slot=individual");
30
- assert.strictEqual(browser.$$("#withContent>[slot=individual-1]").length, 1, "The slot of the first child became individual-1");
31
- assert.strictEqual(browser.$$("#withContent>[slot=individual-2]").length, 1, "The slot of the second child became individual-2");
30
+ it("Tests that individualSlots modifies the slot property of slotted children", async () => {
31
+ assert.strictEqual((await browser.$$("#withContent>[slot=individual]")).length, 0, "There are no children with slot=individual");
32
+ assert.strictEqual((await browser.$$("#withContent>[slot=individual-1]")).length, 1, "The slot of the first child became individual-1");
33
+ assert.strictEqual((await browser.$$("#withContent>[slot=individual-2]")).length, 1, "The slot of the second child became individual-2");
32
34
  });
33
35
 
34
36
  });
@@ -1,19 +1,60 @@
1
- const customCSSFor = {};
1
+ import { reRenderAllUI5Elements } from "../Render.js";
2
+ import getSharedResource from "../getSharedResource.js";
3
+ import EventProvider from "../EventProvider.js";
2
4
 
3
- const addCustomCSS = (tag, css, ...rest) => {
4
- if (rest.length) {
5
- throw new Error("addCustomCSS no longer accepts theme specific CSS. new signature is `addCustomCSS(tag, css)`");
5
+ const eventProvider = getSharedResource("CustomStyle.eventProvider", new EventProvider());
6
+ const CUSTOM_CSS_CHANGE = "CustomCSSChange";
7
+
8
+ const attachCustomCSSChange = listener => {
9
+ eventProvider.attachEvent(CUSTOM_CSS_CHANGE, listener);
10
+ };
11
+
12
+ const detachCustomCSSChange = listener => {
13
+ eventProvider.detachEvent(CUSTOM_CSS_CHANGE, listener);
14
+ };
15
+
16
+ const fireCustomCSSChange = tag => {
17
+ return eventProvider.fireEvent(CUSTOM_CSS_CHANGE, tag);
18
+ };
19
+
20
+ const customCSSFor = getSharedResource("CustomStyle.customCSSFor", {});
21
+
22
+ // Listen to the eventProvider, in case other copies of this CustomStyle module fire this
23
+ // event, and this copy would therefore need to reRender the ui5 webcomponents; but
24
+ // don't reRender if it was this copy that fired the event to begin with.
25
+ let skipRerender;
26
+ attachCustomCSSChange(tag => {
27
+ if (!skipRerender) {
28
+ reRenderAllUI5Elements({ tag });
6
29
  }
30
+ });
7
31
 
32
+ const addCustomCSS = (tag, css) => {
8
33
  if (!customCSSFor[tag]) {
9
34
  customCSSFor[tag] = [];
10
35
  }
11
-
12
36
  customCSSFor[tag].push(css);
37
+
38
+ skipRerender = true;
39
+ try {
40
+ // The event is fired and the attached event listeners are all called synchronously
41
+ // The skipRerender flag will be used to avoid calling reRenderAllUI5Elements twice when it is this copy
42
+ // of CustomStyle.js which is firing the `CustomCSSChange` event.
43
+ fireCustomCSSChange(tag);
44
+ } finally {
45
+ skipRerender = false;
46
+ }
47
+
48
+ return reRenderAllUI5Elements({ tag });
13
49
  };
14
50
 
15
51
  const getCustomCSS = tag => {
16
52
  return customCSSFor[tag] ? customCSSFor[tag].join("") : "";
17
53
  };
18
54
 
19
- export { addCustomCSS, getCustomCSS };
55
+ export {
56
+ addCustomCSS,
57
+ getCustomCSS,
58
+ attachCustomCSSChange,
59
+ detachCustomCSSChange,
60
+ };
@@ -0,0 +1,22 @@
1
+ import EventProvider from "../EventProvider.js";
2
+
3
+ const eventProvider = new EventProvider();
4
+ const THEME_LOADED = "themeLoaded";
5
+
6
+ const attachThemeLoaded = listener => {
7
+ eventProvider.attachEvent(THEME_LOADED, listener);
8
+ };
9
+
10
+ const detachThemeLoaded = listener => {
11
+ eventProvider.detachEvent(THEME_LOADED, listener);
12
+ };
13
+
14
+ const fireThemeLoaded = theme => {
15
+ return eventProvider.fireEvent(THEME_LOADED, theme);
16
+ };
17
+
18
+ export {
19
+ attachThemeLoaded,
20
+ detachThemeLoaded,
21
+ fireThemeLoaded,
22
+ };
@@ -0,0 +1,79 @@
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
+
7
+ const BASE_THEME_PACKAGE = "@ui5/webcomponents-theming";
8
+
9
+ const isThemeBaseRegistered = () => {
10
+ const registeredPackages = getRegisteredPackages();
11
+ return registeredPackages.has(BASE_THEME_PACKAGE);
12
+ };
13
+
14
+ const loadThemeBase = async theme => {
15
+ if (!isThemeBaseRegistered()) {
16
+ return;
17
+ }
18
+
19
+ const cssData = await getThemeProperties(BASE_THEME_PACKAGE, theme);
20
+ if (cssData) {
21
+ createOrUpdateStyle(cssData, "data-ui5-theme-properties", BASE_THEME_PACKAGE);
22
+ }
23
+ };
24
+
25
+ const deleteThemeBase = () => {
26
+ removeStyle("data-ui5-theme-properties", BASE_THEME_PACKAGE);
27
+ };
28
+
29
+ const loadComponentPackages = async theme => {
30
+ const registeredPackages = getRegisteredPackages();
31
+ registeredPackages.forEach(async packageName => {
32
+ if (packageName === BASE_THEME_PACKAGE) {
33
+ return;
34
+ }
35
+
36
+ const cssData = await getThemeProperties(packageName, theme);
37
+ if (cssData) {
38
+ createOrUpdateStyle(cssData, "data-ui5-theme-properties", packageName);
39
+ }
40
+ });
41
+ };
42
+
43
+ const detectExternalTheme = () => {
44
+ // If theme designer theme is detected, use this
45
+ const extTheme = getThemeDesignerTheme();
46
+ if (extTheme) {
47
+ return extTheme;
48
+ }
49
+
50
+ // If OpenUI5Support is enabled, try to find out if it loaded variables
51
+ const OpenUI5Support = getFeature("OpenUI5Support");
52
+ if (OpenUI5Support) {
53
+ const varsLoaded = OpenUI5Support.cssVariablesLoaded();
54
+ if (varsLoaded) {
55
+ return {
56
+ themeName: OpenUI5Support.getConfigurationSettingsObject().theme, // just themeName, baseThemeName is only relevant for custom themes
57
+ };
58
+ }
59
+ }
60
+ };
61
+
62
+ const applyTheme = async theme => {
63
+ const extTheme = detectExternalTheme();
64
+
65
+ // Only load theme_base properties if there is no externally loaded theme, or there is, but it is not being loaded
66
+ if (!extTheme || theme !== extTheme.themeName) {
67
+ await loadThemeBase(theme);
68
+ } else {
69
+ deleteThemeBase();
70
+ }
71
+
72
+ // Always load component packages properties. For non-registered themes, try with the base theme, if any
73
+ const packagesTheme = isThemeRegistered(theme) ? theme : extTheme && extTheme.baseThemeName;
74
+ await loadComponentPackages(packagesTheme);
75
+
76
+ fireThemeLoaded(theme);
77
+ };
78
+
79
+ export default applyTheme;
@@ -0,0 +1,30 @@
1
+ import getEffectiveStyle from "./getEffectiveStyle.js";
2
+ import { attachCustomCSSChange } from "./CustomStyle.js";
3
+
4
+ const constructableStyleMap = new Map();
5
+
6
+ attachCustomCSSChange(tag => {
7
+ constructableStyleMap.delete(`${tag}_normal`); // there is custom CSS only for the component itself, not for its static area part
8
+ });
9
+
10
+ /**
11
+ * Returns (and caches) a constructable style sheet for a web component class
12
+ * Note: Chrome
13
+ * @param ElementClass
14
+ * @returns {*}
15
+ */
16
+ const getConstructableStyle = (ElementClass, forStaticArea = false) => {
17
+ const tag = ElementClass.getMetadata().getTag();
18
+ const key = `${tag}_${forStaticArea ? "static" : "normal"}`;
19
+
20
+ if (!constructableStyleMap.has(key)) {
21
+ const styleContent = getEffectiveStyle(ElementClass, forStaticArea);
22
+ const style = new CSSStyleSheet();
23
+ style.replaceSync(styleContent);
24
+ constructableStyleMap.set(key, [style]);
25
+ }
26
+
27
+ return constructableStyleMap.get(key);
28
+ };
29
+
30
+ export default getConstructableStyle;
@@ -0,0 +1,20 @@
1
+ import { getUrl } from "../CSP.js";
2
+
3
+ const flatten = arr => {
4
+ return arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatten(val) : val), []);
5
+ };
6
+
7
+ const getEffectiveLinksHrefs = (ElementClass, forStaticArea = false) => {
8
+ let stylesData = ElementClass[forStaticArea ? "staticAreaStyles" : "styles"];
9
+ if (!stylesData) {
10
+ return;
11
+ }
12
+
13
+ if (!Array.isArray(stylesData)) {
14
+ stylesData = [stylesData];
15
+ }
16
+
17
+ return flatten(stylesData).filter(data => !!data).map(data => getUrl(data.packageName, data.fileName));
18
+ };
19
+
20
+ export default getEffectiveLinksHrefs;
@@ -0,0 +1,30 @@
1
+ import { getCustomCSS, attachCustomCSSChange } from "./CustomStyle.js";
2
+ import getStylesString from "./getStylesString.js";
3
+
4
+ const effectiveStyleMap = new Map();
5
+
6
+ attachCustomCSSChange(tag => {
7
+ effectiveStyleMap.delete(`${tag}_normal`); // there is custom CSS only for the component itself, not for its static area part
8
+ });
9
+
10
+ const getEffectiveStyle = (ElementClass, forStaticArea = false) => {
11
+ const tag = ElementClass.getMetadata().getTag();
12
+ const key = `${tag}_${forStaticArea ? "static" : "normal"}`;
13
+
14
+ if (!effectiveStyleMap.has(key)) {
15
+ let effectiveStyle;
16
+
17
+ if (forStaticArea) {
18
+ effectiveStyle = getStylesString(ElementClass.staticAreaStyles);
19
+ } else {
20
+ const customStyle = getCustomCSS(tag) || "";
21
+ const builtInStyles = getStylesString(ElementClass.styles);
22
+ effectiveStyle = `${builtInStyles} ${customStyle}`;
23
+ }
24
+ effectiveStyleMap.set(key, effectiveStyle);
25
+ }
26
+
27
+ return effectiveStyleMap.get(key);
28
+ };
29
+
30
+ export default getEffectiveStyle;
@@ -0,0 +1,15 @@
1
+ const getStylesString = styles => {
2
+ if (Array.isArray(styles)) {
3
+ return flatten(styles.filter(style => !!style)).map(style => {
4
+ return typeof style === "string" ? style : style.content;
5
+ }).join(" ");
6
+ }
7
+
8
+ return typeof styles === "string" ? styles : styles.content;
9
+ };
10
+
11
+ const flatten = arr => {
12
+ return arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatten(val) : val), []);
13
+ };
14
+
15
+ export default getStylesString;
@@ -0,0 +1,87 @@
1
+ const warnings = new Set();
2
+
3
+ const getThemeMetadata = () => {
4
+ // Check if the class was already applied, most commonly to the link/style tag with the CSS Variables
5
+ let el = document.querySelector(".sapThemeMetaData-Base-baseLib") || document.querySelector(".sapThemeMetaData-UI5-sap-ui-core");
6
+ if (el) {
7
+ return getComputedStyle(el).backgroundImage;
8
+ }
9
+
10
+ el = document.createElement("span");
11
+ el.style.display = "none";
12
+
13
+ // Try with sapThemeMetaData-Base-baseLib first
14
+ el.classList.add("sapThemeMetaData-Base-baseLib");
15
+ document.body.appendChild(el);
16
+ let metadata = getComputedStyle(el).backgroundImage;
17
+
18
+ // Try with sapThemeMetaData-UI5-sap-ui-core only if the previous selector was not found
19
+ if (metadata === "none") {
20
+ el.classList.add("sapThemeMetaData-UI5-sap-ui-core");
21
+ metadata = getComputedStyle(el).backgroundImage;
22
+ }
23
+
24
+ document.body.removeChild(el);
25
+
26
+ return metadata;
27
+ };
28
+
29
+ const parseThemeMetadata = metadataString => {
30
+ const params = /\(["']?data:text\/plain;utf-8,(.*?)['"]?\)$/i.exec(metadataString);
31
+ if (params && params.length >= 2) {
32
+ let paramsString = params[1];
33
+ paramsString = paramsString.replace(/\\"/g, `"`);
34
+ if (paramsString.charAt(0) !== "{" && paramsString.charAt(paramsString.length - 1) !== "}") {
35
+ try {
36
+ paramsString = decodeURIComponent(paramsString);
37
+ } catch (ex) {
38
+ if (!warnings.has("decode")) {
39
+ console.warn("Malformed theme metadata string, unable to decodeURIComponent"); // eslint-disable-line
40
+ warnings.add("decode");
41
+ }
42
+ return;
43
+ }
44
+ }
45
+ try {
46
+ return JSON.parse(paramsString);
47
+ } catch (ex) {
48
+ if (!warnings.has("parse")) {
49
+ console.warn("Malformed theme metadata string, unable to parse JSON"); // eslint-disable-line
50
+ warnings.add("parse");
51
+ }
52
+ }
53
+ }
54
+ };
55
+
56
+ const processThemeMetadata = metadata => {
57
+ let themeName;
58
+ let baseThemeName;
59
+
60
+ try {
61
+ themeName = metadata.Path.match(/\.([^.]+)\.css_variables$/)[1];
62
+ baseThemeName = metadata.Extends[0];
63
+ } catch (ex) {
64
+ if (!warnings.has("object")) {
65
+ console.warn("Malformed theme metadata Object", metadata); // eslint-disable-line
66
+ warnings.add("object");
67
+ }
68
+ return;
69
+ }
70
+
71
+ return {
72
+ themeName,
73
+ baseThemeName,
74
+ };
75
+ };
76
+
77
+ const getThemeDesignerTheme = () => {
78
+ const metadataString = getThemeMetadata();
79
+ if (!metadataString || metadataString === "none") {
80
+ return;
81
+ }
82
+
83
+ const metadata = parseThemeMetadata(metadataString);
84
+ return processThemeMetadata(metadata);
85
+ };
86
+
87
+ export default getThemeDesignerTheme;
@@ -0,0 +1,23 @@
1
+ import getEffectiveLinksHrefs from "./getEffectiveLinksHrefs.js";
2
+ import createLinkInHead from "../util/createLinkInHead.js";
3
+ import { shouldUseLinks, shouldPreloadLinks } from "../CSP.js";
4
+
5
+ const preloaded = new Set();
6
+
7
+ const preloadLinks = ElementClass => {
8
+ if (!shouldUseLinks() || !shouldPreloadLinks()) {
9
+ return;
10
+ }
11
+
12
+ const linksHrefs = getEffectiveLinksHrefs(ElementClass, false) || [];
13
+ const staticAreaLinksHrefs = getEffectiveLinksHrefs(ElementClass, true) || [];
14
+
15
+ [...linksHrefs, ...staticAreaLinksHrefs].forEach(href => {
16
+ if (!preloaded.has(href)) {
17
+ createLinkInHead(href, { rel: "preload", as: "style" });
18
+ preloaded.add(href);
19
+ }
20
+ });
21
+ };
22
+
23
+ export default preloadLinks;
@@ -0,0 +1,32 @@
1
+ import isPlainObject from './isPlainObject.js';
2
+ var oToken = Object.create(null);
3
+ var fnMerge = function () {
4
+ var src, copyIsArray, copy, name, options, clone, target = arguments[2] || {}, i = 3, length = arguments.length, deep = arguments[0] || false, skipToken = arguments[1] ? undefined : oToken;
5
+ if (typeof target !== 'object' && typeof target !== 'function') {
6
+ target = {};
7
+ }
8
+ for (; i < length; i++) {
9
+ if ((options = arguments[i]) != null) {
10
+ for (name in options) {
11
+ src = target[name];
12
+ copy = options[name];
13
+ if (name === '__proto__' || target === copy) {
14
+ continue;
15
+ }
16
+ if (deep && copy && (isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {
17
+ if (copyIsArray) {
18
+ copyIsArray = false;
19
+ clone = src && Array.isArray(src) ? src : [];
20
+ } else {
21
+ clone = src && isPlainObject(src) ? src : {};
22
+ }
23
+ target[name] = fnMerge(deep, arguments[1], clone, copy);
24
+ } else if (copy !== skipToken) {
25
+ target[name] = copy;
26
+ }
27
+ }
28
+ }
29
+ }
30
+ return target;
31
+ };
32
+ export default fnMerge;