@ui5/webcomponents-base 0.0.0-5b79982e1 → 0.0.0-5e31d3069

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 (702) hide show
  1. package/.eslintignore +8 -3
  2. package/.npsrc.json +3 -0
  3. package/CHANGELOG.md +614 -0
  4. package/README.md +53 -7
  5. package/bundle.esm.js +30 -22
  6. package/config/wdio.conf.cjs +400 -0
  7. package/dist/AssetRegistry.d.ts +5 -0
  8. package/dist/AssetRegistry.js +6 -12
  9. package/dist/AssetRegistry.js.map +1 -0
  10. package/dist/Boot.d.ts +9 -0
  11. package/dist/Boot.js +71 -0
  12. package/dist/Boot.js.map +1 -0
  13. package/dist/CSP.d.ts +30 -0
  14. package/dist/CSP.js +51 -0
  15. package/dist/CSP.js.map +1 -0
  16. package/dist/CustomElementsRegistry.d.ts +5 -0
  17. package/dist/CustomElementsRegistry.js +69 -30
  18. package/dist/CustomElementsRegistry.js.map +1 -0
  19. package/dist/CustomElementsScope.d.ts +7 -0
  20. package/dist/CustomElementsScope.js +11 -108
  21. package/dist/CustomElementsScope.js.map +1 -0
  22. package/dist/CustomElementsScopeUtils.d.ts +55 -0
  23. package/{src/CustomElementsScope.js → dist/CustomElementsScopeUtils.js} +34 -52
  24. package/dist/CustomElementsScopeUtils.js.map +1 -0
  25. package/dist/DOMObserver.d.ts +11 -0
  26. package/dist/DOMObserver.js +23 -0
  27. package/dist/DOMObserver.js.map +1 -0
  28. package/dist/Device.d.ts +12 -0
  29. package/dist/Device.js +159 -816
  30. package/dist/Device.js.map +1 -0
  31. package/dist/EventProvider.d.ts +25 -0
  32. package/dist/EventProvider.js +67 -78
  33. package/dist/EventProvider.js.map +1 -0
  34. package/dist/FeaturesRegistry.d.ts +3 -0
  35. package/dist/FeaturesRegistry.js +5 -7
  36. package/dist/FeaturesRegistry.js.map +1 -0
  37. package/dist/FontFace.d.ts +2 -0
  38. package/dist/FontFace.js +17 -110
  39. package/dist/FontFace.js.map +1 -0
  40. package/dist/InitialConfiguration.d.ts +27 -0
  41. package/dist/InitialConfiguration.js +124 -118
  42. package/dist/InitialConfiguration.js.map +1 -0
  43. package/dist/Keys.d.ts +57 -0
  44. package/dist/Keys.js +174 -217
  45. package/dist/Keys.js.map +1 -0
  46. package/dist/ManagedStyles.d.ts +8 -0
  47. package/dist/ManagedStyles.js +77 -0
  48. package/dist/ManagedStyles.js.map +1 -0
  49. package/dist/MarkedEvents.d.ts +9 -0
  50. package/dist/MarkedEvents.js +15 -0
  51. package/dist/MarkedEvents.js.map +1 -0
  52. package/dist/MediaRange.d.ts +37 -0
  53. package/dist/MediaRange.js +98 -0
  54. package/dist/MediaRange.js.map +1 -0
  55. package/dist/PropertiesFileFormat.d.ts +8 -0
  56. package/dist/PropertiesFileFormat.js +85 -0
  57. package/dist/PropertiesFileFormat.js.map +1 -0
  58. package/dist/Render.d.ts +47 -0
  59. package/dist/Render.js +143 -0
  60. package/dist/Render.js.map +1 -0
  61. package/dist/RenderQueue.d.ts +19 -0
  62. package/dist/RenderQueue.js +52 -62
  63. package/dist/RenderQueue.js.map +1 -0
  64. package/dist/Runtimes.d.ts +27 -0
  65. package/dist/Runtimes.js +86 -0
  66. package/dist/Runtimes.js.map +1 -0
  67. package/dist/StaticArea.d.ts +3 -0
  68. package/dist/StaticArea.js +4 -28
  69. package/dist/StaticArea.js.map +1 -0
  70. package/dist/StaticAreaItem.d.ts +36 -0
  71. package/dist/StaticAreaItem.js +92 -101
  72. package/dist/StaticAreaItem.js.map +1 -0
  73. package/dist/SystemCSSVars.d.ts +2 -0
  74. package/dist/SystemCSSVars.js +6 -28
  75. package/dist/SystemCSSVars.js.map +1 -0
  76. package/{src/Theming.js → dist/Theming.d.ts} +0 -1
  77. package/dist/Theming.js +1 -1
  78. package/dist/Theming.js.map +1 -0
  79. package/dist/UI5Element.d.ts +378 -0
  80. package/dist/UI5Element.js +924 -1144
  81. package/dist/UI5Element.js.map +1 -0
  82. package/dist/UI5ElementMetadata.d.ts +150 -0
  83. package/dist/UI5ElementMetadata.js +278 -267
  84. package/dist/UI5ElementMetadata.js.map +1 -0
  85. package/dist/animations/AnimationQueue.d.ts +8 -0
  86. package/dist/animations/AnimationQueue.js +31 -38
  87. package/dist/animations/AnimationQueue.js.map +1 -0
  88. package/dist/animations/animate.d.ts +14 -0
  89. package/dist/animations/animate.js +46 -51
  90. package/dist/animations/animate.js.map +1 -0
  91. package/dist/animations/scroll.d.ts +5 -0
  92. package/dist/animations/scroll.js +18 -27
  93. package/dist/animations/scroll.js.map +1 -0
  94. package/dist/animations/slideDown.d.ts +5 -0
  95. package/dist/animations/slideDown.js +53 -78
  96. package/dist/animations/slideDown.js.map +1 -0
  97. package/dist/animations/slideUp.d.ts +5 -0
  98. package/dist/animations/slideUp.js +49 -70
  99. package/dist/animations/slideUp.js.map +1 -0
  100. package/dist/api.json +1 -0
  101. package/dist/asset-registries/Icons.d.ts +38 -0
  102. package/dist/asset-registries/Icons.js +125 -32
  103. package/dist/asset-registries/Icons.js.map +1 -0
  104. package/dist/asset-registries/Illustrations.d.ts +17 -0
  105. package/dist/asset-registries/Illustrations.js +46 -0
  106. package/dist/asset-registries/Illustrations.js.map +1 -0
  107. package/dist/asset-registries/LocaleData.d.ts +7 -0
  108. package/dist/asset-registries/LocaleData.js +119 -118
  109. package/dist/asset-registries/LocaleData.js.map +1 -0
  110. package/dist/asset-registries/Themes.d.ts +11 -0
  111. package/dist/asset-registries/Themes.js +41 -77
  112. package/dist/asset-registries/Themes.js.map +1 -0
  113. package/dist/asset-registries/i18n.d.ts +23 -0
  114. package/dist/asset-registries/i18n.js +77 -86
  115. package/dist/asset-registries/i18n.js.map +1 -0
  116. package/dist/assets/Boot.34b7cea0.css +1 -0
  117. package/dist/assets/Boot.8220f4ab.js +9 -0
  118. package/dist/assets/bundle.esm.efe1daa8.js +50 -0
  119. package/dist/assets-meta/IconCollectionsAlias.d.ts +31 -0
  120. package/dist/assets-meta/IconCollectionsAlias.js +38 -0
  121. package/dist/assets-meta/IconCollectionsAlias.js.map +1 -0
  122. package/dist/config/AnimationMode.d.ts +14 -0
  123. package/dist/config/AnimationMode.js +21 -18
  124. package/dist/config/AnimationMode.js.map +1 -0
  125. package/dist/config/CalendarType.d.ts +8 -0
  126. package/dist/config/CalendarType.js +13 -12
  127. package/dist/config/CalendarType.js.map +1 -0
  128. package/dist/config/FormatSettings.d.ts +15 -0
  129. package/dist/config/FormatSettings.js +15 -9
  130. package/dist/config/FormatSettings.js.map +1 -0
  131. package/dist/config/Icons.d.ts +55 -0
  132. package/dist/config/Icons.js +103 -0
  133. package/dist/config/Icons.js.map +1 -0
  134. package/dist/config/Language.d.ts +40 -0
  135. package/dist/config/Language.js +49 -51
  136. package/dist/config/Language.js.map +1 -0
  137. package/dist/config/NoConflict.d.ts +20 -0
  138. package/dist/config/NoConflict.js +41 -41
  139. package/dist/config/NoConflict.js.map +1 -0
  140. package/dist/config/RTL.d.ts +7 -0
  141. package/dist/config/RTL.js +26 -20
  142. package/dist/config/RTL.js.map +1 -0
  143. package/dist/config/Theme.d.ts +38 -0
  144. package/dist/config/Theme.js +64 -22
  145. package/dist/config/Theme.js.map +1 -0
  146. package/dist/config/ThemeRoots.d.ts +4 -0
  147. package/dist/config/ThemeRoots.js +28 -0
  148. package/dist/config/ThemeRoots.js.map +1 -0
  149. package/dist/config/Timezone.d.ts +17 -0
  150. package/dist/config/Timezone.js +30 -0
  151. package/dist/config/Timezone.js.map +1 -0
  152. package/dist/css/BusyIndicator.css +80 -0
  153. package/dist/css/FontFace.css +66 -0
  154. package/dist/css/OverrideFontFace.css +32 -0
  155. package/dist/css/SystemCSSVars.css +17 -0
  156. package/dist/decorators/customElement.d.ts +23 -0
  157. package/dist/decorators/customElement.js +37 -0
  158. package/dist/decorators/customElement.js.map +1 -0
  159. package/dist/decorators/event.d.ts +10 -0
  160. package/dist/decorators/event.js +24 -0
  161. package/dist/decorators/event.js.map +1 -0
  162. package/dist/decorators/property.d.ts +9 -0
  163. package/dist/decorators/property.js +24 -0
  164. package/dist/decorators/property.js.map +1 -0
  165. package/dist/decorators/slot.d.ts +9 -0
  166. package/dist/decorators/slot.js +37 -0
  167. package/dist/decorators/slot.js.map +1 -0
  168. package/dist/delegate/ItemNavigation.d.ts +113 -0
  169. package/dist/delegate/ItemNavigation.js +280 -277
  170. package/dist/delegate/ItemNavigation.js.map +1 -0
  171. package/dist/delegate/ResizeHandler.d.ts +25 -0
  172. package/dist/delegate/ResizeHandler.js +84 -62
  173. package/dist/delegate/ResizeHandler.js.map +1 -0
  174. package/dist/delegate/ScrollEnablement.d.ts +49 -0
  175. package/dist/delegate/ScrollEnablement.js +159 -176
  176. package/dist/delegate/ScrollEnablement.js.map +1 -0
  177. package/dist/features/F6Navigation.d.ts +19 -0
  178. package/dist/features/F6Navigation.js +151 -0
  179. package/dist/features/F6Navigation.js.map +1 -0
  180. package/dist/features/LegacyDateFormats.d.ts +18 -0
  181. package/dist/features/LegacyDateFormats.js +20 -0
  182. package/dist/features/LegacyDateFormats.js.map +1 -0
  183. package/dist/features/OpenUI5Element.d.ts +9 -0
  184. package/dist/features/OpenUI5Element.js +5 -0
  185. package/dist/features/OpenUI5Element.js.map +1 -0
  186. package/dist/features/OpenUI5Enablement.d.ts +11 -0
  187. package/dist/features/OpenUI5Enablement.js +96 -0
  188. package/dist/features/OpenUI5Enablement.js.map +1 -0
  189. package/dist/features/OpenUI5Support.d.ts +26 -0
  190. package/dist/features/OpenUI5Support.js +95 -86
  191. package/dist/features/OpenUI5Support.js.map +1 -0
  192. package/dist/generated/AssetParameters.js +3 -1
  193. package/dist/generated/VersionInfo.js +10 -0
  194. package/dist/generated/css/BusyIndicator.css.d.ts +3 -0
  195. package/dist/generated/css/BusyIndicator.css.js +7 -0
  196. package/dist/generated/css/BusyIndicator.css.js.map +1 -0
  197. package/dist/generated/css/FontFace.css.d.ts +3 -0
  198. package/dist/generated/css/FontFace.css.js +7 -0
  199. package/dist/generated/css/FontFace.css.js.map +1 -0
  200. package/dist/generated/css/OverrideFontFace.css.d.ts +3 -0
  201. package/dist/generated/css/OverrideFontFace.css.js +7 -0
  202. package/dist/generated/css/OverrideFontFace.css.js.map +1 -0
  203. package/dist/generated/css/SystemCSSVars.css.d.ts +3 -0
  204. package/dist/generated/css/SystemCSSVars.css.js +7 -0
  205. package/dist/generated/css/SystemCSSVars.css.js.map +1 -0
  206. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +11 -0
  207. package/dist/getSharedResource.d.ts +11 -0
  208. package/dist/getSharedResource.js +22 -18
  209. package/dist/getSharedResource.js.map +1 -0
  210. package/dist/global.d.ts +40 -0
  211. package/dist/i18nBundle.d.ts +43 -0
  212. package/dist/i18nBundle.js +68 -42
  213. package/dist/i18nBundle.js.map +1 -0
  214. package/dist/locale/Locale.d.ts +22 -0
  215. package/dist/locale/Locale.js +75 -87
  216. package/dist/locale/Locale.js.map +1 -0
  217. package/dist/locale/RTLAwareRegistry.d.ts +4 -0
  218. package/dist/locale/RTLAwareRegistry.js +6 -11
  219. package/dist/locale/RTLAwareRegistry.js.map +1 -0
  220. package/dist/locale/applyDirection.d.ts +10 -0
  221. package/dist/locale/applyDirection.js +8 -9
  222. package/dist/locale/applyDirection.js.map +1 -0
  223. package/dist/locale/directionChange.d.ts +15 -0
  224. package/dist/locale/directionChange.js +7 -15
  225. package/dist/locale/directionChange.js.map +1 -0
  226. package/dist/locale/getEffectiveDir.d.ts +2 -0
  227. package/dist/locale/getEffectiveDir.js +24 -0
  228. package/dist/locale/getEffectiveDir.js.map +1 -0
  229. package/dist/locale/getLocale.d.ts +7 -0
  230. package/dist/locale/getLocale.js +26 -29
  231. package/dist/locale/getLocale.js.map +1 -0
  232. package/dist/locale/languageChange.d.ts +5 -0
  233. package/dist/locale/languageChange.js +8 -16
  234. package/dist/locale/languageChange.js.map +1 -0
  235. package/dist/locale/nextFallbackLocale.d.ts +8 -0
  236. package/dist/locale/nextFallbackLocale.js +15 -19
  237. package/dist/locale/nextFallbackLocale.js.map +1 -0
  238. package/dist/locale/normalizeLocale.d.ts +7 -0
  239. package/dist/locale/normalizeLocale.js +34 -41
  240. package/dist/locale/normalizeLocale.js.map +1 -0
  241. package/dist/renderer/LitRenderer.d.ts +14 -0
  242. package/dist/renderer/LitRenderer.js +34 -24
  243. package/dist/renderer/LitRenderer.js.map +1 -0
  244. package/dist/renderer/directives/style-map.js +72 -0
  245. package/dist/renderer/executeTemplate.d.ts +13 -0
  246. package/dist/renderer/executeTemplate.js +20 -7
  247. package/dist/renderer/executeTemplate.js.map +1 -0
  248. package/dist/sap/base/Log.js +240 -0
  249. package/dist/sap/base/assert.js +7 -0
  250. package/dist/sap/base/security/URLListValidator.js +159 -0
  251. package/dist/sap/base/security/encodeCSS.js +14 -0
  252. package/dist/sap/base/security/encodeXML.js +23 -0
  253. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  254. package/dist/sap/base/strings/toHex.js +8 -0
  255. package/dist/sap/base/util/now.js +7 -0
  256. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  257. package/dist/theming/CustomStyle.d.ts +6 -0
  258. package/dist/theming/CustomStyle.js +40 -32
  259. package/dist/theming/CustomStyle.js.map +1 -0
  260. package/dist/theming/ThemeLoaded.d.ts +5 -0
  261. package/dist/theming/ThemeLoaded.js +8 -16
  262. package/dist/theming/ThemeLoaded.js.map +1 -0
  263. package/dist/theming/ThemeRegistered.d.ts +4 -0
  264. package/dist/theming/ThemeRegistered.js +11 -0
  265. package/dist/theming/ThemeRegistered.js.map +1 -0
  266. package/dist/theming/applyTheme.d.ts +2 -0
  267. package/dist/theming/applyTheme.js +62 -71
  268. package/dist/theming/applyTheme.js.map +1 -0
  269. package/dist/theming/getConstructableStyle.d.ts +9 -0
  270. package/dist/theming/getConstructableStyle.js +13 -17
  271. package/dist/theming/getConstructableStyle.js.map +1 -0
  272. package/dist/theming/getEffectiveLinksHrefs.d.ts +3 -0
  273. package/dist/theming/getEffectiveLinksHrefs.js +17 -0
  274. package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
  275. package/dist/theming/getEffectiveStyle.d.ts +3 -0
  276. package/dist/theming/getEffectiveStyle.js +26 -17
  277. package/dist/theming/getEffectiveStyle.js.map +1 -0
  278. package/dist/theming/getStylesString.d.ts +3 -0
  279. package/dist/theming/getStylesString.js +9 -11
  280. package/dist/theming/getStylesString.js.map +1 -0
  281. package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
  282. package/dist/theming/getThemeDesignerTheme.js +73 -60
  283. package/dist/theming/getThemeDesignerTheme.js.map +1 -0
  284. package/dist/theming/preloadLinks.d.ts +3 -0
  285. package/dist/theming/preloadLinks.js +19 -0
  286. package/dist/theming/preloadLinks.js.map +1 -0
  287. package/dist/thirdparty/_merge.d.ts +2 -0
  288. package/dist/thirdparty/_merge.js +7 -4
  289. package/dist/thirdparty/_merge.js.map +1 -0
  290. package/dist/thirdparty/isPlainObject.d.ts +2 -0
  291. package/dist/thirdparty/isPlainObject.js +11 -10
  292. package/dist/thirdparty/isPlainObject.js.map +1 -0
  293. package/dist/thirdparty/merge.d.ts +2 -0
  294. package/dist/thirdparty/merge.js +4 -8
  295. package/dist/thirdparty/merge.js.map +1 -0
  296. package/dist/types/AnimationMode.d.ts +32 -0
  297. package/dist/types/AnimationMode.js +33 -6
  298. package/dist/types/AnimationMode.js.map +1 -0
  299. package/dist/types/CSSColor.d.ts +15 -0
  300. package/dist/types/CSSColor.js +18 -0
  301. package/dist/types/CSSColor.js.map +1 -0
  302. package/dist/types/CalendarType.d.ts +37 -0
  303. package/dist/types/CalendarType.js +35 -18
  304. package/dist/types/CalendarType.js.map +1 -0
  305. package/dist/types/DOMReference.d.ts +17 -0
  306. package/dist/types/DOMReference.js +25 -0
  307. package/dist/types/DOMReference.js.map +1 -0
  308. package/dist/types/DataType.d.ts +25 -0
  309. package/dist/types/DataType.js +33 -14
  310. package/dist/types/DataType.js.map +1 -0
  311. package/dist/types/Float.d.ts +17 -0
  312. package/dist/types/Float.js +17 -6
  313. package/dist/types/Float.js.map +1 -0
  314. package/dist/types/Integer.d.ts +17 -0
  315. package/dist/types/Integer.js +17 -5
  316. package/dist/types/Integer.js.map +1 -0
  317. package/dist/types/InvisibleMessageMode.d.ts +25 -0
  318. package/dist/types/InvisibleMessageMode.js +27 -0
  319. package/dist/types/InvisibleMessageMode.js.map +1 -0
  320. package/dist/types/ItemNavigationBehavior.d.ts +24 -0
  321. package/dist/types/ItemNavigationBehavior.js +22 -12
  322. package/dist/types/ItemNavigationBehavior.js.map +1 -0
  323. package/dist/types/NavigationMode.d.ts +32 -0
  324. package/dist/types/NavigationMode.js +33 -6
  325. package/dist/types/NavigationMode.js.map +1 -0
  326. package/dist/types/ValueState.d.ts +42 -0
  327. package/dist/types/ValueState.js +41 -19
  328. package/dist/types/ValueState.js.map +1 -0
  329. package/dist/types.d.ts +18 -0
  330. package/dist/types.js +2 -0
  331. package/dist/types.js.map +1 -0
  332. package/dist/updateShadowRoot.d.ts +8 -0
  333. package/dist/updateShadowRoot.js +38 -0
  334. package/dist/updateShadowRoot.js.map +1 -0
  335. package/dist/util/AriaLabelHelper.d.ts +15 -0
  336. package/dist/util/AriaLabelHelper.js +166 -36
  337. package/dist/util/AriaLabelHelper.js.map +1 -0
  338. package/dist/util/Caret.d.ts +7 -0
  339. package/dist/util/Caret.js +16 -38
  340. package/dist/util/Caret.js.map +1 -0
  341. package/dist/util/ColorConversion.d.ts +30 -0
  342. package/dist/util/ColorConversion.js +337 -0
  343. package/dist/util/ColorConversion.js.map +1 -0
  344. package/dist/util/FetchHelper.d.ts +3 -0
  345. package/dist/util/FetchHelper.js +19 -25
  346. package/dist/util/FetchHelper.js.map +1 -0
  347. package/dist/util/FocusableElements.d.ts +4 -0
  348. package/dist/util/FocusableElements.js +67 -68
  349. package/dist/util/FocusableElements.js.map +1 -0
  350. package/dist/util/HTMLSanitizer.d.ts +3 -0
  351. package/dist/util/HTMLSanitizer.js +6 -0
  352. package/dist/util/HTMLSanitizer.js.map +1 -0
  353. package/dist/util/InvisibleMessage.d.ts +10 -0
  354. package/dist/util/InvisibleMessage.js +56 -0
  355. package/dist/util/InvisibleMessage.js.map +1 -0
  356. package/dist/util/PopupUtils.d.ts +7 -0
  357. package/dist/util/PopupUtils.js +74 -0
  358. package/dist/util/PopupUtils.js.map +1 -0
  359. package/dist/util/SlotsHelper.d.ts +9 -0
  360. package/dist/util/SlotsHelper.js +30 -0
  361. package/dist/util/SlotsHelper.js.map +1 -0
  362. package/dist/util/StringHelper.d.ts +3 -0
  363. package/dist/util/StringHelper.js +17 -20
  364. package/dist/util/StringHelper.js.map +1 -0
  365. package/dist/util/TabbableElements.d.ts +17 -0
  366. package/dist/util/TabbableElements.js +53 -43
  367. package/dist/util/TabbableElements.js.map +1 -0
  368. package/dist/util/arraysAreEqual.d.ts +2 -0
  369. package/dist/util/arraysAreEqual.js +10 -12
  370. package/dist/util/arraysAreEqual.js.map +1 -0
  371. package/dist/util/clamp.d.ts +9 -0
  372. package/dist/util/clamp.js +12 -0
  373. package/dist/util/clamp.js.map +1 -0
  374. package/dist/util/createLinkInHead.d.ts +7 -0
  375. package/dist/util/createLinkInHead.js +21 -0
  376. package/dist/util/createLinkInHead.js.map +1 -0
  377. package/dist/util/createStyleInHead.d.ts +8 -0
  378. package/dist/util/createStyleInHead.js +10 -10
  379. package/dist/util/createStyleInHead.js.map +1 -0
  380. package/dist/util/debounce.d.ts +2 -0
  381. package/dist/util/debounce.js +15 -0
  382. package/dist/util/debounce.js.map +1 -0
  383. package/dist/util/detectNavigatorLanguage.d.ts +2 -0
  384. package/dist/util/detectNavigatorLanguage.js +7 -10
  385. package/dist/util/detectNavigatorLanguage.js.map +1 -0
  386. package/dist/util/escapeRegex.d.ts +8 -0
  387. package/dist/util/escapeRegex.js +11 -0
  388. package/dist/util/escapeRegex.js.map +1 -0
  389. package/dist/util/formatMessage.d.ts +2 -0
  390. package/dist/util/formatMessage.js +15 -19
  391. package/dist/util/formatMessage.js.map +1 -0
  392. package/dist/util/generateHighlightedMarkup.d.ts +9 -0
  393. package/dist/util/generateHighlightedMarkup.js +41 -0
  394. package/dist/util/generateHighlightedMarkup.js.map +1 -0
  395. package/dist/util/getActiveElement.d.ts +2 -0
  396. package/dist/util/getActiveElement.js +6 -8
  397. package/dist/util/getActiveElement.js.map +1 -0
  398. package/dist/util/getClassCopy.d.ts +398 -0
  399. package/dist/util/getClassCopy.js +10 -0
  400. package/dist/util/getClassCopy.js.map +1 -0
  401. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
  402. package/dist/util/getDesigntimePropertyAsArray.js +4 -3
  403. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
  404. package/dist/util/getEffectiveContentDensity.d.ts +2 -0
  405. package/dist/util/getEffectiveContentDensity.js +4 -0
  406. package/dist/util/getEffectiveContentDensity.js.map +1 -0
  407. package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
  408. package/dist/util/getEffectiveScrollbarStyle.js +4 -0
  409. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
  410. package/dist/util/getFastNavigationGroups.d.ts +2 -0
  411. package/dist/util/getFastNavigationGroups.js +51 -0
  412. package/dist/util/getFastNavigationGroups.js.map +1 -0
  413. package/{src/util/getFileExtension.js → dist/util/getFileExtension.d.ts} +3 -12
  414. package/dist/util/getFileExtension.js +9 -11
  415. package/dist/util/getFileExtension.js.map +1 -0
  416. package/dist/util/getNormalizedTarget.d.ts +7 -0
  417. package/dist/util/getNormalizedTarget.js +14 -0
  418. package/dist/util/getNormalizedTarget.js.map +1 -0
  419. package/dist/util/getSingletonElementInstance.d.ts +2 -0
  420. package/dist/util/getSingletonElementInstance.js +7 -10
  421. package/dist/util/getSingletonElementInstance.js.map +1 -0
  422. package/dist/util/isElementClickable.d.ts +2 -0
  423. package/dist/util/isElementClickable.js +16 -0
  424. package/dist/util/isElementClickable.js.map +1 -0
  425. package/dist/util/isElementHidden.d.ts +2 -0
  426. package/dist/util/isElementHidden.js +8 -0
  427. package/dist/util/isElementHidden.js.map +1 -0
  428. package/dist/util/isElementInView.d.ts +6 -0
  429. package/dist/util/isElementInView.js +12 -0
  430. package/dist/util/isElementInView.js.map +1 -0
  431. package/dist/util/isElementTabbable.d.ts +9 -0
  432. package/dist/util/isElementTabbable.js +30 -0
  433. package/dist/util/isElementTabbable.js.map +1 -0
  434. package/dist/util/isValidPropertyName.d.ts +8 -0
  435. package/dist/util/isValidPropertyName.js +16 -17
  436. package/dist/util/isValidPropertyName.js.map +1 -0
  437. package/dist/util/whenDOMReady.d.ts +2 -0
  438. package/dist/util/whenDOMReady.js +11 -10
  439. package/dist/util/whenDOMReady.js.map +1 -0
  440. package/dist/util/willShowContent.d.ts +2 -0
  441. package/dist/util/willShowContent.js +7 -0
  442. package/dist/util/willShowContent.js.map +1 -0
  443. package/dist/validateThemeRoot.d.ts +2 -0
  444. package/dist/validateThemeRoot.js +48 -0
  445. package/dist/validateThemeRoot.js.map +1 -0
  446. package/index.js +228 -2
  447. package/lib/generate-asset-parameters/index.js +11 -6
  448. package/lib/generate-styles/index.js +31 -0
  449. package/lib/generate-version-info/index.js +32 -0
  450. package/package-scripts.cjs +71 -0
  451. package/package.json +21 -13
  452. package/src/css/BusyIndicator.css +80 -0
  453. package/src/css/FontFace.css +66 -0
  454. package/src/css/OverrideFontFace.css +32 -0
  455. package/src/css/SystemCSSVars.css +17 -0
  456. package/src/renderer/directives/style-map.js +72 -0
  457. package/tsconfig.json +14 -0
  458. package/used-modules.txt +10 -0
  459. package/bundle.es5.js +0 -28
  460. package/config/rollup.config.js +0 -1
  461. package/config/wdio.conf.js +0 -1
  462. package/dist/RenderScheduler.js +0 -169
  463. package/dist/SVGIconRegistry.js +0 -73
  464. package/dist/animations/config.js +0 -5
  465. package/dist/boot.js +0 -34
  466. package/dist/compatibility/DOMObserver.js +0 -62
  467. package/dist/compatibility/patchNodeValue.js +0 -24
  468. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  469. package/dist/config/AssetsPath.js +0 -17
  470. package/dist/delegate/CustomResize.js +0 -78
  471. package/dist/delegate/NativeResize.js +0 -45
  472. package/dist/features/PropertiesFormatSupport.js +0 -8
  473. package/dist/features/browsersupport/Edge.js +0 -6
  474. package/dist/features/browsersupport/IE11.js +0 -43
  475. package/dist/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  476. package/dist/renderer/ifDefined.js +0 -21
  477. package/dist/renderer/scopeHTML.js +0 -32
  478. package/dist/resources/bundle.es5.js +0 -225
  479. package/dist/resources/bundle.es5.js.map +0 -1
  480. package/dist/resources/bundle.esm.js +0 -129
  481. package/dist/resources/bundle.esm.js.map +0 -1
  482. package/dist/test-resources/assets/Themes.js +0 -17
  483. package/dist/test-resources/elements/Child.js +0 -35
  484. package/dist/test-resources/elements/Generic.js +0 -84
  485. package/dist/test-resources/elements/GenericExt.js +0 -26
  486. package/dist/test-resources/elements/NoShadowDOM.js +0 -13
  487. package/dist/test-resources/elements/Parent.js +0 -41
  488. package/dist/test-resources/elements/WithStaticArea.js +0 -76
  489. package/dist/test-resources/pages/AllTestElements.html +0 -42
  490. package/dist/test-resources/pages/Configuration.html +0 -20
  491. package/dist/test-resources/pages/ConfigurationScript.html +0 -36
  492. package/dist/test-resources/pages/assets/messagebundle_de.properties +0 -1
  493. package/dist/test-resources/pages/assets/messagebundle_en.properties +0 -1
  494. package/dist/test-resources/pages/assets/messagebundle_es.properties +0 -1
  495. package/dist/test-resources/pages/assets/messagebundle_fr.properties +0 -1
  496. package/dist/test-resources/pages/i18n.html +0 -40
  497. package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -25
  498. package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -61
  499. package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -45
  500. package/dist/test-resources/specs/CustomTheme.spec.js +0 -25
  501. package/dist/test-resources/specs/StaticArea.spec.js +0 -34
  502. package/dist/test-resources/specs/Theming.spec.js +0 -31
  503. package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -240
  504. package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -96
  505. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -73
  506. package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -40
  507. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -12
  508. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -65
  509. package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -22
  510. package/dist/test-resources/specs/UI5ElementSlots.js +0 -34
  511. package/dist/theming/CSSVarsPonyfill.js +0 -68
  512. package/dist/theming/adaptCSSForIE.js +0 -95
  513. package/dist/theming/createComponentStyleTag.js +0 -54
  514. package/dist/theming/createThemePropertiesStyleTag.js +0 -20
  515. package/dist/thirdparty/Array.from.js +0 -16
  516. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  517. package/dist/thirdparty/Array.prototype.find.js +0 -46
  518. package/dist/thirdparty/Array.prototype.findIndex.js +0 -46
  519. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  520. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  521. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  522. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  523. package/dist/thirdparty/Number.isInteger.js +0 -5
  524. package/dist/thirdparty/Number.isNaN.js +0 -1
  525. package/dist/thirdparty/Number.parseFloat.js +0 -1
  526. package/dist/thirdparty/Number.parseInt.js +0 -1
  527. package/dist/thirdparty/Object.assign.js +0 -31
  528. package/dist/thirdparty/Object.entries.js +0 -11
  529. package/dist/thirdparty/Symbol.js +0 -2
  530. package/dist/thirdparty/WeakSet.js +0 -27
  531. package/dist/thirdparty/es6-string-methods.js +0 -182
  532. package/dist/thirdparty/events-polyfills.js +0 -89
  533. package/dist/thirdparty/fetch.js +0 -1
  534. package/dist/thirdparty/template.js +0 -600
  535. package/dist/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  536. package/dist/types/CSSSize.js +0 -9
  537. package/dist/types/PopupState.js +0 -37
  538. package/dist/util/EffectiveAssetPath.js +0 -27
  539. package/dist/util/encodeCSS.js +0 -24
  540. package/dist/util/findNodeOwner.js +0 -35
  541. package/dist/util/isDescendantOf.js +0 -15
  542. package/dist/util/isNodeClickable.js +0 -19
  543. package/dist/util/isNodeHidden.js +0 -9
  544. package/dist/util/isNodeTabbable.js +0 -28
  545. package/dist/util/isSlot.js +0 -3
  546. package/dist/util/parseProperties.js +0 -89
  547. package/dist/util/setToArray.js +0 -10
  548. package/dist/webcomponentsjs/LICENSE.md +0 -19
  549. package/dist/webcomponentsjs/README.md +0 -229
  550. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  551. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  552. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  553. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  554. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  555. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  556. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  557. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  558. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  559. package/dist/webcomponentsjs/package.json +0 -46
  560. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  561. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  562. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  563. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  564. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  565. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  566. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  567. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  568. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  569. package/package-scripts.js +0 -47
  570. package/src/AssetRegistry.js +0 -12
  571. package/src/CustomElementsRegistry.js +0 -39
  572. package/src/Device.js +0 -823
  573. package/src/EventProvider.js +0 -81
  574. package/src/FeaturesRegistry.js +0 -11
  575. package/src/FontFace.js +0 -118
  576. package/src/InitialConfiguration.js +0 -150
  577. package/src/Keys.js +0 -221
  578. package/src/RenderQueue.js +0 -66
  579. package/src/RenderScheduler.js +0 -169
  580. package/src/SVGIconRegistry.js +0 -73
  581. package/src/StaticArea.js +0 -31
  582. package/src/StaticAreaItem.js +0 -108
  583. package/src/SystemCSSVars.js +0 -31
  584. package/src/UI5Element.js +0 -1175
  585. package/src/UI5ElementMetadata.js +0 -280
  586. package/src/animations/AnimationQueue.js +0 -42
  587. package/src/animations/animate.js +0 -53
  588. package/src/animations/config.js +0 -5
  589. package/src/animations/scroll.js +0 -28
  590. package/src/animations/slideDown.js +0 -79
  591. package/src/animations/slideUp.js +0 -71
  592. package/src/asset-registries/Icons.js +0 -32
  593. package/src/asset-registries/LocaleData.js +0 -135
  594. package/src/asset-registries/Themes.js +0 -88
  595. package/src/asset-registries/i18n.js +0 -110
  596. package/src/boot.js +0 -34
  597. package/src/compatibility/DOMObserver.js +0 -62
  598. package/src/compatibility/patchNodeValue.js +0 -24
  599. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  600. package/src/config/AnimationMode.js +0 -23
  601. package/src/config/AssetsPath.js +0 -17
  602. package/src/config/CalendarType.js +0 -18
  603. package/src/config/FormatSettings.js +0 -13
  604. package/src/config/Language.js +0 -70
  605. package/src/config/NoConflict.js +0 -51
  606. package/src/config/RTL.js +0 -31
  607. package/src/config/Theme.js +0 -28
  608. package/src/delegate/CustomResize.js +0 -78
  609. package/src/delegate/ItemNavigation.js +0 -313
  610. package/src/delegate/NativeResize.js +0 -45
  611. package/src/delegate/ResizeHandler.js +0 -65
  612. package/src/delegate/ScrollEnablement.js +0 -182
  613. package/src/features/OpenUI5Support.js +0 -90
  614. package/src/features/PropertiesFormatSupport.js +0 -8
  615. package/src/features/browsersupport/Edge.js +0 -6
  616. package/src/features/browsersupport/IE11.js +0 -43
  617. package/src/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  618. package/src/getSharedResource.js +0 -30
  619. package/src/i18nBundle.js +0 -52
  620. package/src/locale/Locale.js +0 -91
  621. package/src/locale/RTLAwareRegistry.js +0 -14
  622. package/src/locale/applyDirection.js +0 -18
  623. package/src/locale/directionChange.js +0 -32
  624. package/src/locale/getLocale.js +0 -41
  625. package/src/locale/languageChange.js +0 -22
  626. package/src/locale/nextFallbackLocale.js +0 -28
  627. package/src/locale/normalizeLocale.js +0 -54
  628. package/src/renderer/LitRenderer.js +0 -31
  629. package/src/renderer/executeTemplate.js +0 -17
  630. package/src/renderer/ifDefined.js +0 -21
  631. package/src/renderer/scopeHTML.js +0 -32
  632. package/src/theming/CSSVarsPonyfill.js +0 -68
  633. package/src/theming/CustomStyle.js +0 -40
  634. package/src/theming/ThemeLoaded.js +0 -22
  635. package/src/theming/adaptCSSForIE.js +0 -95
  636. package/src/theming/applyTheme.js +0 -84
  637. package/src/theming/createComponentStyleTag.js +0 -54
  638. package/src/theming/createThemePropertiesStyleTag.js +0 -20
  639. package/src/theming/getConstructableStyle.js +0 -29
  640. package/src/theming/getEffectiveStyle.js +0 -23
  641. package/src/theming/getStylesString.js +0 -13
  642. package/src/theming/getThemeDesignerTheme.js +0 -67
  643. package/src/thirdparty/Array.from.js +0 -16
  644. package/src/thirdparty/Array.prototype.fill.js +0 -44
  645. package/src/thirdparty/Array.prototype.find.js +0 -46
  646. package/src/thirdparty/Array.prototype.findIndex.js +0 -46
  647. package/src/thirdparty/Array.prototype.includes.js +0 -51
  648. package/src/thirdparty/Element.prototype.closest.js +0 -11
  649. package/src/thirdparty/Element.prototype.matches.js +0 -6
  650. package/src/thirdparty/Map.prototype.keys.js +0 -9
  651. package/src/thirdparty/Number.isInteger.js +0 -5
  652. package/src/thirdparty/Number.isNaN.js +0 -1
  653. package/src/thirdparty/Number.parseFloat.js +0 -1
  654. package/src/thirdparty/Number.parseInt.js +0 -1
  655. package/src/thirdparty/Object.assign.js +0 -31
  656. package/src/thirdparty/Object.entries.js +0 -11
  657. package/src/thirdparty/Symbol.js +0 -2
  658. package/src/thirdparty/WeakSet.js +0 -27
  659. package/src/thirdparty/_merge.js +0 -32
  660. package/src/thirdparty/es6-string-methods.js +0 -182
  661. package/src/thirdparty/events-polyfills.js +0 -89
  662. package/src/thirdparty/fetch.js +0 -1
  663. package/src/thirdparty/isPlainObject.js +0 -18
  664. package/src/thirdparty/merge.js +0 -10
  665. package/src/thirdparty/template.js +0 -600
  666. package/src/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  667. package/src/types/AnimationMode.js +0 -7
  668. package/src/types/CSSSize.js +0 -9
  669. package/src/types/CalendarType.js +0 -22
  670. package/src/types/DataType.js +0 -25
  671. package/src/types/Float.js +0 -10
  672. package/src/types/Integer.js +0 -9
  673. package/src/types/ItemNavigationBehavior.js +0 -16
  674. package/src/types/NavigationMode.js +0 -7
  675. package/src/types/PopupState.js +0 -37
  676. package/src/types/ValueState.js +0 -22
  677. package/src/util/AriaLabelHelper.js +0 -41
  678. package/src/util/Caret.js +0 -45
  679. package/src/util/EffectiveAssetPath.js +0 -27
  680. package/src/util/FetchHelper.js +0 -31
  681. package/src/util/FocusableElements.js +0 -73
  682. package/src/util/StringHelper.js +0 -26
  683. package/src/util/TabbableElements.js +0 -47
  684. package/src/util/arraysAreEqual.js +0 -15
  685. package/src/util/createStyleInHead.js +0 -18
  686. package/src/util/detectNavigatorLanguage.js +0 -13
  687. package/src/util/encodeCSS.js +0 -24
  688. package/src/util/findNodeOwner.js +0 -35
  689. package/src/util/formatMessage.js +0 -23
  690. package/src/util/getActiveElement.js +0 -11
  691. package/src/util/getDesigntimePropertyAsArray.js +0 -4
  692. package/src/util/getSingletonElementInstance.js +0 -13
  693. package/src/util/isDescendantOf.js +0 -15
  694. package/src/util/isNodeClickable.js +0 -19
  695. package/src/util/isNodeHidden.js +0 -9
  696. package/src/util/isNodeTabbable.js +0 -28
  697. package/src/util/isSlot.js +0 -3
  698. package/src/util/isValidPropertyName.js +0 -29
  699. package/src/util/parseProperties.js +0 -89
  700. package/src/util/setToArray.js +0 -10
  701. package/src/util/whenDOMReady.js +0 -13
  702. /package/{config/.eslintrc.js → .eslintrc.cjs} +0 -0
@@ -0,0 +1,25 @@
1
+ type ResizeObserverCallback = () => Promise<void> | void;
2
+ /**
3
+ * Allows to register/deregister resize observers for a DOM element
4
+ *
5
+ * @public
6
+ * @class
7
+ */
8
+ declare class ResizeHandler {
9
+ /**
10
+ * @static
11
+ * @public
12
+ * @param {*} element UI5 Web Component or DOM Element to be observed
13
+ * @param {*} callback Callback to be executed
14
+ */
15
+ static register(element: HTMLElement, callback: ResizeObserverCallback): void;
16
+ /**
17
+ * @static
18
+ * @public
19
+ * @param {*} element UI5 Web Component or DOM Element to be unobserved
20
+ * @param {*} callback Callback to be removed
21
+ */
22
+ static deregister(element: HTMLElement, callback: ResizeObserverCallback): void;
23
+ }
24
+ export default ResizeHandler;
25
+ export type { ResizeObserverCallback, };
@@ -1,65 +1,87 @@
1
- import NativeResize from "./NativeResize.js";
2
- import CustomResize from "./CustomResize.js";
3
-
1
+ import { instanceOfUI5Element } from "../UI5Element.js";
2
+ let resizeObserver;
3
+ const observedElements = new Map();
4
+ const getResizeObserver = () => {
5
+ if (!resizeObserver) {
6
+ resizeObserver = new window.ResizeObserver(entries => {
7
+ window.requestAnimationFrame(() => {
8
+ entries.forEach(entry => {
9
+ const callbacks = observedElements.get(entry.target);
10
+ // Callbacks could be async and we need to handle returned promises to comply with the eslint "no-misused-promises" rule.
11
+ // Although Promise.all awaits all, we don't await the additional task after calling the callbacks and should not make any difference.
12
+ callbacks && Promise.all(callbacks.map((callback) => callback()));
13
+ });
14
+ });
15
+ });
16
+ }
17
+ return resizeObserver;
18
+ };
19
+ const observe = (element, callback) => {
20
+ const callbacks = observedElements.get(element) || [];
21
+ // if no callbacks have been added for this element - start observing it
22
+ if (!callbacks.length) {
23
+ getResizeObserver().observe(element);
24
+ }
25
+ // save the callbacks in an array
26
+ observedElements.set(element, [...callbacks, callback]);
27
+ };
28
+ const unobserve = (element, callback) => {
29
+ const callbacks = observedElements.get(element) || [];
30
+ if (callbacks.length === 0) {
31
+ return;
32
+ }
33
+ const filteredCallbacks = callbacks.filter((fn) => fn !== callback);
34
+ if (filteredCallbacks.length === 0) {
35
+ getResizeObserver().unobserve(element);
36
+ observedElements.delete(element);
37
+ }
38
+ else {
39
+ observedElements.set(element, filteredCallbacks);
40
+ }
41
+ };
42
+ /**
43
+ * Allows to register/deregister resize observers for a DOM element
44
+ *
45
+ * @public
46
+ * @class
47
+ */
4
48
  class ResizeHandler {
5
- static initialize() {
6
- ResizeHandler.Implementation = window.ResizeObserver ? NativeResize : CustomResize;
7
- ResizeHandler.Implementation.initialize();
8
- }
9
-
10
- /**
11
- * @static
12
- * @private
13
- * @param {*} ref Reference to be observed
14
- * @param {*} callback Callback to be executed
15
- * @memberof ResizeHandler
16
- */
17
- static attachListener(ref, callback) {
18
- ResizeHandler.Implementation.attachListener.call(ResizeHandler.Implementation, ref, callback);
19
- }
20
-
21
- /**
22
- * @static
23
- * @private
24
- * @param {*} ref Reference to be unobserved
25
- * @memberof ResizeHandler
26
- */
27
- static detachListener(ref, callback) {
28
- ResizeHandler.Implementation.detachListener.call(ResizeHandler.Implementation, ref, callback);
29
- }
30
-
31
-
32
- /**
33
- * @static
34
- * @public
35
- * @param {*} ref Reference to a UI5 Web Component or DOM Element to be observed
36
- * @param {*} callback Callback to be executed
37
- * @memberof ResizeHandler
38
- */
39
- static register(ref, callback) {
40
- if (ref.isUI5Element) {
41
- ref = ref.getDomRef();
42
- }
43
-
44
- ResizeHandler.attachListener(ref, callback);
45
- }
46
-
47
-
48
- /**
49
- * @static
50
- * @public
51
- * @param {*} ref Reference to UI5 Web Component or DOM Element to be unobserved
52
- * @memberof ResizeHandler
53
- */
54
- static deregister(ref, callback) {
55
- if (ref.isUI5Element) {
56
- ref = ref.getDomRef();
57
- }
58
-
59
- ResizeHandler.detachListener(ref, callback);
60
- }
49
+ /**
50
+ * @static
51
+ * @public
52
+ * @param {*} element UI5 Web Component or DOM Element to be observed
53
+ * @param {*} callback Callback to be executed
54
+ */
55
+ static register(element, callback) {
56
+ let effectiveElement = element;
57
+ if (instanceOfUI5Element(effectiveElement)) {
58
+ effectiveElement = effectiveElement.getDomRef();
59
+ }
60
+ if (effectiveElement instanceof HTMLElement) {
61
+ observe(effectiveElement, callback);
62
+ }
63
+ else {
64
+ console.warn("Cannot register ResizeHandler for element", element); // eslint-disable-line
65
+ }
66
+ }
67
+ /**
68
+ * @static
69
+ * @public
70
+ * @param {*} element UI5 Web Component or DOM Element to be unobserved
71
+ * @param {*} callback Callback to be removed
72
+ */
73
+ static deregister(element, callback) {
74
+ let effectiveElement = element;
75
+ if (instanceOfUI5Element(effectiveElement)) {
76
+ effectiveElement = effectiveElement.getDomRef();
77
+ }
78
+ if (effectiveElement instanceof HTMLElement) {
79
+ unobserve(effectiveElement, callback);
80
+ }
81
+ else {
82
+ console.warn("Cannot deregister ResizeHandler for element", element); // eslint-disable-line
83
+ }
84
+ }
61
85
  }
62
-
63
- ResizeHandler.initialize();
64
-
65
86
  export default ResizeHandler;
87
+ //# sourceMappingURL=ResizeHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResizeHandler.js","sourceRoot":"","sources":["../../src/delegate/ResizeHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { instanceOfUI5Element } from \"../UI5Element.js\";\n\ntype ResizeObserverCallback = () => Promise<void> | void;\n\nlet resizeObserver: ResizeObserver;\nconst observedElements = new Map<HTMLElement, Array<ResizeObserverCallback>>();\n\nconst getResizeObserver = () => {\n\tif (!resizeObserver) {\n\t\tresizeObserver = new window.ResizeObserver(entries => {\n\t\t\twindow.requestAnimationFrame(() => {\n\t\t\t\tentries.forEach(entry => {\n\t\t\t\t\tconst callbacks = observedElements.get(entry.target as HTMLElement);\n\t\t\t\t\t// Callbacks could be async and we need to handle returned promises to comply with the eslint \"no-misused-promises\" rule.\n\t\t\t\t\t// Although Promise.all awaits all, we don't await the additional task after calling the callbacks and should not make any difference.\n\t\t\t\t\tcallbacks && Promise.all(callbacks.map((callback: ResizeObserverCallback) => callback()));\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\treturn resizeObserver;\n};\n\nconst observe = (element: HTMLElement, callback: ResizeObserverCallback) => {\n\tconst callbacks = observedElements.get(element) || [];\n\n\t// if no callbacks have been added for this element - start observing it\n\tif (!callbacks.length) {\n\t\tgetResizeObserver().observe(element);\n\t}\n\n\t// save the callbacks in an array\n\tobservedElements.set(element, [...callbacks, callback]);\n};\n\nconst unobserve = (element: HTMLElement, callback: ResizeObserverCallback) => {\n\tconst callbacks = observedElements.get(element) || [];\n\tif (callbacks.length === 0) {\n\t\treturn;\n\t}\n\n\tconst filteredCallbacks = callbacks.filter((fn: ResizeObserverCallback) => fn !== callback);\n\tif (filteredCallbacks.length === 0) {\n\t\tgetResizeObserver().unobserve(element);\n\t\tobservedElements.delete(element);\n\t} else {\n\t\tobservedElements.set(element, filteredCallbacks);\n\t}\n};\n\n/**\n * Allows to register/deregister resize observers for a DOM element\n *\n * @public\n * @class\n */\nclass ResizeHandler {\n\t/**\n\t * @static\n\t * @public\n\t * @param {*} element UI5 Web Component or DOM Element to be observed\n\t * @param {*} callback Callback to be executed\n\t */\n\tstatic register(element: HTMLElement, callback: ResizeObserverCallback) {\n\t\tlet effectiveElement: HTMLElement | undefined = element;\n\n\t\tif (instanceOfUI5Element(effectiveElement)) {\n\t\t\teffectiveElement = effectiveElement.getDomRef();\n\t\t}\n\n\t\tif (effectiveElement instanceof HTMLElement) {\n\t\t\tobserve(effectiveElement, callback);\n\t\t} else {\n\t\t\tconsole.warn(\"Cannot register ResizeHandler for element\", element); // eslint-disable-line\n\t\t}\n\t}\n\n\t/**\n\t * @static\n\t * @public\n\t * @param {*} element UI5 Web Component or DOM Element to be unobserved\n\t * @param {*} callback Callback to be removed\n\t */\n\tstatic deregister(element: HTMLElement, callback: ResizeObserverCallback) {\n\t\tlet effectiveElement: HTMLElement | undefined = element;\n\n\t\tif (instanceOfUI5Element(effectiveElement)) {\n\t\t\teffectiveElement = effectiveElement.getDomRef();\n\t\t}\n\n\t\tif (effectiveElement instanceof HTMLElement) {\n\t\t\tunobserve(effectiveElement, callback);\n\t\t} else {\n\t\t\tconsole.warn(\"Cannot deregister ResizeHandler for element\", element); // eslint-disable-line\n\t\t}\n\t}\n}\n\nexport default ResizeHandler;\nexport type {\n\tResizeObserverCallback,\n};\n"]}
@@ -0,0 +1,49 @@
1
+ import EventProvider from "../EventProvider.js";
2
+ import type UI5Element from "../UI5Element.js";
3
+ type ScrollEnablementEventListenerParam = {
4
+ isLeft: boolean;
5
+ isRight: boolean;
6
+ };
7
+ type ScrollEnablementEventListenerReturn = void;
8
+ declare class ScrollEnablement extends EventProvider<ScrollEnablementEventListenerParam, ScrollEnablementEventListenerReturn> {
9
+ containerComponent: UI5Element;
10
+ mouseMove: (event: MouseEvent | TouchEvent) => void;
11
+ mouseUp: (event: MouseEvent | TouchEvent) => void;
12
+ touchStart: (event: MouseEvent | TouchEvent) => void;
13
+ cachedValue: {
14
+ dragX: number;
15
+ dragY: number;
16
+ };
17
+ startX: number;
18
+ startY: number;
19
+ _container?: HTMLElement;
20
+ supportsTouch: boolean;
21
+ _canScroll?: boolean;
22
+ _prevDragX?: number;
23
+ _prevDragY?: number;
24
+ constructor(containerComponent: UI5Element);
25
+ set scrollContainer(container: HTMLElement);
26
+ get scrollContainer(): HTMLElement;
27
+ /**
28
+ * Scrolls the container to the left/top position, retrying retryCount times, if the container is not yet painted
29
+ *
30
+ * @param left
31
+ * @param top
32
+ * @param retryCount
33
+ * @param retryInterval
34
+ * @returns {Promise<void>} resolved when scrolled successfully
35
+ */
36
+ scrollTo(left: number, top: number, retryCount?: number, retryInterval?: number): Promise<void>;
37
+ move(dx: number, dy: number, disableAnimation: boolean): {
38
+ promise: () => Promise<void | Error>;
39
+ stop: () => () => void;
40
+ } | undefined;
41
+ getScrollLeft(): number;
42
+ getScrollTop(): number;
43
+ _isTouchInside(event: TouchEvent | MouseEvent): boolean;
44
+ ontouchstart(event: TouchEvent | MouseEvent): void;
45
+ ontouchmove(event: TouchEvent | MouseEvent): void;
46
+ ontouchend(event: TouchEvent | MouseEvent): void;
47
+ }
48
+ export default ScrollEnablement;
49
+ export type { ScrollEnablementEventListenerParam, };
@@ -1,182 +1,165 @@
1
- import { isPhone } from "../Device.js";
1
+ import { supportsTouch } from "../Device.js";
2
2
  import EventProvider from "../EventProvider.js";
3
3
  import scroll from "../animations/scroll.js";
4
-
5
4
  const scrollEventName = "scroll";
6
- const touchEndEventName = isPhone() ? "touchend" : "mouseup";
7
-
5
+ const touchEndEventName = supportsTouch() ? "touchend" : "mouseup";
8
6
  class ScrollEnablement extends EventProvider {
9
- constructor(containerComponent) {
10
- super();
11
- this.containerComponent = containerComponent;
12
- this.mouseMove = this.ontouchmove.bind(this);
13
- this.mouseUp = this.ontouchend.bind(this);
14
- this.touchStart = this.ontouchstart.bind(this);
15
-
16
- this.isPhone = isPhone();
17
-
18
- // On Android devices touchmove is thrown one more time than neccessary (together with touchend)
19
- // so we have to cache the previus coordinates in order to provide correct parameters in the
20
- // event for Android
21
- this.cachedValue = {};
22
-
23
- // In components like Carousel you need to know if the user has clicked on something or swiped
24
- // in order to throw the needed event or not
25
- this.startX = 0;
26
- this.startY = 0;
27
-
28
- if (this.isPhone) {
29
- containerComponent.addEventListener("touchstart", this.touchStart, { passive: true });
30
- containerComponent.addEventListener("touchmove", this.mouseMove, { passive: true });
31
- containerComponent.addEventListener("touchend", this.mouseUp, { passive: true });
32
- } else {
33
- containerComponent.addEventListener("mousedown", this.touchStart, { passive: true });
34
- }
35
- }
36
-
37
- set scrollContainer(container) {
38
- this._container = container;
39
- }
40
-
41
- get scrollContainer() {
42
- return this._container;
43
- }
44
-
45
- /**
46
- * Scrolls the container to the left/top position, retrying retryCount times, if the container is not yet painted
47
- *
48
- * @param left
49
- * @param top
50
- * @param retryCount
51
- * @param retryInterval
52
- * @returns {Promise<void>} resolved when scrolled successfully
53
- */
54
- async scrollTo(left, top, retryCount = 0, retryInterval = 0) {
55
- let containerPainted = this.scrollContainer.clientHeight > 0 && this.scrollContainer.clientWidth > 0;
56
-
57
- /* eslint-disable no-loop-func, no-await-in-loop */
58
- while (!containerPainted && retryCount > 0) {
59
- await new Promise(resolve => {
60
- setTimeout(() => {
61
- containerPainted = this.scrollContainer.clientHeight > 0 && this.scrollContainer.clientWidth > 0;
62
- retryCount--;
63
- resolve();
64
- }, retryInterval);
65
- });
66
- }
67
- /* eslint-disable no-loop-func, no-await-in-loop */
68
-
69
- this._container.scrollLeft = left;
70
- this._container.scrollTop = top;
71
- }
72
-
73
- move(dx, dy) {
74
- return scroll({
75
- element: this._container,
76
- dx,
77
- dy,
78
- });
79
- }
80
-
81
- getScrollLeft() {
82
- return this._container.scrollLeft;
83
- }
84
-
85
- getScrollTop() {
86
- return this._container.scrollTop;
87
- }
88
-
89
- _isTouchInside(touch) {
90
- const rect = this._container.getBoundingClientRect();
91
- const x = this.isPhone ? touch.clientX : touch.x;
92
- const y = this.isPhone ? touch.clientY : touch.y;
93
-
94
- return x >= rect.left && x <= rect.right
95
- && y >= rect.top && y <= rect.bottom;
96
- }
97
-
98
- ontouchstart(event) {
99
- const touch = this.isPhone ? event.touches[0] : null;
100
-
101
- if (!this.isPhone) {
102
- document.addEventListener("mouseup", this.mouseUp, { passive: true });
103
- document.addEventListener("mousemove", this.mouseMove, { passive: true });
104
- } else {
105
- // Needed only on mobile
106
- this.startX = touch.pageX;
107
- this.startY = touch.pageY;
108
- }
109
-
110
- this._prevDragX = this.isPhone ? touch.pageX : event.x;
111
- this._prevDragY = this.isPhone ? touch.pageY : event.y;
112
-
113
- this._canScroll = this._isTouchInside(this.isPhone ? touch : event);
114
- }
115
-
116
- ontouchmove(event) {
117
- if (!this._canScroll) {
118
- return;
119
- }
120
-
121
- const container = this._container;
122
- const touch = this.isPhone ? event.touches[0] : null;
123
-
124
- const dragX = this.isPhone ? touch.pageX : event.x;
125
- const dragY = this.isPhone ? touch.pageY : event.y;
126
-
127
- container.scrollLeft += this._prevDragX - dragX;
128
- container.scrollTop += this._prevDragY - dragY;
129
-
130
- this.fireEvent(scrollEventName, {
131
- isLeft: dragX > this._prevDragX,
132
- isRight: dragX < this._prevDragX,
133
- });
134
-
135
- this.cachedValue.dragX = this._prevDragX;
136
- this.cachedValue.dragY = this._prevDragY;
137
-
138
- this._prevDragX = dragX;
139
- this._prevDragY = dragY;
140
- }
141
-
142
- ontouchend(event) {
143
- if (this.isPhone) {
144
- const deltaX = Math.abs(event.changedTouches[0].pageX - this.startX);
145
- const deltaY = Math.abs(event.changedTouches[0].pageY - this.startY);
146
-
147
- if (deltaX < 10 && deltaY < 10) {
148
- return;
149
- }
150
- }
151
-
152
- if (!this._canScroll) {
153
- return;
154
- }
155
-
156
- const container = this._container;
157
- const dragX = this.isPhone ? event.changedTouches[0].pageX : event.x;
158
- const dragY = this.isPhone ? event.changedTouches[0].pageY : event.y;
159
-
160
- container.scrollLeft += this._prevDragX - dragX;
161
- container.scrollTop += this._prevDragY - dragY;
162
-
163
- const useCachedValues = dragX === this._prevDragX;
164
- const _dragX = useCachedValues ? this.cachedValue.dragX : dragX;
165
- // const _dragY = useCachedValues ? this.cachedValue.dragY : dragY; add if needed
166
-
167
- this.fireEvent(touchEndEventName, {
168
- isLeft: _dragX < this._prevDragX,
169
- isRight: _dragX > this._prevDragX,
170
- });
171
-
172
- this._prevDragX = dragX;
173
- this._prevDragY = dragY;
174
-
175
- if (!this.isPhone) {
176
- document.removeEventListener("mousemove", this.mouseMove, { passive: true });
177
- document.removeEventListener("mouseup", this.mouseUp);
178
- }
179
- }
7
+ constructor(containerComponent) {
8
+ super();
9
+ this.supportsTouch = supportsTouch();
10
+ this.containerComponent = containerComponent;
11
+ this.mouseMove = this.ontouchmove.bind(this);
12
+ this.mouseUp = this.ontouchend.bind(this);
13
+ this.touchStart = this.ontouchstart.bind(this);
14
+ this.supportsTouch = supportsTouch();
15
+ // On Android devices touchmove is thrown one more time than neccessary (together with touchend)
16
+ // so we have to cache the previus coordinates in order to provide correct parameters in the
17
+ // event for Android
18
+ this.cachedValue = { dragX: 0, dragY: 0 };
19
+ // In components like Carousel you need to know if the user has clicked on something or swiped
20
+ // in order to throw the needed event or not
21
+ this.startX = 0;
22
+ this.startY = 0;
23
+ if (this.supportsTouch) {
24
+ containerComponent.addEventListener("touchstart", this.touchStart, { passive: true });
25
+ containerComponent.addEventListener("touchmove", this.mouseMove, { passive: true });
26
+ containerComponent.addEventListener("touchend", this.mouseUp, { passive: true });
27
+ }
28
+ else {
29
+ containerComponent.addEventListener("mousedown", this.touchStart, { passive: true });
30
+ }
31
+ }
32
+ set scrollContainer(container) {
33
+ this._container = container;
34
+ }
35
+ get scrollContainer() {
36
+ return this._container;
37
+ }
38
+ /**
39
+ * Scrolls the container to the left/top position, retrying retryCount times, if the container is not yet painted
40
+ *
41
+ * @param left
42
+ * @param top
43
+ * @param retryCount
44
+ * @param retryInterval
45
+ * @returns {Promise<void>} resolved when scrolled successfully
46
+ */
47
+ async scrollTo(left, top, retryCount = 0, retryInterval = 0) {
48
+ let containerPainted = this.scrollContainer.clientHeight > 0 && this.scrollContainer.clientWidth > 0;
49
+ /* eslint-disable no-loop-func, no-await-in-loop */
50
+ while (!containerPainted && retryCount > 0) {
51
+ await new Promise(resolve => {
52
+ setTimeout(() => {
53
+ containerPainted = this.scrollContainer.clientHeight > 0 && this.scrollContainer.clientWidth > 0;
54
+ retryCount--;
55
+ resolve();
56
+ }, retryInterval);
57
+ });
58
+ }
59
+ /* eslint-disable no-loop-func, no-await-in-loop */
60
+ this._container.scrollLeft = left;
61
+ this._container.scrollTop = top;
62
+ }
63
+ move(dx, dy, disableAnimation) {
64
+ if (disableAnimation) {
65
+ this._container.scrollLeft += dx;
66
+ this._container.scrollTop += dy;
67
+ return;
68
+ }
69
+ if (this._container) {
70
+ return scroll(this._container, dx, dy);
71
+ }
72
+ }
73
+ getScrollLeft() {
74
+ return this._container.scrollLeft;
75
+ }
76
+ getScrollTop() {
77
+ return this._container.scrollTop;
78
+ }
79
+ _isTouchInside(event) {
80
+ let touch = null;
81
+ if (this.supportsTouch && event instanceof TouchEvent) {
82
+ touch = event.touches[0];
83
+ }
84
+ const rect = this._container.getBoundingClientRect();
85
+ const x = this.supportsTouch ? touch.clientX : event.x;
86
+ const y = this.supportsTouch ? touch.clientY : event.y;
87
+ return x >= rect.left && x <= rect.right
88
+ && y >= rect.top && y <= rect.bottom;
89
+ }
90
+ ontouchstart(event) {
91
+ let touch = null;
92
+ if (this.supportsTouch && event instanceof TouchEvent) {
93
+ touch = event.touches[0];
94
+ }
95
+ if (!this.supportsTouch) {
96
+ document.addEventListener("mouseup", this.mouseUp, { passive: true });
97
+ document.addEventListener("mousemove", this.mouseMove, { passive: true });
98
+ }
99
+ else {
100
+ // Needed only on mobile
101
+ this.startX = touch.pageX;
102
+ this.startY = touch.pageY;
103
+ }
104
+ if (this.supportsTouch && event instanceof TouchEvent) {
105
+ this._prevDragX = touch.pageX;
106
+ this._prevDragY = touch.pageY;
107
+ }
108
+ if (event instanceof MouseEvent) {
109
+ this._prevDragX = event.x;
110
+ this._prevDragY = event.y;
111
+ }
112
+ this._canScroll = this._isTouchInside(event);
113
+ }
114
+ ontouchmove(event) {
115
+ if (!this._canScroll) {
116
+ return;
117
+ }
118
+ const container = this._container;
119
+ const touch = this.supportsTouch ? event.touches[0] : null;
120
+ const dragX = this.supportsTouch ? touch.pageX : event.x;
121
+ const dragY = this.supportsTouch ? touch.pageY : event.y;
122
+ container.scrollLeft += this._prevDragX - dragX;
123
+ container.scrollTop += this._prevDragY - dragY;
124
+ this.fireEvent(scrollEventName, {
125
+ isLeft: dragX > this._prevDragX,
126
+ isRight: dragX < this._prevDragX,
127
+ });
128
+ this.cachedValue.dragX = this._prevDragX;
129
+ this.cachedValue.dragY = this._prevDragY;
130
+ this._prevDragX = dragX;
131
+ this._prevDragY = dragY;
132
+ }
133
+ ontouchend(event) {
134
+ if (this.supportsTouch) {
135
+ const deltaX = Math.abs(event.changedTouches[0].pageX - this.startX);
136
+ const deltaY = Math.abs(event.changedTouches[0].pageY - this.startY);
137
+ if (deltaX < 10 && deltaY < 10) {
138
+ return;
139
+ }
140
+ }
141
+ if (!this._canScroll) {
142
+ return;
143
+ }
144
+ const container = this._container;
145
+ const dragX = this.supportsTouch ? event.changedTouches[0].pageX : event.x;
146
+ const dragY = this.supportsTouch ? event.changedTouches[0].pageY : event.y;
147
+ container.scrollLeft += this._prevDragX - dragX;
148
+ container.scrollTop += this._prevDragY - dragY;
149
+ const useCachedValues = dragX === this._prevDragX;
150
+ const _dragX = useCachedValues ? this.cachedValue.dragX : dragX;
151
+ // const _dragY = useCachedValues ? this.cachedValue.dragY : dragY; add if needed
152
+ this.fireEvent(touchEndEventName, {
153
+ isLeft: _dragX < this._prevDragX,
154
+ isRight: _dragX > this._prevDragX,
155
+ });
156
+ this._prevDragX = dragX;
157
+ this._prevDragY = dragY;
158
+ if (!this.supportsTouch) {
159
+ document.removeEventListener("mousemove", this.mouseMove);
160
+ document.removeEventListener("mouseup", this.mouseUp);
161
+ }
162
+ }
180
163
  }
181
-
182
164
  export default ScrollEnablement;
165
+ //# sourceMappingURL=ScrollEnablement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollEnablement.js","sourceRoot":"","sources":["../../src/delegate/ScrollEnablement.ts"],"names":[],"mappings":"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","sourcesContent":["import { supportsTouch } from \"../Device.js\";\nimport EventProvider from \"../EventProvider.js\";\nimport scroll from \"../animations/scroll.js\";\nimport type UI5Element from \"../UI5Element.js\";\n\nconst scrollEventName = \"scroll\";\nconst touchEndEventName = supportsTouch() ? \"touchend\" : \"mouseup\";\n\ntype ScrollEnablementEventListenerParam = {\n\tisLeft: boolean;\n\tisRight: boolean\n}\ntype ScrollEnablementEventListenerReturn = void;\n\nclass ScrollEnablement extends EventProvider<ScrollEnablementEventListenerParam, ScrollEnablementEventListenerReturn> {\n\tcontainerComponent: UI5Element;\n\tmouseMove: (event: MouseEvent | TouchEvent) => void;\n\tmouseUp: (event: MouseEvent | TouchEvent) => void;\n\ttouchStart: (event: MouseEvent | TouchEvent) => void;\n\tcachedValue: { dragX: number, dragY: number };\n\tstartX: number;\n\tstartY: number;\n\t_container?: HTMLElement;\n\tsupportsTouch = supportsTouch();\n\t_canScroll?: boolean;\n\t_prevDragX?: number;\n\t_prevDragY?: number;\n\n\tconstructor(containerComponent: UI5Element) {\n\t\tsuper();\n\t\tthis.containerComponent = containerComponent;\n\t\tthis.mouseMove = this.ontouchmove.bind(this);\n\t\tthis.mouseUp = this.ontouchend.bind(this);\n\t\tthis.touchStart = this.ontouchstart.bind(this);\n\n\t\tthis.supportsTouch = supportsTouch();\n\n\t\t// On Android devices touchmove is thrown one more time than neccessary (together with touchend)\n\t\t// so we have to cache the previus coordinates in order to provide correct parameters in the\n\t\t// event for Android\n\t\tthis.cachedValue = { dragX: 0, dragY: 0 };\n\n\t\t// In components like Carousel you need to know if the user has clicked on something or swiped\n\t\t// in order to throw the needed event or not\n\t\tthis.startX = 0;\n\t\tthis.startY = 0;\n\n\t\tif (this.supportsTouch) {\n\t\t\tcontainerComponent.addEventListener(\"touchstart\", this.touchStart, { passive: true });\n\t\t\tcontainerComponent.addEventListener(\"touchmove\", this.mouseMove, { passive: true });\n\t\t\tcontainerComponent.addEventListener(\"touchend\", this.mouseUp, { passive: true });\n\t\t} else {\n\t\t\tcontainerComponent.addEventListener(\"mousedown\", this.touchStart, { passive: true });\n\t\t}\n\t}\n\n\tset scrollContainer(container: HTMLElement) {\n\t\tthis._container = container;\n\t}\n\n\tget scrollContainer() {\n\t\treturn this._container!;\n\t}\n\n\t/**\n\t * Scrolls the container to the left/top position, retrying retryCount times, if the container is not yet painted\n\t *\n\t * @param left\n\t * @param top\n\t * @param retryCount\n\t * @param retryInterval\n\t * @returns {Promise<void>} resolved when scrolled successfully\n\t */\n\tasync scrollTo(left: number, top: number, retryCount = 0, retryInterval = 0) {\n\t\tlet containerPainted = this.scrollContainer.clientHeight > 0 && this.scrollContainer.clientWidth > 0;\n\n\t\t/* eslint-disable no-loop-func, no-await-in-loop */\n\t\twhile (!containerPainted && retryCount > 0) {\n\t\t\tawait new Promise<void>(resolve => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tcontainerPainted = this.scrollContainer.clientHeight > 0 && this.scrollContainer.clientWidth > 0;\n\t\t\t\t\tretryCount--;\n\t\t\t\t\tresolve();\n\t\t\t\t}, retryInterval);\n\t\t\t});\n\t\t}\n\t\t/* eslint-disable no-loop-func, no-await-in-loop */\n\n\t\tthis._container!.scrollLeft = left;\n\t\tthis._container!.scrollTop = top;\n\t}\n\n\tmove(dx: number, dy: number, disableAnimation: boolean) {\n\t\tif (disableAnimation) {\n\t\t\tthis._container!.scrollLeft += dx;\n\t\t\tthis._container!.scrollTop += dy;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._container) {\n\t\t\treturn scroll(this._container, dx, dy);\n\t\t}\n\t}\n\n\tgetScrollLeft() {\n\t\treturn this._container!.scrollLeft;\n\t}\n\n\tgetScrollTop() {\n\t\treturn this._container!.scrollTop;\n\t}\n\n\t_isTouchInside(event: TouchEvent | MouseEvent) {\n\t\tlet touch = null;\n\t\tif (this.supportsTouch && event instanceof TouchEvent) {\n\t\t\ttouch = event.touches[0];\n\t\t}\n\n\t\tconst rect = this._container!.getBoundingClientRect();\n\t\tconst x = this.supportsTouch ? (touch as TouchInit).clientX : (event as MouseEvent).x;\n\t\tconst y = this.supportsTouch ? (touch as TouchInit).clientY : (event as MouseEvent).y;\n\n\t\treturn x! >= rect.left && x! <= rect.right\n\t\t\t&& y! >= rect.top && y! <= rect.bottom;\n\t}\n\n\tontouchstart(event: TouchEvent | MouseEvent) {\n\t\tlet touch = null;\n\t\tif (this.supportsTouch && event instanceof TouchEvent) {\n\t\t\ttouch = event.touches[0];\n\t\t}\n\n\t\tif (!this.supportsTouch) {\n\t\t\tdocument.addEventListener(\"mouseup\", this.mouseUp, { passive: true });\n\t\t\tdocument.addEventListener(\"mousemove\", this.mouseMove, { passive: true });\n\t\t} else {\n\t\t\t// Needed only on mobile\n\t\t\tthis.startX = touch!.pageX;\n\t\t\tthis.startY = touch!.pageY;\n\t\t}\n\n\t\tif (this.supportsTouch && event instanceof TouchEvent) {\n\t\t\tthis._prevDragX = touch!.pageX;\n\t\t\tthis._prevDragY = touch!.pageY;\n\t\t}\n\n\t\tif (event instanceof MouseEvent) {\n\t\t\tthis._prevDragX = event.x;\n\t\t\tthis._prevDragY = event.y;\n\t\t}\n\n\t\tthis._canScroll = this._isTouchInside(event);\n\t}\n\n\tontouchmove(event: TouchEvent | MouseEvent) {\n\t\tif (!this._canScroll) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst container = this._container;\n\t\tconst touch = this.supportsTouch ? (event as TouchEvent).touches[0] : null;\n\n\t\tconst dragX = this.supportsTouch ? (touch as TouchInit).pageX : (event as MouseEvent).x;\n\t\tconst dragY = this.supportsTouch ? (touch as TouchInit).pageY : (event as MouseEvent).y;\n\n\t\tcontainer!.scrollLeft += this._prevDragX! - dragX!;\n\t\tcontainer!.scrollTop += this._prevDragY! - dragY!;\n\n\t\tthis.fireEvent(scrollEventName, {\n\t\t\tisLeft: dragX! > this._prevDragX!,\n\t\t\tisRight: dragX! < this._prevDragX!,\n\t\t});\n\n\t\tthis.cachedValue.dragX = this._prevDragX!;\n\t\tthis.cachedValue.dragY = this._prevDragY!;\n\n\t\tthis._prevDragX = dragX;\n\t\tthis._prevDragY = dragY;\n\t}\n\n\tontouchend(event: TouchEvent | MouseEvent) {\n\t\tif (this.supportsTouch) {\n\t\t\tconst deltaX = Math.abs((event as TouchEvent).changedTouches[0].pageX - this.startX);\n\t\t\tconst deltaY = Math.abs((event as TouchEvent).changedTouches[0].pageY - this.startY);\n\n\t\t\tif (deltaX < 10 && deltaY < 10) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (!this._canScroll) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst container = this._container;\n\t\tconst dragX = this.supportsTouch ? (event as TouchEvent).changedTouches[0].pageX : (event as MouseEvent).x;\n\t\tconst dragY = this.supportsTouch ? (event as TouchEvent).changedTouches[0].pageY : (event as MouseEvent).y;\n\n\t\tcontainer!.scrollLeft += this._prevDragX! - dragX;\n\t\tcontainer!.scrollTop += this._prevDragY! - dragY;\n\n\t\tconst useCachedValues = dragX === this._prevDragX;\n\t\tconst _dragX = useCachedValues ? this.cachedValue.dragX : dragX;\n\t\t// const _dragY = useCachedValues ? this.cachedValue.dragY : dragY; add if needed\n\n\t\tthis.fireEvent(touchEndEventName, {\n\t\t\tisLeft: _dragX < this._prevDragX!,\n\t\t\tisRight: _dragX > this._prevDragX!,\n\t\t});\n\n\t\tthis._prevDragX = dragX;\n\t\tthis._prevDragY = dragY;\n\n\t\tif (!this.supportsTouch) {\n\t\t\tdocument.removeEventListener(\"mousemove\", this.mouseMove);\n\t\t\tdocument.removeEventListener(\"mouseup\", this.mouseUp);\n\t\t}\n\t}\n}\n\nexport default ScrollEnablement;\nexport type {\n\tScrollEnablementEventListenerParam,\n};\n"]}
@@ -0,0 +1,19 @@
1
+ declare class F6Navigation {
2
+ static _instance: F6Navigation;
3
+ keydownHandler: (event: KeyboardEvent) => void;
4
+ selectedGroup: HTMLElement | null;
5
+ groups: Array<HTMLElement>;
6
+ constructor();
7
+ attachEventListeners(): void;
8
+ groupElementToFocus(nextElement: HTMLElement): Promise<HTMLElement | undefined>;
9
+ findNextFocusableGroupElement(currentIndex: number): Promise<HTMLElement | undefined>;
10
+ findPreviousFocusableGroupElement(currentIndex: number): Promise<HTMLElement | undefined>;
11
+ _keydownHandler(event: KeyboardEvent): Promise<void>;
12
+ removeEventListeners(): void;
13
+ updateGroups(): void;
14
+ setSelectedGroup(root?: DocumentOrShadowRoot): void;
15
+ deepActive(root: DocumentOrShadowRoot): Element | null;
16
+ destroy(): void;
17
+ static init(): F6Navigation;
18
+ }
19
+ export default F6Navigation;