@ui5/webcomponents-base 0.0.0-20acae2ee → 0.0.0-2514bd09f

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 (644) hide show
  1. package/.eslintignore +8 -4
  2. package/.npsrc.json +3 -0
  3. package/CHANGELOG.md +1033 -0
  4. package/README.md +58 -7
  5. package/bundle.esm.js +26 -13
  6. package/config/wdio.conf.cjs +400 -0
  7. package/dist/.tsbuildinfo +1 -0
  8. package/dist/AssetRegistry.d.ts +5 -0
  9. package/dist/AssetRegistry.js +3 -8
  10. package/dist/AssetRegistry.js.map +1 -0
  11. package/dist/Boot.d.ts +9 -0
  12. package/dist/Boot.js +56 -28
  13. package/dist/Boot.js.map +1 -0
  14. package/dist/CSP.d.ts +30 -0
  15. package/dist/CSP.js +51 -0
  16. package/dist/CSP.js.map +1 -0
  17. package/dist/CustomElementsRegistry.d.ts +5 -0
  18. package/dist/CustomElementsRegistry.js +69 -30
  19. package/dist/CustomElementsRegistry.js.map +1 -0
  20. package/dist/CustomElementsScope.d.ts +7 -0
  21. package/dist/CustomElementsScope.js +11 -108
  22. package/dist/CustomElementsScope.js.map +1 -0
  23. package/dist/CustomElementsScopeUtils.d.ts +62 -0
  24. package/dist/CustomElementsScopeUtils.js +102 -0
  25. package/dist/CustomElementsScopeUtils.js.map +1 -0
  26. package/dist/DOMObserver.d.ts +11 -0
  27. package/dist/DOMObserver.js +12 -54
  28. package/dist/DOMObserver.js.map +1 -0
  29. package/dist/Device.d.ts +13 -0
  30. package/dist/Device.js +159 -84
  31. package/dist/Device.js.map +1 -0
  32. package/dist/EventProvider.d.ts +25 -0
  33. package/dist/EventProvider.js +67 -88
  34. package/dist/EventProvider.js.map +1 -0
  35. package/dist/FeaturesRegistry.d.ts +3 -0
  36. package/dist/FeaturesRegistry.js +5 -7
  37. package/dist/FeaturesRegistry.js.map +1 -0
  38. package/dist/FontFace.d.ts +2 -0
  39. package/dist/FontFace.js +17 -110
  40. package/dist/FontFace.js.map +1 -0
  41. package/dist/IgnoreCustomElements.d.ts +27 -0
  42. package/dist/IgnoreCustomElements.js +39 -0
  43. package/dist/IgnoreCustomElements.js.map +1 -0
  44. package/dist/InitialConfiguration.d.ts +28 -0
  45. package/dist/InitialConfiguration.js +126 -114
  46. package/dist/InitialConfiguration.js.map +1 -0
  47. package/dist/Keys.d.ts +61 -0
  48. package/dist/Keys.js +175 -227
  49. package/dist/Keys.js.map +1 -0
  50. package/dist/ManagedStyles.d.ts +9 -0
  51. package/dist/ManagedStyles.js +153 -0
  52. package/dist/ManagedStyles.js.map +1 -0
  53. package/dist/MarkedEvents.d.ts +9 -0
  54. package/dist/MarkedEvents.js +15 -0
  55. package/dist/MarkedEvents.js.map +1 -0
  56. package/dist/MediaRange.d.ts +37 -0
  57. package/dist/MediaRange.js +54 -65
  58. package/dist/MediaRange.js.map +1 -0
  59. package/dist/PropertiesFileFormat.d.ts +8 -0
  60. package/dist/PropertiesFileFormat.js +72 -82
  61. package/dist/PropertiesFileFormat.js.map +1 -0
  62. package/dist/Render.d.ts +47 -0
  63. package/dist/Render.js +82 -112
  64. package/dist/Render.js.map +1 -0
  65. package/dist/RenderQueue.d.ts +19 -0
  66. package/dist/RenderQueue.js +52 -62
  67. package/dist/RenderQueue.js.map +1 -0
  68. package/dist/Runtimes.d.ts +27 -0
  69. package/dist/Runtimes.js +86 -0
  70. package/dist/Runtimes.js.map +1 -0
  71. package/dist/StaticArea.d.ts +3 -0
  72. package/dist/StaticArea.js +5 -1
  73. package/dist/StaticArea.js.map +1 -0
  74. package/dist/StaticAreaItem.d.ts +37 -0
  75. package/dist/StaticAreaItem.js +89 -83
  76. package/dist/StaticAreaItem.js.map +1 -0
  77. package/dist/SystemCSSVars.d.ts +2 -0
  78. package/dist/SystemCSSVars.js +6 -28
  79. package/dist/SystemCSSVars.js.map +1 -0
  80. package/{src/Theming.js → dist/Theming.d.ts} +0 -1
  81. package/dist/Theming.js +1 -1
  82. package/dist/Theming.js.map +1 -0
  83. package/dist/UI5Element.d.ts +394 -0
  84. package/dist/UI5Element.js +947 -995
  85. package/dist/UI5Element.js.map +1 -0
  86. package/dist/UI5ElementMetadata.d.ts +151 -0
  87. package/dist/UI5ElementMetadata.js +278 -298
  88. package/dist/UI5ElementMetadata.js.map +1 -0
  89. package/dist/animations/AnimationQueue.d.ts +8 -0
  90. package/dist/animations/AnimationQueue.js +31 -38
  91. package/dist/animations/AnimationQueue.js.map +1 -0
  92. package/dist/animations/animate.d.ts +14 -0
  93. package/dist/animations/animate.js +46 -51
  94. package/dist/animations/animate.js.map +1 -0
  95. package/dist/animations/scroll.d.ts +5 -0
  96. package/dist/animations/scroll.js +18 -27
  97. package/dist/animations/scroll.js.map +1 -0
  98. package/dist/animations/slideDown.d.ts +5 -0
  99. package/dist/animations/slideDown.js +53 -78
  100. package/dist/animations/slideDown.js.map +1 -0
  101. package/dist/animations/slideUp.d.ts +5 -0
  102. package/dist/animations/slideUp.js +49 -70
  103. package/dist/animations/slideUp.js.map +1 -0
  104. package/dist/asset-registries/Icons.d.ts +39 -0
  105. package/dist/asset-registries/Icons.js +120 -102
  106. package/dist/asset-registries/Icons.js.map +1 -0
  107. package/dist/asset-registries/Illustrations.d.ts +18 -0
  108. package/dist/asset-registries/Illustrations.js +84 -0
  109. package/dist/asset-registries/Illustrations.js.map +1 -0
  110. package/dist/asset-registries/LocaleData.d.ts +7 -0
  111. package/dist/asset-registries/LocaleData.js +104 -118
  112. package/dist/asset-registries/LocaleData.js.map +1 -0
  113. package/dist/asset-registries/Themes.d.ts +12 -0
  114. package/dist/asset-registries/Themes.js +57 -67
  115. package/dist/asset-registries/Themes.js.map +1 -0
  116. package/dist/asset-registries/i18n.d.ts +23 -0
  117. package/dist/asset-registries/i18n.js +62 -81
  118. package/dist/asset-registries/i18n.js.map +1 -0
  119. package/dist/asset-registries/util/IconCollectionsAlias.d.ts +30 -0
  120. package/dist/asset-registries/util/IconCollectionsAlias.js +37 -0
  121. package/dist/asset-registries/util/IconCollectionsAlias.js.map +1 -0
  122. package/dist/asset-registries/util/IconCollectionsByTheme.d.ts +20 -0
  123. package/dist/asset-registries/util/IconCollectionsByTheme.js +42 -0
  124. package/dist/asset-registries/util/IconCollectionsByTheme.js.map +1 -0
  125. package/dist/asset-registries/util/getIconCollectionByTheme.d.ts +13 -0
  126. package/dist/asset-registries/util/getIconCollectionByTheme.js +29 -0
  127. package/dist/asset-registries/util/getIconCollectionByTheme.js.map +1 -0
  128. package/dist/config/AnimationMode.d.ts +14 -0
  129. package/dist/config/AnimationMode.js +21 -18
  130. package/dist/config/AnimationMode.js.map +1 -0
  131. package/dist/config/CalendarType.d.ts +15 -0
  132. package/dist/config/CalendarType.js +31 -14
  133. package/dist/config/CalendarType.js.map +1 -0
  134. package/dist/config/FormatSettings.d.ts +15 -0
  135. package/dist/config/FormatSettings.js +15 -9
  136. package/dist/config/FormatSettings.js.map +1 -0
  137. package/dist/config/Icons.d.ts +40 -0
  138. package/dist/config/Icons.js +44 -0
  139. package/dist/config/Icons.js.map +1 -0
  140. package/dist/config/Language.d.ts +40 -0
  141. package/dist/config/Language.js +43 -43
  142. package/dist/config/Language.js.map +1 -0
  143. package/dist/config/NoConflict.d.ts +20 -0
  144. package/dist/config/NoConflict.js +41 -41
  145. package/dist/config/NoConflict.js.map +1 -0
  146. package/dist/config/RTL.d.ts +7 -0
  147. package/dist/config/RTL.js +26 -20
  148. package/dist/config/RTL.js.map +1 -0
  149. package/dist/config/Theme.d.ts +38 -0
  150. package/dist/config/Theme.js +64 -22
  151. package/dist/config/Theme.js.map +1 -0
  152. package/dist/config/ThemeRoot.d.ts +29 -0
  153. package/dist/config/ThemeRoot.js +59 -0
  154. package/dist/config/ThemeRoot.js.map +1 -0
  155. package/dist/config/Timezone.d.ts +17 -0
  156. package/dist/config/Timezone.js +30 -0
  157. package/dist/config/Timezone.js.map +1 -0
  158. package/dist/connectToComponent.d.ts +9 -0
  159. package/dist/connectToComponent.js +59 -0
  160. package/dist/connectToComponent.js.map +1 -0
  161. package/dist/css/BusyIndicator.css +80 -0
  162. package/dist/css/FontFace.css +96 -0
  163. package/dist/css/OverrideFontFace.css +32 -0
  164. package/dist/css/SystemCSSVars.css +17 -0
  165. package/dist/decorators/customElement.d.ts +23 -0
  166. package/dist/decorators/customElement.js +37 -0
  167. package/dist/decorators/customElement.js.map +1 -0
  168. package/dist/decorators/event.d.ts +10 -0
  169. package/dist/decorators/event.js +24 -0
  170. package/dist/decorators/event.js.map +1 -0
  171. package/dist/decorators/property.d.ts +9 -0
  172. package/dist/decorators/property.js +24 -0
  173. package/dist/decorators/property.js.map +1 -0
  174. package/dist/decorators/slot.d.ts +9 -0
  175. package/dist/decorators/slot.js +37 -0
  176. package/dist/decorators/slot.js.map +1 -0
  177. package/dist/delegate/ItemNavigation.d.ts +114 -0
  178. package/dist/delegate/ItemNavigation.js +276 -246
  179. package/dist/delegate/ItemNavigation.js.map +1 -0
  180. package/dist/delegate/ResizeHandler.d.ts +25 -0
  181. package/dist/delegate/ResizeHandler.js +72 -91
  182. package/dist/delegate/ResizeHandler.js.map +1 -0
  183. package/dist/delegate/ScrollEnablement.d.ts +49 -0
  184. package/dist/delegate/ScrollEnablement.js +157 -174
  185. package/dist/delegate/ScrollEnablement.js.map +1 -0
  186. package/dist/features/F6Navigation.d.ts +19 -0
  187. package/dist/features/F6Navigation.js +151 -0
  188. package/dist/features/F6Navigation.js.map +1 -0
  189. package/dist/features/LegacyDateFormats.d.ts +18 -0
  190. package/dist/features/LegacyDateFormats.js +20 -0
  191. package/dist/features/LegacyDateFormats.js.map +1 -0
  192. package/dist/features/OpenUI5Element.d.ts +9 -0
  193. package/dist/features/OpenUI5Element.js +5 -0
  194. package/dist/features/OpenUI5Element.js.map +1 -0
  195. package/dist/features/OpenUI5Enablement.d.ts +11 -0
  196. package/dist/features/OpenUI5Enablement.js +96 -0
  197. package/dist/features/OpenUI5Enablement.js.map +1 -0
  198. package/dist/features/OpenUI5Support.d.ts +36 -0
  199. package/dist/features/OpenUI5Support.js +151 -121
  200. package/dist/features/OpenUI5Support.js.map +1 -0
  201. package/dist/generated/AssetParameters.d.ts +6 -0
  202. package/dist/generated/AssetParameters.js +4 -9
  203. package/dist/generated/AssetParameters.js.map +1 -0
  204. package/dist/generated/VersionInfo.d.ts +10 -0
  205. package/dist/generated/VersionInfo.js +11 -0
  206. package/dist/generated/VersionInfo.js.map +1 -0
  207. package/dist/generated/css/BusyIndicator.css.d.ts +3 -0
  208. package/dist/generated/css/BusyIndicator.css.js +7 -0
  209. package/dist/generated/css/BusyIndicator.css.js.map +1 -0
  210. package/dist/generated/css/FontFace.css.d.ts +3 -0
  211. package/dist/generated/css/FontFace.css.js +7 -0
  212. package/dist/generated/css/FontFace.css.js.map +1 -0
  213. package/dist/generated/css/OverrideFontFace.css.d.ts +3 -0
  214. package/dist/generated/css/OverrideFontFace.css.js +7 -0
  215. package/dist/generated/css/OverrideFontFace.css.js.map +1 -0
  216. package/dist/generated/css/SystemCSSVars.css.d.ts +3 -0
  217. package/dist/generated/css/SystemCSSVars.css.js +7 -0
  218. package/dist/generated/css/SystemCSSVars.css.js.map +1 -0
  219. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.d.ts +4 -0
  220. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +9 -0
  221. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js.map +1 -0
  222. package/dist/getSharedResource.d.ts +11 -0
  223. package/dist/getSharedResource.js +28 -18
  224. package/dist/getSharedResource.js.map +1 -0
  225. package/dist/global.d.ts +40 -0
  226. package/dist/i18nBundle.d.ts +43 -0
  227. package/dist/i18nBundle.js +68 -44
  228. package/dist/i18nBundle.js.map +1 -0
  229. package/dist/locale/Locale.d.ts +22 -0
  230. package/dist/locale/Locale.js +75 -87
  231. package/dist/locale/Locale.js.map +1 -0
  232. package/dist/locale/RTLAwareRegistry.d.ts +4 -0
  233. package/dist/locale/RTLAwareRegistry.js +6 -11
  234. package/dist/locale/RTLAwareRegistry.js.map +1 -0
  235. package/dist/locale/applyDirection.d.ts +10 -0
  236. package/dist/locale/applyDirection.js +7 -7
  237. package/dist/locale/applyDirection.js.map +1 -0
  238. package/dist/locale/directionChange.d.ts +15 -0
  239. package/dist/locale/directionChange.js +7 -15
  240. package/dist/locale/directionChange.js.map +1 -0
  241. package/dist/locale/getEffectiveDir.d.ts +2 -0
  242. package/dist/locale/getEffectiveDir.js +20 -24
  243. package/dist/locale/getEffectiveDir.js.map +1 -0
  244. package/dist/locale/getLocale.d.ts +7 -0
  245. package/dist/locale/getLocale.js +26 -29
  246. package/dist/locale/getLocale.js.map +1 -0
  247. package/dist/locale/languageChange.d.ts +5 -0
  248. package/dist/locale/languageChange.js +8 -16
  249. package/dist/locale/languageChange.js.map +1 -0
  250. package/dist/locale/nextFallbackLocale.d.ts +8 -0
  251. package/dist/locale/nextFallbackLocale.js +15 -19
  252. package/dist/locale/nextFallbackLocale.js.map +1 -0
  253. package/dist/locale/normalizeLocale.d.ts +7 -0
  254. package/dist/locale/normalizeLocale.js +34 -41
  255. package/dist/locale/normalizeLocale.js.map +1 -0
  256. package/dist/renderer/LitRenderer.d.ts +14 -0
  257. package/dist/renderer/LitRenderer.js +34 -24
  258. package/dist/renderer/LitRenderer.js.map +1 -0
  259. package/dist/renderer/directives/style-map.js +72 -0
  260. package/dist/renderer/executeTemplate.d.ts +13 -0
  261. package/dist/renderer/executeTemplate.js +20 -7
  262. package/dist/renderer/executeTemplate.js.map +1 -0
  263. package/dist/sap/base/Log.js +240 -0
  264. package/dist/sap/base/assert.js +7 -0
  265. package/dist/sap/base/security/URLListValidator.js +159 -0
  266. package/dist/sap/base/security/encodeCSS.js +14 -0
  267. package/dist/sap/base/security/encodeXML.js +23 -0
  268. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  269. package/dist/sap/base/strings/toHex.js +8 -0
  270. package/dist/sap/base/util/now.js +7 -0
  271. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3600 -0
  272. package/dist/theming/CustomStyle.d.ts +6 -0
  273. package/dist/theming/CustomStyle.js +39 -31
  274. package/dist/theming/CustomStyle.js.map +1 -0
  275. package/dist/theming/ThemeLoaded.d.ts +5 -0
  276. package/dist/theming/ThemeLoaded.js +8 -16
  277. package/dist/theming/ThemeLoaded.js.map +1 -0
  278. package/dist/theming/ThemeRegistered.d.ts +4 -0
  279. package/dist/theming/ThemeRegistered.js +11 -0
  280. package/dist/theming/ThemeRegistered.js.map +1 -0
  281. package/dist/theming/applyTheme.d.ts +2 -0
  282. package/dist/theming/applyTheme.js +63 -65
  283. package/dist/theming/applyTheme.js.map +1 -0
  284. package/dist/theming/getConstructableStyle.d.ts +9 -0
  285. package/dist/theming/getConstructableStyle.js +12 -17
  286. package/dist/theming/getConstructableStyle.js.map +1 -0
  287. package/dist/theming/getEffectiveLinksHrefs.d.ts +3 -0
  288. package/dist/theming/getEffectiveLinksHrefs.js +17 -0
  289. package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
  290. package/dist/theming/getEffectiveStyle.d.ts +3 -0
  291. package/dist/theming/getEffectiveStyle.js +25 -23
  292. package/dist/theming/getEffectiveStyle.js.map +1 -0
  293. package/dist/theming/getStylesString.d.ts +3 -0
  294. package/dist/theming/getStylesString.js +9 -11
  295. package/dist/theming/getStylesString.js.map +1 -0
  296. package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
  297. package/dist/theming/getThemeDesignerTheme.js +73 -60
  298. package/dist/theming/getThemeDesignerTheme.js.map +1 -0
  299. package/dist/theming/preloadLinks.d.ts +3 -0
  300. package/dist/theming/preloadLinks.js +19 -0
  301. package/dist/theming/preloadLinks.js.map +1 -0
  302. package/dist/thirdparty/_merge.d.ts +2 -0
  303. package/dist/thirdparty/_merge.js +7 -4
  304. package/dist/thirdparty/_merge.js.map +1 -0
  305. package/dist/thirdparty/isPlainObject.d.ts +2 -0
  306. package/dist/thirdparty/isPlainObject.js +11 -10
  307. package/dist/thirdparty/isPlainObject.js.map +1 -0
  308. package/dist/thirdparty/merge.d.ts +2 -0
  309. package/dist/thirdparty/merge.js +4 -8
  310. package/dist/thirdparty/merge.js.map +1 -0
  311. package/dist/types/AnimationMode.d.ts +32 -0
  312. package/dist/types/AnimationMode.js +33 -6
  313. package/dist/types/AnimationMode.js.map +1 -0
  314. package/dist/types/CSSColor.d.ts +15 -0
  315. package/dist/types/CSSColor.js +14 -5
  316. package/dist/types/CSSColor.js.map +1 -0
  317. package/dist/types/CSSSize.d.ts +15 -0
  318. package/dist/types/CSSSize.js +14 -5
  319. package/dist/types/CSSSize.js.map +1 -0
  320. package/dist/types/CalendarType.d.ts +37 -0
  321. package/dist/types/CalendarType.js +35 -18
  322. package/dist/types/CalendarType.js.map +1 -0
  323. package/dist/types/DOMReference.d.ts +17 -0
  324. package/dist/types/DOMReference.js +25 -0
  325. package/dist/types/DOMReference.js.map +1 -0
  326. package/dist/types/DataType.d.ts +25 -0
  327. package/dist/types/DataType.js +33 -14
  328. package/dist/types/DataType.js.map +1 -0
  329. package/dist/types/Float.d.ts +17 -0
  330. package/dist/types/Float.js +17 -6
  331. package/dist/types/Float.js.map +1 -0
  332. package/dist/types/Integer.d.ts +17 -0
  333. package/dist/types/Integer.js +17 -5
  334. package/dist/types/Integer.js.map +1 -0
  335. package/dist/types/InvisibleMessageMode.d.ts +26 -0
  336. package/dist/types/InvisibleMessageMode.js +26 -0
  337. package/dist/types/InvisibleMessageMode.js.map +1 -0
  338. package/dist/types/ItemNavigationBehavior.d.ts +24 -0
  339. package/dist/types/ItemNavigationBehavior.js +22 -12
  340. package/dist/types/ItemNavigationBehavior.js.map +1 -0
  341. package/dist/types/NavigationMode.d.ts +32 -0
  342. package/dist/types/NavigationMode.js +33 -6
  343. package/dist/types/NavigationMode.js.map +1 -0
  344. package/dist/types/ValueState.d.ts +42 -0
  345. package/dist/types/ValueState.js +41 -19
  346. package/dist/types/ValueState.js.map +1 -0
  347. package/dist/types.d.ts +18 -0
  348. package/dist/types.js +2 -0
  349. package/dist/types.js.map +1 -0
  350. package/dist/updateShadowRoot.d.ts +8 -0
  351. package/dist/updateShadowRoot.js +32 -16
  352. package/dist/updateShadowRoot.js.map +1 -0
  353. package/dist/util/AriaLabelHelper.d.ts +15 -0
  354. package/dist/util/AriaLabelHelper.js +166 -36
  355. package/dist/util/AriaLabelHelper.js.map +1 -0
  356. package/dist/util/Caret.d.ts +7 -0
  357. package/dist/util/Caret.js +16 -38
  358. package/dist/util/Caret.js.map +1 -0
  359. package/dist/util/ColorConversion.d.ts +30 -0
  360. package/dist/util/ColorConversion.js +320 -348
  361. package/dist/util/ColorConversion.js.map +1 -0
  362. package/dist/util/FetchHelper.d.ts +3 -0
  363. package/dist/util/FetchHelper.js +19 -25
  364. package/dist/util/FetchHelper.js.map +1 -0
  365. package/dist/util/FocusableElements.d.ts +4 -0
  366. package/dist/util/FocusableElements.js +67 -68
  367. package/dist/util/FocusableElements.js.map +1 -0
  368. package/dist/util/HTMLSanitizer.d.ts +3 -0
  369. package/dist/util/HTMLSanitizer.js +6 -0
  370. package/dist/util/HTMLSanitizer.js.map +1 -0
  371. package/dist/util/InvisibleMessage.d.ts +10 -0
  372. package/dist/util/InvisibleMessage.js +56 -0
  373. package/dist/util/InvisibleMessage.js.map +1 -0
  374. package/dist/util/PopupUtils.d.ts +7 -0
  375. package/dist/util/PopupUtils.js +58 -77
  376. package/dist/util/PopupUtils.js.map +1 -0
  377. package/dist/util/SlotsHelper.d.ts +9 -0
  378. package/dist/util/SlotsHelper.js +22 -35
  379. package/dist/util/SlotsHelper.js.map +1 -0
  380. package/dist/util/StringHelper.d.ts +3 -0
  381. package/dist/util/StringHelper.js +17 -20
  382. package/dist/util/StringHelper.js.map +1 -0
  383. package/dist/util/TabbableElements.d.ts +17 -0
  384. package/dist/util/TabbableElements.js +53 -43
  385. package/dist/util/TabbableElements.js.map +1 -0
  386. package/dist/util/arraysAreEqual.d.ts +2 -0
  387. package/dist/util/arraysAreEqual.js +10 -12
  388. package/dist/util/arraysAreEqual.js.map +1 -0
  389. package/{src/util/clamp.js → dist/util/clamp.d.ts} +1 -4
  390. package/dist/util/clamp.js +2 -2
  391. package/dist/util/clamp.js.map +1 -0
  392. package/dist/util/createLinkInHead.d.ts +7 -0
  393. package/dist/util/createLinkInHead.js +21 -0
  394. package/dist/util/createLinkInHead.js.map +1 -0
  395. package/dist/util/createStyleInHead.d.ts +8 -0
  396. package/dist/util/createStyleInHead.js +10 -10
  397. package/dist/util/createStyleInHead.js.map +1 -0
  398. package/dist/util/debounce.d.ts +2 -0
  399. package/dist/util/debounce.js +6 -8
  400. package/dist/util/debounce.js.map +1 -0
  401. package/dist/util/detectNavigatorLanguage.d.ts +2 -0
  402. package/dist/util/detectNavigatorLanguage.js +7 -10
  403. package/dist/util/detectNavigatorLanguage.js.map +1 -0
  404. package/dist/util/escapeRegex.d.ts +8 -0
  405. package/dist/util/escapeRegex.js +11 -0
  406. package/dist/util/escapeRegex.js.map +1 -0
  407. package/dist/util/formatMessage.d.ts +2 -0
  408. package/dist/util/formatMessage.js +15 -19
  409. package/dist/util/formatMessage.js.map +1 -0
  410. package/dist/util/generateHighlightedMarkup.d.ts +9 -0
  411. package/dist/util/generateHighlightedMarkup.js +41 -0
  412. package/dist/util/generateHighlightedMarkup.js.map +1 -0
  413. package/dist/util/getActiveElement.d.ts +2 -0
  414. package/dist/util/getActiveElement.js +6 -8
  415. package/dist/util/getActiveElement.js.map +1 -0
  416. package/dist/util/getClassCopy.d.ts +416 -0
  417. package/dist/util/getClassCopy.js +8 -3
  418. package/dist/util/getClassCopy.js.map +1 -0
  419. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
  420. package/dist/util/getDesigntimePropertyAsArray.js +4 -3
  421. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
  422. package/dist/util/getEffectiveContentDensity.d.ts +2 -0
  423. package/dist/util/getEffectiveContentDensity.js +2 -3
  424. package/dist/util/getEffectiveContentDensity.js.map +1 -0
  425. package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
  426. package/dist/util/getEffectiveScrollbarStyle.js +4 -0
  427. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
  428. package/dist/util/getFastNavigationGroups.d.ts +2 -0
  429. package/dist/util/getFastNavigationGroups.js +51 -0
  430. package/dist/util/getFastNavigationGroups.js.map +1 -0
  431. package/{src/util/getFileExtension.js → dist/util/getFileExtension.d.ts} +3 -12
  432. package/dist/util/getFileExtension.js +9 -11
  433. package/dist/util/getFileExtension.js.map +1 -0
  434. package/dist/util/getNormalizedTarget.d.ts +7 -0
  435. package/dist/util/getNormalizedTarget.js +14 -0
  436. package/dist/util/getNormalizedTarget.js.map +1 -0
  437. package/dist/util/getParentElement.d.ts +2 -0
  438. package/dist/util/getParentElement.js +5 -0
  439. package/dist/util/getParentElement.js.map +1 -0
  440. package/dist/util/getSingletonElementInstance.d.ts +11 -0
  441. package/dist/util/getSingletonElementInstance.js +17 -11
  442. package/dist/util/getSingletonElementInstance.js.map +1 -0
  443. package/dist/util/isElementClickable.d.ts +2 -0
  444. package/dist/util/isElementClickable.js +16 -0
  445. package/dist/util/isElementClickable.js.map +1 -0
  446. package/dist/util/isElementContainingBlock.d.ts +2 -0
  447. package/dist/util/isElementContainingBlock.js +11 -0
  448. package/dist/util/isElementContainingBlock.js.map +1 -0
  449. package/dist/util/isElementHidden.d.ts +2 -0
  450. package/dist/util/isElementHidden.js +8 -0
  451. package/dist/util/isElementHidden.js.map +1 -0
  452. package/dist/util/isElementInView.d.ts +6 -0
  453. package/dist/util/isElementInView.js +6 -9
  454. package/dist/util/isElementInView.js.map +1 -0
  455. package/dist/util/isElementTabbable.d.ts +9 -0
  456. package/dist/util/isElementTabbable.js +30 -0
  457. package/dist/util/isElementTabbable.js.map +1 -0
  458. package/dist/util/isValidPropertyName.d.ts +8 -0
  459. package/dist/util/isValidPropertyName.js +16 -17
  460. package/dist/util/isValidPropertyName.js.map +1 -0
  461. package/dist/util/whenDOMReady.d.ts +2 -0
  462. package/dist/util/whenDOMReady.js +11 -10
  463. package/dist/util/whenDOMReady.js.map +1 -0
  464. package/dist/util/willShowContent.d.ts +2 -0
  465. package/dist/util/willShowContent.js +7 -0
  466. package/dist/util/willShowContent.js.map +1 -0
  467. package/dist/validateThemeRoot.d.ts +2 -0
  468. package/dist/validateThemeRoot.js +48 -0
  469. package/dist/validateThemeRoot.js.map +1 -0
  470. package/index.js +228 -2
  471. package/lib/generate-asset-parameters/index.js +11 -6
  472. package/lib/generate-styles/index.js +31 -0
  473. package/lib/generate-version-info/index.js +32 -0
  474. package/package-scripts.cjs +70 -0
  475. package/package.json +23 -10
  476. package/src/css/BusyIndicator.css +80 -0
  477. package/src/css/FontFace.css +96 -0
  478. package/src/css/OverrideFontFace.css +32 -0
  479. package/src/css/SystemCSSVars.css +17 -0
  480. package/src/renderer/directives/style-map.js +72 -0
  481. package/tsconfig.json +17 -0
  482. package/used-modules.txt +10 -0
  483. package/config/rollup.config.js +0 -1
  484. package/config/wdio.conf.js +0 -1
  485. package/dist/RenderScheduler.js +0 -44
  486. package/dist/animations/config.js +0 -5
  487. package/dist/config/AssetsPath.js +0 -17
  488. package/dist/isLegacyBrowser.js +0 -3
  489. package/dist/renderer/ifDefined.js +0 -21
  490. package/dist/renderer/scopeHTML.js +0 -32
  491. package/dist/resources/bundle.esm.js +0 -121
  492. package/dist/resources/bundle.esm.js.map +0 -1
  493. package/dist/test-resources/assets/Themes.js +0 -17
  494. package/dist/test-resources/elements/Child.js +0 -35
  495. package/dist/test-resources/elements/Generic.js +0 -84
  496. package/dist/test-resources/elements/GenericExt.js +0 -26
  497. package/dist/test-resources/elements/NoShadowDOM.js +0 -13
  498. package/dist/test-resources/elements/Parent.js +0 -41
  499. package/dist/test-resources/elements/WithStaticArea.js +0 -76
  500. package/dist/test-resources/pages/AllTestElements.html +0 -39
  501. package/dist/test-resources/pages/Configuration.html +0 -18
  502. package/dist/test-resources/pages/ConfigurationScript.html +0 -34
  503. package/dist/test-resources/pages/assets/messagebundle_de.properties +0 -1
  504. package/dist/test-resources/pages/assets/messagebundle_en.properties +0 -1
  505. package/dist/test-resources/pages/assets/messagebundle_es.properties +0 -1
  506. package/dist/test-resources/pages/assets/messagebundle_fr.properties +0 -1
  507. package/dist/test-resources/pages/i18n.html +0 -35
  508. package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -27
  509. package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -63
  510. package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -47
  511. package/dist/test-resources/specs/CustomTheme.spec.js +0 -27
  512. package/dist/test-resources/specs/StaticArea.spec.js +0 -36
  513. package/dist/test-resources/specs/Theming.spec.js +0 -33
  514. package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -242
  515. package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -98
  516. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -75
  517. package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -42
  518. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -14
  519. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -67
  520. package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -24
  521. package/dist/test-resources/specs/UI5ElementSlots.js +0 -36
  522. package/dist/theming/createThemePropertiesStyleTag.js +0 -20
  523. package/dist/types/PopupState.js +0 -37
  524. package/dist/util/encodeCSS.js +0 -24
  525. package/dist/util/findNodeOwner.js +0 -35
  526. package/dist/util/isDescendantOf.js +0 -15
  527. package/dist/util/isNodeClickable.js +0 -19
  528. package/dist/util/isNodeHidden.js +0 -9
  529. package/dist/util/isNodeTabbable.js +0 -28
  530. package/dist/util/setToArray.js +0 -10
  531. package/hash.txt +0 -1
  532. package/package-scripts.js +0 -43
  533. package/src/AssetRegistry.js +0 -11
  534. package/src/Boot.js +0 -43
  535. package/src/CustomElementsRegistry.js +0 -39
  536. package/src/CustomElementsScope.js +0 -108
  537. package/src/DOMObserver.js +0 -65
  538. package/src/Device.js +0 -100
  539. package/src/EventProvider.js +0 -91
  540. package/src/FeaturesRegistry.js +0 -11
  541. package/src/FontFace.js +0 -118
  542. package/src/InitialConfiguration.js +0 -149
  543. package/src/Keys.js +0 -233
  544. package/src/MediaRange.js +0 -109
  545. package/src/PropertiesFileFormat.js +0 -95
  546. package/src/Render.js +0 -173
  547. package/src/RenderQueue.js +0 -66
  548. package/src/RenderScheduler.js +0 -44
  549. package/src/StaticArea.js +0 -3
  550. package/src/StaticAreaItem.js +0 -96
  551. package/src/SystemCSSVars.js +0 -31
  552. package/src/UI5Element.js +0 -1032
  553. package/src/UI5ElementMetadata.js +0 -311
  554. package/src/animations/AnimationQueue.js +0 -42
  555. package/src/animations/animate.js +0 -53
  556. package/src/animations/config.js +0 -5
  557. package/src/animations/scroll.js +0 -28
  558. package/src/animations/slideDown.js +0 -79
  559. package/src/animations/slideUp.js +0 -71
  560. package/src/asset-registries/Icons.js +0 -118
  561. package/src/asset-registries/LocaleData.js +0 -150
  562. package/src/asset-registries/Themes.js +0 -78
  563. package/src/asset-registries/i18n.js +0 -121
  564. package/src/config/AnimationMode.js +0 -23
  565. package/src/config/AssetsPath.js +0 -17
  566. package/src/config/CalendarType.js +0 -18
  567. package/src/config/FormatSettings.js +0 -13
  568. package/src/config/Language.js +0 -68
  569. package/src/config/NoConflict.js +0 -51
  570. package/src/config/RTL.js +0 -31
  571. package/src/config/Theme.js +0 -28
  572. package/src/delegate/ItemNavigation.js +0 -285
  573. package/src/delegate/ResizeHandler.js +0 -106
  574. package/src/delegate/ScrollEnablement.js +0 -182
  575. package/src/features/OpenUI5Support.js +0 -125
  576. package/src/getSharedResource.js +0 -30
  577. package/src/i18nBundle.js +0 -55
  578. package/src/isLegacyBrowser.js +0 -3
  579. package/src/locale/Locale.js +0 -91
  580. package/src/locale/RTLAwareRegistry.js +0 -14
  581. package/src/locale/applyDirection.js +0 -17
  582. package/src/locale/directionChange.js +0 -32
  583. package/src/locale/getEffectiveDir.js +0 -28
  584. package/src/locale/getLocale.js +0 -41
  585. package/src/locale/languageChange.js +0 -22
  586. package/src/locale/nextFallbackLocale.js +0 -28
  587. package/src/locale/normalizeLocale.js +0 -54
  588. package/src/renderer/LitRenderer.js +0 -31
  589. package/src/renderer/executeTemplate.js +0 -17
  590. package/src/renderer/ifDefined.js +0 -21
  591. package/src/renderer/scopeHTML.js +0 -32
  592. package/src/theming/CustomStyle.js +0 -40
  593. package/src/theming/ThemeLoaded.js +0 -22
  594. package/src/theming/applyTheme.js +0 -78
  595. package/src/theming/createThemePropertiesStyleTag.js +0 -20
  596. package/src/theming/getConstructableStyle.js +0 -30
  597. package/src/theming/getEffectiveStyle.js +0 -30
  598. package/src/theming/getStylesString.js +0 -13
  599. package/src/theming/getThemeDesignerTheme.js +0 -67
  600. package/src/thirdparty/_merge.js +0 -32
  601. package/src/thirdparty/isPlainObject.js +0 -18
  602. package/src/thirdparty/merge.js +0 -10
  603. package/src/types/AnimationMode.js +0 -7
  604. package/src/types/CSSColor.js +0 -9
  605. package/src/types/CSSSize.js +0 -9
  606. package/src/types/CalendarType.js +0 -22
  607. package/src/types/DataType.js +0 -25
  608. package/src/types/Float.js +0 -10
  609. package/src/types/Integer.js +0 -9
  610. package/src/types/ItemNavigationBehavior.js +0 -16
  611. package/src/types/NavigationMode.js +0 -7
  612. package/src/types/PopupState.js +0 -37
  613. package/src/types/ValueState.js +0 -22
  614. package/src/updateShadowRoot.js +0 -26
  615. package/src/util/AriaLabelHelper.js +0 -41
  616. package/src/util/Caret.js +0 -45
  617. package/src/util/ColorConversion.js +0 -370
  618. package/src/util/FetchHelper.js +0 -31
  619. package/src/util/FocusableElements.js +0 -73
  620. package/src/util/PopupUtils.js +0 -93
  621. package/src/util/SlotsHelper.js +0 -43
  622. package/src/util/StringHelper.js +0 -26
  623. package/src/util/TabbableElements.js +0 -47
  624. package/src/util/arraysAreEqual.js +0 -15
  625. package/src/util/createStyleInHead.js +0 -18
  626. package/src/util/debounce.js +0 -17
  627. package/src/util/detectNavigatorLanguage.js +0 -13
  628. package/src/util/encodeCSS.js +0 -24
  629. package/src/util/findNodeOwner.js +0 -35
  630. package/src/util/formatMessage.js +0 -23
  631. package/src/util/getActiveElement.js +0 -11
  632. package/src/util/getClassCopy.js +0 -5
  633. package/src/util/getDesigntimePropertyAsArray.js +0 -4
  634. package/src/util/getEffectiveContentDensity.js +0 -5
  635. package/src/util/getSingletonElementInstance.js +0 -13
  636. package/src/util/isDescendantOf.js +0 -15
  637. package/src/util/isElementInView.js +0 -15
  638. package/src/util/isNodeClickable.js +0 -19
  639. package/src/util/isNodeHidden.js +0 -9
  640. package/src/util/isNodeTabbable.js +0 -28
  641. package/src/util/isValidPropertyName.js +0 -29
  642. package/src/util/setToArray.js +0 -10
  643. package/src/util/whenDOMReady.js +0 -13
  644. /package/{config/.eslintrc.js → .eslintrc.cjs} +0 -0
@@ -1,118 +1,136 @@
1
1
  import getSharedResource from "../getSharedResource.js";
2
-
2
+ import { getIconCollectionByAlias } from "./util/IconCollectionsAlias.js";
3
+ import { registerIconCollectionForTheme } from "./util/IconCollectionsByTheme.js";
4
+ import getEffectiveIconCollection from "./util/getIconCollectionByTheme.js";
5
+ import { getI18nBundle } from "../i18nBundle.js";
6
+ const DEFAULT_THEME_FAMILY = "legacy"; // includes sap_belize_* and sap_fiori_*
3
7
  const loaders = new Map();
4
8
  const registry = getSharedResource("SVGIcons.registry", new Map());
5
9
  const iconCollectionPromises = getSharedResource("SVGIcons.promises", new Map());
6
-
7
10
  const ICON_NOT_FOUND = "ICON_NOT_FOUND";
8
- const DEFAULT_COLLECTION = "SAP-icons";
9
-
10
- /**
11
- * @deprecated
12
- */
13
- const registerIconBundle = async (collectionName, bundleData) => {
14
- throw new Error("This method has been removed. Use `registerIconLoader` instead.");
15
- };
16
-
17
- const registerIconLoader = async (collectionName, loader) => {
18
- loaders.set(collectionName, loader);
11
+ const registerIconLoader = (collectionName, loader) => {
12
+ loaders.set(collectionName, loader);
19
13
  };
20
-
21
- const _loadIconCollectionOnce = async collectionName => {
22
- if (!iconCollectionPromises.has(collectionName)) {
23
- const loadIcons = loaders.get(collectionName);
24
- iconCollectionPromises.set(collectionName, loadIcons(collectionName));
25
- }
26
-
27
- return iconCollectionPromises.get(collectionName);
14
+ const _loadIconCollectionOnce = async (collectionName) => {
15
+ if (!iconCollectionPromises.has(collectionName)) {
16
+ if (!loaders.has(collectionName)) {
17
+ throw new Error(`No loader registered for the ${collectionName} icons collection. Probably you forgot to import the "AllIcons.js" module for the respective package.`);
18
+ }
19
+ const loadIcons = loaders.get(collectionName);
20
+ iconCollectionPromises.set(collectionName, loadIcons(collectionName));
21
+ }
22
+ return iconCollectionPromises.get(collectionName);
28
23
  };
29
-
30
- const _fillRegistry = bundleData => {
31
- Object.keys(bundleData.data).forEach(iconName => {
32
- const iconData = bundleData.data[iconName];
33
-
34
- registerIcon(iconName, {
35
- pathData: iconData.path,
36
- ltr: iconData.ltr,
37
- accData: iconData.acc,
38
- collection: bundleData.collection,
39
- packageName: bundleData.packageName,
40
- });
41
- });
24
+ const _fillRegistry = (bundleData) => {
25
+ Object.keys(bundleData.data).forEach(iconName => {
26
+ const iconData = bundleData.data[iconName];
27
+ registerIcon(iconName, {
28
+ pathData: (iconData.path || iconData.paths),
29
+ ltr: iconData.ltr,
30
+ accData: iconData.acc,
31
+ collection: bundleData.collection,
32
+ packageName: bundleData.packageName,
33
+ });
34
+ });
42
35
  };
43
-
44
36
  // set
45
- const registerIcon = (name, { pathData, ltr, accData, collection, packageName } = {}) => { // eslint-disable-line
46
- if (!collection) {
47
- collection = DEFAULT_COLLECTION;
48
- }
49
-
50
- const key = `${collection}/${name}`;
51
- registry.set(key, {
52
- pathData,
53
- ltr,
54
- accData,
55
- packageName,
56
- });
37
+ const registerIcon = (name, iconData) => {
38
+ const key = `${iconData.collection}/${name}`;
39
+ registry.set(key, {
40
+ pathData: iconData.pathData,
41
+ ltr: iconData.ltr,
42
+ accData: iconData.accData,
43
+ packageName: iconData.packageName,
44
+ customTemplate: iconData.customTemplate,
45
+ viewBox: iconData.viewBox,
46
+ collection: iconData.collection,
47
+ });
48
+ };
49
+ /**
50
+ * Processes the full icon name and splits it into - "name", "collection".
51
+ * - removes legacy protocol ("sap-icon://")
52
+ * - resolves aliases (f.e "SAP-icons-TNT/actor" => "tnt/actor")
53
+ *
54
+ * @param { string } name
55
+ * @return { object }
56
+ */
57
+ const processName = (name) => {
58
+ // silently support ui5-compatible URIs
59
+ if (name.startsWith("sap-icon://")) {
60
+ name = name.replace("sap-icon://", "");
61
+ }
62
+ let collection;
63
+ [name, collection] = name.split("/").reverse();
64
+ name = name.replace("icon-", "");
65
+ if (collection) {
66
+ collection = getIconCollectionByAlias(collection);
67
+ }
68
+ return { name, collection };
57
69
  };
58
-
59
- const _parseName = name => {
60
- // silently support ui5-compatible URIs
61
- if (name.startsWith("sap-icon://")) {
62
- name = name.replace("sap-icon://", "");
63
- }
64
-
65
- let collection;
66
- [name, collection] = name.split("/").reverse();
67
- collection = collection || DEFAULT_COLLECTION;
68
- // hardcoded alias in case icon explorer is used, resolve `SAP-icons-TNT` to `tnt`
69
- // aliases can be made a feature in the future if more collections need it or more aliases are needed.
70
- if (collection === "SAP-icons-TNT") {
71
- collection = "tnt";
72
- }
73
- const registryKey = `${collection}/${name}`;
74
- return { name, collection, registryKey };
70
+ const getIconDataSync = (iconName) => {
71
+ const { name, collection } = processName(iconName);
72
+ return getRegisteredIconData(collection, name);
75
73
  };
76
-
77
- const getIconDataSync = nameProp => {
78
- const { registryKey } = _parseName(nameProp);
79
- return registry.get(registryKey);
74
+ const getIconData = async (iconName) => {
75
+ const { name, collection } = processName(iconName);
76
+ let iconData = ICON_NOT_FOUND;
77
+ try {
78
+ iconData = (await _loadIconCollectionOnce(getEffectiveIconCollection(collection)));
79
+ }
80
+ catch (error) {
81
+ const e = error;
82
+ console.error(e.message); /* eslint-disable-line */
83
+ }
84
+ if (iconData === ICON_NOT_FOUND) {
85
+ return iconData;
86
+ }
87
+ const registeredIconData = getRegisteredIconData(collection, name);
88
+ if (registeredIconData) {
89
+ return registeredIconData;
90
+ }
91
+ // not filled by another await. many getters will await on the same loader, but fill only once
92
+ if (Array.isArray(iconData)) {
93
+ iconData.forEach(data => {
94
+ _fillRegistry(data);
95
+ registerIconCollectionForTheme(collection, { [data.themeFamily || DEFAULT_THEME_FAMILY]: data.collection });
96
+ });
97
+ }
98
+ else {
99
+ _fillRegistry(iconData);
100
+ }
101
+ return getRegisteredIconData(collection, name);
80
102
  };
81
-
82
- const getIconData = async nameProp => {
83
- const { collection, registryKey } = _parseName(nameProp);
84
-
85
- let iconData = ICON_NOT_FOUND;
86
- try {
87
- iconData = await _loadIconCollectionOnce(collection);
88
- } catch (e) {
89
- console.error(e.message); /* eslint-disable-line */
90
- }
91
-
92
- if (iconData === ICON_NOT_FOUND) {
93
- return iconData;
94
- }
95
-
96
- if (!registry.has(registryKey)) {
97
- // not filled by another await. many getters will await on the same loader, but fill only once
98
- _fillRegistry(iconData);
99
- }
100
- return registry.get(registryKey);
103
+ const getRegisteredIconData = (collection, name) => {
104
+ const registryKey = `${getEffectiveIconCollection(collection)}/${name}`;
105
+ return registry.get(registryKey);
106
+ };
107
+ /**
108
+ * Returns the accessible name for the given icon,
109
+ * or undefined if accessible name is not present.
110
+ *
111
+ * @param { string } name
112
+ * @return { Promise }
113
+ */
114
+ const getIconAccessibleName = async (name) => {
115
+ if (!name) {
116
+ return;
117
+ }
118
+ let iconData = getIconDataSync(name);
119
+ if (!iconData) {
120
+ iconData = await getIconData(name);
121
+ }
122
+ if (iconData && iconData !== ICON_NOT_FOUND && iconData.accData) {
123
+ const i18nBundle = await getI18nBundle(iconData.packageName);
124
+ return i18nBundle.getText(iconData.accData);
125
+ }
101
126
  };
102
-
103
127
  // test page usage only
104
128
  const _getRegisteredNames = async () => {
105
- // fetch one icon of each collection to trigger the bundle load
106
- await getIconData("edit");
107
- await getIconData("tnt/arrow");
108
- return Array.from(registry.keys());
109
- };
110
-
111
- export {
112
- registerIconBundle,
113
- registerIconLoader,
114
- getIconData,
115
- getIconDataSync,
116
- registerIcon,
117
- _getRegisteredNames,
129
+ // fetch one icon of each collection to trigger the bundle load
130
+ await getIconData("edit");
131
+ await getIconData("tnt/arrow");
132
+ await getIconData("business-suite/3d");
133
+ return Array.from(registry.keys());
118
134
  };
135
+ export { registerIconLoader, getIconData, getIconDataSync, getIconAccessibleName, registerIcon, _getRegisteredNames, };
136
+ //# 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 \"./util/IconCollectionsAlias.js\";\nimport { registerIconCollectionForTheme } from \"./util/IconCollectionsByTheme.js\";\nimport getEffectiveIconCollection from \"./util/getIconCollectionByTheme.js\";\nimport { getI18nBundle } from \"../i18nBundle.js\";\nimport type { I18nText } from \"../i18nBundle.js\";\nimport type { TemplateFunction } from \"../renderer/executeTemplate.js\";\n\nconst DEFAULT_THEME_FAMILY = \"legacy\"; // includes sap_belize_* and sap_fiori_*\n\ntype IconLoader = (collectionName: string) => Promise<CollectionData | Array<CollectionData>>;\n\ntype CollectionData = {\n\tcollection: string,\n\tpackageName: string,\n\tthemeFamily?: \"legacy\" | \"sap_horizon\",\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| Array<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 * - removes legacy protocol (\"sap-icon://\")\n * - resolves aliases (f.e \"SAP-icons-TNT/actor\" => \"tnt/actor\")\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\tif (collection) {\n\t\tcollection = getIconCollectionByAlias(collection);\n\t}\n\treturn { name, collection };\n};\n\nconst getIconDataSync = (iconName: string) => {\n\tconst { name, collection } = processName(iconName);\n\treturn getRegisteredIconData(collection, name);\n};\n\nconst getIconData = async (iconName: string) => {\n\tconst { name, collection } = processName(iconName);\n\n\tlet iconData: string | CollectionData | Array<CollectionData> = ICON_NOT_FOUND;\n\ttry {\n\t\ticonData = (await _loadIconCollectionOnce(getEffectiveIconCollection(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\tconst registeredIconData = getRegisteredIconData(collection, name);\n\n\tif (registeredIconData) {\n\t\treturn registeredIconData;\n\t}\n\n\t// not filled by another await. many getters will await on the same loader, but fill only once\n\tif (Array.isArray(iconData)) {\n\t\ticonData.forEach(data => {\n\t\t\t_fillRegistry(data);\n\t\t\tregisterIconCollectionForTheme(collection, { [data.themeFamily || DEFAULT_THEME_FAMILY]: data.collection });\n\t\t});\n\t} else {\n\t\t_fillRegistry(iconData as CollectionData);\n\t}\n\n\treturn getRegisteredIconData(collection, name);\n};\n\nconst getRegisteredIconData = (collection: string, name: string) => {\n\tconst registryKey = `${getEffectiveIconCollection(collection)}/${name}`;\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,18 @@
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
+ collection: string;
13
+ };
14
+ declare const registerIllustration: (name: string, data: IllustrationData) => void;
15
+ declare const registerIllustrationLoader: (illustrationName: string, loader: IllustrationLoader) => void;
16
+ declare const getIllustrationDataSync: (illustrationName: string) => IllustrationProperties | undefined;
17
+ declare const getIllustrationData: (illustrationName: string) => Promise<IllustrationProperties | undefined>;
18
+ export { getIllustrationDataSync, registerIllustration, registerIllustrationLoader, getIllustrationData, };
@@ -0,0 +1,84 @@
1
+ import getSharedResource from "../getSharedResource.js";
2
+ import { getTheme } from "../config/Theme.js";
3
+ const IllustrationCollections = new Map([
4
+ ["sap_horizon", "V5"],
5
+ ["sap_horizon_dark", "V5"],
6
+ ["sap_horizon_hcb", "V5/HC"],
7
+ ["sap_horizon_hcw", "V5/HC"],
8
+ ]);
9
+ const FALLBACK_COLLECTION = "V4";
10
+ const loaders = new Map();
11
+ const registry = getSharedResource("SVGIllustration.registry", new Map());
12
+ const illustrationPromises = getSharedResource("SVGIllustration.promises", new Map());
13
+ const getCollection = () => {
14
+ const theme = getTheme();
15
+ if (IllustrationCollections.has(theme)) {
16
+ return IllustrationCollections.get(theme);
17
+ }
18
+ return FALLBACK_COLLECTION;
19
+ };
20
+ /**
21
+ * Processes the name of the illustration
22
+ * The name is used to generate the registry key and the loader key
23
+ * The registry key is used to store and get the illustration data from the registry
24
+ * The loader key is used to store and get the illustration loader from the loaders map
25
+ * The function generates the correct registry key and loader key based on whether an loader exists for the illustration
26
+ * If there is no loader registered for the collection, it falls back to the default collection
27
+ */
28
+ const processName = (name) => {
29
+ let collection = getCollection();
30
+ const isTnt = name.startsWith("Tnt");
31
+ const set = isTnt ? "tnt" : "fiori";
32
+ let registryKey = `${set}/${collection}/${name}`;
33
+ let loaderKey = `${collection}/${name}`;
34
+ if (!loaders.has(loaderKey) && collection !== FALLBACK_COLLECTION) {
35
+ collection = FALLBACK_COLLECTION;
36
+ loaderKey = `${collection}/${name}`;
37
+ registryKey = `${set}/${collection}/${name}`;
38
+ }
39
+ if (isTnt) {
40
+ name = name.replace(/^Tnt/, "");
41
+ registryKey = `${set}/${collection}/${name}`;
42
+ }
43
+ return {
44
+ registryKey,
45
+ loaderKey,
46
+ collection,
47
+ };
48
+ };
49
+ const registerIllustration = (name, data) => {
50
+ const collection = data.collection || FALLBACK_COLLECTION;
51
+ registry.set(`${data.set}/${collection}/${name}`, {
52
+ dialogSvg: data.dialogSvg,
53
+ sceneSvg: data.sceneSvg,
54
+ spotSvg: data.spotSvg,
55
+ title: data.title,
56
+ subtitle: data.subtitle,
57
+ });
58
+ };
59
+ const registerIllustrationLoader = (illustrationName, loader) => {
60
+ loaders.set(illustrationName, loader);
61
+ };
62
+ const _loadIllustrationOnce = (illustrationName) => {
63
+ const { loaderKey } = processName(illustrationName);
64
+ if (!illustrationPromises.has(loaderKey)) {
65
+ if (!loaders.has(loaderKey)) {
66
+ const illustrationPath = illustrationName.startsWith("Tnt") ? `tnt/${illustrationName.replace(/^Tnt/, "")}` : illustrationName;
67
+ 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.`);
68
+ }
69
+ const loadIllustrations = loaders.get(loaderKey);
70
+ illustrationPromises.set(loaderKey, loadIllustrations(loaderKey));
71
+ }
72
+ return illustrationPromises.get(loaderKey);
73
+ };
74
+ const getIllustrationDataSync = (illustrationName) => {
75
+ const { registryKey } = processName(illustrationName);
76
+ return registry.get(registryKey);
77
+ };
78
+ const getIllustrationData = async (illustrationName) => {
79
+ const { registryKey } = processName(illustrationName);
80
+ await _loadIllustrationOnce(illustrationName);
81
+ return registry.get(registryKey);
82
+ };
83
+ export { getIllustrationDataSync, registerIllustration, registerIllustrationLoader, getIllustrationData, };
84
+ //# sourceMappingURL=Illustrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Illustrations.js","sourceRoot":"","sources":["../../src/asset-registries/Illustrations.ts"],"names":[],"mappings":"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","sourcesContent":["import getSharedResource from \"../getSharedResource.js\";\nimport type { I18nText } from \"../i18nBundle.js\";\nimport { getTheme } from \"../config/Theme.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\tcollection: string,\n};\n\nconst IllustrationCollections = new Map([\n\t[\"sap_horizon\", \"V5\"],\n\t[\"sap_horizon_dark\", \"V5\"],\n\t[\"sap_horizon_hcb\", \"V5/HC\"],\n\t[\"sap_horizon_hcw\", \"V5/HC\"],\n]);\n\nconst FALLBACK_COLLECTION = \"V4\";\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 getCollection = () => {\n\tconst theme = getTheme();\n\n\tif (IllustrationCollections.has(theme)) {\n\t\treturn IllustrationCollections.get(theme);\n\t}\n\n\treturn FALLBACK_COLLECTION;\n};\n\n/**\n * Processes the name of the illustration\n * The name is used to generate the registry key and the loader key\n * The registry key is used to store and get the illustration data from the registry\n * The loader key is used to store and get the illustration loader from the loaders map\n * The function generates the correct registry key and loader key based on whether an loader exists for the illustration\n * If there is no loader registered for the collection, it falls back to the default collection\n */\nconst processName = (name: string) => {\n\tlet collection = getCollection();\n\tconst isTnt = name.startsWith(\"Tnt\");\n\tconst set = isTnt ? \"tnt\" : \"fiori\";\n\n\tlet registryKey = `${set}/${collection}/${name}`;\n\tlet loaderKey = `${collection}/${name}`;\n\n\tif (!loaders.has(loaderKey) && collection !== FALLBACK_COLLECTION) {\n\t\tcollection = FALLBACK_COLLECTION;\n\t\tloaderKey = `${collection}/${name}`;\n\t\tregistryKey = `${set}/${collection}/${name}`;\n\t}\n\n\tif (isTnt) {\n\t\tname = name.replace(/^Tnt/, \"\");\n\t\tregistryKey = `${set}/${collection}/${name}`;\n\t}\n\n\treturn {\n\t\tregistryKey,\n\t\tloaderKey,\n\t\tcollection,\n\t};\n};\n\nconst registerIllustration = (name: string, data: IllustrationData) => {\n\tconst collection = data.collection || FALLBACK_COLLECTION;\n\tregistry.set(`${data.set}/${collection}/${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 = (illustrationName: string) => {\n\tconst { loaderKey } = processName(illustrationName);\n\n\tif (!illustrationPromises.has(loaderKey)) {\n\t\tif (!loaders.has(loaderKey)) {\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(loaderKey)!;\n\t\tillustrationPromises.set(loaderKey, loadIllustrations(loaderKey));\n\t}\n\treturn illustrationPromises.get(loaderKey);\n};\n\nconst getIllustrationDataSync = (illustrationName: string) => {\n\tconst { registryKey } = processName(illustrationName);\n\treturn registry.get(registryKey);\n};\n\nconst getIllustrationData = async (illustrationName: string) => {\n\tconst { registryKey } = processName(illustrationName);\n\n\tawait _loadIllustrationOnce(illustrationName);\n\treturn registry.get(registryKey);\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, };
@@ -2,149 +2,135 @@ 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
-
6
5
  const localeDataMap = new Map();
7
6
  const loaders = new Map();
8
7
  const cldrPromises = new Map();
9
8
  const reportedErrors = new Set();
10
9
  let warningShown = false;
11
-
12
10
  const M_ISO639_OLD_TO_NEW = {
13
- "iw": "he",
14
- "ji": "yi",
15
- "in": "id",
16
- "sh": "sr",
11
+ "iw": "he",
12
+ "ji": "yi",
13
+ "in": "id",
17
14
  };
18
-
19
- const _showAssetsWarningOnce = localeId => {
20
- if (!warningShown) {
21
- console.warn(`[LocaleData] Supported locale "${localeId}" not configured, import the "Assets.js" module from the webcomponents package you are using.`); /* eslint-disable-line */
22
- warningShown = true;
23
- }
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;
24
21
  };
25
-
26
22
  const calcLocale = (language, region, script) => {
27
- // normalize language and handle special cases
28
- language = (language && M_ISO639_OLD_TO_NEW[language]) || language;
29
- // Special case 1: in an SAP context, the inclusive language code "no" always means Norwegian Bokmal ("nb")
30
- if (language === "no") {
31
- language = "nb";
32
- }
33
- // Special case 2: for Chinese, derive a default region from the script (this behavior is inherited from Java)
34
- if (language === "zh" && !region) {
35
- if (script === "Hans") {
36
- region = "CN";
37
- } else if (script === "Hant") {
38
- region = "TW";
39
- }
40
- }
41
-
42
- // try language + region
43
- let localeId = `${language}_${region}`;
44
- if (SUPPORTED_LOCALES.includes(localeId)) {
45
- if (loaders.has(localeId)) {
46
- // supported and has loader
47
- return localeId;
48
- }
49
-
50
- // supported, no loader - fallback to default and warn
51
- _showAssetsWarningOnce(localeId);
52
- return DEFAULT_LOCALE;
53
- }
54
-
55
- // not supported, try language only
56
- localeId = language;
57
- if (SUPPORTED_LOCALES.includes(localeId)) {
58
- if (loaders.has(localeId)) {
59
- // supported and has loader
60
- return localeId;
61
- }
62
-
63
- // supported, no loader - fallback to default and warn
64
- _showAssetsWarningOnce(localeId);
65
- return DEFAULT_LOCALE;
66
- }
67
-
68
- // not supported - fallback to default locale
69
- return DEFAULT_LOCALE;
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;
70
67
  };
71
-
72
68
  // internal set data
73
69
  const setLocaleData = (localeId, content) => {
74
- localeDataMap.set(localeId, content);
70
+ localeDataMap.set(localeId, content);
75
71
  };
76
-
77
72
  // external getSync
78
- const getLocaleData = localeId => {
79
- // if there is no loader, the default fallback was fetched and a warning was given - use default locale instead
80
- if (!loaders.has(localeId)) {
81
- localeId = DEFAULT_LOCALE;
82
- }
83
-
84
- const content = localeDataMap.get(localeId);
85
- if (!content) {
86
- throw new Error(`CLDR data for locale ${localeId} is not loaded!`);
87
- }
88
-
89
- return content;
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;
90
83
  };
91
-
92
84
  // load bundle over the network once
93
- const _loadCldrOnce = localeId => {
94
- const loadCldr = loaders.get(localeId);
95
-
96
- if (!cldrPromises.get(localeId)) {
97
- cldrPromises.set(localeId, loadCldr(localeId));
98
- }
99
-
100
- return cldrPromises.get(localeId);
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);
101
94
  };
102
-
103
95
  // external getAsync
104
96
  const fetchCldr = async (language, region, script) => {
105
- const localeId = calcLocale(language, region, script);
106
-
107
- // reuse OpenUI5 CLDR if present
108
- const OpenUI5Support = getFeature("OpenUI5Support");
109
- if (OpenUI5Support) {
110
- const cldrContent = OpenUI5Support.getLocaleDataObject();
111
- if (cldrContent) {
112
- // only if openui5 actually returned valid content
113
- setLocaleData(localeId, cldrContent);
114
- return;
115
- }
116
- }
117
-
118
- // fetch it
119
- try {
120
- const cldrContent = await _loadCldrOnce(localeId);
121
- setLocaleData(localeId, cldrContent);
122
- } catch (e) {
123
- if (!reportedErrors.has(e.message)) {
124
- reportedErrors.add(e.message);
125
- console.error(e.message); /* eslint-disable-line */
126
- }
127
- }
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
+ }
128
120
  };
129
-
130
121
  const registerLocaleDataLoader = (localeId, loader) => {
131
- loaders.set(localeId, loader);
122
+ loaders.set(localeId, loader);
132
123
  };
133
-
134
124
  // register default loader for "en" from ui5 CDN (dev workflow without assets)
135
- registerLocaleDataLoader("en", async runtimeLocaleId => {
136
- return (await fetch(`https://ui5.sap.com/1.60.2/resources/sap/ui/core/cldr/en.json`)).json();
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();
137
128
  });
138
-
139
129
  // When the language changes dynamically (the user calls setLanguage),
140
130
  // re-fetch the required CDRD data.
141
131
  attachLanguageChange(() => {
142
- const locale = getLocale();
143
- return fetchCldr(locale.getLanguage(), locale.getRegion(), locale.getScript());
132
+ const locale = getLocale();
133
+ return fetchCldr(locale.getLanguage(), locale.getRegion(), locale.getScript());
144
134
  });
145
-
146
- export {
147
- registerLocaleDataLoader,
148
- fetchCldr,
149
- getLocaleData,
150
- };
135
+ export { registerLocaleDataLoader, fetchCldr, getLocaleData, };
136
+ //# sourceMappingURL=LocaleData.js.map