@ui5/webcomponents-base 0.0.0-dcd8e5389 → 0.0.0-dd5d66a9a

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 (918) hide show
  1. package/CHANGELOG.md +2079 -0
  2. package/README.md +10 -16
  3. package/cypress.config.js +3 -0
  4. package/dist/.tsbuildinfobuild +1 -0
  5. package/dist/AssetRegistry.d.ts +2 -2
  6. package/dist/AssetRegistry.js +2 -2
  7. package/dist/AssetRegistry.js.map +1 -1
  8. package/dist/Assets-fetch.d.ts +1 -0
  9. package/dist/Assets-fetch.js +3 -0
  10. package/dist/Assets-fetch.js.map +1 -0
  11. package/dist/Assets-node.d.ts +12 -0
  12. package/dist/Assets-node.js +14 -0
  13. package/dist/Assets-node.js.map +1 -0
  14. package/dist/Assets.d.ts +1 -0
  15. package/dist/Assets.js +3 -0
  16. package/dist/Assets.js.map +1 -0
  17. package/dist/Boot.d.ts +3 -2
  18. package/dist/Boot.js +14 -8
  19. package/dist/Boot.js.map +1 -1
  20. package/dist/CustomElementsRegistry.d.ts +2 -1
  21. package/dist/CustomElementsRegistry.js +5 -2
  22. package/dist/CustomElementsRegistry.js.map +1 -1
  23. package/dist/CustomElementsScope.d.ts +4 -4
  24. package/dist/CustomElementsScope.js +2 -2
  25. package/dist/CustomElementsScope.js.map +1 -1
  26. package/dist/CustomElementsScopeUtils.d.ts +12 -3
  27. package/dist/CustomElementsScopeUtils.js +21 -2
  28. package/dist/CustomElementsScopeUtils.js.map +1 -1
  29. package/dist/DOMObserver.js.map +1 -1
  30. package/dist/Device.d.ts +17 -2
  31. package/dist/Device.js +19 -14
  32. package/dist/Device.js.map +1 -1
  33. package/dist/DragAndDrop.d.ts +2 -0
  34. package/dist/DragAndDrop.js +5 -0
  35. package/dist/DragAndDrop.js.map +1 -0
  36. package/dist/EventProvider.js +1 -1
  37. package/dist/EventProvider.js.map +1 -1
  38. package/dist/FontFace.js +6 -9
  39. package/dist/FontFace.js.map +1 -1
  40. package/dist/IgnoreCustomElements.d.ts +25 -0
  41. package/dist/IgnoreCustomElements.js +37 -0
  42. package/dist/IgnoreCustomElements.js.map +1 -0
  43. package/dist/InitialConfiguration.d.ts +10 -3
  44. package/dist/InitialConfiguration.js +39 -9
  45. package/dist/InitialConfiguration.js.map +1 -1
  46. package/dist/Keys.d.ts +11 -1
  47. package/dist/Keys.js +117 -106
  48. package/dist/Keys.js.map +1 -1
  49. package/dist/Location.d.ts +11 -0
  50. package/dist/Location.js +49 -0
  51. package/dist/Location.js.map +1 -0
  52. package/dist/ManagedStyles.d.ts +5 -6
  53. package/dist/ManagedStyles.js +45 -53
  54. package/dist/ManagedStyles.js.map +1 -1
  55. package/dist/MediaRange.d.ts +6 -12
  56. package/dist/MediaRange.js +21 -31
  57. package/dist/MediaRange.js.map +1 -1
  58. package/dist/PropertiesFileFormat.js.map +1 -1
  59. package/dist/Render.js.map +1 -1
  60. package/dist/RenderQueue.js.map +1 -1
  61. package/dist/Runtimes.js +11 -0
  62. package/dist/Runtimes.js.map +1 -1
  63. package/dist/ScrollbarStyles.d.ts +2 -0
  64. package/dist/ScrollbarStyles.js +9 -0
  65. package/dist/ScrollbarStyles.js.map +1 -0
  66. package/dist/SystemCSSVars.js.map +1 -1
  67. package/dist/UI5Element.d.ts +121 -76
  68. package/dist/UI5Element.js +408 -234
  69. package/dist/UI5Element.js.map +1 -1
  70. package/dist/UI5ElementMetadata.d.ts +36 -27
  71. package/dist/UI5ElementMetadata.js +27 -72
  72. package/dist/UI5ElementMetadata.js.map +1 -1
  73. package/dist/animations/AnimationQueue.js.map +1 -1
  74. package/dist/animations/animate.js.map +1 -1
  75. package/dist/animations/slideUp.js.map +1 -1
  76. package/dist/asset-registries/Icons.d.ts +45 -10
  77. package/dist/asset-registries/Icons.js +79 -25
  78. package/dist/asset-registries/Icons.js.map +1 -1
  79. package/dist/asset-registries/Illustrations.d.ts +2 -0
  80. package/dist/asset-registries/Illustrations.js +51 -20
  81. package/dist/asset-registries/Illustrations.js.map +1 -1
  82. package/dist/asset-registries/LocaleData.js +1 -1
  83. package/dist/asset-registries/LocaleData.js.map +1 -1
  84. package/dist/asset-registries/Themes.d.ts +5 -7
  85. package/dist/asset-registries/Themes.js +27 -12
  86. package/dist/asset-registries/Themes.js.map +1 -1
  87. package/dist/asset-registries/i18n.d.ts +2 -2
  88. package/dist/asset-registries/i18n.js +4 -3
  89. package/dist/asset-registries/i18n.js.map +1 -1
  90. package/dist/{assets-meta → asset-registries/util}/IconCollectionsAlias.d.ts +1 -2
  91. package/dist/{assets-meta → asset-registries/util}/IconCollectionsAlias.js +1 -2
  92. package/dist/asset-registries/util/IconCollectionsAlias.js.map +1 -0
  93. package/dist/asset-registries/util/IconCollectionsByTheme.d.ts +20 -0
  94. package/dist/asset-registries/util/IconCollectionsByTheme.js +42 -0
  95. package/dist/asset-registries/util/IconCollectionsByTheme.js.map +1 -0
  96. package/dist/asset-registries/util/getIconCollectionByTheme.d.ts +13 -0
  97. package/dist/asset-registries/util/getIconCollectionByTheme.js +29 -0
  98. package/dist/asset-registries/util/getIconCollectionByTheme.js.map +1 -0
  99. package/dist/config/AnimationMode.d.ts +2 -2
  100. package/dist/config/AnimationMode.js +6 -1
  101. package/dist/config/AnimationMode.js.map +1 -1
  102. package/dist/config/CalendarType.d.ts +8 -1
  103. package/dist/config/CalendarType.js +23 -2
  104. package/dist/config/CalendarType.js.map +1 -1
  105. package/dist/config/ConfigurationReset.d.ts +4 -0
  106. package/dist/config/ConfigurationReset.js +11 -0
  107. package/dist/config/ConfigurationReset.js.map +1 -0
  108. package/dist/config/Fonts.d.ts +16 -0
  109. package/dist/config/Fonts.js +30 -0
  110. package/dist/config/Fonts.js.map +1 -0
  111. package/dist/config/FormatSettings.js +4 -0
  112. package/dist/config/FormatSettings.js.map +1 -1
  113. package/dist/config/Icons.d.ts +9 -24
  114. package/dist/config/Icons.js +8 -67
  115. package/dist/config/Icons.js.map +1 -1
  116. package/dist/config/Language.d.ts +3 -2
  117. package/dist/config/Language.js +23 -4
  118. package/dist/config/Language.js.map +1 -1
  119. package/dist/config/NoConflict.js +4 -0
  120. package/dist/config/NoConflict.js.map +1 -1
  121. package/dist/config/Theme.d.ts +4 -3
  122. package/dist/config/Theme.js +18 -8
  123. package/dist/config/Theme.js.map +1 -1
  124. package/dist/config/ThemeRoot.d.ts +29 -0
  125. package/dist/config/ThemeRoot.js +63 -0
  126. package/dist/config/ThemeRoot.js.map +1 -0
  127. package/dist/config/Timezone.d.ts +1 -1
  128. package/dist/config/Timezone.js +5 -1
  129. package/dist/config/Timezone.js.map +1 -1
  130. package/dist/config/Tooltips.d.ts +19 -0
  131. package/dist/config/Tooltips.js +29 -0
  132. package/dist/config/Tooltips.js.map +1 -0
  133. package/dist/connectToComponent.d.ts +9 -0
  134. package/dist/connectToComponent.js +59 -0
  135. package/dist/connectToComponent.js.map +1 -0
  136. package/dist/converters/DOMReference.d.ts +5 -0
  137. package/dist/converters/DOMReference.js +13 -0
  138. package/dist/converters/DOMReference.js.map +1 -0
  139. package/dist/css/MultipleDragGhost.css +17 -0
  140. package/dist/css/OpenUI5PopupStyles.css +5 -0
  141. package/dist/css/ScrollbarStyles.css +3 -0
  142. package/dist/css/SystemCSSVars.css +0 -8
  143. package/dist/custom-elements-internal.json +2854 -0
  144. package/dist/custom-elements.json +2551 -0
  145. package/dist/decorators/bound.d.ts +1 -0
  146. package/dist/decorators/bound.js +34 -0
  147. package/dist/decorators/bound.js.map +1 -0
  148. package/dist/decorators/customElement.d.ts +43 -3
  149. package/dist/decorators/customElement.js +14 -6
  150. package/dist/decorators/customElement.js.map +1 -1
  151. package/dist/decorators/event-strict.d.ts +15 -0
  152. package/dist/decorators/event-strict.js +26 -0
  153. package/dist/decorators/event-strict.js.map +1 -0
  154. package/dist/decorators/event.d.ts +8 -2
  155. package/dist/decorators/event.js +3 -0
  156. package/dist/decorators/event.js.map +1 -1
  157. package/dist/decorators/i18n.d.ts +17 -0
  158. package/dist/decorators/i18n.js +32 -0
  159. package/dist/decorators/i18n.js.map +1 -0
  160. package/dist/decorators/property.d.ts +1 -1
  161. package/dist/decorators/property.js +1 -1
  162. package/dist/decorators/property.js.map +1 -1
  163. package/dist/decorators/query.d.ts +25 -0
  164. package/dist/decorators/query.js +32 -0
  165. package/dist/decorators/query.js.map +1 -0
  166. package/dist/decorators/queryAll.d.ts +27 -0
  167. package/dist/decorators/queryAll.js +34 -0
  168. package/dist/decorators/queryAll.js.map +1 -0
  169. package/dist/decorators/slot.d.ts +1 -1
  170. package/dist/decorators/slot.js.map +1 -1
  171. package/dist/decorators.d.ts +8 -0
  172. package/dist/decorators.js +9 -0
  173. package/dist/decorators.js.map +1 -0
  174. package/dist/delegate/ItemNavigation.d.ts +9 -8
  175. package/dist/delegate/ItemNavigation.js +13 -14
  176. package/dist/delegate/ItemNavigation.js.map +1 -1
  177. package/dist/delegate/ResizeHandler.d.ts +4 -6
  178. package/dist/delegate/ResizeHandler.js +4 -6
  179. package/dist/delegate/ResizeHandler.js.map +1 -1
  180. package/dist/delegate/ScrollEnablement.js +2 -2
  181. package/dist/delegate/ScrollEnablement.js.map +1 -1
  182. package/dist/features/F6Navigation.d.ts +4 -3
  183. package/dist/features/F6Navigation.js +62 -19
  184. package/dist/features/F6Navigation.js.map +1 -1
  185. package/dist/features/InputElementsFormSupport.d.ts +15 -0
  186. package/dist/features/InputElementsFormSupport.js +39 -0
  187. package/dist/features/InputElementsFormSupport.js.map +1 -0
  188. package/dist/features/LegacyDateFormats.js.map +1 -1
  189. package/dist/features/OpenUI5Enablement.d.ts +3 -3
  190. package/dist/features/OpenUI5Enablement.js.map +1 -1
  191. package/dist/features/OpenUI5Support.d.ts +19 -6
  192. package/dist/features/OpenUI5Support.js +103 -46
  193. package/dist/features/OpenUI5Support.js.map +1 -1
  194. package/dist/features/insertOpenUI5PopupStyles.d.ts +2 -0
  195. package/dist/features/insertOpenUI5PopupStyles.js +9 -0
  196. package/dist/features/insertOpenUI5PopupStyles.js.map +1 -0
  197. package/dist/features/patchPatcher.d.ts +11 -0
  198. package/dist/features/patchPatcher.js +11 -0
  199. package/dist/features/patchPatcher.js.map +1 -0
  200. package/dist/features/patchPopup.d.ts +22 -0
  201. package/dist/features/patchPopup.js +110 -0
  202. package/dist/features/patchPopup.js.map +1 -0
  203. package/dist/generated/AssetParameters.d.ts +6 -0
  204. package/dist/generated/AssetParameters.js +3 -10
  205. package/dist/generated/AssetParameters.js.map +1 -0
  206. package/dist/generated/VersionInfo.d.ts +10 -0
  207. package/dist/generated/VersionInfo.js +9 -8
  208. package/dist/generated/VersionInfo.js.map +1 -0
  209. package/dist/generated/assets/i18n/messagebundle_en.json +1 -0
  210. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -0
  211. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -0
  212. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -0
  213. package/dist/generated/css/BusyIndicator.css.d.ts +2 -3
  214. package/dist/generated/css/BusyIndicator.css.js +1 -6
  215. package/dist/generated/css/BusyIndicator.css.js.map +1 -1
  216. package/dist/generated/css/FontFace.css.d.ts +2 -3
  217. package/dist/generated/css/FontFace.css.js +36 -6
  218. package/dist/generated/css/FontFace.css.js.map +1 -1
  219. package/dist/generated/css/MultipleDragGhost.css.d.ts +2 -0
  220. package/dist/generated/css/MultipleDragGhost.css.js +2 -0
  221. package/dist/generated/css/MultipleDragGhost.css.js.map +1 -0
  222. package/dist/generated/css/OpenUI5PopupStyles.css.d.ts +2 -0
  223. package/dist/generated/css/OpenUI5PopupStyles.css.js +2 -0
  224. package/dist/generated/css/OpenUI5PopupStyles.css.js.map +1 -0
  225. package/dist/generated/css/ScrollbarStyles.css.d.ts +2 -0
  226. package/dist/generated/css/ScrollbarStyles.css.js +2 -0
  227. package/dist/generated/css/ScrollbarStyles.css.js.map +1 -0
  228. package/dist/generated/css/SystemCSSVars.css.d.ts +2 -3
  229. package/dist/generated/css/SystemCSSVars.css.js +1 -6
  230. package/dist/generated/css/SystemCSSVars.css.js.map +1 -1
  231. package/dist/generated/i18n/i18n-defaults.d.ts +3 -0
  232. package/dist/generated/i18n/i18n-defaults.js +3 -0
  233. package/dist/generated/i18n/i18n-defaults.js.map +1 -0
  234. package/dist/generated/json-imports/i18n-fetch.d.ts +1 -0
  235. package/dist/generated/json-imports/i18n-fetch.js +26 -0
  236. package/dist/generated/json-imports/i18n-fetch.js.map +1 -0
  237. package/dist/generated/json-imports/i18n-node.d.ts +1 -0
  238. package/dist/generated/json-imports/i18n-node.js +26 -0
  239. package/dist/generated/json-imports/i18n-node.js.map +1 -0
  240. package/dist/generated/json-imports/i18n.d.ts +1 -0
  241. package/dist/generated/json-imports/i18n.js +26 -0
  242. package/dist/generated/json-imports/i18n.js.map +1 -0
  243. package/dist/getSharedResource.js +7 -1
  244. package/dist/getSharedResource.js.map +1 -1
  245. package/dist/i18nBundle.d.ts +2 -4
  246. package/dist/i18nBundle.js +3 -5
  247. package/dist/i18nBundle.js.map +1 -1
  248. package/dist/index.d.ts +49 -0
  249. package/dist/index.js +91 -0
  250. package/dist/index.js.map +1 -0
  251. package/dist/jsx-dev-runtime.d.ts +4 -0
  252. package/dist/jsx-dev-runtime.js +43 -0
  253. package/dist/jsx-dev-runtime.js.map +1 -0
  254. package/dist/jsx-runtime.d.ts +51 -0
  255. package/dist/jsx-runtime.js +27 -0
  256. package/dist/jsx-runtime.js.map +1 -0
  257. package/dist/jsx-utils.d.ts +3 -0
  258. package/dist/jsx-utils.js +48 -0
  259. package/dist/jsx-utils.js.map +1 -0
  260. package/dist/locale/Locale.js.map +1 -1
  261. package/dist/locale/RTLAwareRegistry.d.ts +1 -1
  262. package/dist/locale/RTLAwareRegistry.js.map +1 -1
  263. package/dist/locale/applyDirection.d.ts +3 -2
  264. package/dist/locale/applyDirection.js +3 -2
  265. package/dist/locale/applyDirection.js.map +1 -1
  266. package/dist/locale/getEffectiveDir.d.ts +1 -1
  267. package/dist/locale/getEffectiveDir.js +3 -19
  268. package/dist/locale/getEffectiveDir.js.map +1 -1
  269. package/dist/locale/getLocale.js.map +1 -1
  270. package/dist/locale/nextFallbackLocale.js +6 -2
  271. package/dist/locale/nextFallbackLocale.js.map +1 -1
  272. package/dist/locale/normalizeLocale.js.map +1 -1
  273. package/dist/prod/AssetRegistry.js +2 -0
  274. package/dist/prod/AssetRegistry.js.map +7 -0
  275. package/dist/prod/Assets-fetch.js +2 -0
  276. package/dist/prod/Assets-fetch.js.map +7 -0
  277. package/dist/prod/Assets-node.js +2 -0
  278. package/dist/prod/Assets-node.js.map +7 -0
  279. package/dist/prod/Assets.js +2 -0
  280. package/dist/prod/Assets.js.map +7 -0
  281. package/dist/prod/Boot.js +2 -0
  282. package/dist/prod/Boot.js.map +7 -0
  283. package/dist/prod/CustomElementsRegistry.js +10 -0
  284. package/dist/prod/CustomElementsRegistry.js.map +7 -0
  285. package/dist/prod/CustomElementsScope.js +2 -0
  286. package/dist/prod/CustomElementsScope.js.map +7 -0
  287. package/dist/prod/CustomElementsScopeUtils.js +2 -0
  288. package/dist/prod/CustomElementsScopeUtils.js.map +7 -0
  289. package/dist/prod/DOMObserver.js +2 -0
  290. package/dist/prod/DOMObserver.js.map +7 -0
  291. package/dist/prod/Device.js +2 -0
  292. package/dist/prod/Device.js.map +7 -0
  293. package/dist/prod/DragAndDrop.js +2 -0
  294. package/dist/prod/DragAndDrop.js.map +7 -0
  295. package/dist/prod/EventProvider.js +2 -0
  296. package/dist/prod/EventProvider.js.map +7 -0
  297. package/dist/prod/FeaturesRegistry.js +2 -0
  298. package/dist/prod/FeaturesRegistry.js.map +7 -0
  299. package/dist/prod/FontFace.js +2 -0
  300. package/dist/prod/FontFace.js.map +7 -0
  301. package/dist/prod/IgnoreCustomElements.js +2 -0
  302. package/dist/prod/IgnoreCustomElements.js.map +7 -0
  303. package/dist/prod/InitialConfiguration.js +2 -0
  304. package/dist/prod/InitialConfiguration.js.map +7 -0
  305. package/dist/prod/Keys.js +2 -0
  306. package/dist/prod/Keys.js.map +7 -0
  307. package/dist/prod/Location.js +2 -0
  308. package/dist/prod/Location.js.map +7 -0
  309. package/dist/prod/ManagedStyles.js +2 -0
  310. package/dist/prod/ManagedStyles.js.map +7 -0
  311. package/dist/prod/MediaRange.js +2 -0
  312. package/dist/prod/MediaRange.js.map +7 -0
  313. package/dist/prod/PropertiesFileFormat.js +3 -0
  314. package/dist/prod/PropertiesFileFormat.js.map +7 -0
  315. package/dist/prod/Render.js +2 -0
  316. package/dist/prod/Render.js.map +7 -0
  317. package/dist/prod/RenderQueue.js +2 -0
  318. package/dist/prod/RenderQueue.js.map +7 -0
  319. package/dist/prod/Runtimes.js +2 -0
  320. package/dist/prod/Runtimes.js.map +7 -0
  321. package/dist/prod/ScrollbarStyles.js +2 -0
  322. package/dist/prod/ScrollbarStyles.js.map +7 -0
  323. package/dist/prod/SystemCSSVars.js +2 -0
  324. package/dist/prod/SystemCSSVars.js.map +7 -0
  325. package/dist/prod/Theming.js +2 -0
  326. package/dist/prod/Theming.js.map +7 -0
  327. package/dist/prod/UI5Element.js +2 -0
  328. package/dist/prod/UI5Element.js.map +7 -0
  329. package/dist/prod/UI5ElementMetadata.js +2 -0
  330. package/dist/prod/UI5ElementMetadata.js.map +7 -0
  331. package/dist/prod/animations/AnimationQueue.js +2 -0
  332. package/dist/prod/animations/AnimationQueue.js.map +7 -0
  333. package/dist/prod/animations/animate.js +2 -0
  334. package/dist/prod/animations/animate.js.map +7 -0
  335. package/dist/prod/animations/scroll.js +2 -0
  336. package/dist/prod/animations/scroll.js.map +7 -0
  337. package/dist/prod/animations/slideDown.js +2 -0
  338. package/dist/prod/animations/slideDown.js.map +7 -0
  339. package/dist/prod/animations/slideUp.js +2 -0
  340. package/dist/prod/animations/slideUp.js.map +7 -0
  341. package/dist/prod/asset-registries/Icons.js +2 -0
  342. package/dist/prod/asset-registries/Icons.js.map +7 -0
  343. package/dist/prod/asset-registries/Illustrations.js +2 -0
  344. package/dist/prod/asset-registries/Illustrations.js.map +7 -0
  345. package/dist/prod/asset-registries/LocaleData.js +2 -0
  346. package/dist/prod/asset-registries/LocaleData.js.map +7 -0
  347. package/dist/prod/asset-registries/Themes.js +2 -0
  348. package/dist/prod/asset-registries/Themes.js.map +7 -0
  349. package/dist/prod/asset-registries/i18n.js +2 -0
  350. package/dist/prod/asset-registries/i18n.js.map +7 -0
  351. package/dist/prod/asset-registries/util/IconCollectionsAlias.js +2 -0
  352. package/dist/prod/asset-registries/util/IconCollectionsAlias.js.map +7 -0
  353. package/dist/prod/asset-registries/util/IconCollectionsByTheme.js +2 -0
  354. package/dist/prod/asset-registries/util/IconCollectionsByTheme.js.map +7 -0
  355. package/dist/prod/asset-registries/util/getIconCollectionByTheme.js +2 -0
  356. package/dist/prod/asset-registries/util/getIconCollectionByTheme.js.map +7 -0
  357. package/dist/prod/config/AnimationMode.js +2 -0
  358. package/dist/prod/config/AnimationMode.js.map +7 -0
  359. package/dist/prod/config/CalendarType.js +2 -0
  360. package/dist/prod/config/CalendarType.js.map +7 -0
  361. package/dist/prod/config/ConfigurationReset.js +2 -0
  362. package/dist/prod/config/ConfigurationReset.js.map +7 -0
  363. package/dist/prod/config/Fonts.js +2 -0
  364. package/dist/prod/config/Fonts.js.map +7 -0
  365. package/dist/prod/config/FormatSettings.js +2 -0
  366. package/dist/prod/config/FormatSettings.js.map +7 -0
  367. package/dist/prod/config/Icons.js +2 -0
  368. package/dist/prod/config/Icons.js.map +7 -0
  369. package/dist/prod/config/Language.js +2 -0
  370. package/dist/prod/config/Language.js.map +7 -0
  371. package/dist/prod/config/NoConflict.js +2 -0
  372. package/dist/prod/config/NoConflict.js.map +7 -0
  373. package/dist/prod/config/Theme.js +2 -0
  374. package/dist/prod/config/Theme.js.map +7 -0
  375. package/dist/prod/config/ThemeRoot.js +2 -0
  376. package/dist/prod/config/ThemeRoot.js.map +7 -0
  377. package/dist/prod/config/Timezone.js +2 -0
  378. package/dist/prod/config/Timezone.js.map +7 -0
  379. package/dist/prod/config/Tooltips.js +2 -0
  380. package/dist/prod/config/Tooltips.js.map +7 -0
  381. package/dist/prod/connectToComponent.js +2 -0
  382. package/dist/prod/connectToComponent.js.map +7 -0
  383. package/dist/prod/converters/DOMReference.js +2 -0
  384. package/dist/prod/converters/DOMReference.js.map +7 -0
  385. package/dist/prod/decorators/bound.js +2 -0
  386. package/dist/prod/decorators/bound.js.map +7 -0
  387. package/dist/prod/decorators/customElement.js +2 -0
  388. package/dist/prod/decorators/customElement.js.map +7 -0
  389. package/dist/prod/decorators/event-strict.js +2 -0
  390. package/dist/prod/decorators/event-strict.js.map +7 -0
  391. package/dist/prod/decorators/event.js +2 -0
  392. package/dist/prod/decorators/event.js.map +7 -0
  393. package/dist/prod/decorators/i18n.js +2 -0
  394. package/dist/prod/decorators/i18n.js.map +7 -0
  395. package/dist/prod/decorators/property.js +2 -0
  396. package/dist/prod/decorators/property.js.map +7 -0
  397. package/dist/prod/decorators/query.js +2 -0
  398. package/dist/prod/decorators/query.js.map +7 -0
  399. package/dist/prod/decorators/queryAll.js +2 -0
  400. package/dist/prod/decorators/queryAll.js.map +7 -0
  401. package/dist/prod/decorators/slot.js +2 -0
  402. package/dist/prod/decorators/slot.js.map +7 -0
  403. package/dist/prod/decorators.js +2 -0
  404. package/dist/prod/decorators.js.map +7 -0
  405. package/dist/prod/delegate/ItemNavigation.js +2 -0
  406. package/dist/prod/delegate/ItemNavigation.js.map +7 -0
  407. package/dist/prod/delegate/ResizeHandler.js +2 -0
  408. package/dist/prod/delegate/ResizeHandler.js.map +7 -0
  409. package/dist/prod/delegate/ScrollEnablement.js +2 -0
  410. package/dist/prod/delegate/ScrollEnablement.js.map +7 -0
  411. package/dist/prod/features/F6Navigation.js +2 -0
  412. package/dist/prod/features/F6Navigation.js.map +7 -0
  413. package/dist/prod/features/InputElementsFormSupport.js +2 -0
  414. package/dist/prod/features/InputElementsFormSupport.js.map +7 -0
  415. package/dist/prod/features/LegacyDateFormats.js +2 -0
  416. package/dist/prod/features/LegacyDateFormats.js.map +7 -0
  417. package/dist/prod/features/OpenUI5Element.js +2 -0
  418. package/dist/prod/features/OpenUI5Element.js.map +7 -0
  419. package/dist/prod/features/OpenUI5Enablement.js +21 -0
  420. package/dist/prod/features/OpenUI5Enablement.js.map +7 -0
  421. package/dist/prod/features/OpenUI5Support.js +2 -0
  422. package/dist/prod/features/OpenUI5Support.js.map +7 -0
  423. package/dist/prod/features/insertOpenUI5PopupStyles.js +2 -0
  424. package/dist/prod/features/insertOpenUI5PopupStyles.js.map +7 -0
  425. package/dist/prod/features/patchPatcher.js +2 -0
  426. package/dist/prod/features/patchPatcher.js.map +7 -0
  427. package/dist/prod/features/patchPopup.js +2 -0
  428. package/dist/prod/features/patchPopup.js.map +7 -0
  429. package/dist/prod/generated/AssetParameters.js +2 -0
  430. package/dist/prod/generated/AssetParameters.js.map +7 -0
  431. package/dist/prod/generated/VersionInfo.js +2 -0
  432. package/dist/prod/generated/VersionInfo.js.map +7 -0
  433. package/dist/prod/generated/assets/i18n/messagebundle_en.json +1 -0
  434. package/dist/prod/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -0
  435. package/dist/prod/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -0
  436. package/dist/prod/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -0
  437. package/dist/prod/generated/css/BusyIndicator.css.js +2 -0
  438. package/dist/prod/generated/css/BusyIndicator.css.js.map +7 -0
  439. package/dist/prod/generated/css/FontFace.css.js +37 -0
  440. package/dist/prod/generated/css/FontFace.css.js.map +7 -0
  441. package/dist/prod/generated/css/MultipleDragGhost.css.js +2 -0
  442. package/dist/prod/generated/css/MultipleDragGhost.css.js.map +7 -0
  443. package/dist/prod/generated/css/OpenUI5PopupStyles.css.js +2 -0
  444. package/dist/prod/generated/css/OpenUI5PopupStyles.css.js.map +7 -0
  445. package/dist/prod/generated/css/ScrollbarStyles.css.js +2 -0
  446. package/dist/prod/generated/css/ScrollbarStyles.css.js.map +7 -0
  447. package/dist/prod/generated/css/SystemCSSVars.css.js +2 -0
  448. package/dist/prod/generated/css/SystemCSSVars.css.js.map +7 -0
  449. package/dist/prod/generated/i18n/i18n-defaults.js +2 -0
  450. package/dist/prod/generated/i18n/i18n-defaults.js.map +7 -0
  451. package/dist/prod/generated/json-imports/i18n-fetch.js +2 -0
  452. package/dist/prod/generated/json-imports/i18n-fetch.js.map +7 -0
  453. package/dist/prod/generated/json-imports/i18n-node.js +2 -0
  454. package/dist/prod/generated/json-imports/i18n-node.js.map +7 -0
  455. package/dist/prod/generated/json-imports/i18n.js +2 -0
  456. package/dist/prod/generated/json-imports/i18n.js.map +7 -0
  457. package/dist/prod/getSharedResource.js +2 -0
  458. package/dist/prod/getSharedResource.js.map +7 -0
  459. package/dist/prod/global.d.js +2 -0
  460. package/dist/prod/global.d.js.map +7 -0
  461. package/dist/prod/i18nBundle.js +2 -0
  462. package/dist/prod/i18nBundle.js.map +7 -0
  463. package/dist/prod/index.js +2 -0
  464. package/dist/prod/index.js.map +7 -0
  465. package/dist/prod/jsx-dev-runtime.js +2 -0
  466. package/dist/prod/jsx-dev-runtime.js.map +7 -0
  467. package/dist/prod/jsx-runtime.js +2 -0
  468. package/dist/prod/jsx-runtime.js.map +7 -0
  469. package/dist/prod/jsx-utils.js +2 -0
  470. package/dist/prod/jsx-utils.js.map +7 -0
  471. package/dist/prod/locale/Locale.js +2 -0
  472. package/dist/prod/locale/Locale.js.map +7 -0
  473. package/dist/prod/locale/RTLAwareRegistry.js +2 -0
  474. package/dist/prod/locale/RTLAwareRegistry.js.map +7 -0
  475. package/dist/prod/locale/applyDirection.js +2 -0
  476. package/dist/prod/locale/applyDirection.js.map +7 -0
  477. package/dist/prod/locale/directionChange.js +2 -0
  478. package/dist/prod/locale/directionChange.js.map +7 -0
  479. package/dist/prod/locale/getEffectiveDir.js +2 -0
  480. package/dist/prod/locale/getEffectiveDir.js.map +7 -0
  481. package/dist/prod/locale/getLocale.js +2 -0
  482. package/dist/prod/locale/getLocale.js.map +7 -0
  483. package/dist/prod/locale/languageChange.js +2 -0
  484. package/dist/prod/locale/languageChange.js.map +7 -0
  485. package/dist/prod/locale/nextFallbackLocale.js +2 -0
  486. package/dist/prod/locale/nextFallbackLocale.js.map +7 -0
  487. package/dist/prod/locale/normalizeLocale.js +2 -0
  488. package/dist/prod/locale/normalizeLocale.js.map +7 -0
  489. package/dist/prod/renderer/JsxRenderer.js +2 -0
  490. package/dist/prod/renderer/JsxRenderer.js.map +7 -0
  491. package/dist/prod/renderer/LitRenderer.js +2 -0
  492. package/dist/prod/renderer/LitRenderer.js.map +7 -0
  493. package/dist/prod/renderer/directives/style-map.js +6 -0
  494. package/dist/prod/renderer/directives/style-map.js.map +7 -0
  495. package/dist/prod/renderer/executeTemplate.js +2 -0
  496. package/dist/prod/renderer/executeTemplate.js.map +7 -0
  497. package/dist/prod/sap/base/Log.js +750 -0
  498. package/dist/prod/sap/base/assert.js +34 -0
  499. package/dist/prod/sap/base/config/MemoryConfigurationProvider.js +20 -0
  500. package/dist/prod/sap/base/security/URLListValidator.js +406 -0
  501. package/dist/prod/sap/base/security/encodeCSS.js +40 -0
  502. package/dist/prod/sap/base/security/encodeXML.js +53 -0
  503. package/dist/prod/sap/base/security/sanitizeHTML.js +38 -0
  504. package/dist/prod/sap/base/strings/toHex.js +33 -0
  505. package/dist/prod/sap/base/util/now.js +28 -0
  506. package/dist/prod/sap/base/util/uid.js +27 -0
  507. package/dist/prod/sap/ui/thirdparty/caja-html-sanitizer.js +3600 -0
  508. package/dist/prod/ssr-dom-shim.js +2 -0
  509. package/dist/prod/ssr-dom-shim.js.map +7 -0
  510. package/dist/prod/ssr-dom.js +2 -0
  511. package/dist/prod/ssr-dom.js.map +7 -0
  512. package/dist/prod/theming/CustomStyle.js +2 -0
  513. package/dist/prod/theming/CustomStyle.js.map +7 -0
  514. package/dist/prod/theming/ThemeLoaded.js +2 -0
  515. package/dist/prod/theming/ThemeLoaded.js.map +7 -0
  516. package/dist/prod/theming/ThemeRegistered.js +2 -0
  517. package/dist/prod/theming/ThemeRegistered.js.map +7 -0
  518. package/dist/prod/theming/applyTheme.js +2 -0
  519. package/dist/prod/theming/applyTheme.js.map +7 -0
  520. package/dist/prod/theming/getConstructableStyle.js +2 -0
  521. package/dist/prod/theming/getConstructableStyle.js.map +7 -0
  522. package/dist/prod/theming/getEffectiveStyle.js +2 -0
  523. package/dist/prod/theming/getEffectiveStyle.js.map +7 -0
  524. package/dist/prod/theming/getStylesString.js +2 -0
  525. package/dist/prod/theming/getStylesString.js.map +7 -0
  526. package/dist/prod/theming/getThemeDesignerTheme.js +2 -0
  527. package/dist/prod/theming/getThemeDesignerTheme.js.map +7 -0
  528. package/dist/prod/thirdparty/_merge.js +2 -0
  529. package/dist/prod/thirdparty/_merge.js.map +7 -0
  530. package/dist/prod/thirdparty/isPlainObject.js +2 -0
  531. package/dist/prod/thirdparty/isPlainObject.js.map +7 -0
  532. package/dist/prod/thirdparty/merge.js +2 -0
  533. package/dist/prod/thirdparty/merge.js.map +7 -0
  534. package/dist/prod/thirdparty/preact/jsx.d.js +2 -0
  535. package/dist/prod/thirdparty/preact/jsx.d.js.map +7 -0
  536. package/dist/prod/thirdparty/preact/jsxRuntime.module.d.js +2 -0
  537. package/dist/prod/thirdparty/preact/jsxRuntime.module.d.js.map +7 -0
  538. package/dist/prod/thirdparty/preact/jsxRuntime.module.js +1 -0
  539. package/dist/prod/thirdparty/preact/preact.module.d.js +2 -0
  540. package/dist/prod/thirdparty/preact/preact.module.d.js.map +7 -0
  541. package/dist/prod/thirdparty/preact/preact.module.js +1 -0
  542. package/dist/prod/types/AnimationMode.js +2 -0
  543. package/dist/prod/types/AnimationMode.js.map +7 -0
  544. package/dist/prod/types/CalendarType.js +2 -0
  545. package/dist/prod/types/CalendarType.js.map +7 -0
  546. package/dist/prod/types/InvisibleMessageMode.js +2 -0
  547. package/dist/prod/types/InvisibleMessageMode.js.map +7 -0
  548. package/dist/prod/types/ItemNavigationBehavior.js +2 -0
  549. package/dist/prod/types/ItemNavigationBehavior.js.map +7 -0
  550. package/dist/prod/types/MovePlacement.js +2 -0
  551. package/dist/prod/types/MovePlacement.js.map +7 -0
  552. package/dist/prod/types/NavigationMode.js +2 -0
  553. package/dist/prod/types/NavigationMode.js.map +7 -0
  554. package/dist/prod/types/Orientation.js +2 -0
  555. package/dist/prod/types/Orientation.js.map +7 -0
  556. package/dist/prod/types/SortOrder.js +2 -0
  557. package/dist/prod/types/SortOrder.js.map +7 -0
  558. package/dist/prod/types/ValueState.js +2 -0
  559. package/dist/prod/types/ValueState.js.map +7 -0
  560. package/dist/prod/types.js +2 -0
  561. package/dist/prod/types.js.map +7 -0
  562. package/dist/prod/updateShadowRoot.js +2 -0
  563. package/dist/prod/updateShadowRoot.js.map +7 -0
  564. package/dist/prod/util/AccessibilityTextsHelper.js +2 -0
  565. package/dist/prod/util/AccessibilityTextsHelper.js.map +7 -0
  566. package/dist/prod/util/Caret.js +2 -0
  567. package/dist/prod/util/Caret.js.map +7 -0
  568. package/dist/prod/util/ColorConversion.js +2 -0
  569. package/dist/prod/util/ColorConversion.js.map +7 -0
  570. package/dist/prod/util/FetchHelper.js +2 -0
  571. package/dist/prod/util/FetchHelper.js.map +7 -0
  572. package/dist/prod/util/FocusableElements.js +2 -0
  573. package/dist/prod/util/FocusableElements.js.map +7 -0
  574. package/dist/prod/util/HTMLSanitizer.js +2 -0
  575. package/dist/prod/util/HTMLSanitizer.js.map +7 -0
  576. package/dist/prod/util/InvisibleMessage.js +2 -0
  577. package/dist/prod/util/InvisibleMessage.js.map +7 -0
  578. package/dist/prod/util/PopupUtils.js +2 -0
  579. package/dist/prod/util/PopupUtils.js.map +7 -0
  580. package/dist/prod/util/SelectionAssistant.js +2 -0
  581. package/dist/prod/util/SelectionAssistant.js.map +7 -0
  582. package/dist/prod/util/SlotsHelper.js +2 -0
  583. package/dist/prod/util/SlotsHelper.js.map +7 -0
  584. package/dist/prod/util/StringHelper.js +2 -0
  585. package/dist/prod/util/StringHelper.js.map +7 -0
  586. package/dist/prod/util/TabbableElements.js +2 -0
  587. package/dist/prod/util/TabbableElements.js.map +7 -0
  588. package/dist/prod/util/arraysAreEqual.js +2 -0
  589. package/dist/prod/util/arraysAreEqual.js.map +7 -0
  590. package/dist/prod/util/clamp.js +2 -0
  591. package/dist/prod/util/clamp.js.map +7 -0
  592. package/dist/prod/util/createLinkInHead.js +2 -0
  593. package/dist/prod/util/createLinkInHead.js.map +7 -0
  594. package/dist/prod/util/debounce.js +2 -0
  595. package/dist/prod/util/debounce.js.map +7 -0
  596. package/dist/prod/util/detectNavigatorLanguage.js +2 -0
  597. package/dist/prod/util/detectNavigatorLanguage.js.map +7 -0
  598. package/dist/prod/util/dragAndDrop/DragRegistry.js +2 -0
  599. package/dist/prod/util/dragAndDrop/DragRegistry.js.map +7 -0
  600. package/dist/prod/util/dragAndDrop/findClosestPosition.js +2 -0
  601. package/dist/prod/util/dragAndDrop/findClosestPosition.js.map +7 -0
  602. package/dist/prod/util/dragAndDrop/handleDragOver.js +2 -0
  603. package/dist/prod/util/dragAndDrop/handleDragOver.js.map +7 -0
  604. package/dist/prod/util/dragAndDrop/handleDrop.js +2 -0
  605. package/dist/prod/util/dragAndDrop/handleDrop.js.map +7 -0
  606. package/dist/prod/util/dragAndDrop/longDragOverHandler.js +2 -0
  607. package/dist/prod/util/dragAndDrop/longDragOverHandler.js.map +7 -0
  608. package/dist/prod/util/escapeRegex.js +2 -0
  609. package/dist/prod/util/escapeRegex.js.map +7 -0
  610. package/dist/prod/util/fixSafariActiveState.js +2 -0
  611. package/dist/prod/util/fixSafariActiveState.js.map +7 -0
  612. package/dist/prod/util/formatMessage.js +2 -0
  613. package/dist/prod/util/formatMessage.js.map +7 -0
  614. package/dist/prod/util/generateHighlightedMarkup.js +2 -0
  615. package/dist/prod/util/generateHighlightedMarkup.js.map +7 -0
  616. package/dist/prod/util/getActiveElement.js +2 -0
  617. package/dist/prod/util/getActiveElement.js.map +7 -0
  618. package/dist/prod/util/getClassCopy.js +2 -0
  619. package/dist/prod/util/getClassCopy.js.map +7 -0
  620. package/dist/prod/util/getDesigntimePropertyAsArray.js +2 -0
  621. package/dist/prod/util/getDesigntimePropertyAsArray.js.map +7 -0
  622. package/dist/prod/util/getEffectiveContentDensity.js +2 -0
  623. package/dist/prod/util/getEffectiveContentDensity.js.map +7 -0
  624. package/dist/prod/util/getFastNavigationGroups.js +2 -0
  625. package/dist/prod/util/getFastNavigationGroups.js.map +7 -0
  626. package/dist/prod/util/getFileExtension.js +2 -0
  627. package/dist/prod/util/getFileExtension.js.map +7 -0
  628. package/dist/prod/util/getNormalizedTarget.js +2 -0
  629. package/dist/prod/util/getNormalizedTarget.js.map +7 -0
  630. package/dist/prod/util/getParentElement.js +2 -0
  631. package/dist/prod/util/getParentElement.js.map +7 -0
  632. package/dist/prod/util/getSingletonElementInstance.js +2 -0
  633. package/dist/prod/util/getSingletonElementInstance.js.map +7 -0
  634. package/dist/prod/util/hash2str.js +2 -0
  635. package/dist/prod/util/hash2str.js.map +7 -0
  636. package/dist/prod/util/isElementClickable.js +2 -0
  637. package/dist/prod/util/isElementClickable.js.map +7 -0
  638. package/dist/prod/util/isElementHidden.js +2 -0
  639. package/dist/prod/util/isElementHidden.js.map +7 -0
  640. package/dist/prod/util/isElementInView.js +2 -0
  641. package/dist/prod/util/isElementInView.js.map +7 -0
  642. package/dist/prod/util/isElementTabbable.js +2 -0
  643. package/dist/prod/util/isElementTabbable.js.map +7 -0
  644. package/dist/prod/util/isValidPropertyName.js +2 -0
  645. package/dist/prod/util/isValidPropertyName.js.map +7 -0
  646. package/dist/prod/util/throttle.js +2 -0
  647. package/dist/prod/util/throttle.js.map +7 -0
  648. package/dist/prod/util/toLowercaseEnumValue.js +2 -0
  649. package/dist/prod/util/toLowercaseEnumValue.js.map +7 -0
  650. package/dist/prod/util/valueStateNavigation.js +2 -0
  651. package/dist/prod/util/valueStateNavigation.js.map +7 -0
  652. package/dist/prod/util/whenDOMReady.js +2 -0
  653. package/dist/prod/util/whenDOMReady.js.map +7 -0
  654. package/dist/prod/util/willShowContent.js +2 -0
  655. package/dist/prod/util/willShowContent.js.map +7 -0
  656. package/dist/prod/validateThemeRoot.js +2 -0
  657. package/dist/prod/validateThemeRoot.js.map +7 -0
  658. package/dist/renderer/JsxRenderer.d.ts +3 -0
  659. package/dist/renderer/JsxRenderer.js +26 -0
  660. package/dist/renderer/JsxRenderer.js.map +1 -0
  661. package/dist/renderer/LitRenderer.d.ts +3 -3
  662. package/dist/renderer/LitRenderer.js +5 -10
  663. package/dist/renderer/LitRenderer.js.map +1 -1
  664. package/dist/renderer/directives/style-map.d.ts +13 -0
  665. package/dist/renderer/directives/style-map.js +59 -59
  666. package/dist/renderer/directives/style-map.js.map +1 -0
  667. package/dist/renderer/executeTemplate.d.ts +3 -4
  668. package/dist/renderer/executeTemplate.js +1 -19
  669. package/dist/renderer/executeTemplate.js.map +1 -1
  670. package/dist/sap/base/Log.js +698 -188
  671. package/dist/sap/base/assert.js +28 -1
  672. package/dist/sap/base/config/MemoryConfigurationProvider.js +20 -0
  673. package/dist/sap/base/security/URLListValidator.js +253 -6
  674. package/dist/sap/base/security/encodeCSS.js +34 -8
  675. package/dist/sap/base/security/encodeXML.js +47 -17
  676. package/dist/sap/base/security/sanitizeHTML.js +35 -13
  677. package/dist/sap/base/strings/toHex.js +27 -2
  678. package/dist/sap/base/util/now.js +24 -3
  679. package/dist/sap/base/util/uid.js +27 -0
  680. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +113 -98
  681. package/dist/ssr-dom-shim.d.ts +1 -0
  682. package/dist/ssr-dom-shim.js +63 -0
  683. package/dist/ssr-dom-shim.js.map +1 -0
  684. package/dist/ssr-dom.d.ts +1 -0
  685. package/dist/ssr-dom.js +3 -0
  686. package/dist/ssr-dom.js.map +1 -0
  687. package/dist/theming/CustomStyle.js.map +1 -1
  688. package/dist/theming/applyTheme.js +11 -9
  689. package/dist/theming/applyTheme.js.map +1 -1
  690. package/dist/theming/getConstructableStyle.d.ts +2 -2
  691. package/dist/theming/getConstructableStyle.js +3 -3
  692. package/dist/theming/getConstructableStyle.js.map +1 -1
  693. package/dist/theming/getEffectiveStyle.d.ts +1 -1
  694. package/dist/theming/getEffectiveStyle.js +5 -12
  695. package/dist/theming/getEffectiveStyle.js.map +1 -1
  696. package/dist/theming/getStylesString.js +2 -4
  697. package/dist/theming/getStylesString.js.map +1 -1
  698. package/dist/theming/getThemeDesignerTheme.js +2 -1
  699. package/dist/theming/getThemeDesignerTheme.js.map +1 -1
  700. package/dist/thirdparty/_merge.js.map +1 -1
  701. package/dist/thirdparty/isPlainObject.js.map +1 -1
  702. package/dist/thirdparty/preact/jsx.d.ts +2616 -0
  703. package/dist/thirdparty/preact/jsxRuntime.module.d.ts +62 -0
  704. package/dist/thirdparty/preact/jsxRuntime.module.js +1 -0
  705. package/dist/thirdparty/preact/preact.module.d.ts +398 -0
  706. package/dist/thirdparty/preact/preact.module.js +1 -0
  707. package/dist/types/AnimationMode.d.ts +0 -8
  708. package/dist/types/AnimationMode.js +0 -8
  709. package/dist/types/AnimationMode.js.map +1 -1
  710. package/dist/types/CalendarType.d.ts +0 -9
  711. package/dist/types/CalendarType.js +0 -9
  712. package/dist/types/CalendarType.js.map +1 -1
  713. package/dist/types/InvisibleMessageMode.d.ts +5 -10
  714. package/dist/types/InvisibleMessageMode.js +4 -11
  715. package/dist/types/InvisibleMessageMode.js.map +1 -1
  716. package/dist/types/ItemNavigationBehavior.d.ts +0 -6
  717. package/dist/types/ItemNavigationBehavior.js +0 -6
  718. package/dist/types/ItemNavigationBehavior.js.map +1 -1
  719. package/dist/types/MovePlacement.d.ts +20 -0
  720. package/dist/types/MovePlacement.js +22 -0
  721. package/dist/types/MovePlacement.js.map +1 -0
  722. package/dist/types/NavigationMode.d.ts +0 -8
  723. package/dist/types/NavigationMode.js +0 -8
  724. package/dist/types/NavigationMode.js.map +1 -1
  725. package/dist/types/Orientation.d.ts +16 -0
  726. package/dist/types/Orientation.js +18 -0
  727. package/dist/types/Orientation.js.map +1 -0
  728. package/dist/types/SortOrder.d.ts +24 -0
  729. package/dist/types/SortOrder.js +26 -0
  730. package/dist/types/SortOrder.js.map +1 -0
  731. package/dist/types/ValueState.d.ts +3 -17
  732. package/dist/types/ValueState.js +3 -17
  733. package/dist/types/ValueState.js.map +1 -1
  734. package/dist/types.d.ts +42 -14
  735. package/dist/types.js.map +1 -1
  736. package/dist/updateShadowRoot.d.ts +1 -2
  737. package/dist/updateShadowRoot.js +4 -28
  738. package/dist/updateShadowRoot.js.map +1 -1
  739. package/dist/util/{AriaLabelHelper.d.ts → AccessibilityTextsHelper.d.ts} +4 -2
  740. package/dist/util/{AriaLabelHelper.js → AccessibilityTextsHelper.js} +36 -8
  741. package/dist/util/AccessibilityTextsHelper.js.map +1 -0
  742. package/dist/util/Caret.js.map +1 -1
  743. package/dist/util/ColorConversion.d.ts +2 -1
  744. package/dist/util/ColorConversion.js +233 -216
  745. package/dist/util/ColorConversion.js.map +1 -1
  746. package/dist/util/FetchHelper.js.map +1 -1
  747. package/dist/util/FocusableElements.js +43 -15
  748. package/dist/util/FocusableElements.js.map +1 -1
  749. package/dist/util/HTMLSanitizer.d.ts +2 -0
  750. package/dist/util/HTMLSanitizer.js +2 -2
  751. package/dist/util/HTMLSanitizer.js.map +1 -1
  752. package/dist/util/InvisibleMessage.js +2 -2
  753. package/dist/util/InvisibleMessage.js.map +1 -1
  754. package/dist/util/PopupUtils.d.ts +1 -3
  755. package/dist/util/PopupUtils.js +1 -15
  756. package/dist/util/PopupUtils.js.map +1 -1
  757. package/dist/util/SelectionAssistant.d.ts +12 -0
  758. package/dist/util/SelectionAssistant.js +71 -0
  759. package/dist/util/SelectionAssistant.js.map +1 -0
  760. package/dist/util/SlotsHelper.js.map +1 -1
  761. package/dist/util/StringHelper.d.ts +3 -1
  762. package/dist/util/StringHelper.js +15 -1
  763. package/dist/util/StringHelper.js.map +1 -1
  764. package/dist/util/TabbableElements.js +3 -10
  765. package/dist/util/TabbableElements.js.map +1 -1
  766. package/dist/util/arraysAreEqual.js.map +1 -1
  767. package/dist/util/clamp.js +2 -1
  768. package/dist/util/clamp.js.map +1 -1
  769. package/dist/util/createLinkInHead.d.ts +1 -1
  770. package/dist/util/createLinkInHead.js +1 -1
  771. package/dist/util/createLinkInHead.js.map +1 -1
  772. package/dist/util/debounce.js.map +1 -1
  773. package/dist/util/detectNavigatorLanguage.d.ts +2 -2
  774. package/dist/util/detectNavigatorLanguage.js +6 -1
  775. package/dist/util/detectNavigatorLanguage.js.map +1 -1
  776. package/dist/util/dragAndDrop/DragRegistry.d.ts +39 -0
  777. package/dist/util/dragAndDrop/DragRegistry.js +58 -0
  778. package/dist/util/dragAndDrop/DragRegistry.js.map +1 -0
  779. package/dist/util/dragAndDrop/findClosestPosition.d.ts +12 -0
  780. package/dist/util/dragAndDrop/findClosestPosition.js +106 -0
  781. package/dist/util/dragAndDrop/findClosestPosition.js.map +1 -0
  782. package/dist/util/dragAndDrop/handleDragOver.d.ts +16 -0
  783. package/dist/util/dragAndDrop/handleDragOver.js +42 -0
  784. package/dist/util/dragAndDrop/handleDragOver.js.map +1 -0
  785. package/dist/util/dragAndDrop/handleDrop.d.ts +5 -0
  786. package/dist/util/dragAndDrop/handleDrop.js +22 -0
  787. package/dist/util/dragAndDrop/handleDrop.js.map +1 -0
  788. package/dist/util/dragAndDrop/longDragOverHandler.d.ts +2 -0
  789. package/dist/util/dragAndDrop/longDragOverHandler.js +25 -0
  790. package/dist/util/dragAndDrop/longDragOverHandler.js.map +1 -0
  791. package/dist/util/fixSafariActiveState.d.ts +2 -0
  792. package/dist/util/fixSafariActiveState.js +11 -0
  793. package/dist/util/fixSafariActiveState.js.map +1 -0
  794. package/dist/util/formatMessage.js.map +1 -1
  795. package/dist/util/generateHighlightedMarkup.js.map +1 -1
  796. package/dist/util/getActiveElement.js.map +1 -1
  797. package/dist/util/getClassCopy.d.ts +145 -103
  798. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -2
  799. package/dist/util/getDesigntimePropertyAsArray.js +2 -1
  800. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -1
  801. package/dist/util/getFastNavigationGroups.js +6 -1
  802. package/dist/util/getFastNavigationGroups.js.map +1 -1
  803. package/dist/util/getFileExtension.js.map +1 -1
  804. package/dist/util/getNormalizedTarget.js.map +1 -1
  805. package/dist/util/getParentElement.d.ts +2 -0
  806. package/dist/util/getParentElement.js +5 -0
  807. package/dist/util/getParentElement.js.map +1 -0
  808. package/dist/util/getSingletonElementInstance.d.ts +10 -1
  809. package/dist/util/getSingletonElementInstance.js +11 -2
  810. package/dist/util/getSingletonElementInstance.js.map +1 -1
  811. package/dist/util/hash2str.d.ts +1 -0
  812. package/dist/util/hash2str.js +14 -0
  813. package/dist/util/hash2str.js.map +1 -0
  814. package/dist/util/isElementClickable.js.map +1 -1
  815. package/dist/util/isElementHidden.js +2 -1
  816. package/dist/util/isElementHidden.js.map +1 -1
  817. package/dist/util/isElementTabbable.js +2 -2
  818. package/dist/util/isElementTabbable.js.map +1 -1
  819. package/dist/util/isValidPropertyName.js.map +1 -1
  820. package/dist/util/throttle.d.ts +2 -0
  821. package/dist/util/throttle.js +20 -0
  822. package/dist/util/throttle.js.map +1 -0
  823. package/dist/util/toLowercaseEnumValue.d.ts +3 -0
  824. package/dist/util/toLowercaseEnumValue.js +4 -0
  825. package/dist/util/toLowercaseEnumValue.js.map +1 -0
  826. package/dist/util/valueStateNavigation.d.ts +8 -0
  827. package/dist/util/valueStateNavigation.js +40 -0
  828. package/dist/util/valueStateNavigation.js.map +1 -0
  829. package/dist/util/whenDOMReady.js.map +1 -1
  830. package/dist/validateThemeRoot.js +9 -4
  831. package/dist/validateThemeRoot.js.map +1 -1
  832. package/dist/vscode.html-custom-data.json +22 -0
  833. package/package-scripts.cjs +37 -23
  834. package/package.json +38 -12
  835. package/src/css/MultipleDragGhost.css +17 -0
  836. package/src/css/OpenUI5PopupStyles.css +5 -0
  837. package/src/css/ScrollbarStyles.css +3 -0
  838. package/src/css/SystemCSSVars.css +0 -8
  839. package/src/i18n/messagebundle.properties +5 -0
  840. package/src/i18n/messagebundle_en.properties +2 -0
  841. package/src/i18n/messagebundle_en_US_sappsd.properties +2 -0
  842. package/src/i18n/messagebundle_en_US_saprigi.properties +2 -0
  843. package/src/i18n/messagebundle_en_US_saptrc.properties +2 -0
  844. package/src/thirdparty/preact/jsxRuntime.module.js +1 -0
  845. package/src/thirdparty/preact/preact.module.js +1 -0
  846. package/src/thirdparty/preact/version.txt +1 -0
  847. package/tsconfig.json +18 -13
  848. package/.eslintignore +0 -16
  849. package/.eslintrc.cjs +0 -3
  850. package/bundle.esm.js +0 -64
  851. package/config/wdio.conf.cjs +0 -400
  852. package/dist/CSP.d.ts +0 -30
  853. package/dist/CSP.js +0 -51
  854. package/dist/CSP.js.map +0 -1
  855. package/dist/MarkedEvents.d.ts +0 -9
  856. package/dist/MarkedEvents.js +0 -15
  857. package/dist/MarkedEvents.js.map +0 -1
  858. package/dist/StaticArea.d.ts +0 -3
  859. package/dist/StaticArea.js +0 -7
  860. package/dist/StaticArea.js.map +0 -1
  861. package/dist/StaticAreaItem.d.ts +0 -36
  862. package/dist/StaticAreaItem.js +0 -99
  863. package/dist/StaticAreaItem.js.map +0 -1
  864. package/dist/api.json +0 -1
  865. package/dist/assets/Boot.34b7cea0.css +0 -1
  866. package/dist/assets/Boot.f21d1bf8.js +0 -9
  867. package/dist/assets/bundle.esm.fff719c1.js +0 -50
  868. package/dist/assets-meta/IconCollectionsAlias.js.map +0 -1
  869. package/dist/config/RTL.d.ts +0 -7
  870. package/dist/config/RTL.js +0 -37
  871. package/dist/config/RTL.js.map +0 -1
  872. package/dist/config/ThemeRoots.d.ts +0 -4
  873. package/dist/config/ThemeRoots.js +0 -28
  874. package/dist/config/ThemeRoots.js.map +0 -1
  875. package/dist/css/FontFace.css +0 -66
  876. package/dist/css/OverrideFontFace.css +0 -32
  877. package/dist/generated/css/OverrideFontFace.css.d.ts +0 -3
  878. package/dist/generated/css/OverrideFontFace.css.js +0 -7
  879. package/dist/generated/css/OverrideFontFace.css.js.map +0 -1
  880. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.d.ts +0 -4
  881. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +0 -9
  882. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js.map +0 -1
  883. package/dist/theming/getEffectiveLinksHrefs.d.ts +0 -3
  884. package/dist/theming/getEffectiveLinksHrefs.js +0 -17
  885. package/dist/theming/getEffectiveLinksHrefs.js.map +0 -1
  886. package/dist/theming/preloadLinks.d.ts +0 -3
  887. package/dist/theming/preloadLinks.js +0 -19
  888. package/dist/theming/preloadLinks.js.map +0 -1
  889. package/dist/types/CSSColor.d.ts +0 -15
  890. package/dist/types/CSSColor.js +0 -18
  891. package/dist/types/CSSColor.js.map +0 -1
  892. package/dist/types/DOMReference.d.ts +0 -17
  893. package/dist/types/DOMReference.js +0 -25
  894. package/dist/types/DOMReference.js.map +0 -1
  895. package/dist/types/DataType.d.ts +0 -25
  896. package/dist/types/DataType.js +0 -44
  897. package/dist/types/DataType.js.map +0 -1
  898. package/dist/types/Float.d.ts +0 -17
  899. package/dist/types/Float.js +0 -21
  900. package/dist/types/Float.js.map +0 -1
  901. package/dist/types/Integer.d.ts +0 -17
  902. package/dist/types/Integer.js +0 -21
  903. package/dist/types/Integer.js.map +0 -1
  904. package/dist/util/AriaLabelHelper.js.map +0 -1
  905. package/dist/util/createStyleInHead.d.ts +0 -8
  906. package/dist/util/createStyleInHead.js +0 -18
  907. package/dist/util/createStyleInHead.js.map +0 -1
  908. package/dist/util/getEffectiveScrollbarStyle.d.ts +0 -2
  909. package/dist/util/getEffectiveScrollbarStyle.js +0 -4
  910. package/dist/util/getEffectiveScrollbarStyle.js.map +0 -1
  911. package/index.js +0 -230
  912. package/lib/generate-asset-parameters/index.js +0 -27
  913. package/lib/generate-styles/index.js +0 -31
  914. package/lib/generate-version-info/index.js +0 -32
  915. package/src/css/FontFace.css +0 -66
  916. package/src/css/OverrideFontFace.css +0 -32
  917. package/src/renderer/directives/style-map.js +0 -72
  918. package/used-modules.txt +0 -10
@@ -1,8 +1,7 @@
1
- import { camelToKebabCase } from "./util/StringHelper.js";
1
+ import { camelToKebabCase, kebabToCamelCase } from "./util/StringHelper.js";
2
2
  import { getSlottedNodes } from "./util/SlotsHelper.js";
3
3
  import { getEffectiveScopingSuffixForTag } from "./CustomElementsScopeUtils.js";
4
4
  /**
5
- *
6
5
  * @class
7
6
  * @public
8
7
  */
@@ -16,59 +15,23 @@ class UI5ElementMetadata {
16
15
  }
17
16
  const initialState = {};
18
17
  const slotsAreManaged = this.slotsAreManaged();
19
- // Initialize properties
20
- const props = this.getProperties();
21
- for (const propName in props) { // eslint-disable-line
22
- const propType = props[propName].type;
23
- const propDefaultValue = props[propName].defaultValue;
24
- if (propType === Boolean) {
25
- initialState[propName] = false;
26
- if (propDefaultValue !== undefined) {
27
- console.warn("The 'defaultValue' metadata key is ignored for all booleans properties, they would be initialized with 'false' by default"); // eslint-disable-line
28
- }
29
- }
30
- else if (props[propName].multiple) {
31
- initialState[propName] = [];
32
- }
33
- else if (propType === Object) {
34
- initialState[propName] = "defaultValue" in props[propName] ? props[propName].defaultValue : {};
35
- }
36
- else if (propType === String) {
37
- initialState[propName] = "defaultValue" in props[propName] ? props[propName].defaultValue : "";
38
- }
39
- else {
40
- initialState[propName] = propDefaultValue;
41
- }
42
- }
43
18
  // Initialize slots
44
19
  if (slotsAreManaged) {
45
20
  const slots = this.getSlots();
46
21
  for (const [slotName, slotData] of Object.entries(slots)) { // eslint-disable-line
47
22
  const propertyName = slotData.propertyName || slotName;
48
23
  initialState[propertyName] = [];
24
+ initialState[kebabToCamelCase(propertyName)] = initialState[propertyName];
49
25
  }
50
26
  }
51
27
  this._initialState = initialState;
52
28
  return initialState;
53
29
  }
54
- /**
55
- * Validates the property's value and returns it if correct
56
- * or returns the default value if not.
57
- * <b>Note:</b> Only intended for use by UI5Element.js
58
- * @public
59
- */
60
- static validatePropertyValue(value, propData) {
61
- const isMultiple = propData.multiple;
62
- if (isMultiple && value) {
63
- return value.map((propValue) => validateSingleProperty(propValue, propData));
64
- }
65
- return validateSingleProperty(value, propData);
66
- }
67
30
  /**
68
31
  * Validates the slot's value and returns it if correct
69
32
  * or throws an exception if not.
70
- * <b>Note:</b> Only intended for use by UI5Element.js
71
- * @pubic
33
+ * **Note:** Only intended for use by UI5Element.js
34
+ * @public
72
35
  */
73
36
  static validateSlotValue(value, slotData) {
74
37
  return validateSingleSlot(value, slotData);
@@ -99,16 +62,14 @@ class UI5ElementMetadata {
99
62
  * Determines whether a property should have an attribute counterpart
100
63
  * @public
101
64
  * @param propName
102
- * @returns {boolean}
103
65
  */
104
66
  hasAttribute(propName) {
105
67
  const propData = this.getProperties()[propName];
106
- return propData.type !== Object && !propData.noAttribute && !propData.multiple;
68
+ return propData.type !== Object && propData.type !== Array && !propData.noAttribute;
107
69
  }
108
70
  /**
109
71
  * Returns an array with the properties of the UI5 Element (in camelCase)
110
72
  * @public
111
- * @returns {string[]}
112
73
  */
113
74
  getPropertiesList() {
114
75
  return Object.keys(this.getProperties());
@@ -116,18 +77,15 @@ class UI5ElementMetadata {
116
77
  /**
117
78
  * Returns an array with the attributes of the UI5 Element (in kebab-case)
118
79
  * @public
119
- * @returns {string[]}
120
80
  */
121
81
  getAttributesList() {
122
82
  return this.getPropertiesList().filter(this.hasAttribute.bind(this)).map(camelToKebabCase);
123
83
  }
124
84
  /**
125
85
  * Determines whether this UI5 Element has a default slot of type Node, therefore can slot text
126
- * @returns {boolean}
127
86
  */
128
87
  canSlotText() {
129
- const defaultSlot = this.getSlots().default;
130
- return defaultSlot && defaultSlot.type === Node;
88
+ return (this.getSlots().default)?.type === Node;
131
89
  }
132
90
  /**
133
91
  * Determines whether this UI5 Element supports any slots
@@ -189,18 +147,31 @@ class UI5ElementMetadata {
189
147
  }
190
148
  /**
191
149
  * Determines whether this UI5 Element has any translatable texts (needs to be invalidated upon language change)
192
- * @returns {boolean}
193
150
  */
194
151
  isLanguageAware() {
195
152
  return !!this.metadata.languageAware;
196
153
  }
197
154
  /**
198
155
  * Determines whether this UI5 Element has any theme dependant carachteristics.
199
- * @returns {boolean}
200
156
  */
201
157
  isThemeAware() {
202
158
  return !!this.metadata.themeAware;
203
159
  }
160
+ /**
161
+ * Determines whether this UI5 Element needs CLDR assets to be fetched to work correctly
162
+ */
163
+ needsCLDR() {
164
+ return !!this.metadata.cldr;
165
+ }
166
+ getShadowRootOptions() {
167
+ return this.metadata.shadowRootOptions || {};
168
+ }
169
+ /**
170
+ * Determines whether this UI5 Element has any theme dependant carachteristics.
171
+ */
172
+ isFormAssociated() {
173
+ return !!this.metadata.formAssociated;
174
+ }
204
175
  /**
205
176
  * Matches a changed entity (property/slot) with the given name against the "invalidateOnChildChange" configuration
206
177
  * and determines whether this should cause and invalidation
@@ -208,7 +179,6 @@ class UI5ElementMetadata {
208
179
  * @param slotName the name of the slot in which a child was changed
209
180
  * @param type the type of change in the child: "property" or "slot"
210
181
  * @param name the name of the property/slot that changed
211
- * @returns {boolean}
212
182
  */
213
183
  shouldInvalidateOnChildChange(slotName, type, name) {
214
184
  const config = this.getSlots()[slotName].invalidateOnChildChange;
@@ -257,28 +227,13 @@ class UI5ElementMetadata {
257
227
  }
258
228
  throw new Error("Wrong format for invalidateOnChildChange: boolean or object is expected");
259
229
  }
260
- }
261
- const validateSingleProperty = (value, propData) => {
262
- const propertyType = propData.type;
263
- let propertyValidator = propData.validator;
264
- if (propertyType && propertyType.isDataTypeClass) {
265
- propertyValidator = propertyType;
266
- }
267
- if (propertyValidator) {
268
- return propertyValidator.isValid(value) ? value : propData.defaultValue;
269
- }
270
- if (!propertyType || propertyType === String) {
271
- return (typeof value === "string" || typeof value === "undefined" || value === null) ? value : value.toString();
272
- }
273
- if (propertyType === Boolean) {
274
- return typeof value === "boolean" ? value : false;
275
- }
276
- if (propertyType === Object) {
277
- return typeof value === "object" ? value : propData.defaultValue;
230
+ getI18n() {
231
+ if (!this.metadata.i18n) {
232
+ this.metadata.i18n = {};
233
+ }
234
+ return this.metadata.i18n;
278
235
  }
279
- // Check if "value" is part of the enum (propertyType) values and return the defaultValue if not found.
280
- return value in propertyType ? value : propData.defaultValue;
281
- };
236
+ }
282
237
  const validateSingleSlot = (value, slotData) => {
283
238
  value && getSlottedNodes(value).forEach(el => {
284
239
  if (!(el instanceof slotData.type)) {
@@ -1 +1 @@
1
- {"version":3,"file":"UI5ElementMetadata.js","sourceRoot":"","sources":["../src/UI5ElementMetadata.ts"],"names":[],"mappings":"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","sourcesContent":["import DataType from \"./types/DataType.js\";\nimport { camelToKebabCase } from \"./util/StringHelper.js\";\nimport { getSlottedNodes } from \"./util/SlotsHelper.js\";\nimport { getEffectiveScopingSuffixForTag } from \"./CustomElementsScopeUtils.js\";\n\ntype SlotInvalidation = {\n\tproperties: boolean | Array<string>,\n\tslots: boolean | Array<string>,\n}\n\ntype Slot = {\n\ttype: typeof Node | typeof HTMLElement,\n\tdefault?: boolean,\n\tpropertyName?: string,\n\tindividualSlots?: boolean,\n\tinvalidateOnChildChange?: boolean | SlotInvalidation,\n};\n\ntype SlotValue = Node;\n\ntype Property = {\n\ttype?: BooleanConstructor | StringConstructor | ObjectConstructor | DataType\n\tvalidator?: DataType,\n\tdefaultValue?: PropertyValue,\n\tnoAttribute?: boolean,\n\tmultiple?: boolean,\n\tcompareValues?: boolean,\n}\n\ntype PropertyValue = boolean | number | string | object | undefined | null | DataType;\n\ntype EventData = Record<string, object>;\n\ntype Metadata = {\n\ttag?: string,\n\tmanagedSlots?: boolean,\n\tproperties?: Record<string, Property>,\n\tslots?: Record<string, Slot>,\n\tevents?: EventData,\n\tfastNavigation?: boolean,\n\tthemeAware?: boolean,\n\tlanguageAware?: boolean,\n};\n\ntype State = Record<string, PropertyValue | Array<SlotValue>>;\n\n/**\n *\n * @class\n * @public\n */\nclass UI5ElementMetadata {\n\tmetadata: Metadata;\n\t_initialState: State | undefined;\n\n\tconstructor(metadata: Metadata) {\n\t\tthis.metadata = metadata;\n\t}\n\n\tgetInitialState() {\n\t\tif (Object.prototype.hasOwnProperty.call(this, \"_initialState\")) {\n\t\t\treturn this._initialState!;\n\t\t}\n\t\tconst initialState: State = {};\n\t\tconst slotsAreManaged = this.slotsAreManaged();\n\n\t\t// Initialize properties\n\t\tconst props = this.getProperties();\n\t\tfor (const propName in props) { // eslint-disable-line\n\t\t\tconst propType = props[propName].type;\n\t\t\tconst propDefaultValue = props[propName].defaultValue;\n\n\t\t\tif (propType === Boolean) {\n\t\t\t\tinitialState[propName] = false;\n\n\t\t\t\tif (propDefaultValue !== undefined) {\n\t\t\t\t\tconsole.warn(\"The 'defaultValue' metadata key is ignored for all booleans properties, they would be initialized with 'false' by default\"); // eslint-disable-line\n\t\t\t\t}\n\t\t\t} else if (props[propName].multiple) {\n\t\t\t\tinitialState[propName] = [];\n\t\t\t} else if (propType === Object) {\n\t\t\t\tinitialState[propName] = \"defaultValue\" in props[propName] ? props[propName].defaultValue : {};\n\t\t\t} else if (propType === String) {\n\t\t\t\tinitialState[propName] = \"defaultValue\" in props[propName] ? props[propName].defaultValue : \"\";\n\t\t\t} else {\n\t\t\t\tinitialState[propName] = propDefaultValue;\n\t\t\t}\n\t\t}\n\n\t\t// Initialize slots\n\t\tif (slotsAreManaged) {\n\t\t\tconst slots = this.getSlots();\n\t\t\tfor (const [slotName, slotData] of Object.entries<Slot>(slots)) { // eslint-disable-line\n\t\t\t\tconst propertyName = slotData.propertyName || slotName;\n\t\t\t\tinitialState[propertyName] = [];\n\t\t\t}\n\t\t}\n\n\t\tthis._initialState = initialState;\n\t\treturn initialState;\n\t}\n\n\t/**\n\t * Validates the property's value and returns it if correct\n\t * or returns the default value if not.\n\t * <b>Note:</b> Only intended for use by UI5Element.js\n\t * @public\n\t */\n\tstatic validatePropertyValue(value: PropertyValue, propData: Property) {\n\t\tconst isMultiple = propData.multiple;\n\t\tif (isMultiple && value) {\n\t\t\treturn (value as Array<PropertyValue>).map((propValue: PropertyValue) => validateSingleProperty(propValue, propData));\n\t\t}\n\t\treturn validateSingleProperty(value, propData);\n\t}\n\n\t/**\n\t * Validates the slot's value and returns it if correct\n\t * or throws an exception if not.\n\t * <b>Note:</b> Only intended for use by UI5Element.js\n\t * @pubic\n\t */\n\tstatic validateSlotValue(value: Node, slotData: Slot) {\n\t\treturn validateSingleSlot(value, slotData);\n\t}\n\n\t/**\n\t * Returns the tag of the UI5 Element without the scope\n\t * @public\n\t */\n\tgetPureTag() {\n\t\treturn this.metadata.tag || \"\";\n\t}\n\n\t/**\n\t * Returns the tag of the UI5 Element\n\t * @public\n\t */\n\tgetTag() {\n\t\tconst pureTag = this.metadata.tag;\n\n\t\tif (!pureTag) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst suffix = getEffectiveScopingSuffixForTag(pureTag);\n\t\tif (!suffix) {\n\t\t\treturn pureTag;\n\t\t}\n\n\t\treturn `${pureTag}-${suffix}`;\n\t}\n\n\t/**\n\t * Determines whether a property should have an attribute counterpart\n\t * @public\n\t * @param propName\n\t * @returns {boolean}\n\t */\n\thasAttribute(propName: string) {\n\t\tconst propData = this.getProperties()[propName];\n\t\treturn propData.type !== Object && !propData.noAttribute && !propData.multiple;\n\t}\n\n\t/**\n\t * Returns an array with the properties of the UI5 Element (in camelCase)\n\t * @public\n\t * @returns {string[]}\n\t */\n\tgetPropertiesList() {\n\t\treturn Object.keys(this.getProperties());\n\t}\n\n\t/**\n\t * Returns an array with the attributes of the UI5 Element (in kebab-case)\n\t * @public\n\t * @returns {string[]}\n\t */\n\tgetAttributesList() {\n\t\treturn this.getPropertiesList().filter(this.hasAttribute.bind(this)).map(camelToKebabCase);\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has a default slot of type Node, therefore can slot text\n\t * @returns {boolean}\n\t */\n\tcanSlotText() {\n\t\tconst defaultSlot = this.getSlots().default;\n\t\treturn defaultSlot && defaultSlot.type === Node;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element supports any slots\n\t * @public\n\t */\n\thasSlots() {\n\t\treturn !!Object.entries(this.getSlots()).length;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element supports any slots with \"individualSlots: true\"\n\t * @public\n\t */\n\thasIndividualSlots() {\n\t\treturn this.slotsAreManaged() && Object.values(this.getSlots()).some(slotData => slotData.individualSlots);\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element needs to invalidate if children are added/removed/changed\n\t * @public\n\t */\n\tslotsAreManaged() {\n\t\treturn !!this.metadata.managedSlots;\n\t}\n\n\t/**\n\t * Determines whether this control supports F6 fast navigation\n\t * @public\n\t */\n\tsupportsF6FastNavigation() {\n\t\treturn !!this.metadata.fastNavigation;\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of properties and their metadata definitions\n\t * @public\n\t */\n\tgetProperties() {\n\t\tif (!this.metadata.properties) {\n\t\t\tthis.metadata.properties = {};\n\t\t}\n\t\treturn this.metadata.properties;\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of events and their metadata definitions\n\t * @public\n\t */\n\tgetEvents() {\n\t\tif (!this.metadata.events) {\n\t\t\tthis.metadata.events = {};\n\t\t}\n\t\treturn this.metadata.events;\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of slots and their metadata definitions\n\t * @public\n\t */\n\t getSlots() {\n\t\tif (!this.metadata.slots) {\n\t\t\tthis.metadata.slots = {};\n\t\t}\n\t\treturn this.metadata.slots;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has any translatable texts (needs to be invalidated upon language change)\n\t * @returns {boolean}\n\t */\n\tisLanguageAware() {\n\t\treturn !!this.metadata.languageAware;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has any theme dependant carachteristics.\n\t * @returns {boolean}\n\t */\n\t isThemeAware() {\n\t\treturn !!this.metadata.themeAware;\n\t}\n\n\t/**\n\t * Matches a changed entity (property/slot) with the given name against the \"invalidateOnChildChange\" configuration\n\t * and determines whether this should cause and invalidation\n\t *\n\t * @param slotName the name of the slot in which a child was changed\n\t * @param type the type of change in the child: \"property\" or \"slot\"\n\t * @param name the name of the property/slot that changed\n\t * @returns {boolean}\n\t */\n\tshouldInvalidateOnChildChange(slotName: string, type: \"property\" | \"slot\", name: string) {\n\t\tconst config = this.getSlots()[slotName].invalidateOnChildChange;\n\n\t\t// invalidateOnChildChange was not set in the slot metadata - by default child changes do not affect the component\n\t\tif (config === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// The simple format was used: invalidateOnChildChange: true/false;\n\t\tif (typeof config === \"boolean\") {\n\t\t\treturn config;\n\t\t}\n\n\t\t// The complex format was used: invalidateOnChildChange: { properties, slots }\n\t\tif (typeof config === \"object\") {\n\t\t\t// A property was changed\n\t\t\tif (type === \"property\") {\n\t\t\t\t// The config object does not have a properties field\n\t\t\t\tif (config.properties === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the short format: properties: true/false\n\t\t\t\tif (typeof config.properties === \"boolean\") {\n\t\t\t\t\treturn config.properties;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the complex format: properties: [...]\n\t\t\t\tif (Array.isArray(config.properties)) {\n\t\t\t\t\treturn config.properties.includes(name);\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"Wrong format for invalidateOnChildChange.properties: boolean or array is expected\");\n\t\t\t}\n\n\t\t\t// A slot was changed\n\t\t\tif (type === \"slot\") {\n\t\t\t\t// The config object does not have a slots field\n\t\t\t\tif (config.slots === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the short format: slots: true/false\n\t\t\t\tif (typeof config.slots === \"boolean\") {\n\t\t\t\t\treturn config.slots;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the complex format: slots: [...]\n\t\t\t\tif (Array.isArray(config.slots)) {\n\t\t\t\t\treturn config.slots.includes(name);\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"Wrong format for invalidateOnChildChange.slots: boolean or array is expected\");\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(\"Wrong format for invalidateOnChildChange: boolean or object is expected\");\n\t}\n}\n\nconst validateSingleProperty = (value: PropertyValue, propData: Property) => {\n\tconst propertyType = propData.type;\n\tlet propertyValidator = propData.validator;\n\n\tif (propertyType && (propertyType as typeof DataType).isDataTypeClass) {\n\t\tpropertyValidator = propertyType as typeof DataType;\n\t}\n\n\tif (propertyValidator) {\n\t\treturn (propertyValidator as typeof DataType).isValid(value) ? value : propData.defaultValue;\n\t}\n\n\tif (!propertyType || propertyType === String) {\n\t\treturn (typeof value === \"string\" || typeof value === \"undefined\" || value === null) ? value : value.toString();\n\t}\n\n\tif (propertyType === Boolean) {\n\t\treturn typeof value === \"boolean\" ? value : false;\n\t}\n\n\tif (propertyType === Object) {\n\t\treturn typeof value === \"object\" ? value : propData.defaultValue;\n\t}\n\n\t// Check if \"value\" is part of the enum (propertyType) values and return the defaultValue if not found.\n\treturn value as string in propertyType ? value : propData.defaultValue;\n};\n\nconst validateSingleSlot = (value: Node, slotData: Slot) => {\n\tvalue && getSlottedNodes(value).forEach(el => {\n\t\tif (!(el instanceof slotData.type)) {\n\t\t\tthrow new Error(`The element is not of type ${slotData.type.toString()}`);\n\t\t}\n\t});\n\n\treturn value;\n};\n\nexport default UI5ElementMetadata;\nexport type {\n\tProperty,\n\tPropertyValue,\n\tSlot,\n\tSlotValue,\n\tEventData,\n\tState,\n\tMetadata,\n};\n"]}
1
+ {"version":3,"file":"UI5ElementMetadata.js","sourceRoot":"","sources":["../src/UI5ElementMetadata.ts"],"names":[],"mappings":"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","sourcesContent":["import { camelToKebabCase, kebabToCamelCase } from \"./util/StringHelper.js\";\nimport { getSlottedNodes } from \"./util/SlotsHelper.js\";\nimport { getEffectiveScopingSuffixForTag } from \"./CustomElementsScopeUtils.js\";\nimport type UI5Element from \"./UI5Element.js\";\n\ntype SlotInvalidation = {\n\tproperties: boolean | Array<string>,\n\tslots: boolean | Array<string>,\n}\n\ntype Slot = {\n\ttype: typeof Node | typeof HTMLElement,\n\tdefault?: boolean,\n\tpropertyName?: string,\n\tindividualSlots?: boolean,\n\tinvalidateOnChildChange?: boolean | SlotInvalidation,\n};\n\ntype SlotValue = Node;\n\ntype Property = {\n\ttype?: BooleanConstructor | StringConstructor | ObjectConstructor | NumberConstructor | ArrayConstructor,\n\tnoAttribute?: boolean,\n\tconverter?: {\n\t\tfromAttribute(value: string | null, type: unknown): string | number | boolean | null | undefined,\n\t\ttoAttribute(value: unknown, type: unknown): string | null,\n\t}\n}\n\ntype PropertyValue = boolean | number | string | object | undefined | null;\n\ntype EventData = Record<string, { detail?: Record<string, object>, cancelable?: boolean, bubbles?: boolean }>;\n\ntype I18nBundleAccessorValue = {\n\tbundleName: string,\n\ttarget: typeof UI5Element\n};\n\ntype I18nBundleAccessors = Record<string, I18nBundleAccessorValue>;\n\ntype Metadata = {\n\ttag?: string,\n\tmanagedSlots?: boolean,\n\tproperties?: Record<string, Property>,\n\tslots?: Record<string, Slot>,\n\tevents?: EventData,\n\tfastNavigation?: boolean,\n\tthemeAware?: boolean,\n\tlanguageAware?: boolean,\n\tcldr?: boolean,\n\tformAssociated?: boolean,\n\tshadowRootOptions?: Partial<ShadowRootInit>\n\tfeatures?: Array<string>\n\ti18n?: I18nBundleAccessors\n};\n\ntype State = Record<string, PropertyValue | Array<SlotValue>>;\n\n/**\n * @class\n * @public\n */\nclass UI5ElementMetadata {\n\tmetadata: Metadata;\n\t_initialState: State | undefined;\n\n\tconstructor(metadata: Metadata) {\n\t\tthis.metadata = metadata;\n\t}\n\n\tgetInitialState() {\n\t\tif (Object.prototype.hasOwnProperty.call(this, \"_initialState\")) {\n\t\t\treturn this._initialState!;\n\t\t}\n\t\tconst initialState: State = {};\n\t\tconst slotsAreManaged = this.slotsAreManaged();\n\n\t\t// Initialize slots\n\t\tif (slotsAreManaged) {\n\t\t\tconst slots = this.getSlots();\n\t\t\tfor (const [slotName, slotData] of Object.entries<Slot>(slots)) { // eslint-disable-line\n\t\t\t\tconst propertyName = slotData.propertyName || slotName;\n\t\t\t\tinitialState[propertyName] = [];\n\t\t\t\tinitialState[kebabToCamelCase(propertyName)] = initialState[propertyName];\n\t\t\t}\n\t\t}\n\n\t\tthis._initialState = initialState;\n\t\treturn initialState;\n\t}\n\n\t/**\n\t * Validates the slot's value and returns it if correct\n\t * or throws an exception if not.\n\t * **Note:** Only intended for use by UI5Element.js\n\t * @public\n\t */\n\tstatic validateSlotValue(value: Node, slotData: Slot): Node {\n\t\treturn validateSingleSlot(value, slotData);\n\t}\n\n\t/**\n\t * Returns the tag of the UI5 Element without the scope\n\t * @public\n\t */\n\tgetPureTag(): string {\n\t\treturn this.metadata.tag || \"\";\n\t}\n\n\t/**\n\t * Returns the tag of the UI5 Element\n\t * @public\n\t */\n\tgetTag(): string {\n\t\tconst pureTag = this.metadata.tag;\n\n\t\tif (!pureTag) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst suffix = getEffectiveScopingSuffixForTag(pureTag);\n\t\tif (!suffix) {\n\t\t\treturn pureTag;\n\t\t}\n\n\t\treturn `${pureTag}-${suffix}`;\n\t}\n\n\t/**\n\t * Determines whether a property should have an attribute counterpart\n\t * @public\n\t * @param propName\n\t */\n\thasAttribute(propName: string): boolean {\n\t\tconst propData = this.getProperties()[propName];\n\t\treturn propData.type !== Object && propData.type !== Array && !propData.noAttribute;\n\t}\n\n\t/**\n\t * Returns an array with the properties of the UI5 Element (in camelCase)\n\t * @public\n\t */\n\tgetPropertiesList(): Array<string> {\n\t\treturn Object.keys(this.getProperties());\n\t}\n\n\t/**\n\t * Returns an array with the attributes of the UI5 Element (in kebab-case)\n\t * @public\n\t */\n\tgetAttributesList(): Array<string> {\n\t\treturn this.getPropertiesList().filter(this.hasAttribute.bind(this)).map(camelToKebabCase);\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has a default slot of type Node, therefore can slot text\n\t */\n\tcanSlotText() {\n\t\treturn (this.getSlots().default)?.type === Node;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element supports any slots\n\t * @public\n\t */\n\thasSlots(): boolean {\n\t\treturn !!Object.entries(this.getSlots()).length;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element supports any slots with \"individualSlots: true\"\n\t * @public\n\t */\n\thasIndividualSlots(): boolean {\n\t\treturn this.slotsAreManaged() && Object.values(this.getSlots()).some(slotData => slotData.individualSlots);\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element needs to invalidate if children are added/removed/changed\n\t * @public\n\t */\n\tslotsAreManaged(): boolean {\n\t\treturn !!this.metadata.managedSlots;\n\t}\n\n\t/**\n\t * Determines whether this control supports F6 fast navigation\n\t * @public\n\t */\n\tsupportsF6FastNavigation(): boolean {\n\t\treturn !!this.metadata.fastNavigation;\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of properties and their metadata definitions\n\t * @public\n\t */\n\tgetProperties(): Record<string, Property> {\n\t\tif (!this.metadata.properties) {\n\t\t\tthis.metadata.properties = {};\n\t\t}\n\t\treturn this.metadata.properties;\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of events and their metadata definitions\n\t * @public\n\t */\n\tgetEvents(): EventData {\n\t\tif (!this.metadata.events) {\n\t\t\tthis.metadata.events = {};\n\t\t}\n\t\treturn this.metadata.events;\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of slots and their metadata definitions\n\t * @public\n\t */\n\t getSlots(): Record<string, Slot> {\n\t\tif (!this.metadata.slots) {\n\t\t\tthis.metadata.slots = {};\n\t\t}\n\t\treturn this.metadata.slots;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has any translatable texts (needs to be invalidated upon language change)\n\t */\n\tisLanguageAware(): boolean {\n\t\treturn !!this.metadata.languageAware;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has any theme dependant carachteristics.\n\t */\n\t isThemeAware(): boolean {\n\t\treturn !!this.metadata.themeAware;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element needs CLDR assets to be fetched to work correctly\n\t */\n\tneedsCLDR(): boolean {\n\t\treturn !!this.metadata.cldr;\n\t}\n\n\tgetShadowRootOptions(): Partial<ShadowRootInit> {\n\t\treturn this.metadata.shadowRootOptions || {};\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has any theme dependant carachteristics.\n\t */\n\t isFormAssociated(): boolean {\n\t\treturn !!this.metadata.formAssociated;\n\t}\n\n\t/**\n\t * Matches a changed entity (property/slot) with the given name against the \"invalidateOnChildChange\" configuration\n\t * and determines whether this should cause and invalidation\n\t *\n\t * @param slotName the name of the slot in which a child was changed\n\t * @param type the type of change in the child: \"property\" or \"slot\"\n\t * @param name the name of the property/slot that changed\n\t */\n\tshouldInvalidateOnChildChange(slotName: string, type: \"property\" | \"slot\", name: string): boolean {\n\t\tconst config = this.getSlots()[slotName].invalidateOnChildChange;\n\n\t\t// invalidateOnChildChange was not set in the slot metadata - by default child changes do not affect the component\n\t\tif (config === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// The simple format was used: invalidateOnChildChange: true/false;\n\t\tif (typeof config === \"boolean\") {\n\t\t\treturn config;\n\t\t}\n\n\t\t// The complex format was used: invalidateOnChildChange: { properties, slots }\n\t\tif (typeof config === \"object\") {\n\t\t\t// A property was changed\n\t\t\tif (type === \"property\") {\n\t\t\t\t// The config object does not have a properties field\n\t\t\t\tif (config.properties === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the short format: properties: true/false\n\t\t\t\tif (typeof config.properties === \"boolean\") {\n\t\t\t\t\treturn config.properties;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the complex format: properties: [...]\n\t\t\t\tif (Array.isArray(config.properties)) {\n\t\t\t\t\treturn config.properties.includes(name);\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"Wrong format for invalidateOnChildChange.properties: boolean or array is expected\");\n\t\t\t}\n\n\t\t\t// A slot was changed\n\t\t\tif (type === \"slot\") {\n\t\t\t\t// The config object does not have a slots field\n\t\t\t\tif (config.slots === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the short format: slots: true/false\n\t\t\t\tif (typeof config.slots === \"boolean\") {\n\t\t\t\t\treturn config.slots;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the complex format: slots: [...]\n\t\t\t\tif (Array.isArray(config.slots)) {\n\t\t\t\t\treturn config.slots.includes(name);\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"Wrong format for invalidateOnChildChange.slots: boolean or array is expected\");\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(\"Wrong format for invalidateOnChildChange: boolean or object is expected\");\n\t}\n\n\tgetI18n(): I18nBundleAccessors {\n\t\tif (!this.metadata.i18n) {\n\t\t\tthis.metadata.i18n = {};\n\t\t}\n\t\treturn this.metadata.i18n;\n\t}\n}\n\nconst validateSingleSlot = (value: Node, slotData: Slot) => {\n\tvalue && getSlottedNodes(value).forEach(el => {\n\t\tif (!(el instanceof slotData.type)) {\n\t\t\tthrow new Error(`The element is not of type ${slotData.type.toString()}`);\n\t\t}\n\t});\n\n\treturn value;\n};\n\nexport default UI5ElementMetadata;\nexport type {\n\tProperty,\n\tPropertyValue,\n\tSlot,\n\tSlotValue,\n\tEventData,\n\tState,\n\tMetadata,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AnimationQueue.js","sourceRoot":"","sources":["../../src/animations/AnimationQueue.ts"],"names":[],"mappings":"AACA,MAAM,KAAK,GAAG,IAAI,OAAO,EAAgC,CAAC;AAE1D,MAAM,cAAc;IACnB,MAAM,KAAK,KAAK;QACf,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAAoB,EAAE,IAAc;QAClD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACxB,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SACvB;QAED,KAAK,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,OAAoB,EAAE,IAAc;QAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACxB,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SACvB;QAED,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACvB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAExC,IAAI,YAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,YAAa,CAAC,KAAK,EAAG,CAAC,CAAC;aAC3D;YACD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAoB,EAAE,IAAc;QAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,YAAY,EAAE;YACjB,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SACtC;aAAM;YACN,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SAClC;IACF,CAAC;CACD;AAED,eAAe,cAAc,CAAC","sourcesContent":["type TaskType =\t() => Promise<void>;\nconst tasks = new WeakMap<HTMLElement, Array<TaskType>>();\n\nclass AnimationQueue {\n\tstatic get tasks() {\n\t\treturn tasks;\n\t}\n\n\tstatic enqueue(element: HTMLElement, task: TaskType) {\n\t\tif (!tasks.has(element)) {\n\t\t\ttasks.set(element, []);\n\t\t}\n\n\t\ttasks.get(element)!.push(task);\n\t}\n\n\tstatic run(element: HTMLElement, task: TaskType): Promise<void> {\n\t\tif (!tasks.has(element)) {\n\t\t\ttasks.set(element, []);\n\t\t}\n\n\t\treturn task().then(() => {\n\t\t\tconst elementTasks = tasks.get(element);\n\n\t\t\tif (elementTasks!.length > 0) {\n\t\t\t\treturn AnimationQueue.run(element, elementTasks!.shift()!);\n\t\t\t}\n\t\t\ttasks.delete(element);\n\t\t});\n\t}\n\n\tstatic push(element: HTMLElement, task: TaskType) {\n\t\tconst elementTasks = tasks.get(element);\n\n\t\tif (elementTasks) {\n\t\t\tAnimationQueue.enqueue(element, task);\n\t\t} else {\n\t\t\tAnimationQueue.run(element, task);\n\t\t}\n\t}\n}\n\nexport default AnimationQueue;\n"]}
1
+ {"version":3,"file":"AnimationQueue.js","sourceRoot":"","sources":["../../src/animations/AnimationQueue.ts"],"names":[],"mappings":"AACA,MAAM,KAAK,GAAG,IAAI,OAAO,EAAgC,CAAC;AAE1D,MAAM,cAAc;IACnB,MAAM,KAAK,KAAK;QACf,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAAoB,EAAE,IAAc;QAClD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACxB,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,OAAoB,EAAE,IAAc;QAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACvB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAExC,IAAI,YAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,YAAa,CAAC,KAAK,EAAG,CAAC,CAAC;YAC5D,CAAC;YACD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAoB,EAAE,IAAc;QAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,YAAY,EAAE,CAAC;YAClB,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACP,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;CACD;AAED,eAAe,cAAc,CAAC","sourcesContent":["type TaskType =\t() => Promise<void>;\nconst tasks = new WeakMap<HTMLElement, Array<TaskType>>();\n\nclass AnimationQueue {\n\tstatic get tasks() {\n\t\treturn tasks;\n\t}\n\n\tstatic enqueue(element: HTMLElement, task: TaskType) {\n\t\tif (!tasks.has(element)) {\n\t\t\ttasks.set(element, []);\n\t\t}\n\n\t\ttasks.get(element)!.push(task);\n\t}\n\n\tstatic run(element: HTMLElement, task: TaskType): Promise<void> {\n\t\tif (!tasks.has(element)) {\n\t\t\ttasks.set(element, []);\n\t\t}\n\n\t\treturn task().then(() => {\n\t\t\tconst elementTasks = tasks.get(element);\n\n\t\t\tif (elementTasks!.length > 0) {\n\t\t\t\treturn AnimationQueue.run(element, elementTasks!.shift()!);\n\t\t\t}\n\t\t\ttasks.delete(element);\n\t\t});\n\t}\n\n\tstatic push(element: HTMLElement, task: TaskType) {\n\t\tconst elementTasks = tasks.get(element);\n\n\t\tif (elementTasks) {\n\t\t\tAnimationQueue.enqueue(element, task);\n\t\t} else {\n\t\t\tAnimationQueue.run(element, task);\n\t\t}\n\t}\n}\n\nexport default AnimationQueue;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"animate.js","sourceRoot":"","sources":["../../src/animations/animate.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,qBAAqB,CAAC;AASjD,MAAM,OAAO,GAAG,CAAC,OAAuB,EAAE,EAAE;IAC3C,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,cAAsB,CAAC;IAC3B,IAAI,IAAgB,CAAC;IACrB,IAAI,gBAA6C,CAAC;IAElD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrD,gBAAgB,GAAG,SAAS,CAAC,EAAE;YAC9B,KAAK,GAAG,KAAK,IAAI,SAAS,CAAC;YAE3B,MAAM,WAAW,GAAG,SAAS,GAAG,KAAK,CAAC;YACtC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC;YAEjD,IAAI,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACpC,MAAM,cAAc,GAAG,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,oCAAoC;gBAC7F,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAChC,IAAI,CAAC,OAAO,EAAE;oBACb,cAAc,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;iBACzD;aACD;iBAAM;gBACN,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACnB,OAAO,EAAE,CAAC;aACV;QACF,CAAC,CAAC;QAEF,IAAI,GAAG,GAAG,EAAE;YACX,OAAO,GAAG,IAAI,CAAC;YACf,oBAAoB,CAAC,cAAc,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC;IACH,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAa,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAEpC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE;QACzC,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU,EAAE;YAC9C,OAAO,CAAC,WAAW,EAAE,CAAC;SACtB;QAED,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAExC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACN,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;QACtB,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI;KAChB,CAAC;AACH,CAAC,CAAC;AACF,MAAM,QAAQ,GAAG,GAAG,CAAC;AAErB,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,eAAe,OAAO,CAAC","sourcesContent":["import AnimationQueue from \"./AnimationQueue.js\";\n\ntype AnimateOptions = {\n\tbeforeStart?: () => void,\n\tduration: number,\n\telement: HTMLElement,\n\tadvance: (p: number) => void,\n};\n\nconst animate = (options: AnimateOptions) => {\n\tlet start: number | null = null;\n\tlet stopped = false;\n\tlet animationFrame: number;\n\tlet stop: () => void;\n\tlet advanceAnimation: (timestamp: number) => void;\n\n\tconst promise = new Promise<void>((resolve, reject) => {\n\t\tadvanceAnimation = timestamp => {\n\t\t\tstart = start || timestamp;\n\n\t\t\tconst timeElapsed = timestamp - start;\n\t\t\tconst remaining = options.duration - timeElapsed;\n\n\t\t\tif (timeElapsed <= options.duration) {\n\t\t\t\tconst currentAdvance = 1 - remaining / options.duration; // easing formula (currently linear)\n\t\t\t\toptions.advance(currentAdvance);\n\t\t\t\tif (!stopped) {\n\t\t\t\t\tanimationFrame = requestAnimationFrame(advanceAnimation);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toptions.advance(1);\n\t\t\t\tresolve();\n\t\t\t}\n\t\t};\n\n\t\tstop = () => {\n\t\t\tstopped = true;\n\t\t\tcancelAnimationFrame(animationFrame);\n\t\t\treject(new Error(\"animation stopped\"));\n\t\t};\n\t}).catch((reason: Error) => reason);\n\n\tAnimationQueue.push(options.element, () => {\n\t\tif (typeof options.beforeStart === \"function\") {\n\t\t\toptions.beforeStart();\n\t\t}\n\n\t\trequestAnimationFrame(advanceAnimation);\n\n\t\treturn new Promise(resolve => {\n\t\t\tpromise.then(() => resolve());\n\t\t});\n\t});\n\n\treturn {\n\t\tpromise: () => promise,\n\t\tstop: () => stop,\n\t};\n};\nconst duration = 400;\n\nexport { duration };\nexport type { AnimateOptions };\nexport default animate;\n"]}
1
+ {"version":3,"file":"animate.js","sourceRoot":"","sources":["../../src/animations/animate.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,qBAAqB,CAAC;AASjD,MAAM,OAAO,GAAG,CAAC,OAAuB,EAAE,EAAE;IAC3C,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,cAAsB,CAAC;IAC3B,IAAI,IAAgB,CAAC;IACrB,IAAI,gBAA6C,CAAC;IAElD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrD,gBAAgB,GAAG,SAAS,CAAC,EAAE;YAC9B,KAAK,GAAG,KAAK,IAAI,SAAS,CAAC;YAE3B,MAAM,WAAW,GAAG,SAAS,GAAG,KAAK,CAAC;YACtC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC;YAEjD,IAAI,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrC,MAAM,cAAc,GAAG,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,oCAAoC;gBAC7F,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAChC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACd,cAAc,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;gBAC1D,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACnB,OAAO,EAAE,CAAC;YACX,CAAC;QACF,CAAC,CAAC;QAEF,IAAI,GAAG,GAAG,EAAE;YACX,OAAO,GAAG,IAAI,CAAC;YACf,oBAAoB,CAAC,cAAc,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC;IACH,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAa,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAEpC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE;QACzC,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YAC/C,OAAO,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;QAED,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAExC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACN,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;QACtB,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI;KAChB,CAAC;AACH,CAAC,CAAC;AACF,MAAM,QAAQ,GAAG,GAAG,CAAC;AAErB,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,eAAe,OAAO,CAAC","sourcesContent":["import AnimationQueue from \"./AnimationQueue.js\";\n\ntype AnimateOptions = {\n\tbeforeStart?: () => void,\n\tduration: number,\n\telement: HTMLElement,\n\tadvance: (p: number) => void,\n};\n\nconst animate = (options: AnimateOptions) => {\n\tlet start: number | null = null;\n\tlet stopped = false;\n\tlet animationFrame: number;\n\tlet stop: () => void;\n\tlet advanceAnimation: (timestamp: number) => void;\n\n\tconst promise = new Promise<void>((resolve, reject) => {\n\t\tadvanceAnimation = timestamp => {\n\t\t\tstart = start || timestamp;\n\n\t\t\tconst timeElapsed = timestamp - start;\n\t\t\tconst remaining = options.duration - timeElapsed;\n\n\t\t\tif (timeElapsed <= options.duration) {\n\t\t\t\tconst currentAdvance = 1 - remaining / options.duration; // easing formula (currently linear)\n\t\t\t\toptions.advance(currentAdvance);\n\t\t\t\tif (!stopped) {\n\t\t\t\t\tanimationFrame = requestAnimationFrame(advanceAnimation);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toptions.advance(1);\n\t\t\t\tresolve();\n\t\t\t}\n\t\t};\n\n\t\tstop = () => {\n\t\t\tstopped = true;\n\t\t\tcancelAnimationFrame(animationFrame);\n\t\t\treject(new Error(\"animation stopped\"));\n\t\t};\n\t}).catch((reason: Error) => reason);\n\n\tAnimationQueue.push(options.element, () => {\n\t\tif (typeof options.beforeStart === \"function\") {\n\t\t\toptions.beforeStart();\n\t\t}\n\n\t\trequestAnimationFrame(advanceAnimation);\n\n\t\treturn new Promise(resolve => {\n\t\t\tpromise.then(() => resolve());\n\t\t});\n\t});\n\n\treturn {\n\t\tpromise: () => promise,\n\t\tstop: () => stop,\n\t};\n};\nconst duration = 400;\n\nexport { duration };\nexport type { AnimateOptions };\nexport default animate;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"slideUp.js","sourceRoot":"","sources":["../../src/animations/slideUp.ts"],"names":[],"mappings":"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","sourcesContent":["import animate, { duration } from \"./animate.js\";\n\nconst slideUp = (element: HTMLElement) => {\n\t// Get Computed styles\n\tlet computedStyles: CSSStyleDeclaration,\n\t\tpaddingTop: number,\n\t\tpaddingBottom: number,\n\t\tmarginTop: number,\n\t\tmarginBottom: number,\n\t\theight: number;\n\n\t// Store inline styles\n\tlet storedOverflow: string,\n\t\tstoredPaddingTop: string,\n\t\tstoredPaddingBottom: string,\n\t\tstoredMarginTop: string,\n\t\tstoredMarginBottom: string,\n\t\tstoredHeight: string;\n\n\tconst animation = animate({\n\t\tbeforeStart: () => {\n\t\t\t// Get Computed styles\n\t\t\tconst el = element;\n\t\t\tcomputedStyles = getComputedStyle(el);\n\t\t\tpaddingTop = parseFloat(computedStyles.paddingTop);\n\t\t\tpaddingBottom = parseFloat(computedStyles.paddingBottom);\n\t\t\tmarginTop = parseFloat(computedStyles.marginTop);\n\t\t\tmarginBottom = parseFloat(computedStyles.marginBottom);\n\t\t\theight = parseFloat(computedStyles.height);\n\n\t\t\t// Store inline styles\n\t\t\tstoredOverflow = el.style.overflow;\n\t\t\tstoredPaddingTop = el.style.paddingTop;\n\t\t\tstoredPaddingBottom = el.style.paddingBottom;\n\t\t\tstoredMarginTop = el.style.marginTop;\n\t\t\tstoredMarginBottom = el.style.marginBottom;\n\t\t\tstoredHeight = el.style.height;\n\n\t\t\tel.style.overflow = \"hidden\";\n\t\t},\n\t\tduration,\n\t\telement,\n\t\tadvance: progress => {\n\t\t\telement.style.paddingTop = `${paddingTop - (paddingTop * progress)}px`;\n\t\t\telement.style.paddingBottom = `${paddingBottom - (paddingBottom * progress)}px`;\n\t\t\telement.style.marginTop = `${marginTop - (marginTop * progress)}px`;\n\t\t\telement.style.marginBottom = `${marginBottom - (marginBottom * progress)}px`;\n\t\t\telement.style.height = `${height - (height * progress)}px`;\n\t\t},\n\t});\n\n\tanimation.promise().then(reason => {\n\t\tif (!(reason instanceof Error)) {\n\t\t\telement.style.overflow = storedOverflow;\n\t\t\telement.style.paddingTop = storedPaddingTop;\n\t\t\telement.style.paddingBottom = storedPaddingBottom;\n\t\t\telement.style.marginTop = storedMarginTop;\n\t\t\telement.style.marginBottom = storedMarginBottom;\n\t\t\telement.style.height = storedHeight;\n\t\t\telement.style.display = \"none\";\n\t\t}\n\t});\n\n\treturn animation;\n};\n\nexport default slideUp;\n"]}
1
+ {"version":3,"file":"slideUp.js","sourceRoot":"","sources":["../../src/animations/slideUp.ts"],"names":[],"mappings":"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","sourcesContent":["import animate, { duration } from \"./animate.js\";\n\nconst slideUp = (element: HTMLElement) => {\n\t// Get Computed styles\n\tlet computedStyles: CSSStyleDeclaration,\n\t\tpaddingTop: number,\n\t\tpaddingBottom: number,\n\t\tmarginTop: number,\n\t\tmarginBottom: number,\n\t\theight: number;\n\n\t// Store inline styles\n\tlet storedOverflow: string,\n\t\tstoredPaddingTop: string,\n\t\tstoredPaddingBottom: string,\n\t\tstoredMarginTop: string,\n\t\tstoredMarginBottom: string,\n\t\tstoredHeight: string;\n\n\tconst animation = animate({\n\t\tbeforeStart: () => {\n\t\t\t// Get Computed styles\n\t\t\tconst el = element;\n\t\t\tcomputedStyles = getComputedStyle(el);\n\t\t\tpaddingTop = parseFloat(computedStyles.paddingTop);\n\t\t\tpaddingBottom = parseFloat(computedStyles.paddingBottom);\n\t\t\tmarginTop = parseFloat(computedStyles.marginTop);\n\t\t\tmarginBottom = parseFloat(computedStyles.marginBottom);\n\t\t\theight = parseFloat(computedStyles.height);\n\n\t\t\t// Store inline styles\n\t\t\tstoredOverflow = el.style.overflow;\n\t\t\tstoredPaddingTop = el.style.paddingTop;\n\t\t\tstoredPaddingBottom = el.style.paddingBottom;\n\t\t\tstoredMarginTop = el.style.marginTop;\n\t\t\tstoredMarginBottom = el.style.marginBottom;\n\t\t\tstoredHeight = el.style.height;\n\n\t\t\tel.style.overflow = \"hidden\";\n\t\t},\n\t\tduration,\n\t\telement,\n\t\tadvance: progress => {\n\t\t\telement.style.paddingTop = `${paddingTop - (paddingTop * progress)}px`;\n\t\t\telement.style.paddingBottom = `${paddingBottom - (paddingBottom * progress)}px`;\n\t\t\telement.style.marginTop = `${marginTop - (marginTop * progress)}px`;\n\t\t\telement.style.marginBottom = `${marginBottom - (marginBottom * progress)}px`;\n\t\t\telement.style.height = `${height - (height * progress)}px`;\n\t\t},\n\t});\n\n\tanimation.promise().then(reason => {\n\t\tif (!(reason instanceof Error)) {\n\t\t\telement.style.overflow = storedOverflow;\n\t\t\telement.style.paddingTop = storedPaddingTop;\n\t\t\telement.style.paddingBottom = storedPaddingBottom;\n\t\t\telement.style.marginTop = storedMarginTop;\n\t\t\telement.style.marginBottom = storedMarginBottom;\n\t\t\telement.style.height = storedHeight;\n\t\t\telement.style.display = \"none\";\n\t\t}\n\t});\n\n\treturn animation;\n};\n\nexport default slideUp;\n"]}
@@ -1,9 +1,10 @@
1
1
  import type { I18nText } from "../i18nBundle.js";
2
2
  import type { TemplateFunction } from "../renderer/executeTemplate.js";
3
- type IconLoader = (collectionName: string) => Promise<CollectionData>;
3
+ type IconLoader = (collectionName: string) => Promise<CollectionData | Array<CollectionData>>;
4
4
  type CollectionData = {
5
5
  collection: string;
6
6
  packageName: string;
7
+ themeFamily?: "legacy" | "sap_horizon";
7
8
  version?: string;
8
9
  data: Record<string, {
9
10
  path?: string;
@@ -12,19 +13,53 @@ type CollectionData = {
12
13
  acc?: I18nText;
13
14
  }>;
14
15
  };
15
- type IconData = {
16
+ type IconDatabase = {
16
17
  collection: string;
17
- packageName: string;
18
- pathData: string | Array<string>;
18
+ packageName?: string;
19
+ viewBox?: string;
19
20
  ltr?: boolean;
20
21
  accData?: I18nText;
22
+ };
23
+ type IconData = IconDatabase & {
24
+ pathData?: string | string[];
21
25
  customTemplate?: TemplateFunction;
22
- viewBox?: string;
26
+ };
27
+ type UnsafeIconData = IconDatabase & {
28
+ customTemplateAsString: string;
23
29
  };
24
30
  declare const registerIconLoader: (collectionName: string, loader: IconLoader) => void;
31
+ /**
32
+ * Registers a SVG icon with the given name and associated icon data.
33
+ *
34
+ * This method is used to add an icon to the registry, making it available for use
35
+ * in the application.
36
+ *
37
+ * @public
38
+ * @param { string } name - The name of the icon to register.
39
+ * @param { IconData } iconData - The data associated with the icon: `collection`, `pathData`, `packageName`
40
+ * `customTemplate`, `viewBox`, `ltr`, `accData`.
41
+ *
42
+ * <b>Note:</b> Properties `pathData` and `customTemplate` are mutually exclusive.
43
+ * If both are set, `customTemplate` will be used.
44
+ */
25
45
  declare const registerIcon: (name: string, iconData: IconData) => void;
26
- declare const getIconDataSync: (name: string) => IconData | undefined;
27
- declare const getIconData: (name: string) => Promise<IconData | "ICON_NOT_FOUND" | undefined>;
46
+ /**
47
+ * Registers a SVG icon in the registry with the given name and icon data.
48
+ *
49
+ * <b>Note:</b> This method is unsafe as it allows the SVG content to be passed as a string
50
+ * through the `customTemplateAsString` property of the `iconData`.
51
+ * Ensure that the SVG content is properly validated.
52
+ * Improperly sanitized SVG strings can lead to security vulnerabilities such as XSS (Cross-Site Scripting).
53
+ *
54
+ * @public
55
+ * @param { string } name - The name of the icon to register.
56
+ * @param { UnsafeIconData } iconData - The data for the icon: `collection`, `customTemplateAsString`, `packageName`
57
+ * `viewBox`, `ltr` and `accData`.
58
+ * @since 2.14.0
59
+ */
60
+ declare const unsafeRegisterIcon: (name: string, iconData: UnsafeIconData) => void;
61
+ declare const getIconDataSync: (iconName: string) => IconData | UnsafeIconData | undefined;
62
+ declare const getIconData: (iconName: string) => Promise<IconData | UnsafeIconData | "ICON_NOT_FOUND" | undefined>;
28
63
  /**
29
64
  * Returns the accessible name for the given icon,
30
65
  * or undefined if accessible name is not present.
@@ -32,7 +67,7 @@ declare const getIconData: (name: string) => Promise<IconData | "ICON_NOT_FOUND"
32
67
  * @param { string } name
33
68
  * @return { Promise }
34
69
  */
35
- declare const getIconAccessibleName: (name: string) => Promise<string | undefined>;
70
+ declare const getIconAccessibleName: (name: string | undefined) => Promise<string | undefined>;
36
71
  declare const _getRegisteredNames: () => Promise<string[]>;
37
- export { registerIconLoader, getIconData, getIconDataSync, getIconAccessibleName, registerIcon, _getRegisteredNames, };
38
- export type { IconData, CollectionData, };
72
+ export { registerIconLoader, getIconData, getIconDataSync, getIconAccessibleName, registerIcon, unsafeRegisterIcon, _getRegisteredNames, };
73
+ export type { IconData, UnsafeIconData, CollectionData, };
@@ -1,7 +1,9 @@
1
1
  import getSharedResource from "../getSharedResource.js";
2
- import { getIconCollectionByAlias } from "../assets-meta/IconCollectionsAlias.js";
3
- import { getEffectiveIconCollection } from "../config/Icons.js";
2
+ import { getIconCollectionByAlias } from "./util/IconCollectionsAlias.js";
3
+ import { registerIconCollectionForTheme } from "./util/IconCollectionsByTheme.js";
4
+ import getEffectiveIconCollection from "./util/getIconCollectionByTheme.js";
4
5
  import { getI18nBundle } from "../i18nBundle.js";
6
+ const DEFAULT_THEME_FAMILY = "legacy"; // includes sap_fiori_*
5
7
  const loaders = new Map();
6
8
  const registry = getSharedResource("SVGIcons.registry", new Map());
7
9
  const iconCollectionPromises = getSharedResource("SVGIcons.promises", new Map());
@@ -31,26 +33,63 @@ const _fillRegistry = (bundleData) => {
31
33
  });
32
34
  });
33
35
  };
34
- // set
36
+ /**
37
+ * Registers a SVG icon with the given name and associated icon data.
38
+ *
39
+ * This method is used to add an icon to the registry, making it available for use
40
+ * in the application.
41
+ *
42
+ * @public
43
+ * @param { string } name - The name of the icon to register.
44
+ * @param { IconData } iconData - The data associated with the icon: `collection`, `pathData`, `packageName`
45
+ * `customTemplate`, `viewBox`, `ltr`, `accData`.
46
+ *
47
+ * <b>Note:</b> Properties `pathData` and `customTemplate` are mutually exclusive.
48
+ * If both are set, `customTemplate` will be used.
49
+ */
35
50
  const registerIcon = (name, iconData) => {
36
51
  const key = `${iconData.collection}/${name}`;
37
- registry.set(key, {
52
+ const data = {
53
+ collection: iconData.collection,
54
+ packageName: iconData.packageName,
38
55
  pathData: iconData.pathData,
56
+ viewBox: iconData.viewBox,
39
57
  ltr: iconData.ltr,
40
58
  accData: iconData.accData,
41
- packageName: iconData.packageName,
42
59
  customTemplate: iconData.customTemplate,
43
- viewBox: iconData.viewBox,
44
- collection: iconData.collection,
45
- });
60
+ };
61
+ registry.set(key, data);
46
62
  };
47
63
  /**
48
- * Processes the full icon name and splits it into - "name", "collection"
49
- * to form the proper registry key ("collection/name") under which the icon is registered:
64
+ * Registers a SVG icon in the registry with the given name and icon data.
65
+ *
66
+ * <b>Note:</b> This method is unsafe as it allows the SVG content to be passed as a string
67
+ * through the `customTemplateAsString` property of the `iconData`.
68
+ * Ensure that the SVG content is properly validated.
69
+ * Improperly sanitized SVG strings can lead to security vulnerabilities such as XSS (Cross-Site Scripting).
50
70
  *
71
+ * @public
72
+ * @param { string } name - The name of the icon to register.
73
+ * @param { UnsafeIconData } iconData - The data for the icon: `collection`, `customTemplateAsString`, `packageName`
74
+ * `viewBox`, `ltr` and `accData`.
75
+ * @since 2.14.0
76
+ */
77
+ const unsafeRegisterIcon = (name, iconData) => {
78
+ const key = `${iconData.collection}/${name}`;
79
+ const data = {
80
+ collection: iconData.collection,
81
+ customTemplateAsString: iconData.customTemplateAsString,
82
+ packageName: iconData.packageName,
83
+ viewBox: iconData.viewBox,
84
+ ltr: iconData.ltr,
85
+ accData: iconData.accData,
86
+ };
87
+ registry.set(key, data);
88
+ };
89
+ /**
90
+ * Processes the full icon name and splits it into - "name", "collection".
51
91
  * - removes legacy protocol ("sap-icon://")
52
92
  * - resolves aliases (f.e "SAP-icons-TNT/actor" => "tnt/actor")
53
- * - determines theme dependant icon collection (f.e "home" => "SAP-icons-v4/home" in Quartz | "SAP-icons-v5/home" in Horizon)
54
93
  *
55
94
  * @param { string } name
56
95
  * @return { object }
@@ -66,19 +105,17 @@ const processName = (name) => {
66
105
  if (collection) {
67
106
  collection = getIconCollectionByAlias(collection);
68
107
  }
69
- collection = getEffectiveIconCollection(collection);
70
- const registryKey = `${collection}/${name}`;
71
- return { name, collection, registryKey };
108
+ return { name, collection };
72
109
  };
73
- const getIconDataSync = (name) => {
74
- const { registryKey } = processName(name);
75
- return registry.get(registryKey);
110
+ const getIconDataSync = (iconName) => {
111
+ const { name, collection } = processName(iconName);
112
+ return getRegisteredIconData(collection, name);
76
113
  };
77
- const getIconData = async (name) => {
78
- const { collection, registryKey } = processName(name);
114
+ const getIconData = async (iconName) => {
115
+ const { name, collection } = processName(iconName);
79
116
  let iconData = ICON_NOT_FOUND;
80
117
  try {
81
- iconData = (await _loadIconCollectionOnce(collection));
118
+ iconData = (await _loadIconCollectionOnce(getEffectiveIconCollection(collection)));
82
119
  }
83
120
  catch (error) {
84
121
  const e = error;
@@ -87,10 +124,24 @@ const getIconData = async (name) => {
87
124
  if (iconData === ICON_NOT_FOUND) {
88
125
  return iconData;
89
126
  }
90
- if (!registry.has(registryKey)) {
91
- // not filled by another await. many getters will await on the same loader, but fill only once
127
+ const registeredIconData = getRegisteredIconData(collection, name);
128
+ if (registeredIconData) {
129
+ return registeredIconData;
130
+ }
131
+ // not filled by another await. many getters will await on the same loader, but fill only once
132
+ if (Array.isArray(iconData)) {
133
+ iconData.forEach(data => {
134
+ _fillRegistry(data);
135
+ registerIconCollectionForTheme(collection, { [data.themeFamily || DEFAULT_THEME_FAMILY]: data.collection });
136
+ });
137
+ }
138
+ else {
92
139
  _fillRegistry(iconData);
93
140
  }
141
+ return getRegisteredIconData(collection, name);
142
+ };
143
+ const getRegisteredIconData = (collection, name) => {
144
+ const registryKey = `${getEffectiveIconCollection(collection)}/${name}`;
94
145
  return registry.get(registryKey);
95
146
  };
96
147
  /**
@@ -109,8 +160,11 @@ const getIconAccessibleName = async (name) => {
109
160
  iconData = await getIconData(name);
110
161
  }
111
162
  if (iconData && iconData !== ICON_NOT_FOUND && iconData.accData) {
112
- const i18nBundle = await getI18nBundle(iconData.packageName);
113
- return i18nBundle.getText(iconData.accData);
163
+ if (iconData.packageName) {
164
+ const i18nBundle = await getI18nBundle(iconData.packageName);
165
+ return i18nBundle.getText(iconData.accData);
166
+ }
167
+ return iconData.accData?.defaultText || "";
114
168
  }
115
169
  };
116
170
  // test page usage only
@@ -121,5 +175,5 @@ const _getRegisteredNames = async () => {
121
175
  await getIconData("business-suite/3d");
122
176
  return Array.from(registry.keys());
123
177
  };
124
- export { registerIconLoader, getIconData, getIconDataSync, getIconAccessibleName, registerIcon, _getRegisteredNames, };
178
+ export { registerIconLoader, getIconData, getIconDataSync, getIconAccessibleName, registerIcon, unsafeRegisterIcon, _getRegisteredNames, };
125
179
  //# sourceMappingURL=Icons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Icons.js","sourceRoot":"","sources":["../../src/asset-registries/Icons.ts"],"names":[],"mappings":"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","sourcesContent":["import getSharedResource from \"../getSharedResource.js\";\nimport { getIconCollectionByAlias } from \"../assets-meta/IconCollectionsAlias.js\";\nimport { getEffectiveIconCollection } from \"../config/Icons.js\";\nimport { getI18nBundle } from \"../i18nBundle.js\";\nimport type { I18nText } from \"../i18nBundle.js\";\nimport type { TemplateFunction } from \"../renderer/executeTemplate.js\";\n\ntype IconLoader = (collectionName: string) => Promise<CollectionData>;\n\ntype CollectionData = {\n\tcollection: string,\n\tpackageName: string,\n\tversion?: string,\n\tdata: Record<string, {\n\t\tpath?: string,\n\t\tpaths?: Array<string>,\n\t\tltr?: boolean,\n\t\tacc?: I18nText,\n\t}>,\n};\n\ntype IconData = {\n\tcollection: string,\n\tpackageName: string,\n\tpathData: string | Array<string>,\n\tltr?: boolean,\n\taccData?: I18nText,\n\tcustomTemplate?: TemplateFunction,\n\tviewBox?: string,\n};\n\nconst loaders = new Map<string, IconLoader>();\nconst registry = getSharedResource<Map<string, IconData>>(\"SVGIcons.registry\", new Map());\nconst iconCollectionPromises = getSharedResource<Map<string, Promise<CollectionData>>>(\"SVGIcons.promises\", new Map());\n\nconst ICON_NOT_FOUND = \"ICON_NOT_FOUND\";\n\nconst registerIconLoader = (collectionName: string, loader: IconLoader) => {\n\tloaders.set(collectionName, loader);\n};\n\nconst _loadIconCollectionOnce = async (collectionName: string) => {\n\tif (!iconCollectionPromises.has(collectionName)) {\n\t\tif (!loaders.has(collectionName)) {\n\t\t\tthrow new Error(`No loader registered for the ${collectionName} icons collection. Probably you forgot to import the \"AllIcons.js\" module for the respective package.`);\n\t\t}\n\n\t\tconst loadIcons = loaders.get(collectionName)!;\n\t\ticonCollectionPromises.set(collectionName, loadIcons(collectionName));\n\t}\n\n\treturn iconCollectionPromises.get(collectionName);\n};\n\nconst _fillRegistry = (bundleData: CollectionData) => {\n\tObject.keys(bundleData.data).forEach(iconName => {\n\t\tconst iconData = bundleData.data[iconName];\n\n\t\tregisterIcon(iconName, {\n\t\t\tpathData: (iconData.path || iconData.paths)!,\n\t\t\tltr: iconData.ltr,\n\t\t\taccData: iconData.acc,\n\t\t\tcollection: bundleData.collection,\n\t\t\tpackageName: bundleData.packageName,\n\t\t});\n\t});\n};\n\n// set\nconst registerIcon = (name: string, iconData: IconData) => { // eslint-disable-line\n\tconst key = `${iconData.collection}/${name}`;\n\n\tregistry.set(key, {\n\t\tpathData: iconData.pathData,\n\t\tltr: iconData.ltr,\n\t\taccData: iconData.accData,\n\t\tpackageName: iconData.packageName,\n\t\tcustomTemplate: iconData.customTemplate,\n\t\tviewBox: iconData.viewBox,\n\t\tcollection: iconData.collection,\n\t});\n};\n\n/**\n * Processes the full icon name and splits it into - \"name\", \"collection\"\n * to form the proper registry key (\"collection/name\") under which the icon is registered:\n *\n * - removes legacy protocol (\"sap-icon://\")\n * - resolves aliases (f.e \"SAP-icons-TNT/actor\" => \"tnt/actor\")\n * - determines theme dependant icon collection (f.e \"home\" => \"SAP-icons-v4/home\" in Quartz | \"SAP-icons-v5/home\" in Horizon)\n *\n * @param { string } name\n * @return { object }\n */\nconst processName = (name: string) => {\n\t// silently support ui5-compatible URIs\n\tif (name.startsWith(\"sap-icon://\")) {\n\t\tname = name.replace(\"sap-icon://\", \"\");\n\t}\n\n\tlet collection: string;\n\t[name, collection] = name.split(\"/\").reverse();\n\n\tname = name.replace(\"icon-\", \"\");\n\n\tif (collection) {\n\t\tcollection = getIconCollectionByAlias(collection);\n\t}\n\tcollection = getEffectiveIconCollection(collection);\n\n\tconst registryKey = `${collection}/${name}`;\n\treturn { name, collection, registryKey };\n};\n\nconst getIconDataSync = (name: string) => {\n\tconst { registryKey } = processName(name);\n\treturn registry.get(registryKey);\n};\n\nconst getIconData = async (name: string) => {\n\tconst { collection, registryKey } = processName(name);\n\n\tlet iconData: string | CollectionData = ICON_NOT_FOUND;\n\ttry {\n\t\ticonData = (await _loadIconCollectionOnce(collection))!;\n\t} catch (error: unknown) {\n\t\tconst e = error as Error;\n\t\tconsole.error(e.message); /* eslint-disable-line */\n\t}\n\n\tif (iconData === ICON_NOT_FOUND) {\n\t\treturn iconData;\n\t}\n\n\tif (!registry.has(registryKey)) {\n\t\t// not filled by another await. many getters will await on the same loader, but fill only once\n\t\t_fillRegistry(iconData as CollectionData);\n\t}\n\treturn registry.get(registryKey);\n};\n\n/**\n * Returns the accessible name for the given icon,\n * or undefined if accessible name is not present.\n *\n * @param { string } name\n * @return { Promise }\n */\nconst getIconAccessibleName = async (name: string): Promise<string | undefined> => {\n\tif (!name) {\n\t\treturn;\n\t}\n\n\tlet iconData: typeof ICON_NOT_FOUND | IconData | undefined = getIconDataSync(name);\n\n\tif (!iconData) {\n\t\ticonData = await getIconData(name);\n\t}\n\n\tif (iconData && iconData !== ICON_NOT_FOUND && iconData.accData) {\n\t\tconst i18nBundle = await getI18nBundle(iconData.packageName);\n\t\treturn i18nBundle.getText(iconData.accData);\n\t}\n};\n\n// test page usage only\nconst _getRegisteredNames = async () => {\n\t// fetch one icon of each collection to trigger the bundle load\n\tawait getIconData(\"edit\");\n\tawait getIconData(\"tnt/arrow\");\n\tawait getIconData(\"business-suite/3d\");\n\treturn Array.from(registry.keys());\n};\n\nexport {\n\tregisterIconLoader,\n\tgetIconData,\n\tgetIconDataSync,\n\tgetIconAccessibleName,\n\tregisterIcon,\n\t_getRegisteredNames,\n};\n\nexport type {\n\tIconData,\n\tCollectionData,\n};\n"]}
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_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 IconDatabase = {\n\tcollection: string;\n\tpackageName?: string;\n\tviewBox?: string;\n\tltr?: boolean;\n\taccData?: I18nText;\n}\n\ntype IconData = IconDatabase & {\n\tpathData?: string | string[];\n\tcustomTemplate?: TemplateFunction;\n};\n\ntype UnsafeIconData = IconDatabase & {\n\tcustomTemplateAsString: string;\n};\n\nconst loaders = new Map<string, IconLoader>();\nconst registry = getSharedResource<Map<string, IconData | UnsafeIconData>>(\"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/**\n * Registers a SVG icon with the given name and associated icon data.\n *\n * This method is used to add an icon to the registry, making it available for use\n * in the application.\n *\n * @public\n * @param { string } name - The name of the icon to register.\n * @param { IconData } iconData - The data associated with the icon: `collection`, `pathData`, `packageName`\n * `customTemplate`, `viewBox`, `ltr`, `accData`.\n *\n * <b>Note:</b> Properties `pathData` and `customTemplate` are mutually exclusive.\n * If both are set, `customTemplate` will be used.\n */\nconst registerIcon = (name: string, iconData: IconData) => { // eslint-disable-line\n\tconst key = `${iconData.collection}/${name}`;\n\n\tconst data: IconData = {\n\t\tcollection: iconData.collection,\n\t\tpackageName: iconData.packageName,\n\t\tpathData: iconData.pathData,\n\t\tviewBox: iconData.viewBox,\n\t\tltr: iconData.ltr,\n\t\taccData: iconData.accData,\n\t\tcustomTemplate: iconData.customTemplate,\n\t};\n\n\tregistry.set(key, data);\n};\n\n/**\n * Registers a SVG icon in the registry with the given name and icon data.\n *\n * <b>Note:</b> This method is unsafe as it allows the SVG content to be passed as a string\n * through the `customTemplateAsString` property of the `iconData`.\n * Ensure that the SVG content is properly validated.\n * Improperly sanitized SVG strings can lead to security vulnerabilities such as XSS (Cross-Site Scripting).\n *\n * @public\n * @param { string } name - The name of the icon to register.\n * @param { UnsafeIconData } iconData - The data for the icon: `collection`, `customTemplateAsString`, `packageName`\n * `viewBox`, `ltr` and `accData`.\n * @since 2.14.0\n */\nconst unsafeRegisterIcon = (name: string, iconData: UnsafeIconData) => {\n\tconst key = `${iconData.collection}/${name}`;\n\n\tconst data: UnsafeIconData = {\n\t\tcollection: iconData.collection,\n\t\tcustomTemplateAsString: iconData.customTemplateAsString,\n\t\tpackageName: iconData.packageName,\n\t\tviewBox: iconData.viewBox,\n\t\tltr: iconData.ltr,\n\t\taccData: iconData.accData,\n\t};\n\n\tregistry.set(key, data);\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 | undefined): 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\tif (iconData.packageName) {\n\t\t\tconst i18nBundle = await getI18nBundle(iconData.packageName);\n\t\t\treturn i18nBundle.getText(iconData.accData);\n\t\t}\n\t\treturn iconData.accData?.defaultText || \"\";\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\tunsafeRegisterIcon,\n\t_getRegisteredNames,\n};\n\nexport type {\n\tIconData,\n\tUnsafeIconData,\n\tCollectionData,\n};\n"]}