@ui5/webcomponents-base 0.0.0-bf8366eb6 → 0.0.0-c143e338b

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 (798) hide show
  1. package/CHANGELOG.md +1064 -0
  2. package/LICENSE.txt +201 -0
  3. package/README.md +7 -10
  4. package/cypress.config.js +3 -0
  5. package/dist/.tsbuildinfobuild +1 -0
  6. package/dist/Assets-fetch.d.ts +1 -0
  7. package/dist/Assets-fetch.js +3 -0
  8. package/dist/Assets-fetch.js.map +1 -0
  9. package/dist/Assets-node.d.ts +12 -0
  10. package/dist/Assets-node.js +14 -0
  11. package/dist/Assets-node.js.map +1 -0
  12. package/dist/Assets.d.ts +1 -0
  13. package/dist/Assets.js +3 -0
  14. package/dist/Assets.js.map +1 -0
  15. package/dist/Boot.js +5 -1
  16. package/dist/Boot.js.map +1 -1
  17. package/dist/CustomElementsRegistry.d.ts +2 -1
  18. package/dist/CustomElementsRegistry.js +5 -2
  19. package/dist/CustomElementsRegistry.js.map +1 -1
  20. package/dist/CustomElementsScopeUtils.d.ts +4 -2
  21. package/dist/CustomElementsScopeUtils.js +8 -1
  22. package/dist/CustomElementsScopeUtils.js.map +1 -1
  23. package/dist/DOMObserver.js.map +1 -1
  24. package/dist/Device.d.ts +16 -1
  25. package/dist/Device.js +6 -3
  26. package/dist/Device.js.map +1 -1
  27. package/dist/DragAndDrop.d.ts +2 -0
  28. package/dist/DragAndDrop.js +5 -0
  29. package/dist/DragAndDrop.js.map +1 -0
  30. package/dist/EventProvider.js.map +1 -1
  31. package/dist/FontFace.js +6 -9
  32. package/dist/FontFace.js.map +1 -1
  33. package/dist/IgnoreCustomElements.js.map +1 -1
  34. package/dist/InitialConfiguration.d.ts +9 -2
  35. package/dist/InitialConfiguration.js +33 -4
  36. package/dist/InitialConfiguration.js.map +1 -1
  37. package/dist/Keys.d.ts +5 -1
  38. package/dist/Keys.js +5 -1
  39. package/dist/Keys.js.map +1 -1
  40. package/dist/Location.d.ts +11 -0
  41. package/dist/Location.js +49 -0
  42. package/dist/Location.js.map +1 -0
  43. package/dist/ManagedStyles.d.ts +4 -6
  44. package/dist/ManagedStyles.js +6 -16
  45. package/dist/ManagedStyles.js.map +1 -1
  46. package/dist/MediaRange.js.map +1 -1
  47. package/dist/PropertiesFileFormat.js.map +1 -1
  48. package/dist/Render.js.map +1 -1
  49. package/dist/RenderQueue.js.map +1 -1
  50. package/dist/Runtimes.js +11 -0
  51. package/dist/Runtimes.js.map +1 -1
  52. package/dist/ScrollbarStyles.d.ts +2 -0
  53. package/dist/ScrollbarStyles.js +9 -0
  54. package/dist/ScrollbarStyles.js.map +1 -0
  55. package/dist/SystemCSSVars.js.map +1 -1
  56. package/dist/UI5Element.d.ts +81 -32
  57. package/dist/UI5Element.js +259 -156
  58. package/dist/UI5Element.js.map +1 -1
  59. package/dist/UI5ElementMetadata.d.ts +25 -16
  60. package/dist/UI5ElementMetadata.js +15 -71
  61. package/dist/UI5ElementMetadata.js.map +1 -1
  62. package/dist/animations/AnimationQueue.js.map +1 -1
  63. package/dist/animations/animate.js.map +1 -1
  64. package/dist/animations/slideUp.js.map +1 -1
  65. package/dist/asset-registries/Icons.d.ts +43 -9
  66. package/dist/asset-registries/Icons.js +51 -8
  67. package/dist/asset-registries/Icons.js.map +1 -1
  68. package/dist/asset-registries/Illustrations.d.ts +133 -8
  69. package/dist/asset-registries/Illustrations.js +82 -1
  70. package/dist/asset-registries/Illustrations.js.map +1 -1
  71. package/dist/asset-registries/LocaleData.js +2 -1
  72. package/dist/asset-registries/LocaleData.js.map +1 -1
  73. package/dist/asset-registries/Themes.d.ts +3 -6
  74. package/dist/asset-registries/Themes.js +1 -2
  75. package/dist/asset-registries/Themes.js.map +1 -1
  76. package/dist/asset-registries/i18n.js.map +1 -1
  77. package/dist/asset-registries/util/IconCollectionsAlias.js.map +1 -1
  78. package/dist/asset-registries/util/IconCollectionsByTheme.js.map +1 -1
  79. package/dist/asset-registries/util/getIconCollectionByTheme.js.map +1 -1
  80. package/dist/config/AnimationMode.js +4 -0
  81. package/dist/config/AnimationMode.js.map +1 -1
  82. package/dist/config/CalendarType.js +5 -0
  83. package/dist/config/CalendarType.js.map +1 -1
  84. package/dist/config/ConfigurationReset.d.ts +4 -0
  85. package/dist/config/ConfigurationReset.js +11 -0
  86. package/dist/config/ConfigurationReset.js.map +1 -0
  87. package/dist/config/Fonts.d.ts +16 -0
  88. package/dist/config/Fonts.js +30 -0
  89. package/dist/config/Fonts.js.map +1 -0
  90. package/dist/config/FormatSettings.js +4 -0
  91. package/dist/config/FormatSettings.js.map +1 -1
  92. package/dist/config/Language.d.ts +2 -1
  93. package/dist/config/Language.js +19 -3
  94. package/dist/config/Language.js.map +1 -1
  95. package/dist/config/NoConflict.js +4 -0
  96. package/dist/config/NoConflict.js.map +1 -1
  97. package/dist/config/Theme.js +5 -2
  98. package/dist/config/Theme.js.map +1 -1
  99. package/dist/config/ThemeRoot.d.ts +3 -1
  100. package/dist/config/ThemeRoot.js +7 -1
  101. package/dist/config/ThemeRoot.js.map +1 -1
  102. package/dist/config/Timezone.js +4 -0
  103. package/dist/config/Timezone.js.map +1 -1
  104. package/dist/config/Tooltips.d.ts +19 -0
  105. package/dist/config/Tooltips.js +29 -0
  106. package/dist/config/Tooltips.js.map +1 -0
  107. package/dist/connectToComponent.js.map +1 -1
  108. package/dist/converters/DOMReference.d.ts +5 -0
  109. package/dist/converters/DOMReference.js +13 -0
  110. package/dist/converters/DOMReference.js.map +1 -0
  111. package/dist/css/MultipleDragGhost.css +17 -0
  112. package/dist/css/OpenUI5PopupStyles.css +5 -0
  113. package/dist/css/ScrollbarStyles.css +3 -0
  114. package/dist/custom-elements-internal.json +2869 -0
  115. package/dist/custom-elements.json +2566 -0
  116. package/dist/decorators/bound.d.ts +1 -0
  117. package/dist/decorators/bound.js +34 -0
  118. package/dist/decorators/bound.js.map +1 -0
  119. package/dist/decorators/customElement.d.ts +40 -0
  120. package/dist/decorators/customElement.js +4 -1
  121. package/dist/decorators/customElement.js.map +1 -1
  122. package/dist/decorators/event-strict.d.ts +15 -0
  123. package/dist/decorators/event-strict.js +26 -0
  124. package/dist/decorators/event-strict.js.map +1 -0
  125. package/dist/decorators/event.d.ts +4 -1
  126. package/dist/decorators/event.js +3 -0
  127. package/dist/decorators/event.js.map +1 -1
  128. package/dist/decorators/i18n.d.ts +17 -0
  129. package/dist/decorators/i18n.js +32 -0
  130. package/dist/decorators/i18n.js.map +1 -0
  131. package/dist/decorators/property.d.ts +1 -1
  132. package/dist/decorators/property.js +1 -1
  133. package/dist/decorators/property.js.map +1 -1
  134. package/dist/decorators/query.d.ts +25 -0
  135. package/dist/decorators/query.js +32 -0
  136. package/dist/decorators/query.js.map +1 -0
  137. package/dist/decorators/queryAll.d.ts +27 -0
  138. package/dist/decorators/queryAll.js +34 -0
  139. package/dist/decorators/queryAll.js.map +1 -0
  140. package/dist/decorators/slot.d.ts +1 -1
  141. package/dist/decorators/slot.js.map +1 -1
  142. package/dist/decorators.d.ts +4 -1
  143. package/dist/decorators.js +4 -1
  144. package/dist/decorators.js.map +1 -1
  145. package/dist/delegate/ItemNavigation.d.ts +1 -1
  146. package/dist/delegate/ItemNavigation.js.map +1 -1
  147. package/dist/delegate/ResizeHandler.js.map +1 -1
  148. package/dist/delegate/ScrollEnablement.js.map +1 -1
  149. package/dist/features/F6Navigation.d.ts +4 -3
  150. package/dist/features/F6Navigation.js +62 -19
  151. package/dist/features/F6Navigation.js.map +1 -1
  152. package/dist/features/InputElementsFormSupport.d.ts +7 -10
  153. package/dist/features/InputElementsFormSupport.js +2 -3
  154. package/dist/features/InputElementsFormSupport.js.map +1 -1
  155. package/dist/features/LegacyDateFormats.js.map +1 -1
  156. package/dist/features/OpenUI5Enablement.d.ts +2 -2
  157. package/dist/features/OpenUI5Enablement.js.map +1 -1
  158. package/dist/features/OpenUI5Support.d.ts +6 -1
  159. package/dist/features/OpenUI5Support.js +45 -29
  160. package/dist/features/OpenUI5Support.js.map +1 -1
  161. package/dist/features/insertOpenUI5PopupStyles.d.ts +2 -0
  162. package/dist/features/insertOpenUI5PopupStyles.js +9 -0
  163. package/dist/features/insertOpenUI5PopupStyles.js.map +1 -0
  164. package/dist/features/patchPatcher.js.map +1 -1
  165. package/dist/features/patchPopup.d.ts +19 -5
  166. package/dist/features/patchPopup.js +75 -5
  167. package/dist/features/patchPopup.js.map +1 -1
  168. package/dist/generated/AssetParameters.js +1 -1
  169. package/dist/generated/AssetParameters.js.map +1 -1
  170. package/dist/generated/VersionInfo.js +5 -5
  171. package/dist/generated/VersionInfo.js.map +1 -1
  172. package/dist/generated/assets/i18n/messagebundle_en.json +1 -0
  173. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -0
  174. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -0
  175. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -0
  176. package/dist/generated/css/BusyIndicator.css.d.ts +2 -3
  177. package/dist/generated/css/BusyIndicator.css.js +1 -6
  178. package/dist/generated/css/BusyIndicator.css.js.map +1 -1
  179. package/dist/generated/css/FontFace.css.d.ts +2 -3
  180. package/dist/generated/css/FontFace.css.js +36 -6
  181. package/dist/generated/css/FontFace.css.js.map +1 -1
  182. package/dist/generated/css/MultipleDragGhost.css.d.ts +2 -0
  183. package/dist/generated/css/MultipleDragGhost.css.js +2 -0
  184. package/dist/generated/css/MultipleDragGhost.css.js.map +1 -0
  185. package/dist/generated/css/OpenUI5PopupStyles.css.d.ts +2 -0
  186. package/dist/generated/css/OpenUI5PopupStyles.css.js +2 -0
  187. package/dist/generated/css/OpenUI5PopupStyles.css.js.map +1 -0
  188. package/dist/generated/css/ScrollbarStyles.css.d.ts +2 -0
  189. package/dist/generated/css/ScrollbarStyles.css.js +2 -0
  190. package/dist/generated/css/ScrollbarStyles.css.js.map +1 -0
  191. package/dist/generated/css/SystemCSSVars.css.d.ts +2 -3
  192. package/dist/generated/css/SystemCSSVars.css.js +1 -6
  193. package/dist/generated/css/SystemCSSVars.css.js.map +1 -1
  194. package/dist/generated/i18n/i18n-defaults.d.ts +3 -0
  195. package/dist/generated/i18n/i18n-defaults.js +3 -0
  196. package/dist/generated/i18n/i18n-defaults.js.map +1 -0
  197. package/dist/generated/json-imports/i18n-fetch.d.ts +1 -0
  198. package/dist/generated/json-imports/i18n-fetch.js +2 -0
  199. package/dist/generated/json-imports/i18n-fetch.js.map +1 -0
  200. package/dist/generated/json-imports/i18n-node.d.ts +1 -0
  201. package/dist/generated/json-imports/i18n-node.js +2 -0
  202. package/dist/generated/json-imports/i18n-node.js.map +1 -0
  203. package/dist/generated/json-imports/i18n.d.ts +1 -0
  204. package/dist/generated/json-imports/i18n.js +2 -0
  205. package/dist/generated/json-imports/i18n.js.map +1 -0
  206. package/dist/getSharedResource.js.map +1 -1
  207. package/dist/i18nBundle.js.map +1 -1
  208. package/dist/index.d.ts +49 -0
  209. package/dist/index.js +91 -0
  210. package/dist/index.js.map +1 -0
  211. package/dist/jsx-dev-runtime.d.ts +4 -0
  212. package/dist/jsx-dev-runtime.js +43 -0
  213. package/dist/jsx-dev-runtime.js.map +1 -0
  214. package/dist/jsx-runtime.d.ts +51 -0
  215. package/dist/jsx-runtime.js +27 -0
  216. package/dist/jsx-runtime.js.map +1 -0
  217. package/dist/jsx-utils.d.ts +3 -0
  218. package/dist/jsx-utils.js +48 -0
  219. package/dist/jsx-utils.js.map +1 -0
  220. package/dist/locale/Locale.js.map +1 -1
  221. package/dist/locale/getEffectiveDir.js.map +1 -1
  222. package/dist/locale/getLocale.js.map +1 -1
  223. package/dist/locale/nextFallbackLocale.js +6 -2
  224. package/dist/locale/nextFallbackLocale.js.map +1 -1
  225. package/dist/locale/normalizeLocale.js.map +1 -1
  226. package/dist/prod/AssetRegistry.js +2 -0
  227. package/dist/prod/AssetRegistry.js.map +7 -0
  228. package/dist/prod/Assets-fetch.js +2 -0
  229. package/dist/prod/Assets-fetch.js.map +7 -0
  230. package/dist/prod/Assets-node.js +2 -0
  231. package/dist/prod/Assets-node.js.map +7 -0
  232. package/dist/prod/Assets.js +2 -0
  233. package/dist/prod/Assets.js.map +7 -0
  234. package/dist/prod/Boot.js +2 -0
  235. package/dist/prod/Boot.js.map +7 -0
  236. package/dist/prod/CustomElementsRegistry.js +10 -0
  237. package/dist/prod/CustomElementsRegistry.js.map +7 -0
  238. package/dist/prod/CustomElementsScope.js +2 -0
  239. package/dist/prod/CustomElementsScope.js.map +7 -0
  240. package/dist/prod/CustomElementsScopeUtils.js +2 -0
  241. package/dist/prod/CustomElementsScopeUtils.js.map +7 -0
  242. package/dist/prod/DOMObserver.js +2 -0
  243. package/dist/prod/DOMObserver.js.map +7 -0
  244. package/dist/prod/Device.js +2 -0
  245. package/dist/prod/Device.js.map +7 -0
  246. package/dist/prod/DragAndDrop.js +2 -0
  247. package/dist/prod/DragAndDrop.js.map +7 -0
  248. package/dist/prod/EventProvider.js +2 -0
  249. package/dist/prod/EventProvider.js.map +7 -0
  250. package/dist/prod/FeaturesRegistry.js +2 -0
  251. package/dist/prod/FeaturesRegistry.js.map +7 -0
  252. package/dist/prod/FontFace.js +2 -0
  253. package/dist/prod/FontFace.js.map +7 -0
  254. package/dist/prod/IgnoreCustomElements.js +2 -0
  255. package/dist/prod/IgnoreCustomElements.js.map +7 -0
  256. package/dist/prod/InitialConfiguration.js +2 -0
  257. package/dist/prod/InitialConfiguration.js.map +7 -0
  258. package/dist/prod/Keys.js +2 -0
  259. package/dist/prod/Keys.js.map +7 -0
  260. package/dist/prod/Location.js +2 -0
  261. package/dist/prod/Location.js.map +7 -0
  262. package/dist/prod/ManagedStyles.js +2 -0
  263. package/dist/prod/ManagedStyles.js.map +7 -0
  264. package/dist/prod/MediaRange.js +2 -0
  265. package/dist/prod/MediaRange.js.map +7 -0
  266. package/dist/prod/PropertiesFileFormat.js +3 -0
  267. package/dist/prod/PropertiesFileFormat.js.map +7 -0
  268. package/dist/prod/Render.js +2 -0
  269. package/dist/prod/Render.js.map +7 -0
  270. package/dist/prod/RenderQueue.js +2 -0
  271. package/dist/prod/RenderQueue.js.map +7 -0
  272. package/dist/prod/Runtimes.js +2 -0
  273. package/dist/prod/Runtimes.js.map +7 -0
  274. package/dist/prod/ScrollbarStyles.js +2 -0
  275. package/dist/prod/ScrollbarStyles.js.map +7 -0
  276. package/dist/prod/SystemCSSVars.js +2 -0
  277. package/dist/prod/SystemCSSVars.js.map +7 -0
  278. package/dist/prod/Theming.js +2 -0
  279. package/dist/prod/Theming.js.map +7 -0
  280. package/dist/prod/UI5Element.js +2 -0
  281. package/dist/prod/UI5Element.js.map +7 -0
  282. package/dist/prod/UI5ElementMetadata.js +2 -0
  283. package/dist/prod/UI5ElementMetadata.js.map +7 -0
  284. package/dist/prod/animations/AnimationQueue.js +2 -0
  285. package/dist/prod/animations/AnimationQueue.js.map +7 -0
  286. package/dist/prod/animations/animate.js +2 -0
  287. package/dist/prod/animations/animate.js.map +7 -0
  288. package/dist/prod/animations/scroll.js +2 -0
  289. package/dist/prod/animations/scroll.js.map +7 -0
  290. package/dist/prod/animations/slideDown.js +2 -0
  291. package/dist/prod/animations/slideDown.js.map +7 -0
  292. package/dist/prod/animations/slideUp.js +2 -0
  293. package/dist/prod/animations/slideUp.js.map +7 -0
  294. package/dist/prod/asset-registries/Icons.js +2 -0
  295. package/dist/prod/asset-registries/Icons.js.map +7 -0
  296. package/dist/prod/asset-registries/Illustrations.js +2 -0
  297. package/dist/prod/asset-registries/Illustrations.js.map +7 -0
  298. package/dist/prod/asset-registries/LocaleData.js +2 -0
  299. package/dist/prod/asset-registries/LocaleData.js.map +7 -0
  300. package/dist/prod/asset-registries/Themes.js +2 -0
  301. package/dist/prod/asset-registries/Themes.js.map +7 -0
  302. package/dist/prod/asset-registries/i18n.js +2 -0
  303. package/dist/prod/asset-registries/i18n.js.map +7 -0
  304. package/dist/prod/asset-registries/util/IconCollectionsAlias.js +2 -0
  305. package/dist/prod/asset-registries/util/IconCollectionsAlias.js.map +7 -0
  306. package/dist/prod/asset-registries/util/IconCollectionsByTheme.js +2 -0
  307. package/dist/prod/asset-registries/util/IconCollectionsByTheme.js.map +7 -0
  308. package/dist/prod/asset-registries/util/getIconCollectionByTheme.js +2 -0
  309. package/dist/prod/asset-registries/util/getIconCollectionByTheme.js.map +7 -0
  310. package/dist/prod/config/AnimationMode.js +2 -0
  311. package/dist/prod/config/AnimationMode.js.map +7 -0
  312. package/dist/prod/config/CalendarType.js +2 -0
  313. package/dist/prod/config/CalendarType.js.map +7 -0
  314. package/dist/prod/config/ConfigurationReset.js +2 -0
  315. package/dist/prod/config/ConfigurationReset.js.map +7 -0
  316. package/dist/prod/config/Fonts.js +2 -0
  317. package/dist/prod/config/Fonts.js.map +7 -0
  318. package/dist/prod/config/FormatSettings.js +2 -0
  319. package/dist/prod/config/FormatSettings.js.map +7 -0
  320. package/dist/prod/config/Icons.js +2 -0
  321. package/dist/prod/config/Icons.js.map +7 -0
  322. package/dist/prod/config/Language.js +2 -0
  323. package/dist/prod/config/Language.js.map +7 -0
  324. package/dist/prod/config/NoConflict.js +2 -0
  325. package/dist/prod/config/NoConflict.js.map +7 -0
  326. package/dist/prod/config/Theme.js +2 -0
  327. package/dist/prod/config/Theme.js.map +7 -0
  328. package/dist/prod/config/ThemeRoot.js +2 -0
  329. package/dist/prod/config/ThemeRoot.js.map +7 -0
  330. package/dist/prod/config/Timezone.js +2 -0
  331. package/dist/prod/config/Timezone.js.map +7 -0
  332. package/dist/prod/config/Tooltips.js +2 -0
  333. package/dist/prod/config/Tooltips.js.map +7 -0
  334. package/dist/prod/connectToComponent.js +2 -0
  335. package/dist/prod/connectToComponent.js.map +7 -0
  336. package/dist/prod/converters/DOMReference.js +2 -0
  337. package/dist/prod/converters/DOMReference.js.map +7 -0
  338. package/dist/prod/decorators/bound.js +2 -0
  339. package/dist/prod/decorators/bound.js.map +7 -0
  340. package/dist/prod/decorators/customElement.js +2 -0
  341. package/dist/prod/decorators/customElement.js.map +7 -0
  342. package/dist/prod/decorators/event-strict.js +2 -0
  343. package/dist/prod/decorators/event-strict.js.map +7 -0
  344. package/dist/prod/decorators/event.js +2 -0
  345. package/dist/prod/decorators/event.js.map +7 -0
  346. package/dist/prod/decorators/i18n.js +2 -0
  347. package/dist/prod/decorators/i18n.js.map +7 -0
  348. package/dist/prod/decorators/property.js +2 -0
  349. package/dist/prod/decorators/property.js.map +7 -0
  350. package/dist/prod/decorators/query.js +2 -0
  351. package/dist/prod/decorators/query.js.map +7 -0
  352. package/dist/prod/decorators/queryAll.js +2 -0
  353. package/dist/prod/decorators/queryAll.js.map +7 -0
  354. package/dist/prod/decorators/slot.js +2 -0
  355. package/dist/prod/decorators/slot.js.map +7 -0
  356. package/dist/prod/decorators.js +2 -0
  357. package/dist/prod/decorators.js.map +7 -0
  358. package/dist/prod/delegate/ItemNavigation.js +2 -0
  359. package/dist/prod/delegate/ItemNavigation.js.map +7 -0
  360. package/dist/prod/delegate/ResizeHandler.js +2 -0
  361. package/dist/prod/delegate/ResizeHandler.js.map +7 -0
  362. package/dist/prod/delegate/ScrollEnablement.js +2 -0
  363. package/dist/prod/delegate/ScrollEnablement.js.map +7 -0
  364. package/dist/prod/features/F6Navigation.js +2 -0
  365. package/dist/prod/features/F6Navigation.js.map +7 -0
  366. package/dist/prod/features/InputElementsFormSupport.js +2 -0
  367. package/dist/prod/features/InputElementsFormSupport.js.map +7 -0
  368. package/dist/prod/features/LegacyDateFormats.js +2 -0
  369. package/dist/prod/features/LegacyDateFormats.js.map +7 -0
  370. package/dist/prod/features/OpenUI5Element.js +2 -0
  371. package/dist/prod/features/OpenUI5Element.js.map +7 -0
  372. package/dist/prod/features/OpenUI5Enablement.js +21 -0
  373. package/dist/prod/features/OpenUI5Enablement.js.map +7 -0
  374. package/dist/prod/features/OpenUI5Support.js +2 -0
  375. package/dist/prod/features/OpenUI5Support.js.map +7 -0
  376. package/dist/prod/features/insertOpenUI5PopupStyles.js +2 -0
  377. package/dist/prod/features/insertOpenUI5PopupStyles.js.map +7 -0
  378. package/dist/prod/features/patchPatcher.js +2 -0
  379. package/dist/prod/features/patchPatcher.js.map +7 -0
  380. package/dist/prod/features/patchPopup.js +2 -0
  381. package/dist/prod/features/patchPopup.js.map +7 -0
  382. package/dist/prod/generated/AssetParameters.js +2 -0
  383. package/dist/prod/generated/AssetParameters.js.map +7 -0
  384. package/dist/prod/generated/VersionInfo.js +2 -0
  385. package/dist/prod/generated/VersionInfo.js.map +7 -0
  386. package/dist/prod/generated/assets/i18n/messagebundle_en.json +1 -0
  387. package/dist/prod/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -0
  388. package/dist/prod/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -0
  389. package/dist/prod/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -0
  390. package/dist/prod/generated/css/BusyIndicator.css.js +2 -0
  391. package/dist/prod/generated/css/BusyIndicator.css.js.map +7 -0
  392. package/dist/prod/generated/css/FontFace.css.js +37 -0
  393. package/dist/prod/generated/css/FontFace.css.js.map +7 -0
  394. package/dist/prod/generated/css/MultipleDragGhost.css.js +2 -0
  395. package/dist/prod/generated/css/MultipleDragGhost.css.js.map +7 -0
  396. package/dist/prod/generated/css/OpenUI5PopupStyles.css.js +2 -0
  397. package/dist/prod/generated/css/OpenUI5PopupStyles.css.js.map +7 -0
  398. package/dist/prod/generated/css/ScrollbarStyles.css.js +2 -0
  399. package/dist/prod/generated/css/ScrollbarStyles.css.js.map +7 -0
  400. package/dist/prod/generated/css/SystemCSSVars.css.js +2 -0
  401. package/dist/prod/generated/css/SystemCSSVars.css.js.map +7 -0
  402. package/dist/prod/generated/i18n/i18n-defaults.js +2 -0
  403. package/dist/prod/generated/i18n/i18n-defaults.js.map +7 -0
  404. package/dist/prod/generated/json-imports/i18n-fetch.js +2 -0
  405. package/dist/prod/generated/json-imports/i18n-fetch.js.map +7 -0
  406. package/dist/prod/generated/json-imports/i18n-node.js +2 -0
  407. package/dist/prod/generated/json-imports/i18n-node.js.map +7 -0
  408. package/dist/prod/generated/json-imports/i18n.js +2 -0
  409. package/dist/prod/generated/json-imports/i18n.js.map +7 -0
  410. package/dist/prod/getSharedResource.js +2 -0
  411. package/dist/prod/getSharedResource.js.map +7 -0
  412. package/dist/prod/global.d.js +2 -0
  413. package/dist/prod/global.d.js.map +7 -0
  414. package/dist/prod/i18nBundle.js +2 -0
  415. package/dist/prod/i18nBundle.js.map +7 -0
  416. package/dist/prod/index.js +2 -0
  417. package/dist/prod/index.js.map +7 -0
  418. package/dist/prod/jsx-dev-runtime.js +2 -0
  419. package/dist/prod/jsx-dev-runtime.js.map +7 -0
  420. package/dist/prod/jsx-runtime.js +2 -0
  421. package/dist/prod/jsx-runtime.js.map +7 -0
  422. package/dist/prod/jsx-utils.js +2 -0
  423. package/dist/prod/jsx-utils.js.map +7 -0
  424. package/dist/prod/locale/Locale.js +2 -0
  425. package/dist/prod/locale/Locale.js.map +7 -0
  426. package/dist/prod/locale/RTLAwareRegistry.js +2 -0
  427. package/dist/prod/locale/RTLAwareRegistry.js.map +7 -0
  428. package/dist/prod/locale/applyDirection.js +2 -0
  429. package/dist/prod/locale/applyDirection.js.map +7 -0
  430. package/dist/prod/locale/directionChange.js +2 -0
  431. package/dist/prod/locale/directionChange.js.map +7 -0
  432. package/dist/prod/locale/getEffectiveDir.js +2 -0
  433. package/dist/prod/locale/getEffectiveDir.js.map +7 -0
  434. package/dist/prod/locale/getLocale.js +2 -0
  435. package/dist/prod/locale/getLocale.js.map +7 -0
  436. package/dist/prod/locale/languageChange.js +2 -0
  437. package/dist/prod/locale/languageChange.js.map +7 -0
  438. package/dist/prod/locale/nextFallbackLocale.js +2 -0
  439. package/dist/prod/locale/nextFallbackLocale.js.map +7 -0
  440. package/dist/prod/locale/normalizeLocale.js +2 -0
  441. package/dist/prod/locale/normalizeLocale.js.map +7 -0
  442. package/dist/prod/renderer/JsxRenderer.js +2 -0
  443. package/dist/prod/renderer/JsxRenderer.js.map +7 -0
  444. package/dist/prod/renderer/LitRenderer.js +2 -0
  445. package/dist/prod/renderer/LitRenderer.js.map +7 -0
  446. package/dist/prod/renderer/directives/style-map.js +6 -0
  447. package/dist/prod/renderer/directives/style-map.js.map +7 -0
  448. package/dist/prod/renderer/executeTemplate.js +2 -0
  449. package/dist/prod/renderer/executeTemplate.js.map +7 -0
  450. package/dist/prod/sap/base/Log.js +750 -0
  451. package/dist/prod/sap/base/assert.js +34 -0
  452. package/dist/prod/sap/base/config/MemoryConfigurationProvider.js +20 -0
  453. package/dist/prod/sap/base/security/URLListValidator.js +406 -0
  454. package/dist/prod/sap/base/security/encodeCSS.js +40 -0
  455. package/dist/prod/sap/base/security/encodeXML.js +53 -0
  456. package/dist/prod/sap/base/security/sanitizeHTML.js +38 -0
  457. package/dist/prod/sap/base/strings/toHex.js +33 -0
  458. package/dist/prod/sap/base/util/now.js +28 -0
  459. package/dist/prod/sap/base/util/uid.js +27 -0
  460. package/dist/prod/sap/ui/thirdparty/caja-html-sanitizer.js +3600 -0
  461. package/dist/prod/ssr-dom-shim.js +2 -0
  462. package/dist/prod/ssr-dom-shim.js.map +7 -0
  463. package/dist/prod/ssr-dom.js +2 -0
  464. package/dist/prod/ssr-dom.js.map +7 -0
  465. package/dist/prod/theming/CustomStyle.js +2 -0
  466. package/dist/prod/theming/CustomStyle.js.map +7 -0
  467. package/dist/prod/theming/ThemeLoaded.js +2 -0
  468. package/dist/prod/theming/ThemeLoaded.js.map +7 -0
  469. package/dist/prod/theming/ThemeRegistered.js +2 -0
  470. package/dist/prod/theming/ThemeRegistered.js.map +7 -0
  471. package/dist/prod/theming/applyTheme.js +2 -0
  472. package/dist/prod/theming/applyTheme.js.map +7 -0
  473. package/dist/prod/theming/getConstructableStyle.js +2 -0
  474. package/dist/prod/theming/getConstructableStyle.js.map +7 -0
  475. package/dist/prod/theming/getEffectiveStyle.js +2 -0
  476. package/dist/prod/theming/getEffectiveStyle.js.map +7 -0
  477. package/dist/prod/theming/getStylesString.js +2 -0
  478. package/dist/prod/theming/getStylesString.js.map +7 -0
  479. package/dist/prod/theming/getThemeDesignerTheme.js +2 -0
  480. package/dist/prod/theming/getThemeDesignerTheme.js.map +7 -0
  481. package/dist/prod/thirdparty/_merge.js +2 -0
  482. package/dist/prod/thirdparty/_merge.js.map +7 -0
  483. package/dist/prod/thirdparty/isPlainObject.js +2 -0
  484. package/dist/prod/thirdparty/isPlainObject.js.map +7 -0
  485. package/dist/prod/thirdparty/merge.js +2 -0
  486. package/dist/prod/thirdparty/merge.js.map +7 -0
  487. package/dist/prod/thirdparty/preact/jsx.d.js +2 -0
  488. package/dist/prod/thirdparty/preact/jsx.d.js.map +7 -0
  489. package/dist/prod/thirdparty/preact/jsxRuntime.module.d.js +2 -0
  490. package/dist/prod/thirdparty/preact/jsxRuntime.module.d.js.map +7 -0
  491. package/dist/prod/thirdparty/preact/jsxRuntime.module.js +1 -0
  492. package/dist/prod/thirdparty/preact/preact.module.d.js +2 -0
  493. package/dist/prod/thirdparty/preact/preact.module.d.js.map +7 -0
  494. package/dist/prod/thirdparty/preact/preact.module.js +1 -0
  495. package/dist/prod/types/AnimationMode.js +2 -0
  496. package/dist/prod/types/AnimationMode.js.map +7 -0
  497. package/dist/prod/types/CalendarType.js +2 -0
  498. package/dist/prod/types/CalendarType.js.map +7 -0
  499. package/dist/prod/types/InvisibleMessageMode.js +2 -0
  500. package/dist/prod/types/InvisibleMessageMode.js.map +7 -0
  501. package/dist/prod/types/ItemNavigationBehavior.js +2 -0
  502. package/dist/prod/types/ItemNavigationBehavior.js.map +7 -0
  503. package/dist/prod/types/MovePlacement.js +2 -0
  504. package/dist/prod/types/MovePlacement.js.map +7 -0
  505. package/dist/prod/types/NavigationMode.js +2 -0
  506. package/dist/prod/types/NavigationMode.js.map +7 -0
  507. package/dist/prod/types/Orientation.js +2 -0
  508. package/dist/prod/types/Orientation.js.map +7 -0
  509. package/dist/prod/types/SortOrder.js +2 -0
  510. package/dist/prod/types/SortOrder.js.map +7 -0
  511. package/dist/prod/types/ValueState.js +2 -0
  512. package/dist/prod/types/ValueState.js.map +7 -0
  513. package/dist/prod/types.js +2 -0
  514. package/dist/prod/types.js.map +7 -0
  515. package/dist/prod/updateShadowRoot.js +2 -0
  516. package/dist/prod/updateShadowRoot.js.map +7 -0
  517. package/dist/prod/util/AccessibilityTextsHelper.js +2 -0
  518. package/dist/prod/util/AccessibilityTextsHelper.js.map +7 -0
  519. package/dist/prod/util/Caret.js +2 -0
  520. package/dist/prod/util/Caret.js.map +7 -0
  521. package/dist/prod/util/ColorConversion.js +2 -0
  522. package/dist/prod/util/ColorConversion.js.map +7 -0
  523. package/dist/prod/util/FetchHelper.js +2 -0
  524. package/dist/prod/util/FetchHelper.js.map +7 -0
  525. package/dist/prod/util/FocusableElements.js +2 -0
  526. package/dist/prod/util/FocusableElements.js.map +7 -0
  527. package/dist/prod/util/HTMLSanitizer.js +2 -0
  528. package/dist/prod/util/HTMLSanitizer.js.map +7 -0
  529. package/dist/prod/util/InvisibleMessage.js +2 -0
  530. package/dist/prod/util/InvisibleMessage.js.map +7 -0
  531. package/dist/prod/util/PopupUtils.js +2 -0
  532. package/dist/prod/util/PopupUtils.js.map +7 -0
  533. package/dist/prod/util/SelectionAssistant.js +2 -0
  534. package/dist/prod/util/SelectionAssistant.js.map +7 -0
  535. package/dist/prod/util/SlotsHelper.js +2 -0
  536. package/dist/prod/util/SlotsHelper.js.map +7 -0
  537. package/dist/prod/util/StringHelper.js +2 -0
  538. package/dist/prod/util/StringHelper.js.map +7 -0
  539. package/dist/prod/util/TabbableElements.js +2 -0
  540. package/dist/prod/util/TabbableElements.js.map +7 -0
  541. package/dist/prod/util/arraysAreEqual.js +2 -0
  542. package/dist/prod/util/arraysAreEqual.js.map +7 -0
  543. package/dist/prod/util/clamp.js +2 -0
  544. package/dist/prod/util/clamp.js.map +7 -0
  545. package/dist/prod/util/createLinkInHead.js +2 -0
  546. package/dist/prod/util/createLinkInHead.js.map +7 -0
  547. package/dist/prod/util/debounce.js +2 -0
  548. package/dist/prod/util/debounce.js.map +7 -0
  549. package/dist/prod/util/detectNavigatorLanguage.js +2 -0
  550. package/dist/prod/util/detectNavigatorLanguage.js.map +7 -0
  551. package/dist/prod/util/dragAndDrop/DragRegistry.js +2 -0
  552. package/dist/prod/util/dragAndDrop/DragRegistry.js.map +7 -0
  553. package/dist/prod/util/dragAndDrop/findClosestPosition.js +2 -0
  554. package/dist/prod/util/dragAndDrop/findClosestPosition.js.map +7 -0
  555. package/dist/prod/util/dragAndDrop/handleDragOver.js +2 -0
  556. package/dist/prod/util/dragAndDrop/handleDragOver.js.map +7 -0
  557. package/dist/prod/util/dragAndDrop/handleDrop.js +2 -0
  558. package/dist/prod/util/dragAndDrop/handleDrop.js.map +7 -0
  559. package/dist/prod/util/dragAndDrop/longDragOverHandler.js +2 -0
  560. package/dist/prod/util/dragAndDrop/longDragOverHandler.js.map +7 -0
  561. package/dist/prod/util/escapeRegex.js +2 -0
  562. package/dist/prod/util/escapeRegex.js.map +7 -0
  563. package/dist/prod/util/fixSafariActiveState.js +2 -0
  564. package/dist/prod/util/fixSafariActiveState.js.map +7 -0
  565. package/dist/prod/util/formatMessage.js +2 -0
  566. package/dist/prod/util/formatMessage.js.map +7 -0
  567. package/dist/prod/util/generateHighlightedMarkup.js +2 -0
  568. package/dist/prod/util/generateHighlightedMarkup.js.map +7 -0
  569. package/dist/prod/util/getActiveElement.js +2 -0
  570. package/dist/prod/util/getActiveElement.js.map +7 -0
  571. package/dist/prod/util/getClassCopy.js +2 -0
  572. package/dist/prod/util/getClassCopy.js.map +7 -0
  573. package/dist/prod/util/getDesigntimePropertyAsArray.js +2 -0
  574. package/dist/prod/util/getDesigntimePropertyAsArray.js.map +7 -0
  575. package/dist/prod/util/getEffectiveContentDensity.js +2 -0
  576. package/dist/prod/util/getEffectiveContentDensity.js.map +7 -0
  577. package/dist/prod/util/getFastNavigationGroups.js +2 -0
  578. package/dist/prod/util/getFastNavigationGroups.js.map +7 -0
  579. package/dist/prod/util/getFileExtension.js +2 -0
  580. package/dist/prod/util/getFileExtension.js.map +7 -0
  581. package/dist/prod/util/getNormalizedTarget.js +2 -0
  582. package/dist/prod/util/getNormalizedTarget.js.map +7 -0
  583. package/dist/prod/util/getParentElement.js +2 -0
  584. package/dist/prod/util/getParentElement.js.map +7 -0
  585. package/dist/prod/util/getSingletonElementInstance.js +2 -0
  586. package/dist/prod/util/getSingletonElementInstance.js.map +7 -0
  587. package/dist/prod/util/hash2str.js +2 -0
  588. package/dist/prod/util/hash2str.js.map +7 -0
  589. package/dist/prod/util/isElementClickable.js +2 -0
  590. package/dist/prod/util/isElementClickable.js.map +7 -0
  591. package/dist/prod/util/isElementHidden.js +2 -0
  592. package/dist/prod/util/isElementHidden.js.map +7 -0
  593. package/dist/prod/util/isElementInView.js +2 -0
  594. package/dist/prod/util/isElementInView.js.map +7 -0
  595. package/dist/prod/util/isElementTabbable.js +2 -0
  596. package/dist/prod/util/isElementTabbable.js.map +7 -0
  597. package/dist/prod/util/isEventMarked.js +2 -0
  598. package/dist/prod/util/isEventMarked.js.map +7 -0
  599. package/dist/prod/util/isValidPropertyName.js +2 -0
  600. package/dist/prod/util/isValidPropertyName.js.map +7 -0
  601. package/dist/prod/util/throttle.js +2 -0
  602. package/dist/prod/util/throttle.js.map +7 -0
  603. package/dist/prod/util/toLowercaseEnumValue.js +2 -0
  604. package/dist/prod/util/toLowercaseEnumValue.js.map +7 -0
  605. package/dist/prod/util/valueStateNavigation.js +2 -0
  606. package/dist/prod/util/valueStateNavigation.js.map +7 -0
  607. package/dist/prod/util/whenDOMReady.js +2 -0
  608. package/dist/prod/util/whenDOMReady.js.map +7 -0
  609. package/dist/prod/util/willShowContent.js +2 -0
  610. package/dist/prod/util/willShowContent.js.map +7 -0
  611. package/dist/prod/validateThemeRoot.js +2 -0
  612. package/dist/prod/validateThemeRoot.js.map +7 -0
  613. package/dist/renderer/JsxRenderer.d.ts +3 -0
  614. package/dist/renderer/JsxRenderer.js +26 -0
  615. package/dist/renderer/JsxRenderer.js.map +1 -0
  616. package/dist/renderer/LitRenderer.d.ts +1 -1
  617. package/dist/renderer/LitRenderer.js +4 -3
  618. package/dist/renderer/LitRenderer.js.map +1 -1
  619. package/dist/renderer/directives/style-map.js.map +1 -1
  620. package/dist/renderer/executeTemplate.d.ts +3 -12
  621. package/dist/renderer/executeTemplate.js +1 -20
  622. package/dist/renderer/executeTemplate.js.map +1 -1
  623. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +1 -1
  624. package/dist/ssr-dom-shim.js +52 -1
  625. package/dist/ssr-dom-shim.js.map +1 -1
  626. package/dist/ssr-dom.d.ts +1 -0
  627. package/dist/ssr-dom.js +3 -0
  628. package/dist/ssr-dom.js.map +1 -0
  629. package/dist/theming/CustomStyle.js.map +1 -1
  630. package/dist/theming/applyTheme.d.ts +2 -0
  631. package/dist/theming/applyTheme.js +7 -2
  632. package/dist/theming/applyTheme.js.map +1 -1
  633. package/dist/theming/getConstructableStyle.d.ts +1 -1
  634. package/dist/theming/getConstructableStyle.js.map +1 -1
  635. package/dist/theming/getEffectiveStyle.js.map +1 -1
  636. package/dist/theming/getStylesString.js +2 -4
  637. package/dist/theming/getStylesString.js.map +1 -1
  638. package/dist/theming/getThemeDesignerTheme.js +2 -1
  639. package/dist/theming/getThemeDesignerTheme.js.map +1 -1
  640. package/dist/thirdparty/_merge.js.map +1 -1
  641. package/dist/thirdparty/isPlainObject.js.map +1 -1
  642. package/dist/thirdparty/preact/jsx.d.ts +2616 -0
  643. package/dist/thirdparty/preact/jsxRuntime.module.d.ts +62 -0
  644. package/dist/thirdparty/preact/jsxRuntime.module.js +1 -0
  645. package/dist/thirdparty/preact/preact.module.d.ts +398 -0
  646. package/dist/thirdparty/preact/preact.module.js +1 -0
  647. package/dist/types/SortOrder.d.ts +24 -0
  648. package/dist/types/SortOrder.js +26 -0
  649. package/dist/types/SortOrder.js.map +1 -0
  650. package/dist/types.d.ts +31 -26
  651. package/dist/types.js.map +1 -1
  652. package/dist/updateShadowRoot.js +1 -2
  653. package/dist/updateShadowRoot.js.map +1 -1
  654. package/dist/util/{AriaLabelHelper.d.ts → AccessibilityTextsHelper.d.ts} +4 -2
  655. package/dist/util/{AriaLabelHelper.js → AccessibilityTextsHelper.js} +36 -8
  656. package/dist/util/AccessibilityTextsHelper.js.map +1 -0
  657. package/dist/util/Caret.js.map +1 -1
  658. package/dist/util/ColorConversion.d.ts +2 -1
  659. package/dist/util/ColorConversion.js +35 -23
  660. package/dist/util/ColorConversion.js.map +1 -1
  661. package/dist/util/FetchHelper.js.map +1 -1
  662. package/dist/util/FocusableElements.js +43 -15
  663. package/dist/util/FocusableElements.js.map +1 -1
  664. package/dist/util/HTMLSanitizer.d.ts +2 -0
  665. package/dist/util/HTMLSanitizer.js +2 -2
  666. package/dist/util/HTMLSanitizer.js.map +1 -1
  667. package/dist/util/InvisibleMessage.js.map +1 -1
  668. package/dist/util/PopupUtils.js.map +1 -1
  669. package/dist/util/SelectionAssistant.d.ts +12 -0
  670. package/dist/util/SelectionAssistant.js +71 -0
  671. package/dist/util/SelectionAssistant.js.map +1 -0
  672. package/dist/util/SlotsHelper.js.map +1 -1
  673. package/dist/util/StringHelper.d.ts +3 -1
  674. package/dist/util/StringHelper.js +15 -1
  675. package/dist/util/StringHelper.js.map +1 -1
  676. package/dist/util/TabbableElements.js +5 -12
  677. package/dist/util/TabbableElements.js.map +1 -1
  678. package/dist/util/arraysAreEqual.js.map +1 -1
  679. package/dist/util/createLinkInHead.js.map +1 -1
  680. package/dist/util/debounce.js.map +1 -1
  681. package/dist/util/detectNavigatorLanguage.js.map +1 -1
  682. package/dist/util/dragAndDrop/DragRegistry.d.ts +35 -8
  683. package/dist/util/dragAndDrop/DragRegistry.js +42 -52
  684. package/dist/util/dragAndDrop/DragRegistry.js.map +1 -1
  685. package/dist/util/dragAndDrop/findClosestPosition.d.ts +6 -1
  686. package/dist/util/dragAndDrop/findClosestPosition.js +48 -1
  687. package/dist/util/dragAndDrop/findClosestPosition.js.map +1 -1
  688. package/dist/util/dragAndDrop/handleDragOver.d.ts +16 -0
  689. package/dist/util/dragAndDrop/handleDragOver.js +42 -0
  690. package/dist/util/dragAndDrop/handleDragOver.js.map +1 -0
  691. package/dist/util/dragAndDrop/handleDrop.d.ts +5 -0
  692. package/dist/util/dragAndDrop/handleDrop.js +22 -0
  693. package/dist/util/dragAndDrop/handleDrop.js.map +1 -0
  694. package/dist/util/dragAndDrop/longDragOverHandler.js.map +1 -1
  695. package/dist/util/fixSafariActiveState.d.ts +2 -0
  696. package/dist/util/fixSafariActiveState.js +11 -0
  697. package/dist/util/fixSafariActiveState.js.map +1 -0
  698. package/dist/util/formatMessage.js.map +1 -1
  699. package/dist/util/generateHighlightedMarkup.js.map +1 -1
  700. package/dist/util/getActiveElement.js.map +1 -1
  701. package/dist/util/getClassCopy.d.ts +107 -86
  702. package/dist/util/getFastNavigationGroups.js +6 -1
  703. package/dist/util/getFastNavigationGroups.js.map +1 -1
  704. package/dist/util/getFileExtension.js.map +1 -1
  705. package/dist/util/getNormalizedTarget.js.map +1 -1
  706. package/dist/util/getParentElement.d.ts +1 -1
  707. package/dist/util/getParentElement.js +2 -2
  708. package/dist/util/getParentElement.js.map +1 -1
  709. package/dist/util/getSingletonElementInstance.js.map +1 -1
  710. package/dist/util/hash2str.d.ts +1 -0
  711. package/dist/util/hash2str.js +14 -0
  712. package/dist/util/hash2str.js.map +1 -0
  713. package/dist/util/isElementClickable.js.map +1 -1
  714. package/dist/util/isElementHidden.js +2 -1
  715. package/dist/util/isElementHidden.js.map +1 -1
  716. package/dist/util/isElementTabbable.js +2 -2
  717. package/dist/util/isElementTabbable.js.map +1 -1
  718. package/dist/util/isEventMarked.d.ts +2 -0
  719. package/dist/util/isEventMarked.js +6 -0
  720. package/dist/util/isEventMarked.js.map +1 -0
  721. package/dist/util/isValidPropertyName.js.map +1 -1
  722. package/dist/util/throttle.d.ts +2 -0
  723. package/dist/util/throttle.js +20 -0
  724. package/dist/util/throttle.js.map +1 -0
  725. package/dist/util/toLowercaseEnumValue.d.ts +3 -0
  726. package/dist/util/toLowercaseEnumValue.js +4 -0
  727. package/dist/util/toLowercaseEnumValue.js.map +1 -0
  728. package/dist/util/valueStateNavigation.d.ts +8 -0
  729. package/dist/util/valueStateNavigation.js +40 -0
  730. package/dist/util/valueStateNavigation.js.map +1 -0
  731. package/dist/util/whenDOMReady.js.map +1 -1
  732. package/dist/validateThemeRoot.js +9 -4
  733. package/dist/validateThemeRoot.js.map +1 -1
  734. package/dist/vscode.html-custom-data.json +22 -0
  735. package/package-scripts.cjs +63 -32
  736. package/package.json +40 -23
  737. package/src/css/MultipleDragGhost.css +17 -0
  738. package/src/css/OpenUI5PopupStyles.css +5 -0
  739. package/src/css/ScrollbarStyles.css +3 -0
  740. package/src/i18n/messagebundle.properties +5 -0
  741. package/src/i18n/messagebundle_en.properties +2 -0
  742. package/src/i18n/messagebundle_en_US_sappsd.properties +2 -0
  743. package/src/i18n/messagebundle_en_US_saprigi.properties +2 -0
  744. package/src/i18n/messagebundle_en_US_saptrc.properties +2 -0
  745. package/src/thirdparty/preact/jsxRuntime.module.js +1 -0
  746. package/src/thirdparty/preact/preact.module.js +1 -0
  747. package/src/thirdparty/preact/version.txt +1 -0
  748. package/tsconfig.json +18 -19
  749. package/config/wdio.conf.cjs +0 -392
  750. package/dist/.tsbuildinfo +0 -1
  751. package/dist/MarkedEvents.d.ts +0 -9
  752. package/dist/MarkedEvents.js +0 -15
  753. package/dist/MarkedEvents.js.map +0 -1
  754. package/dist/css/FontFace.css +0 -96
  755. package/dist/css/OverrideFontFace.css +0 -32
  756. package/dist/generated/css/OverrideFontFace.css.d.ts +0 -3
  757. package/dist/generated/css/OverrideFontFace.css.js +0 -7
  758. package/dist/generated/css/OverrideFontFace.css.js.map +0 -1
  759. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.d.ts +0 -4
  760. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +0 -9
  761. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js.map +0 -1
  762. package/dist/types/AriaHasPopup.d.ts +0 -32
  763. package/dist/types/AriaHasPopup.js +0 -34
  764. package/dist/types/AriaHasPopup.js.map +0 -1
  765. package/dist/types/AriaLandmarkRole.d.ts +0 -79
  766. package/dist/types/AriaLandmarkRole.js +0 -81
  767. package/dist/types/AriaLandmarkRole.js.map +0 -1
  768. package/dist/types/AriaRole.d.ts +0 -27
  769. package/dist/types/AriaRole.js +0 -29
  770. package/dist/types/AriaRole.js.map +0 -1
  771. package/dist/types/CSSColor.d.ts +0 -11
  772. package/dist/types/CSSColor.js +0 -14
  773. package/dist/types/CSSColor.js.map +0 -1
  774. package/dist/types/CSSSize.d.ts +0 -11
  775. package/dist/types/CSSSize.js +0 -14
  776. package/dist/types/CSSSize.js.map +0 -1
  777. package/dist/types/DOMReference.d.ts +0 -13
  778. package/dist/types/DOMReference.js +0 -21
  779. package/dist/types/DOMReference.js.map +0 -1
  780. package/dist/types/DataType.d.ts +0 -20
  781. package/dist/types/DataType.js +0 -39
  782. package/dist/types/DataType.js.map +0 -1
  783. package/dist/types/Float.d.ts +0 -14
  784. package/dist/types/Float.js +0 -18
  785. package/dist/types/Float.js.map +0 -1
  786. package/dist/types/Integer.d.ts +0 -14
  787. package/dist/types/Integer.js +0 -18
  788. package/dist/types/Integer.js.map +0 -1
  789. package/dist/util/AriaLabelHelper.js.map +0 -1
  790. package/dist/util/getEffectiveScrollbarStyle.d.ts +0 -2
  791. package/dist/util/getEffectiveScrollbarStyle.js +0 -4
  792. package/dist/util/getEffectiveScrollbarStyle.js.map +0 -1
  793. package/dist/util/isElementContainingBlock.d.ts +0 -2
  794. package/dist/util/isElementContainingBlock.js +0 -11
  795. package/dist/util/isElementContainingBlock.js.map +0 -1
  796. package/index.js +0 -214
  797. package/src/css/FontFace.css +0 -96
  798. package/src/css/OverrideFontFace.css +0 -32
@@ -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\tcloned?: boolean,\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\tformAssociated?: boolean,\n\tshadowRootOptions?: Partial<ShadowRootInit>\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 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\tObject.defineProperty(initialState, propName, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget() {\n\t\t\t\t\t return [];\n\t\t\t\t\t},\n\t\t\t\t });\n\t\t\t} else if (propType === Object) {\n\t\t\t\tObject.defineProperty(initialState, propName, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget() {\n\t\t\t\t\t return \"defaultValue\" in props[propName] ? props[propName].defaultValue : {};\n\t\t\t\t\t},\n\t\t\t\t });\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 * **Note:** Only intended for use by UI5Element.js\n\t * @public\n\t */\n\tstatic validatePropertyValue(value: PropertyValue, propData: Property): PropertyValue {\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 * **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.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 */\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\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\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\t// eslint-disable-next-line @typescript-eslint/no-base-to-string -- if an object is passed as a value to a string property, this was an error so displaying [object Object] will indicate the issue to the developer\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): PropertyValue,\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"]}
@@ -13,19 +13,53 @@ type CollectionData = {
13
13
  acc?: I18nText;
14
14
  }>;
15
15
  };
16
- type IconData = {
16
+ type IconDatabase = {
17
17
  collection: string;
18
- packageName: string;
19
- pathData: string | Array<string>;
18
+ packageName?: string;
19
+ viewBox?: string;
20
20
  ltr?: boolean;
21
21
  accData?: I18nText;
22
+ };
23
+ type IconData = IconDatabase & {
24
+ pathData?: string | string[];
22
25
  customTemplate?: TemplateFunction;
23
- viewBox?: string;
26
+ };
27
+ type UnsafeIconData = IconDatabase & {
28
+ customTemplateAsString: string;
24
29
  };
25
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
+ */
26
45
  declare const registerIcon: (name: string, iconData: IconData) => void;
27
- declare const getIconDataSync: (iconName: string) => IconData | undefined;
28
- declare const getIconData: (iconName: 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>;
29
63
  /**
30
64
  * Returns the accessible name for the given icon,
31
65
  * or undefined if accessible name is not present.
@@ -33,7 +67,7 @@ declare const getIconData: (iconName: string) => Promise<IconData | "ICON_NOT_FO
33
67
  * @param { string } name
34
68
  * @return { Promise }
35
69
  */
36
- declare const getIconAccessibleName: (name: string) => Promise<string | undefined>;
70
+ declare const getIconAccessibleName: (name: string | undefined) => Promise<string | undefined>;
37
71
  declare const _getRegisteredNames: () => Promise<string[]>;
38
- export { registerIconLoader, getIconData, getIconDataSync, getIconAccessibleName, registerIcon, _getRegisteredNames, };
39
- export type { IconData, CollectionData, };
72
+ export { registerIconLoader, getIconData, getIconDataSync, getIconAccessibleName, registerIcon, unsafeRegisterIcon, _getRegisteredNames, };
73
+ export type { IconData, UnsafeIconData, CollectionData, };
@@ -33,18 +33,58 @@ const _fillRegistry = (bundleData) => {
33
33
  });
34
34
  });
35
35
  };
36
- // 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
+ */
37
50
  const registerIcon = (name, iconData) => {
38
51
  const key = `${iconData.collection}/${name}`;
39
- registry.set(key, {
52
+ const data = {
53
+ collection: iconData.collection,
54
+ packageName: iconData.packageName,
40
55
  pathData: iconData.pathData,
56
+ viewBox: iconData.viewBox,
41
57
  ltr: iconData.ltr,
42
58
  accData: iconData.accData,
43
- packageName: iconData.packageName,
44
59
  customTemplate: iconData.customTemplate,
45
- viewBox: iconData.viewBox,
60
+ };
61
+ registry.set(key, data);
62
+ };
63
+ /**
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).
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 = {
46
80
  collection: iconData.collection,
47
- });
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);
48
88
  };
49
89
  /**
50
90
  * Processes the full icon name and splits it into - "name", "collection".
@@ -120,8 +160,11 @@ const getIconAccessibleName = async (name) => {
120
160
  iconData = await getIconData(name);
121
161
  }
122
162
  if (iconData && iconData !== ICON_NOT_FOUND && iconData.accData) {
123
- const i18nBundle = await getI18nBundle(iconData.packageName);
124
- 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 || "";
125
168
  }
126
169
  };
127
170
  // test page usage only
@@ -132,5 +175,5 @@ const _getRegisteredNames = async () => {
132
175
  await getIconData("business-suite/3d");
133
176
  return Array.from(registry.keys());
134
177
  };
135
- export { registerIconLoader, getIconData, getIconDataSync, getIconAccessibleName, registerIcon, _getRegisteredNames, };
178
+ export { registerIconLoader, getIconData, getIconDataSync, getIconAccessibleName, registerIcon, unsafeRegisterIcon, _getRegisteredNames, };
136
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 \"./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 IconData = {\n\tcollection: string,\n\tpackageName: string,\n\tpathData: string | Array<string>,\n\tltr?: boolean,\n\taccData?: I18nText,\n\tcustomTemplate?: TemplateFunction,\n\tviewBox?: string,\n};\n\nconst loaders = new Map<string, IconLoader>();\nconst registry = getSharedResource<Map<string, IconData>>(\"SVGIcons.registry\", new Map());\nconst iconCollectionPromises = getSharedResource<Map<string, Promise<CollectionData| Array<CollectionData>>>>(\"SVGIcons.promises\", new Map());\n\nconst ICON_NOT_FOUND = \"ICON_NOT_FOUND\";\n\nconst registerIconLoader = (collectionName: string, loader: IconLoader) => {\n\tloaders.set(collectionName, loader);\n};\n\nconst _loadIconCollectionOnce = async (collectionName: string) => {\n\tif (!iconCollectionPromises.has(collectionName)) {\n\t\tif (!loaders.has(collectionName)) {\n\t\t\tthrow new Error(`No loader registered for the ${collectionName} icons collection. Probably you forgot to import the \"AllIcons.js\" module for the respective package.`);\n\t\t}\n\n\t\tconst loadIcons = loaders.get(collectionName)!;\n\t\ticonCollectionPromises.set(collectionName, loadIcons(collectionName));\n\t}\n\n\treturn iconCollectionPromises.get(collectionName);\n};\n\nconst _fillRegistry = (bundleData: CollectionData) => {\n\tObject.keys(bundleData.data).forEach(iconName => {\n\t\tconst iconData = bundleData.data[iconName];\n\n\t\tregisterIcon(iconName, {\n\t\t\tpathData: (iconData.path || iconData.paths)!,\n\t\t\tltr: iconData.ltr,\n\t\t\taccData: iconData.acc,\n\t\t\tcollection: bundleData.collection,\n\t\t\tpackageName: bundleData.packageName,\n\t\t});\n\t});\n};\n\n// set\nconst registerIcon = (name: string, iconData: IconData) => { // eslint-disable-line\n\tconst key = `${iconData.collection}/${name}`;\n\n\tregistry.set(key, {\n\t\tpathData: iconData.pathData,\n\t\tltr: iconData.ltr,\n\t\taccData: iconData.accData,\n\t\tpackageName: iconData.packageName,\n\t\tcustomTemplate: iconData.customTemplate,\n\t\tviewBox: iconData.viewBox,\n\t\tcollection: iconData.collection,\n\t});\n};\n\n/**\n * Processes the full icon name and splits it into - \"name\", \"collection\".\n * - removes legacy protocol (\"sap-icon://\")\n * - resolves aliases (f.e \"SAP-icons-TNT/actor\" => \"tnt/actor\")\n *\n * @param { string } name\n * @return { object }\n */\nconst processName = (name: string) => {\n\t// silently support ui5-compatible URIs\n\tif (name.startsWith(\"sap-icon://\")) {\n\t\tname = name.replace(\"sap-icon://\", \"\");\n\t}\n\n\tlet collection: string;\n\t[name, collection] = name.split(\"/\").reverse();\n\n\tname = name.replace(\"icon-\", \"\");\n\tif (collection) {\n\t\tcollection = getIconCollectionByAlias(collection);\n\t}\n\treturn { name, collection };\n};\n\nconst getIconDataSync = (iconName: string) => {\n\tconst { name, collection } = processName(iconName);\n\treturn getRegisteredIconData(collection, name);\n};\n\nconst getIconData = async (iconName: string) => {\n\tconst { name, collection } = processName(iconName);\n\n\tlet iconData: string | CollectionData | Array<CollectionData> = ICON_NOT_FOUND;\n\ttry {\n\t\ticonData = (await _loadIconCollectionOnce(getEffectiveIconCollection(collection)))!;\n\t} catch (error: unknown) {\n\t\tconst e = error as Error;\n\t\tconsole.error(e.message); /* eslint-disable-line */\n\t}\n\n\tif (iconData === ICON_NOT_FOUND) {\n\t\treturn iconData;\n\t}\n\n\tconst registeredIconData = getRegisteredIconData(collection, name);\n\n\tif (registeredIconData) {\n\t\treturn registeredIconData;\n\t}\n\n\t// not filled by another await. many getters will await on the same loader, but fill only once\n\tif (Array.isArray(iconData)) {\n\t\ticonData.forEach(data => {\n\t\t\t_fillRegistry(data);\n\t\t\tregisterIconCollectionForTheme(collection, { [data.themeFamily || DEFAULT_THEME_FAMILY]: data.collection });\n\t\t});\n\t} else {\n\t\t_fillRegistry(iconData as CollectionData);\n\t}\n\n\treturn getRegisteredIconData(collection, name);\n};\n\nconst getRegisteredIconData = (collection: string, name: string) => {\n\tconst registryKey = `${getEffectiveIconCollection(collection)}/${name}`;\n\treturn registry.get(registryKey);\n};\n\n/**\n * Returns the accessible name for the given icon,\n * or undefined if accessible name is not present.\n *\n * @param { string } name\n * @return { Promise }\n */\nconst getIconAccessibleName = async (name: string): Promise<string | undefined> => {\n\tif (!name) {\n\t\treturn;\n\t}\n\n\tlet iconData: typeof ICON_NOT_FOUND | IconData | undefined = getIconDataSync(name);\n\n\tif (!iconData) {\n\t\ticonData = await getIconData(name);\n\t}\n\n\tif (iconData && iconData !== ICON_NOT_FOUND && iconData.accData) {\n\t\tconst i18nBundle = await getI18nBundle(iconData.packageName);\n\t\treturn i18nBundle.getText(iconData.accData);\n\t}\n};\n\n// test page usage only\nconst _getRegisteredNames = async () => {\n\t// fetch one icon of each collection to trigger the bundle load\n\tawait getIconData(\"edit\");\n\tawait getIconData(\"tnt/arrow\");\n\tawait getIconData(\"business-suite/3d\");\n\treturn Array.from(registry.keys());\n};\n\nexport {\n\tregisterIconLoader,\n\tgetIconData,\n\tgetIconDataSync,\n\tgetIconAccessibleName,\n\tregisterIcon,\n\t_getRegisteredNames,\n};\n\nexport type {\n\tIconData,\n\tCollectionData,\n};\n"]}
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"]}
@@ -1,19 +1,144 @@
1
1
  import type { I18nText } from "../i18nBundle.js";
2
- type IllustrationLoader = (illustrationName: string) => Promise<IllustrationData>;
3
- type IllustrationProperties = {
2
+ import type { TemplateFunction } from "../renderer/executeTemplate.js";
3
+ /**
4
+ * Loader function for lazy-loading illustration data.
5
+ */
6
+ type IllustrationLoader = (illustrationName: string) => Promise<UnsafeIllustrationData>;
7
+ /**
8
+ * Database properties shared by all illustration types.
9
+ */
10
+ type IllustrationDatabase = {
11
+ /** The illustration title text (supports i18n) */
12
+ title: I18nText;
13
+ /** The illustration subtitle text (supports i18n) */
14
+ subtitle: I18nText;
15
+ };
16
+ /**
17
+ * Illustration properties using template functions (recommended).
18
+ *
19
+ * @public
20
+ */
21
+ type IllustrationProperties = IllustrationDatabase & {
22
+ /** Template function for the medium variant (M breakpoint, ≤ 681px) */
23
+ dialogTemplate?: TemplateFunction;
24
+ /** Template function for the large variant (L breakpoint, > 681px) */
25
+ sceneTemplate?: TemplateFunction;
26
+ /** Template function for the small variant (S breakpoint, ≤ 360px) */
27
+ spotTemplate?: TemplateFunction;
28
+ /** Template function for the extra small variant (XS breakpoint, ≤ 260px) */
29
+ dotTemplate?: TemplateFunction;
30
+ };
31
+ /**
32
+ * Illustration properties using raw SVG strings (unsafe).
33
+ *
34
+ * @public
35
+ */
36
+ type UnsafeIllustrationProperties = IllustrationDatabase & {
37
+ /** SVG content for the medium variant (M breakpoint, ≤ 681px) */
4
38
  dialogSvg: string;
39
+ /** SVG content for the large variant (L breakpoint, > 681px) */
5
40
  sceneSvg: string;
41
+ /** SVG content for the small variant (S breakpoint, ≤ 360px) */
6
42
  spotSvg: string;
43
+ /** SVG content for the extra small variant (XS breakpoint, ≤ 260px) */
7
44
  dotSvg: string;
8
- title: I18nText;
9
- subtitle: I18nText;
10
45
  };
46
+ /**
47
+ * Complete illustration data for registration (recommended).
48
+ *
49
+ * @public
50
+ */
11
51
  type IllustrationData = IllustrationProperties & {
52
+ /** The illustration set identifier (e.g., "custom") */
53
+ set: string;
54
+ /** Collection identifier (defaults to "V4") */
55
+ collection?: string;
56
+ };
57
+ /**
58
+ * Complete unsafe illustration data for registration.
59
+ *
60
+ * @public
61
+ */
62
+ type UnsafeIllustrationData = UnsafeIllustrationProperties & {
63
+ /** The illustration set identifier (e.g., "custom") */
12
64
  set: string;
13
- collection: string;
65
+ /** Collection identifier (defaults to "V4") */
66
+ collection?: string;
14
67
  };
68
+ /**
69
+ * Registers a custom illustration in the global registry using template functions.
70
+ *
71
+ * This is the recommended way to register illustrations as it accepts template functions
72
+ * instead of raw SVG strings, preventing XSS vulnerabilities.
73
+ *
74
+ * @param name - The name of the illustration (without set prefix)
75
+ * @param data - The illustration data (see {@link IllustrationData})
76
+ *
77
+ * @public
78
+ * @since 2.17.0
79
+ * @example
80
+ * ```js
81
+ * import { registerIllustration } from "@ui5/webcomponents-base/dist/asset-registries/Illustrations.js";
82
+ *
83
+ * registerIllustration("EmptyCart", {
84
+ * sceneTemplate: (component) => <svg>...</svg>,
85
+ * dialogTemplate: (component) => <svg>...</svg>,
86
+ * spotTemplate: (component) => <svg>...</svg>,
87
+ * dotTemplate: (component) => <svg>...</svg>,
88
+ * title: "Your cart is empty",
89
+ * subtitle: "Add items to get started",
90
+ * set: "custom"
91
+ * });
92
+ * ```
93
+ */
15
94
  declare const registerIllustration: (name: string, data: IllustrationData) => void;
95
+ /**
96
+ * Registers a custom illustration in the global registry.
97
+ *
98
+ * <b>Note:</b> This method is unsafe as it allows the SVG content to be passed as raw strings
99
+ * through the `dialogSvg`, `sceneSvg`, `spotSvg`, and `dotSvg` properties of the `data`.
100
+ * Ensure that the SVG content is properly validated.
101
+ * Improperly sanitized SVG strings can lead to security vulnerabilities such as XSS (Cross-Site Scripting).
102
+ *
103
+ * @param name - The name of the illustration (without set prefix)
104
+ * @param data - The illustration data (see {@link UnsafeIllustrationData})
105
+ *
106
+ * @public
107
+ * @since 2.17.0
108
+ * @example
109
+ * ```js
110
+ * import { unsafeRegisterIllustration } from "@ui5/webcomponents-base/dist/asset-registries/Illustrations.js";
111
+ *
112
+ * unsafeRegisterIllustration("EmptyCart", {
113
+ * sceneSvg: "<svg>...</svg>",
114
+ * dialogSvg: "<svg>...</svg>",
115
+ * spotSvg: "<svg>...</svg>",
116
+ * dotSvg: "<svg>...</svg>",
117
+ * title: "Your cart is empty",
118
+ * subtitle: "Add items to get started",
119
+ * set: "custom"
120
+ * });
121
+ * ```
122
+ */
123
+ declare const unsafeRegisterIllustration: (name: string, data: UnsafeIllustrationData) => void;
16
124
  declare const registerIllustrationLoader: (illustrationName: string, loader: IllustrationLoader) => void;
17
- declare const getIllustrationDataSync: (illustrationName: string) => IllustrationProperties | undefined;
18
- declare const getIllustrationData: (illustrationName: string) => Promise<IllustrationProperties | undefined>;
19
- export { getIllustrationDataSync, registerIllustration, registerIllustrationLoader, getIllustrationData, };
125
+ /**
126
+ * Synchronously retrieves illustration data from the registry.
127
+ *
128
+ * @param illustrationName - The illustration identifier in format "set/name"
129
+ * @returns The illustration properties or undefined if not available
130
+ *
131
+ * @public
132
+ */
133
+ declare const getIllustrationDataSync: (illustrationName: string) => UnsafeIllustrationProperties | IllustrationProperties | undefined;
134
+ /**
135
+ * Asynchronously retrieves illustration data, loading it if necessary.
136
+ *
137
+ * @param illustrationName - The illustration identifier in format "set/name"
138
+ * @returns Promise resolving to illustration properties or undefined
139
+ *
140
+ * @public
141
+ */
142
+ declare const getIllustrationData: (illustrationName: string) => Promise<UnsafeIllustrationProperties | IllustrationProperties | undefined>;
143
+ export { getIllustrationDataSync, registerIllustration, unsafeRegisterIllustration, registerIllustrationLoader, getIllustrationData, };
144
+ export type { IllustrationData, UnsafeIllustrationData, IllustrationProperties, UnsafeIllustrationProperties, };
@@ -38,7 +38,72 @@ const processName = (name) => {
38
38
  collection,
39
39
  };
40
40
  };
41
+ /**
42
+ * Registers a custom illustration in the global registry using template functions.
43
+ *
44
+ * This is the recommended way to register illustrations as it accepts template functions
45
+ * instead of raw SVG strings, preventing XSS vulnerabilities.
46
+ *
47
+ * @param name - The name of the illustration (without set prefix)
48
+ * @param data - The illustration data (see {@link IllustrationData})
49
+ *
50
+ * @public
51
+ * @since 2.17.0
52
+ * @example
53
+ * ```js
54
+ * import { registerIllustration } from "@ui5/webcomponents-base/dist/asset-registries/Illustrations.js";
55
+ *
56
+ * registerIllustration("EmptyCart", {
57
+ * sceneTemplate: (component) => <svg>...</svg>,
58
+ * dialogTemplate: (component) => <svg>...</svg>,
59
+ * spotTemplate: (component) => <svg>...</svg>,
60
+ * dotTemplate: (component) => <svg>...</svg>,
61
+ * title: "Your cart is empty",
62
+ * subtitle: "Add items to get started",
63
+ * set: "custom"
64
+ * });
65
+ * ```
66
+ */
41
67
  const registerIllustration = (name, data) => {
68
+ const collection = data.collection || FALLBACK_COLLECTION;
69
+ registry.set(`${data.set}/${collection}/${name}`, {
70
+ dialogTemplate: data.dialogTemplate,
71
+ sceneTemplate: data.sceneTemplate,
72
+ spotTemplate: data.spotTemplate,
73
+ dotTemplate: data.dotTemplate,
74
+ title: data.title,
75
+ subtitle: data.subtitle,
76
+ });
77
+ };
78
+ /**
79
+ * Registers a custom illustration in the global registry.
80
+ *
81
+ * <b>Note:</b> This method is unsafe as it allows the SVG content to be passed as raw strings
82
+ * through the `dialogSvg`, `sceneSvg`, `spotSvg`, and `dotSvg` properties of the `data`.
83
+ * Ensure that the SVG content is properly validated.
84
+ * Improperly sanitized SVG strings can lead to security vulnerabilities such as XSS (Cross-Site Scripting).
85
+ *
86
+ * @param name - The name of the illustration (without set prefix)
87
+ * @param data - The illustration data (see {@link UnsafeIllustrationData})
88
+ *
89
+ * @public
90
+ * @since 2.17.0
91
+ * @example
92
+ * ```js
93
+ * import { unsafeRegisterIllustration } from "@ui5/webcomponents-base/dist/asset-registries/Illustrations.js";
94
+ *
95
+ * unsafeRegisterIllustration("EmptyCart", {
96
+ * sceneSvg: "<svg>...</svg>",
97
+ * dialogSvg: "<svg>...</svg>",
98
+ * spotSvg: "<svg>...</svg>",
99
+ * dotSvg: "<svg>...</svg>",
100
+ * title: "Your cart is empty",
101
+ * subtitle: "Add items to get started",
102
+ * set: "custom"
103
+ * });
104
+ * ```
105
+ */
106
+ const unsafeRegisterIllustration = (name, data) => {
42
107
  const collection = data.collection || FALLBACK_COLLECTION;
43
108
  registry.set(`${data.set}/${collection}/${name}`, {
44
109
  dialogSvg: data.dialogSvg,
@@ -64,14 +129,30 @@ const _loadIllustrationOnce = (illustrationName) => {
64
129
  }
65
130
  return illustrationPromises.get(registryKey);
66
131
  };
132
+ /**
133
+ * Synchronously retrieves illustration data from the registry.
134
+ *
135
+ * @param illustrationName - The illustration identifier in format "set/name"
136
+ * @returns The illustration properties or undefined if not available
137
+ *
138
+ * @public
139
+ */
67
140
  const getIllustrationDataSync = (illustrationName) => {
68
141
  const { registryKey } = processName(illustrationName);
69
142
  return registry.get(registryKey);
70
143
  };
144
+ /**
145
+ * Asynchronously retrieves illustration data, loading it if necessary.
146
+ *
147
+ * @param illustrationName - The illustration identifier in format "set/name"
148
+ * @returns Promise resolving to illustration properties or undefined
149
+ *
150
+ * @public
151
+ */
71
152
  const getIllustrationData = async (illustrationName) => {
72
153
  const { registryKey } = processName(illustrationName);
73
154
  await _loadIllustrationOnce(illustrationName);
74
155
  return registry.get(registryKey);
75
156
  };
76
- export { getIllustrationDataSync, registerIllustration, registerIllustrationLoader, getIllustrationData, };
157
+ export { getIllustrationDataSync, registerIllustration, unsafeRegisterIllustration, registerIllustrationLoader, getIllustrationData, };
77
158
  //# sourceMappingURL=Illustrations.js.map