@ui5/webcomponents-base 0.0.0-cc312800a → 0.0.0-ce98ce2bb

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 (636) hide show
  1. package/.eslintignore +8 -4
  2. package/.npsrc.json +3 -0
  3. package/CHANGELOG.md +787 -0
  4. package/README.md +57 -7
  5. package/bundle.esm.js +26 -13
  6. package/config/wdio.conf.cjs +400 -0
  7. package/{src/AssetRegistry.js → dist/AssetRegistry.d.ts} +1 -7
  8. package/dist/AssetRegistry.js +2 -7
  9. package/dist/AssetRegistry.js.map +1 -0
  10. package/dist/Boot.d.ts +9 -0
  11. package/dist/Boot.js +56 -28
  12. package/dist/Boot.js.map +1 -0
  13. package/dist/CSP.d.ts +30 -0
  14. package/dist/CSP.js +51 -0
  15. package/dist/CSP.js.map +1 -0
  16. package/dist/CustomElementsRegistry.d.ts +5 -0
  17. package/dist/CustomElementsRegistry.js +69 -30
  18. package/dist/CustomElementsRegistry.js.map +1 -0
  19. package/dist/CustomElementsScope.d.ts +7 -0
  20. package/dist/CustomElementsScope.js +11 -108
  21. package/dist/CustomElementsScope.js.map +1 -0
  22. package/dist/CustomElementsScopeUtils.d.ts +62 -0
  23. package/dist/CustomElementsScopeUtils.js +102 -0
  24. package/dist/CustomElementsScopeUtils.js.map +1 -0
  25. package/dist/DOMObserver.d.ts +11 -0
  26. package/dist/DOMObserver.js +12 -54
  27. package/dist/DOMObserver.js.map +1 -0
  28. package/dist/Device.d.ts +13 -0
  29. package/dist/Device.js +159 -84
  30. package/dist/Device.js.map +1 -0
  31. package/dist/EventProvider.d.ts +25 -0
  32. package/dist/EventProvider.js +67 -88
  33. package/dist/EventProvider.js.map +1 -0
  34. package/dist/FeaturesRegistry.d.ts +3 -0
  35. package/dist/FeaturesRegistry.js +5 -7
  36. package/dist/FeaturesRegistry.js.map +1 -0
  37. package/dist/FontFace.d.ts +2 -0
  38. package/dist/FontFace.js +17 -110
  39. package/dist/FontFace.js.map +1 -0
  40. package/dist/IgnoreCustomElements.d.ts +27 -0
  41. package/dist/IgnoreCustomElements.js +39 -0
  42. package/dist/IgnoreCustomElements.js.map +1 -0
  43. package/dist/InitialConfiguration.d.ts +27 -0
  44. package/dist/InitialConfiguration.js +121 -114
  45. package/dist/InitialConfiguration.js.map +1 -0
  46. package/dist/Keys.d.ts +61 -0
  47. package/dist/Keys.js +178 -229
  48. package/dist/Keys.js.map +1 -0
  49. package/dist/ManagedStyles.d.ts +8 -0
  50. package/dist/ManagedStyles.js +78 -0
  51. package/dist/ManagedStyles.js.map +1 -0
  52. package/dist/MarkedEvents.d.ts +9 -0
  53. package/dist/MarkedEvents.js +15 -0
  54. package/dist/MarkedEvents.js.map +1 -0
  55. package/dist/MediaRange.d.ts +37 -0
  56. package/dist/MediaRange.js +54 -65
  57. package/dist/MediaRange.js.map +1 -0
  58. package/dist/PropertiesFileFormat.d.ts +8 -0
  59. package/dist/PropertiesFileFormat.js +72 -82
  60. package/dist/PropertiesFileFormat.js.map +1 -0
  61. package/dist/Render.d.ts +47 -0
  62. package/dist/Render.js +82 -112
  63. package/dist/Render.js.map +1 -0
  64. package/dist/RenderQueue.d.ts +19 -0
  65. package/dist/RenderQueue.js +52 -62
  66. package/dist/RenderQueue.js.map +1 -0
  67. package/dist/Runtimes.d.ts +27 -0
  68. package/dist/Runtimes.js +86 -0
  69. package/dist/Runtimes.js.map +1 -0
  70. package/dist/StaticArea.d.ts +3 -0
  71. package/dist/StaticArea.js +5 -1
  72. package/dist/StaticArea.js.map +1 -0
  73. package/dist/StaticAreaItem.d.ts +37 -0
  74. package/dist/StaticAreaItem.js +89 -83
  75. package/dist/StaticAreaItem.js.map +1 -0
  76. package/dist/SystemCSSVars.d.ts +2 -0
  77. package/dist/SystemCSSVars.js +6 -28
  78. package/dist/SystemCSSVars.js.map +1 -0
  79. package/{src/Theming.js → dist/Theming.d.ts} +0 -1
  80. package/dist/Theming.js +1 -1
  81. package/dist/Theming.js.map +1 -0
  82. package/dist/UI5Element.d.ts +380 -0
  83. package/dist/UI5Element.js +928 -997
  84. package/dist/UI5Element.js.map +1 -0
  85. package/dist/UI5ElementMetadata.d.ts +150 -0
  86. package/dist/UI5ElementMetadata.js +278 -298
  87. package/dist/UI5ElementMetadata.js.map +1 -0
  88. package/dist/animations/AnimationQueue.d.ts +8 -0
  89. package/dist/animations/AnimationQueue.js +31 -38
  90. package/dist/animations/AnimationQueue.js.map +1 -0
  91. package/dist/animations/animate.d.ts +14 -0
  92. package/dist/animations/animate.js +46 -51
  93. package/dist/animations/animate.js.map +1 -0
  94. package/dist/animations/scroll.d.ts +5 -0
  95. package/dist/animations/scroll.js +18 -27
  96. package/dist/animations/scroll.js.map +1 -0
  97. package/dist/animations/slideDown.d.ts +5 -0
  98. package/dist/animations/slideDown.js +53 -78
  99. package/dist/animations/slideDown.js.map +1 -0
  100. package/dist/animations/slideUp.d.ts +5 -0
  101. package/dist/animations/slideUp.js +49 -70
  102. package/dist/animations/slideUp.js.map +1 -0
  103. package/dist/api.json +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 +85 -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 +11 -0
  114. package/dist/asset-registries/Themes.js +40 -66
  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 +61 -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/assets/Boot.34b7cea0.css +1 -0
  129. package/dist/assets/Boot.52ac4401.js +9 -0
  130. package/dist/assets/bundle.esm.6d93df7e.js +50 -0
  131. package/dist/config/AnimationMode.d.ts +14 -0
  132. package/dist/config/AnimationMode.js +21 -18
  133. package/dist/config/AnimationMode.js.map +1 -0
  134. package/dist/config/CalendarType.d.ts +8 -0
  135. package/dist/config/CalendarType.js +13 -12
  136. package/dist/config/CalendarType.js.map +1 -0
  137. package/dist/config/FormatSettings.d.ts +15 -0
  138. package/dist/config/FormatSettings.js +15 -9
  139. package/dist/config/FormatSettings.js.map +1 -0
  140. package/dist/config/Icons.d.ts +40 -0
  141. package/dist/config/Icons.js +44 -0
  142. package/dist/config/Icons.js.map +1 -0
  143. package/dist/config/Language.d.ts +40 -0
  144. package/dist/config/Language.js +43 -43
  145. package/dist/config/Language.js.map +1 -0
  146. package/dist/config/NoConflict.d.ts +20 -0
  147. package/dist/config/NoConflict.js +41 -41
  148. package/dist/config/NoConflict.js.map +1 -0
  149. package/dist/config/RTL.d.ts +7 -0
  150. package/dist/config/RTL.js +26 -20
  151. package/dist/config/RTL.js.map +1 -0
  152. package/dist/config/Theme.d.ts +38 -0
  153. package/dist/config/Theme.js +64 -22
  154. package/dist/config/Theme.js.map +1 -0
  155. package/dist/config/ThemeRoot.d.ts +29 -0
  156. package/dist/config/ThemeRoot.js +59 -0
  157. package/dist/config/ThemeRoot.js.map +1 -0
  158. package/dist/config/Timezone.d.ts +17 -0
  159. package/dist/config/Timezone.js +30 -0
  160. package/dist/config/Timezone.js.map +1 -0
  161. package/dist/connectToComponent.d.ts +9 -0
  162. package/dist/connectToComponent.js +59 -0
  163. package/dist/connectToComponent.js.map +1 -0
  164. package/dist/css/BusyIndicator.css +80 -0
  165. package/dist/css/FontFace.css +84 -0
  166. package/dist/css/OverrideFontFace.css +32 -0
  167. package/dist/css/SystemCSSVars.css +17 -0
  168. package/dist/decorators/customElement.d.ts +23 -0
  169. package/dist/decorators/customElement.js +37 -0
  170. package/dist/decorators/customElement.js.map +1 -0
  171. package/dist/decorators/event.d.ts +10 -0
  172. package/dist/decorators/event.js +24 -0
  173. package/dist/decorators/event.js.map +1 -0
  174. package/dist/decorators/property.d.ts +9 -0
  175. package/dist/decorators/property.js +24 -0
  176. package/dist/decorators/property.js.map +1 -0
  177. package/dist/decorators/slot.d.ts +9 -0
  178. package/dist/decorators/slot.js +37 -0
  179. package/dist/decorators/slot.js.map +1 -0
  180. package/dist/delegate/ItemNavigation.d.ts +113 -0
  181. package/dist/delegate/ItemNavigation.js +277 -246
  182. package/dist/delegate/ItemNavigation.js.map +1 -0
  183. package/dist/delegate/ResizeHandler.d.ts +25 -0
  184. package/dist/delegate/ResizeHandler.js +72 -91
  185. package/dist/delegate/ResizeHandler.js.map +1 -0
  186. package/dist/delegate/ScrollEnablement.d.ts +49 -0
  187. package/dist/delegate/ScrollEnablement.js +157 -174
  188. package/dist/delegate/ScrollEnablement.js.map +1 -0
  189. package/dist/features/F6Navigation.d.ts +19 -0
  190. package/dist/features/F6Navigation.js +151 -0
  191. package/dist/features/F6Navigation.js.map +1 -0
  192. package/dist/features/LegacyDateFormats.d.ts +18 -0
  193. package/dist/features/LegacyDateFormats.js +20 -0
  194. package/dist/features/LegacyDateFormats.js.map +1 -0
  195. package/dist/features/OpenUI5Element.d.ts +9 -0
  196. package/dist/features/OpenUI5Element.js +5 -0
  197. package/dist/features/OpenUI5Element.js.map +1 -0
  198. package/dist/features/OpenUI5Enablement.d.ts +11 -0
  199. package/dist/features/OpenUI5Enablement.js +96 -0
  200. package/dist/features/OpenUI5Enablement.js.map +1 -0
  201. package/dist/features/OpenUI5Support.d.ts +36 -0
  202. package/dist/features/OpenUI5Support.js +150 -121
  203. package/dist/features/OpenUI5Support.js.map +1 -0
  204. package/dist/generated/AssetParameters.js +3 -1
  205. package/dist/generated/VersionInfo.js +10 -0
  206. package/dist/generated/css/BusyIndicator.css.d.ts +3 -0
  207. package/dist/generated/css/BusyIndicator.css.js +7 -0
  208. package/dist/generated/css/BusyIndicator.css.js.map +1 -0
  209. package/dist/generated/css/FontFace.css.d.ts +3 -0
  210. package/dist/generated/css/FontFace.css.js +7 -0
  211. package/dist/generated/css/FontFace.css.js.map +1 -0
  212. package/dist/generated/css/OverrideFontFace.css.d.ts +3 -0
  213. package/dist/generated/css/OverrideFontFace.css.js +7 -0
  214. package/dist/generated/css/OverrideFontFace.css.js.map +1 -0
  215. package/dist/generated/css/SystemCSSVars.css.d.ts +3 -0
  216. package/dist/generated/css/SystemCSSVars.css.js +7 -0
  217. package/dist/generated/css/SystemCSSVars.css.js.map +1 -0
  218. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.d.ts +4 -0
  219. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +9 -0
  220. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js.map +1 -0
  221. package/dist/getSharedResource.d.ts +11 -0
  222. package/dist/getSharedResource.js +28 -18
  223. package/dist/getSharedResource.js.map +1 -0
  224. package/dist/global.d.ts +40 -0
  225. package/dist/i18nBundle.d.ts +43 -0
  226. package/dist/i18nBundle.js +68 -44
  227. package/dist/i18nBundle.js.map +1 -0
  228. package/dist/locale/Locale.d.ts +22 -0
  229. package/dist/locale/Locale.js +75 -87
  230. package/dist/locale/Locale.js.map +1 -0
  231. package/dist/locale/RTLAwareRegistry.d.ts +4 -0
  232. package/dist/locale/RTLAwareRegistry.js +6 -11
  233. package/dist/locale/RTLAwareRegistry.js.map +1 -0
  234. package/dist/locale/applyDirection.d.ts +10 -0
  235. package/dist/locale/applyDirection.js +7 -7
  236. package/dist/locale/applyDirection.js.map +1 -0
  237. package/dist/locale/directionChange.d.ts +15 -0
  238. package/dist/locale/directionChange.js +7 -15
  239. package/dist/locale/directionChange.js.map +1 -0
  240. package/dist/locale/getEffectiveDir.d.ts +2 -0
  241. package/dist/locale/getEffectiveDir.js +20 -24
  242. package/dist/locale/getEffectiveDir.js.map +1 -0
  243. package/dist/locale/getLocale.d.ts +7 -0
  244. package/dist/locale/getLocale.js +26 -29
  245. package/dist/locale/getLocale.js.map +1 -0
  246. package/dist/locale/languageChange.d.ts +5 -0
  247. package/dist/locale/languageChange.js +8 -16
  248. package/dist/locale/languageChange.js.map +1 -0
  249. package/dist/locale/nextFallbackLocale.d.ts +8 -0
  250. package/dist/locale/nextFallbackLocale.js +15 -19
  251. package/dist/locale/nextFallbackLocale.js.map +1 -0
  252. package/dist/locale/normalizeLocale.d.ts +7 -0
  253. package/dist/locale/normalizeLocale.js +34 -41
  254. package/dist/locale/normalizeLocale.js.map +1 -0
  255. package/dist/renderer/LitRenderer.d.ts +14 -0
  256. package/dist/renderer/LitRenderer.js +34 -24
  257. package/dist/renderer/LitRenderer.js.map +1 -0
  258. package/dist/renderer/directives/style-map.js +72 -0
  259. package/dist/renderer/executeTemplate.d.ts +13 -0
  260. package/dist/renderer/executeTemplate.js +20 -7
  261. package/dist/renderer/executeTemplate.js.map +1 -0
  262. package/dist/sap/base/Log.js +240 -0
  263. package/dist/sap/base/assert.js +7 -0
  264. package/dist/sap/base/security/URLListValidator.js +159 -0
  265. package/dist/sap/base/security/encodeCSS.js +14 -0
  266. package/dist/sap/base/security/encodeXML.js +23 -0
  267. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  268. package/dist/sap/base/strings/toHex.js +8 -0
  269. package/dist/sap/base/util/now.js +7 -0
  270. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3600 -0
  271. package/dist/theming/CustomStyle.d.ts +6 -0
  272. package/dist/theming/CustomStyle.js +39 -31
  273. package/dist/theming/CustomStyle.js.map +1 -0
  274. package/dist/theming/ThemeLoaded.d.ts +5 -0
  275. package/dist/theming/ThemeLoaded.js +8 -16
  276. package/dist/theming/ThemeLoaded.js.map +1 -0
  277. package/dist/theming/ThemeRegistered.d.ts +4 -0
  278. package/dist/theming/ThemeRegistered.js +11 -0
  279. package/dist/theming/ThemeRegistered.js.map +1 -0
  280. package/dist/theming/applyTheme.d.ts +2 -0
  281. package/dist/theming/applyTheme.js +63 -65
  282. package/dist/theming/applyTheme.js.map +1 -0
  283. package/dist/theming/getConstructableStyle.d.ts +9 -0
  284. package/dist/theming/getConstructableStyle.js +12 -17
  285. package/dist/theming/getConstructableStyle.js.map +1 -0
  286. package/dist/theming/getEffectiveLinksHrefs.d.ts +3 -0
  287. package/dist/theming/getEffectiveLinksHrefs.js +17 -0
  288. package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
  289. package/dist/theming/getEffectiveStyle.d.ts +3 -0
  290. package/dist/theming/getEffectiveStyle.js +25 -23
  291. package/dist/theming/getEffectiveStyle.js.map +1 -0
  292. package/dist/theming/getStylesString.d.ts +3 -0
  293. package/dist/theming/getStylesString.js +9 -11
  294. package/dist/theming/getStylesString.js.map +1 -0
  295. package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
  296. package/dist/theming/getThemeDesignerTheme.js +73 -60
  297. package/dist/theming/getThemeDesignerTheme.js.map +1 -0
  298. package/dist/theming/preloadLinks.d.ts +3 -0
  299. package/dist/theming/preloadLinks.js +19 -0
  300. package/dist/theming/preloadLinks.js.map +1 -0
  301. package/dist/thirdparty/_merge.d.ts +2 -0
  302. package/dist/thirdparty/_merge.js +7 -4
  303. package/dist/thirdparty/_merge.js.map +1 -0
  304. package/dist/thirdparty/isPlainObject.d.ts +2 -0
  305. package/dist/thirdparty/isPlainObject.js +11 -10
  306. package/dist/thirdparty/isPlainObject.js.map +1 -0
  307. package/dist/thirdparty/merge.d.ts +2 -0
  308. package/dist/thirdparty/merge.js +4 -8
  309. package/dist/thirdparty/merge.js.map +1 -0
  310. package/dist/types/AnimationMode.d.ts +32 -0
  311. package/dist/types/AnimationMode.js +33 -6
  312. package/dist/types/AnimationMode.js.map +1 -0
  313. package/dist/types/CSSColor.d.ts +15 -0
  314. package/dist/types/CSSColor.js +14 -5
  315. package/dist/types/CSSColor.js.map +1 -0
  316. package/dist/types/CSSSize.d.ts +15 -0
  317. package/dist/types/CSSSize.js +14 -5
  318. package/dist/types/CSSSize.js.map +1 -0
  319. package/dist/types/CalendarType.d.ts +37 -0
  320. package/dist/types/CalendarType.js +35 -18
  321. package/dist/types/CalendarType.js.map +1 -0
  322. package/dist/types/DOMReference.d.ts +17 -0
  323. package/dist/types/DOMReference.js +25 -0
  324. package/dist/types/DOMReference.js.map +1 -0
  325. package/dist/types/DataType.d.ts +25 -0
  326. package/dist/types/DataType.js +33 -14
  327. package/dist/types/DataType.js.map +1 -0
  328. package/dist/types/Float.d.ts +17 -0
  329. package/dist/types/Float.js +17 -6
  330. package/dist/types/Float.js.map +1 -0
  331. package/dist/types/Integer.d.ts +17 -0
  332. package/dist/types/Integer.js +17 -5
  333. package/dist/types/Integer.js.map +1 -0
  334. package/dist/types/InvisibleMessageMode.d.ts +25 -0
  335. package/dist/types/InvisibleMessageMode.js +27 -0
  336. package/dist/types/InvisibleMessageMode.js.map +1 -0
  337. package/dist/types/ItemNavigationBehavior.d.ts +24 -0
  338. package/dist/types/ItemNavigationBehavior.js +22 -12
  339. package/dist/types/ItemNavigationBehavior.js.map +1 -0
  340. package/dist/types/NavigationMode.d.ts +32 -0
  341. package/dist/types/NavigationMode.js +33 -6
  342. package/dist/types/NavigationMode.js.map +1 -0
  343. package/dist/types/ValueState.d.ts +42 -0
  344. package/dist/types/ValueState.js +41 -19
  345. package/dist/types/ValueState.js.map +1 -0
  346. package/dist/types.d.ts +18 -0
  347. package/dist/types.js +2 -0
  348. package/dist/types.js.map +1 -0
  349. package/dist/updateShadowRoot.d.ts +8 -0
  350. package/dist/updateShadowRoot.js +32 -16
  351. package/dist/updateShadowRoot.js.map +1 -0
  352. package/dist/util/AriaLabelHelper.d.ts +15 -0
  353. package/dist/util/AriaLabelHelper.js +166 -36
  354. package/dist/util/AriaLabelHelper.js.map +1 -0
  355. package/dist/util/Caret.d.ts +7 -0
  356. package/dist/util/Caret.js +16 -38
  357. package/dist/util/Caret.js.map +1 -0
  358. package/dist/util/ColorConversion.d.ts +30 -0
  359. package/dist/util/ColorConversion.js +315 -348
  360. package/dist/util/ColorConversion.js.map +1 -0
  361. package/dist/util/FetchHelper.d.ts +3 -0
  362. package/dist/util/FetchHelper.js +19 -25
  363. package/dist/util/FetchHelper.js.map +1 -0
  364. package/dist/util/FocusableElements.d.ts +4 -0
  365. package/dist/util/FocusableElements.js +67 -68
  366. package/dist/util/FocusableElements.js.map +1 -0
  367. package/dist/util/HTMLSanitizer.d.ts +3 -0
  368. package/dist/util/HTMLSanitizer.js +6 -0
  369. package/dist/util/HTMLSanitizer.js.map +1 -0
  370. package/dist/util/InvisibleMessage.d.ts +10 -0
  371. package/dist/util/InvisibleMessage.js +56 -0
  372. package/dist/util/InvisibleMessage.js.map +1 -0
  373. package/dist/util/PopupUtils.d.ts +7 -0
  374. package/dist/util/PopupUtils.js +58 -77
  375. package/dist/util/PopupUtils.js.map +1 -0
  376. package/dist/util/SlotsHelper.d.ts +9 -0
  377. package/dist/util/SlotsHelper.js +22 -35
  378. package/dist/util/SlotsHelper.js.map +1 -0
  379. package/dist/util/StringHelper.d.ts +3 -0
  380. package/dist/util/StringHelper.js +17 -20
  381. package/dist/util/StringHelper.js.map +1 -0
  382. package/dist/util/TabbableElements.d.ts +17 -0
  383. package/dist/util/TabbableElements.js +53 -43
  384. package/dist/util/TabbableElements.js.map +1 -0
  385. package/dist/util/arraysAreEqual.d.ts +2 -0
  386. package/dist/util/arraysAreEqual.js +10 -12
  387. package/dist/util/arraysAreEqual.js.map +1 -0
  388. package/{src/util/clamp.js → dist/util/clamp.d.ts} +1 -4
  389. package/dist/util/clamp.js +2 -2
  390. package/dist/util/clamp.js.map +1 -0
  391. package/dist/util/createLinkInHead.d.ts +7 -0
  392. package/dist/util/createLinkInHead.js +21 -0
  393. package/dist/util/createLinkInHead.js.map +1 -0
  394. package/dist/util/createStyleInHead.d.ts +8 -0
  395. package/dist/util/createStyleInHead.js +10 -10
  396. package/dist/util/createStyleInHead.js.map +1 -0
  397. package/dist/util/debounce.d.ts +2 -0
  398. package/dist/util/debounce.js +6 -8
  399. package/dist/util/debounce.js.map +1 -0
  400. package/dist/util/detectNavigatorLanguage.d.ts +2 -0
  401. package/dist/util/detectNavigatorLanguage.js +7 -10
  402. package/dist/util/detectNavigatorLanguage.js.map +1 -0
  403. package/dist/util/escapeRegex.d.ts +8 -0
  404. package/dist/util/escapeRegex.js +11 -0
  405. package/dist/util/escapeRegex.js.map +1 -0
  406. package/dist/util/formatMessage.d.ts +2 -0
  407. package/dist/util/formatMessage.js +15 -19
  408. package/dist/util/formatMessage.js.map +1 -0
  409. package/dist/util/generateHighlightedMarkup.d.ts +9 -0
  410. package/dist/util/generateHighlightedMarkup.js +41 -0
  411. package/dist/util/generateHighlightedMarkup.js.map +1 -0
  412. package/dist/util/getActiveElement.d.ts +2 -0
  413. package/dist/util/getActiveElement.js +6 -8
  414. package/dist/util/getActiveElement.js.map +1 -0
  415. package/dist/util/getClassCopy.d.ts +400 -0
  416. package/dist/util/getClassCopy.js +7 -7
  417. package/dist/util/getClassCopy.js.map +1 -0
  418. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
  419. package/dist/util/getDesigntimePropertyAsArray.js +4 -3
  420. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
  421. package/dist/util/getEffectiveContentDensity.d.ts +2 -0
  422. package/dist/util/getEffectiveContentDensity.js +2 -3
  423. package/dist/util/getEffectiveContentDensity.js.map +1 -0
  424. package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
  425. package/dist/util/getEffectiveScrollbarStyle.js +4 -0
  426. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
  427. package/dist/util/getFastNavigationGroups.d.ts +2 -0
  428. package/dist/util/getFastNavigationGroups.js +51 -0
  429. package/dist/util/getFastNavigationGroups.js.map +1 -0
  430. package/{src/util/getFileExtension.js → dist/util/getFileExtension.d.ts} +3 -12
  431. package/dist/util/getFileExtension.js +9 -11
  432. package/dist/util/getFileExtension.js.map +1 -0
  433. package/dist/util/getNormalizedTarget.d.ts +7 -0
  434. package/dist/util/getNormalizedTarget.js +14 -0
  435. package/dist/util/getNormalizedTarget.js.map +1 -0
  436. package/dist/util/getSingletonElementInstance.d.ts +11 -0
  437. package/dist/util/getSingletonElementInstance.js +17 -11
  438. package/dist/util/getSingletonElementInstance.js.map +1 -0
  439. package/dist/util/isElementClickable.d.ts +2 -0
  440. package/dist/util/isElementClickable.js +16 -0
  441. package/dist/util/isElementClickable.js.map +1 -0
  442. package/dist/util/isElementHidden.d.ts +2 -0
  443. package/dist/util/isElementHidden.js +8 -0
  444. package/dist/util/isElementHidden.js.map +1 -0
  445. package/dist/util/isElementInView.d.ts +6 -0
  446. package/dist/util/isElementInView.js +6 -9
  447. package/dist/util/isElementInView.js.map +1 -0
  448. package/dist/util/isElementTabbable.d.ts +9 -0
  449. package/dist/util/isElementTabbable.js +30 -0
  450. package/dist/util/isElementTabbable.js.map +1 -0
  451. package/dist/util/isValidPropertyName.d.ts +8 -0
  452. package/dist/util/isValidPropertyName.js +16 -17
  453. package/dist/util/isValidPropertyName.js.map +1 -0
  454. package/dist/util/whenDOMReady.d.ts +2 -0
  455. package/dist/util/whenDOMReady.js +11 -10
  456. package/dist/util/whenDOMReady.js.map +1 -0
  457. package/dist/util/willShowContent.d.ts +2 -0
  458. package/dist/util/willShowContent.js +7 -0
  459. package/dist/util/willShowContent.js.map +1 -0
  460. package/dist/validateThemeRoot.d.ts +2 -0
  461. package/dist/validateThemeRoot.js +48 -0
  462. package/dist/validateThemeRoot.js.map +1 -0
  463. package/index.js +228 -2
  464. package/lib/generate-asset-parameters/index.js +11 -6
  465. package/lib/generate-styles/index.js +31 -0
  466. package/lib/generate-version-info/index.js +32 -0
  467. package/package-scripts.cjs +71 -0
  468. package/package.json +19 -9
  469. package/src/css/BusyIndicator.css +80 -0
  470. package/src/css/FontFace.css +84 -0
  471. package/src/css/OverrideFontFace.css +32 -0
  472. package/src/css/SystemCSSVars.css +17 -0
  473. package/src/renderer/directives/style-map.js +72 -0
  474. package/tsconfig.json +14 -0
  475. package/used-modules.txt +10 -0
  476. package/config/rollup.config.js +0 -1
  477. package/config/wdio.conf.js +0 -1
  478. package/dist/RenderScheduler.js +0 -44
  479. package/dist/animations/config.js +0 -5
  480. package/dist/config/AssetsPath.js +0 -17
  481. package/dist/isLegacyBrowser.js +0 -3
  482. package/dist/renderer/ifDefined.js +0 -21
  483. package/dist/renderer/scopeHTML.js +0 -32
  484. package/dist/resources/bundle.esm.js +0 -121
  485. package/dist/resources/bundle.esm.js.map +0 -1
  486. package/dist/test-resources/assets/Themes.js +0 -17
  487. package/dist/test-resources/elements/Child.js +0 -35
  488. package/dist/test-resources/elements/Generic.js +0 -84
  489. package/dist/test-resources/elements/GenericExt.js +0 -26
  490. package/dist/test-resources/elements/NoShadowDOM.js +0 -13
  491. package/dist/test-resources/elements/Parent.js +0 -41
  492. package/dist/test-resources/elements/WithStaticArea.js +0 -76
  493. package/dist/test-resources/pages/AllTestElements.html +0 -39
  494. package/dist/test-resources/pages/Configuration.html +0 -18
  495. package/dist/test-resources/pages/ConfigurationScript.html +0 -34
  496. package/dist/test-resources/pages/assets/messagebundle_de.properties +0 -1
  497. package/dist/test-resources/pages/assets/messagebundle_en.properties +0 -1
  498. package/dist/test-resources/pages/assets/messagebundle_es.properties +0 -1
  499. package/dist/test-resources/pages/assets/messagebundle_fr.properties +0 -1
  500. package/dist/test-resources/pages/i18n.html +0 -35
  501. package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -27
  502. package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -63
  503. package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -47
  504. package/dist/test-resources/specs/CustomTheme.spec.js +0 -27
  505. package/dist/test-resources/specs/StaticArea.spec.js +0 -36
  506. package/dist/test-resources/specs/Theming.spec.js +0 -33
  507. package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -242
  508. package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -98
  509. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -75
  510. package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -42
  511. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -14
  512. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -67
  513. package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -24
  514. package/dist/test-resources/specs/UI5ElementSlots.js +0 -36
  515. package/dist/theming/createThemePropertiesStyleTag.js +0 -20
  516. package/dist/types/PopupState.js +0 -37
  517. package/dist/util/encodeCSS.js +0 -24
  518. package/dist/util/findNodeOwner.js +0 -35
  519. package/dist/util/isDescendantOf.js +0 -15
  520. package/dist/util/isNodeClickable.js +0 -19
  521. package/dist/util/isNodeHidden.js +0 -9
  522. package/dist/util/isNodeTabbable.js +0 -28
  523. package/dist/util/setToArray.js +0 -10
  524. package/hash.txt +0 -1
  525. package/package-scripts.js +0 -43
  526. package/src/Boot.js +0 -43
  527. package/src/CustomElementsRegistry.js +0 -39
  528. package/src/CustomElementsScope.js +0 -108
  529. package/src/DOMObserver.js +0 -65
  530. package/src/Device.js +0 -100
  531. package/src/EventProvider.js +0 -91
  532. package/src/FeaturesRegistry.js +0 -11
  533. package/src/FontFace.js +0 -118
  534. package/src/InitialConfiguration.js +0 -149
  535. package/src/Keys.js +0 -233
  536. package/src/MediaRange.js +0 -109
  537. package/src/PropertiesFileFormat.js +0 -95
  538. package/src/Render.js +0 -173
  539. package/src/RenderQueue.js +0 -66
  540. package/src/RenderScheduler.js +0 -44
  541. package/src/StaticArea.js +0 -3
  542. package/src/StaticAreaItem.js +0 -96
  543. package/src/SystemCSSVars.js +0 -31
  544. package/src/UI5Element.js +0 -1034
  545. package/src/UI5ElementMetadata.js +0 -311
  546. package/src/animations/AnimationQueue.js +0 -42
  547. package/src/animations/animate.js +0 -53
  548. package/src/animations/config.js +0 -5
  549. package/src/animations/scroll.js +0 -28
  550. package/src/animations/slideDown.js +0 -79
  551. package/src/animations/slideUp.js +0 -71
  552. package/src/asset-registries/Icons.js +0 -118
  553. package/src/asset-registries/LocaleData.js +0 -150
  554. package/src/asset-registries/Themes.js +0 -78
  555. package/src/asset-registries/i18n.js +0 -121
  556. package/src/config/AnimationMode.js +0 -23
  557. package/src/config/AssetsPath.js +0 -17
  558. package/src/config/CalendarType.js +0 -18
  559. package/src/config/FormatSettings.js +0 -13
  560. package/src/config/Language.js +0 -68
  561. package/src/config/NoConflict.js +0 -51
  562. package/src/config/RTL.js +0 -31
  563. package/src/config/Theme.js +0 -28
  564. package/src/delegate/ItemNavigation.js +0 -285
  565. package/src/delegate/ResizeHandler.js +0 -106
  566. package/src/delegate/ScrollEnablement.js +0 -182
  567. package/src/features/OpenUI5Support.js +0 -125
  568. package/src/getSharedResource.js +0 -30
  569. package/src/i18nBundle.js +0 -55
  570. package/src/isLegacyBrowser.js +0 -3
  571. package/src/locale/Locale.js +0 -91
  572. package/src/locale/RTLAwareRegistry.js +0 -14
  573. package/src/locale/applyDirection.js +0 -17
  574. package/src/locale/directionChange.js +0 -32
  575. package/src/locale/getEffectiveDir.js +0 -28
  576. package/src/locale/getLocale.js +0 -41
  577. package/src/locale/languageChange.js +0 -22
  578. package/src/locale/nextFallbackLocale.js +0 -28
  579. package/src/locale/normalizeLocale.js +0 -54
  580. package/src/renderer/LitRenderer.js +0 -31
  581. package/src/renderer/executeTemplate.js +0 -17
  582. package/src/renderer/ifDefined.js +0 -21
  583. package/src/renderer/scopeHTML.js +0 -32
  584. package/src/theming/CustomStyle.js +0 -40
  585. package/src/theming/ThemeLoaded.js +0 -22
  586. package/src/theming/applyTheme.js +0 -78
  587. package/src/theming/createThemePropertiesStyleTag.js +0 -20
  588. package/src/theming/getConstructableStyle.js +0 -30
  589. package/src/theming/getEffectiveStyle.js +0 -30
  590. package/src/theming/getStylesString.js +0 -13
  591. package/src/theming/getThemeDesignerTheme.js +0 -67
  592. package/src/thirdparty/_merge.js +0 -32
  593. package/src/thirdparty/isPlainObject.js +0 -18
  594. package/src/thirdparty/merge.js +0 -10
  595. package/src/types/AnimationMode.js +0 -7
  596. package/src/types/CSSColor.js +0 -9
  597. package/src/types/CSSSize.js +0 -9
  598. package/src/types/CalendarType.js +0 -22
  599. package/src/types/DataType.js +0 -25
  600. package/src/types/Float.js +0 -10
  601. package/src/types/Integer.js +0 -9
  602. package/src/types/ItemNavigationBehavior.js +0 -16
  603. package/src/types/NavigationMode.js +0 -7
  604. package/src/types/PopupState.js +0 -37
  605. package/src/types/ValueState.js +0 -22
  606. package/src/updateShadowRoot.js +0 -26
  607. package/src/util/AriaLabelHelper.js +0 -41
  608. package/src/util/Caret.js +0 -45
  609. package/src/util/ColorConversion.js +0 -370
  610. package/src/util/FetchHelper.js +0 -31
  611. package/src/util/FocusableElements.js +0 -73
  612. package/src/util/PopupUtils.js +0 -93
  613. package/src/util/SlotsHelper.js +0 -43
  614. package/src/util/StringHelper.js +0 -26
  615. package/src/util/TabbableElements.js +0 -47
  616. package/src/util/arraysAreEqual.js +0 -15
  617. package/src/util/createStyleInHead.js +0 -18
  618. package/src/util/debounce.js +0 -17
  619. package/src/util/detectNavigatorLanguage.js +0 -13
  620. package/src/util/encodeCSS.js +0 -24
  621. package/src/util/findNodeOwner.js +0 -35
  622. package/src/util/formatMessage.js +0 -23
  623. package/src/util/getActiveElement.js +0 -11
  624. package/src/util/getClassCopy.js +0 -10
  625. package/src/util/getDesigntimePropertyAsArray.js +0 -4
  626. package/src/util/getEffectiveContentDensity.js +0 -5
  627. package/src/util/getSingletonElementInstance.js +0 -13
  628. package/src/util/isDescendantOf.js +0 -15
  629. package/src/util/isElementInView.js +0 -15
  630. package/src/util/isNodeClickable.js +0 -19
  631. package/src/util/isNodeHidden.js +0 -9
  632. package/src/util/isNodeTabbable.js +0 -28
  633. package/src/util/isValidPropertyName.js +0 -29
  634. package/src/util/setToArray.js +0 -10
  635. package/src/util/whenDOMReady.js +0 -13
  636. /package/{config/.eslintrc.js → .eslintrc.cjs} +0 -0
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocaleData.js","sourceRoot":"","sources":["../../src/asset-registries/LocaleData.ts"],"names":[],"mappings":"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","sourcesContent":["import { attachLanguageChange } from \"../locale/languageChange.js\";\nimport getLocale from \"../locale/getLocale.js\";\nimport { DEFAULT_LOCALE, SUPPORTED_LOCALES } from \"../generated/AssetParameters.js\";\nimport { getFeature } from \"../FeaturesRegistry.js\";\nimport type OpenUI5Support from \"../features/OpenUI5Support.js\";\n\ntype LocaleDataLoader = (locale: string) => Promise<CLDRData>;\ntype CLDRData = Record<string, object | boolean | string>;\n\nconst localeDataMap = new Map<string, CLDRData>();\nconst loaders = new Map<string, LocaleDataLoader>();\nconst cldrPromises = new Map<string, Promise<CLDRData>>();\nconst reportedErrors = new Set<string>();\nlet warningShown = false;\n\nconst M_ISO639_OLD_TO_NEW = {\n\t\"iw\": \"he\",\n\t\"ji\": \"yi\",\n\t\"in\": \"id\",\n};\n\nconst _showAssetsWarningOnce = (localeId: string) => {\n\tif (warningShown) {\n\t\treturn;\n\t}\n\n\tconsole.warn(`[LocaleData] Supported locale \"${localeId}\" not configured, import the \"Assets.js\" module from the webcomponents package you are using.`); /* eslint-disable-line */\n\n\twarningShown = true;\n};\n\nconst calcLocale = (language: string, region: string, script: string) => {\n\t// normalize language and handle special cases\n\tlanguage = (language && M_ISO639_OLD_TO_NEW[language as keyof typeof M_ISO639_OLD_TO_NEW]) || language;\n\t// Special case 1: in an SAP context, the inclusive language code \"no\" always means Norwegian Bokmal (\"nb\")\n\tif (language === \"no\") {\n\t\tlanguage = \"nb\";\n\t}\n\t// Special case 2: for Chinese, derive a default region from the script (this behavior is inherited from Java)\n\tif (language === \"zh\" && !region) {\n\t\tif (script === \"Hans\") {\n\t\t\tregion = \"CN\";\n\t\t} else if (script === \"Hant\") {\n\t\t\tregion = \"TW\";\n\t\t}\n\t}\n\n\t// Special case 3: for Serbian, there are cyrillic and latin scripts, \"sh\" and \"sr-latn\" map to \"latin\", \"sr\" maps to cyrillic.\n\tif (language === \"sh\" || (language === \"sr\" && script === \"Latn\")) {\n\t\tlanguage = \"sr\";\n\t\tregion = \"Latn\";\n\t}\n\n\t// try language + region\n\tlet localeId = `${language}_${region}`;\n\tif (SUPPORTED_LOCALES.includes(localeId)) {\n\t\tif (loaders.has(localeId)) {\n\t\t\t// supported and has loader\n\t\t\treturn localeId;\n\t\t}\n\n\t\t// supported, no loader - fallback to default and warn\n\t\t_showAssetsWarningOnce(localeId);\n\t\treturn DEFAULT_LOCALE;\n\t}\n\n\t// not supported, try language only\n\tlocaleId = language;\n\tif (SUPPORTED_LOCALES.includes(localeId)) {\n\t\tif (loaders.has(localeId)) {\n\t\t\t// supported and has loader\n\t\t\treturn localeId;\n\t\t}\n\n\t\t// supported, no loader - fallback to default and warn\n\t\t_showAssetsWarningOnce(localeId);\n\t\treturn DEFAULT_LOCALE;\n\t}\n\n\t// not supported - fallback to default locale\n\treturn DEFAULT_LOCALE;\n};\n\n// internal set data\nconst setLocaleData = (localeId: string, content: CLDRData) => {\n\tlocaleDataMap.set(localeId, content);\n};\n\n// external getSync\nconst getLocaleData = (localeId: string) => {\n\t// if there is no loader, the default fallback was fetched and a warning was given - use default locale instead\n\tif (!loaders.has(localeId)) {\n\t\tlocaleId = DEFAULT_LOCALE;\n\t}\n\n\tconst content = localeDataMap.get(localeId);\n\tif (!content) {\n\t\tthrow new Error(`CLDR data for locale ${localeId} is not loaded!`);\n\t}\n\n\treturn content;\n};\n\n// load bundle over the network once\nconst _loadCldrOnce = (localeId: string) => {\n\tif (!cldrPromises.get(localeId)) {\n\t\tconst loadCldr = loaders.get(localeId);\n\n\t\tif (!loadCldr) {\n\t\t\tthrow new Error(`CLDR data for locale ${localeId} is not loaded!`);\n\t\t}\n\n\t\tcldrPromises.set(localeId, loadCldr(localeId));\n\t}\n\n\treturn cldrPromises.get(localeId);\n};\n\n// external getAsync\nconst fetchCldr = async (language: string, region: string, script: string) => {\n\tconst localeId = calcLocale(language, region, script);\n\n\t// reuse OpenUI5 CLDR if present\n\tconst openUI5Support = getFeature<typeof OpenUI5Support>(\"OpenUI5Support\");\n\tif (openUI5Support) {\n\t\tconst cldrContent = openUI5Support.getLocaleDataObject();\n\t\tif (cldrContent) {\n\t\t\t// only if openui5 actually returned valid content\n\t\t\tsetLocaleData(localeId, cldrContent);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// fetch it\n\ttry {\n\t\tconst cldrContent = await _loadCldrOnce(localeId);\n\t\tsetLocaleData(localeId, cldrContent as CLDRData);\n\t} catch (error: unknown) {\n\t\tconst e = error as Error;\n\t\tif (!reportedErrors.has(e.message)) {\n\t\t\treportedErrors.add(e.message);\n\t\t\tconsole.error(e.message); /* eslint-disable-line */\n\t\t}\n\t}\n};\n\nconst registerLocaleDataLoader = (localeId: string, loader: LocaleDataLoader) => {\n\tloaders.set(localeId, loader);\n};\n\n// register default loader for \"en\" from ui5 CDN (dev workflow without assets)\nregisterLocaleDataLoader(\"en\", async () => {\n\tconst cldrContent = await fetch(`https://sdk.openui5.org/1.103.0/resources/sap/ui/core/cldr/en.json`);\n\treturn cldrContent.json() as Promise<CLDRData>;\n});\n\n// When the language changes dynamically (the user calls setLanguage),\n// re-fetch the required CDRD data.\nattachLanguageChange(() => {\n\tconst locale = getLocale();\n\treturn fetchCldr(locale.getLanguage(), locale.getRegion(), locale.getScript());\n});\n\nexport {\n\tregisterLocaleDataLoader,\n\tfetchCldr,\n\tgetLocaleData,\n};\n\nexport type {\n\tCLDRData,\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import { StyleData, StyleDataCSP } from "../types.js";
2
+ type ThemeData = {
3
+ _: StyleDataCSP;
4
+ } | StyleDataCSP | string;
5
+ type ThemeLoader = (themeName: string) => Promise<ThemeData>;
6
+ declare const registerThemePropertiesLoader: (packageName: string, themeName: string, loader: ThemeLoader) => void;
7
+ declare const getThemeProperties: (packageName: string, themeName: string) => Promise<StyleData | undefined>;
8
+ declare const getRegisteredPackages: () => Set<string>;
9
+ declare const isThemeRegistered: (theme: string) => boolean;
10
+ export { registerThemePropertiesLoader, getThemeProperties, getRegisteredPackages, isThemeRegistered, };
11
+ export type { ThemeData, ThemeLoader, };
@@ -1,78 +1,52 @@
1
1
  import { DEFAULT_THEME } from "../generated/AssetParameters.js";
2
-
2
+ import { fireThemeRegistered } from "../theming/ThemeRegistered.js";
3
3
  const themeStyles = new Map();
4
4
  const loaders = new Map();
5
5
  const registeredPackages = new Set();
6
6
  const registeredThemes = new Set();
7
-
8
- /**
9
- * Used to provide CSS Vars for a specific theme for a specific package.
10
- * The CSS Vars can be passed directly as a string (containing them), as an object with a "_" property(containing them in the "_" property), or as a URL.
11
- * This URL must point to a JSON file, containing a "_" property.
12
- *
13
- * Example usage:
14
- * 1) Pass the CSS Vars as a string directly.
15
- * registerThemeProperties("my-package", "my_theme", ":root{--var1: red;}");
16
- *
17
- * @public
18
- * @param packageName - the NPM package for which CSS Vars are registered
19
- * @param themeName - the theme which the CSS Vars implement
20
- * @param style - the style content directly
21
- * @deprecated
22
- */
23
- const registerThemeProperties = (_packageName, _themeName, _style) => {
24
- throw new Error("`registerThemeProperties` has been depracated. Use `registerThemePropertiesLoader` instead.");
25
- };
26
-
27
7
  const registerThemePropertiesLoader = (packageName, themeName, loader) => {
28
- loaders.set(`${packageName}/${themeName}`, loader);
29
- registeredPackages.add(packageName);
30
- registeredThemes.add(themeName);
8
+ loaders.set(`${packageName}/${themeName}`, loader);
9
+ registeredPackages.add(packageName);
10
+ registeredThemes.add(themeName);
11
+ fireThemeRegistered(themeName);
31
12
  };
32
-
33
13
  const getThemeProperties = async (packageName, themeName) => {
34
- const style = themeStyles.get(`${packageName}_${themeName}`);
35
- if (style !== undefined) { // it's valid for style to be an empty string
36
- return style;
37
- }
38
-
39
- if (!registeredThemes.has(themeName)) {
40
- const regThemesStr = [...registeredThemes.values()].join(", ");
41
- console.warn(`You have requested a non-registered theme - falling back to ${DEFAULT_THEME}. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */
42
- return themeStyles.get(`${packageName}_${DEFAULT_THEME}`);
43
- }
44
-
45
- const loader = loaders.get(`${packageName}/${themeName}`);
46
- if (!loader) {
47
- // no themes for package
48
- console.error(`Theme [${themeName}] not registered for package [${packageName}]`); /* eslint-disable-line */
49
- return;
50
- }
51
- let data;
52
- try {
53
- data = await loader(themeName);
54
- } catch (e) {
55
- console.error(packageName, e.message); /* eslint-disable-line */
56
- return;
57
- }
58
- const themeProps = data._ || data;
59
-
60
- themeStyles.set(`${packageName}_${themeName}`, themeProps);
61
- return themeProps;
14
+ const style = themeStyles.get(`${packageName}_${themeName}`);
15
+ if (style !== undefined) { // it's valid for style to be an empty string
16
+ return style;
17
+ }
18
+ if (!registeredThemes.has(themeName)) {
19
+ const regThemesStr = [...registeredThemes.values()].join(", ");
20
+ console.warn(`You have requested a non-registered theme ${themeName} - falling back to ${DEFAULT_THEME}. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */
21
+ return _getThemeProperties(packageName, DEFAULT_THEME);
22
+ }
23
+ return _getThemeProperties(packageName, themeName);
62
24
  };
63
-
64
- const getRegisteredPackages = () => {
65
- return registeredPackages;
25
+ const _getThemeProperties = async (packageName, themeName) => {
26
+ const loader = loaders.get(`${packageName}/${themeName}`);
27
+ if (!loader) {
28
+ // no themes for package
29
+ console.error(`Theme [${themeName}] not registered for package [${packageName}]`); /* eslint-disable-line */
30
+ return;
31
+ }
32
+ let data;
33
+ try {
34
+ data = await loader(themeName);
35
+ }
36
+ catch (error) {
37
+ const e = error;
38
+ console.error(packageName, e.message); /* eslint-disable-line */
39
+ return;
40
+ }
41
+ const themeProps = data._ || data; // Refactor: remove _ everywhere
42
+ themeStyles.set(`${packageName}_${themeName}`, themeProps);
43
+ return themeProps;
66
44
  };
67
-
68
- const isThemeRegistered = theme => {
69
- return registeredThemes.has(theme);
45
+ const getRegisteredPackages = () => {
46
+ return registeredPackages;
70
47
  };
71
-
72
- export {
73
- registerThemePropertiesLoader,
74
- registerThemeProperties,
75
- getThemeProperties,
76
- getRegisteredPackages,
77
- isThemeRegistered,
48
+ const isThemeRegistered = (theme) => {
49
+ return registeredThemes.has(theme);
78
50
  };
51
+ export { registerThemePropertiesLoader, getThemeProperties, getRegisteredPackages, isThemeRegistered, };
52
+ //# sourceMappingURL=Themes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Themes.js","sourceRoot":"","sources":["../../src/asset-registries/Themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAKpE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;AACjD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;AAC/C,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;AAC7C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;AAE3C,MAAM,6BAA6B,GAAG,CAAC,WAAmB,EAAE,SAAiB,EAAE,MAAmB,EAAE,EAAE;IACrG,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,IAAI,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;IACnD,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACpC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,KAAK,EAAE,WAAmB,EAAE,SAAiB,EAAE,EAAE;IAC3E,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,IAAI,SAAS,EAAE,CAAC,CAAC;IAC7D,IAAI,KAAK,KAAK,SAAS,EAAE,EAAE,6CAA6C;QACvE,OAAO,KAAK,CAAC;KACb;IAED,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QACrC,MAAM,YAAY,GAAG,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,6CAA6C,SAAS,sBAAsB,aAAa,4BAA4B,YAAY,EAAE,CAAC,CAAC,CAAC,yBAAyB;QAC5K,OAAO,mBAAmB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;KACvD;IAED,OAAO,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAAE,WAAmB,EAAE,SAAiB,EAAE,EAAE;IAC5E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,IAAI,SAAS,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,EAAE;QACZ,wBAAwB;QACxB,OAAO,CAAC,KAAK,CAAC,UAAU,SAAS,iCAAiC,WAAW,GAAG,CAAC,CAAC,CAAC,yBAAyB;QAC5G,OAAO;KACP;IACD,IAAI,IAAI,CAAC;IACT,IAAI;QACH,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;KAC/B;IAAC,OAAO,KAAc,EAAE;QACxB,MAAM,CAAC,GAAG,KAAc,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB;QAChE,OAAO;KACP;IACD,MAAM,UAAU,GAAI,IAA0B,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,gCAAgC;IAE1F,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,IAAI,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC;IAC3D,OAAO,UAAU,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,GAAG,EAAE;IAClC,OAAO,kBAAkB,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAE,EAAE;IAC3C,OAAO,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,OAAO,EACN,6BAA6B,EAC7B,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,GACjB,CAAC","sourcesContent":["import { DEFAULT_THEME } from \"../generated/AssetParameters.js\";\nimport { StyleData, StyleDataCSP } from \"../types.js\";\nimport { fireThemeRegistered } from \"../theming/ThemeRegistered.js\";\n\ntype ThemeData = {_: StyleDataCSP } | StyleDataCSP | string;\ntype ThemeLoader = (themeName: string) => Promise<ThemeData>;\n\nconst themeStyles = new Map<string, StyleData>();\nconst loaders = new Map<string, ThemeLoader>();\nconst registeredPackages = new Set<string>();\nconst registeredThemes = new Set<string>();\n\nconst registerThemePropertiesLoader = (packageName: string, themeName: string, loader: ThemeLoader) => {\n\tloaders.set(`${packageName}/${themeName}`, loader);\n\tregisteredPackages.add(packageName);\n\tregisteredThemes.add(themeName);\n\tfireThemeRegistered(themeName);\n};\n\nconst getThemeProperties = async (packageName: string, themeName: string) => {\n\tconst style = themeStyles.get(`${packageName}_${themeName}`);\n\tif (style !== undefined) { // it's valid for style to be an empty string\n\t\treturn style;\n\t}\n\n\tif (!registeredThemes.has(themeName)) {\n\t\tconst regThemesStr = [...registeredThemes.values()].join(\", \");\n\t\tconsole.warn(`You have requested a non-registered theme ${themeName} - falling back to ${DEFAULT_THEME}. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */\n\t\treturn _getThemeProperties(packageName, DEFAULT_THEME);\n\t}\n\n\treturn _getThemeProperties(packageName, themeName);\n};\n\nconst _getThemeProperties = async (packageName: string, themeName: string) => {\n\tconst loader = loaders.get(`${packageName}/${themeName}`);\n\tif (!loader) {\n\t\t// no themes for package\n\t\tconsole.error(`Theme [${themeName}] not registered for package [${packageName}]`); /* eslint-disable-line */\n\t\treturn;\n\t}\n\tlet data;\n\ttry {\n\t\tdata = await loader(themeName);\n\t} catch (error: unknown) {\n\t\tconst e = error as Error;\n\t\tconsole.error(packageName, e.message); /* eslint-disable-line */\n\t\treturn;\n\t}\n\tconst themeProps = (data as {_: StyleDataCSP})._ || data; // Refactor: remove _ everywhere\n\n\tthemeStyles.set(`${packageName}_${themeName}`, themeProps);\n\treturn themeProps;\n};\n\nconst getRegisteredPackages = () => {\n\treturn registeredPackages;\n};\n\nconst isThemeRegistered = (theme: string) => {\n\treturn registeredThemes.has(theme);\n};\n\nexport {\n\tregisterThemePropertiesLoader,\n\tgetThemeProperties,\n\tgetRegisteredPackages,\n\tisThemeRegistered,\n};\n\nexport type {\n\tThemeData,\n\tThemeLoader,\n};\n"]}
@@ -0,0 +1,23 @@
1
+ type I18nLoader = (localeId: string) => Promise<I18nData>;
2
+ type I18nData = Record<string, string>;
3
+ /**
4
+ * Registers i18n loader function for given package and locale.
5
+ *
6
+ * @public
7
+ * @param {string} packageName for which package this loader can fetch data
8
+ * @param {string} localeId locale that this loader can handle
9
+ * @param {function} loader async function that will be passed a localeId and should return a JSON object
10
+ */
11
+ declare const registerI18nLoader: (packageName: string, localeId: string, loader: I18nLoader) => void;
12
+ declare const getI18nBundleData: (packageName: string) => I18nData | null | undefined;
13
+ /**
14
+ * This method preforms the asynchronous task of fetching the actual text resources. It will fetch
15
+ * each text resource over the network once (even for multiple calls to the same method).
16
+ * It should be fully finished before the i18nBundle class is created in the webcomponents.
17
+ * This method uses the bundle URLs that are populated by the <code>registerI18nBundle</code> method.
18
+ * To simplify the usage, the synchronization of both methods happens internally for the same <code>bundleId</code>
19
+ * @param {packageName} packageName the NPM package name
20
+ * @public
21
+ */
22
+ declare const fetchI18nBundle: (packageName: string) => Promise<void>;
23
+ export { registerI18nLoader, fetchI18nBundle, getI18nBundleData, };
@@ -4,68 +4,53 @@ import normalizeLocale from "../locale/normalizeLocale.js";
4
4
  import nextFallbackLocale from "../locale/nextFallbackLocale.js";
5
5
  import { DEFAULT_LANGUAGE } from "../generated/AssetParameters.js";
6
6
  import { getFetchDefaultLanguage } from "../config/Language.js";
7
-
8
7
  // contains package names for which the warning has been shown
9
8
  const warningShown = new Set();
10
9
  const reportedErrors = new Set();
11
-
12
10
  const bundleData = new Map();
13
11
  const bundlePromises = new Map();
14
12
  const loaders = new Map();
15
-
16
13
  /**
14
+ * Registers i18n loader function for given package and locale.
17
15
  *
16
+ * @public
18
17
  * @param {string} packageName for which package this loader can fetch data
18
+ * @param {string} localeId locale that this loader can handle
19
19
  * @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
20
  */
22
21
  const registerI18nLoader = (packageName, localeId, loader) => {
23
- // register loader by key
24
- const bundleKey = `${packageName}/${localeId}`;
25
- loaders.set(bundleKey, loader);
22
+ // register loader by key
23
+ const bundleKey = `${packageName}/${localeId}`;
24
+ loaders.set(bundleKey, loader);
26
25
  };
27
-
28
26
  const _setI18nBundleData = (packageName, data) => {
29
- bundleData.set(packageName, data);
27
+ bundleData.set(packageName, data);
30
28
  };
31
-
32
- const getI18nBundleData = packageName => {
33
- return bundleData.get(packageName);
29
+ const getI18nBundleData = (packageName) => {
30
+ return bundleData.get(packageName);
34
31
  };
35
-
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
32
  const _hasLoader = (packageName, localeId) => {
45
- const bundleKey = `${packageName}/${localeId}`;
46
- return loaders.has(bundleKey);
33
+ const bundleKey = `${packageName}/${localeId}`;
34
+ return loaders.has(bundleKey);
47
35
  };
48
-
49
36
  // load bundle over the network once
50
37
  const _loadMessageBundleOnce = (packageName, localeId) => {
51
- const bundleKey = `${packageName}/${localeId}`;
52
- const loadMessageBundle = loaders.get(bundleKey);
53
-
54
- if (!bundlePromises.get(bundleKey)) {
55
- bundlePromises.set(bundleKey, loadMessageBundle(localeId));
56
- }
57
-
58
- return bundlePromises.get(bundleKey);
38
+ const bundleKey = `${packageName}/${localeId}`;
39
+ const loadMessageBundle = loaders.get(bundleKey);
40
+ if (loadMessageBundle && !bundlePromises.get(bundleKey)) {
41
+ bundlePromises.set(bundleKey, loadMessageBundle(localeId));
42
+ }
43
+ return bundlePromises.get(bundleKey); // Investigate if i18n loader exists and this won't return undefined.
44
+ };
45
+ const _showAssetsWarningOnce = (packageName) => {
46
+ if (!warningShown.has(packageName)) {
47
+ console.warn(`[${packageName}]: Message bundle assets are not configured. Falling back to English texts.`, /* eslint-disable-line */ ` 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 */
48
+ warningShown.add(packageName);
49
+ }
59
50
  };
60
-
61
- const _showAssetsWarningOnce = packageName => {
62
- if (!warningShown.has(packageName)) {
63
- console.warn(`[${packageName}]: Message bundle assets are not configured. Falling back to English texts.`, /* eslint-disable-line */
64
- ` 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 */
65
- warningShown.add(packageName);
66
- }
51
+ const useFallbackBundle = (packageName, localeId) => {
52
+ return localeId !== DEFAULT_LANGUAGE && !_hasLoader(packageName, localeId);
67
53
  };
68
-
69
54
  /**
70
55
  * This method preforms the asynchronous task of fetching the actual text resources. It will fetch
71
56
  * each text resource over the network once (even for multiple calls to the same method).
@@ -75,47 +60,42 @@ const _showAssetsWarningOnce = packageName => {
75
60
  * @param {packageName} packageName the NPM package name
76
61
  * @public
77
62
  */
78
- const fetchI18nBundle = async packageName => {
79
- const language = getLocale().getLanguage();
80
- const region = getLocale().getRegion();
81
- let localeId = normalizeLocale(language + (region ? `-${region}` : ``));
82
-
83
- while (localeId !== DEFAULT_LANGUAGE && !_hasLoader(packageName, localeId)) {
84
- localeId = nextFallbackLocale(localeId);
85
- }
86
-
87
- // use default language unless configured to always fetch it from the network
88
- const fetchDefaultLanguage = getFetchDefaultLanguage();
89
- if (localeId === DEFAULT_LANGUAGE && !fetchDefaultLanguage) {
90
- _setI18nBundleData(packageName, null); // reset for the default language (if data was set for a previous language)
91
- return;
92
- }
93
-
94
- if (!_hasLoader(packageName, localeId)) {
95
- _showAssetsWarningOnce(packageName);
96
- return;
97
- }
98
-
99
- try {
100
- const data = await _loadMessageBundleOnce(packageName, localeId);
101
- _setI18nBundleData(packageName, data);
102
- } catch (e) {
103
- if (!reportedErrors.has(e.message)) {
104
- reportedErrors.add(e.message);
105
- console.error(e.message); /* eslint-disable-line */
106
- }
107
- }
63
+ const fetchI18nBundle = async (packageName) => {
64
+ const language = getLocale().getLanguage();
65
+ const region = getLocale().getRegion();
66
+ let localeId = language + (region ? `-${region}` : ``);
67
+ if (useFallbackBundle(packageName, localeId)) {
68
+ localeId = normalizeLocale(localeId);
69
+ while (useFallbackBundle(packageName, localeId)) {
70
+ localeId = nextFallbackLocale(localeId);
71
+ }
72
+ }
73
+ // use default language unless configured to always fetch it from the network
74
+ const fetchDefaultLanguage = getFetchDefaultLanguage();
75
+ if (localeId === DEFAULT_LANGUAGE && !fetchDefaultLanguage) {
76
+ _setI18nBundleData(packageName, null); // reset for the default language (if data was set for a previous language)
77
+ return;
78
+ }
79
+ if (!_hasLoader(packageName, localeId)) {
80
+ _showAssetsWarningOnce(packageName);
81
+ return;
82
+ }
83
+ try {
84
+ const data = await _loadMessageBundleOnce(packageName, localeId);
85
+ _setI18nBundleData(packageName, data);
86
+ }
87
+ catch (error) {
88
+ const e = error;
89
+ if (!reportedErrors.has(e.message)) {
90
+ reportedErrors.add(e.message);
91
+ console.error(e.message); /* eslint-disable-line */
92
+ }
93
+ }
108
94
  };
109
-
110
95
  // When the language changes dynamically (the user calls setLanguage), re-fetch all previously fetched bundles
111
- attachLanguageChange(() => {
112
- const allPackages = [...bundleData.keys()];
113
- return Promise.all(allPackages.map(fetchI18nBundle));
96
+ attachLanguageChange((lang /* eslint-disable-line */) => {
97
+ const allPackages = [...bundleData.keys()];
98
+ return Promise.all(allPackages.map(fetchI18nBundle));
114
99
  });
115
-
116
- export {
117
- registerI18nLoader,
118
- fetchI18nBundle,
119
- registerI18nBundle,
120
- getI18nBundleData,
121
- };
100
+ export { registerI18nLoader, fetchI18nBundle, getI18nBundleData, };
101
+ //# sourceMappingURL=i18n.js.map