@ui5/webcomponents-base 0.0.0-64a57f090 → 0.0.0-6827fdc09

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 (479) hide show
  1. package/CHANGELOG.md +1499 -0
  2. package/README.md +3 -13
  3. package/cypress/specs/Accessor.cy.tsx +79 -0
  4. package/cypress/specs/Boot.cy.tsx +19 -0
  5. package/cypress/specs/ConfigurationChange.cy.tsx +41 -0
  6. package/cypress/specs/ConfigurationScript.cy.tsx +133 -0
  7. package/cypress/specs/ConfigurationURL.cy.tsx +201 -0
  8. package/cypress/specs/CustomMount.cy.tsx +9 -0
  9. package/cypress/specs/CustomTheme.cy.tsx +36 -0
  10. package/cypress/specs/EventProvider.cy.tsx +59 -0
  11. package/cypress/specs/Events.cy.tsx +28 -0
  12. package/cypress/specs/SystemDOMElements.cy.tsx +8 -0
  13. package/cypress/specs/Theming.cy.tsx +74 -0
  14. package/cypress/specs/UI5ElementInvalidation.cy.tsx +252 -0
  15. package/cypress/specs/UI5ElementLifecycle.cy.tsx +82 -0
  16. package/cypress/specs/UI5ElementListenForChildPropChanges.cy.tsx +83 -0
  17. package/cypress/specs/UI5ElementMetadataExt.cy.tsx +42 -0
  18. package/cypress/specs/UI5ElementPropertyValidation.cy.tsx +16 -0
  19. package/cypress/specs/UI5ElementPropsAndAttrs.cy.tsx +113 -0
  20. package/cypress/specs/UI5ElementShadowDOM.cy.tsx +30 -0
  21. package/cypress/specs/UI5ElementSlots.cy.tsx +136 -0
  22. package/cypress/specs/WithComplexTemplate.cy.tsx +32 -0
  23. package/cypress/specs/i18n_texts.cy.tsx +129 -0
  24. package/cypress/specs/util/FocusableElements.cy.tsx +48 -0
  25. package/cypress/support/commands.ts +39 -0
  26. package/cypress/support/component-index.html +12 -0
  27. package/cypress/support/component.ts +17 -0
  28. package/cypress/tsconfig.json +21 -0
  29. package/cypress.config.js +3 -0
  30. package/dist/.tsbuildinfobuild +1 -0
  31. package/dist/AssetRegistry.d.ts +2 -2
  32. package/dist/AssetRegistry.js +2 -2
  33. package/dist/AssetRegistry.js.map +1 -1
  34. package/dist/Boot.d.ts +3 -2
  35. package/dist/Boot.js +11 -7
  36. package/dist/Boot.js.map +1 -1
  37. package/dist/CustomElementsRegistry.d.ts +2 -1
  38. package/dist/CustomElementsRegistry.js +5 -2
  39. package/dist/CustomElementsRegistry.js.map +1 -1
  40. package/dist/CustomElementsScope.d.ts +2 -2
  41. package/dist/CustomElementsScopeUtils.d.ts +3 -1
  42. package/dist/CustomElementsScopeUtils.js +8 -1
  43. package/dist/CustomElementsScopeUtils.js.map +1 -1
  44. package/dist/DOMObserver.js.map +1 -1
  45. package/dist/Device.d.ts +16 -2
  46. package/dist/Device.js +10 -14
  47. package/dist/Device.js.map +1 -1
  48. package/dist/EventProvider.js.map +1 -1
  49. package/dist/FontFace.js +6 -1
  50. package/dist/FontFace.js.map +1 -1
  51. package/dist/IgnoreCustomElements.d.ts +3 -5
  52. package/dist/IgnoreCustomElements.js +3 -5
  53. package/dist/IgnoreCustomElements.js.map +1 -1
  54. package/dist/InitialConfiguration.d.ts +9 -3
  55. package/dist/InitialConfiguration.js +26 -8
  56. package/dist/InitialConfiguration.js.map +1 -1
  57. package/dist/Keys.d.ts +4 -1
  58. package/dist/Keys.js +110 -106
  59. package/dist/Keys.js.map +1 -1
  60. package/dist/Location.d.ts +11 -0
  61. package/dist/Location.js +49 -0
  62. package/dist/Location.js.map +1 -0
  63. package/dist/ManagedStyles.d.ts +5 -6
  64. package/dist/ManagedStyles.js +45 -54
  65. package/dist/ManagedStyles.js.map +1 -1
  66. package/dist/MediaRange.d.ts +6 -12
  67. package/dist/MediaRange.js +21 -31
  68. package/dist/MediaRange.js.map +1 -1
  69. package/dist/PropertiesFileFormat.js.map +1 -1
  70. package/dist/Render.js.map +1 -1
  71. package/dist/RenderQueue.js.map +1 -1
  72. package/dist/Runtimes.js +11 -0
  73. package/dist/Runtimes.js.map +1 -1
  74. package/dist/SystemCSSVars.js.map +1 -1
  75. package/dist/UI5Element.d.ts +120 -76
  76. package/dist/UI5Element.js +388 -231
  77. package/dist/UI5Element.js.map +1 -1
  78. package/dist/UI5ElementMetadata.d.ts +36 -27
  79. package/dist/UI5ElementMetadata.js +27 -72
  80. package/dist/UI5ElementMetadata.js.map +1 -1
  81. package/dist/animations/AnimationQueue.js.map +1 -1
  82. package/dist/animations/animate.js.map +1 -1
  83. package/dist/animations/slideUp.js.map +1 -1
  84. package/dist/asset-registries/Icons.d.ts +1 -1
  85. package/dist/asset-registries/Icons.js +1 -1
  86. package/dist/asset-registries/Icons.js.map +1 -1
  87. package/dist/asset-registries/Illustrations.d.ts +1 -0
  88. package/dist/asset-registries/Illustrations.js +20 -28
  89. package/dist/asset-registries/Illustrations.js.map +1 -1
  90. package/dist/asset-registries/LocaleData.js +1 -1
  91. package/dist/asset-registries/LocaleData.js.map +1 -1
  92. package/dist/asset-registries/Themes.d.ts +5 -7
  93. package/dist/asset-registries/Themes.js +27 -12
  94. package/dist/asset-registries/Themes.js.map +1 -1
  95. package/dist/asset-registries/i18n.d.ts +2 -2
  96. package/dist/asset-registries/i18n.js +4 -3
  97. package/dist/asset-registries/i18n.js.map +1 -1
  98. package/dist/asset-registries/util/IconCollectionsAlias.js.map +1 -1
  99. package/dist/asset-registries/util/IconCollectionsByTheme.d.ts +1 -1
  100. package/dist/asset-registries/util/IconCollectionsByTheme.js +1 -1
  101. package/dist/asset-registries/util/IconCollectionsByTheme.js.map +1 -1
  102. package/dist/asset-registries/util/getIconCollectionByTheme.d.ts +3 -3
  103. package/dist/asset-registries/util/getIconCollectionByTheme.js +3 -3
  104. package/dist/asset-registries/util/getIconCollectionByTheme.js.map +1 -1
  105. package/dist/config/AnimationMode.js +6 -1
  106. package/dist/config/AnimationMode.js.map +1 -1
  107. package/dist/config/CalendarType.js +5 -0
  108. package/dist/config/CalendarType.js.map +1 -1
  109. package/dist/config/ConfigurationReset.d.ts +4 -0
  110. package/dist/config/ConfigurationReset.js +11 -0
  111. package/dist/config/ConfigurationReset.js.map +1 -0
  112. package/dist/config/Fonts.d.ts +16 -0
  113. package/dist/config/Fonts.js +30 -0
  114. package/dist/config/Fonts.js.map +1 -0
  115. package/dist/config/FormatSettings.js +4 -0
  116. package/dist/config/FormatSettings.js.map +1 -1
  117. package/dist/config/Icons.d.ts +8 -8
  118. package/dist/config/Icons.js +7 -7
  119. package/dist/config/Icons.js.map +1 -1
  120. package/dist/config/Language.d.ts +1 -1
  121. package/dist/config/Language.js +11 -3
  122. package/dist/config/Language.js.map +1 -1
  123. package/dist/config/NoConflict.js +4 -0
  124. package/dist/config/NoConflict.js.map +1 -1
  125. package/dist/config/Theme.d.ts +4 -3
  126. package/dist/config/Theme.js +18 -8
  127. package/dist/config/Theme.js.map +1 -1
  128. package/dist/config/ThemeRoot.d.ts +2 -4
  129. package/dist/config/ThemeRoot.js +6 -4
  130. package/dist/config/ThemeRoot.js.map +1 -1
  131. package/dist/config/Timezone.d.ts +1 -1
  132. package/dist/config/Timezone.js +5 -1
  133. package/dist/config/Timezone.js.map +1 -1
  134. package/dist/config/Tooltips.d.ts +19 -0
  135. package/dist/config/Tooltips.js +29 -0
  136. package/dist/config/Tooltips.js.map +1 -0
  137. package/dist/connectToComponent.js.map +1 -1
  138. package/dist/converters/DOMReference.d.ts +5 -0
  139. package/dist/converters/DOMReference.js +13 -0
  140. package/dist/converters/DOMReference.js.map +1 -0
  141. package/dist/css/FontFace.css +13 -1
  142. package/dist/css/SystemCSSVars.css +0 -8
  143. package/dist/decorators/bound.d.ts +1 -0
  144. package/dist/decorators/bound.js +34 -0
  145. package/dist/decorators/bound.js.map +1 -0
  146. package/dist/decorators/customElement.d.ts +43 -3
  147. package/dist/decorators/customElement.js +14 -6
  148. package/dist/decorators/customElement.js.map +1 -1
  149. package/dist/decorators/event-strict.d.ts +15 -0
  150. package/dist/decorators/event-strict.js +26 -0
  151. package/dist/decorators/event-strict.js.map +1 -0
  152. package/dist/decorators/event.d.ts +8 -2
  153. package/dist/decorators/event.js +3 -0
  154. package/dist/decorators/event.js.map +1 -1
  155. package/dist/decorators/i18n.d.ts +17 -0
  156. package/dist/decorators/i18n.js +32 -0
  157. package/dist/decorators/i18n.js.map +1 -0
  158. package/dist/decorators/property.d.ts +1 -1
  159. package/dist/decorators/property.js +1 -1
  160. package/dist/decorators/property.js.map +1 -1
  161. package/dist/decorators/query.d.ts +25 -0
  162. package/dist/decorators/query.js +32 -0
  163. package/dist/decorators/query.js.map +1 -0
  164. package/dist/decorators/queryAll.d.ts +27 -0
  165. package/dist/decorators/queryAll.js +34 -0
  166. package/dist/decorators/queryAll.js.map +1 -0
  167. package/dist/decorators/slot.d.ts +1 -1
  168. package/dist/decorators/slot.js.map +1 -1
  169. package/dist/decorators.d.ts +8 -0
  170. package/dist/decorators.js +9 -0
  171. package/dist/decorators.js.map +1 -0
  172. package/dist/delegate/ItemNavigation.d.ts +9 -8
  173. package/dist/delegate/ItemNavigation.js +11 -12
  174. package/dist/delegate/ItemNavigation.js.map +1 -1
  175. package/dist/delegate/ResizeHandler.d.ts +4 -6
  176. package/dist/delegate/ResizeHandler.js +4 -6
  177. package/dist/delegate/ResizeHandler.js.map +1 -1
  178. package/dist/delegate/ScrollEnablement.js +2 -2
  179. package/dist/delegate/ScrollEnablement.js.map +1 -1
  180. package/dist/features/F6Navigation.d.ts +4 -3
  181. package/dist/features/F6Navigation.js +41 -9
  182. package/dist/features/F6Navigation.js.map +1 -1
  183. package/dist/features/InputElementsFormSupport.d.ts +15 -0
  184. package/dist/features/InputElementsFormSupport.js +39 -0
  185. package/dist/features/InputElementsFormSupport.js.map +1 -0
  186. package/dist/features/LegacyDateFormats.js.map +1 -1
  187. package/dist/features/OpenUI5Enablement.d.ts +3 -3
  188. package/dist/features/OpenUI5Enablement.js.map +1 -1
  189. package/dist/features/OpenUI5Support.d.ts +1 -3
  190. package/dist/features/OpenUI5Support.js +11 -22
  191. package/dist/features/OpenUI5Support.js.map +1 -1
  192. package/dist/features/patchPatcher.d.ts +11 -0
  193. package/dist/features/patchPatcher.js +11 -0
  194. package/dist/features/patchPatcher.js.map +1 -0
  195. package/dist/features/patchPopup.d.ts +15 -0
  196. package/dist/features/patchPopup.js +70 -0
  197. package/dist/features/patchPopup.js.map +1 -0
  198. package/dist/generated/AssetParameters.d.ts +6 -0
  199. package/dist/generated/AssetParameters.js +3 -10
  200. package/dist/generated/AssetParameters.js.map +1 -0
  201. package/dist/generated/VersionInfo.d.ts +10 -0
  202. package/dist/generated/VersionInfo.js +9 -8
  203. package/dist/generated/VersionInfo.js.map +1 -0
  204. package/dist/generated/css/BusyIndicator.css.d.ts +2 -3
  205. package/dist/generated/css/BusyIndicator.css.js +1 -6
  206. package/dist/generated/css/BusyIndicator.css.js.map +1 -1
  207. package/dist/generated/css/FontFace.css.d.ts +2 -3
  208. package/dist/generated/css/FontFace.css.js +1 -6
  209. package/dist/generated/css/FontFace.css.js.map +1 -1
  210. package/dist/generated/css/OverrideFontFace.css.d.ts +2 -3
  211. package/dist/generated/css/OverrideFontFace.css.js +1 -6
  212. package/dist/generated/css/OverrideFontFace.css.js.map +1 -1
  213. package/dist/generated/css/SystemCSSVars.css.d.ts +2 -3
  214. package/dist/generated/css/SystemCSSVars.css.js +1 -6
  215. package/dist/generated/css/SystemCSSVars.css.js.map +1 -1
  216. package/dist/getSharedResource.js.map +1 -1
  217. package/dist/i18nBundle.d.ts +1 -3
  218. package/dist/i18nBundle.js +1 -4
  219. package/dist/i18nBundle.js.map +1 -1
  220. package/dist/index.d.ts +48 -0
  221. package/dist/index.js +88 -0
  222. package/dist/index.js.map +1 -0
  223. package/dist/jsx-dev-runtime.d.ts +4 -0
  224. package/dist/jsx-dev-runtime.js +43 -0
  225. package/dist/jsx-dev-runtime.js.map +1 -0
  226. package/dist/jsx-runtime.d.ts +50 -0
  227. package/dist/jsx-runtime.js +27 -0
  228. package/dist/jsx-runtime.js.map +1 -0
  229. package/dist/jsx-utils.d.ts +3 -0
  230. package/dist/jsx-utils.js +48 -0
  231. package/dist/jsx-utils.js.map +1 -0
  232. package/dist/locale/Locale.js.map +1 -1
  233. package/dist/locale/applyDirection.d.ts +3 -2
  234. package/dist/locale/applyDirection.js +3 -2
  235. package/dist/locale/applyDirection.js.map +1 -1
  236. package/dist/locale/getEffectiveDir.d.ts +1 -1
  237. package/dist/locale/getEffectiveDir.js +3 -19
  238. package/dist/locale/getEffectiveDir.js.map +1 -1
  239. package/dist/locale/getLocale.js.map +1 -1
  240. package/dist/locale/nextFallbackLocale.js +6 -2
  241. package/dist/locale/nextFallbackLocale.js.map +1 -1
  242. package/dist/locale/normalizeLocale.js.map +1 -1
  243. package/dist/renderer/JsxRenderer.d.ts +3 -0
  244. package/dist/renderer/JsxRenderer.js +16 -0
  245. package/dist/renderer/JsxRenderer.js.map +1 -0
  246. package/dist/renderer/LitRenderer.d.ts +3 -3
  247. package/dist/renderer/LitRenderer.js +5 -10
  248. package/dist/renderer/LitRenderer.js.map +1 -1
  249. package/dist/renderer/directives/style-map.d.ts +13 -0
  250. package/dist/renderer/directives/style-map.js +59 -59
  251. package/dist/renderer/directives/style-map.js.map +1 -0
  252. package/dist/renderer/executeTemplate.d.ts +3 -4
  253. package/dist/renderer/executeTemplate.js +1 -19
  254. package/dist/renderer/executeTemplate.js.map +1 -1
  255. package/dist/sap/base/Log.js +698 -188
  256. package/dist/sap/base/assert.js +28 -1
  257. package/dist/sap/base/config/MemoryConfigurationProvider.js +20 -0
  258. package/dist/sap/base/security/URLListValidator.js +253 -6
  259. package/dist/sap/base/security/encodeCSS.js +34 -8
  260. package/dist/sap/base/security/encodeXML.js +47 -17
  261. package/dist/sap/base/security/sanitizeHTML.js +35 -13
  262. package/dist/sap/base/strings/toHex.js +27 -2
  263. package/dist/sap/base/util/now.js +24 -3
  264. package/dist/sap/base/util/uid.js +27 -0
  265. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +2 -2
  266. package/dist/ssr-dom-shim.d.ts +1 -0
  267. package/dist/ssr-dom-shim.js +62 -0
  268. package/dist/ssr-dom-shim.js.map +1 -0
  269. package/dist/ssr-dom.d.ts +1 -0
  270. package/dist/ssr-dom.js +3 -0
  271. package/dist/ssr-dom.js.map +1 -0
  272. package/dist/theming/CustomStyle.js.map +1 -1
  273. package/dist/theming/applyTheme.js +5 -5
  274. package/dist/theming/applyTheme.js.map +1 -1
  275. package/dist/theming/getConstructableStyle.d.ts +2 -2
  276. package/dist/theming/getConstructableStyle.js +3 -3
  277. package/dist/theming/getConstructableStyle.js.map +1 -1
  278. package/dist/theming/getEffectiveStyle.d.ts +1 -1
  279. package/dist/theming/getEffectiveStyle.js +5 -12
  280. package/dist/theming/getEffectiveStyle.js.map +1 -1
  281. package/dist/theming/getStylesString.js +2 -4
  282. package/dist/theming/getStylesString.js.map +1 -1
  283. package/dist/theming/getThemeDesignerTheme.js +2 -1
  284. package/dist/theming/getThemeDesignerTheme.js.map +1 -1
  285. package/dist/thirdparty/_merge.js.map +1 -1
  286. package/dist/thirdparty/isPlainObject.js.map +1 -1
  287. package/dist/thirdparty/preact/jsx.d.ts +2616 -0
  288. package/dist/thirdparty/preact/jsxRuntime.module.d.ts +62 -0
  289. package/dist/thirdparty/preact/jsxRuntime.module.js +1 -0
  290. package/dist/thirdparty/preact/preact.module.d.ts +398 -0
  291. package/dist/thirdparty/preact/preact.module.js +1 -0
  292. package/dist/types/AnimationMode.d.ts +0 -8
  293. package/dist/types/AnimationMode.js +0 -8
  294. package/dist/types/AnimationMode.js.map +1 -1
  295. package/dist/types/CalendarType.d.ts +0 -9
  296. package/dist/types/CalendarType.js +0 -9
  297. package/dist/types/CalendarType.js.map +1 -1
  298. package/dist/types/InvisibleMessageMode.d.ts +5 -10
  299. package/dist/types/InvisibleMessageMode.js +4 -11
  300. package/dist/types/InvisibleMessageMode.js.map +1 -1
  301. package/dist/types/ItemNavigationBehavior.d.ts +0 -6
  302. package/dist/types/ItemNavigationBehavior.js +0 -6
  303. package/dist/types/ItemNavigationBehavior.js.map +1 -1
  304. package/dist/types/MovePlacement.d.ts +20 -0
  305. package/dist/types/MovePlacement.js +22 -0
  306. package/dist/types/MovePlacement.js.map +1 -0
  307. package/dist/types/NavigationMode.d.ts +0 -8
  308. package/dist/types/NavigationMode.js +0 -8
  309. package/dist/types/NavigationMode.js.map +1 -1
  310. package/dist/types/Orientation.d.ts +16 -0
  311. package/dist/types/Orientation.js +18 -0
  312. package/dist/types/Orientation.js.map +1 -0
  313. package/dist/types/SortOrder.d.ts +24 -0
  314. package/dist/types/SortOrder.js +26 -0
  315. package/dist/types/SortOrder.js.map +1 -0
  316. package/dist/types/ValueState.d.ts +3 -17
  317. package/dist/types/ValueState.js +3 -17
  318. package/dist/types/ValueState.js.map +1 -1
  319. package/dist/types.d.ts +37 -14
  320. package/dist/types.js.map +1 -1
  321. package/dist/updateShadowRoot.d.ts +1 -2
  322. package/dist/updateShadowRoot.js +4 -29
  323. package/dist/updateShadowRoot.js.map +1 -1
  324. package/dist/util/{AriaLabelHelper.d.ts → AccessibilityTextsHelper.d.ts} +4 -2
  325. package/dist/util/{AriaLabelHelper.js → AccessibilityTextsHelper.js} +36 -8
  326. package/dist/util/AccessibilityTextsHelper.js.map +1 -0
  327. package/dist/util/Caret.js.map +1 -1
  328. package/dist/util/ColorConversion.d.ts +2 -1
  329. package/dist/util/ColorConversion.js +233 -216
  330. package/dist/util/ColorConversion.js.map +1 -1
  331. package/dist/util/FetchHelper.js.map +1 -1
  332. package/dist/util/FocusableElements.js +40 -12
  333. package/dist/util/FocusableElements.js.map +1 -1
  334. package/dist/util/HTMLSanitizer.d.ts +2 -0
  335. package/dist/util/HTMLSanitizer.js +2 -2
  336. package/dist/util/HTMLSanitizer.js.map +1 -1
  337. package/dist/util/InvisibleMessage.d.ts +1 -1
  338. package/dist/util/InvisibleMessage.js +2 -2
  339. package/dist/util/InvisibleMessage.js.map +1 -1
  340. package/dist/util/PopupUtils.d.ts +1 -3
  341. package/dist/util/PopupUtils.js +1 -15
  342. package/dist/util/PopupUtils.js.map +1 -1
  343. package/dist/util/SelectionAssistant.d.ts +12 -0
  344. package/dist/util/SelectionAssistant.js +79 -0
  345. package/dist/util/SelectionAssistant.js.map +1 -0
  346. package/dist/util/SlotsHelper.js.map +1 -1
  347. package/dist/util/StringHelper.d.ts +3 -1
  348. package/dist/util/StringHelper.js +15 -1
  349. package/dist/util/StringHelper.js.map +1 -1
  350. package/dist/util/TabbableElements.js +3 -10
  351. package/dist/util/TabbableElements.js.map +1 -1
  352. package/dist/util/arraysAreEqual.js.map +1 -1
  353. package/dist/util/clamp.js +2 -1
  354. package/dist/util/clamp.js.map +1 -1
  355. package/dist/util/createLinkInHead.d.ts +1 -1
  356. package/dist/util/createLinkInHead.js +1 -1
  357. package/dist/util/createLinkInHead.js.map +1 -1
  358. package/dist/util/debounce.js.map +1 -1
  359. package/dist/util/detectNavigatorLanguage.d.ts +2 -2
  360. package/dist/util/detectNavigatorLanguage.js +6 -1
  361. package/dist/util/detectNavigatorLanguage.js.map +1 -1
  362. package/dist/util/dragAndDrop/DragRegistry.d.ts +33 -0
  363. package/dist/util/dragAndDrop/DragRegistry.js +66 -0
  364. package/dist/util/dragAndDrop/DragRegistry.js.map +1 -0
  365. package/dist/util/dragAndDrop/findClosestPosition.d.ts +12 -0
  366. package/dist/util/dragAndDrop/findClosestPosition.js +106 -0
  367. package/dist/util/dragAndDrop/findClosestPosition.js.map +1 -0
  368. package/dist/util/dragAndDrop/handleDragOver.d.ts +16 -0
  369. package/dist/util/dragAndDrop/handleDragOver.js +42 -0
  370. package/dist/util/dragAndDrop/handleDragOver.js.map +1 -0
  371. package/dist/util/dragAndDrop/handleDrop.d.ts +5 -0
  372. package/dist/util/dragAndDrop/handleDrop.js +22 -0
  373. package/dist/util/dragAndDrop/handleDrop.js.map +1 -0
  374. package/dist/util/dragAndDrop/longDragOverHandler.d.ts +2 -0
  375. package/dist/util/dragAndDrop/longDragOverHandler.js +25 -0
  376. package/dist/util/dragAndDrop/longDragOverHandler.js.map +1 -0
  377. package/dist/util/fixSafariActiveState.d.ts +2 -0
  378. package/dist/util/fixSafariActiveState.js +11 -0
  379. package/dist/util/fixSafariActiveState.js.map +1 -0
  380. package/dist/util/formatMessage.js.map +1 -1
  381. package/dist/util/generateHighlightedMarkup.js.map +1 -1
  382. package/dist/util/getActiveElement.js.map +1 -1
  383. package/dist/util/getClassCopy.d.ts +144 -103
  384. package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -2
  385. package/dist/util/getDesigntimePropertyAsArray.js +2 -1
  386. package/dist/util/getDesigntimePropertyAsArray.js.map +1 -1
  387. package/dist/util/getEffectiveScrollbarStyle.d.ts +1 -1
  388. package/dist/util/getEffectiveScrollbarStyle.js +31 -1
  389. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -1
  390. package/dist/util/getFastNavigationGroups.js +6 -1
  391. package/dist/util/getFastNavigationGroups.js.map +1 -1
  392. package/dist/util/getFileExtension.js.map +1 -1
  393. package/dist/util/getNormalizedTarget.js.map +1 -1
  394. package/dist/util/getSingletonElementInstance.js.map +1 -1
  395. package/dist/util/hash2str.d.ts +1 -0
  396. package/dist/util/hash2str.js +14 -0
  397. package/dist/util/hash2str.js.map +1 -0
  398. package/dist/util/isElementClickable.js.map +1 -1
  399. package/dist/util/isElementHidden.js.map +1 -1
  400. package/dist/util/isElementTabbable.js +2 -2
  401. package/dist/util/isElementTabbable.js.map +1 -1
  402. package/dist/util/isValidPropertyName.js.map +1 -1
  403. package/dist/util/throttle.d.ts +2 -0
  404. package/dist/util/throttle.js +20 -0
  405. package/dist/util/throttle.js.map +1 -0
  406. package/dist/util/toLowercaseEnumValue.d.ts +3 -0
  407. package/dist/util/toLowercaseEnumValue.js +4 -0
  408. package/dist/util/toLowercaseEnumValue.js.map +1 -0
  409. package/dist/util/whenDOMReady.js.map +1 -1
  410. package/dist/validateThemeRoot.js +3 -2
  411. package/dist/validateThemeRoot.js.map +1 -1
  412. package/package-scripts.cjs +26 -23
  413. package/package.json +37 -11
  414. package/src/css/FontFace.css +13 -1
  415. package/src/css/SystemCSSVars.css +0 -8
  416. package/src/thirdparty/preact/jsxRuntime.module.js +1 -0
  417. package/src/thirdparty/preact/preact.module.js +1 -0
  418. package/src/thirdparty/preact/version.txt +1 -0
  419. package/tsconfig.json +18 -13
  420. package/.eslintignore +0 -16
  421. package/.eslintrc.cjs +0 -3
  422. package/bundle.esm.js +0 -67
  423. package/config/wdio.conf.cjs +0 -400
  424. package/dist/CSP.d.ts +0 -30
  425. package/dist/CSP.js +0 -51
  426. package/dist/CSP.js.map +0 -1
  427. package/dist/MarkedEvents.d.ts +0 -9
  428. package/dist/MarkedEvents.js +0 -15
  429. package/dist/MarkedEvents.js.map +0 -1
  430. package/dist/StaticArea.d.ts +0 -3
  431. package/dist/StaticArea.js +0 -7
  432. package/dist/StaticArea.js.map +0 -1
  433. package/dist/StaticAreaItem.d.ts +0 -37
  434. package/dist/StaticAreaItem.js +0 -102
  435. package/dist/StaticAreaItem.js.map +0 -1
  436. package/dist/api.json +0 -1
  437. package/dist/assets/Boot-34b7cea0.css +0 -1
  438. package/dist/assets/Boot-c953ce57.js +0 -9
  439. package/dist/assets/bundle.esm-a0b43d30.js +0 -50
  440. package/dist/config/RTL.d.ts +0 -7
  441. package/dist/config/RTL.js +0 -37
  442. package/dist/config/RTL.js.map +0 -1
  443. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.d.ts +0 -4
  444. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +0 -9
  445. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js.map +0 -1
  446. package/dist/theming/getEffectiveLinksHrefs.d.ts +0 -3
  447. package/dist/theming/getEffectiveLinksHrefs.js +0 -17
  448. package/dist/theming/getEffectiveLinksHrefs.js.map +0 -1
  449. package/dist/theming/preloadLinks.d.ts +0 -3
  450. package/dist/theming/preloadLinks.js +0 -19
  451. package/dist/theming/preloadLinks.js.map +0 -1
  452. package/dist/types/CSSColor.d.ts +0 -15
  453. package/dist/types/CSSColor.js +0 -18
  454. package/dist/types/CSSColor.js.map +0 -1
  455. package/dist/types/CSSSize.d.ts +0 -15
  456. package/dist/types/CSSSize.js +0 -18
  457. package/dist/types/CSSSize.js.map +0 -1
  458. package/dist/types/DOMReference.d.ts +0 -17
  459. package/dist/types/DOMReference.js +0 -25
  460. package/dist/types/DOMReference.js.map +0 -1
  461. package/dist/types/DataType.d.ts +0 -25
  462. package/dist/types/DataType.js +0 -44
  463. package/dist/types/DataType.js.map +0 -1
  464. package/dist/types/Float.d.ts +0 -17
  465. package/dist/types/Float.js +0 -21
  466. package/dist/types/Float.js.map +0 -1
  467. package/dist/types/Integer.d.ts +0 -17
  468. package/dist/types/Integer.js +0 -21
  469. package/dist/types/Integer.js.map +0 -1
  470. package/dist/util/AriaLabelHelper.js.map +0 -1
  471. package/dist/util/createStyleInHead.d.ts +0 -8
  472. package/dist/util/createStyleInHead.js +0 -18
  473. package/dist/util/createStyleInHead.js.map +0 -1
  474. package/index.js +0 -230
  475. package/lib/generate-asset-parameters/index.js +0 -27
  476. package/lib/generate-styles/index.js +0 -31
  477. package/lib/generate-version-info/index.js +0 -32
  478. package/src/renderer/directives/style-map.js +0 -72
  479. package/used-modules.txt +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"ColorConversion.js","sourceRoot":"","sources":["../../src/util/ColorConversion.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * @param {String} color Color in one of the following formats: RGBA or HEX\n */\n\ntype ColorHSL = {\n\th: number,\n\ts: number,\n\tl: number,\n};\n\ntype ColorRGB = {\n\tr: number,\n\tb: number,\n\tg: number,\n};\n\n/**\n * Map of CSS colors to hex representation\n */\nenum CSSColors {\n\taliceblue = \"f0f8ff\",\n\tantiquewhite = \"faebd7\",\n\taqua = \"00ffff\",\n\taquamarine = \"7fffd4\",\n\tazure = \"f0ffff\",\n\tbeige = \"f5f5dc\",\n\tbisque = \"ffe4c4\",\n\tblack = \"000000\",\n\tblanchedalmond = \"ffebcd\",\n\tblue = \"0000ff\",\n\tblueviolet = \"8a2be2\",\n\tbrown = \"a52a2a\",\n\tburlywood = \"deb887\",\n\tcadetblue = \"5f9ea0\",\n\tchartreuse = \"7fff00\",\n\tchocolate = \"d2691e\",\n\tcoral = \"ff7f50\",\n\tcornflowerblue = \"6495ed\",\n\tcornsilk = \"fff8dc\",\n\tcrimson = \"dc143c\",\n\tcyan = \"00ffff\",\n\tdarkblue = \"00008b\",\n\tdarkcyan = \"008b8b\",\n\tdarkgoldenrod = \"b8860b\",\n\tdarkgray = \"a9a9a9\",\n\tdarkgrey = \"a9a9a9\",\n\tdarkgreen = \"006400\",\n\tdarkkhaki = \"bdb76b\",\n\tdarkmagenta = \"8b008b\",\n\tdarkolivegreen = \"556b2f\",\n\tdarkorange = \"ff8c00\",\n\tdarkorchid = \"9932cc\",\n\tdarkred = \"8b0000\",\n\tdarksalmon = \"e9967a\",\n\tdarkseagreen = \"8fbc8f\",\n\tdarkslateblue = \"483d8b\",\n\tdarkslategray = \"2f4f4f\",\n\tdarkslategrey = \"2f4f4f\",\n\tdarkturquoise = \"00ced1\",\n\tdarkviolet = \"9400d3\",\n\tdeeppink = \"ff1493\",\n\tdeepskyblue = \"00bfff\",\n\tdimgray = \"696969\",\n\tdimgrey = \"696969\",\n\tdodgerblue = \"1e90ff\",\n\tfirebrick = \"b22222\",\n\tfloralwhite = \"fffaf0\",\n\tforestgreen = \"228b22\",\n\tfuchsia = \"ff00ff\",\n\tgainsboro = \"dcdcdc\",\n\tghostwhite = \"f8f8ff\",\n\tgold = \"ffd700\",\n\tgoldenrod = \"daa520\",\n\tgray = \"808080\",\n\tgrey = \"808080\",\n\tgreen = \"008000\",\n\tgreenyellow = \"adff2f\",\n\thoneydew = \"f0fff0\",\n\thotpink = \"ff69b4\",\n\tindianred = \"cd5c5c\",\n\tindigo = \"4b0082\",\n\tivory = \"fffff0\",\n\tkhaki = \"f0e68c\",\n\tlavender = \"e6e6fa\",\n\tlavenderblush = \"fff0f5\",\n\tlawngreen = \"7cfc00\",\n\tlemonchiffon = \"fffacd\",\n\tlightblue = \"add8e6\",\n\tlightcoral = \"f08080\",\n\tlightcyan = \"e0ffff\",\n\tlightgoldenrodyellow = \"fafad2\",\n\tlightgray = \"d3d3d3\",\n\tlightgrey = \"d3d3d3\",\n\tlightgreen = \"90ee90\",\n\tlightpink = \"ffb6c1\",\n\tlightsalmon = \"ffa07a\",\n\tlightseagreen = \"20b2aa\",\n\tlightskyblue = \"87cefa\",\n\tlightslategray = \"778899\",\n\tlightslategrey = \"778899\",\n\tlightsteelblue = \"b0c4de\",\n\tlightyellow = \"ffffe0\",\n\tlime = \"00ff00\",\n\tlimegreen = \"32cd32\",\n\tlinen = \"faf0e6\",\n\tmagenta = \"ff00ff\",\n\tmaroon = \"800000\",\n\tmediumaquamarine = \"66cdaa\",\n\tmediumblue = \"0000cd\",\n\tmediumorchid = \"ba55d3\",\n\tmediumpurple = \"9370db\",\n\tmediumseagreen = \"3cb371\",\n\tmediumslateblue = \"7b68ee\",\n\tmediumspringgreen = \"00fa9a\",\n\tmediumturquoise = \"48d1cc\",\n\tmediumvioletred = \"c71585\",\n\tmidnightblue = \"191970\",\n\tmintcream = \"f5fffa\",\n\tmistyrose = \"ffe4e1\",\n\tmoccasin = \"ffe4b5\",\n\tnavajowhite = \"ffdead\",\n\tnavy = \"000080\",\n\toldlace = \"fdf5e6\",\n\tolive = \"808000\",\n\tolivedrab = \"6b8e23\",\n\torange = \"ffa500\",\n\torangered = \"ff4500\",\n\torchid = \"da70d6\",\n\tpalegoldenrod = \"eee8aa\",\n\tpalegreen = \"98fb98\",\n\tpaleturquoise = \"afeeee\",\n\tpalevioletred = \"db7093\",\n\tpapayawhip = \"ffefd5\",\n\tpeachpuff = \"ffdab9\",\n\tperu = \"cd853f\",\n\tpink = \"ffc0cb\",\n\tplum = \"dda0dd\",\n\tpowderblue = \"b0e0e6\",\n\tpurple = \"800080\",\n\tred = \"ff0000\",\n\trosybrown = \"bc8f8f\",\n\troyalblue = \"4169e1\",\n\tsaddlebrown = \"8b4513\",\n\tsalmon = \"fa8072\",\n\tsandybrown = \"f4a460\",\n\tseagreen = \"2e8b57\",\n\tseashell = \"fff5ee\",\n\tsienna = \"a0522d\",\n\tsilver = \"c0c0c0\",\n\tskyblue = \"87ceeb\",\n\tslateblue = \"6a5acd\",\n\tslategray = \"708090\",\n\tslategrey = \"708090\",\n\tsnow = \"fffafa\",\n\tspringgreen = \"00ff7f\",\n\tsteelblue = \"4682b4\",\n\ttan = \"d2b48c\",\n\tteal = \"008080\",\n\tthistle = \"d8bfd8\",\n\ttomato = \"ff6347\",\n\tturquoise = \"40e0d0\",\n\tviolet = \"ee82ee\",\n\twheat = \"f5deb3\",\n\twhite = \"ffffff\",\n\twhitesmoke = \"f5f5f5\",\n\tyellow = \"ffff00\",\n\tyellowgreen = \"9acd32\",\n\ttransparent = \"00000000\",\n}\n\nconst getRGBColor = (color: string): ColorRGB => {\n\tif (color.startsWith(\"rgba\")) {\n\t\treturn RGBAToRGB(color);\n\t}\n\n\tif (color.startsWith(\"rgb\")) {\n\t\treturn RGBStringToRGBObject(color);\n\t}\n\n\t// HEX\n\tif (color.indexOf(\"#\") === 0) {\n\t\t// Shorthand Syntax\n\t\tif (color.length === 4) {\n\t\t\tcolor = `${color[1]}${color[1]}${color[2]}${color[2]}${color[3]}${color[3]}`;\n\t\t} else {\n\t\t\tcolor = color.slice(1, color.length);\n\t\t}\n\t}\n\n\t// Css Color\n\tif (color in CSSColors) {\n\t\tcolor = CSSColors[color as keyof typeof CSSColors];\n\t}\n\n\treturn HEXToRGB(color);\n};\n\n/**\n * Return an object with the properties for each of the main colors(red, green, blue)\n * @param {String} color Receives a color in the following format: \"rgba(0, 0, 0, 1)\n */\nconst RGBAToRGB = (color: string): ColorRGB => {\n\tconst openingBracketIndex = color.indexOf(\"(\"),\n\t\tcommasIndexes = [];\n\n\tfor (let i = 0; i < color.length; i++) {\n\t\tif (color[i] === \",\") {\n\t\t\tcommasIndexes.push(i);\n\t\t}\n\t}\n\n\treturn {\n\t\tr: parseInt(color.slice(openingBracketIndex + 1, commasIndexes[0]).trim()),\n\t\tg: parseInt(color.slice(commasIndexes[0] + 1, commasIndexes[1]).trim()),\n\t\tb: parseInt(color.slice(commasIndexes[1] + 1, commasIndexes[2]).trim()),\n\t};\n};\n\n/**\n * Return an object with the properties for each of the main colors(red, green, blue)\n * @param {String} color Receives a color in the following format: \"rgb(0, 0, 0)\n */\nconst RGBStringToRGBObject = (color: string): ColorRGB => {\n\tconst openingBracketIndex = color.indexOf(\"(\"),\n\t\tclosingBraketIndex = color.indexOf(\")\"),\n\t\tcommasIndexes = [];\n\n\tfor (let i = 0; i < color.length; i++) {\n\t\tif (color[i] === \",\") {\n\t\t\tcommasIndexes.push(i);\n\t\t}\n\t}\n\n\treturn {\n\t\tr: parseInt(color.slice(openingBracketIndex + 1, commasIndexes[0]).trim()),\n\t\tg: parseInt(color.slice(commasIndexes[0] + 1, commasIndexes[1]).trim()),\n\t\tb: parseInt(color.slice(commasIndexes[1] + 1, closingBraketIndex).trim()),\n\t};\n};\n\nconst HSLToRGB = (color: ColorHSL): ColorRGB => {\n\t// Formula taken from https://www.rapidtables.com/convert/color/hsl-to-rgb.html\n\tconst C = (1 - Math.abs((2 * color.l) - 1)) * color.s,\n\t\tX = C * (1 - Math.abs(((color.h / 60) % 2) - 1)),\n\t\tm = color.l - C / 2;\n\n\tlet tempColor: ColorRGB;\n\tswitch (Math.round(color.h / 60)) {\n\t// 0 ≤ H < 60\n\tcase 0:\n\t\ttempColor = {\n\t\t\tr: C,\n\t\t\tg: X,\n\t\t\tb: 0,\n\t\t};\n\t\tbreak;\n\n\t// 60 ≤ H < 120\n\tcase 1:\n\t\ttempColor = {\n\t\t\tr: X,\n\t\t\tg: C,\n\t\t\tb: 0,\n\t\t};\n\t\tbreak;\n\n\t// 120 ≤ H < 180\n\tcase 2:\n\t\ttempColor = {\n\t\t\tr: 0,\n\t\t\tg: C,\n\t\t\tb: X,\n\t\t};\n\t\tbreak;\n\n\t// 180 ≤ H < 240\n\tcase 3:\n\t\ttempColor = {\n\t\t\tr: 0,\n\t\t\tg: X,\n\t\t\tb: C,\n\t\t};\n\t\tbreak;\n\n\t// 240 ≤ H < 300\n\tcase 4:\n\t\ttempColor = {\n\t\t\tr: X,\n\t\t\tg: 0,\n\t\t\tb: C,\n\t\t};\n\t\tbreak;\n\n\t// 300 ≤ H < 360\n\tdefault:\n\t\ttempColor = {\n\t\t\tr: C,\n\t\t\tg: 0,\n\t\t\tb: X,\n\t\t};\n\t}\n\n\treturn {\n\t\tr: Math.floor((tempColor.r + m) * 255),\n\t\tg: Math.floor((tempColor.g + m) * 255),\n\t\tb: Math.floor((tempColor.b + m) * 255),\n\t};\n};\n\nconst HEXToRGB = (hex: string): ColorRGB => {\n\t// Please make sure you pass a valid 6 digit hex color\n\t// In the implementation of this method we assume that the hex argument is a 6 digit valid hex color\n\n\treturn {\n\t\tr: parseInt(hex.substr(0, 2), 16),\n\t\tg: parseInt(hex.substr(2, 2), 16),\n\t\tb: parseInt(hex.substr(4, 2), 16),\n\t};\n};\n\n/**\n * Returns the hex value of the color as string\n * @param {Object} color Receives an object with the properties for each of the main colors(r, g, b)\n */\nconst RGBtoHEX = (color: ColorRGB): string => {\n\tconst hexMap = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"A\", \"B\", \"C\", \"D\", \"E\"];\n\tlet hexValue = \"#\";\n\n\tlet divisionNumber = color.r / 16;\n\tlet remainder = color.r % 16;\n\thexValue += String(hexMap[Math.floor(divisionNumber)]);\n\thexValue += String(hexMap[remainder]);\n\n\tdivisionNumber = color.g / 16;\n\tremainder = color.g % 16;\n\thexValue += String(hexMap[Math.floor(divisionNumber)]);\n\thexValue += String(hexMap[remainder]);\n\n\tdivisionNumber = color.b / 16;\n\tremainder = color.b % 16;\n\thexValue += String(hexMap[Math.floor(divisionNumber)]);\n\thexValue += String(hexMap[remainder]);\n\n\treturn hexValue;\n};\n\nconst RGBToHSL = (color: ColorRGB): ColorHSL => {\n\tconst R = color.r / 255,\n\t\tG = color.g / 255,\n\t\tB = color.b / 255,\n\t\tmax = Math.max(R, G, B),\n\t\tmin = Math.min(R, G, B),\n\t\tdelta = max - min;\n\n\tlet h = 0,\n\t\ts;\n\n\t// Hue calculation\n\tif (delta === 0) {\n\t\th = 0;\n\t} else if (max === R) {\n\t\th = 60 * (((G - B) / delta) % 6);\n\t} else if (max === G) {\n\t\th = 60 * (((B - R) / delta) + 2);\n\t} else if (max === B) {\n\t\th = 60 * (((R - G) / delta) + 4);\n\t}\n\n\t// Lightness calculation\n\tconst l = (max + min) / 2;\n\n\t// Saturation calculation\n\tif (delta === 0) {\n\t\ts = 0;\n\t} else {\n\t\ts = delta / (1 - Math.abs(2 * l - 1));\n\t}\n\n\treturn {\n\t\th,\n\t\ts,\n\t\tl,\n\t};\n};\n\nexport {\n\tgetRGBColor,\n\tHSLToRGB,\n\tHEXToRGB,\n\tRGBToHSL,\n\tRGBStringToRGBObject,\n\tRGBtoHEX,\n};\n\nexport type {\n\tColorHSL,\n\tColorRGB,\n};\n"]}
1
+ {"version":3,"file":"ColorConversion.js","sourceRoot":"","sources":["../../src/util/ColorConversion.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * @param {String} color Color in one of the following formats: RGBA or HEX\n */\n\ntype ColorHSL = {\n\th: number,\n\ts: number,\n\tl: number,\n};\n\ntype ColorRGB = {\n\tr: number,\n\tb: number,\n\tg: number,\n};\n\n/**\n * Map of CSS colors to hex representation\n */\nconst CSSColors = new Map([\n\t[\"aliceblue\", \"f0f8ff\"],\n\t[\"antiquewhite\", \"faebd7\"],\n\t[\"aqua\", \"00ffff\"],\n\t[\"aquamarine\", \"7fffd4\"],\n\t[\"azure\", \"f0ffff\"],\n\t[\"beige\", \"f5f5dc\"],\n\t[\"bisque\", \"ffe4c4\"],\n\t[\"black\", \"000000\"],\n\t[\"blanchedalmond\", \"ffebcd\"],\n\t[\"blue\", \"0000ff\"],\n\t[\"blueviolet\", \"8a2be2\"],\n\t[\"brown\", \"a52a2a\"],\n\t[\"burlywood\", \"deb887\"],\n\t[\"cadetblue\", \"5f9ea0\"],\n\t[\"chartreuse\", \"7fff00\"],\n\t[\"chocolate\", \"d2691e\"],\n\t[\"coral\", \"ff7f50\"],\n\t[\"cornflowerblue\", \"6495ed\"],\n\t[\"cornsilk\", \"fff8dc\"],\n\t[\"crimson\", \"dc143c\"],\n\t[\"cyan\", \"00ffff\"],\n\t[\"darkblue\", \"00008b\"],\n\t[\"darkcyan\", \"008b8b\"],\n\t[\"darkgoldenrod\", \"b8860b\"],\n\t[\"darkgray\", \"a9a9a9\"],\n\t[\"darkgrey\", \"a9a9a9\"],\n\t[\"darkgreen\", \"006400\"],\n\t[\"darkkhaki\", \"bdb76b\"],\n\t[\"darkmagenta\", \"8b008b\"],\n\t[\"darkolivegreen\", \"556b2f\"],\n\t[\"darkorange\", \"ff8c00\"],\n\t[\"darkorchid\", \"9932cc\"],\n\t[\"darkred\", \"8b0000\"],\n\t[\"darksalmon\", \"e9967a\"],\n\t[\"darkseagreen\", \"8fbc8f\"],\n\t[\"darkslateblue\", \"483d8b\"],\n\t[\"darkslategray\", \"2f4f4f\"],\n\t[\"darkslategrey\", \"2f4f4f\"],\n\t[\"darkturquoise\", \"00ced1\"],\n\t[\"darkviolet\", \"9400d3\"],\n\t[\"deeppink\", \"ff1493\"],\n\t[\"deepskyblue\", \"00bfff\"],\n\t[\"dimgray\", \"696969\"],\n\t[\"dimgrey\", \"696969\"],\n\t[\"dodgerblue\", \"1e90ff\"],\n\t[\"firebrick\", \"b22222\"],\n\t[\"floralwhite\", \"fffaf0\"],\n\t[\"forestgreen\", \"228b22\"],\n\t[\"fuchsia\", \"ff00ff\"],\n\t[\"gainsboro\", \"dcdcdc\"],\n\t[\"ghostwhite\", \"f8f8ff\"],\n\t[\"gold\", \"ffd700\"],\n\t[\"goldenrod\", \"daa520\"],\n\t[\"gray\", \"808080\"],\n\t[\"grey\", \"808080\"],\n\t[\"green\", \"008000\"],\n\t[\"greenyellow\", \"adff2f\"],\n\t[\"honeydew\", \"f0fff0\"],\n\t[\"hotpink\", \"ff69b4\"],\n\t[\"indianred\", \"cd5c5c\"],\n\t[\"indigo\", \"4b0082\"],\n\t[\"ivory\", \"fffff0\"],\n\t[\"khaki\", \"f0e68c\"],\n\t[\"lavender\", \"e6e6fa\"],\n\t[\"lavenderblush\", \"fff0f5\"],\n\t[\"lawngreen\", \"7cfc00\"],\n\t[\"lemonchiffon\", \"fffacd\"],\n\t[\"lightblue\", \"add8e6\"],\n\t[\"lightcoral\", \"f08080\"],\n\t[\"lightcyan\", \"e0ffff\"],\n\t[\"lightgoldenrodyellow\", \"fafad2\"],\n\t[\"lightgray\", \"d3d3d3\"],\n\t[\"lightgrey\", \"d3d3d3\"],\n\t[\"lightgreen\", \"90ee90\"],\n\t[\"lightpink\", \"ffb6c1\"],\n\t[\"lightsalmon\", \"ffa07a\"],\n\t[\"lightseagreen\", \"20b2aa\"],\n\t[\"lightskyblue\", \"87cefa\"],\n\t[\"lightslategray\", \"778899\"],\n\t[\"lightslategrey\", \"778899\"],\n\t[\"lightsteelblue\", \"b0c4de\"],\n\t[\"lightyellow\", \"ffffe0\"],\n\t[\"lime\", \"00ff00\"],\n\t[\"limegreen\", \"32cd32\"],\n\t[\"linen\", \"faf0e6\"],\n\t[\"magenta\", \"ff00ff\"],\n\t[\"maroon\", \"800000\"],\n\t[\"mediumaquamarine\", \"66cdaa\"],\n\t[\"mediumblue\", \"0000cd\"],\n\t[\"mediumorchid\", \"ba55d3\"],\n\t[\"mediumpurple\", \"9370db\"],\n\t[\"mediumseagreen\", \"3cb371\"],\n\t[\"mediumslateblue\", \"7b68ee\"],\n\t[\"mediumspringgreen\", \"00fa9a\"],\n\t[\"mediumturquoise\", \"48d1cc\"],\n\t[\"mediumvioletred\", \"c71585\"],\n\t[\"midnightblue\", \"191970\"],\n\t[\"mintcream\", \"f5fffa\"],\n\t[\"mistyrose\", \"ffe4e1\"],\n\t[\"moccasin\", \"ffe4b5\"],\n\t[\"navajowhite\", \"ffdead\"],\n\t[\"navy\", \"000080\"],\n\t[\"oldlace\", \"fdf5e6\"],\n\t[\"olive\", \"808000\"],\n\t[\"olivedrab\", \"6b8e23\"],\n\t[\"orange\", \"ffa500\"],\n\t[\"orangered\", \"ff4500\"],\n\t[\"orchid\", \"da70d6\"],\n\t[\"palegoldenrod\", \"eee8aa\"],\n\t[\"palegreen\", \"98fb98\"],\n\t[\"paleturquoise\", \"afeeee\"],\n\t[\"palevioletred\", \"db7093\"],\n\t[\"papayawhip\", \"ffefd5\"],\n\t[\"peachpuff\", \"ffdab9\"],\n\t[\"peru\", \"cd853f\"],\n\t[\"pink\", \"ffc0cb\"],\n\t[\"plum\", \"dda0dd\"],\n\t[\"powderblue\", \"b0e0e6\"],\n\t[\"purple\", \"800080\"],\n\t[\"red\", \"ff0000\"],\n\t[\"rosybrown\", \"bc8f8f\"],\n\t[\"royalblue\", \"4169e1\"],\n\t[\"saddlebrown\", \"8b4513\"],\n\t[\"salmon\", \"fa8072\"],\n\t[\"sandybrown\", \"f4a460\"],\n\t[\"seagreen\", \"2e8b57\"],\n\t[\"seashell\", \"fff5ee\"],\n\t[\"sienna\", \"a0522d\"],\n\t[\"silver\", \"c0c0c0\"],\n\t[\"skyblue\", \"87ceeb\"],\n\t[\"slateblue\", \"6a5acd\"],\n\t[\"slategray\", \"708090\"],\n\t[\"slategrey\", \"708090\"],\n\t[\"snow\", \"fffafa\"],\n\t[\"springgreen\", \"00ff7f\"],\n\t[\"steelblue\", \"4682b4\"],\n\t[\"tan\", \"d2b48c\"],\n\t[\"teal\", \"008080\"],\n\t[\"thistle\", \"d8bfd8\"],\n\t[\"tomato\", \"ff6347\"],\n\t[\"turquoise\", \"40e0d0\"],\n\t[\"violet\", \"ee82ee\"],\n\t[\"wheat\", \"f5deb3\"],\n\t[\"white\", \"ffffff\"],\n\t[\"whitesmoke\", \"f5f5f5\"],\n\t[\"yellow\", \"ffff00\"],\n\t[\"yellowgreen\", \"9acd32\"],\n\t[\"transparent\", \"00000000\"],\n]);\n\nconst getRGBColor = (color: string): ColorRGB => {\n\tif (color.startsWith(\"rgba\")) {\n\t\treturn RGBAToRGB(color);\n\t}\n\n\tif (color.startsWith(\"rgb\")) {\n\t\treturn RGBStringToRGBObject(color);\n\t}\n\n\t// HEX\n\tif (color.indexOf(\"#\") === 0) {\n\t\t// Shorthand Syntax\n\t\tif (color.length === 4) {\n\t\t\tcolor = `${color[1]}${color[1]}${color[2]}${color[2]}${color[3]}${color[3]}`;\n\t\t} else {\n\t\t\tcolor = color.slice(1, color.length);\n\t\t}\n\t}\n\n\t// Css Color\n\tif (CSSColors.has(color)) {\n\t\tcolor = CSSColors.get(color)!;\n\t}\n\n\treturn HEXToRGB(color);\n};\n\nconst getAlpha = (color: string): number => {\n\tlet alpha = 1;\n\n\tif (color.startsWith(\"rgba\") || color.startsWith(\"hsla\")) {\n\t\tconst parts = color.split(\",\");\n\t\tif (parts.length === 4) {\n\t\t\talpha = parseFloat(parts[3].replace(\")\", \"\").trim());\n\t\t}\n\t}\n\n\treturn alpha;\n};\n\n/**\n * Return an object with the properties for each of the main colors(red, green, blue)\n * @param {String} color Receives a color in the following format: \"rgba(0, 0, 0, 1)\n */\nconst RGBAToRGB = (color: string): ColorRGB => {\n\tconst openingBracketIndex = color.indexOf(\"(\"),\n\t\tcommasIndexes = [];\n\n\tfor (let i = 0; i < color.length; i++) {\n\t\tif (color[i] === \",\") {\n\t\t\tcommasIndexes.push(i);\n\t\t}\n\t}\n\n\treturn {\n\t\tr: parseInt(color.slice(openingBracketIndex + 1, commasIndexes[0]).trim()),\n\t\tg: parseInt(color.slice(commasIndexes[0] + 1, commasIndexes[1]).trim()),\n\t\tb: parseInt(color.slice(commasIndexes[1] + 1, commasIndexes[2]).trim()),\n\t};\n};\n\n/**\n * Return an object with the properties for each of the main colors(red, green, blue)\n * @param {String} color Receives a color in the following format: \"rgb(0, 0, 0)\n */\nconst RGBStringToRGBObject = (color: string): ColorRGB => {\n\tconst openingBracketIndex = color.indexOf(\"(\"),\n\t\tclosingBraketIndex = color.indexOf(\")\"),\n\t\tcommasIndexes = [];\n\n\tfor (let i = 0; i < color.length; i++) {\n\t\tif (color[i] === \",\") {\n\t\t\tcommasIndexes.push(i);\n\t\t}\n\t}\n\n\treturn {\n\t\tr: parseInt(color.slice(openingBracketIndex + 1, commasIndexes[0]).trim()),\n\t\tg: parseInt(color.slice(commasIndexes[0] + 1, commasIndexes[1]).trim()),\n\t\tb: parseInt(color.slice(commasIndexes[1] + 1, closingBraketIndex).trim()),\n\t};\n};\n\nconst HSLToRGB = (color: ColorHSL): ColorRGB => {\n\t// Formula taken from https://www.rapidtables.com/convert/color/hsl-to-rgb.html\n\tlet saturation = color.s,\n\t\tlightness = color.l,\n\t\tred,\n\t\tgreen,\n\t\tblue;\n\n\tif (saturation > 100) {\n\t\tsaturation = 1;\n\t} else if (saturation < 0) {\n\t\tsaturation = 0;\n\t} else {\n\t\tsaturation /= 100;\n\t}\n\n\tif (lightness > 100) {\n\t\tlightness = 1;\n\t} else if (lightness < 0) {\n\t\tlightness = 0;\n\t} else {\n\t\tlightness /= 100;\n\t}\n\n\tconst hue = ((color.h % 360) + 360) % 360,\n\t\td = saturation * (1 - Math.abs(2 * lightness - 1)),\n\t\tm = 255 * (lightness - 0.5 * d),\n\t\tx = d * (1 - Math.abs(((hue / 60) % 2) - 1)),\n\t\ti = Math.floor(hue / 60),\n\t\tm255x = m + 255 * x,\n\t\tm255d = m + 255 * d;\n\n\tswitch (i) {\n\tcase 0:\n\t\tred = m255d;\n\t\tgreen = m255x;\n\t\tblue = m;\n\t\tbreak;\n\tcase 1:\n\t\tred = m255x;\n\t\tgreen = m255d;\n\t\tblue = m;\n\t\tbreak;\n\tcase 2:\n\t\tred = m;\n\t\tgreen = m255d;\n\t\tblue = m255x;\n\t\tbreak;\n\tcase 3:\n\t\tred = m;\n\t\tgreen = m255x;\n\t\tblue = m255d;\n\t\tbreak;\n\tcase 4:\n\t\tred = m255x;\n\t\tgreen = m;\n\t\tblue = m255d;\n\t\tbreak;\n\tcase 5:\n\t\tred = m255d;\n\t\tgreen = m;\n\t\tblue = m255x;\n\t\tbreak;\n\tdefault:\n\t\tred = 0;\n\t\tgreen = 0;\n\t\tblue = 0;\n\t\tbreak;\n\t}\n\n\treturn {\n\t\tr: Math.round(red),\n\t\tg: Math.round(green),\n\t\tb: Math.round(blue),\n\t};\n};\n\nconst HEXToRGB = (hex: string): ColorRGB => {\n\t// Please make sure you pass a valid 6 digit hex color\n\t// In the implementation of this method we assume that the hex argument is a 6 digit valid hex color\n\n\treturn {\n\t\tr: parseInt(hex.substr(0, 2), 16),\n\t\tg: parseInt(hex.substr(2, 2), 16),\n\t\tb: parseInt(hex.substr(4, 2), 16),\n\t};\n};\n\n/**\n * Returns the hex value of the color as string\n * @param {Object} color Receives an object with the properties for each of the main colors(r, g, b)\n */\nconst RGBtoHEX = (color: ColorRGB): string => {\n\tconst hexMap = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\n\tlet hexValue = \"\";\n\n\tlet divisionNumber = color.r / 16;\n\tlet remainder = color.r % 16;\n\thexValue += String(hexMap[Math.floor(divisionNumber)]);\n\thexValue += String(hexMap[remainder]);\n\n\tdivisionNumber = color.g / 16;\n\tremainder = color.g % 16;\n\thexValue += String(hexMap[Math.floor(divisionNumber)]);\n\thexValue += String(hexMap[remainder]);\n\n\tdivisionNumber = color.b / 16;\n\tremainder = color.b % 16;\n\thexValue += String(hexMap[Math.floor(divisionNumber)]);\n\thexValue += String(hexMap[remainder]);\n\n\treturn hexValue;\n};\n\nconst RGBToHSL = (color: ColorRGB): ColorHSL => {\n\tconst R = color.r / 255,\n\t\tG = color.g / 255,\n\t\tB = color.b / 255,\n\t\tmax = Math.max(R, G, B),\n\t\tmin = Math.min(R, G, B),\n\t\tdelta = max - min;\n\n\tlet h = (max + min) / 2;\n\tlet s = (max + min) / 2;\n\tlet l = (max + min) / 2;\n\n\tif (max === min) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = l > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n\n\t\tswitch (max) {\n\t\tcase R:\n\t\t\th = (G - B) / delta + (G < B ? 6 : 0);\n\t\t\tbreak;\n\t\tcase G:\n\t\t\th = (B - R) / delta + 2;\n\t\t\tbreak;\n\t\tcase B:\n\t\t\th = (R - G) / delta + 4;\n\t\t\tbreak;\n\t\t}\n\n\t\th /= 6;\n\t}\n\n\th = Math.round(h * 360);\n\ts = Math.round(s * 100);\n\tl = Math.round(l * 100);\n\n\treturn {\n\t\th,\n\t\ts,\n\t\tl,\n\t};\n};\n\nexport {\n\tgetRGBColor,\n\tgetAlpha,\n\tHSLToRGB,\n\tHEXToRGB,\n\tRGBToHSL,\n\tRGBStringToRGBObject,\n\tRGBtoHEX,\n};\n\nexport type {\n\tColorHSL,\n\tColorRGB,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FetchHelper.js","sourceRoot":"","sources":["../../src/util/FetchHelper.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAA6B,CAAC;AAC3D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAwB,CAAC;AACrD,MAAM,YAAY,GAAG,IAAI,GAAG,EAA2B,CAAC;AAExD,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC5B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KACnC;IACD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9C,IAAI,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACvC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;KACvC;IAED,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC5B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KACnC;IACD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9C,IAAI,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACvC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;KACvC;IAED,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC","sourcesContent":["const fetchPromises = new Map<string, Promise<Response>>();\nconst jsonPromises = new Map<string, Promise<any>>();\nconst textPromises = new Map<string, Promise<string>>();\n\nconst fetchTextOnce = async (url: string) => {\n\tif (!fetchPromises.get(url)) {\n\t\tfetchPromises.set(url, fetch(url));\n\t}\n\tconst response = await fetchPromises.get(url);\n\n\tif (response && !textPromises.get(url)) {\n\t\ttextPromises.set(url, response.text());\n\t}\n\n\treturn textPromises.get(url);\n};\n\nconst fetchJsonOnce = async (url: string) => {\n\tif (!fetchPromises.get(url)) {\n\t\tfetchPromises.set(url, fetch(url));\n\t}\n\tconst response = await fetchPromises.get(url);\n\n\tif (response && !jsonPromises.get(url)) {\n\t\tjsonPromises.set(url, response.json());\n\t}\n\n\treturn jsonPromises.get(url);\n};\n\nexport { fetchTextOnce, fetchJsonOnce };\n"]}
1
+ {"version":3,"file":"FetchHelper.js","sourceRoot":"","sources":["../../src/util/FetchHelper.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAA6B,CAAC;AAC3D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAwB,CAAC;AACrD,MAAM,YAAY,GAAG,IAAI,GAAG,EAA2B,CAAC;AAExD,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9C,IAAI,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9C,IAAI,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC","sourcesContent":["const fetchPromises = new Map<string, Promise<Response>>();\nconst jsonPromises = new Map<string, Promise<any>>();\nconst textPromises = new Map<string, Promise<string>>();\n\nconst fetchTextOnce = async (url: string) => {\n\tif (!fetchPromises.get(url)) {\n\t\tfetchPromises.set(url, fetch(url));\n\t}\n\tconst response = await fetchPromises.get(url);\n\n\tif (response && !textPromises.get(url)) {\n\t\ttextPromises.set(url, response.text());\n\t}\n\n\treturn textPromises.get(url);\n};\n\nconst fetchJsonOnce = async (url: string) => {\n\tif (!fetchPromises.get(url)) {\n\t\tfetchPromises.set(url, fetch(url));\n\t}\n\tconst response = await fetchPromises.get(url);\n\n\tif (response && !jsonPromises.get(url)) {\n\t\tjsonPromises.set(url, response.json());\n\t}\n\n\treturn jsonPromises.get(url);\n};\n\nexport { fetchTextOnce, fetchJsonOnce };\n"]}
@@ -1,9 +1,15 @@
1
1
  import isElementHidden from "./isElementHidden.js";
2
2
  import isElementClickable from "./isElementClickable.js";
3
3
  import { instanceOfUI5Element } from "../UI5Element.js";
4
+ import { isSafari } from "../Device.js";
4
5
  const isFocusTrap = (el) => {
5
6
  return el.hasAttribute("data-ui5-focus-trap");
6
7
  };
8
+ const isScrollable = (el) => {
9
+ const computedStyle = getComputedStyle(el);
10
+ return (el.scrollHeight > el.clientHeight && ["scroll", "auto"].indexOf(computedStyle.overflowY) >= 0)
11
+ || (el.scrollWidth > el.clientWidth && ["scroll", "auto"].indexOf(computedStyle.overflowX) >= 0);
12
+ };
7
13
  const getFirstFocusableElement = async (container, startFromContainer) => {
8
14
  if (!container || isElementHidden(container)) {
9
15
  return null;
@@ -19,6 +25,15 @@ const getLastFocusableElement = async (container, startFromContainer) => {
19
25
  const isElemFocusable = (el) => {
20
26
  return el.hasAttribute("data-ui5-focus-redirect") || !isElementHidden(el);
21
27
  };
28
+ const isUI5ElementWithNegativeTabIndex = (el) => {
29
+ if (instanceOfUI5Element(el)) {
30
+ const tabIndex = el.getAttribute("tabindex");
31
+ if (tabIndex !== null && parseInt(tabIndex) < 0) {
32
+ return true;
33
+ }
34
+ }
35
+ return false;
36
+ };
22
37
  const findFocusableElement = async (container, forward, startFromContainer) => {
23
38
  let child;
24
39
  let assignedElements;
@@ -41,19 +56,32 @@ const findFocusableElement = async (container, forward, startFromContainer) => {
41
56
  /* eslint-disable no-await-in-loop */
42
57
  while (child) {
43
58
  const originalChild = child;
44
- if (instanceOfUI5Element(child)) {
45
- child = await child.getFocusDomRefAsync();
46
- }
47
- if (!child) {
48
- return null;
49
- }
50
- if (child.nodeType === 1 && isElemFocusable(child) && !isFocusTrap(child)) {
51
- if (isElementClickable(child)) {
52
- return (child && typeof child.focus === "function") ? child : null;
59
+ if (!isElementHidden(originalChild) && !isUI5ElementWithNegativeTabIndex(originalChild)) {
60
+ if (instanceOfUI5Element(child)) {
61
+ // getDomRef is used because some components mark their focusable ref in an inner
62
+ // html but there might also be focusable targets outside of it
63
+ // as an example - TreeItemBase
64
+ // div - root of the component returned by getDomRef()
65
+ // li.ui5-li-tree - returned by getFocusDomRef() and may not be focusable (ItemNavigation manages tabindex)
66
+ // ul.subtree - may still contain focusable targets (sub nodes of the tree item)
67
+ await child._waitForDomRef();
68
+ child = child.getDomRef();
69
+ }
70
+ if (!child || isElementHidden(child)) {
71
+ return null;
53
72
  }
54
- focusableDescendant = await findFocusableElement(child, forward);
55
- if (focusableDescendant) {
56
- return (focusableDescendant && typeof focusableDescendant.focus === "function") ? focusableDescendant : null;
73
+ if (child.nodeType === 1 && isElemFocusable(child) && !isFocusTrap(child)) {
74
+ if (isElementClickable(child)) {
75
+ return (child && typeof child.focus === "function") ? child : null;
76
+ }
77
+ focusableDescendant = await findFocusableElement(child, forward);
78
+ // check if it is a keyboard focusable scroll container
79
+ if (!isSafari() && !focusableDescendant && isScrollable(child)) {
80
+ return (child && typeof child.focus === "function") ? child : null;
81
+ }
82
+ if (focusableDescendant) {
83
+ return (focusableDescendant && typeof focusableDescendant.focus === "function") ? focusableDescendant : null;
84
+ }
57
85
  }
58
86
  }
59
87
  child = forward ? originalChild.nextSibling : originalChild.previousSibling;
@@ -1 +1 @@
1
- {"version":3,"file":"FocusableElements.js","sourceRoot":"","sources":["../../src/util/FocusableElements.ts"],"names":[],"mappings":"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","sourcesContent":["import isElementHidden from \"./isElementHidden.js\";\nimport isElementClickable from \"./isElementClickable.js\";\nimport { instanceOfUI5Element } from \"../UI5Element.js\";\n\ntype FocusableElementPromise = Promise<HTMLElement | null>;\n\nconst isFocusTrap = (el: HTMLElement) => {\n\treturn el.hasAttribute(\"data-ui5-focus-trap\");\n};\n\nconst getFirstFocusableElement = async (container: HTMLElement, startFromContainer?: boolean): FocusableElementPromise => {\n\tif (!container || isElementHidden(container)) {\n\t\treturn null;\n\t}\n\n\treturn findFocusableElement(container, true, startFromContainer);\n};\n\nconst getLastFocusableElement = async (container: HTMLElement, startFromContainer?: boolean): FocusableElementPromise => {\n\tif (!container || isElementHidden(container)) {\n\t\treturn null;\n\t}\n\n\treturn findFocusableElement(container, false, startFromContainer);\n};\n\nconst isElemFocusable = (el: HTMLElement) => {\n\treturn el.hasAttribute(\"data-ui5-focus-redirect\") || !isElementHidden(el);\n};\n\nconst findFocusableElement = async (container: HTMLElement, forward: boolean, startFromContainer?: boolean): FocusableElementPromise => {\n\tlet child: HTMLElement | undefined;\n\tlet assignedElements;\n\tlet currentIndex = -1;\n\n\tif (container.shadowRoot) {\n\t\tchild = forward ? container.shadowRoot.firstChild as HTMLElement : container.shadowRoot.lastChild as HTMLElement;\n\t} else if (container instanceof HTMLSlotElement && container.assignedNodes()) {\n\t\tassignedElements = container.assignedNodes();\n\t\tcurrentIndex = forward ? 0 : assignedElements.length - 1;\n\t\tchild = assignedElements[currentIndex] as HTMLElement;\n\t} else if (startFromContainer) {\n\t\tchild = container;\n\t} else {\n\t\tchild = forward ? container.firstElementChild as HTMLElement : container.lastElementChild as HTMLElement;\n\t}\n\n\tlet focusableDescendant;\n\n\t/* eslint-disable no-await-in-loop */\n\n\twhile (child) {\n\t\tconst originalChild: HTMLElement | undefined = child;\n\n\t\tif (instanceOfUI5Element(child)) {\n\t\t\tchild = await child.getFocusDomRefAsync();\n\t\t}\n\n\t\tif (!child) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (child.nodeType === 1 && isElemFocusable(child) && !isFocusTrap(child)) {\n\t\t\tif (isElementClickable(child)) {\n\t\t\t\treturn (child && typeof child.focus === \"function\") ? child : null;\n\t\t\t}\n\n\t\t\tfocusableDescendant = await findFocusableElement(child, forward);\n\t\t\tif (focusableDescendant) {\n\t\t\t\treturn (focusableDescendant && typeof focusableDescendant.focus === \"function\") ? focusableDescendant : null;\n\t\t\t}\n\t\t}\n\n\t\tchild = forward ? originalChild.nextSibling as HTMLElement : originalChild.previousSibling as HTMLElement;\n\n\t\t// If the child element is not part of the currently assigned element,\n\t\t// we have to check the next/previous element assigned to the slot or continue with the next/previous sibling of the slot,\n\t\t// otherwise, the nextSibling/previousSibling is the next element inside the light DOM\n\t\tif (assignedElements && !assignedElements[currentIndex].contains(child)) {\n\t\t\tcurrentIndex = forward ? currentIndex + 1 : currentIndex - 1;\n\n\t\t\tchild = assignedElements[currentIndex] as HTMLElement;\n\t\t}\n\t}\n\n\t/* eslint-enable no-await-in-loop */\n\n\treturn null;\n};\n\nexport {\n\tgetFirstFocusableElement,\n\tgetLastFocusableElement,\n};\n"]}
1
+ {"version":3,"file":"FocusableElements.js","sourceRoot":"","sources":["../../src/util/FocusableElements.ts"],"names":[],"mappings":"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","sourcesContent":["import isElementHidden from \"./isElementHidden.js\";\nimport isElementClickable from \"./isElementClickable.js\";\nimport { instanceOfUI5Element } from \"../UI5Element.js\";\nimport { isSafari } from \"../Device.js\";\n\ntype FocusableElementPromise = Promise<HTMLElement | null>;\n\nconst isFocusTrap = (el: HTMLElement) => {\n\treturn el.hasAttribute(\"data-ui5-focus-trap\");\n};\n\nconst isScrollable = (el: HTMLElement) => {\n\tconst computedStyle = getComputedStyle(el);\n\n\treturn (el.scrollHeight > el.clientHeight && [\"scroll\", \"auto\"].indexOf(computedStyle.overflowY) >= 0)\n\t\t|| (el.scrollWidth > el.clientWidth && [\"scroll\", \"auto\"].indexOf(computedStyle.overflowX) >= 0);\n};\n\nconst getFirstFocusableElement = async (container: HTMLElement, startFromContainer?: boolean): FocusableElementPromise => {\n\tif (!container || isElementHidden(container)) {\n\t\treturn null;\n\t}\n\n\treturn findFocusableElement(container, true, startFromContainer);\n};\n\nconst getLastFocusableElement = async (container: HTMLElement, startFromContainer?: boolean): FocusableElementPromise => {\n\tif (!container || isElementHidden(container)) {\n\t\treturn null;\n\t}\n\n\treturn findFocusableElement(container, false, startFromContainer);\n};\n\nconst isElemFocusable = (el: HTMLElement) => {\n\treturn el.hasAttribute(\"data-ui5-focus-redirect\") || !isElementHidden(el);\n};\n\nconst isUI5ElementWithNegativeTabIndex = (el: HTMLElement) => {\n\tif (instanceOfUI5Element(el)) {\n\t\tconst tabIndex = el.getAttribute(\"tabindex\");\n\t\tif (tabIndex !== null && parseInt(tabIndex) < 0) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\nconst findFocusableElement = async (container: HTMLElement, forward: boolean, startFromContainer?: boolean): FocusableElementPromise => {\n\tlet child: HTMLElement | undefined;\n\tlet assignedElements;\n\tlet currentIndex = -1;\n\n\tif (container.shadowRoot) {\n\t\tchild = forward ? container.shadowRoot.firstChild as HTMLElement : container.shadowRoot.lastChild as HTMLElement;\n\t} else if (container instanceof HTMLSlotElement && container.assignedNodes()) {\n\t\tassignedElements = container.assignedNodes();\n\t\tcurrentIndex = forward ? 0 : assignedElements.length - 1;\n\t\tchild = assignedElements[currentIndex] as HTMLElement;\n\t} else if (startFromContainer) {\n\t\tchild = container;\n\t} else {\n\t\tchild = forward ? container.firstElementChild as HTMLElement : container.lastElementChild as HTMLElement;\n\t}\n\n\tlet focusableDescendant;\n\n\t/* eslint-disable no-await-in-loop */\n\n\twhile (child) {\n\t\tconst originalChild: HTMLElement | undefined = child;\n\n\t\tif (!isElementHidden(originalChild) && !isUI5ElementWithNegativeTabIndex(originalChild)) {\n\t\t\tif (instanceOfUI5Element(child)) {\n\t\t\t\t// getDomRef is used because some components mark their focusable ref in an inner\n\t\t\t\t// html but there might also be focusable targets outside of it\n\t\t\t\t// as an example - TreeItemBase\n\t\t\t\t// div - root of the component returned by getDomRef()\n\t\t\t\t// \tli.ui5-li-tree - returned by getFocusDomRef() and may not be focusable (ItemNavigation manages tabindex)\n\t\t\t\t// \tul.subtree - may still contain focusable targets (sub nodes of the tree item)\n\t\t\t\tawait child._waitForDomRef();\n\t\t\t\tchild = child.getDomRef();\n\t\t\t}\n\n\t\t\tif (!child || isElementHidden(child)) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (child.nodeType === 1 && isElemFocusable(child) && !isFocusTrap(child)) {\n\t\t\t\tif (isElementClickable(child)) {\n\t\t\t\t\treturn (child && typeof child.focus === \"function\") ? child : null;\n\t\t\t\t}\n\n\t\t\t\tfocusableDescendant = await findFocusableElement(child, forward);\n\n\t\t\t\t// check if it is a keyboard focusable scroll container\n\t\t\t\tif (!isSafari() && !focusableDescendant && isScrollable(child)) {\n\t\t\t\t\treturn (child && typeof child.focus === \"function\") ? child : null;\n\t\t\t\t}\n\n\t\t\t\tif (focusableDescendant) {\n\t\t\t\t\treturn (focusableDescendant && typeof focusableDescendant.focus === \"function\") ? focusableDescendant : null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tchild = forward ? originalChild.nextSibling as HTMLElement : originalChild.previousSibling as HTMLElement;\n\n\t\t// If the child element is not part of the currently assigned element,\n\t\t// we have to check the next/previous element assigned to the slot or continue with the next/previous sibling of the slot,\n\t\t// otherwise, the nextSibling/previousSibling is the next element inside the light DOM\n\t\tif (assignedElements && !assignedElements[currentIndex].contains(child)) {\n\t\t\tcurrentIndex = forward ? currentIndex + 1 : currentIndex - 1;\n\n\t\t\tchild = assignedElements[currentIndex] as HTMLElement;\n\t\t}\n\t}\n\n\t/* eslint-enable no-await-in-loop */\n\n\treturn null;\n};\n\nexport {\n\tgetFirstFocusableElement,\n\tgetLastFocusableElement,\n};\n"]}
@@ -1,3 +1,5 @@
1
+ /** @ts-expect-error */
1
2
  import sanitizeHTML from "../sap/base/security/sanitizeHTML.js";
3
+ /** @ts-expect-error */
2
4
  import URLListValidator from "../sap/base/security/URLListValidator.js";
3
5
  export { URLListValidator, sanitizeHTML, };
@@ -1,6 +1,6 @@
1
- // @ts-ignore
1
+ /** @ts-expect-error */
2
2
  import sanitizeHTML from "../sap/base/security/sanitizeHTML.js";
3
- // @ts-ignore
3
+ /** @ts-expect-error */
4
4
  import URLListValidator from "../sap/base/security/URLListValidator.js";
5
5
  export { URLListValidator, sanitizeHTML, };
6
6
  //# sourceMappingURL=HTMLSanitizer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HTMLSanitizer.js","sourceRoot":"","sources":["../../src/util/HTMLSanitizer.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,YAAY,MAAM,sCAAsC,CAAC;AAChE,aAAa;AACb,OAAO,gBAAgB,MAAM,0CAA0C,CAAC;AAExE,OAAO,EACN,gBAAgB,EAChB,YAAY,GACZ,CAAC","sourcesContent":["// @ts-ignore\nimport sanitizeHTML from \"../sap/base/security/sanitizeHTML.js\";\n// @ts-ignore\nimport URLListValidator from \"../sap/base/security/URLListValidator.js\";\n\nexport {\n\tURLListValidator,\n\tsanitizeHTML,\n};\n"]}
1
+ {"version":3,"file":"HTMLSanitizer.js","sourceRoot":"","sources":["../../src/util/HTMLSanitizer.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,OAAO,YAAY,MAAM,sCAAsC,CAAC;AAChE,uBAAuB;AACvB,OAAO,gBAAgB,MAAM,0CAA0C,CAAC;AAExE,OAAO,EACN,gBAAgB,EAChB,YAAY,GACZ,CAAC","sourcesContent":["/** @ts-expect-error */\nimport sanitizeHTML from \"../sap/base/security/sanitizeHTML.js\";\n/** @ts-expect-error */\nimport URLListValidator from \"../sap/base/security/URLListValidator.js\";\n\nexport {\n\tURLListValidator,\n\tsanitizeHTML,\n};\n"]}
@@ -6,5 +6,5 @@ import InvisibleMessageMode from "../types/InvisibleMessageMode.js";
6
6
  * @param { InvisibleMessageMode } mode The mode to be inserted in the aria-live attribute.
7
7
  * @public
8
8
  */
9
- declare const announce: (message: string, mode: `${InvisibleMessageMode}`) => void;
9
+ declare const announce: (message: string, mode: InvisibleMessageMode) => void;
10
10
  export default announce;
@@ -25,8 +25,8 @@ attachBoot(() => {
25
25
  assertiveSpan.setAttribute("role", "alert");
26
26
  setOutOfViewportStyles(politeSpan);
27
27
  setOutOfViewportStyles(assertiveSpan);
28
- getSingletonElementInstance("ui5-static-area").appendChild(politeSpan);
29
- getSingletonElementInstance("ui5-static-area").appendChild(assertiveSpan);
28
+ getSingletonElementInstance("ui5-announcement-area").appendChild(politeSpan);
29
+ getSingletonElementInstance("ui5-announcement-area").appendChild(assertiveSpan);
30
30
  });
31
31
  /**
32
32
  * Inserts the string into the respective span, depending on the mode provided.
@@ -1 +1 @@
1
- {"version":3,"file":"InvisibleMessage.js","sourceRoot":"","sources":["../../src/util/InvisibleMessage.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,kCAAkC,CAAC;AACpE,OAAO,2BAA2B,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,IAAI,UAAuB,CAAC;AAC5B,IAAI,aAA0B,CAAC;AAE/B,MAAM,sBAAsB,GAAG,CAAC,EAAe,EAAE,EAAE;IAClD,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IAC/B,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACxC,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;IAC7B,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;IAC1B,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;IACzB,EAAE,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AACjC,CAAC,CAAC;AAEF,UAAU,CAAC,GAAG,EAAE;IACf,IAAI,UAAU,IAAI,aAAa,EAAE;QAChC,OAAO;KACP;IAED,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAE/C,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IACxD,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAE9D,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/C,aAAa,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAErD,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE5C,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACnC,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAEtC,2BAA2B,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACvE,2BAA2B,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAC3E,CAAC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAE,IAA+B,EAAE,EAAE;IACrE,4DAA4D;IAC5D,MAAM,IAAI,GAAG,IAAI,KAAK,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC;IAElF,oFAAoF;IACpF,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;IAE3B,IAAI,IAAI,KAAK,oBAAoB,CAAC,SAAS,IAAI,IAAI,KAAK,oBAAoB,CAAC,MAAM,EAAE;QACpF,OAAO,CAAC,IAAI,CAAC,0IAA0I,CAAC,CAAC,CAAC,sBAAsB;KAChL;IAED,6EAA6E;IAC7E,UAAU,CAAC,GAAG,EAAE;QACf,iFAAiF;QACjF,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE;YACjC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;SACtB;IACF,CAAC,EAAE,IAAI,CAAC,CAAC;AACV,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import InvisibleMessageMode from \"../types/InvisibleMessageMode.js\";\nimport getSingletonElementInstance from \"./getSingletonElementInstance.js\";\nimport { attachBoot } from \"../Boot.js\";\n\nlet politeSpan: HTMLElement;\nlet assertiveSpan: HTMLElement;\n\nconst setOutOfViewportStyles = (el: HTMLElement) => {\n\tel.style.position = \"absolute\";\n\tel.style.clip = \"rect(1px,1px,1px,1px)\";\n\tel.style.userSelect = \"none\";\n\tel.style.left = \"-1000px\";\n\tel.style.top = \"-1000px\";\n\tel.style.pointerEvents = \"none\";\n};\n\nattachBoot(() => {\n\tif (politeSpan && assertiveSpan) {\n\t\treturn;\n\t}\n\n\tpoliteSpan = document.createElement(\"span\");\n\tassertiveSpan = document.createElement(\"span\");\n\n\tpoliteSpan.classList.add(\"ui5-invisiblemessage-polite\");\n\tassertiveSpan.classList.add(\"ui5-invisiblemessage-assertive\");\n\n\tpoliteSpan.setAttribute(\"aria-live\", \"polite\");\n\tassertiveSpan.setAttribute(\"aria-live\", \"assertive\");\n\n\tpoliteSpan.setAttribute(\"role\", \"alert\");\n\tassertiveSpan.setAttribute(\"role\", \"alert\");\n\n\tsetOutOfViewportStyles(politeSpan);\n\tsetOutOfViewportStyles(assertiveSpan);\n\n\tgetSingletonElementInstance(\"ui5-static-area\").appendChild(politeSpan);\n\tgetSingletonElementInstance(\"ui5-static-area\").appendChild(assertiveSpan);\n});\n\n/**\n * Inserts the string into the respective span, depending on the mode provided.\n *\n * @param { string } message String to be announced by the screen reader.\n * @param { InvisibleMessageMode } mode The mode to be inserted in the aria-live attribute.\n * @public\n */\nconst announce = (message: string, mode: `${InvisibleMessageMode}`) => {\n\t// If no type is presented, fallback to polite announcement.\n\tconst span = mode === InvisibleMessageMode.Assertive ? assertiveSpan : politeSpan;\n\n\t// Set textContent to empty string in order to trigger screen reader's announcement.\n\tspan.textContent = \"\";\n\tspan.textContent = message;\n\n\tif (mode !== InvisibleMessageMode.Assertive && mode !== InvisibleMessageMode.Polite) {\n\t\tconsole.warn(`You have entered an invalid mode. Valid values are: \"Polite\" and \"Assertive\". The framework will automatically set the mode to \"Polite\".`); // eslint-disable-line\n\t}\n\n\t// clear the span in order to avoid reading it out while in JAWS reading node\n\tsetTimeout(() => {\n\t\t// ensure that we clear the text node only if no announce is made in the meantime\n\t\tif (span.textContent === message) {\n\t\t\tspan.textContent = \"\";\n\t\t}\n\t}, 3000);\n};\n\nexport default announce;\n"]}
1
+ {"version":3,"file":"InvisibleMessage.js","sourceRoot":"","sources":["../../src/util/InvisibleMessage.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,kCAAkC,CAAC;AACpE,OAAO,2BAA2B,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,IAAI,UAAuB,CAAC;AAC5B,IAAI,aAA0B,CAAC;AAE/B,MAAM,sBAAsB,GAAG,CAAC,EAAe,EAAE,EAAE;IAClD,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IAC/B,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACxC,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;IAC7B,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;IAC1B,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;IACzB,EAAE,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AACjC,CAAC,CAAC;AAEF,UAAU,CAAC,GAAG,EAAE;IACf,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;QACjC,OAAO;IACR,CAAC;IAED,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAE/C,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IACxD,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAE9D,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/C,aAAa,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAErD,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE5C,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACnC,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAEtC,2BAA2B,CAAC,uBAAuB,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7E,2BAA2B,CAAC,uBAAuB,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACjF,CAAC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAE,IAA0B,EAAE,EAAE;IAChE,4DAA4D;IAC5D,MAAM,IAAI,GAAG,IAAI,KAAK,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC;IAElF,oFAAoF;IACpF,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;IAE3B,IAAI,IAAI,KAAK,oBAAoB,CAAC,SAAS,IAAI,IAAI,KAAK,oBAAoB,CAAC,MAAM,EAAE,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,0IAA0I,CAAC,CAAC,CAAC,sBAAsB;IACjL,CAAC;IAED,6EAA6E;IAC7E,UAAU,CAAC,GAAG,EAAE;QACf,iFAAiF;QACjF,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACvB,CAAC;IACF,CAAC,EAAE,IAAI,CAAC,CAAC;AACV,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import InvisibleMessageMode from \"../types/InvisibleMessageMode.js\";\nimport getSingletonElementInstance from \"./getSingletonElementInstance.js\";\nimport { attachBoot } from \"../Boot.js\";\n\nlet politeSpan: HTMLElement;\nlet assertiveSpan: HTMLElement;\n\nconst setOutOfViewportStyles = (el: HTMLElement) => {\n\tel.style.position = \"absolute\";\n\tel.style.clip = \"rect(1px,1px,1px,1px)\";\n\tel.style.userSelect = \"none\";\n\tel.style.left = \"-1000px\";\n\tel.style.top = \"-1000px\";\n\tel.style.pointerEvents = \"none\";\n};\n\nattachBoot(() => {\n\tif (politeSpan && assertiveSpan) {\n\t\treturn;\n\t}\n\n\tpoliteSpan = document.createElement(\"span\");\n\tassertiveSpan = document.createElement(\"span\");\n\n\tpoliteSpan.classList.add(\"ui5-invisiblemessage-polite\");\n\tassertiveSpan.classList.add(\"ui5-invisiblemessage-assertive\");\n\n\tpoliteSpan.setAttribute(\"aria-live\", \"polite\");\n\tassertiveSpan.setAttribute(\"aria-live\", \"assertive\");\n\n\tpoliteSpan.setAttribute(\"role\", \"alert\");\n\tassertiveSpan.setAttribute(\"role\", \"alert\");\n\n\tsetOutOfViewportStyles(politeSpan);\n\tsetOutOfViewportStyles(assertiveSpan);\n\n\tgetSingletonElementInstance(\"ui5-announcement-area\").appendChild(politeSpan);\n\tgetSingletonElementInstance(\"ui5-announcement-area\").appendChild(assertiveSpan);\n});\n\n/**\n * Inserts the string into the respective span, depending on the mode provided.\n *\n * @param { string } message String to be announced by the screen reader.\n * @param { InvisibleMessageMode } mode The mode to be inserted in the aria-live attribute.\n * @public\n */\nconst announce = (message: string, mode: InvisibleMessageMode) => {\n\t// If no type is presented, fallback to polite announcement.\n\tconst span = mode === InvisibleMessageMode.Assertive ? assertiveSpan : politeSpan;\n\n\t// Set textContent to empty string in order to trigger screen reader's announcement.\n\tspan.textContent = \"\";\n\tspan.textContent = message;\n\n\tif (mode !== InvisibleMessageMode.Assertive && mode !== InvisibleMessageMode.Polite) {\n\t\tconsole.warn(`You have entered an invalid mode. Valid values are: \"Polite\" and \"Assertive\". The framework will automatically set the mode to \"Polite\".`); // eslint-disable-line\n\t}\n\n\t// clear the span in order to avoid reading it out while in JAWS reading node\n\tsetTimeout(() => {\n\t\t// ensure that we clear the text node only if no announce is made in the meantime\n\t\tif (span.textContent === message) {\n\t\t\tspan.textContent = \"\";\n\t\t}\n\t}, 3000);\n};\n\nexport default announce;\n"]}
@@ -2,6 +2,4 @@ declare const getFocusedElement: () => HTMLElement | null;
2
2
  declare const isFocusedElementWithinNode: (node: HTMLElement) => boolean;
3
3
  declare const isClickInRect: (e: MouseEvent | TouchEvent, rect: DOMRect) => boolean;
4
4
  declare const getClosedPopupParent: (el: HTMLElement) => HTMLElement;
5
- declare const getNextZIndex: () => number | undefined;
6
- declare const getCurrentZIndex: () => number;
7
- export { getFocusedElement, isClickInRect, getClosedPopupParent, getNextZIndex, getCurrentZIndex, isFocusedElementWithinNode, };
5
+ export { getFocusedElement, isClickInRect, getClosedPopupParent, isFocusedElementWithinNode, };
@@ -1,7 +1,4 @@
1
- import getSharedResource from "../getSharedResource.js";
2
- import { getFeature } from "../FeaturesRegistry.js";
3
1
  import getActiveElement from "./getActiveElement.js";
4
- const popupUtilsData = getSharedResource("PopupUtilsData", { currentZIndex: 100 });
5
2
  const getFocusedElement = () => {
6
3
  const element = getActiveElement();
7
4
  return (element && typeof element.focus === "function") ? element : null;
@@ -59,16 +56,5 @@ const getClosedPopupParent = (el) => {
59
56
  }
60
57
  return getClosedPopupParent(parent);
61
58
  };
62
- const getNextZIndex = () => {
63
- const openUI5Support = getFeature("OpenUI5Support");
64
- if (openUI5Support && openUI5Support.isOpenUI5Detected()) { // use OpenUI5 for getting z-index values, if loaded
65
- return openUI5Support.getNextZIndex();
66
- }
67
- popupUtilsData.currentZIndex += 2;
68
- return popupUtilsData.currentZIndex;
69
- };
70
- const getCurrentZIndex = () => {
71
- return popupUtilsData.currentZIndex;
72
- };
73
- export { getFocusedElement, isClickInRect, getClosedPopupParent, getNextZIndex, getCurrentZIndex, isFocusedElementWithinNode, };
59
+ export { getFocusedElement, isClickInRect, getClosedPopupParent, isFocusedElementWithinNode, };
74
60
  //# sourceMappingURL=PopupUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PopupUtils.js","sourceRoot":"","sources":["../../src/util/PopupUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import getSharedResource from \"../getSharedResource.js\";\nimport { getFeature } from \"../FeaturesRegistry.js\";\nimport getActiveElement from \"./getActiveElement.js\";\nimport type OpenUI5Support from \"../features/OpenUI5Support.js\";\n\ntype PopupUtilsData = {\n\tcurrentZIndex: number\n};\n\nconst popupUtilsData = getSharedResource<PopupUtilsData>(\"PopupUtilsData\", { currentZIndex: 100 });\n\nconst getFocusedElement = () => {\n\tconst element = getActiveElement() as HTMLElement;\n\treturn (element && typeof element.focus === \"function\") ? element : null;\n};\n\nconst isFocusedElementWithinNode = (node: HTMLElement) => {\n\tconst fe = getFocusedElement();\n\n\tif (fe) {\n\t\treturn isNodeContainedWithin(node, fe);\n\t}\n\n\treturn false;\n};\n\nconst isNodeContainedWithin = (parent: HTMLElement, child: HTMLElement): boolean => {\n\tlet currentNode: HTMLElement | undefined = parent;\n\n\tif (currentNode.shadowRoot) {\n\t\tconst children = Array.from(currentNode.shadowRoot.children) as Array<HTMLElement>;\n\t\tcurrentNode = children.find(n => n.localName !== \"style\");\n\n\t\tif (!currentNode) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tif (currentNode === child) {\n\t\treturn true;\n\t}\n\n\tconst childNodes = currentNode.localName === \"slot\" ? (currentNode as HTMLSlotElement).assignedNodes() : currentNode.children;\n\n\tif (childNodes) {\n\t\treturn Array.from(childNodes).some(n => isNodeContainedWithin(n as HTMLElement, child));\n\t}\n\n\treturn false;\n};\n\nconst isPointInRect = (x: number, y: number, rect: DOMRect) => {\n\treturn x >= rect.left && x <= rect.right\n\t\t&& y >= rect.top && y <= rect.bottom;\n};\n\nconst isClickInRect = (e: MouseEvent | TouchEvent, rect: DOMRect) => {\n\tlet x;\n\tlet y;\n\n\tif (e instanceof MouseEvent) {\n\t\tx = e.clientX;\n\t\ty = e.clientY;\n\t} else {\n\t\tconst touch = e.touches[0];\n\t\tx = touch.clientX;\n\t\ty = touch.clientY;\n\t}\n\n\treturn isPointInRect(x, y, rect);\n};\n\ninterface PopupInterface { // Refactor: replace with Popup.js\n\t_show: () => void,\n\topen: boolean,\n}\nfunction instanceOfPopup(object: any): object is PopupInterface {\n\treturn \"isUI5Element\" in object && \"_show\" in object;\n}\n\nconst getClosedPopupParent = (el: HTMLElement): HTMLElement => {\n\tconst parent = el.parentElement || (el.getRootNode && (el.getRootNode() as ShadowRoot).host);\n\n\tif (parent && ((instanceOfPopup(parent) || parent === document.documentElement))) {\n\t\treturn parent as HTMLElement;\n\t}\n\n\treturn getClosedPopupParent(parent as HTMLElement);\n};\n\nconst getNextZIndex = () => {\n\tconst openUI5Support = getFeature<typeof OpenUI5Support>(\"OpenUI5Support\");\n\tif (openUI5Support && openUI5Support.isOpenUI5Detected()) { // use OpenUI5 for getting z-index values, if loaded\n\t\treturn openUI5Support.getNextZIndex();\n\t}\n\n\tpopupUtilsData.currentZIndex += 2;\n\treturn popupUtilsData.currentZIndex;\n};\n\nconst getCurrentZIndex = () => {\n\treturn popupUtilsData.currentZIndex;\n};\n\nexport {\n\tgetFocusedElement,\n\tisClickInRect,\n\tgetClosedPopupParent,\n\tgetNextZIndex,\n\tgetCurrentZIndex,\n\tisFocusedElementWithinNode,\n};\n"]}
1
+ {"version":3,"file":"PopupUtils.js","sourceRoot":"","sources":["../../src/util/PopupUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import getActiveElement from \"./getActiveElement.js\";\n\nconst getFocusedElement = () => {\n\tconst element = getActiveElement() as HTMLElement;\n\treturn (element && typeof element.focus === \"function\") ? element : null;\n};\n\nconst isFocusedElementWithinNode = (node: HTMLElement) => {\n\tconst fe = getFocusedElement();\n\n\tif (fe) {\n\t\treturn isNodeContainedWithin(node, fe);\n\t}\n\n\treturn false;\n};\n\nconst isNodeContainedWithin = (parent: HTMLElement, child: HTMLElement): boolean => {\n\tlet currentNode: HTMLElement | undefined = parent;\n\n\tif (currentNode.shadowRoot) {\n\t\tconst children = Array.from(currentNode.shadowRoot.children) as Array<HTMLElement>;\n\t\tcurrentNode = children.find(n => n.localName !== \"style\");\n\n\t\tif (!currentNode) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tif (currentNode === child) {\n\t\treturn true;\n\t}\n\n\tconst childNodes = currentNode.localName === \"slot\" ? (currentNode as HTMLSlotElement).assignedNodes() : currentNode.children;\n\n\tif (childNodes) {\n\t\treturn Array.from(childNodes).some(n => isNodeContainedWithin(n as HTMLElement, child));\n\t}\n\n\treturn false;\n};\n\nconst isPointInRect = (x: number, y: number, rect: DOMRect) => {\n\treturn x >= rect.left && x <= rect.right\n\t\t&& y >= rect.top && y <= rect.bottom;\n};\n\nconst isClickInRect = (e: MouseEvent | TouchEvent, rect: DOMRect) => {\n\tlet x;\n\tlet y;\n\n\tif (e instanceof MouseEvent) {\n\t\tx = e.clientX;\n\t\ty = e.clientY;\n\t} else {\n\t\tconst touch = e.touches[0];\n\t\tx = touch.clientX;\n\t\ty = touch.clientY;\n\t}\n\n\treturn isPointInRect(x, y, rect);\n};\n\ninterface PopupInterface { // Refactor: replace with Popup.js\n\t_show: () => void,\n\topen: boolean,\n}\nfunction instanceOfPopup(object: any): object is PopupInterface {\n\treturn \"isUI5Element\" in object && \"_show\" in object;\n}\n\nconst getClosedPopupParent = (el: HTMLElement): HTMLElement => {\n\tconst parent = el.parentElement || (el.getRootNode && (el.getRootNode() as ShadowRoot).host);\n\n\tif (parent && ((instanceOfPopup(parent) || parent === document.documentElement))) {\n\t\treturn parent as HTMLElement;\n\t}\n\n\treturn getClosedPopupParent(parent as HTMLElement);\n};\n\nexport {\n\tgetFocusedElement,\n\tisClickInRect,\n\tgetClosedPopupParent,\n\tisFocusedElementWithinNode,\n};\n"]}
@@ -0,0 +1,12 @@
1
+ declare const getElementSelection: (element: HTMLElement) => {
2
+ selectedText: string;
3
+ x: number;
4
+ y: number;
5
+ width: number;
6
+ height: number;
7
+ top: number;
8
+ right: number;
9
+ bottom: number;
10
+ left: number;
11
+ };
12
+ export default getElementSelection;
@@ -0,0 +1,79 @@
1
+ import getEffectiveScrollbarStyle from "../util/getEffectiveScrollbarStyle.js";
2
+ const copyAndApplyStyles = (element, copiedElement) => {
3
+ const computedStyles = getComputedStyle(element);
4
+ for (let i = 0; i < computedStyles.length; i++) {
5
+ const propertyName = computedStyles[i];
6
+ copiedElement.style.setProperty(propertyName, computedStyles.getPropertyValue(propertyName));
7
+ }
8
+ element.tagName === "INPUT" && setInputSpecificStyles(copiedElement);
9
+ copiedElement.style.position = "absolute";
10
+ copiedElement.style.left = `${element.getBoundingClientRect().left}px`;
11
+ copiedElement.style.top = `${element.getBoundingClientRect().top}px`;
12
+ setUnInteractableStyles(copiedElement);
13
+ document.body.appendChild(copiedElement);
14
+ };
15
+ const setUnInteractableStyles = (element) => {
16
+ element.style.position = "absolute";
17
+ element.style.userSelect = "none";
18
+ element.style.pointerEvents = "none";
19
+ element.style.zIndex = "-1";
20
+ element.style.opacity = "0";
21
+ };
22
+ const setInputSpecificStyles = (element) => {
23
+ element.style.whiteSpace = "nowrap";
24
+ element.style.overflowX = "auto";
25
+ element.style.overflowY = "hidden";
26
+ };
27
+ const applyScrollStylings = () => {
28
+ const sheet = new CSSStyleSheet();
29
+ const styles = getEffectiveScrollbarStyle();
30
+ sheet.replaceSync(styles);
31
+ document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];
32
+ };
33
+ const createCopy = () => {
34
+ const copiedElement = document.createElement("div");
35
+ copiedElement.id = "ui5-selection-mirror";
36
+ copiedElement.contentEditable = "true";
37
+ applyScrollStylings();
38
+ document.body.appendChild(copiedElement);
39
+ };
40
+ const applyScrollPosition = (element, copiedElement) => {
41
+ copiedElement.scrollTop = element.scrollTop;
42
+ copiedElement.scrollLeft = element.scrollLeft;
43
+ };
44
+ const getSelectionCoordinates = (element, mirror) => {
45
+ const { selectionStart, selectionEnd } = element;
46
+ const selectedText = element.value.slice(selectionStart, element.selectionEnd);
47
+ const range = document.createRange();
48
+ range.setStart(mirror.firstChild, selectionEnd - 1);
49
+ range.setEnd(mirror.firstChild, selectionEnd);
50
+ applyScrollPosition(element, mirror);
51
+ const rangeRect = range.getBoundingClientRect();
52
+ const rectObject = {
53
+ x: rangeRect.x,
54
+ y: rangeRect.y,
55
+ width: rangeRect.width,
56
+ height: rangeRect.height,
57
+ top: rangeRect.top,
58
+ right: rangeRect.right,
59
+ bottom: rangeRect.bottom,
60
+ left: rangeRect.left,
61
+ };
62
+ document.body.removeChild(mirror);
63
+ return { ...rectObject, selectedText };
64
+ };
65
+ const getElementSelection = (element) => {
66
+ const innerElement = element.shadowRoot.querySelector("textarea")
67
+ || element.shadowRoot.querySelector("input");
68
+ if (!document.getElementById("ui5-selection-mirror")) {
69
+ createCopy();
70
+ }
71
+ const copiedElement = document.getElementById("ui5-selection-mirror");
72
+ copiedElement.textContent = innerElement.value;
73
+ if (innerElement) {
74
+ copyAndApplyStyles(innerElement, copiedElement);
75
+ }
76
+ return getSelectionCoordinates(innerElement, copiedElement);
77
+ };
78
+ export default getElementSelection;
79
+ //# sourceMappingURL=SelectionAssistant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectionAssistant.js","sourceRoot":"","sources":["../../src/util/SelectionAssistant.ts"],"names":[],"mappings":"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","sourcesContent":["import getEffectiveScrollbarStyle from \"../util/getEffectiveScrollbarStyle.js\";\n\nconst copyAndApplyStyles = (element: HTMLElement, copiedElement: HTMLElement) => {\n\tconst computedStyles = getComputedStyle(element);\n\n\tfor (let i = 0; i < computedStyles.length; i++) {\n\t\tconst propertyName = computedStyles[i];\n\t\tcopiedElement.style.setProperty(propertyName, computedStyles.getPropertyValue(propertyName));\n\t}\n\n\telement.tagName === \"INPUT\" && setInputSpecificStyles(copiedElement);\n\n\tcopiedElement.style.position = \"absolute\";\n\tcopiedElement.style.left = `${element.getBoundingClientRect().left}px`;\n\tcopiedElement.style.top = `${element.getBoundingClientRect().top}px`;\n\n\tsetUnInteractableStyles(copiedElement);\n\n\tdocument.body.appendChild(copiedElement);\n};\n\nconst setUnInteractableStyles = (element: HTMLElement) => {\n\telement.style.position = \"absolute\";\n\telement.style.userSelect = \"none\";\n\telement.style.pointerEvents = \"none\";\n\telement.style.zIndex = \"-1\";\n\telement.style.opacity = \"0\";\n};\n\nconst setInputSpecificStyles = (element: HTMLElement) => {\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflowX = \"auto\";\n\telement.style.overflowY = \"hidden\";\n};\n\nconst applyScrollStylings = () => {\n\tconst sheet = new CSSStyleSheet();\n\tconst styles = getEffectiveScrollbarStyle();\n\n\tsheet.replaceSync(styles);\n\n\tdocument.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];\n};\n\nconst createCopy = () => {\n\tconst copiedElement = document.createElement(\"div\");\n\n\tcopiedElement.id = \"ui5-selection-mirror\";\n\tcopiedElement.contentEditable = \"true\";\n\n\tapplyScrollStylings();\n\n\tdocument.body.appendChild(copiedElement);\n};\n\nconst applyScrollPosition = (element: HTMLElement, copiedElement: HTMLElement) => {\n\tcopiedElement.scrollTop = element.scrollTop;\n\tcopiedElement.scrollLeft = element.scrollLeft;\n};\n\nconst getSelectionCoordinates = (element: HTMLInputElement | HTMLTextAreaElement, mirror: HTMLDivElement) => {\n\tconst { selectionStart, selectionEnd } = element;\n\tconst selectedText = element.value.slice(\n\t\tselectionStart!,\n\t\telement.selectionEnd!,\n\t);\n\tconst range = document.createRange();\n\n\trange.setStart(mirror.firstChild!, selectionEnd! - 1);\n\trange.setEnd(mirror.firstChild!, selectionEnd!);\n\n\tapplyScrollPosition(element, mirror);\n\n\tconst rangeRect = range.getBoundingClientRect();\n\tconst rectObject = {\n\t\tx: rangeRect.x,\n\t\ty: rangeRect.y,\n\t\twidth: rangeRect.width,\n\t\theight: rangeRect.height,\n\t\ttop: rangeRect.top,\n\t\tright: rangeRect.right,\n\t\tbottom: rangeRect.bottom,\n\t\tleft: rangeRect.left,\n\t};\n\n\tdocument.body.removeChild(mirror);\n\n\treturn { ...rectObject, selectedText };\n};\n\nconst getElementSelection = (element: HTMLElement) => {\n\tconst innerElement = element.shadowRoot!.querySelector(\"textarea\")\n\t\t|| element.shadowRoot!.querySelector(\"input\");\n\n\tif (!document.getElementById(\"ui5-selection-mirror\")) {\n\t\tcreateCopy();\n\t}\n\n\tconst copiedElement = document.getElementById(\n\t\t\"ui5-selection-mirror\",\n\t)!;\n\n\tcopiedElement.textContent = innerElement!.value;\n\n\tif (innerElement) {\n\t\tcopyAndApplyStyles(innerElement, copiedElement)!;\n\t}\n\n\treturn getSelectionCoordinates(innerElement!, copiedElement as HTMLDivElement);\n};\n\nexport default getElementSelection;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SlotsHelper.js","sourceRoot":"","sources":["../../src/util/SlotsHelper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,GAAG,CAAC,IAAU,EAAE,EAAE;IAClC,6CAA6C;IAC7C,IAAI,CAAC,CAAC,IAAI,YAAY,WAAW,CAAC,EAAE;QACnC,OAAO,SAAS,CAAC;KACjB;IAED,kGAAkG;IAClG,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,IAAI,EAAE;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;KAC/B;IAED,iCAAiC;IACjC,OAAO,SAAS,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,IAAU,EAAE,EAAE;IACtC,IAAI,IAAI,YAAY,eAAe,EAAE;QACpC,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,YAAY,WAAW,CAAC,CAAC;KACzF;IAED,OAAO,CAAC,IAAI,CAAC,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,QAAqB,EAAE,EAAE;IACrD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAiB,CAAC,CAAC;AAC7F,CAAC,CAAC;AAEF,OAAO,EACN,WAAW,EACX,eAAe,EACf,mBAAmB,GACnB,CAAC","sourcesContent":["/**\n * Determines the slot to which a node should be assigned\n * @param node Text node or HTML element\n * @returns {string}\n */\nconst getSlotName = (node: Node) => {\n\t// Text nodes can only go to the default slot\n\tif (!(node instanceof HTMLElement)) {\n\t\treturn \"default\";\n\t}\n\n\t// Discover the slot based on the real slot name (f.e. footer => footer, or content-32 => content)\n\tconst slot = node.getAttribute(\"slot\");\n\tif (slot) {\n\t\tconst match = slot.match(/^(.+?)-\\d+$/);\n\t\treturn match ? match[1] : slot;\n\t}\n\n\t// Use default slot as a fallback\n\treturn \"default\";\n};\n\nconst getSlottedNodes = (node: Node) => {\n\tif (node instanceof HTMLSlotElement) {\n\t\treturn node.assignedNodes({ flatten: true }).filter(item => item instanceof HTMLElement);\n\t}\n\n\treturn [node];\n};\n\nconst getSlottedNodesList = (nodeList: Array<Node>) => {\n\treturn nodeList.reduce((acc, curr) => acc.concat(getSlottedNodes(curr)), [] as Array<Node>);\n};\n\nexport {\n\tgetSlotName,\n\tgetSlottedNodes,\n\tgetSlottedNodesList,\n};\n"]}
1
+ {"version":3,"file":"SlotsHelper.js","sourceRoot":"","sources":["../../src/util/SlotsHelper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,GAAG,CAAC,IAAU,EAAE,EAAE;IAClC,6CAA6C;IAC7C,IAAI,CAAC,CAAC,IAAI,YAAY,WAAW,CAAC,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,kGAAkG;IAClG,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,IAAI,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,iCAAiC;IACjC,OAAO,SAAS,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,IAAU,EAAE,EAAE;IACtC,IAAI,IAAI,YAAY,eAAe,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,YAAY,WAAW,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,QAAqB,EAAE,EAAE;IACrD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAiB,CAAC,CAAC;AAC7F,CAAC,CAAC;AAEF,OAAO,EACN,WAAW,EACX,eAAe,EACf,mBAAmB,GACnB,CAAC","sourcesContent":["/**\n * Determines the slot to which a node should be assigned\n * @param node Text node or HTML element\n * @returns {string}\n */\nconst getSlotName = (node: Node) => {\n\t// Text nodes can only go to the default slot\n\tif (!(node instanceof HTMLElement)) {\n\t\treturn \"default\";\n\t}\n\n\t// Discover the slot based on the real slot name (f.e. footer => footer, or content-32 => content)\n\tconst slot = node.getAttribute(\"slot\");\n\tif (slot) {\n\t\tconst match = slot.match(/^(.+?)-\\d+$/);\n\t\treturn match ? match[1] : slot;\n\t}\n\n\t// Use default slot as a fallback\n\treturn \"default\";\n};\n\nconst getSlottedNodes = (node: Node) => {\n\tif (node instanceof HTMLSlotElement) {\n\t\treturn node.assignedNodes({ flatten: true }).filter(item => item instanceof HTMLElement);\n\t}\n\n\treturn [node];\n};\n\nconst getSlottedNodesList = (nodeList: Array<Node>) => {\n\treturn nodeList.reduce((acc, curr) => acc.concat(getSlottedNodes(curr)), [] as Array<Node>);\n};\n\nexport {\n\tgetSlotName,\n\tgetSlottedNodes,\n\tgetSlottedNodesList,\n};\n"]}
@@ -1,3 +1,5 @@
1
1
  declare const kebabToCamelCase: (string: string) => string;
2
2
  declare const camelToKebabCase: (string: string) => string;
3
- export { kebabToCamelCase, camelToKebabCase };
3
+ declare const pascalToKebabCase: (pascalString: string) => string;
4
+ declare const kebabToPascalCase: (src: string) => string;
5
+ export { kebabToCamelCase, camelToKebabCase, pascalToKebabCase, kebabToPascalCase, };
@@ -1,5 +1,6 @@
1
1
  const kebabToCamelMap = new Map();
2
2
  const camelToKebabMap = new Map();
3
+ const kebabToPascalMap = new Map();
3
4
  const kebabToCamelCase = (string) => {
4
5
  if (!kebabToCamelMap.has(string)) {
5
6
  const result = toCamelCase(string.split("-"));
@@ -14,10 +15,23 @@ const camelToKebabCase = (string) => {
14
15
  }
15
16
  return camelToKebabMap.get(string);
16
17
  };
18
+ const pascalToKebabCase = (pascalString) => {
19
+ return camelToKebabCase(pascalString);
20
+ };
17
21
  const toCamelCase = (parts) => {
18
22
  return parts.map((string, index) => {
19
23
  return index === 0 ? string.toLowerCase() : string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
20
24
  }).join("");
21
25
  };
22
- export { kebabToCamelCase, camelToKebabCase };
26
+ const kebabToPascalCase = (src) => {
27
+ const cachedName = kebabToPascalMap.get(src);
28
+ if (cachedName) {
29
+ return cachedName;
30
+ }
31
+ const camelStr = kebabToCamelCase(src);
32
+ const result = camelStr.charAt(0).toUpperCase() + camelStr.slice(1);
33
+ kebabToPascalMap.set(src, result);
34
+ return result;
35
+ };
36
+ export { kebabToCamelCase, camelToKebabCase, pascalToKebabCase, kebabToPascalCase, };
23
37
  //# sourceMappingURL=StringHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StringHelper.js","sourceRoot":"","sources":["../../src/util/StringHelper.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;AAClD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;AAElD,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,EAAE;IAC3C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QACjC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC;IACD,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,EAAE;IAC3C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QACxE,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC;IACD,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAE,EAAE;IAC5C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAClC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5G,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC","sourcesContent":["const kebabToCamelMap = new Map<string, string>();\nconst camelToKebabMap = new Map<string, string>();\n\nconst kebabToCamelCase = (string: string) => {\n\tif (!kebabToCamelMap.has(string)) {\n\t\tconst result = toCamelCase(string.split(\"-\"));\n\t\tkebabToCamelMap.set(string, result);\n\t}\n\treturn kebabToCamelMap.get(string)!;\n};\n\nconst camelToKebabCase = (string: string) => {\n\tif (!camelToKebabMap.has(string)) {\n\t\tconst result = string.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\t\tcamelToKebabMap.set(string, result);\n\t}\n\treturn camelToKebabMap.get(string)!;\n};\n\nconst toCamelCase = (parts: Array<string>) => {\n\treturn parts.map((string, index) => {\n\t\treturn index === 0 ? string.toLowerCase() : string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n\t}).join(\"\");\n};\n\nexport { kebabToCamelCase, camelToKebabCase };\n"]}
1
+ {"version":3,"file":"StringHelper.js","sourceRoot":"","sources":["../../src/util/StringHelper.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;AAClD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;AAClD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEnD,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,EAAE;IAC3C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,EAAE;IAC3C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QACxE,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,YAAoB,EAAE,EAAE;IAClD,OAAO,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAE,EAAE;IAC5C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAClC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5G,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,EAAE;IACzC,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpE,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GACjB,CAAC","sourcesContent":["const kebabToCamelMap = new Map<string, string>();\nconst camelToKebabMap = new Map<string, string>();\nconst kebabToPascalMap = new Map<string, string>();\n\nconst kebabToCamelCase = (string: string) => {\n\tif (!kebabToCamelMap.has(string)) {\n\t\tconst result = toCamelCase(string.split(\"-\"));\n\t\tkebabToCamelMap.set(string, result);\n\t}\n\treturn kebabToCamelMap.get(string)!;\n};\n\nconst camelToKebabCase = (string: string) => {\n\tif (!camelToKebabMap.has(string)) {\n\t\tconst result = string.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\t\tcamelToKebabMap.set(string, result);\n\t}\n\treturn camelToKebabMap.get(string)!;\n};\n\nconst pascalToKebabCase = (pascalString: string) => {\n\treturn camelToKebabCase(pascalString);\n};\n\nconst toCamelCase = (parts: Array<string>) => {\n\treturn parts.map((string, index) => {\n\t\treturn index === 0 ? string.toLowerCase() : string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n\t}).join(\"\");\n};\n\nconst kebabToPascalCase = (src: string) => {\n\tconst cachedName = kebabToPascalMap.get(src);\n\tif (cachedName) {\n\t\treturn cachedName;\n\t}\n\n\tconst camelStr = kebabToCamelCase(src);\n\tconst result = camelStr.charAt(0).toUpperCase() + camelStr.slice(1);\n\tkebabToPascalMap.set(src, result);\n\treturn result;\n};\n\nexport {\n\tkebabToCamelCase,\n\tcamelToKebabCase,\n\tpascalToKebabCase,\n\tkebabToPascalCase,\n};\n"]}
@@ -29,18 +29,10 @@ const getTabbables = (nodes, tabbables) => {
29
29
  if (currentNode.nodeType === Node.TEXT_NODE || currentNode.nodeType === Node.COMMENT_NODE) {
30
30
  return;
31
31
  }
32
- let currentElement = currentNode;
32
+ const currentElement = currentNode;
33
33
  if (currentElement.hasAttribute("data-sap-no-tab-ref")) {
34
34
  return;
35
35
  }
36
- if (currentElement.shadowRoot) {
37
- // get the root node of the ShadowDom (1st none style tag)
38
- const children = currentElement.shadowRoot.children;
39
- currentElement = Array.from(children).find(node => node.tagName !== "STYLE");
40
- }
41
- if (!currentElement) {
42
- return;
43
- }
44
36
  if (isElementTabbable(currentElement)) {
45
37
  tabbableElements.push(currentElement);
46
38
  }
@@ -48,7 +40,8 @@ const getTabbables = (nodes, tabbables) => {
48
40
  getTabbables(currentElement.assignedNodes(), tabbableElements);
49
41
  }
50
42
  else {
51
- getTabbables([...currentElement.children], tabbableElements);
43
+ const children = currentElement.shadowRoot ? currentElement.shadowRoot.children : currentElement.children;
44
+ getTabbables([...children], tabbableElements);
52
45
  }
53
46
  });
54
47
  return tabbableElements;