@ui5/webcomponents-base 0.0.0-a3eca7ade → 0.0.0-a7032d86e

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 (665) hide show
  1. package/.eslintignore +1 -1
  2. package/CHANGELOG.md +219 -0
  3. package/README.md +28 -6
  4. package/bundle.esm.js +12 -10
  5. package/dist/AssetRegistry.d.ts +5 -0
  6. package/dist/AssetRegistry.js +2 -7
  7. package/dist/AssetRegistry.js.map +1 -0
  8. package/dist/Boot.d.ts +8 -0
  9. package/dist/Boot.js +29 -44
  10. package/dist/Boot.js.map +1 -0
  11. package/dist/CSP.d.ts +30 -0
  12. package/dist/CSP.js +16 -24
  13. package/dist/CSP.js.map +1 -0
  14. package/dist/CustomElementsRegistry.d.ts +5 -0
  15. package/dist/CustomElementsRegistry.js +66 -83
  16. package/dist/CustomElementsRegistry.js.map +1 -0
  17. package/dist/CustomElementsScope.d.ts +7 -0
  18. package/dist/CustomElementsScope.js +11 -108
  19. package/dist/CustomElementsScope.js.map +1 -0
  20. package/dist/CustomElementsScopeUtils.d.ts +55 -0
  21. package/dist/CustomElementsScopeUtils.js +90 -0
  22. package/dist/CustomElementsScopeUtils.js.map +1 -0
  23. package/dist/DOMObserver.d.ts +11 -0
  24. package/dist/DOMObserver.js +12 -54
  25. package/dist/DOMObserver.js.map +1 -0
  26. package/dist/Device.d.ts +12 -0
  27. package/dist/Device.js +54 -79
  28. package/dist/Device.js.map +1 -0
  29. package/dist/EventProvider.d.ts +25 -0
  30. package/dist/EventProvider.js +67 -82
  31. package/dist/EventProvider.js.map +1 -0
  32. package/dist/FeaturesRegistry.d.ts +3 -0
  33. package/dist/FeaturesRegistry.js +5 -10
  34. package/dist/FeaturesRegistry.js.map +1 -0
  35. package/dist/FontFace.d.ts +2 -0
  36. package/dist/FontFace.js +14 -19
  37. package/dist/FontFace.js.map +1 -0
  38. package/dist/InitialConfiguration.d.ts +22 -0
  39. package/dist/InitialConfiguration.js +112 -131
  40. package/dist/InitialConfiguration.js.map +1 -0
  41. package/dist/Keys.d.ts +57 -0
  42. package/dist/Keys.js +174 -276
  43. package/dist/Keys.js.map +1 -0
  44. package/dist/ManagedStyles.d.ts +8 -0
  45. package/dist/ManagedStyles.js +62 -68
  46. package/dist/ManagedStyles.js.map +1 -0
  47. package/dist/MarkedEvents.d.ts +9 -0
  48. package/dist/MarkedEvents.js +15 -0
  49. package/dist/MarkedEvents.js.map +1 -0
  50. package/dist/MediaRange.d.ts +37 -0
  51. package/dist/MediaRange.js +54 -65
  52. package/dist/MediaRange.js.map +1 -0
  53. package/dist/PropertiesFileFormat.d.ts +8 -0
  54. package/dist/PropertiesFileFormat.js +72 -82
  55. package/dist/PropertiesFileFormat.js.map +1 -0
  56. package/dist/Render.d.ts +47 -0
  57. package/dist/Render.js +81 -113
  58. package/dist/Render.js.map +1 -0
  59. package/dist/RenderQueue.d.ts +19 -0
  60. package/dist/RenderQueue.js +52 -62
  61. package/dist/RenderQueue.js.map +1 -0
  62. package/dist/Runtimes.d.ts +27 -0
  63. package/dist/Runtimes.js +49 -70
  64. package/dist/Runtimes.js.map +1 -0
  65. package/dist/StaticArea.d.ts +0 -0
  66. package/dist/StaticArea.js +4 -1
  67. package/dist/StaticArea.js.map +1 -0
  68. package/dist/StaticAreaItem.d.ts +36 -0
  69. package/dist/StaticAreaItem.js +85 -87
  70. package/dist/StaticAreaItem.js.map +1 -0
  71. package/dist/SystemCSSVars.d.ts +2 -0
  72. package/dist/SystemCSSVars.js +4 -5
  73. package/dist/SystemCSSVars.js.map +1 -0
  74. package/dist/Theming.d.ts +3 -0
  75. package/dist/Theming.js +1 -1
  76. package/dist/Theming.js.map +1 -0
  77. package/dist/UI5Element.d.ts +373 -0
  78. package/dist/UI5Element.js +929 -985
  79. package/dist/UI5Element.js.map +1 -0
  80. package/dist/UI5ElementMetadata.d.ts +150 -0
  81. package/dist/UI5ElementMetadata.js +278 -314
  82. package/dist/UI5ElementMetadata.js.map +1 -0
  83. package/dist/animations/AnimationQueue.d.ts +8 -0
  84. package/dist/animations/AnimationQueue.js +31 -38
  85. package/dist/animations/AnimationQueue.js.map +1 -0
  86. package/dist/animations/animate.d.ts +14 -0
  87. package/dist/animations/animate.js +46 -51
  88. package/dist/animations/animate.js.map +1 -0
  89. package/dist/animations/scroll.d.ts +5 -0
  90. package/dist/animations/scroll.js +18 -27
  91. package/dist/animations/scroll.js.map +1 -0
  92. package/dist/animations/slideDown.d.ts +5 -0
  93. package/dist/animations/slideDown.js +53 -78
  94. package/dist/animations/slideDown.js.map +1 -0
  95. package/dist/animations/slideUp.d.ts +5 -0
  96. package/dist/animations/slideUp.js +49 -70
  97. package/dist/animations/slideUp.js.map +1 -0
  98. package/dist/api.json +1 -0
  99. package/dist/asset-registries/Icons.d.ts +30 -0
  100. package/dist/asset-registries/Icons.js +86 -121
  101. package/dist/asset-registries/Icons.js.map +1 -0
  102. package/dist/asset-registries/Illustrations.d.ts +17 -0
  103. package/dist/asset-registries/Illustrations.js +41 -25
  104. package/dist/asset-registries/Illustrations.js.map +1 -0
  105. package/dist/asset-registries/LocaleData.d.ts +7 -0
  106. package/dist/asset-registries/LocaleData.js +104 -127
  107. package/dist/asset-registries/LocaleData.js.map +1 -0
  108. package/dist/asset-registries/Themes.d.ts +10 -0
  109. package/dist/asset-registries/Themes.js +38 -66
  110. package/dist/asset-registries/Themes.js.map +1 -0
  111. package/dist/asset-registries/i18n.d.ts +23 -0
  112. package/dist/asset-registries/i18n.js +55 -81
  113. package/dist/asset-registries/i18n.js.map +1 -0
  114. package/dist/assets/bundle.esm.0cfce34f.js +56 -0
  115. package/dist/assets-meta/IconCollectionsAlias.d.ts +17 -0
  116. package/dist/assets-meta/IconCollectionsAlias.js +4 -4
  117. package/dist/assets-meta/IconCollectionsAlias.js.map +1 -0
  118. package/dist/config/AnimationMode.d.ts +14 -0
  119. package/dist/config/AnimationMode.js +21 -18
  120. package/dist/config/AnimationMode.js.map +1 -0
  121. package/dist/config/CalendarType.d.ts +8 -0
  122. package/dist/config/CalendarType.js +13 -12
  123. package/dist/config/CalendarType.js.map +1 -0
  124. package/dist/config/FormatSettings.d.ts +11 -0
  125. package/dist/config/FormatSettings.js +10 -8
  126. package/dist/config/FormatSettings.js.map +1 -0
  127. package/dist/config/Icons.d.ts +30 -0
  128. package/dist/config/Icons.js +48 -0
  129. package/dist/config/Icons.js.map +1 -0
  130. package/dist/config/Language.d.ts +31 -0
  131. package/dist/config/Language.js +31 -43
  132. package/dist/config/Language.js.map +1 -0
  133. package/dist/config/NoConflict.d.ts +20 -0
  134. package/dist/config/NoConflict.js +40 -41
  135. package/dist/config/NoConflict.js.map +1 -0
  136. package/dist/config/RTL.d.ts +7 -0
  137. package/dist/config/RTL.js +23 -20
  138. package/dist/config/RTL.js.map +1 -0
  139. package/dist/config/Theme.d.ts +28 -0
  140. package/dist/config/Theme.js +38 -29
  141. package/dist/config/Theme.js.map +1 -0
  142. package/dist/config/ThemeRoots.d.ts +4 -0
  143. package/dist/config/ThemeRoots.js +28 -0
  144. package/dist/config/ThemeRoots.js.map +1 -0
  145. package/dist/css/BusyIndicator.css +80 -0
  146. package/dist/css/FontFace.css +31 -10
  147. package/dist/decorators/customElement.d.ts +8 -0
  148. package/dist/decorators/customElement.js +16 -0
  149. package/dist/decorators/customElement.js.map +1 -0
  150. package/dist/decorators/event.d.ts +10 -0
  151. package/dist/decorators/event.js +24 -0
  152. package/dist/decorators/event.js.map +1 -0
  153. package/dist/decorators/fastNavigation.d.ts +7 -0
  154. package/dist/decorators/fastNavigation.js +13 -0
  155. package/dist/decorators/fastNavigation.js.map +1 -0
  156. package/dist/decorators/languageAware.d.ts +7 -0
  157. package/dist/decorators/languageAware.js +13 -0
  158. package/dist/decorators/languageAware.js.map +1 -0
  159. package/dist/decorators/property.d.ts +9 -0
  160. package/dist/decorators/property.js +24 -0
  161. package/dist/decorators/property.js.map +1 -0
  162. package/dist/decorators/slot.d.ts +9 -0
  163. package/dist/decorators/slot.js +37 -0
  164. package/dist/decorators/slot.js.map +1 -0
  165. package/dist/decorators/themeAware.d.ts +7 -0
  166. package/dist/decorators/themeAware.js +13 -0
  167. package/dist/decorators/themeAware.js.map +1 -0
  168. package/dist/delegate/ItemNavigation.d.ts +113 -0
  169. package/dist/delegate/ItemNavigation.js +277 -312
  170. package/dist/delegate/ItemNavigation.js.map +1 -0
  171. package/dist/delegate/ResizeHandler.d.ts +24 -0
  172. package/dist/delegate/ResizeHandler.js +68 -91
  173. package/dist/delegate/ResizeHandler.js.map +1 -0
  174. package/dist/delegate/ScrollEnablement.d.ts +48 -0
  175. package/dist/delegate/ScrollEnablement.js +157 -180
  176. package/dist/delegate/ScrollEnablement.js.map +1 -0
  177. package/dist/features/F6Navigation.d.ts +16 -0
  178. package/dist/features/F6Navigation.js +106 -100
  179. package/dist/features/F6Navigation.js.map +1 -0
  180. package/dist/features/OpenUI5Element.d.ts +9 -0
  181. package/dist/features/OpenUI5Element.js +5 -0
  182. package/dist/features/OpenUI5Element.js.map +1 -0
  183. package/dist/features/OpenUI5Enablement.d.ts +11 -0
  184. package/dist/features/OpenUI5Enablement.js +96 -0
  185. package/dist/features/OpenUI5Enablement.js.map +1 -0
  186. package/dist/features/OpenUI5Support.d.ts +23 -0
  187. package/dist/features/OpenUI5Support.js +91 -119
  188. package/dist/features/OpenUI5Support.js.map +1 -0
  189. package/dist/generated/AssetParameters.js +1 -1
  190. package/dist/generated/VersionInfo.js +3 -3
  191. package/dist/generated/css/BusyIndicator.css.js +5 -0
  192. package/dist/generated/css/FontFace.css.js +1 -1
  193. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +11 -0
  194. package/dist/getSharedResource.d.ts +11 -0
  195. package/dist/getSharedResource.js +12 -16
  196. package/dist/getSharedResource.js.map +1 -0
  197. package/dist/i18nBundle.d.ts +43 -0
  198. package/dist/i18nBundle.js +56 -64
  199. package/dist/i18nBundle.js.map +1 -0
  200. package/dist/locale/Locale.d.ts +22 -0
  201. package/dist/locale/Locale.js +75 -87
  202. package/dist/locale/Locale.js.map +1 -0
  203. package/dist/locale/RTLAwareRegistry.d.ts +4 -0
  204. package/dist/locale/RTLAwareRegistry.js +6 -11
  205. package/dist/locale/RTLAwareRegistry.js.map +1 -0
  206. package/dist/locale/applyDirection.d.ts +10 -0
  207. package/dist/locale/applyDirection.js +7 -7
  208. package/dist/locale/applyDirection.js.map +1 -0
  209. package/dist/locale/directionChange.d.ts +15 -0
  210. package/dist/locale/directionChange.js +7 -15
  211. package/dist/locale/directionChange.js.map +1 -0
  212. package/dist/locale/getEffectiveDir.d.ts +2 -0
  213. package/dist/locale/getEffectiveDir.js +20 -24
  214. package/dist/locale/getEffectiveDir.js.map +1 -0
  215. package/dist/locale/getLocale.d.ts +7 -0
  216. package/dist/locale/getLocale.js +26 -29
  217. package/dist/locale/getLocale.js.map +1 -0
  218. package/dist/locale/languageChange.d.ts +5 -0
  219. package/dist/locale/languageChange.js +8 -16
  220. package/dist/locale/languageChange.js.map +1 -0
  221. package/dist/locale/nextFallbackLocale.d.ts +8 -0
  222. package/dist/locale/nextFallbackLocale.js +15 -19
  223. package/dist/locale/nextFallbackLocale.js.map +1 -0
  224. package/dist/locale/normalizeLocale.d.ts +7 -0
  225. package/dist/locale/normalizeLocale.js +34 -41
  226. package/dist/locale/normalizeLocale.js.map +1 -0
  227. package/dist/renderer/LitRenderer.d.ts +14 -0
  228. package/dist/renderer/LitRenderer.js +31 -24
  229. package/dist/renderer/LitRenderer.js.map +1 -0
  230. package/dist/renderer/executeTemplate.d.ts +13 -0
  231. package/dist/renderer/executeTemplate.js +20 -7
  232. package/dist/renderer/executeTemplate.js.map +1 -0
  233. package/dist/sap/base/Log.js +28 -29
  234. package/dist/sap/base/assert.js +5 -6
  235. package/dist/sap/base/security/URLListValidator.js +13 -2
  236. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +1 -1
  237. package/dist/theming/CustomStyle.d.ts +6 -0
  238. package/dist/theming/CustomStyle.js +29 -43
  239. package/dist/theming/CustomStyle.js.map +1 -0
  240. package/dist/theming/ThemeLoaded.d.ts +5 -0
  241. package/dist/theming/ThemeLoaded.js +8 -16
  242. package/dist/theming/ThemeLoaded.js.map +1 -0
  243. package/dist/theming/applyTheme.d.ts +2 -0
  244. package/dist/theming/applyTheme.js +60 -64
  245. package/dist/theming/applyTheme.js.map +1 -0
  246. package/dist/theming/getConstructableStyle.d.ts +9 -0
  247. package/dist/theming/getConstructableStyle.js +12 -17
  248. package/dist/theming/getConstructableStyle.js.map +1 -0
  249. package/dist/theming/getEffectiveLinksHrefs.d.ts +3 -0
  250. package/dist/theming/getEffectiveLinksHrefs.js +13 -16
  251. package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
  252. package/dist/theming/getEffectiveStyle.d.ts +3 -0
  253. package/dist/theming/getEffectiveStyle.js +25 -23
  254. package/dist/theming/getEffectiveStyle.js.map +1 -0
  255. package/dist/theming/getStylesString.d.ts +3 -0
  256. package/dist/theming/getStylesString.js +9 -13
  257. package/dist/theming/getStylesString.js.map +1 -0
  258. package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
  259. package/dist/theming/getThemeDesignerTheme.js +72 -79
  260. package/dist/theming/getThemeDesignerTheme.js.map +1 -0
  261. package/dist/theming/preloadLinks.d.ts +3 -0
  262. package/dist/theming/preloadLinks.js +13 -17
  263. package/dist/theming/preloadLinks.js.map +1 -0
  264. package/dist/thirdparty/_merge.d.ts +2 -0
  265. package/dist/thirdparty/_merge.js +7 -4
  266. package/dist/thirdparty/_merge.js.map +1 -0
  267. package/dist/thirdparty/isPlainObject.d.ts +2 -0
  268. package/dist/thirdparty/isPlainObject.js +11 -10
  269. package/dist/thirdparty/isPlainObject.js.map +1 -0
  270. package/dist/thirdparty/merge.d.ts +2 -0
  271. package/dist/thirdparty/merge.js +4 -8
  272. package/dist/thirdparty/merge.js.map +1 -0
  273. package/dist/types/AnimationMode.d.ts +32 -0
  274. package/dist/types/AnimationMode.js +33 -6
  275. package/dist/types/AnimationMode.js.map +1 -0
  276. package/dist/types/CSSColor.d.ts +16 -0
  277. package/dist/types/CSSColor.js +15 -5
  278. package/dist/types/CSSColor.js.map +1 -0
  279. package/dist/types/CalendarType.d.ts +37 -0
  280. package/dist/types/CalendarType.js +35 -18
  281. package/dist/types/CalendarType.js.map +1 -0
  282. package/dist/types/DOMReference.d.ts +17 -0
  283. package/dist/types/DOMReference.js +25 -0
  284. package/dist/types/DOMReference.js.map +1 -0
  285. package/dist/types/DataType.d.ts +25 -0
  286. package/dist/types/DataType.js +33 -26
  287. package/dist/types/DataType.js.map +1 -0
  288. package/dist/types/Float.d.ts +18 -0
  289. package/dist/types/Float.js +18 -10
  290. package/dist/types/Float.js.map +1 -0
  291. package/dist/types/Integer.d.ts +18 -0
  292. package/dist/types/Integer.js +18 -9
  293. package/dist/types/Integer.js.map +1 -0
  294. package/dist/types/InvisibleMessageMode.d.ts +25 -0
  295. package/dist/types/InvisibleMessageMode.js +20 -23
  296. package/dist/types/InvisibleMessageMode.js.map +1 -0
  297. package/dist/types/ItemNavigationBehavior.d.ts +24 -0
  298. package/dist/types/ItemNavigationBehavior.js +22 -12
  299. package/dist/types/ItemNavigationBehavior.js.map +1 -0
  300. package/dist/types/NavigationMode.d.ts +32 -0
  301. package/dist/types/NavigationMode.js +33 -6
  302. package/dist/types/NavigationMode.js.map +1 -0
  303. package/dist/types/ValueState.d.ts +42 -0
  304. package/dist/types/ValueState.js +41 -19
  305. package/dist/types/ValueState.js.map +1 -0
  306. package/dist/types.d.ts +18 -0
  307. package/dist/types.js +2 -0
  308. package/dist/types.js.map +1 -0
  309. package/dist/updateShadowRoot.d.ts +8 -0
  310. package/dist/updateShadowRoot.js +21 -17
  311. package/dist/updateShadowRoot.js.map +1 -0
  312. package/dist/util/AriaLabelHelper.d.ts +6 -0
  313. package/dist/util/AriaLabelHelper.js +37 -34
  314. package/dist/util/AriaLabelHelper.js.map +1 -0
  315. package/dist/util/Caret.d.ts +7 -0
  316. package/dist/util/Caret.js +16 -38
  317. package/dist/util/Caret.js.map +1 -0
  318. package/dist/util/ColorConversion.d.ts +30 -0
  319. package/dist/util/ColorConversion.js +315 -348
  320. package/dist/util/ColorConversion.js.map +1 -0
  321. package/dist/util/FetchHelper.d.ts +3 -0
  322. package/dist/util/FetchHelper.js +19 -25
  323. package/dist/util/FetchHelper.js.map +1 -0
  324. package/dist/util/FocusableElements.d.ts +4 -0
  325. package/dist/util/FocusableElements.js +54 -71
  326. package/dist/util/FocusableElements.js.map +1 -0
  327. package/dist/util/HTMLSanitizer.d.ts +3 -0
  328. package/dist/util/HTMLSanitizer.js +4 -5
  329. package/dist/util/HTMLSanitizer.js.map +1 -0
  330. package/dist/util/InvisibleMessage.d.ts +10 -0
  331. package/dist/util/InvisibleMessage.js +41 -45
  332. package/dist/util/InvisibleMessage.js.map +1 -0
  333. package/dist/util/PopupUtils.d.ts +7 -0
  334. package/dist/util/PopupUtils.js +58 -77
  335. package/dist/util/PopupUtils.js.map +1 -0
  336. package/dist/util/SlotsHelper.d.ts +9 -0
  337. package/dist/util/SlotsHelper.js +22 -35
  338. package/dist/util/SlotsHelper.js.map +1 -0
  339. package/dist/util/StringHelper.d.ts +3 -0
  340. package/dist/util/StringHelper.js +17 -20
  341. package/dist/util/StringHelper.js.map +1 -0
  342. package/dist/util/TabbableElements.d.ts +17 -0
  343. package/dist/util/TabbableElements.js +53 -47
  344. package/dist/util/TabbableElements.js.map +1 -0
  345. package/dist/util/arraysAreEqual.d.ts +2 -0
  346. package/dist/util/arraysAreEqual.js +10 -12
  347. package/dist/util/arraysAreEqual.js.map +1 -0
  348. package/dist/util/clamp.d.ts +9 -0
  349. package/dist/util/clamp.js +2 -2
  350. package/dist/util/clamp.js.map +1 -0
  351. package/dist/util/createLinkInHead.d.ts +7 -0
  352. package/dist/util/createLinkInHead.js +14 -12
  353. package/dist/util/createLinkInHead.js.map +1 -0
  354. package/dist/util/createStyleInHead.d.ts +8 -0
  355. package/dist/util/createStyleInHead.js +10 -10
  356. package/dist/util/createStyleInHead.js.map +1 -0
  357. package/dist/util/debounce.d.ts +2 -0
  358. package/dist/util/debounce.js +6 -8
  359. package/dist/util/debounce.js.map +1 -0
  360. package/dist/util/detectNavigatorLanguage.d.ts +2 -0
  361. package/dist/util/detectNavigatorLanguage.js +7 -10
  362. package/dist/util/detectNavigatorLanguage.js.map +1 -0
  363. package/dist/util/escapeRegex.d.ts +8 -0
  364. package/dist/util/escapeRegex.js +8 -7
  365. package/dist/util/escapeRegex.js.map +1 -0
  366. package/dist/util/formatMessage.d.ts +2 -0
  367. package/dist/util/formatMessage.js +15 -19
  368. package/dist/util/formatMessage.js.map +1 -0
  369. package/dist/util/generateHighlightedMarkup.d.ts +9 -0
  370. package/dist/util/generateHighlightedMarkup.js +26 -27
  371. package/dist/util/generateHighlightedMarkup.js.map +1 -0
  372. package/dist/util/getActiveElement.d.ts +2 -0
  373. package/dist/util/getActiveElement.js +6 -8
  374. package/dist/util/getActiveElement.js.map +1 -0
  375. package/dist/util/getClassCopy.d.ts +400 -0
  376. package/dist/util/getClassCopy.js +7 -7
  377. package/dist/util/getClassCopy.js.map +1 -0
  378. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
  379. package/dist/util/getDesigntimePropertyAsArray.js +4 -3
  380. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
  381. package/dist/util/getEffectiveContentDensity.d.ts +2 -0
  382. package/dist/util/getEffectiveContentDensity.js +2 -3
  383. package/dist/util/getEffectiveContentDensity.js.map +1 -0
  384. package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
  385. package/dist/util/getEffectiveScrollbarStyle.js +4 -0
  386. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
  387. package/dist/util/getFastNavigationGroups.d.ts +2 -0
  388. package/dist/util/getFastNavigationGroups.js +51 -0
  389. package/dist/util/getFastNavigationGroups.js.map +1 -0
  390. package/dist/util/getFileExtension.d.ts +12 -0
  391. package/dist/util/getFileExtension.js +9 -11
  392. package/dist/util/getFileExtension.js.map +1 -0
  393. package/dist/util/getNormalizedTarget.d.ts +7 -0
  394. package/dist/util/getNormalizedTarget.js +14 -0
  395. package/dist/util/getNormalizedTarget.js.map +1 -0
  396. package/dist/util/getSingletonElementInstance.d.ts +2 -0
  397. package/dist/util/getSingletonElementInstance.js +7 -10
  398. package/dist/util/getSingletonElementInstance.js.map +1 -0
  399. package/dist/util/isElementClickable.d.ts +2 -0
  400. package/dist/util/isElementClickable.js +16 -0
  401. package/dist/util/isElementClickable.js.map +1 -0
  402. package/dist/util/isElementHidden.d.ts +2 -0
  403. package/dist/util/isElementHidden.js +8 -0
  404. package/dist/util/isElementHidden.js.map +1 -0
  405. package/dist/util/isElementInView.d.ts +6 -0
  406. package/dist/util/isElementInView.js +6 -9
  407. package/dist/util/isElementInView.js.map +1 -0
  408. package/dist/util/isElementTabbable.d.ts +9 -0
  409. package/dist/util/isElementTabbable.js +30 -0
  410. package/dist/util/isElementTabbable.js.map +1 -0
  411. package/dist/util/isValidPropertyName.d.ts +8 -0
  412. package/dist/util/isValidPropertyName.js +16 -17
  413. package/dist/util/isValidPropertyName.js.map +1 -0
  414. package/dist/util/whenDOMReady.d.ts +2 -0
  415. package/dist/util/whenDOMReady.js +11 -10
  416. package/dist/util/whenDOMReady.js.map +1 -0
  417. package/dist/util/willShowContent.d.ts +2 -0
  418. package/dist/util/willShowContent.js +7 -0
  419. package/dist/util/willShowContent.js.map +1 -0
  420. package/dist/validateThemeRoot.d.ts +2 -0
  421. package/dist/validateThemeRoot.js +47 -0
  422. package/dist/validateThemeRoot.js.map +1 -0
  423. package/global.d.ts +44 -0
  424. package/lib/generate-asset-parameters/index.js +8 -4
  425. package/lib/generate-styles/index.js +17 -9
  426. package/lib/generate-version-info/index.js +18 -13
  427. package/package-scripts.js +29 -29
  428. package/package.json +7 -6
  429. package/src/{AssetRegistry.js → AssetRegistry.ts} +0 -0
  430. package/src/Boot.ts +61 -0
  431. package/src/{CSP.js → CSP.ts} +14 -7
  432. package/src/{CustomElementsRegistry.js → CustomElementsRegistry.ts} +20 -17
  433. package/src/CustomElementsScope.ts +33 -0
  434. package/src/{CustomElementsScope.js → CustomElementsScopeUtils.ts} +14 -7
  435. package/src/DOMObserver.ts +28 -0
  436. package/src/{Device.js → Device.ts} +21 -13
  437. package/src/{EventProvider.js → EventProvider.ts} +9 -7
  438. package/src/FeaturesRegistry.ts +14 -0
  439. package/src/{FontFace.js → FontFace.ts} +3 -2
  440. package/src/{InitialConfiguration.js → InitialConfiguration.ts} +53 -12
  441. package/src/Keys.ts +295 -0
  442. package/src/ManagedStyles.ts +92 -0
  443. package/src/MarkedEvents.ts +20 -0
  444. package/src/{MediaRange.js → MediaRange.ts} +54 -53
  445. package/src/{PropertiesFileFormat.js → PropertiesFileFormat.ts} +8 -8
  446. package/src/{Render.js → Render.ts} +25 -20
  447. package/src/{RenderQueue.js → RenderQueue.ts} +10 -5
  448. package/src/{Runtimes.js → Runtimes.ts} +15 -8
  449. package/src/{StaticArea.js → StaticArea.ts} +0 -0
  450. package/src/{StaticAreaItem.js → StaticAreaItem.ts} +31 -19
  451. package/src/{SystemCSSVars.js → SystemCSSVars.ts} +0 -0
  452. package/src/{Theming.js → Theming.ts} +0 -0
  453. package/src/{UI5Element.js → UI5Element.ts} +280 -148
  454. package/src/{UI5ElementMetadata.js → UI5ElementMetadata.ts} +121 -59
  455. package/src/animations/{AnimationQueue.js → AnimationQueue.ts} +8 -7
  456. package/src/animations/animate.ts +64 -0
  457. package/src/animations/scroll.ts +21 -0
  458. package/src/animations/{slideDown.js → slideDown.ts} +27 -34
  459. package/src/animations/{slideUp.js → slideUp.ts} +28 -32
  460. package/src/asset-registries/Icons.ts +162 -0
  461. package/src/asset-registries/Illustrations.ts +75 -0
  462. package/src/asset-registries/{LocaleData.js → LocaleData.ts} +42 -29
  463. package/src/asset-registries/Themes.ts +67 -0
  464. package/src/asset-registries/{i18n.js → i18n.ts} +21 -24
  465. package/src/assets-meta/{IconCollectionsAlias.js → IconCollectionsAlias.ts} +0 -0
  466. package/src/config/AnimationMode.ts +33 -0
  467. package/src/config/{CalendarType.js → CalendarType.ts} +8 -3
  468. package/src/config/FormatSettings.ts +21 -0
  469. package/src/config/Icons.ts +59 -0
  470. package/src/config/{Language.js → Language.ts} +22 -18
  471. package/src/config/NoConflict.ts +67 -0
  472. package/src/config/{RTL.js → RTL.ts} +14 -4
  473. package/src/config/Theme.ts +64 -0
  474. package/src/config/ThemeRoots.ts +41 -0
  475. package/src/css/BusyIndicator.css +80 -0
  476. package/src/css/FontFace.css +31 -10
  477. package/src/decorators/customElement.ts +17 -0
  478. package/src/decorators/event.ts +28 -0
  479. package/src/decorators/fastNavigation.ts +14 -0
  480. package/src/decorators/languageAware.ts +14 -0
  481. package/src/decorators/property.ts +30 -0
  482. package/src/decorators/slot.ts +49 -0
  483. package/src/decorators/themeAware.ts +14 -0
  484. package/src/delegate/{ItemNavigation.js → ItemNavigation.ts} +65 -23
  485. package/src/delegate/{ResizeHandler.js → ResizeHandler.ts} +25 -36
  486. package/src/delegate/ScrollEnablement.ts +221 -0
  487. package/src/features/F6Navigation.ts +141 -0
  488. package/src/features/OpenUI5Element.ts +11 -0
  489. package/src/features/OpenUI5Enablement.ts +117 -0
  490. package/src/features/OpenUI5Support.ts +148 -0
  491. package/src/{getSharedResource.js → getSharedResource.ts} +3 -3
  492. package/src/{i18nBundle.js → i18nBundle.ts} +44 -22
  493. package/src/locale/{Locale.js → Locale.ts} +15 -5
  494. package/src/locale/RTLAwareRegistry.ts +16 -0
  495. package/src/locale/{applyDirection.js → applyDirection.ts} +4 -3
  496. package/src/locale/{directionChange.js → directionChange.ts} +6 -4
  497. package/src/locale/{getEffectiveDir.js → getEffectiveDir.ts} +1 -1
  498. package/src/locale/{getLocale.js → getLocale.ts} +12 -7
  499. package/src/locale/languageChange.ts +24 -0
  500. package/src/locale/{nextFallbackLocale.js → nextFallbackLocale.ts} +1 -1
  501. package/src/locale/{normalizeLocale.js → normalizeLocale.ts} +5 -3
  502. package/src/renderer/LitRenderer.ts +60 -0
  503. package/src/renderer/executeTemplate.ts +40 -0
  504. package/src/theming/{CustomStyle.js → CustomStyle.ts} +11 -9
  505. package/src/theming/{ThemeLoaded.js → ThemeLoaded.ts} +6 -4
  506. package/src/theming/{applyTheme.js → applyTheme.ts} +22 -11
  507. package/src/theming/{getConstructableStyle.js → getConstructableStyle.ts} +5 -4
  508. package/src/theming/getEffectiveLinksHrefs.ts +26 -0
  509. package/src/theming/{getEffectiveStyle.js → getEffectiveStyle.ts} +15 -4
  510. package/src/theming/getStylesString.ts +15 -0
  511. package/src/theming/{getThemeDesignerTheme.js → getThemeDesignerTheme.ts} +22 -8
  512. package/src/theming/{preloadLinks.js → preloadLinks.ts} +3 -2
  513. package/src/thirdparty/{_merge.js → _merge.ts} +2 -2
  514. package/src/thirdparty/{isPlainObject.js → isPlainObject.ts} +1 -1
  515. package/src/thirdparty/merge.ts +5 -0
  516. package/src/types/AnimationMode.ts +33 -0
  517. package/src/types/{CSSColor.js → CSSColor.ts} +12 -1
  518. package/src/types/CalendarType.ts +38 -0
  519. package/src/types/DOMReference.ts +28 -0
  520. package/src/types/DataType.ts +51 -0
  521. package/src/types/Float.ts +25 -0
  522. package/src/types/Integer.ts +25 -0
  523. package/src/types/InvisibleMessageMode.ts +27 -0
  524. package/src/types/ItemNavigationBehavior.ts +26 -0
  525. package/src/types/NavigationMode.ts +33 -0
  526. package/src/types/ValueState.ts +47 -0
  527. package/src/types.ts +30 -0
  528. package/src/updateShadowRoot.ts +37 -0
  529. package/src/util/AriaLabelHelper.ts +63 -0
  530. package/src/util/Caret.ts +28 -0
  531. package/src/util/ColorConversion.ts +399 -0
  532. package/src/util/{FetchHelper.js → FetchHelper.ts} +7 -7
  533. package/src/util/FocusableElements.ts +82 -0
  534. package/src/util/{HTMLSanitizer.js → HTMLSanitizer.ts} +2 -0
  535. package/src/util/{InvisibleMessage.js → InvisibleMessage.ts} +15 -6
  536. package/src/util/PopupUtils.ts +112 -0
  537. package/src/util/{SlotsHelper.js → SlotsHelper.ts} +9 -13
  538. package/src/util/{StringHelper.js → StringHelper.ts} +7 -7
  539. package/src/util/TabbableElements.ts +70 -0
  540. package/src/util/{arraysAreEqual.js → arraysAreEqual.ts} +1 -1
  541. package/src/util/{clamp.js → clamp.ts} +1 -1
  542. package/src/util/{createLinkInHead.js → createLinkInHead.ts} +10 -4
  543. package/src/util/{createStyleInHead.js → createStyleInHead.ts} +4 -2
  544. package/src/util/{debounce.js → debounce.ts} +5 -4
  545. package/src/util/{detectNavigatorLanguage.js → detectNavigatorLanguage.ts} +1 -1
  546. package/src/util/escapeRegex.ts +11 -0
  547. package/src/util/{formatMessage.js → formatMessage.ts} +4 -3
  548. package/src/util/{generateHighlightedMarkup.js → generateHighlightedMarkup.ts} +7 -6
  549. package/src/util/{getActiveElement.js → getActiveElement.ts} +0 -0
  550. package/src/util/{getClassCopy.js → getClassCopy.ts} +3 -1
  551. package/src/util/{getDesigntimePropertyAsArray.js → getDesigntimePropertyAsArray.ts} +1 -1
  552. package/src/util/getEffectiveContentDensity.ts +5 -0
  553. package/src/util/getEffectiveScrollbarStyle.ts +5 -0
  554. package/src/util/getFastNavigationGroups.ts +63 -0
  555. package/src/util/{getFileExtension.js → getFileExtension.ts} +3 -3
  556. package/src/util/getNormalizedTarget.ts +16 -0
  557. package/src/util/{getSingletonElementInstance.js → getSingletonElementInstance.ts} +1 -1
  558. package/src/util/isElementClickable.ts +19 -0
  559. package/src/util/isElementHidden.ts +9 -0
  560. package/src/util/{isElementInView.js → isElementInView.ts} +1 -1
  561. package/src/util/isElementTabbable.ts +37 -0
  562. package/src/util/{isValidPropertyName.js → isValidPropertyName.ts} +1 -1
  563. package/src/util/{whenDOMReady.js → whenDOMReady.ts} +1 -1
  564. package/src/util/willShowContent.ts +7 -0
  565. package/src/validateThemeRoot.ts +58 -0
  566. package/tsconfig.json +13 -0
  567. package/config/.eslintrc.js +0 -3
  568. package/config/rollup.config.js +0 -1
  569. package/dist/RenderScheduler.js +0 -44
  570. package/dist/animations/config.js +0 -5
  571. package/dist/isLegacyBrowser.js +0 -3
  572. package/dist/resources/bundle.esm.js +0 -37
  573. package/dist/resources/bundle.esm.js.map +0 -1
  574. package/dist/test-resources/assets/Themes.js +0 -17
  575. package/dist/test-resources/elements/Child.js +0 -35
  576. package/dist/test-resources/elements/Generic.js +0 -84
  577. package/dist/test-resources/elements/GenericExt.js +0 -26
  578. package/dist/test-resources/elements/NoShadowDOM.js +0 -13
  579. package/dist/test-resources/elements/Parent.js +0 -41
  580. package/dist/test-resources/elements/WithStaticArea.js +0 -77
  581. package/dist/test-resources/pages/AllTestElements.html +0 -42
  582. package/dist/test-resources/pages/Configuration.html +0 -18
  583. package/dist/test-resources/pages/ConfigurationScript.html +0 -34
  584. package/dist/test-resources/pages/assets/messagebundle_de.properties +0 -1
  585. package/dist/test-resources/pages/assets/messagebundle_en.properties +0 -1
  586. package/dist/test-resources/pages/assets/messagebundle_es.properties +0 -1
  587. package/dist/test-resources/pages/assets/messagebundle_fr.properties +0 -1
  588. package/dist/test-resources/pages/i18n.html +0 -33
  589. package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -27
  590. package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -63
  591. package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -93
  592. package/dist/test-resources/specs/CustomTheme.spec.js +0 -27
  593. package/dist/test-resources/specs/EventProvider.spec.js +0 -63
  594. package/dist/test-resources/specs/StaticArea.spec.js +0 -78
  595. package/dist/test-resources/specs/Theming.spec.js +0 -33
  596. package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -242
  597. package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -98
  598. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -75
  599. package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -42
  600. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -14
  601. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -67
  602. package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -24
  603. package/dist/test-resources/specs/UI5ElementSlots.js +0 -36
  604. package/dist/types/CSSSize.js +0 -9
  605. package/dist/types/PopupState.js +0 -37
  606. package/dist/util/findNodeOwner.js +0 -35
  607. package/dist/util/isDescendantOf.js +0 -15
  608. package/dist/util/isNodeClickable.js +0 -19
  609. package/dist/util/isNodeHidden.js +0 -9
  610. package/dist/util/isNodeTabbable.js +0 -28
  611. package/dist/util/setToArray.js +0 -10
  612. package/hash.txt +0 -1
  613. package/src/Boot.js +0 -59
  614. package/src/DOMObserver.js +0 -65
  615. package/src/FeaturesRegistry.js +0 -14
  616. package/src/Keys.js +0 -280
  617. package/src/ManagedStyles.js +0 -83
  618. package/src/RenderScheduler.js +0 -44
  619. package/src/animations/animate.js +0 -53
  620. package/src/animations/config.js +0 -5
  621. package/src/animations/scroll.js +0 -28
  622. package/src/asset-registries/Icons.js +0 -139
  623. package/src/asset-registries/Illustrations.js +0 -30
  624. package/src/asset-registries/Themes.js +0 -78
  625. package/src/config/AnimationMode.js +0 -23
  626. package/src/config/FormatSettings.js +0 -13
  627. package/src/config/NoConflict.js +0 -51
  628. package/src/config/Theme.js +0 -42
  629. package/src/delegate/ScrollEnablement.js +0 -188
  630. package/src/features/F6Navigation.js +0 -106
  631. package/src/features/OpenUI5Support.js +0 -125
  632. package/src/isLegacyBrowser.js +0 -3
  633. package/src/locale/RTLAwareRegistry.js +0 -14
  634. package/src/locale/languageChange.js +0 -22
  635. package/src/renderer/LitRenderer.js +0 -34
  636. package/src/renderer/executeTemplate.js +0 -17
  637. package/src/theming/getEffectiveLinksHrefs.js +0 -20
  638. package/src/theming/getStylesString.js +0 -15
  639. package/src/thirdparty/merge.js +0 -10
  640. package/src/types/AnimationMode.js +0 -7
  641. package/src/types/CSSSize.js +0 -9
  642. package/src/types/CalendarType.js +0 -22
  643. package/src/types/DataType.js +0 -37
  644. package/src/types/Float.js +0 -14
  645. package/src/types/Integer.js +0 -13
  646. package/src/types/InvisibleMessageMode.js +0 -30
  647. package/src/types/ItemNavigationBehavior.js +0 -16
  648. package/src/types/NavigationMode.js +0 -7
  649. package/src/types/PopupState.js +0 -37
  650. package/src/types/ValueState.js +0 -22
  651. package/src/updateShadowRoot.js +0 -30
  652. package/src/util/AriaLabelHelper.js +0 -41
  653. package/src/util/Caret.js +0 -45
  654. package/src/util/ColorConversion.js +0 -370
  655. package/src/util/FocusableElements.js +0 -79
  656. package/src/util/PopupUtils.js +0 -93
  657. package/src/util/TabbableElements.js +0 -51
  658. package/src/util/escapeRegex.js +0 -10
  659. package/src/util/findNodeOwner.js +0 -35
  660. package/src/util/getEffectiveContentDensity.js +0 -5
  661. package/src/util/isDescendantOf.js +0 -15
  662. package/src/util/isNodeClickable.js +0 -19
  663. package/src/util/isNodeHidden.js +0 -9
  664. package/src/util/isNodeTabbable.js +0 -28
  665. package/src/util/setToArray.js +0 -10
@@ -0,0 +1,162 @@
1
+ import getSharedResource from "../getSharedResource.js";
2
+ import IconCollectionsAlias from "../assets-meta/IconCollectionsAlias.js";
3
+ import { getEffectiveDefaultIconCollection } from "../config/Icons.js";
4
+ import { I18nText } from "../i18nBundle.js";
5
+ import { TemplateFunction } from "../renderer/executeTemplate.js";
6
+
7
+ type IconLoader = (collectionName: string) => Promise<CollectionData>;
8
+
9
+ type CollectionData = {
10
+ collection: string,
11
+ packageName: string,
12
+ version?: string,
13
+ data: Record<string, {
14
+ path: string,
15
+ paths: Array<string>,
16
+ ltr: boolean,
17
+ acc: I18nText,
18
+ }>,
19
+ };
20
+
21
+ type IconData = {
22
+ collection?: string,
23
+ packageName: string,
24
+ pathData: string | Array<string>,
25
+ ltr: boolean,
26
+ accData: I18nText,
27
+ customTemplate?: TemplateFunction,
28
+ viewBox?: string,
29
+ };
30
+
31
+ const loaders = new Map<string, IconLoader>();
32
+ const registry = getSharedResource<Map<string, IconData>>("SVGIcons.registry", new Map());
33
+ const iconCollectionPromises = getSharedResource<Map<string, Promise<CollectionData>>>("SVGIcons.promises", new Map());
34
+
35
+ const ICON_NOT_FOUND = "ICON_NOT_FOUND";
36
+
37
+ const registerIconLoader = (collectionName: string, loader: IconLoader) => {
38
+ loaders.set(collectionName, loader);
39
+ };
40
+
41
+ const _loadIconCollectionOnce = async (collectionName: string) => {
42
+ if (!iconCollectionPromises.has(collectionName)) {
43
+ if (!loaders.has(collectionName)) {
44
+ throw new Error(`No loader registered for the ${collectionName} icons collection. Probably you forgot to import the "AllIcons.js" module for the respective package.`);
45
+ }
46
+
47
+ const loadIcons = loaders.get(collectionName)!;
48
+ iconCollectionPromises.set(collectionName, loadIcons(collectionName));
49
+ }
50
+
51
+ return iconCollectionPromises.get(collectionName);
52
+ };
53
+
54
+ const _fillRegistry = (bundleData: CollectionData) => {
55
+ Object.keys(bundleData.data).forEach(iconName => {
56
+ const iconData = bundleData.data[iconName];
57
+
58
+ registerIcon(iconName, {
59
+ pathData: iconData.path || iconData.paths,
60
+ ltr: iconData.ltr,
61
+ accData: iconData.acc,
62
+ collection: bundleData.collection,
63
+ packageName: bundleData.packageName,
64
+ });
65
+ });
66
+ };
67
+
68
+ // set
69
+ const registerIcon = (name: string, iconData: IconData) => { // eslint-disable-line
70
+ if (!iconData.collection) {
71
+ iconData.collection = getEffectiveDefaultIconCollection();
72
+ }
73
+
74
+ const key = `${iconData.collection}/${name}`;
75
+ registry.set(key, {
76
+ pathData: iconData.pathData,
77
+ ltr: iconData.ltr,
78
+ accData: iconData.accData,
79
+ packageName: iconData.packageName,
80
+ customTemplate: iconData.customTemplate,
81
+ viewBox: iconData.viewBox,
82
+ });
83
+ };
84
+
85
+ const _parseName = (name: string) => {
86
+ // silently support ui5-compatible URIs
87
+ if (name.startsWith("sap-icon://")) {
88
+ name = name.replace("sap-icon://", "");
89
+ }
90
+
91
+ let collection;
92
+ [name, collection] = name.split("/").reverse();
93
+ collection = collection || getEffectiveDefaultIconCollection();
94
+
95
+ // Normalize collection name.
96
+ // - resolve `SAP-icons-TNT` to `tnt`.
97
+ // - resolve `BusinessSuiteInAppSymbols` to `business-suite`.
98
+ // - resolve `horizon` to `SAP-icons-v5`,
99
+ // Note: aliases can be made as a feature, if more collections need it or more aliases are needed.
100
+ collection = _normalizeCollection(collection);
101
+ name = name.replace("icon-", "");
102
+
103
+ const registryKey = `${collection}/${name}`;
104
+ return { name, collection, registryKey };
105
+ };
106
+
107
+ const getIconDataSync = (name: string) => {
108
+ const { registryKey } = _parseName(name);
109
+ return registry.get(registryKey);
110
+ };
111
+
112
+ const getIconData = async (name: string) => {
113
+ const { collection, registryKey } = _parseName(name);
114
+
115
+ let iconData: string | CollectionData = ICON_NOT_FOUND;
116
+ try {
117
+ iconData = (await _loadIconCollectionOnce(collection))!;
118
+ } catch (error: unknown) {
119
+ const e = error as Error;
120
+ console.error(e.message); /* eslint-disable-line */
121
+ }
122
+
123
+ if (iconData === ICON_NOT_FOUND) {
124
+ return iconData;
125
+ }
126
+
127
+ if (!registry.has(registryKey)) {
128
+ // not filled by another await. many getters will await on the same loader, but fill only once
129
+ _fillRegistry(iconData as CollectionData);
130
+ }
131
+ return registry.get(registryKey);
132
+ };
133
+
134
+ // test page usage only
135
+ const _getRegisteredNames = async () => {
136
+ // fetch one icon of each collection to trigger the bundle load
137
+ await getIconData("edit");
138
+ await getIconData("tnt/arrow");
139
+ await getIconData("business-suite/3d");
140
+ return Array.from(registry.keys());
141
+ };
142
+
143
+ const _normalizeCollection = (collectionName: string) => {
144
+ if (IconCollectionsAlias[collectionName as keyof typeof IconCollectionsAlias]) {
145
+ return IconCollectionsAlias[collectionName as keyof typeof IconCollectionsAlias];
146
+ }
147
+
148
+ return collectionName;
149
+ };
150
+
151
+ export {
152
+ registerIconLoader,
153
+ getIconData,
154
+ getIconDataSync,
155
+ registerIcon,
156
+ _getRegisteredNames,
157
+ };
158
+
159
+ export type {
160
+ IconData,
161
+ CollectionData,
162
+ };
@@ -0,0 +1,75 @@
1
+ import getSharedResource from "../getSharedResource.js";
2
+ import { I18nText } from "../i18nBundle.js";
3
+
4
+ type IllustrationLoader = (illustrationName: string) => Promise<IllustrationData>;
5
+
6
+ type IllustrationProperties = {
7
+ dialogSvg: string,
8
+ sceneSvg: string,
9
+ spotSvg: string,
10
+ title: I18nText,
11
+ subtitle: I18nText,
12
+ };
13
+
14
+ type IllustrationData = IllustrationProperties & {
15
+ set: string,
16
+ };
17
+
18
+ const loaders = new Map<string, IllustrationLoader>();
19
+ const registry = getSharedResource<Map<string, IllustrationProperties>>("SVGIllustration.registry", new Map());
20
+ const illustrationPromises = getSharedResource<Map<string, Promise<IllustrationData>>>("SVGIllustration.promises", new Map());
21
+
22
+ const registerIllustration = (name: string, data: IllustrationData) => {
23
+ registry.set(`${data.set}/${name}`, {
24
+ dialogSvg: data.dialogSvg,
25
+ sceneSvg: data.sceneSvg,
26
+ spotSvg: data.spotSvg,
27
+ title: data.title,
28
+ subtitle: data.subtitle,
29
+ });
30
+ };
31
+
32
+ const registerIllustrationLoader = (illustrationName: string, loader: IllustrationLoader) => {
33
+ loaders.set(illustrationName, loader);
34
+ };
35
+
36
+ const _loadIllustrationOnce = async (illustrationName: string) => {
37
+ if (!illustrationPromises.has(illustrationName)) {
38
+ if (!loaders.has(illustrationName)) {
39
+ const illustrationPath = illustrationName.startsWith("Tnt") ? `tnt/${illustrationName.replace(/^Tnt/, "")}` : illustrationName;
40
+ 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.`);
41
+ }
42
+
43
+ const loadIllustrations = loaders.get(illustrationName)!;
44
+ illustrationPromises.set(illustrationName, loadIllustrations(illustrationName));
45
+ }
46
+ return illustrationPromises.get(illustrationName);
47
+ };
48
+
49
+ const getIllustrationDataSync = (illustrationName: string) => {
50
+ let set = "fiori";
51
+
52
+ if (illustrationName.startsWith("Tnt")) {
53
+ set = "tnt";
54
+ illustrationName = illustrationName.replace(/^Tnt/, "");
55
+ }
56
+ return registry.get(`${set}/${illustrationName}`);
57
+ };
58
+
59
+ const getIllustrationData = async (illustrationName: string) => {
60
+ let set = "fiori";
61
+
62
+ await _loadIllustrationOnce(illustrationName);
63
+ if (illustrationName.startsWith("Tnt")) {
64
+ set = "tnt";
65
+ illustrationName = illustrationName.replace(/^Tnt/, "");
66
+ }
67
+ return registry.get(`${set}/${illustrationName}`);
68
+ };
69
+
70
+ export {
71
+ getIllustrationDataSync,
72
+ registerIllustration,
73
+ registerIllustrationLoader,
74
+ getIllustrationData,
75
+ };
@@ -2,39 +2,36 @@ import { attachLanguageChange } from "../locale/languageChange.js";
2
2
  import getLocale from "../locale/getLocale.js";
3
3
  import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from "../generated/AssetParameters.js";
4
4
  import { getFeature } from "../FeaturesRegistry.js";
5
+ import type OpenUI5Support from "../features/OpenUI5Support";
5
6
 
6
- const localeDataMap = new Map();
7
- const loaders = new Map();
8
- const cldrPromises = new Map();
9
- const reportedErrors = new Set();
7
+ type LocaleDataLoader = (locale: string) => Promise<CLDRData>;
8
+ type CLDRData = Record<string, object | boolean | string>;
9
+
10
+ const localeDataMap = new Map<string, CLDRData>();
11
+ const loaders = new Map<string, LocaleDataLoader>();
12
+ const cldrPromises = new Map<string, Promise<CLDRData>>();
13
+ const reportedErrors = new Set<string>();
10
14
  let warningShown = false;
11
15
 
12
16
  const M_ISO639_OLD_TO_NEW = {
13
17
  "iw": "he",
14
18
  "ji": "yi",
15
19
  "in": "id",
16
- "sh": "sr",
17
20
  };
18
21
 
19
- const DEV_MODE = false;
20
-
21
- const _showAssetsWarningOnce = localeId => {
22
+ const _showAssetsWarningOnce = (localeId: string) => {
22
23
  if (warningShown) {
23
24
  return;
24
25
  }
25
26
 
26
- if (!DEV_MODE) {
27
- console.warn(`[LocaleData] Supported locale "${localeId}" not configured, import the "Assets.js" module from the webcomponents package you are using.`); /* eslint-disable-line */
28
- } else {
29
- console.warn(`[LocaleData] Note: in dev mode, CLDR assets might be disabled for performance reasons. Try running "ENABLE_CLDR=1 yarn start" to test CLDR assets.`); /* eslint-disable-line */
30
- }
27
+ console.warn(`[LocaleData] Supported locale "${localeId}" not configured, import the "Assets.js" module from the webcomponents package you are using.`); /* eslint-disable-line */
31
28
 
32
29
  warningShown = true;
33
30
  };
34
31
 
35
- const calcLocale = (language, region, script) => {
32
+ const calcLocale = (language: string, region: string, script: string) => {
36
33
  // normalize language and handle special cases
37
- language = (language && M_ISO639_OLD_TO_NEW[language]) || language;
34
+ language = (language && M_ISO639_OLD_TO_NEW[language as keyof typeof M_ISO639_OLD_TO_NEW]) || language;
38
35
  // Special case 1: in an SAP context, the inclusive language code "no" always means Norwegian Bokmal ("nb")
39
36
  if (language === "no") {
40
37
  language = "nb";
@@ -48,6 +45,12 @@ const calcLocale = (language, region, script) => {
48
45
  }
49
46
  }
50
47
 
48
+ // Special case 3: for Serbian, there are cyrillic and latin scripts, "sh" and "sr-latn" map to "latin", "sr" maps to cyrillic.
49
+ if (language === "sh" || (language === "sr" && script === "Latn")) {
50
+ language = "sr";
51
+ region = "Latn";
52
+ }
53
+
51
54
  // try language + region
52
55
  let localeId = `${language}_${region}`;
53
56
  if (SUPPORTED_LOCALES.includes(localeId)) {
@@ -79,12 +82,12 @@ const calcLocale = (language, region, script) => {
79
82
  };
80
83
 
81
84
  // internal set data
82
- const setLocaleData = (localeId, content) => {
85
+ const setLocaleData = (localeId: string, content: CLDRData) => {
83
86
  localeDataMap.set(localeId, content);
84
87
  };
85
88
 
86
89
  // external getSync
87
- const getLocaleData = localeId => {
90
+ const getLocaleData = (localeId: string) => {
88
91
  // if there is no loader, the default fallback was fetched and a warning was given - use default locale instead
89
92
  if (!loaders.has(localeId)) {
90
93
  localeId = DEFAULT_LOCALE;
@@ -99,10 +102,14 @@ const getLocaleData = localeId => {
99
102
  };
100
103
 
101
104
  // load bundle over the network once
102
- const _loadCldrOnce = localeId => {
103
- const loadCldr = loaders.get(localeId);
104
-
105
+ const _loadCldrOnce = (localeId: string) => {
105
106
  if (!cldrPromises.get(localeId)) {
107
+ const loadCldr = loaders.get(localeId);
108
+
109
+ if (!loadCldr) {
110
+ throw new Error(`CLDR data for locale ${localeId} is not loaded!`);
111
+ }
112
+
106
113
  cldrPromises.set(localeId, loadCldr(localeId));
107
114
  }
108
115
 
@@ -110,13 +117,13 @@ const _loadCldrOnce = localeId => {
110
117
  };
111
118
 
112
119
  // external getAsync
113
- const fetchCldr = async (language, region, script) => {
120
+ const fetchCldr = async (language: string, region: string, script: string) => {
114
121
  const localeId = calcLocale(language, region, script);
115
122
 
116
123
  // reuse OpenUI5 CLDR if present
117
- const OpenUI5Support = getFeature("OpenUI5Support");
118
- if (OpenUI5Support) {
119
- const cldrContent = OpenUI5Support.getLocaleDataObject();
124
+ const openUI5Support = getFeature<typeof OpenUI5Support>("OpenUI5Support");
125
+ if (openUI5Support) {
126
+ const cldrContent = openUI5Support.getLocaleDataObject();
120
127
  if (cldrContent) {
121
128
  // only if openui5 actually returned valid content
122
129
  setLocaleData(localeId, cldrContent);
@@ -127,8 +134,9 @@ const fetchCldr = async (language, region, script) => {
127
134
  // fetch it
128
135
  try {
129
136
  const cldrContent = await _loadCldrOnce(localeId);
130
- setLocaleData(localeId, cldrContent);
131
- } catch (e) {
137
+ setLocaleData(localeId, cldrContent as CLDRData);
138
+ } catch (error: unknown) {
139
+ const e = error as Error;
132
140
  if (!reportedErrors.has(e.message)) {
133
141
  reportedErrors.add(e.message);
134
142
  console.error(e.message); /* eslint-disable-line */
@@ -136,13 +144,14 @@ const fetchCldr = async (language, region, script) => {
136
144
  }
137
145
  };
138
146
 
139
- const registerLocaleDataLoader = (localeId, loader) => {
147
+ const registerLocaleDataLoader = (localeId: string, loader: LocaleDataLoader) => {
140
148
  loaders.set(localeId, loader);
141
149
  };
142
150
 
143
151
  // register default loader for "en" from ui5 CDN (dev workflow without assets)
144
- registerLocaleDataLoader("en", async runtimeLocaleId => {
145
- return (await fetch(`https://ui5.sap.com/1.60.2/resources/sap/ui/core/cldr/en.json`)).json();
152
+ registerLocaleDataLoader("en", async () => {
153
+ const cldrContent = await fetch(`https://sdk.openui5.org/1.103.0/resources/sap/ui/core/cldr/en.json`);
154
+ return cldrContent.json() as Promise<CLDRData>;
146
155
  });
147
156
 
148
157
  // When the language changes dynamically (the user calls setLanguage),
@@ -157,3 +166,7 @@ export {
157
166
  fetchCldr,
158
167
  getLocaleData,
159
168
  };
169
+
170
+ export type {
171
+ CLDRData,
172
+ };
@@ -0,0 +1,67 @@
1
+ import { DEFAULT_THEME } from "../generated/AssetParameters.js";
2
+ import { StyleData, StyleDataCSP } from "../types.js";
3
+
4
+ type ThemeData = {_: StyleDataCSP } | StyleDataCSP | string;
5
+ type ThemeLoader = (themeName: string) => Promise<ThemeData>;
6
+
7
+ const themeStyles = new Map<string, StyleData>();
8
+ const loaders = new Map<string, ThemeLoader>();
9
+ const registeredPackages = new Set<string>();
10
+ const registeredThemes = new Set<string>();
11
+
12
+ const registerThemePropertiesLoader = (packageName: string, themeName: string, loader: ThemeLoader) => {
13
+ loaders.set(`${packageName}/${themeName}`, loader);
14
+ registeredPackages.add(packageName);
15
+ registeredThemes.add(themeName);
16
+ };
17
+
18
+ const getThemeProperties = async (packageName: string, themeName: string) => {
19
+ const style = themeStyles.get(`${packageName}_${themeName}`);
20
+ if (style !== undefined) { // it's valid for style to be an empty string
21
+ return style;
22
+ }
23
+
24
+ if (!registeredThemes.has(themeName)) {
25
+ const regThemesStr = [...registeredThemes.values()].join(", ");
26
+ console.warn(`You have requested a non-registered theme ${themeName} - falling back to ${DEFAULT_THEME}. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */
27
+ return _getThemeProperties(packageName, DEFAULT_THEME);
28
+ }
29
+
30
+ return _getThemeProperties(packageName, themeName);
31
+ };
32
+
33
+ const _getThemeProperties = async (packageName: string, themeName: string) => {
34
+ const loader = loaders.get(`${packageName}/${themeName}`);
35
+ if (!loader) {
36
+ // no themes for package
37
+ console.error(`Theme [${themeName}] not registered for package [${packageName}]`); /* eslint-disable-line */
38
+ return;
39
+ }
40
+ let data;
41
+ try {
42
+ data = await loader(themeName);
43
+ } catch (error: unknown) {
44
+ const e = error as Error;
45
+ console.error(packageName, e.message); /* eslint-disable-line */
46
+ return;
47
+ }
48
+ const themeProps = (data as {_: StyleDataCSP})._ || data; // Refactor: remove _ everywhere
49
+
50
+ themeStyles.set(`${packageName}_${themeName}`, themeProps);
51
+ return themeProps;
52
+ };
53
+
54
+ const getRegisteredPackages = () => {
55
+ return registeredPackages;
56
+ };
57
+
58
+ const isThemeRegistered = (theme: string) => {
59
+ return registeredThemes.has(theme);
60
+ };
61
+
62
+ export {
63
+ registerThemePropertiesLoader,
64
+ getThemeProperties,
65
+ getRegisteredPackages,
66
+ isThemeRegistered,
67
+ };
@@ -5,60 +5,57 @@ import nextFallbackLocale from "../locale/nextFallbackLocale.js";
5
5
  import { DEFAULT_LANGUAGE } from "../generated/AssetParameters.js";
6
6
  import { getFetchDefaultLanguage } from "../config/Language.js";
7
7
 
8
+ type I18nLoader = (localeId: string) => Promise<I18nData>;
9
+ type I18nData = Record<string, string>;
10
+
8
11
  // contains package names for which the warning has been shown
9
12
  const warningShown = new Set();
10
13
  const reportedErrors = new Set();
11
14
 
12
- const bundleData = new Map();
13
- const bundlePromises = new Map();
14
- const loaders = new Map();
15
+ const bundleData = new Map<string, I18nData | null>();
16
+ const bundlePromises = new Map<string, Promise<I18nData>>();
17
+ const loaders = new Map<string, I18nLoader>();
15
18
 
16
19
  /**
20
+ * Registers i18n loader function for given package and locale.
17
21
  *
22
+ * @public
18
23
  * @param {string} packageName for which package this loader can fetch data
24
+ * @param {string} localeId locale that this loader can handle
19
25
  * @param {function} loader async function that will be passed a localeId and should return a JSON object
20
- * @param {Array} localeIds Array of locale IDs that this loader can handle
21
26
  */
22
- const registerI18nLoader = (packageName, localeId, loader) => {
27
+ const registerI18nLoader = (packageName: string, localeId: string, loader: I18nLoader) => {
23
28
  // register loader by key
24
29
  const bundleKey = `${packageName}/${localeId}`;
25
30
  loaders.set(bundleKey, loader);
26
31
  };
27
32
 
28
- const _setI18nBundleData = (packageName, data) => {
33
+ const _setI18nBundleData = (packageName: string, data: I18nData | null) => {
29
34
  bundleData.set(packageName, data);
30
35
  };
31
36
 
32
- const getI18nBundleData = packageName => {
37
+ const getI18nBundleData = (packageName: string) => {
33
38
  return bundleData.get(packageName);
34
39
  };
35
40
 
36
- /**
37
- * @public
38
- * @deprecated
39
- */
40
- const registerI18nBundle = (_packageName, _bundle) => {
41
- throw new Error("This method has been removed. Use `registerI18nLoader` instead.");
42
- };
43
-
44
- const _hasLoader = (packageName, localeId) => {
41
+ const _hasLoader = (packageName: string, localeId: string) => {
45
42
  const bundleKey = `${packageName}/${localeId}`;
46
43
  return loaders.has(bundleKey);
47
44
  };
48
45
 
49
46
  // load bundle over the network once
50
- const _loadMessageBundleOnce = (packageName, localeId) => {
47
+ const _loadMessageBundleOnce = (packageName: string, localeId: string) => {
51
48
  const bundleKey = `${packageName}/${localeId}`;
52
49
  const loadMessageBundle = loaders.get(bundleKey);
53
50
 
54
- if (!bundlePromises.get(bundleKey)) {
51
+ if (loadMessageBundle && !bundlePromises.get(bundleKey)) {
55
52
  bundlePromises.set(bundleKey, loadMessageBundle(localeId));
56
53
  }
57
54
 
58
- return bundlePromises.get(bundleKey);
55
+ return bundlePromises.get(bundleKey)!; // Investigate if i18n loader exists and this won't return undefined.
59
56
  };
60
57
 
61
- const _showAssetsWarningOnce = packageName => {
58
+ const _showAssetsWarningOnce = (packageName: string) => {
62
59
  if (!warningShown.has(packageName)) {
63
60
  console.warn(`[${packageName}]: Message bundle assets are not configured. Falling back to English texts.`, /* eslint-disable-line */
64
61
  ` Add \`import "${packageName}/dist/Assets.js"\` in your bundle and make sure your build tool supports dynamic imports and JSON imports. See section "Assets" in the documentation for more information.`); /* eslint-disable-line */
@@ -75,7 +72,7 @@ const _showAssetsWarningOnce = packageName => {
75
72
  * @param {packageName} packageName the NPM package name
76
73
  * @public
77
74
  */
78
- const fetchI18nBundle = async packageName => {
75
+ const fetchI18nBundle = async (packageName: string) => {
79
76
  const language = getLocale().getLanguage();
80
77
  const region = getLocale().getRegion();
81
78
  let localeId = normalizeLocale(language + (region ? `-${region}` : ``));
@@ -99,7 +96,8 @@ const fetchI18nBundle = async packageName => {
99
96
  try {
100
97
  const data = await _loadMessageBundleOnce(packageName, localeId);
101
98
  _setI18nBundleData(packageName, data);
102
- } catch (e) {
99
+ } catch (error: unknown) {
100
+ const e = error as Error;
103
101
  if (!reportedErrors.has(e.message)) {
104
102
  reportedErrors.add(e.message);
105
103
  console.error(e.message); /* eslint-disable-line */
@@ -108,7 +106,7 @@ const fetchI18nBundle = async packageName => {
108
106
  };
109
107
 
110
108
  // When the language changes dynamically (the user calls setLanguage), re-fetch all previously fetched bundles
111
- attachLanguageChange(() => {
109
+ attachLanguageChange((lang: string /* eslint-disable-line */) => {
112
110
  const allPackages = [...bundleData.keys()];
113
111
  return Promise.all(allPackages.map(fetchI18nBundle));
114
112
  });
@@ -116,6 +114,5 @@ attachLanguageChange(() => {
116
114
  export {
117
115
  registerI18nLoader,
118
116
  fetchI18nBundle,
119
- registerI18nBundle,
120
117
  getI18nBundleData,
121
118
  };
@@ -0,0 +1,33 @@
1
+ import { getAnimationMode as getConfiguredAnimationMode } from "../InitialConfiguration.js";
2
+ import AnimationMode from "../types/AnimationMode.js";
3
+
4
+ let curAnimationMode: AnimationMode;
5
+
6
+ /**
7
+ * Returns the animation mode - "full", "basic", "minimal" or "none".
8
+ * @public
9
+ * @returns { AnimationMode }
10
+ */
11
+ const getAnimationMode = (): AnimationMode => {
12
+ if (curAnimationMode === undefined) {
13
+ curAnimationMode = getConfiguredAnimationMode();
14
+ }
15
+
16
+ return curAnimationMode;
17
+ };
18
+
19
+ /**
20
+ * Sets the animation mode - "full", "basic", "minimal" or "none".
21
+ * @public
22
+ * @param { AnimationMode } animationMode
23
+ */
24
+ const setAnimationMode = (animationMode: AnimationMode) => {
25
+ if (Object.values(AnimationMode).includes(animationMode)) {
26
+ curAnimationMode = animationMode;
27
+ }
28
+ };
29
+
30
+ export {
31
+ getAnimationMode,
32
+ setAnimationMode,
33
+ };
@@ -1,14 +1,19 @@
1
1
  import CalendarType from "../types/CalendarType.js";
2
2
  import { getCalendarType as getConfiguredCalendarType } from "../InitialConfiguration.js";
3
3
 
4
- let calendarType;
4
+ let calendarType: CalendarType | undefined;
5
5
 
6
- const getCalendarType = () => {
6
+ /**
7
+ * Returns the configured or default calendar type.
8
+ * @public
9
+ * @returns { CalendarType } the effective calendar type
10
+ */
11
+ const getCalendarType = (): CalendarType => {
7
12
  if (calendarType === undefined) {
8
13
  calendarType = getConfiguredCalendarType();
9
14
  }
10
15
 
11
- if (CalendarType.isValid(calendarType)) {
16
+ if (calendarType && calendarType in CalendarType) {
12
17
  return calendarType;
13
18
  }
14
19
 
@@ -0,0 +1,21 @@
1
+ import { getFormatSettings } from "../InitialConfiguration.js";
2
+
3
+ type FormatSettings = { firstDayOfWeek?: number };
4
+
5
+ let formatSettings: FormatSettings;
6
+
7
+ /**
8
+ * Returns the first day of the week from the configured format settings or based on the current locale.
9
+ * @public
10
+ * @returns {Number} 0 (Sunday) through 6 (Saturday)
11
+ */
12
+ const getFirstDayOfWeek = (): number | undefined => {
13
+ if (formatSettings === undefined) {
14
+ formatSettings = getFormatSettings();
15
+ }
16
+
17
+ return formatSettings.firstDayOfWeek;
18
+ };
19
+
20
+ export { getFirstDayOfWeek }; // eslint-disable-line
21
+ export type { FormatSettings };