@ui5/webcomponents-base 0.0.0-323968e1b → 0.0.0-354b6d238

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 (743) hide show
  1. package/.eslintignore +9 -3
  2. package/.npsrc.json +3 -0
  3. package/CHANGELOG.md +754 -0
  4. package/README.md +53 -7
  5. package/bundle.esm.js +34 -22
  6. package/config/wdio.conf.cjs +400 -0
  7. package/dist/AssetRegistry.d.ts +5 -0
  8. package/dist/AssetRegistry.js +6 -9
  9. package/dist/AssetRegistry.js.map +1 -0
  10. package/dist/Boot.d.ts +9 -0
  11. package/dist/Boot.js +71 -0
  12. package/dist/Boot.js.map +1 -0
  13. package/dist/CSP.d.ts +30 -0
  14. package/dist/CSP.js +51 -0
  15. package/dist/CSP.js.map +1 -0
  16. package/dist/CustomElementsRegistry.d.ts +5 -0
  17. package/dist/CustomElementsRegistry.js +78 -0
  18. package/dist/CustomElementsRegistry.js.map +1 -0
  19. package/dist/CustomElementsScope.d.ts +7 -0
  20. package/dist/CustomElementsScope.js +11 -0
  21. package/dist/CustomElementsScope.js.map +1 -0
  22. package/dist/CustomElementsScopeUtils.d.ts +55 -0
  23. package/dist/CustomElementsScopeUtils.js +90 -0
  24. package/dist/CustomElementsScopeUtils.js.map +1 -0
  25. package/dist/DOMObserver.d.ts +11 -0
  26. package/dist/DOMObserver.js +23 -0
  27. package/dist/DOMObserver.js.map +1 -0
  28. package/dist/Device.d.ts +12 -0
  29. package/dist/Device.js +159 -816
  30. package/dist/Device.js.map +1 -0
  31. package/dist/EventProvider.d.ts +25 -0
  32. package/dist/EventProvider.js +67 -70
  33. package/dist/EventProvider.js.map +1 -0
  34. package/dist/FeaturesRegistry.d.ts +3 -0
  35. package/dist/FeaturesRegistry.js +5 -7
  36. package/dist/FeaturesRegistry.js.map +1 -0
  37. package/dist/FontFace.d.ts +2 -0
  38. package/dist/FontFace.js +22 -63
  39. package/dist/FontFace.js.map +1 -0
  40. package/dist/InitialConfiguration.d.ts +27 -0
  41. package/dist/InitialConfiguration.js +133 -96
  42. package/dist/InitialConfiguration.js.map +1 -0
  43. package/dist/Keys.d.ts +57 -0
  44. package/dist/Keys.js +178 -0
  45. package/dist/Keys.js.map +1 -0
  46. package/dist/ManagedStyles.d.ts +8 -0
  47. package/dist/ManagedStyles.js +77 -0
  48. package/dist/ManagedStyles.js.map +1 -0
  49. package/dist/MarkedEvents.d.ts +9 -0
  50. package/dist/MarkedEvents.js +15 -0
  51. package/dist/MarkedEvents.js.map +1 -0
  52. package/dist/MediaRange.d.ts +37 -0
  53. package/dist/MediaRange.js +98 -0
  54. package/dist/MediaRange.js.map +1 -0
  55. package/dist/PropertiesFileFormat.d.ts +8 -0
  56. package/dist/PropertiesFileFormat.js +85 -0
  57. package/dist/PropertiesFileFormat.js.map +1 -0
  58. package/dist/Render.d.ts +47 -0
  59. package/dist/Render.js +143 -0
  60. package/dist/Render.js.map +1 -0
  61. package/dist/RenderQueue.d.ts +19 -0
  62. package/dist/RenderQueue.js +53 -39
  63. package/dist/RenderQueue.js.map +1 -0
  64. package/dist/Runtimes.d.ts +27 -0
  65. package/dist/Runtimes.js +86 -0
  66. package/dist/Runtimes.js.map +1 -0
  67. package/dist/StaticArea.d.ts +3 -0
  68. package/dist/StaticArea.js +4 -38
  69. package/dist/StaticArea.js.map +1 -0
  70. package/dist/StaticAreaItem.d.ts +36 -0
  71. package/dist/StaticAreaItem.js +92 -66
  72. package/dist/StaticAreaItem.js.map +1 -0
  73. package/dist/SystemCSSVars.d.ts +2 -0
  74. package/dist/SystemCSSVars.js +9 -0
  75. package/dist/SystemCSSVars.js.map +1 -0
  76. package/dist/Theming.d.ts +3 -0
  77. package/dist/Theming.js +4 -45
  78. package/dist/Theming.js.map +1 -0
  79. package/dist/UI5Element.d.ts +378 -0
  80. package/dist/UI5Element.js +938 -825
  81. package/dist/UI5Element.js.map +1 -0
  82. package/dist/UI5ElementMetadata.d.ts +150 -0
  83. package/dist/UI5ElementMetadata.js +278 -135
  84. package/dist/UI5ElementMetadata.js.map +1 -0
  85. package/dist/animations/AnimationQueue.d.ts +8 -0
  86. package/dist/animations/AnimationQueue.js +31 -38
  87. package/dist/animations/AnimationQueue.js.map +1 -0
  88. package/dist/animations/animate.d.ts +14 -0
  89. package/dist/animations/animate.js +46 -51
  90. package/dist/animations/animate.js.map +1 -0
  91. package/dist/animations/scroll.d.ts +5 -0
  92. package/dist/animations/scroll.js +18 -27
  93. package/dist/animations/scroll.js.map +1 -0
  94. package/dist/animations/slideDown.d.ts +5 -0
  95. package/dist/animations/slideDown.js +53 -78
  96. package/dist/animations/slideDown.js.map +1 -0
  97. package/dist/animations/slideUp.d.ts +5 -0
  98. package/dist/animations/slideUp.js +49 -70
  99. package/dist/animations/slideUp.js.map +1 -0
  100. package/dist/api.json +1 -0
  101. package/dist/asset-registries/Icons.d.ts +38 -0
  102. package/dist/asset-registries/Icons.js +125 -24
  103. package/dist/asset-registries/Icons.js.map +1 -0
  104. package/dist/asset-registries/Illustrations.d.ts +17 -0
  105. package/dist/asset-registries/Illustrations.js +46 -0
  106. package/dist/asset-registries/Illustrations.js.map +1 -0
  107. package/dist/asset-registries/LocaleData.d.ts +7 -0
  108. package/dist/asset-registries/LocaleData.js +127 -92
  109. package/dist/asset-registries/LocaleData.js.map +1 -0
  110. package/dist/asset-registries/Themes.d.ts +11 -0
  111. package/dist/asset-registries/Themes.js +42 -65
  112. package/dist/asset-registries/Themes.js.map +1 -0
  113. package/dist/asset-registries/i18n.d.ts +23 -0
  114. package/dist/asset-registries/i18n.js +84 -58
  115. package/dist/asset-registries/i18n.js.map +1 -0
  116. package/dist/assets/Boot.34b7cea0.css +1 -0
  117. package/dist/assets/Boot.68875c9f.js +9 -0
  118. package/dist/assets/bundle.esm.c0c0e500.js +50 -0
  119. package/dist/assets-meta/IconCollectionsAlias.d.ts +31 -0
  120. package/dist/assets-meta/IconCollectionsAlias.js +38 -0
  121. package/dist/assets-meta/IconCollectionsAlias.js.map +1 -0
  122. package/dist/config/AnimationMode.d.ts +14 -0
  123. package/dist/config/AnimationMode.js +23 -6
  124. package/dist/config/AnimationMode.js.map +1 -0
  125. package/dist/config/CalendarType.d.ts +8 -0
  126. package/dist/config/CalendarType.js +15 -14
  127. package/dist/config/CalendarType.js.map +1 -0
  128. package/dist/config/FormatSettings.d.ts +15 -0
  129. package/dist/config/FormatSettings.js +16 -6
  130. package/dist/config/FormatSettings.js.map +1 -0
  131. package/dist/config/Icons.d.ts +55 -0
  132. package/dist/config/Icons.js +103 -0
  133. package/dist/config/Icons.js.map +1 -0
  134. package/dist/config/Language.d.ts +40 -0
  135. package/dist/config/Language.js +66 -7
  136. package/dist/config/Language.js.map +1 -0
  137. package/dist/config/NoConflict.d.ts +20 -0
  138. package/dist/config/NoConflict.js +41 -34
  139. package/dist/config/NoConflict.js.map +1 -0
  140. package/dist/config/RTL.d.ts +7 -0
  141. package/dist/config/RTL.js +26 -20
  142. package/dist/config/RTL.js.map +1 -0
  143. package/dist/config/Theme.d.ts +38 -0
  144. package/dist/config/Theme.js +65 -19
  145. package/dist/config/Theme.js.map +1 -0
  146. package/dist/config/ThemeRoots.d.ts +4 -0
  147. package/dist/config/ThemeRoots.js +28 -0
  148. package/dist/config/ThemeRoots.js.map +1 -0
  149. package/dist/config/Timezone.d.ts +17 -0
  150. package/dist/config/Timezone.js +30 -0
  151. package/dist/config/Timezone.js.map +1 -0
  152. package/dist/css/BusyIndicator.css +80 -0
  153. package/dist/css/FontFace.css +66 -0
  154. package/dist/css/OverrideFontFace.css +32 -0
  155. package/dist/css/SystemCSSVars.css +17 -0
  156. package/dist/decorators/customElement.d.ts +23 -0
  157. package/dist/decorators/customElement.js +37 -0
  158. package/dist/decorators/customElement.js.map +1 -0
  159. package/dist/decorators/event.d.ts +10 -0
  160. package/dist/decorators/event.js +24 -0
  161. package/dist/decorators/event.js.map +1 -0
  162. package/dist/decorators/property.d.ts +9 -0
  163. package/dist/decorators/property.js +24 -0
  164. package/dist/decorators/property.js.map +1 -0
  165. package/dist/decorators/slot.d.ts +9 -0
  166. package/dist/decorators/slot.js +37 -0
  167. package/dist/decorators/slot.js.map +1 -0
  168. package/dist/delegate/ItemNavigation.d.ts +113 -0
  169. package/dist/delegate/ItemNavigation.js +312 -274
  170. package/dist/delegate/ItemNavigation.js.map +1 -0
  171. package/dist/delegate/ResizeHandler.d.ts +25 -0
  172. package/dist/delegate/ResizeHandler.js +84 -63
  173. package/dist/delegate/ResizeHandler.js.map +1 -0
  174. package/dist/delegate/ScrollEnablement.d.ts +49 -0
  175. package/dist/delegate/ScrollEnablement.js +159 -74
  176. package/dist/delegate/ScrollEnablement.js.map +1 -0
  177. package/dist/features/F6Navigation.d.ts +19 -0
  178. package/dist/features/F6Navigation.js +151 -0
  179. package/dist/features/F6Navigation.js.map +1 -0
  180. package/dist/features/LegacyDateFormats.d.ts +18 -0
  181. package/dist/features/LegacyDateFormats.js +20 -0
  182. package/dist/features/LegacyDateFormats.js.map +1 -0
  183. package/dist/features/OpenUI5Element.d.ts +9 -0
  184. package/dist/features/OpenUI5Element.js +5 -0
  185. package/dist/features/OpenUI5Element.js.map +1 -0
  186. package/dist/features/OpenUI5Enablement.d.ts +11 -0
  187. package/dist/features/OpenUI5Enablement.js +96 -0
  188. package/dist/features/OpenUI5Enablement.js.map +1 -0
  189. package/dist/features/OpenUI5Support.d.ts +26 -0
  190. package/dist/features/OpenUI5Support.js +99 -0
  191. package/dist/features/OpenUI5Support.js.map +1 -0
  192. package/dist/generated/AssetParameters.js +15 -0
  193. package/dist/generated/VersionInfo.js +10 -0
  194. package/dist/generated/css/BusyIndicator.css.d.ts +3 -0
  195. package/dist/generated/css/BusyIndicator.css.js +7 -0
  196. package/dist/generated/css/BusyIndicator.css.js.map +1 -0
  197. package/dist/generated/css/FontFace.css.d.ts +3 -0
  198. package/dist/generated/css/FontFace.css.js +7 -0
  199. package/dist/generated/css/FontFace.css.js.map +1 -0
  200. package/dist/generated/css/OverrideFontFace.css.d.ts +3 -0
  201. package/dist/generated/css/OverrideFontFace.css.js +7 -0
  202. package/dist/generated/css/OverrideFontFace.css.js.map +1 -0
  203. package/dist/generated/css/SystemCSSVars.css.d.ts +3 -0
  204. package/dist/generated/css/SystemCSSVars.css.js +7 -0
  205. package/dist/generated/css/SystemCSSVars.css.js.map +1 -0
  206. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +11 -0
  207. package/dist/getSharedResource.d.ts +11 -0
  208. package/dist/getSharedResource.js +34 -0
  209. package/dist/getSharedResource.js.map +1 -0
  210. package/dist/global.d.ts +40 -0
  211. package/dist/i18nBundle.d.ts +43 -0
  212. package/dist/i18nBundle.js +73 -30
  213. package/dist/i18nBundle.js.map +1 -0
  214. package/dist/locale/Locale.d.ts +22 -0
  215. package/dist/locale/Locale.js +79 -0
  216. package/dist/locale/Locale.js.map +1 -0
  217. package/dist/locale/RTLAwareRegistry.d.ts +4 -0
  218. package/dist/locale/RTLAwareRegistry.js +9 -0
  219. package/dist/locale/RTLAwareRegistry.js.map +1 -0
  220. package/dist/locale/applyDirection.d.ts +10 -0
  221. package/dist/locale/applyDirection.js +17 -0
  222. package/dist/locale/applyDirection.js.map +1 -0
  223. package/dist/locale/directionChange.d.ts +15 -0
  224. package/dist/locale/directionChange.js +24 -0
  225. package/dist/locale/directionChange.js.map +1 -0
  226. package/dist/locale/getEffectiveDir.d.ts +2 -0
  227. package/dist/locale/getEffectiveDir.js +24 -0
  228. package/dist/locale/getEffectiveDir.js.map +1 -0
  229. package/dist/locale/getLocale.d.ts +7 -0
  230. package/dist/locale/getLocale.js +38 -0
  231. package/dist/locale/getLocale.js.map +1 -0
  232. package/dist/locale/languageChange.d.ts +5 -0
  233. package/dist/locale/languageChange.js +14 -0
  234. package/dist/locale/languageChange.js.map +1 -0
  235. package/dist/locale/nextFallbackLocale.d.ts +8 -0
  236. package/dist/locale/nextFallbackLocale.js +24 -0
  237. package/dist/locale/nextFallbackLocale.js.map +1 -0
  238. package/dist/locale/normalizeLocale.d.ts +7 -0
  239. package/dist/locale/normalizeLocale.js +47 -0
  240. package/dist/locale/normalizeLocale.js.map +1 -0
  241. package/dist/renderer/LitRenderer.d.ts +14 -0
  242. package/dist/renderer/LitRenderer.js +38 -12
  243. package/dist/renderer/LitRenderer.js.map +1 -0
  244. package/dist/renderer/directives/style-map.js +72 -0
  245. package/dist/renderer/executeTemplate.d.ts +13 -0
  246. package/dist/renderer/executeTemplate.js +30 -0
  247. package/dist/renderer/executeTemplate.js.map +1 -0
  248. package/dist/sap/base/Log.js +240 -0
  249. package/dist/sap/base/assert.js +7 -0
  250. package/dist/sap/base/security/URLListValidator.js +159 -0
  251. package/dist/sap/base/security/encodeCSS.js +14 -0
  252. package/dist/sap/base/security/encodeXML.js +23 -0
  253. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  254. package/dist/sap/base/strings/toHex.js +8 -0
  255. package/dist/sap/base/util/now.js +7 -0
  256. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  257. package/dist/theming/CustomStyle.d.ts +6 -0
  258. package/dist/theming/CustomStyle.js +46 -17
  259. package/dist/theming/CustomStyle.js.map +1 -0
  260. package/dist/theming/ThemeLoaded.d.ts +5 -0
  261. package/dist/theming/ThemeLoaded.js +14 -0
  262. package/dist/theming/ThemeLoaded.js.map +1 -0
  263. package/dist/theming/ThemeRegistered.d.ts +4 -0
  264. package/dist/theming/ThemeRegistered.js +11 -0
  265. package/dist/theming/ThemeRegistered.js.map +1 -0
  266. package/dist/theming/applyTheme.d.ts +2 -0
  267. package/dist/theming/applyTheme.js +75 -0
  268. package/dist/theming/applyTheme.js.map +1 -0
  269. package/dist/theming/getConstructableStyle.d.ts +9 -0
  270. package/dist/theming/getConstructableStyle.js +25 -0
  271. package/dist/theming/getConstructableStyle.js.map +1 -0
  272. package/dist/theming/getEffectiveLinksHrefs.d.ts +3 -0
  273. package/dist/theming/getEffectiveLinksHrefs.js +17 -0
  274. package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
  275. package/dist/theming/getEffectiveStyle.d.ts +3 -0
  276. package/dist/theming/getEffectiveStyle.js +32 -0
  277. package/dist/theming/getEffectiveStyle.js.map +1 -0
  278. package/dist/theming/getStylesString.d.ts +3 -0
  279. package/dist/theming/getStylesString.js +11 -0
  280. package/dist/theming/getStylesString.js.map +1 -0
  281. package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
  282. package/dist/theming/getThemeDesignerTheme.js +80 -0
  283. package/dist/theming/getThemeDesignerTheme.js.map +1 -0
  284. package/dist/theming/preloadLinks.d.ts +3 -0
  285. package/dist/theming/preloadLinks.js +19 -0
  286. package/dist/theming/preloadLinks.js.map +1 -0
  287. package/dist/thirdparty/_merge.d.ts +2 -0
  288. package/dist/thirdparty/_merge.js +35 -0
  289. package/dist/thirdparty/_merge.js.map +1 -0
  290. package/dist/thirdparty/isPlainObject.d.ts +2 -0
  291. package/dist/thirdparty/isPlainObject.js +19 -0
  292. package/dist/thirdparty/isPlainObject.js.map +1 -0
  293. package/dist/thirdparty/merge.d.ts +2 -0
  294. package/dist/thirdparty/merge.js +6 -0
  295. package/dist/thirdparty/merge.js.map +1 -0
  296. package/dist/types/AnimationMode.d.ts +32 -0
  297. package/dist/types/AnimationMode.js +33 -6
  298. package/dist/types/AnimationMode.js.map +1 -0
  299. package/dist/types/CSSColor.d.ts +15 -0
  300. package/dist/types/CSSColor.js +18 -0
  301. package/dist/types/CSSColor.js.map +1 -0
  302. package/dist/types/CalendarType.d.ts +37 -0
  303. package/dist/types/CalendarType.js +39 -0
  304. package/dist/types/CalendarType.js.map +1 -0
  305. package/dist/types/DOMReference.d.ts +17 -0
  306. package/dist/types/DOMReference.js +25 -0
  307. package/dist/types/DOMReference.js.map +1 -0
  308. package/dist/types/DataType.d.ts +25 -0
  309. package/dist/types/DataType.js +33 -14
  310. package/dist/types/DataType.js.map +1 -0
  311. package/dist/types/Float.d.ts +17 -0
  312. package/dist/types/Float.js +21 -0
  313. package/dist/types/Float.js.map +1 -0
  314. package/dist/types/Integer.d.ts +17 -0
  315. package/dist/types/Integer.js +17 -5
  316. package/dist/types/Integer.js.map +1 -0
  317. package/dist/types/InvisibleMessageMode.d.ts +25 -0
  318. package/dist/types/InvisibleMessageMode.js +27 -0
  319. package/dist/types/InvisibleMessageMode.js.map +1 -0
  320. package/dist/types/ItemNavigationBehavior.d.ts +24 -0
  321. package/dist/types/ItemNavigationBehavior.js +22 -17
  322. package/dist/types/ItemNavigationBehavior.js.map +1 -0
  323. package/dist/types/NavigationMode.d.ts +32 -0
  324. package/dist/types/NavigationMode.js +33 -5
  325. package/dist/types/NavigationMode.js.map +1 -0
  326. package/dist/types/ValueState.d.ts +42 -0
  327. package/dist/types/ValueState.js +41 -18
  328. package/dist/types/ValueState.js.map +1 -0
  329. package/dist/types.d.ts +18 -0
  330. package/dist/types.js +2 -0
  331. package/dist/types.js.map +1 -0
  332. package/dist/updateShadowRoot.d.ts +8 -0
  333. package/dist/updateShadowRoot.js +38 -0
  334. package/dist/updateShadowRoot.js.map +1 -0
  335. package/dist/util/AriaLabelHelper.d.ts +15 -0
  336. package/dist/util/AriaLabelHelper.js +171 -0
  337. package/dist/util/AriaLabelHelper.js.map +1 -0
  338. package/dist/util/Caret.d.ts +7 -0
  339. package/dist/util/Caret.js +23 -0
  340. package/dist/util/Caret.js.map +1 -0
  341. package/dist/util/ColorConversion.d.ts +30 -0
  342. package/dist/util/ColorConversion.js +337 -0
  343. package/dist/util/ColorConversion.js.map +1 -0
  344. package/dist/util/FetchHelper.d.ts +3 -0
  345. package/dist/util/FetchHelper.js +19 -25
  346. package/dist/util/FetchHelper.js.map +1 -0
  347. package/dist/util/FocusableElements.d.ts +4 -0
  348. package/dist/util/FocusableElements.js +68 -56
  349. package/dist/util/FocusableElements.js.map +1 -0
  350. package/dist/util/HTMLSanitizer.d.ts +3 -0
  351. package/dist/util/HTMLSanitizer.js +6 -0
  352. package/dist/util/HTMLSanitizer.js.map +1 -0
  353. package/dist/util/InvisibleMessage.d.ts +10 -0
  354. package/dist/util/InvisibleMessage.js +56 -0
  355. package/dist/util/InvisibleMessage.js.map +1 -0
  356. package/dist/util/PopupUtils.d.ts +7 -0
  357. package/dist/util/PopupUtils.js +74 -0
  358. package/dist/util/PopupUtils.js.map +1 -0
  359. package/dist/util/SlotsHelper.d.ts +9 -0
  360. package/dist/util/SlotsHelper.js +30 -0
  361. package/dist/util/SlotsHelper.js.map +1 -0
  362. package/dist/util/StringHelper.d.ts +3 -0
  363. package/dist/util/StringHelper.js +21 -9
  364. package/dist/util/StringHelper.js.map +1 -0
  365. package/dist/util/TabbableElements.d.ts +17 -0
  366. package/dist/util/TabbableElements.js +53 -40
  367. package/dist/util/TabbableElements.js.map +1 -0
  368. package/dist/util/arraysAreEqual.d.ts +2 -0
  369. package/dist/util/arraysAreEqual.js +13 -0
  370. package/dist/util/arraysAreEqual.js.map +1 -0
  371. package/dist/util/clamp.d.ts +9 -0
  372. package/dist/util/clamp.js +12 -0
  373. package/dist/util/clamp.js.map +1 -0
  374. package/dist/util/createLinkInHead.d.ts +7 -0
  375. package/dist/util/createLinkInHead.js +21 -0
  376. package/dist/util/createLinkInHead.js.map +1 -0
  377. package/dist/util/createStyleInHead.d.ts +8 -0
  378. package/dist/util/createStyleInHead.js +10 -10
  379. package/dist/util/createStyleInHead.js.map +1 -0
  380. package/dist/util/debounce.d.ts +2 -0
  381. package/dist/util/debounce.js +15 -0
  382. package/dist/util/debounce.js.map +1 -0
  383. package/dist/util/detectNavigatorLanguage.d.ts +2 -0
  384. package/dist/util/detectNavigatorLanguage.js +8 -9
  385. package/dist/util/detectNavigatorLanguage.js.map +1 -0
  386. package/dist/util/escapeRegex.d.ts +8 -0
  387. package/dist/util/escapeRegex.js +11 -0
  388. package/dist/util/escapeRegex.js.map +1 -0
  389. package/dist/util/formatMessage.d.ts +2 -0
  390. package/dist/util/formatMessage.js +15 -19
  391. package/dist/util/formatMessage.js.map +1 -0
  392. package/dist/util/generateHighlightedMarkup.d.ts +9 -0
  393. package/dist/util/generateHighlightedMarkup.js +41 -0
  394. package/dist/util/generateHighlightedMarkup.js.map +1 -0
  395. package/dist/util/getActiveElement.d.ts +2 -0
  396. package/dist/util/getActiveElement.js +9 -0
  397. package/dist/util/getActiveElement.js.map +1 -0
  398. package/dist/util/getClassCopy.d.ts +398 -0
  399. package/dist/util/getClassCopy.js +10 -0
  400. package/dist/util/getClassCopy.js.map +1 -0
  401. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
  402. package/dist/util/getDesigntimePropertyAsArray.js +4 -3
  403. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
  404. package/dist/util/getEffectiveContentDensity.d.ts +2 -0
  405. package/dist/util/getEffectiveContentDensity.js +4 -0
  406. package/dist/util/getEffectiveContentDensity.js.map +1 -0
  407. package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
  408. package/dist/util/getEffectiveScrollbarStyle.js +4 -0
  409. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
  410. package/dist/util/getFastNavigationGroups.d.ts +2 -0
  411. package/dist/util/getFastNavigationGroups.js +51 -0
  412. package/dist/util/getFastNavigationGroups.js.map +1 -0
  413. package/dist/util/getFileExtension.d.ts +12 -0
  414. package/dist/util/getFileExtension.js +19 -0
  415. package/dist/util/getFileExtension.js.map +1 -0
  416. package/dist/util/getNormalizedTarget.d.ts +7 -0
  417. package/dist/util/getNormalizedTarget.js +14 -0
  418. package/dist/util/getNormalizedTarget.js.map +1 -0
  419. package/dist/util/getSingletonElementInstance.d.ts +2 -0
  420. package/dist/util/getSingletonElementInstance.js +10 -0
  421. package/dist/util/getSingletonElementInstance.js.map +1 -0
  422. package/dist/util/isElementClickable.d.ts +2 -0
  423. package/dist/util/isElementClickable.js +16 -0
  424. package/dist/util/isElementClickable.js.map +1 -0
  425. package/dist/util/isElementHidden.d.ts +2 -0
  426. package/dist/util/isElementHidden.js +8 -0
  427. package/dist/util/isElementHidden.js.map +1 -0
  428. package/dist/util/isElementInView.d.ts +6 -0
  429. package/dist/util/isElementInView.js +12 -0
  430. package/dist/util/isElementInView.js.map +1 -0
  431. package/dist/util/isElementTabbable.d.ts +9 -0
  432. package/dist/util/isElementTabbable.js +30 -0
  433. package/dist/util/isElementTabbable.js.map +1 -0
  434. package/dist/util/isValidPropertyName.d.ts +8 -0
  435. package/dist/util/isValidPropertyName.js +20 -12
  436. package/dist/util/isValidPropertyName.js.map +1 -0
  437. package/dist/util/whenDOMReady.d.ts +2 -0
  438. package/dist/util/whenDOMReady.js +11 -10
  439. package/dist/util/whenDOMReady.js.map +1 -0
  440. package/dist/util/willShowContent.d.ts +2 -0
  441. package/dist/util/willShowContent.js +7 -0
  442. package/dist/util/willShowContent.js.map +1 -0
  443. package/dist/validateThemeRoot.d.ts +2 -0
  444. package/dist/validateThemeRoot.js +48 -0
  445. package/dist/validateThemeRoot.js.map +1 -0
  446. package/index.js +228 -2
  447. package/lib/generate-asset-parameters/index.js +27 -0
  448. package/lib/generate-styles/index.js +31 -0
  449. package/lib/generate-version-info/index.js +32 -0
  450. package/package-scripts.cjs +71 -0
  451. package/package.json +20 -13
  452. package/src/css/BusyIndicator.css +80 -0
  453. package/src/css/FontFace.css +66 -0
  454. package/src/css/OverrideFontFace.css +32 -0
  455. package/src/css/SystemCSSVars.css +17 -0
  456. package/src/renderer/directives/style-map.js +72 -0
  457. package/tsconfig.json +14 -0
  458. package/used-modules.txt +10 -0
  459. package/bundle.es5.js +0 -28
  460. package/config/rollup.config.js +0 -1
  461. package/config/wdio.conf.js +0 -1
  462. package/dist/Assets.js +0 -2
  463. package/dist/CSS.js +0 -48
  464. package/dist/FormatSettings.js +0 -31
  465. package/dist/Locale.js +0 -101
  466. package/dist/LocaleProvider.js +0 -34
  467. package/dist/RenderScheduler.js +0 -165
  468. package/dist/ResourceLoaderOverrides.js +0 -38
  469. package/dist/SVGIconRegistry.js +0 -54
  470. package/dist/animations/config.js +0 -5
  471. package/dist/boot.js +0 -25
  472. package/dist/compatibility/DOMObserver.js +0 -62
  473. package/dist/compatibility/patchNodeValue.js +0 -24
  474. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  475. package/dist/dates/CalendarDate.js +0 -203
  476. package/dist/dates/CalendarType.js +0 -22
  477. package/dist/dates/CalendarUtils.js +0 -99
  478. package/dist/delegate/CustomResize.js +0 -78
  479. package/dist/delegate/NativeResize.js +0 -44
  480. package/dist/events/PseudoEvents.js +0 -58
  481. package/dist/features/browsersupport/Edge.js +0 -6
  482. package/dist/features/browsersupport/IE11.js +0 -41
  483. package/dist/features/calendar/Buddhist.js +0 -1
  484. package/dist/features/calendar/Islamic.js +0 -1
  485. package/dist/features/calendar/Japanese.js +0 -1
  486. package/dist/features/calendar/Persian.js +0 -1
  487. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar.json +0 -5598
  488. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_EG.json +0 -5598
  489. package/dist/generated/assets/cldr/sap/ui/core/cldr/ar_SA.json +0 -5598
  490. package/dist/generated/assets/cldr/sap/ui/core/cldr/bg.json +0 -4789
  491. package/dist/generated/assets/cldr/sap/ui/core/cldr/ca.json +0 -4801
  492. package/dist/generated/assets/cldr/sap/ui/core/cldr/cs.json +0 -5245
  493. package/dist/generated/assets/cldr/sap/ui/core/cldr/da.json +0 -4696
  494. package/dist/generated/assets/cldr/sap/ui/core/cldr/de.json +0 -4797
  495. package/dist/generated/assets/cldr/sap/ui/core/cldr/de_AT.json +0 -4798
  496. package/dist/generated/assets/cldr/sap/ui/core/cldr/de_CH.json +0 -4796
  497. package/dist/generated/assets/cldr/sap/ui/core/cldr/el.json +0 -4694
  498. package/dist/generated/assets/cldr/sap/ui/core/cldr/el_CY.json +0 -4694
  499. package/dist/generated/assets/cldr/sap/ui/core/cldr/en.json +0 -4777
  500. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_AU.json +0 -4769
  501. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_GB.json +0 -4778
  502. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_HK.json +0 -4784
  503. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IE.json +0 -4778
  504. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_IN.json +0 -4779
  505. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_NZ.json +0 -4778
  506. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_PG.json +0 -4779
  507. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_SG.json +0 -4780
  508. package/dist/generated/assets/cldr/sap/ui/core/cldr/en_ZA.json +0 -4779
  509. package/dist/generated/assets/cldr/sap/ui/core/cldr/es.json +0 -4719
  510. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_AR.json +0 -4721
  511. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_BO.json +0 -4720
  512. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CL.json +0 -4721
  513. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_CO.json +0 -4721
  514. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_MX.json +0 -4722
  515. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_PE.json +0 -4720
  516. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_UY.json +0 -4722
  517. package/dist/generated/assets/cldr/sap/ui/core/cldr/es_VE.json +0 -4721
  518. package/dist/generated/assets/cldr/sap/ui/core/cldr/et.json +0 -4776
  519. package/dist/generated/assets/cldr/sap/ui/core/cldr/fa.json +0 -4704
  520. package/dist/generated/assets/cldr/sap/ui/core/cldr/fi.json +0 -4816
  521. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr.json +0 -4788
  522. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_BE.json +0 -4788
  523. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CA.json +0 -4782
  524. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_CH.json +0 -4806
  525. package/dist/generated/assets/cldr/sap/ui/core/cldr/fr_LU.json +0 -4788
  526. package/dist/generated/assets/cldr/sap/ui/core/cldr/he.json +0 -5133
  527. package/dist/generated/assets/cldr/sap/ui/core/cldr/hi.json +0 -4680
  528. package/dist/generated/assets/cldr/sap/ui/core/cldr/hr.json +0 -4910
  529. package/dist/generated/assets/cldr/sap/ui/core/cldr/hu.json +0 -4664
  530. package/dist/generated/assets/cldr/sap/ui/core/cldr/id.json +0 -4500
  531. package/dist/generated/assets/cldr/sap/ui/core/cldr/it.json +0 -4757
  532. package/dist/generated/assets/cldr/sap/ui/core/cldr/it_CH.json +0 -4757
  533. package/dist/generated/assets/cldr/sap/ui/core/cldr/ja.json +0 -4599
  534. package/dist/generated/assets/cldr/sap/ui/core/cldr/kk.json +0 -4537
  535. package/dist/generated/assets/cldr/sap/ui/core/cldr/ko.json +0 -4574
  536. package/dist/generated/assets/cldr/sap/ui/core/cldr/lt.json +0 -5234
  537. package/dist/generated/assets/cldr/sap/ui/core/cldr/lv.json +0 -4902
  538. package/dist/generated/assets/cldr/sap/ui/core/cldr/ms.json +0 -4352
  539. package/dist/generated/assets/cldr/sap/ui/core/cldr/nb.json +0 -4784
  540. package/dist/generated/assets/cldr/sap/ui/core/cldr/nl.json +0 -4790
  541. package/dist/generated/assets/cldr/sap/ui/core/cldr/nl_BE.json +0 -4790
  542. package/dist/generated/assets/cldr/sap/ui/core/cldr/pl.json +0 -5223
  543. package/dist/generated/assets/cldr/sap/ui/core/cldr/pt.json +0 -4703
  544. package/dist/generated/assets/cldr/sap/ui/core/cldr/pt_PT.json +0 -4753
  545. package/dist/generated/assets/cldr/sap/ui/core/cldr/ro.json +0 -4881
  546. package/dist/generated/assets/cldr/sap/ui/core/cldr/ru.json +0 -5157
  547. package/dist/generated/assets/cldr/sap/ui/core/cldr/ru_UA.json +0 -5157
  548. package/dist/generated/assets/cldr/sap/ui/core/cldr/sk.json +0 -5125
  549. package/dist/generated/assets/cldr/sap/ui/core/cldr/sl.json +0 -5105
  550. package/dist/generated/assets/cldr/sap/ui/core/cldr/sr.json +0 -4908
  551. package/dist/generated/assets/cldr/sap/ui/core/cldr/sv.json +0 -4818
  552. package/dist/generated/assets/cldr/sap/ui/core/cldr/th.json +0 -4633
  553. package/dist/generated/assets/cldr/sap/ui/core/cldr/tr.json +0 -4791
  554. package/dist/generated/assets/cldr/sap/ui/core/cldr/uk.json +0 -5126
  555. package/dist/generated/assets/cldr/sap/ui/core/cldr/vi.json +0 -4510
  556. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_CN.json +0 -4469
  557. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_HK.json +0 -4479
  558. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_SG.json +0 -4479
  559. package/dist/generated/assets/cldr/sap/ui/core/cldr/zh_TW.json +0 -4565
  560. package/dist/json-imports/LocaleData.js +0 -171
  561. package/dist/renderer/ifDefined.js +0 -21
  562. package/dist/resources/bundle.es5.js +0 -212
  563. package/dist/resources/bundle.es5.js.map +0 -1
  564. package/dist/resources/bundle.esm.js +0 -123
  565. package/dist/resources/bundle.esm.js.map +0 -1
  566. package/dist/shims/Core-shim.js +0 -52
  567. package/dist/shims/jquery-shim.js +0 -89
  568. package/dist/test-resources/assets/Themes.js +0 -11
  569. package/dist/test-resources/elements/Child.js +0 -35
  570. package/dist/test-resources/elements/Generic.js +0 -83
  571. package/dist/test-resources/elements/GenericExt.js +0 -26
  572. package/dist/test-resources/elements/NoShadowDOM.js +0 -13
  573. package/dist/test-resources/elements/Parent.js +0 -36
  574. package/dist/test-resources/pages/AllTestElements.html +0 -42
  575. package/dist/test-resources/pages/Configuration.html +0 -20
  576. package/dist/test-resources/pages/ConfigurationScript.html +0 -36
  577. package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -25
  578. package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -61
  579. package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -45
  580. package/dist/test-resources/specs/CustomTheme.spec.js +0 -25
  581. package/dist/test-resources/specs/Theming.spec.js +0 -31
  582. package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -258
  583. package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -93
  584. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -101
  585. package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -40
  586. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -12
  587. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -65
  588. package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -22
  589. package/dist/test-resources/specs/UI5ElementSlots.js +0 -34
  590. package/dist/theming/StyleInjection.js +0 -67
  591. package/dist/thirdparty/Array.from.js +0 -16
  592. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  593. package/dist/thirdparty/Array.prototype.find.js +0 -46
  594. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  595. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  596. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  597. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  598. package/dist/thirdparty/Number.isInteger.js +0 -5
  599. package/dist/thirdparty/Number.isNaN.js +0 -1
  600. package/dist/thirdparty/Number.parseInt.js +0 -1
  601. package/dist/thirdparty/Object.assign.js +0 -31
  602. package/dist/thirdparty/Object.entries.js +0 -11
  603. package/dist/thirdparty/Symbol.js +0 -2
  604. package/dist/thirdparty/WeakSet.js +0 -27
  605. package/dist/thirdparty/events-polyfills.js +0 -89
  606. package/dist/thirdparty/fetch.js +0 -1
  607. package/dist/thirdparty/template.js +0 -600
  608. package/dist/types/CSSSize.js +0 -9
  609. package/dist/types/PopupState.js +0 -37
  610. package/dist/util/CSSTransformUtils.js +0 -90
  611. package/dist/util/isDescendantOf.js +0 -15
  612. package/dist/util/isNodeClickable.js +0 -19
  613. package/dist/util/isNodeHidden.js +0 -13
  614. package/dist/util/isNodeTabbable.js +0 -28
  615. package/dist/util/normalizeLocale.js +0 -77
  616. package/dist/webcomponentsjs/LICENSE.md +0 -19
  617. package/dist/webcomponentsjs/README.md +0 -229
  618. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  619. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  620. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  621. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  622. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  623. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  624. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  625. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  626. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  627. package/dist/webcomponentsjs/package.json +0 -46
  628. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  629. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  630. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  631. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  632. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  633. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  634. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  635. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  636. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  637. package/package-scripts.js +0 -42
  638. package/src/AssetRegistry.js +0 -9
  639. package/src/Assets.js +0 -2
  640. package/src/CSS.js +0 -48
  641. package/src/Device.js +0 -823
  642. package/src/EventProvider.js +0 -73
  643. package/src/FeaturesRegistry.js +0 -11
  644. package/src/FontFace.js +0 -66
  645. package/src/FormatSettings.js +0 -31
  646. package/src/InitialConfiguration.js +0 -119
  647. package/src/Locale.js +0 -101
  648. package/src/LocaleProvider.js +0 -34
  649. package/src/RenderQueue.js +0 -42
  650. package/src/RenderScheduler.js +0 -165
  651. package/src/ResourceLoaderOverrides.js +0 -38
  652. package/src/SVGIconRegistry.js +0 -54
  653. package/src/StaticArea.js +0 -41
  654. package/src/StaticAreaItem.js +0 -73
  655. package/src/Theming.js +0 -45
  656. package/src/UI5Element.js +0 -842
  657. package/src/UI5ElementMetadata.js +0 -148
  658. package/src/animations/AnimationQueue.js +0 -42
  659. package/src/animations/animate.js +0 -53
  660. package/src/animations/config.js +0 -5
  661. package/src/animations/scroll.js +0 -28
  662. package/src/animations/slideDown.js +0 -79
  663. package/src/animations/slideUp.js +0 -71
  664. package/src/asset-registries/Icons.js +0 -24
  665. package/src/asset-registries/LocaleData.js +0 -101
  666. package/src/asset-registries/Themes.js +0 -75
  667. package/src/asset-registries/i18n.js +0 -75
  668. package/src/boot.js +0 -25
  669. package/src/compatibility/DOMObserver.js +0 -62
  670. package/src/compatibility/patchNodeValue.js +0 -24
  671. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  672. package/src/config/AnimationMode.js +0 -9
  673. package/src/config/CalendarType.js +0 -18
  674. package/src/config/FormatSettings.js +0 -9
  675. package/src/config/Language.js +0 -9
  676. package/src/config/NoConflict.js +0 -44
  677. package/src/config/RTL.js +0 -31
  678. package/src/config/Theme.js +0 -24
  679. package/src/dates/CalendarDate.js +0 -203
  680. package/src/dates/CalendarType.js +0 -22
  681. package/src/dates/CalendarUtils.js +0 -99
  682. package/src/delegate/CustomResize.js +0 -78
  683. package/src/delegate/ItemNavigation.js +0 -278
  684. package/src/delegate/NativeResize.js +0 -44
  685. package/src/delegate/ResizeHandler.js +0 -66
  686. package/src/delegate/ScrollEnablement.js +0 -80
  687. package/src/events/PseudoEvents.js +0 -58
  688. package/src/features/browsersupport/Edge.js +0 -6
  689. package/src/features/browsersupport/IE11.js +0 -41
  690. package/src/features/calendar/Buddhist.js +0 -1
  691. package/src/features/calendar/Islamic.js +0 -1
  692. package/src/features/calendar/Japanese.js +0 -1
  693. package/src/features/calendar/Persian.js +0 -1
  694. package/src/i18nBundle.js +0 -35
  695. package/src/json-imports/LocaleData.js +0 -171
  696. package/src/renderer/LitRenderer.js +0 -15
  697. package/src/renderer/ifDefined.js +0 -21
  698. package/src/shims/Core-shim.js +0 -52
  699. package/src/shims/jquery-shim.js +0 -89
  700. package/src/theming/CustomStyle.js +0 -19
  701. package/src/theming/StyleInjection.js +0 -67
  702. package/src/thirdparty/Array.from.js +0 -16
  703. package/src/thirdparty/Array.prototype.fill.js +0 -44
  704. package/src/thirdparty/Array.prototype.find.js +0 -46
  705. package/src/thirdparty/Array.prototype.includes.js +0 -51
  706. package/src/thirdparty/Element.prototype.closest.js +0 -11
  707. package/src/thirdparty/Element.prototype.matches.js +0 -6
  708. package/src/thirdparty/Map.prototype.keys.js +0 -9
  709. package/src/thirdparty/Number.isInteger.js +0 -5
  710. package/src/thirdparty/Number.isNaN.js +0 -1
  711. package/src/thirdparty/Number.parseInt.js +0 -1
  712. package/src/thirdparty/Object.assign.js +0 -31
  713. package/src/thirdparty/Object.entries.js +0 -11
  714. package/src/thirdparty/Symbol.js +0 -2
  715. package/src/thirdparty/WeakSet.js +0 -27
  716. package/src/thirdparty/events-polyfills.js +0 -89
  717. package/src/thirdparty/fetch.js +0 -1
  718. package/src/thirdparty/template.js +0 -600
  719. package/src/types/AnimationMode.js +0 -7
  720. package/src/types/CSSSize.js +0 -9
  721. package/src/types/DataType.js +0 -25
  722. package/src/types/Integer.js +0 -9
  723. package/src/types/ItemNavigationBehavior.js +0 -21
  724. package/src/types/NavigationMode.js +0 -6
  725. package/src/types/PopupState.js +0 -37
  726. package/src/types/ValueState.js +0 -21
  727. package/src/util/CSSTransformUtils.js +0 -90
  728. package/src/util/FetchHelper.js +0 -31
  729. package/src/util/FocusableElements.js +0 -60
  730. package/src/util/StringHelper.js +0 -11
  731. package/src/util/TabbableElements.js +0 -44
  732. package/src/util/createStyleInHead.js +0 -18
  733. package/src/util/detectNavigatorLanguage.js +0 -11
  734. package/src/util/formatMessage.js +0 -23
  735. package/src/util/getDesigntimePropertyAsArray.js +0 -4
  736. package/src/util/isDescendantOf.js +0 -15
  737. package/src/util/isNodeClickable.js +0 -19
  738. package/src/util/isNodeHidden.js +0 -13
  739. package/src/util/isNodeTabbable.js +0 -28
  740. package/src/util/isValidPropertyName.js +0 -20
  741. package/src/util/normalizeLocale.js +0 -77
  742. package/src/util/whenDOMReady.js +0 -13
  743. /package/{config/.eslintrc.js → .eslintrc.cjs} +0 -0
@@ -1,24 +1,125 @@
1
- import { registerIcon, registerCollectionPromise } from "../SVGIconRegistry.js";
2
- import { fetchJsonOnce } from "../util/FetchHelper.js";
3
-
4
- const registerIconBundle = async (collectionName, bundleData) => {
5
- let resolveFn;
6
- const collectionFetched = new Promise(resolve => {
7
- resolveFn = resolve;
8
- });
9
- registerCollectionPromise(collectionName, collectionFetched);
10
-
11
- if (typeof bundleData !== "object") { // not inlined from build -> fetch it
12
- bundleData = await fetchJsonOnce(bundleData);
13
- }
14
- fillRegistry(bundleData);
15
- resolveFn();
16
- };
17
-
18
- const fillRegistry = bundleData => {
19
- Object.keys(bundleData.data).forEach(iconName => {
20
- registerIcon(iconName, { pathData: bundleData.data[iconName], accData: bundleData.accData[iconName], collection: bundleData.collection });
21
- });
22
- };
23
-
24
- export { registerIconBundle }; // eslint-disable-line
1
+ import getSharedResource from "../getSharedResource.js";
2
+ import { getIconCollectionByAlias } from "../assets-meta/IconCollectionsAlias.js";
3
+ import { getEffectiveIconCollection } from "../config/Icons.js";
4
+ import { getI18nBundle } from "../i18nBundle.js";
5
+ const loaders = new Map();
6
+ const registry = getSharedResource("SVGIcons.registry", new Map());
7
+ const iconCollectionPromises = getSharedResource("SVGIcons.promises", new Map());
8
+ const ICON_NOT_FOUND = "ICON_NOT_FOUND";
9
+ const registerIconLoader = (collectionName, loader) => {
10
+ loaders.set(collectionName, loader);
11
+ };
12
+ const _loadIconCollectionOnce = async (collectionName) => {
13
+ if (!iconCollectionPromises.has(collectionName)) {
14
+ if (!loaders.has(collectionName)) {
15
+ throw new Error(`No loader registered for the ${collectionName} icons collection. Probably you forgot to import the "AllIcons.js" module for the respective package.`);
16
+ }
17
+ const loadIcons = loaders.get(collectionName);
18
+ iconCollectionPromises.set(collectionName, loadIcons(collectionName));
19
+ }
20
+ return iconCollectionPromises.get(collectionName);
21
+ };
22
+ const _fillRegistry = (bundleData) => {
23
+ Object.keys(bundleData.data).forEach(iconName => {
24
+ const iconData = bundleData.data[iconName];
25
+ registerIcon(iconName, {
26
+ pathData: (iconData.path || iconData.paths),
27
+ ltr: iconData.ltr,
28
+ accData: iconData.acc,
29
+ collection: bundleData.collection,
30
+ packageName: bundleData.packageName,
31
+ });
32
+ });
33
+ };
34
+ // set
35
+ const registerIcon = (name, iconData) => {
36
+ const key = `${iconData.collection}/${name}`;
37
+ registry.set(key, {
38
+ pathData: iconData.pathData,
39
+ ltr: iconData.ltr,
40
+ accData: iconData.accData,
41
+ packageName: iconData.packageName,
42
+ customTemplate: iconData.customTemplate,
43
+ viewBox: iconData.viewBox,
44
+ collection: iconData.collection,
45
+ });
46
+ };
47
+ /**
48
+ * Processes the full icon name and splits it into - "name", "collection"
49
+ * to form the proper registry key ("collection/name") under which the icon is registered:
50
+ *
51
+ * - removes legacy protocol ("sap-icon://")
52
+ * - resolves aliases (f.e "SAP-icons-TNT/actor" => "tnt/actor")
53
+ * - determines theme dependant icon collection (f.e "home" => "SAP-icons-v4/home" in Quartz | "SAP-icons-v5/home" in Horizon)
54
+ *
55
+ * @param { string } name
56
+ * @return { object }
57
+ */
58
+ const processName = (name) => {
59
+ // silently support ui5-compatible URIs
60
+ if (name.startsWith("sap-icon://")) {
61
+ name = name.replace("sap-icon://", "");
62
+ }
63
+ let collection;
64
+ [name, collection] = name.split("/").reverse();
65
+ name = name.replace("icon-", "");
66
+ if (collection) {
67
+ collection = getIconCollectionByAlias(collection);
68
+ }
69
+ collection = getEffectiveIconCollection(collection);
70
+ const registryKey = `${collection}/${name}`;
71
+ return { name, collection, registryKey };
72
+ };
73
+ const getIconDataSync = (name) => {
74
+ const { registryKey } = processName(name);
75
+ return registry.get(registryKey);
76
+ };
77
+ const getIconData = async (name) => {
78
+ const { collection, registryKey } = processName(name);
79
+ let iconData = ICON_NOT_FOUND;
80
+ try {
81
+ iconData = (await _loadIconCollectionOnce(collection));
82
+ }
83
+ catch (error) {
84
+ const e = error;
85
+ console.error(e.message); /* eslint-disable-line */
86
+ }
87
+ if (iconData === ICON_NOT_FOUND) {
88
+ return iconData;
89
+ }
90
+ if (!registry.has(registryKey)) {
91
+ // not filled by another await. many getters will await on the same loader, but fill only once
92
+ _fillRegistry(iconData);
93
+ }
94
+ return registry.get(registryKey);
95
+ };
96
+ /**
97
+ * Returns the accessible name for the given icon,
98
+ * or undefined if accessible name is not present.
99
+ *
100
+ * @param { string } name
101
+ * @return { Promise }
102
+ */
103
+ const getIconAccessibleName = async (name) => {
104
+ if (!name) {
105
+ return;
106
+ }
107
+ let iconData = getIconDataSync(name);
108
+ if (!iconData) {
109
+ iconData = await getIconData(name);
110
+ }
111
+ if (iconData && iconData !== ICON_NOT_FOUND && iconData.accData) {
112
+ const i18nBundle = await getI18nBundle(iconData.packageName);
113
+ return i18nBundle.getText(iconData.accData);
114
+ }
115
+ };
116
+ // test page usage only
117
+ const _getRegisteredNames = async () => {
118
+ // fetch one icon of each collection to trigger the bundle load
119
+ await getIconData("edit");
120
+ await getIconData("tnt/arrow");
121
+ await getIconData("business-suite/3d");
122
+ return Array.from(registry.keys());
123
+ };
124
+ export { registerIconLoader, getIconData, getIconDataSync, getIconAccessibleName, registerIcon, _getRegisteredNames, };
125
+ //# sourceMappingURL=Icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icons.js","sourceRoot":"","sources":["../../src/asset-registries/Icons.ts"],"names":[],"mappings":"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","sourcesContent":["import getSharedResource from \"../getSharedResource.js\";\nimport { getIconCollectionByAlias } from \"../assets-meta/IconCollectionsAlias.js\";\nimport { getEffectiveIconCollection } from \"../config/Icons.js\";\nimport { getI18nBundle } from \"../i18nBundle.js\";\nimport type { I18nText } from \"../i18nBundle.js\";\nimport type { TemplateFunction } from \"../renderer/executeTemplate.js\";\n\ntype IconLoader = (collectionName: string) => Promise<CollectionData>;\n\ntype CollectionData = {\n\tcollection: string,\n\tpackageName: string,\n\tversion?: string,\n\tdata: Record<string, {\n\t\tpath?: string,\n\t\tpaths?: Array<string>,\n\t\tltr?: boolean,\n\t\tacc?: I18nText,\n\t}>,\n};\n\ntype IconData = {\n\tcollection: string,\n\tpackageName: string,\n\tpathData: string | Array<string>,\n\tltr?: boolean,\n\taccData?: I18nText,\n\tcustomTemplate?: TemplateFunction,\n\tviewBox?: string,\n};\n\nconst loaders = new Map<string, IconLoader>();\nconst registry = getSharedResource<Map<string, IconData>>(\"SVGIcons.registry\", new Map());\nconst iconCollectionPromises = getSharedResource<Map<string, Promise<CollectionData>>>(\"SVGIcons.promises\", new Map());\n\nconst ICON_NOT_FOUND = \"ICON_NOT_FOUND\";\n\nconst registerIconLoader = (collectionName: string, loader: IconLoader) => {\n\tloaders.set(collectionName, loader);\n};\n\nconst _loadIconCollectionOnce = async (collectionName: string) => {\n\tif (!iconCollectionPromises.has(collectionName)) {\n\t\tif (!loaders.has(collectionName)) {\n\t\t\tthrow new Error(`No loader registered for the ${collectionName} icons collection. Probably you forgot to import the \"AllIcons.js\" module for the respective package.`);\n\t\t}\n\n\t\tconst loadIcons = loaders.get(collectionName)!;\n\t\ticonCollectionPromises.set(collectionName, loadIcons(collectionName));\n\t}\n\n\treturn iconCollectionPromises.get(collectionName);\n};\n\nconst _fillRegistry = (bundleData: CollectionData) => {\n\tObject.keys(bundleData.data).forEach(iconName => {\n\t\tconst iconData = bundleData.data[iconName];\n\n\t\tregisterIcon(iconName, {\n\t\t\tpathData: (iconData.path || iconData.paths)!,\n\t\t\tltr: iconData.ltr,\n\t\t\taccData: iconData.acc,\n\t\t\tcollection: bundleData.collection,\n\t\t\tpackageName: bundleData.packageName,\n\t\t});\n\t});\n};\n\n// set\nconst registerIcon = (name: string, iconData: IconData) => { // eslint-disable-line\n\tconst key = `${iconData.collection}/${name}`;\n\n\tregistry.set(key, {\n\t\tpathData: iconData.pathData,\n\t\tltr: iconData.ltr,\n\t\taccData: iconData.accData,\n\t\tpackageName: iconData.packageName,\n\t\tcustomTemplate: iconData.customTemplate,\n\t\tviewBox: iconData.viewBox,\n\t\tcollection: iconData.collection,\n\t});\n};\n\n/**\n * Processes the full icon name and splits it into - \"name\", \"collection\"\n * to form the proper registry key (\"collection/name\") under which the icon is registered:\n *\n * - removes legacy protocol (\"sap-icon://\")\n * - resolves aliases (f.e \"SAP-icons-TNT/actor\" => \"tnt/actor\")\n * - determines theme dependant icon collection (f.e \"home\" => \"SAP-icons-v4/home\" in Quartz | \"SAP-icons-v5/home\" in Horizon)\n *\n * @param { string } name\n * @return { object }\n */\nconst processName = (name: string) => {\n\t// silently support ui5-compatible URIs\n\tif (name.startsWith(\"sap-icon://\")) {\n\t\tname = name.replace(\"sap-icon://\", \"\");\n\t}\n\n\tlet collection: string;\n\t[name, collection] = name.split(\"/\").reverse();\n\n\tname = name.replace(\"icon-\", \"\");\n\n\tif (collection) {\n\t\tcollection = getIconCollectionByAlias(collection);\n\t}\n\tcollection = getEffectiveIconCollection(collection);\n\n\tconst registryKey = `${collection}/${name}`;\n\treturn { name, collection, registryKey };\n};\n\nconst getIconDataSync = (name: string) => {\n\tconst { registryKey } = processName(name);\n\treturn registry.get(registryKey);\n};\n\nconst getIconData = async (name: string) => {\n\tconst { collection, registryKey } = processName(name);\n\n\tlet iconData: string | CollectionData = ICON_NOT_FOUND;\n\ttry {\n\t\ticonData = (await _loadIconCollectionOnce(collection))!;\n\t} catch (error: unknown) {\n\t\tconst e = error as Error;\n\t\tconsole.error(e.message); /* eslint-disable-line */\n\t}\n\n\tif (iconData === ICON_NOT_FOUND) {\n\t\treturn iconData;\n\t}\n\n\tif (!registry.has(registryKey)) {\n\t\t// not filled by another await. many getters will await on the same loader, but fill only once\n\t\t_fillRegistry(iconData as CollectionData);\n\t}\n\treturn registry.get(registryKey);\n};\n\n/**\n * Returns the accessible name for the given icon,\n * or undefined if accessible name is not present.\n *\n * @param { string } name\n * @return { Promise }\n */\nconst getIconAccessibleName = async (name: string): Promise<string | undefined> => {\n\tif (!name) {\n\t\treturn;\n\t}\n\n\tlet iconData: typeof ICON_NOT_FOUND | IconData | undefined = getIconDataSync(name);\n\n\tif (!iconData) {\n\t\ticonData = await getIconData(name);\n\t}\n\n\tif (iconData && iconData !== ICON_NOT_FOUND && iconData.accData) {\n\t\tconst i18nBundle = await getI18nBundle(iconData.packageName);\n\t\treturn i18nBundle.getText(iconData.accData);\n\t}\n};\n\n// test page usage only\nconst _getRegisteredNames = async () => {\n\t// fetch one icon of each collection to trigger the bundle load\n\tawait getIconData(\"edit\");\n\tawait getIconData(\"tnt/arrow\");\n\tawait getIconData(\"business-suite/3d\");\n\treturn Array.from(registry.keys());\n};\n\nexport {\n\tregisterIconLoader,\n\tgetIconData,\n\tgetIconDataSync,\n\tgetIconAccessibleName,\n\tregisterIcon,\n\t_getRegisteredNames,\n};\n\nexport type {\n\tIconData,\n\tCollectionData,\n};\n"]}
@@ -0,0 +1,17 @@
1
+ import type { I18nText } from "../i18nBundle.js";
2
+ type IllustrationLoader = (illustrationName: string) => Promise<IllustrationData>;
3
+ type IllustrationProperties = {
4
+ dialogSvg: string;
5
+ sceneSvg: string;
6
+ spotSvg: string;
7
+ title: I18nText;
8
+ subtitle: I18nText;
9
+ };
10
+ type IllustrationData = IllustrationProperties & {
11
+ set: string;
12
+ };
13
+ declare const registerIllustration: (name: string, data: IllustrationData) => void;
14
+ declare const registerIllustrationLoader: (illustrationName: string, loader: IllustrationLoader) => void;
15
+ declare const getIllustrationDataSync: (illustrationName: string) => IllustrationProperties | undefined;
16
+ declare const getIllustrationData: (illustrationName: string) => Promise<IllustrationProperties | undefined>;
17
+ export { getIllustrationDataSync, registerIllustration, registerIllustrationLoader, getIllustrationData, };
@@ -0,0 +1,46 @@
1
+ import getSharedResource from "../getSharedResource.js";
2
+ const loaders = new Map();
3
+ const registry = getSharedResource("SVGIllustration.registry", new Map());
4
+ const illustrationPromises = getSharedResource("SVGIllustration.promises", new Map());
5
+ const registerIllustration = (name, data) => {
6
+ registry.set(`${data.set}/${name}`, {
7
+ dialogSvg: data.dialogSvg,
8
+ sceneSvg: data.sceneSvg,
9
+ spotSvg: data.spotSvg,
10
+ title: data.title,
11
+ subtitle: data.subtitle,
12
+ });
13
+ };
14
+ const registerIllustrationLoader = (illustrationName, loader) => {
15
+ loaders.set(illustrationName, loader);
16
+ };
17
+ const _loadIllustrationOnce = async (illustrationName) => {
18
+ if (!illustrationPromises.has(illustrationName)) {
19
+ if (!loaders.has(illustrationName)) {
20
+ const illustrationPath = illustrationName.startsWith("Tnt") ? `tnt/${illustrationName.replace(/^Tnt/, "")}` : illustrationName;
21
+ throw new Error(`No loader registered for the ${illustrationName} illustration. Probably you forgot to import the "@ui5/webcomponents-fiori/dist/illustrations/${illustrationPath}.js" module. Or you can import the "@ui5/webcomponents-fiori/dist/illustrations/AllIllustrations.js" module that will make all illustrations available, but fetch only the ones used.`);
22
+ }
23
+ const loadIllustrations = loaders.get(illustrationName);
24
+ illustrationPromises.set(illustrationName, loadIllustrations(illustrationName));
25
+ }
26
+ return illustrationPromises.get(illustrationName);
27
+ };
28
+ const getIllustrationDataSync = (illustrationName) => {
29
+ let set = "fiori";
30
+ if (illustrationName.startsWith("Tnt")) {
31
+ set = "tnt";
32
+ illustrationName = illustrationName.replace(/^Tnt/, "");
33
+ }
34
+ return registry.get(`${set}/${illustrationName}`);
35
+ };
36
+ const getIllustrationData = async (illustrationName) => {
37
+ let set = "fiori";
38
+ await _loadIllustrationOnce(illustrationName);
39
+ if (illustrationName.startsWith("Tnt")) {
40
+ set = "tnt";
41
+ illustrationName = illustrationName.replace(/^Tnt/, "");
42
+ }
43
+ return registry.get(`${set}/${illustrationName}`);
44
+ };
45
+ export { getIllustrationDataSync, registerIllustration, registerIllustrationLoader, getIllustrationData, };
46
+ //# sourceMappingURL=Illustrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Illustrations.js","sourceRoot":"","sources":["../../src/asset-registries/Illustrations.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AAiBxD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA8B,CAAC;AACtD,MAAM,QAAQ,GAAG,iBAAiB,CAAsC,0BAA0B,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAC/G,MAAM,oBAAoB,GAAG,iBAAiB,CAAyC,0BAA0B,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAE9H,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,IAAsB,EAAE,EAAE;IACrE,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE;QACnC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACvB,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,gBAAwB,EAAE,MAA0B,EAAE,EAAE;IAC3F,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,KAAK,EAAE,gBAAwB,EAAE,EAAE;IAChE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;QAChD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;YACnC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAC/H,MAAM,IAAI,KAAK,CAAC,gCAAgC,gBAAgB,iGAAiG,gBAAgB,uLAAuL,CAAC,CAAC;SAC1W;QAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAE,CAAC;QACzD,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC;KAChF;IACD,OAAO,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,gBAAwB,EAAE,EAAE;IAC5D,IAAI,GAAG,GAAG,OAAO,CAAC;IAElB,IAAI,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QACvC,GAAG,GAAG,KAAK,CAAC;QACZ,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;KACxD;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,gBAAgB,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAAE,gBAAwB,EAAE,EAAE;IAC9D,IAAI,GAAG,GAAG,OAAO,CAAC;IAElB,MAAM,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IAC9C,IAAI,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QACvC,GAAG,GAAG,KAAK,CAAC;QACZ,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;KACxD;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,gBAAgB,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,OAAO,EACN,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,GACnB,CAAC","sourcesContent":["import getSharedResource from \"../getSharedResource.js\";\nimport type { I18nText } from \"../i18nBundle.js\";\n\ntype IllustrationLoader = (illustrationName: string) => Promise<IllustrationData>;\n\ntype IllustrationProperties = {\n\tdialogSvg: string,\n\tsceneSvg: string,\n\tspotSvg: string,\n\ttitle: I18nText,\n\tsubtitle: I18nText,\n};\n\ntype IllustrationData = IllustrationProperties & {\n\tset: string,\n};\n\nconst loaders = new Map<string, IllustrationLoader>();\nconst registry = getSharedResource<Map<string, IllustrationProperties>>(\"SVGIllustration.registry\", new Map());\nconst illustrationPromises = getSharedResource<Map<string, Promise<IllustrationData>>>(\"SVGIllustration.promises\", new Map());\n\nconst registerIllustration = (name: string, data: IllustrationData) => {\n\tregistry.set(`${data.set}/${name}`, {\n\t\tdialogSvg: data.dialogSvg,\n\t\tsceneSvg: data.sceneSvg,\n\t\tspotSvg: data.spotSvg,\n\t\ttitle: data.title,\n\t\tsubtitle: data.subtitle,\n\t});\n};\n\nconst registerIllustrationLoader = (illustrationName: string, loader: IllustrationLoader) => {\n\tloaders.set(illustrationName, loader);\n};\n\nconst _loadIllustrationOnce = async (illustrationName: string) => {\n\tif (!illustrationPromises.has(illustrationName)) {\n\t\tif (!loaders.has(illustrationName)) {\n\t\t\tconst illustrationPath = illustrationName.startsWith(\"Tnt\") ? `tnt/${illustrationName.replace(/^Tnt/, \"\")}` : illustrationName;\n\t\t\tthrow new Error(`No loader registered for the ${illustrationName} illustration. Probably you forgot to import the \"@ui5/webcomponents-fiori/dist/illustrations/${illustrationPath}.js\" module. Or you can import the \"@ui5/webcomponents-fiori/dist/illustrations/AllIllustrations.js\" module that will make all illustrations available, but fetch only the ones used.`);\n\t\t}\n\n\t\tconst loadIllustrations = loaders.get(illustrationName)!;\n\t\tillustrationPromises.set(illustrationName, loadIllustrations(illustrationName));\n\t}\n\treturn illustrationPromises.get(illustrationName);\n};\n\nconst getIllustrationDataSync = (illustrationName: string) => {\n\tlet set = \"fiori\";\n\n\tif (illustrationName.startsWith(\"Tnt\")) {\n\t\tset = \"tnt\";\n\t\tillustrationName = illustrationName.replace(/^Tnt/, \"\");\n\t}\n\treturn registry.get(`${set}/${illustrationName}`);\n};\n\nconst getIllustrationData = async (illustrationName: string) => {\n\tlet set = \"fiori\";\n\n\tawait _loadIllustrationOnce(illustrationName);\n\tif (illustrationName.startsWith(\"Tnt\")) {\n\t\tset = \"tnt\";\n\t\tillustrationName = illustrationName.replace(/^Tnt/, \"\");\n\t}\n\treturn registry.get(`${set}/${illustrationName}`);\n};\n\nexport {\n\tgetIllustrationDataSync,\n\tregisterIllustration,\n\tregisterIllustrationLoader,\n\tgetIllustrationData,\n};\n"]}
@@ -0,0 +1,7 @@
1
+ type LocaleDataLoader = (locale: string) => Promise<CLDRData>;
2
+ type CLDRData = Record<string, object | boolean | string>;
3
+ declare const getLocaleData: (localeId: string) => CLDRData;
4
+ declare const fetchCldr: (language: string, region: string, script: string) => Promise<void>;
5
+ declare const registerLocaleDataLoader: (localeId: string, loader: LocaleDataLoader) => void;
6
+ export { registerLocaleDataLoader, fetchCldr, getLocaleData, };
7
+ export type { CLDRData, };
@@ -1,101 +1,136 @@
1
- import { registerModuleContent } from "../ResourceLoaderOverrides.js";
2
- import { fetchJsonOnce } from "../util/FetchHelper.js";
3
-
4
- const supportedLocales = ["ar", "ar_EG", "ar_SA", "bg", "ca", "cs", "da", "de", "de_AT", "de_CH", "el", "el_CY", "en", "en_AU", "en_GB", "en_HK", "en_IE", "en_IN", "en_NZ", "en_PG", "en_SG", "en_ZA", "es", "es_AR", "es_BO", "es_CL", "es_CO", "es_MX", "es_PE", "es_UY", "es_VE", "et", "fa", "fi", "fr", "fr_BE", "fr_CA", "fr_CH", "fr_LU", "he", "hi", "hr", "hu", "id", "it", "it_CH", "ja", "kk", "ko", "lt", "lv", "ms", "nb", "nl", "nl_BE", "pl", "pt", "pt_PT", "ro", "ru", "ru_UA", "sk", "sl", "sr", "sv", "th", "tr", "uk", "vi", "zh_CN", "zh_HK", "zh_SG", "zh_TW"];
5
-
6
- const cldrData = {};
7
- const cldrUrls = {};
8
-
9
- // externally configurable mapping function for resolving (localeId -> URL)
10
- // default implementation - ui5 CDN
11
- let cldrMappingFn = locale => `https://ui5.sap.com/1.60.2/resources/sap/ui/core/cldr/${locale}.json`;
12
-
1
+ import { attachLanguageChange } from "../locale/languageChange.js";
2
+ import getLocale from "../locale/getLocale.js";
3
+ import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from "../generated/AssetParameters.js";
4
+ import { getFeature } from "../FeaturesRegistry.js";
5
+ const localeDataMap = new Map();
6
+ const loaders = new Map();
7
+ const cldrPromises = new Map();
8
+ const reportedErrors = new Set();
9
+ let warningShown = false;
13
10
  const M_ISO639_OLD_TO_NEW = {
14
- "iw": "he",
15
- "ji": "yi",
16
- "in": "id",
17
- "sh": "sr",
11
+ "iw": "he",
12
+ "ji": "yi",
13
+ "in": "id",
18
14
  };
19
-
20
- const calcLocale = (language, region, script) => {
21
- // normalize language and handle special cases
22
- language = (language && M_ISO639_OLD_TO_NEW[language]) || language;
23
- // Special case 1: in an SAP context, the inclusive language code "no" always means Norwegian Bokmal ("nb")
24
- if (language === "no") {
25
- language = "nb";
26
- }
27
- // Special case 2: for Chinese, derive a default region from the script (this behavior is inherited from Java)
28
- if (language === "zh" && !region) {
29
- if (script === "Hans") {
30
- region = "CN";
31
- } else if (script === "Hant") {
32
- region = "TW";
33
- }
34
- }
35
-
36
- // try language + region
37
- let localeId = `${language}_${region}`;
38
- if (!supportedLocales.includes(localeId)) {
39
- // fallback to language only
40
- localeId = language;
41
- }
42
- if (!supportedLocales.includes(localeId)) {
43
- // fallback to english
44
- localeId = "en";
45
- }
46
-
47
- return localeId;
48
- };
49
-
50
-
51
- const resolveMissingMappings = () => {
52
- if (!cldrMappingFn) {
53
- return;
54
- }
55
-
56
- const missingLocales = supportedLocales.filter(locale => !cldrData[locale] && !cldrUrls[locale]);
57
- missingLocales.forEach(locale => {
58
- cldrUrls[locale] = cldrMappingFn(locale);
59
- });
15
+ const _showAssetsWarningOnce = (localeId) => {
16
+ if (warningShown) {
17
+ return;
18
+ }
19
+ console.warn(`[LocaleData] Supported locale "${localeId}" not configured, import the "Assets.js" module from the webcomponents package you are using.`); /* eslint-disable-line */
20
+ warningShown = true;
60
21
  };
61
-
62
- const fetchCldr = async (language, region, script) => {
63
- resolveMissingMappings();
64
- const localeId = calcLocale(language, region, script);
65
-
66
- const cldrObj = cldrData[localeId];
67
- const url = cldrUrls[localeId];
68
-
69
- if (cldrObj) {
70
- // inlined from build or fetched independently
71
- registerModuleContent(`sap/ui/core/cldr/${localeId}.json`, cldrObj);
72
- } else if (url) {
73
- // fetch it
74
- const cldrContent = await fetchJsonOnce(url);
75
- registerModuleContent(`sap/ui/core/cldr/${localeId}.json`, cldrContent);
76
- }
22
+ const calcLocale = (language, region, script) => {
23
+ // normalize language and handle special cases
24
+ language = (language && M_ISO639_OLD_TO_NEW[language]) || language;
25
+ // Special case 1: in an SAP context, the inclusive language code "no" always means Norwegian Bokmal ("nb")
26
+ if (language === "no") {
27
+ language = "nb";
28
+ }
29
+ // Special case 2: for Chinese, derive a default region from the script (this behavior is inherited from Java)
30
+ if (language === "zh" && !region) {
31
+ if (script === "Hans") {
32
+ region = "CN";
33
+ }
34
+ else if (script === "Hant") {
35
+ region = "TW";
36
+ }
37
+ }
38
+ // Special case 3: for Serbian, there are cyrillic and latin scripts, "sh" and "sr-latn" map to "latin", "sr" maps to cyrillic.
39
+ if (language === "sh" || (language === "sr" && script === "Latn")) {
40
+ language = "sr";
41
+ region = "Latn";
42
+ }
43
+ // try language + region
44
+ let localeId = `${language}_${region}`;
45
+ if (SUPPORTED_LOCALES.includes(localeId)) {
46
+ if (loaders.has(localeId)) {
47
+ // supported and has loader
48
+ return localeId;
49
+ }
50
+ // supported, no loader - fallback to default and warn
51
+ _showAssetsWarningOnce(localeId);
52
+ return DEFAULT_LOCALE;
53
+ }
54
+ // not supported, try language only
55
+ localeId = language;
56
+ if (SUPPORTED_LOCALES.includes(localeId)) {
57
+ if (loaders.has(localeId)) {
58
+ // supported and has loader
59
+ return localeId;
60
+ }
61
+ // supported, no loader - fallback to default and warn
62
+ _showAssetsWarningOnce(localeId);
63
+ return DEFAULT_LOCALE;
64
+ }
65
+ // not supported - fallback to default locale
66
+ return DEFAULT_LOCALE;
77
67
  };
78
-
79
- const registerCldr = (locale, url) => {
80
- cldrUrls[locale] = url;
68
+ // internal set data
69
+ const setLocaleData = (localeId, content) => {
70
+ localeDataMap.set(localeId, content);
81
71
  };
82
-
83
- const setCldrData = (locale, data) => {
84
- cldrData[locale] = data;
72
+ // external getSync
73
+ const getLocaleData = (localeId) => {
74
+ // if there is no loader, the default fallback was fetched and a warning was given - use default locale instead
75
+ if (!loaders.has(localeId)) {
76
+ localeId = DEFAULT_LOCALE;
77
+ }
78
+ const content = localeDataMap.get(localeId);
79
+ if (!content) {
80
+ throw new Error(`CLDR data for locale ${localeId} is not loaded!`);
81
+ }
82
+ return content;
85
83
  };
86
-
87
- const getCldrData = locale => {
88
- return cldrData[locale];
84
+ // load bundle over the network once
85
+ const _loadCldrOnce = (localeId) => {
86
+ if (!cldrPromises.get(localeId)) {
87
+ const loadCldr = loaders.get(localeId);
88
+ if (!loadCldr) {
89
+ throw new Error(`CLDR data for locale ${localeId} is not loaded!`);
90
+ }
91
+ cldrPromises.set(localeId, loadCldr(localeId));
92
+ }
93
+ return cldrPromises.get(localeId);
89
94
  };
90
-
91
- const _registerMappingFunction = mappingFn => {
92
- cldrMappingFn = mappingFn;
95
+ // external getAsync
96
+ const fetchCldr = async (language, region, script) => {
97
+ const localeId = calcLocale(language, region, script);
98
+ // reuse OpenUI5 CLDR if present
99
+ const openUI5Support = getFeature("OpenUI5Support");
100
+ if (openUI5Support) {
101
+ const cldrContent = openUI5Support.getLocaleDataObject();
102
+ if (cldrContent) {
103
+ // only if openui5 actually returned valid content
104
+ setLocaleData(localeId, cldrContent);
105
+ return;
106
+ }
107
+ }
108
+ // fetch it
109
+ try {
110
+ const cldrContent = await _loadCldrOnce(localeId);
111
+ setLocaleData(localeId, cldrContent);
112
+ }
113
+ catch (error) {
114
+ const e = error;
115
+ if (!reportedErrors.has(e.message)) {
116
+ reportedErrors.add(e.message);
117
+ console.error(e.message); /* eslint-disable-line */
118
+ }
119
+ }
93
120
  };
94
-
95
- export {
96
- fetchCldr,
97
- registerCldr,
98
- setCldrData,
99
- getCldrData,
100
- _registerMappingFunction,
121
+ const registerLocaleDataLoader = (localeId, loader) => {
122
+ loaders.set(localeId, loader);
101
123
  };
124
+ // register default loader for "en" from ui5 CDN (dev workflow without assets)
125
+ registerLocaleDataLoader("en", async () => {
126
+ const cldrContent = await fetch(`https://sdk.openui5.org/1.103.0/resources/sap/ui/core/cldr/en.json`);
127
+ return cldrContent.json();
128
+ });
129
+ // When the language changes dynamically (the user calls setLanguage),
130
+ // re-fetch the required CDRD data.
131
+ attachLanguageChange(() => {
132
+ const locale = getLocale();
133
+ return fetchCldr(locale.getLanguage(), locale.getRegion(), locale.getScript());
134
+ });
135
+ export { registerLocaleDataLoader, fetchCldr, getLocaleData, };
136
+ //# sourceMappingURL=LocaleData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocaleData.js","sourceRoot":"","sources":["../../src/asset-registries/LocaleData.ts"],"names":[],"mappings":"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","sourcesContent":["import { attachLanguageChange } from \"../locale/languageChange.js\";\nimport getLocale from \"../locale/getLocale.js\";\nimport { DEFAULT_LOCALE, SUPPORTED_LOCALES } from \"../generated/AssetParameters.js\";\nimport { getFeature } from \"../FeaturesRegistry.js\";\nimport type OpenUI5Support from \"../features/OpenUI5Support\";\n\ntype LocaleDataLoader = (locale: string) => Promise<CLDRData>;\ntype CLDRData = Record<string, object | boolean | string>;\n\nconst localeDataMap = new Map<string, CLDRData>();\nconst loaders = new Map<string, LocaleDataLoader>();\nconst cldrPromises = new Map<string, Promise<CLDRData>>();\nconst reportedErrors = new Set<string>();\nlet warningShown = false;\n\nconst M_ISO639_OLD_TO_NEW = {\n\t\"iw\": \"he\",\n\t\"ji\": \"yi\",\n\t\"in\": \"id\",\n};\n\nconst _showAssetsWarningOnce = (localeId: string) => {\n\tif (warningShown) {\n\t\treturn;\n\t}\n\n\tconsole.warn(`[LocaleData] Supported locale \"${localeId}\" not configured, import the \"Assets.js\" module from the webcomponents package you are using.`); /* eslint-disable-line */\n\n\twarningShown = true;\n};\n\nconst calcLocale = (language: string, region: string, script: string) => {\n\t// normalize language and handle special cases\n\tlanguage = (language && M_ISO639_OLD_TO_NEW[language as keyof typeof M_ISO639_OLD_TO_NEW]) || language;\n\t// Special case 1: in an SAP context, the inclusive language code \"no\" always means Norwegian Bokmal (\"nb\")\n\tif (language === \"no\") {\n\t\tlanguage = \"nb\";\n\t}\n\t// Special case 2: for Chinese, derive a default region from the script (this behavior is inherited from Java)\n\tif (language === \"zh\" && !region) {\n\t\tif (script === \"Hans\") {\n\t\t\tregion = \"CN\";\n\t\t} else if (script === \"Hant\") {\n\t\t\tregion = \"TW\";\n\t\t}\n\t}\n\n\t// Special case 3: for Serbian, there are cyrillic and latin scripts, \"sh\" and \"sr-latn\" map to \"latin\", \"sr\" maps to cyrillic.\n\tif (language === \"sh\" || (language === \"sr\" && script === \"Latn\")) {\n\t\tlanguage = \"sr\";\n\t\tregion = \"Latn\";\n\t}\n\n\t// try language + region\n\tlet localeId = `${language}_${region}`;\n\tif (SUPPORTED_LOCALES.includes(localeId)) {\n\t\tif (loaders.has(localeId)) {\n\t\t\t// supported and has loader\n\t\t\treturn localeId;\n\t\t}\n\n\t\t// supported, no loader - fallback to default and warn\n\t\t_showAssetsWarningOnce(localeId);\n\t\treturn DEFAULT_LOCALE;\n\t}\n\n\t// not supported, try language only\n\tlocaleId = language;\n\tif (SUPPORTED_LOCALES.includes(localeId)) {\n\t\tif (loaders.has(localeId)) {\n\t\t\t// supported and has loader\n\t\t\treturn localeId;\n\t\t}\n\n\t\t// supported, no loader - fallback to default and warn\n\t\t_showAssetsWarningOnce(localeId);\n\t\treturn DEFAULT_LOCALE;\n\t}\n\n\t// not supported - fallback to default locale\n\treturn DEFAULT_LOCALE;\n};\n\n// internal set data\nconst setLocaleData = (localeId: string, content: CLDRData) => {\n\tlocaleDataMap.set(localeId, content);\n};\n\n// external getSync\nconst getLocaleData = (localeId: string) => {\n\t// if there is no loader, the default fallback was fetched and a warning was given - use default locale instead\n\tif (!loaders.has(localeId)) {\n\t\tlocaleId = DEFAULT_LOCALE;\n\t}\n\n\tconst content = localeDataMap.get(localeId);\n\tif (!content) {\n\t\tthrow new Error(`CLDR data for locale ${localeId} is not loaded!`);\n\t}\n\n\treturn content;\n};\n\n// load bundle over the network once\nconst _loadCldrOnce = (localeId: string) => {\n\tif (!cldrPromises.get(localeId)) {\n\t\tconst loadCldr = loaders.get(localeId);\n\n\t\tif (!loadCldr) {\n\t\t\tthrow new Error(`CLDR data for locale ${localeId} is not loaded!`);\n\t\t}\n\n\t\tcldrPromises.set(localeId, loadCldr(localeId));\n\t}\n\n\treturn cldrPromises.get(localeId);\n};\n\n// external getAsync\nconst fetchCldr = async (language: string, region: string, script: string) => {\n\tconst localeId = calcLocale(language, region, script);\n\n\t// reuse OpenUI5 CLDR if present\n\tconst openUI5Support = getFeature<typeof OpenUI5Support>(\"OpenUI5Support\");\n\tif (openUI5Support) {\n\t\tconst cldrContent = openUI5Support.getLocaleDataObject();\n\t\tif (cldrContent) {\n\t\t\t// only if openui5 actually returned valid content\n\t\t\tsetLocaleData(localeId, cldrContent);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// fetch it\n\ttry {\n\t\tconst cldrContent = await _loadCldrOnce(localeId);\n\t\tsetLocaleData(localeId, cldrContent as CLDRData);\n\t} catch (error: unknown) {\n\t\tconst e = error as Error;\n\t\tif (!reportedErrors.has(e.message)) {\n\t\t\treportedErrors.add(e.message);\n\t\t\tconsole.error(e.message); /* eslint-disable-line */\n\t\t}\n\t}\n};\n\nconst registerLocaleDataLoader = (localeId: string, loader: LocaleDataLoader) => {\n\tloaders.set(localeId, loader);\n};\n\n// register default loader for \"en\" from ui5 CDN (dev workflow without assets)\nregisterLocaleDataLoader(\"en\", async () => {\n\tconst cldrContent = await fetch(`https://sdk.openui5.org/1.103.0/resources/sap/ui/core/cldr/en.json`);\n\treturn cldrContent.json() as Promise<CLDRData>;\n});\n\n// When the language changes dynamically (the user calls setLanguage),\n// re-fetch the required CDRD data.\nattachLanguageChange(() => {\n\tconst locale = getLocale();\n\treturn fetchCldr(locale.getLanguage(), locale.getRegion(), locale.getScript());\n});\n\nexport {\n\tregisterLocaleDataLoader,\n\tfetchCldr,\n\tgetLocaleData,\n};\n\nexport type {\n\tCLDRData,\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import { StyleData, StyleDataCSP } from "../types.js";
2
+ type ThemeData = {
3
+ _: StyleDataCSP;
4
+ } | StyleDataCSP | string;
5
+ type ThemeLoader = (themeName: string) => Promise<ThemeData>;
6
+ declare const registerThemePropertiesLoader: (packageName: string, themeName: string, loader: ThemeLoader) => void;
7
+ declare const getThemeProperties: (packageName: string, themeName: string) => Promise<StyleData | undefined>;
8
+ declare const getRegisteredPackages: () => Set<string>;
9
+ declare const isThemeRegistered: (theme: string) => boolean;
10
+ export { registerThemePropertiesLoader, getThemeProperties, getRegisteredPackages, isThemeRegistered, };
11
+ export type { ThemeData, ThemeLoader, };
@@ -1,75 +1,52 @@
1
- import { fetchJsonOnce } from "../util/FetchHelper.js";
2
-
3
- const themeURLs = new Map();
1
+ import { DEFAULT_THEME } from "../generated/AssetParameters.js";
2
+ import { fireThemeRegistered } from "../theming/ThemeRegistered.js";
4
3
  const themeStyles = new Map();
4
+ const loaders = new Map();
5
5
  const registeredPackages = new Set();
6
6
  const registeredThemes = new Set();
7
-
8
- /**
9
- * Used to provide CSS Vars for a specific theme for a specific package.
10
- * The CSS Vars can be passed directly as a string (containing them), as an object with a "_" property(containing them in the "_" property), or as a URL.
11
- * This URL must point to a JSON file, containing a "_" property.
12
- *
13
- * Example usage:
14
- * 1) Pass the CSS Vars as a string directly.
15
- * registerThemeProperties("my-package", "my_theme", ":root{--var1: red;}");
16
- * 2) Pass the CSS Vars as an object directly
17
- * registerThemeProperties("my-package", "my_theme", {"_": ":root{--var1: red;}"});
18
- * 3) Pass a URL to a JSON file, containing the CSS Vars in its "_" property. Will be fetched on demand, not upon registration.
19
- * registerThemeProperties("my-package", "my_theme", "http://url/to/my/theme.json");
20
- *
21
- * @public
22
- * @param packageName - the NPM package for which CSS Vars are registered
23
- * @param themeName - the theme which the CSS Vars implement
24
- * @param style - can be one of three options: a string, an object with a "_" property or a URL to a JSON file with a "_" property
25
- */
26
- const registerThemeProperties = (packageName, themeName, style) => {
27
- if (style._) {
28
- // JSON object like ({"_": ":root"})
29
- themeStyles.set(`${packageName}_${themeName}`, style._);
30
- } else if (style.includes(":root")) {
31
- // pure string
32
- themeStyles.set(`${packageName}_${themeName}`, style);
33
- } else {
34
- // url for fetching
35
- themeURLs.set(`${packageName}_${themeName}`, style);
36
- }
37
- registeredPackages.add(packageName);
38
- registeredThemes.add(themeName);
7
+ const registerThemePropertiesLoader = (packageName, themeName, loader) => {
8
+ loaders.set(`${packageName}/${themeName}`, loader);
9
+ registeredPackages.add(packageName);
10
+ registeredThemes.add(themeName);
11
+ fireThemeRegistered(themeName);
39
12
  };
40
-
41
13
  const getThemeProperties = async (packageName, themeName) => {
42
- const style = themeStyles.get(`${packageName}_${themeName}`);
43
- if (style) {
44
- return style;
45
- }
46
-
47
- if (!registeredThemes.has(themeName)) {
48
- const regThemesStr = [...registeredThemes.values()].join(", ");
49
- console.warn(`You have requested a non-registered theme - falling back to sap_fiori_3. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */
50
- return themeStyles.get(`${packageName}_sap_fiori_3`);
51
- }
52
-
53
- const data = await fetchThemeProperties(packageName, themeName);
54
- themeStyles.set(`${packageName}_${themeName}`, data._);
55
- return data._;
14
+ const style = themeStyles.get(`${packageName}_${themeName}`);
15
+ if (style !== undefined) { // it's valid for style to be an empty string
16
+ return style;
17
+ }
18
+ if (!registeredThemes.has(themeName)) {
19
+ const regThemesStr = [...registeredThemes.values()].join(", ");
20
+ console.warn(`You have requested a non-registered theme ${themeName} - falling back to ${DEFAULT_THEME}. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */
21
+ return _getThemeProperties(packageName, DEFAULT_THEME);
22
+ }
23
+ return _getThemeProperties(packageName, themeName);
56
24
  };
57
-
58
- const fetchThemeProperties = async (packageName, themeName) => {
59
- const url = themeURLs.get(`${packageName}_${themeName}`);
60
-
61
- if (!url) {
62
- throw new Error(`You have to import the ${packageName}/dist/Assets.js module to switch to additional themes`);
63
- }
64
- return fetchJsonOnce(url);
25
+ const _getThemeProperties = async (packageName, themeName) => {
26
+ const loader = loaders.get(`${packageName}/${themeName}`);
27
+ if (!loader) {
28
+ // no themes for package
29
+ console.error(`Theme [${themeName}] not registered for package [${packageName}]`); /* eslint-disable-line */
30
+ return;
31
+ }
32
+ let data;
33
+ try {
34
+ data = await loader(themeName);
35
+ }
36
+ catch (error) {
37
+ const e = error;
38
+ console.error(packageName, e.message); /* eslint-disable-line */
39
+ return;
40
+ }
41
+ const themeProps = data._ || data; // Refactor: remove _ everywhere
42
+ themeStyles.set(`${packageName}_${themeName}`, themeProps);
43
+ return themeProps;
65
44
  };
66
-
67
45
  const getRegisteredPackages = () => {
68
- return registeredPackages;
46
+ return registeredPackages;
69
47
  };
70
-
71
- export {
72
- registerThemeProperties,
73
- getThemeProperties,
74
- getRegisteredPackages,
48
+ const isThemeRegistered = (theme) => {
49
+ return registeredThemes.has(theme);
75
50
  };
51
+ export { registerThemePropertiesLoader, getThemeProperties, getRegisteredPackages, isThemeRegistered, };
52
+ //# sourceMappingURL=Themes.js.map