@ui5/webcomponents-base 0.0.0-e7dd012d7 → 0.0.0-e818f286e

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 (353) hide show
  1. package/.eslintignore +3 -0
  2. package/CHANGELOG.md +314 -0
  3. package/README.md +53 -7
  4. package/bundle.esm.js +20 -20
  5. package/dist/AssetRegistry.js +8 -9
  6. package/dist/Boot.js +59 -0
  7. package/dist/CSP.js +59 -0
  8. package/dist/CustomElementsRegistry.js +60 -4
  9. package/dist/CustomElementsScope.js +20 -98
  10. package/dist/CustomElementsScopeUtils.js +108 -0
  11. package/dist/DOMObserver.js +65 -0
  12. package/dist/Device.js +71 -773
  13. package/dist/EventProvider.js +30 -26
  14. package/dist/FeaturesRegistry.js +4 -1
  15. package/dist/FontFace.js +7 -95
  16. package/dist/InitialConfiguration.js +37 -21
  17. package/dist/Keys.js +98 -0
  18. package/dist/ManagedStyles.js +83 -0
  19. package/dist/MediaRange.js +109 -0
  20. package/dist/{util/parseProperties.js → PropertiesFileFormat.js} +6 -0
  21. package/dist/Render.js +175 -0
  22. package/dist/RenderScheduler.js +16 -138
  23. package/dist/Runtimes.js +107 -0
  24. package/dist/StaticArea.js +1 -29
  25. package/dist/StaticAreaItem.js +58 -65
  26. package/dist/SystemCSSVars.js +4 -25
  27. package/dist/UI5Element.js +315 -382
  28. package/dist/UI5ElementMetadata.js +132 -17
  29. package/dist/asset-registries/Icons.js +117 -14
  30. package/dist/asset-registries/Illustrations.js +30 -0
  31. package/dist/asset-registries/LocaleData.js +97 -68
  32. package/dist/asset-registries/Themes.js +29 -35
  33. package/dist/asset-registries/i18n.js +62 -49
  34. package/dist/assets/bundle.esm.81ba431e.js +43 -0
  35. package/dist/assets-meta/IconCollectionsAlias.js +18 -0
  36. package/dist/config/Icons.js +52 -0
  37. package/dist/config/Language.js +18 -20
  38. package/dist/config/Theme.js +25 -0
  39. package/dist/css/BusyIndicator.css +80 -0
  40. package/dist/css/FontFace.css +75 -0
  41. package/dist/css/OverrideFontFace.css +32 -0
  42. package/dist/css/SystemCSSVars.css +17 -0
  43. package/dist/delegate/ItemNavigation.js +238 -201
  44. package/dist/delegate/ResizeHandler.js +78 -37
  45. package/dist/delegate/ScrollEnablement.js +49 -20
  46. package/dist/features/F6Navigation.js +110 -0
  47. package/dist/features/OpenUI5Enablement.js +119 -0
  48. package/dist/features/OpenUI5Support.js +41 -6
  49. package/dist/generated/AssetParameters.js +1 -1
  50. package/dist/generated/VersionInfo.js +10 -0
  51. package/dist/generated/css/BusyIndicator.css.js +5 -0
  52. package/dist/generated/css/FontFace.css.js +5 -0
  53. package/dist/generated/css/OverrideFontFace.css.js +5 -0
  54. package/dist/generated/css/SystemCSSVars.css.js +5 -0
  55. package/dist/i18nBundle.js +38 -4
  56. package/dist/locale/applyDirection.js +6 -4
  57. package/dist/locale/directionChange.js +32 -0
  58. package/dist/locale/getEffectiveDir.js +28 -0
  59. package/dist/locale/languageChange.js +1 -1
  60. package/dist/renderer/LitRenderer.js +39 -18
  61. package/dist/renderer/directives/style-map.js +72 -0
  62. package/dist/renderer/executeTemplate.js +19 -2
  63. package/dist/sap/base/Log.js +241 -0
  64. package/dist/sap/base/assert.js +8 -0
  65. package/dist/sap/base/security/URLListValidator.js +148 -0
  66. package/dist/sap/base/security/encodeCSS.js +14 -0
  67. package/dist/sap/base/security/encodeXML.js +23 -0
  68. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  69. package/dist/sap/base/strings/toHex.js +8 -0
  70. package/dist/sap/base/util/now.js +7 -0
  71. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  72. package/dist/theming/CustomStyle.js +25 -5
  73. package/dist/theming/applyTheme.js +11 -16
  74. package/dist/theming/getConstructableStyle.js +7 -6
  75. package/dist/theming/getEffectiveLinksHrefs.js +27 -0
  76. package/dist/theming/getEffectiveStyle.js +24 -8
  77. package/dist/theming/getStylesString.js +4 -2
  78. package/dist/theming/getThemeDesignerTheme.js +25 -5
  79. package/dist/theming/preloadLinks.js +23 -0
  80. package/dist/types/CSSColor.js +9 -0
  81. package/dist/types/CalendarType.js +1 -1
  82. package/dist/types/DataType.js +13 -1
  83. package/dist/types/Float.js +4 -0
  84. package/dist/types/Integer.js +4 -0
  85. package/dist/types/InvisibleMessageMode.js +30 -0
  86. package/dist/types/ItemNavigationBehavior.js +2 -7
  87. package/dist/types/PopupState.js +1 -1
  88. package/dist/types/ValueState.js +1 -1
  89. package/dist/updateShadowRoot.js +29 -0
  90. package/dist/util/AriaLabelHelper.js +6 -8
  91. package/dist/util/Caret.js +32 -0
  92. package/dist/util/ColorConversion.js +398 -0
  93. package/dist/util/FocusableElements.js +22 -9
  94. package/dist/util/HTMLSanitizer.js +7 -0
  95. package/dist/util/InvisibleMessage.js +69 -0
  96. package/dist/util/PopupUtils.js +93 -0
  97. package/dist/util/SlotsHelper.js +43 -0
  98. package/dist/util/TabbableElements.js +5 -1
  99. package/dist/util/arraysAreEqual.js +15 -0
  100. package/dist/util/clamp.js +12 -0
  101. package/dist/util/createLinkInHead.js +19 -0
  102. package/dist/util/debounce.js +17 -0
  103. package/dist/util/escapeRegex.js +10 -0
  104. package/dist/util/generateHighlightedMarkup.js +42 -0
  105. package/dist/util/getActiveElement.js +11 -0
  106. package/dist/util/getClassCopy.js +10 -0
  107. package/dist/util/getEffectiveContentDensity.js +5 -0
  108. package/dist/util/getNormalizedTarget.js +16 -0
  109. package/dist/util/isDefaultSlotProvided.js +11 -0
  110. package/dist/util/isElementInView.js +15 -0
  111. package/dist/util/isNodeHidden.js +1 -1
  112. package/dist/util/isNodeTabbable.js +4 -4
  113. package/hash.txt +1 -0
  114. package/index.js +1 -1
  115. package/lib/generate-asset-parameters/index.js +8 -5
  116. package/lib/generate-styles/index.js +26 -0
  117. package/lib/generate-version-info/index.js +32 -0
  118. package/package-scripts.js +37 -28
  119. package/package.json +20 -13
  120. package/src/AssetRegistry.js +8 -9
  121. package/src/Boot.js +59 -0
  122. package/src/CSP.js +59 -0
  123. package/src/CustomElementsRegistry.js +60 -4
  124. package/src/CustomElementsScope.js +20 -98
  125. package/src/CustomElementsScopeUtils.js +108 -0
  126. package/src/DOMObserver.js +65 -0
  127. package/src/Device.js +71 -773
  128. package/src/EventProvider.js +30 -26
  129. package/src/FeaturesRegistry.js +4 -1
  130. package/src/FontFace.js +7 -95
  131. package/src/InitialConfiguration.js +37 -21
  132. package/src/Keys.js +98 -0
  133. package/src/ManagedStyles.js +83 -0
  134. package/src/MediaRange.js +109 -0
  135. package/src/{util/parseProperties.js → PropertiesFileFormat.js} +6 -0
  136. package/src/Render.js +175 -0
  137. package/src/RenderScheduler.js +16 -138
  138. package/src/Runtimes.js +107 -0
  139. package/src/StaticArea.js +1 -29
  140. package/src/StaticAreaItem.js +58 -65
  141. package/src/SystemCSSVars.js +4 -25
  142. package/src/UI5Element.js +315 -382
  143. package/src/UI5ElementMetadata.js +132 -17
  144. package/src/asset-registries/Icons.js +117 -14
  145. package/src/asset-registries/Illustrations.js +30 -0
  146. package/src/asset-registries/LocaleData.js +97 -68
  147. package/src/asset-registries/Themes.js +29 -35
  148. package/src/asset-registries/i18n.js +62 -49
  149. package/src/assets-meta/IconCollectionsAlias.js +18 -0
  150. package/src/config/Icons.js +52 -0
  151. package/src/config/Language.js +18 -20
  152. package/src/config/Theme.js +25 -0
  153. package/src/css/BusyIndicator.css +80 -0
  154. package/src/css/FontFace.css +75 -0
  155. package/src/css/OverrideFontFace.css +32 -0
  156. package/src/css/SystemCSSVars.css +17 -0
  157. package/src/delegate/ItemNavigation.js +238 -201
  158. package/src/delegate/ResizeHandler.js +78 -37
  159. package/src/delegate/ScrollEnablement.js +49 -20
  160. package/src/features/F6Navigation.js +110 -0
  161. package/src/features/OpenUI5Enablement.js +119 -0
  162. package/src/features/OpenUI5Support.js +41 -6
  163. package/src/i18nBundle.js +38 -4
  164. package/src/locale/applyDirection.js +6 -4
  165. package/src/locale/directionChange.js +32 -0
  166. package/src/locale/getEffectiveDir.js +28 -0
  167. package/src/locale/languageChange.js +1 -1
  168. package/src/renderer/LitRenderer.js +39 -18
  169. package/src/renderer/directives/style-map.js +72 -0
  170. package/src/renderer/executeTemplate.js +19 -2
  171. package/src/theming/CustomStyle.js +25 -5
  172. package/src/theming/applyTheme.js +11 -16
  173. package/src/theming/getConstructableStyle.js +7 -6
  174. package/src/theming/getEffectiveLinksHrefs.js +27 -0
  175. package/src/theming/getEffectiveStyle.js +24 -8
  176. package/src/theming/getStylesString.js +4 -2
  177. package/src/theming/getThemeDesignerTheme.js +25 -5
  178. package/src/theming/preloadLinks.js +23 -0
  179. package/src/types/CSSColor.js +9 -0
  180. package/src/types/CalendarType.js +1 -1
  181. package/src/types/DataType.js +13 -1
  182. package/src/types/Float.js +4 -0
  183. package/src/types/Integer.js +4 -0
  184. package/src/types/InvisibleMessageMode.js +30 -0
  185. package/src/types/ItemNavigationBehavior.js +2 -7
  186. package/src/types/PopupState.js +1 -1
  187. package/src/types/ValueState.js +1 -1
  188. package/src/updateShadowRoot.js +29 -0
  189. package/src/util/AriaLabelHelper.js +6 -8
  190. package/src/util/Caret.js +32 -0
  191. package/src/util/ColorConversion.js +398 -0
  192. package/src/util/FocusableElements.js +22 -9
  193. package/src/util/HTMLSanitizer.js +7 -0
  194. package/src/util/InvisibleMessage.js +69 -0
  195. package/src/util/PopupUtils.js +93 -0
  196. package/src/util/SlotsHelper.js +43 -0
  197. package/src/util/TabbableElements.js +5 -1
  198. package/src/util/arraysAreEqual.js +15 -0
  199. package/src/util/clamp.js +12 -0
  200. package/src/util/createLinkInHead.js +19 -0
  201. package/src/util/debounce.js +17 -0
  202. package/src/util/escapeRegex.js +10 -0
  203. package/src/util/generateHighlightedMarkup.js +42 -0
  204. package/src/util/getActiveElement.js +11 -0
  205. package/src/util/getClassCopy.js +10 -0
  206. package/src/util/getEffectiveContentDensity.js +5 -0
  207. package/src/util/getNormalizedTarget.js +16 -0
  208. package/src/util/isDefaultSlotProvided.js +11 -0
  209. package/src/util/isElementInView.js +15 -0
  210. package/src/util/isNodeHidden.js +1 -1
  211. package/src/util/isNodeTabbable.js +4 -4
  212. package/used-modules.txt +10 -0
  213. package/bundle.es5.js +0 -28
  214. package/config/.eslintrc.js +0 -3
  215. package/config/rollup.config.js +0 -1
  216. package/dist/SVGIconRegistry.js +0 -73
  217. package/dist/boot.js +0 -34
  218. package/dist/compatibility/DOMObserver.js +0 -62
  219. package/dist/compatibility/patchNodeValue.js +0 -24
  220. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  221. package/dist/config/AssetsPath.js +0 -17
  222. package/dist/delegate/CustomResize.js +0 -78
  223. package/dist/delegate/NativeResize.js +0 -45
  224. package/dist/features/PropertiesFormatSupport.js +0 -8
  225. package/dist/features/browsersupport/Edge.js +0 -6
  226. package/dist/features/browsersupport/IE11.js +0 -42
  227. package/dist/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  228. package/dist/renderer/ifDefined.js +0 -21
  229. package/dist/renderer/scopeHTML.js +0 -32
  230. package/dist/resources/bundle.es5.js +0 -212
  231. package/dist/resources/bundle.es5.js.map +0 -1
  232. package/dist/resources/bundle.esm.js +0 -129
  233. package/dist/resources/bundle.esm.js.map +0 -1
  234. package/dist/test-resources/assets/Themes.js +0 -17
  235. package/dist/test-resources/elements/Child.js +0 -35
  236. package/dist/test-resources/elements/Generic.js +0 -84
  237. package/dist/test-resources/elements/GenericExt.js +0 -26
  238. package/dist/test-resources/elements/NoShadowDOM.js +0 -13
  239. package/dist/test-resources/elements/Parent.js +0 -37
  240. package/dist/test-resources/elements/WithStaticArea.js +0 -76
  241. package/dist/test-resources/pages/AllTestElements.html +0 -42
  242. package/dist/test-resources/pages/Configuration.html +0 -20
  243. package/dist/test-resources/pages/ConfigurationScript.html +0 -36
  244. package/dist/test-resources/pages/assets/messagebundle_de.properties +0 -1
  245. package/dist/test-resources/pages/assets/messagebundle_en.properties +0 -1
  246. package/dist/test-resources/pages/assets/messagebundle_es.properties +0 -1
  247. package/dist/test-resources/pages/assets/messagebundle_fr.properties +0 -1
  248. package/dist/test-resources/pages/i18n.html +0 -40
  249. package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -25
  250. package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -61
  251. package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -45
  252. package/dist/test-resources/specs/CustomTheme.spec.js +0 -25
  253. package/dist/test-resources/specs/StaticArea.spec.js +0 -34
  254. package/dist/test-resources/specs/Theming.spec.js +0 -31
  255. package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -258
  256. package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -96
  257. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -101
  258. package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -40
  259. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -12
  260. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -65
  261. package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -22
  262. package/dist/test-resources/specs/UI5ElementSlots.js +0 -34
  263. package/dist/theming/CSSVarsPonyfill.js +0 -68
  264. package/dist/theming/adaptCSSForIE.js +0 -95
  265. package/dist/theming/createComponentStyleTag.js +0 -54
  266. package/dist/theming/createThemePropertiesStyleTag.js +0 -20
  267. package/dist/thirdparty/Array.from.js +0 -16
  268. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  269. package/dist/thirdparty/Array.prototype.find.js +0 -46
  270. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  271. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  272. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  273. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  274. package/dist/thirdparty/Number.isInteger.js +0 -5
  275. package/dist/thirdparty/Number.isNaN.js +0 -1
  276. package/dist/thirdparty/Number.parseFloat.js +0 -1
  277. package/dist/thirdparty/Number.parseInt.js +0 -1
  278. package/dist/thirdparty/Object.assign.js +0 -31
  279. package/dist/thirdparty/Object.entries.js +0 -11
  280. package/dist/thirdparty/Symbol.js +0 -2
  281. package/dist/thirdparty/WeakSet.js +0 -27
  282. package/dist/thirdparty/es6-string-methods.js +0 -182
  283. package/dist/thirdparty/events-polyfills.js +0 -89
  284. package/dist/thirdparty/fetch.js +0 -1
  285. package/dist/thirdparty/template.js +0 -600
  286. package/dist/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  287. package/dist/util/EffectiveAssetPath.js +0 -27
  288. package/dist/util/encodeCSS.js +0 -24
  289. package/dist/util/findNodeOwner.js +0 -35
  290. package/dist/util/isSlot.js +0 -3
  291. package/dist/webcomponentsjs/LICENSE.md +0 -19
  292. package/dist/webcomponentsjs/README.md +0 -229
  293. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  294. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  295. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  296. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  297. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  298. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  299. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  300. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  301. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  302. package/dist/webcomponentsjs/package.json +0 -46
  303. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  304. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  305. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  306. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  307. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  308. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  309. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  310. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  311. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  312. package/src/SVGIconRegistry.js +0 -73
  313. package/src/boot.js +0 -34
  314. package/src/compatibility/DOMObserver.js +0 -62
  315. package/src/compatibility/patchNodeValue.js +0 -24
  316. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  317. package/src/config/AssetsPath.js +0 -17
  318. package/src/delegate/CustomResize.js +0 -78
  319. package/src/delegate/NativeResize.js +0 -45
  320. package/src/features/PropertiesFormatSupport.js +0 -8
  321. package/src/features/browsersupport/Edge.js +0 -6
  322. package/src/features/browsersupport/IE11.js +0 -42
  323. package/src/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  324. package/src/renderer/ifDefined.js +0 -21
  325. package/src/renderer/scopeHTML.js +0 -32
  326. package/src/theming/CSSVarsPonyfill.js +0 -68
  327. package/src/theming/adaptCSSForIE.js +0 -95
  328. package/src/theming/createComponentStyleTag.js +0 -54
  329. package/src/theming/createThemePropertiesStyleTag.js +0 -20
  330. package/src/thirdparty/Array.from.js +0 -16
  331. package/src/thirdparty/Array.prototype.fill.js +0 -44
  332. package/src/thirdparty/Array.prototype.find.js +0 -46
  333. package/src/thirdparty/Array.prototype.includes.js +0 -51
  334. package/src/thirdparty/Element.prototype.closest.js +0 -11
  335. package/src/thirdparty/Element.prototype.matches.js +0 -6
  336. package/src/thirdparty/Map.prototype.keys.js +0 -9
  337. package/src/thirdparty/Number.isInteger.js +0 -5
  338. package/src/thirdparty/Number.isNaN.js +0 -1
  339. package/src/thirdparty/Number.parseFloat.js +0 -1
  340. package/src/thirdparty/Number.parseInt.js +0 -1
  341. package/src/thirdparty/Object.assign.js +0 -31
  342. package/src/thirdparty/Object.entries.js +0 -11
  343. package/src/thirdparty/Symbol.js +0 -2
  344. package/src/thirdparty/WeakSet.js +0 -27
  345. package/src/thirdparty/es6-string-methods.js +0 -182
  346. package/src/thirdparty/events-polyfills.js +0 -89
  347. package/src/thirdparty/fetch.js +0 -1
  348. package/src/thirdparty/template.js +0 -600
  349. package/src/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  350. package/src/util/EffectiveAssetPath.js +0 -27
  351. package/src/util/encodeCSS.js +0 -24
  352. package/src/util/findNodeOwner.js +0 -35
  353. package/src/util/isSlot.js +0 -3
@@ -1,185 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
4
- * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
5
- * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6
- * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7
- * Code distributed by Google as part of the polymer project is also
8
- * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9
- */
10
-
11
- (function() {
12
- 'use strict';
13
-
14
- /**
15
- * Basic flow of the loader process
16
- *
17
- * There are 4 flows the loader can take when booting up
18
- *
19
- * - Synchronous script, no polyfills needed
20
- * - wait for `DOMContentLoaded`
21
- * - fire WCR event, as there could not be any callbacks passed to `waitFor`
22
- *
23
- * - Synchronous script, polyfills needed
24
- * - document.write the polyfill bundle
25
- * - wait on the `load` event of the bundle to batch Custom Element upgrades
26
- * - wait for `DOMContentLoaded`
27
- * - run callbacks passed to `waitFor`
28
- * - fire WCR event
29
- *
30
- * - Asynchronous script, no polyfills needed
31
- * - wait for `DOMContentLoaded`
32
- * - run callbacks passed to `waitFor`
33
- * - fire WCR event
34
- *
35
- * - Asynchronous script, polyfills needed
36
- * - Append the polyfill bundle script
37
- * - wait for `load` event of the bundle
38
- * - batch Custom Element Upgrades
39
- * - run callbacks pass to `waitFor`
40
- * - fire WCR event
41
- */
42
-
43
- var polyfillsLoaded = false;
44
- var whenLoadedFns = [];
45
- var allowUpgrades = false;
46
- var flushFn;
47
-
48
- function fireEvent() {
49
- window.WebComponents.ready = true;
50
- document.dispatchEvent(new CustomEvent('WebComponentsReady', { bubbles: true }));
51
- }
52
-
53
- function batchCustomElements() {
54
- if (window.customElements && customElements.polyfillWrapFlushCallback) {
55
- customElements.polyfillWrapFlushCallback(function (flushCallback) {
56
- flushFn = flushCallback;
57
- if (allowUpgrades) {
58
- flushFn();
59
- }
60
- });
61
- }
62
- }
63
-
64
- function asyncReady() {
65
- batchCustomElements();
66
- ready();
67
- }
68
-
69
- function ready() {
70
- // bootstrap <template> elements before custom elements
71
- if (window.HTMLTemplateElement && HTMLTemplateElement.bootstrap) {
72
- HTMLTemplateElement.bootstrap(window.document);
73
- }
74
- polyfillsLoaded = true;
75
- runWhenLoadedFns().then(fireEvent);
76
- }
77
-
78
- function runWhenLoadedFns() {
79
- allowUpgrades = false;
80
- var fnsMap = whenLoadedFns.map(function(fn) {
81
- return fn instanceof Function ? fn() : fn;
82
- });
83
- whenLoadedFns = [];
84
- return Promise.all(fnsMap).then(function() {
85
- allowUpgrades = true;
86
- flushFn && flushFn();
87
- }).catch(function(err) {
88
- console.error(err);
89
- });
90
- }
91
-
92
- window.WebComponents = window.WebComponents || {};
93
- window.WebComponents.ready = window.WebComponents.ready || false;
94
- window.WebComponents.waitFor = window.WebComponents.waitFor || function(waitFn) {
95
- if (!waitFn) {
96
- return;
97
- }
98
- whenLoadedFns.push(waitFn);
99
- if (polyfillsLoaded) {
100
- runWhenLoadedFns();
101
- }
102
- };
103
- window.WebComponents._batchCustomElements = batchCustomElements;
104
-
105
- var name = 'webcomponents-loader.js';
106
- // Feature detect which polyfill needs to be imported.
107
- var polyfills = [];
108
- if (!('attachShadow' in Element.prototype && 'getRootNode' in Element.prototype) ||
109
- (window.ShadyDOM && window.ShadyDOM.force)) {
110
- polyfills.push('sd');
111
- }
112
- if (!window.customElements || window.customElements.forcePolyfill) {
113
- polyfills.push('ce');
114
- }
115
-
116
- var needsTemplate = (function() {
117
- // no real <template> because no `content` property (IE and older browsers)
118
- var t = document.createElement('template');
119
- if (!('content' in t)) {
120
- return true;
121
- }
122
- // broken doc fragment (older Edge)
123
- if (!(t.content.cloneNode() instanceof DocumentFragment)) {
124
- return true;
125
- }
126
- // broken <template> cloning (Edge up to at least version 17)
127
- var t2 = document.createElement('template');
128
- t2.content.appendChild(document.createElement('div'));
129
- t.content.appendChild(t2);
130
- var clone = t.cloneNode(true);
131
- return (clone.content.childNodes.length === 0 ||
132
- clone.content.firstChild.content.childNodes.length === 0);
133
- })();
134
-
135
- // NOTE: any browser that does not have template or ES6 features
136
- // must load the full suite of polyfills.
137
- if (!window.Promise || !Array.from || !window.URL || !window.Symbol || needsTemplate) {
138
- polyfills = ['sd-ce-pf'];
139
- }
140
-
141
- if (polyfills.length) {
142
- var url;
143
- var polyfillFile = 'bundles/webcomponents-' + polyfills.join('-') + '.js';
144
-
145
- // Load it from the right place.
146
- if (window.WebComponents.root) {
147
- url = window.WebComponents.root + polyfillFile;
148
- } else {
149
- var script = document.querySelector('script[src*="' + name +'"]');
150
- // Load it from the right place.
151
- url = script.src.replace(name, polyfillFile);
152
- }
153
-
154
- var newScript = document.createElement('script');
155
- newScript.src = url;
156
- // if readyState is 'loading', this script is synchronous
157
- if (document.readyState === 'loading') {
158
- // make sure custom elements are batched whenever parser gets to the injected script
159
- newScript.setAttribute('onload', 'window.WebComponents._batchCustomElements()');
160
- document.write(newScript.outerHTML);
161
- document.addEventListener('DOMContentLoaded', ready);
162
- } else {
163
- newScript.addEventListener('load', function () {
164
- asyncReady();
165
- });
166
- newScript.addEventListener('error', function () {
167
- throw new Error('Could not load polyfill bundle' + url);
168
- });
169
- document.head.appendChild(newScript);
170
- }
171
- } else {
172
- // if readyState is 'complete', script is loaded imperatively on a spec-compliant browser, so just fire WCR
173
- if (document.readyState === 'complete') {
174
- polyfillsLoaded = true;
175
- fireEvent();
176
- } else {
177
- // this script may come between DCL and load, so listen for both, and cancel load listener if DCL fires
178
- window.addEventListener('load', ready);
179
- window.addEventListener('DOMContentLoaded', function() {
180
- window.removeEventListener('load', ready);
181
- ready();
182
- })
183
- }
184
- }
185
- })();
@@ -1,73 +0,0 @@
1
- import getSharedResource from "./getSharedResource.js";
2
-
3
- const registry = getSharedResource("SVGIcons.registry", new Map());
4
- const iconCollectionPromises = getSharedResource("SVGIcons.promises", new Map());
5
-
6
- const ICON_NOT_FOUND = "ICON_NOT_FOUND";
7
- const DEFAULT_COLLECTION = "SAP-icons";
8
-
9
- const parseName = name => {
10
- // silently support ui5-compatible URIs
11
- if (name.startsWith("sap-icon://")) {
12
- name = name.replace("sap-icon://", "");
13
- }
14
-
15
- let collection;
16
- [name, collection] = name.split("/").reverse();
17
- collection = collection || DEFAULT_COLLECTION;
18
- // hardcoded alias in case icon explorer is used, resolve `SAP-icons-TNT` to `tnt`
19
- // aliases can be made a feature in the future if more collections need it or more aliases are needed.
20
- if (collection === "SAP-icons-TNT") {
21
- collection = "tnt";
22
- }
23
- const registryKey = `${collection}/${name}`;
24
- return { name, collection, registryKey };
25
- };
26
-
27
-
28
- const registerIcon = (name, { pathData, ltr, accData, collection } = {}) => { // eslint-disable-line
29
- if (!collection) {
30
- collection = DEFAULT_COLLECTION;
31
- }
32
-
33
- const key = `${collection}/${name}`;
34
- registry.set(key, { pathData, ltr, accData });
35
- };
36
-
37
- const getIconDataSync = nameProp => {
38
- const { registryKey } = parseName(nameProp);
39
- return registry.get(registryKey);
40
- };
41
-
42
- const getIconData = async nameProp => {
43
- const { collection, registryKey } = parseName(nameProp);
44
-
45
- if (!iconCollectionPromises.has(collection)) {
46
- iconCollectionPromises.set(collection, Promise.resolve(ICON_NOT_FOUND));
47
- }
48
-
49
- const iconData = await iconCollectionPromises.get(collection);
50
-
51
- if (iconData === ICON_NOT_FOUND) {
52
- return iconData;
53
- }
54
-
55
- return registry.get(registryKey);
56
- };
57
-
58
- const getRegisteredNames = async () => {
59
- await Promise.all(Array.from(iconCollectionPromises.values()));
60
- return Array.from(registry.keys());
61
- };
62
-
63
- const registerCollectionPromise = (collection, promise) => {
64
- iconCollectionPromises.set(collection, promise);
65
- };
66
-
67
- export {
68
- getIconData,
69
- getIconDataSync,
70
- registerIcon,
71
- getRegisteredNames,
72
- registerCollectionPromise,
73
- };
package/src/boot.js DELETED
@@ -1,34 +0,0 @@
1
- import whenDOMReady from "./util/whenDOMReady.js";
2
- import insertFontFace from "./FontFace.js";
3
- import insertSystemCSSVars from "./SystemCSSVars.js";
4
- import { getTheme } from "./config/Theme.js";
5
- import applyTheme from "./theming/applyTheme.js";
6
- import whenPolyfillLoaded from "./compatibility/whenPolyfillLoaded.js";
7
- import { getFeature } from "./FeaturesRegistry.js";
8
-
9
- let bootPromise;
10
-
11
- const boot = () => {
12
- if (bootPromise) {
13
- return bootPromise;
14
- }
15
-
16
- bootPromise = new Promise(async resolve => {
17
- const OpenUI5Support = getFeature("OpenUI5Support");
18
- if (OpenUI5Support) {
19
- await OpenUI5Support.init();
20
- }
21
-
22
- await whenDOMReady();
23
- await applyTheme(getTheme());
24
- OpenUI5Support && OpenUI5Support.attachListeners();
25
- insertFontFace();
26
- insertSystemCSSVars();
27
- await whenPolyfillLoaded();
28
- resolve();
29
- });
30
-
31
- return bootPromise;
32
- };
33
-
34
- export default boot;
@@ -1,62 +0,0 @@
1
- // Shorthands
2
- const w = window;
3
-
4
- // Map of observer objects per dom node
5
- const observers = new WeakMap();
6
-
7
- /**
8
- * Implements universal DOM node observation methods.
9
- */
10
- class DOMObserver {
11
- constructor() {
12
- throw new Error("Static class");
13
- }
14
-
15
- /**
16
- * This function abstracts out mutation observer usage inside shadow DOM.
17
- * For native shadow DOM the native mutation observer is used.
18
- * When the polyfill is used, the observeChildren ShadyDOM method is used instead.
19
- *
20
- * @throws Exception
21
- * Note: does not allow several mutation observers per node. If there is a valid use-case, this behavior can be changed.
22
- *
23
- * @param node
24
- * @param callback
25
- * @param options - Only used for the native mutation observer
26
- */
27
- static observeDOMNode(node, callback, options) {
28
- let observerObject = observers.get(node);
29
- if (observerObject) {
30
- throw new Error("A mutation/ShadyDOM observer is already assigned to this node.");
31
- }
32
-
33
- if (w.ShadyDOM) {
34
- observerObject = w.ShadyDOM.observeChildren(node, callback);
35
- } else {
36
- observerObject = new MutationObserver(callback);
37
- observerObject.observe(node, options);
38
- }
39
-
40
- observers.set(node, observerObject);
41
- }
42
-
43
- /**
44
- * De-registers the mutation observer, depending on its type
45
- * @param node
46
- */
47
- static unobserveDOMNode(node) {
48
- const observerObject = observers.get(node);
49
- if (!observerObject) {
50
- return;
51
- }
52
-
53
- if (observerObject instanceof MutationObserver) {
54
- observerObject.disconnect();
55
- } else {
56
- w.ShadyDOM.unobserveChildren(observerObject);
57
- }
58
- observers.delete(node);
59
- }
60
- }
61
-
62
- export default DOMObserver;
@@ -1,24 +0,0 @@
1
- const patchNodeValue = () => {
2
- if (!window.ShadyDOM) {
3
- return;
4
- }
5
- const nativeNodeValue = Object.getOwnPropertyDescriptor(Node.prototype, "nodeValue");
6
- Object.defineProperty(Node.prototype, "nodeValue", {
7
- get() {
8
- return nativeNodeValue.get.apply(this);
9
- },
10
- set(text) {
11
- nativeNodeValue.set.apply(this, arguments); // eslint-disable-line
12
-
13
- // Call manually the mutation observer callback
14
- const parentElement = this.parentNode;
15
- if (parentElement instanceof HTMLElement && parentElement.isUI5Element) {
16
- parentElement._processChildren();
17
- }
18
- },
19
- });
20
- };
21
-
22
- patchNodeValue();
23
-
24
- export default {};
@@ -1,26 +0,0 @@
1
- let polyfillLoadedPromise;
2
-
3
- const whenPolyfillLoaded = () => {
4
- if (polyfillLoadedPromise) {
5
- return polyfillLoadedPromise;
6
- }
7
-
8
- polyfillLoadedPromise = new Promise(resolve => {
9
- if (window.WebComponents
10
- && !window.WebComponents.ready
11
- && window.WebComponents.waitFor) {
12
- // the polyfill loader is present
13
- window.WebComponents.waitFor(() => {
14
- // the polyfills are loaded, safe to execute code depending on their APIs
15
- resolve();
16
- });
17
- } else {
18
- // polyfill loader missing, modern browsers only
19
- resolve();
20
- }
21
- });
22
-
23
- return polyfillLoadedPromise;
24
- };
25
-
26
- export default whenPolyfillLoaded;
@@ -1,17 +0,0 @@
1
- import { getAssetsPath as getConfiguredAssetsPath } from "../InitialConfiguration.js";
2
-
3
- let assetsPath;
4
-
5
- const getAssetsPath = () => {
6
- if (assetsPath === undefined) {
7
- assetsPath = getConfiguredAssetsPath();
8
- }
9
-
10
- return assetsPath;
11
- };
12
-
13
- const setAssetsPath = newAssetsPath => {
14
- assetsPath = newAssetsPath;
15
- };
16
-
17
- export { getAssetsPath, setAssetsPath }; // eslint-disable-line
@@ -1,78 +0,0 @@
1
- const INTERVAL = 300;
2
-
3
- class CustomResize {
4
- static initialize() {
5
- CustomResize.initialized = false;
6
- CustomResize.resizeInterval = undefined;
7
- CustomResize.resizeListeners = new Map();
8
- }
9
-
10
- static attachListener(ref, callback) {
11
- const observedObject = CustomResize.resizeListeners.get(ref);
12
- const existingCallbacks = observedObject ? observedObject.callbacks : [];
13
-
14
- CustomResize.resizeListeners.set(ref, {
15
- width: ref ? ref.offsetWidth : 0,
16
- height: ref ? ref.offsetHeight : 0,
17
- callbacks: existingCallbacks.concat(callback),
18
- });
19
-
20
- CustomResize.initListener();
21
- }
22
-
23
- static initListener() {
24
- if (CustomResize.resizeListeners.size > 0 && !CustomResize.initialized) {
25
- CustomResize.resizeInterval = setInterval(CustomResize.checkListeners.bind(CustomResize), INTERVAL);
26
- }
27
- }
28
-
29
- static checkListeners() {
30
- CustomResize.resizeListeners.forEach((entry, ref) => {
31
- const changed = CustomResize.checkSizes(entry, ref);
32
-
33
- if (changed || (entry && !entry._hasBeenRendered)) {
34
- CustomResize.updateSizes(entry, ref.offsetWidth, ref.offsetHeight);
35
- entry.callbacks.forEach(el => el());
36
- entry._hasBeenRendered = true;
37
- }
38
- });
39
- }
40
-
41
- static updateSizes(sizes, newWidth, newHeight) {
42
- sizes.width = newWidth;
43
- sizes.height = newHeight;
44
- }
45
-
46
- static checkSizes(entry, ref) {
47
- const oldHeight = entry.height;
48
- const oldWidth = entry.width;
49
- const newHeight = ref.offsetHeight;
50
- const newWidth = ref.offsetWidth;
51
-
52
- return ((oldHeight !== newHeight) || oldWidth !== newWidth);
53
- }
54
-
55
- static detachListener(ref, callback) {
56
- const listenerObject = CustomResize.resizeListeners.get(ref);
57
- const callbacks = listenerObject ? listenerObject.callbacks : [];
58
- const filteredCallbacks = callbacks.filter(fn => fn !== callback);
59
-
60
- if (!listenerObject || (callbacks.length === filteredCallbacks.length && callbacks.length !== 0)) {
61
- return;
62
- }
63
-
64
- CustomResize.resizeListeners.set(ref, Object.assign(listenerObject, { callbacks: filteredCallbacks }));
65
-
66
- if (!filteredCallbacks.length) {
67
- listenerObject.callbacks = null;
68
- CustomResize.resizeListeners.delete(ref);
69
- }
70
-
71
- if (CustomResize.resizeListeners.size === 0) {
72
- CustomResize.initialized = false;
73
- clearInterval(CustomResize.resizeInterval);
74
- }
75
- }
76
- }
77
-
78
- export default CustomResize;
@@ -1,45 +0,0 @@
1
- class NativeResize {
2
- static initialize() {
3
- NativeResize.resizeObserver = new window.ResizeObserver(entries => {
4
- // call attached callbacks
5
- entries.forEach(entry => {
6
- const callbacks = NativeResize.observedObjects.get(entry.target);
7
-
8
- callbacks.forEach(el => el());
9
- });
10
- });
11
-
12
- NativeResize.observedObjects = new Map();
13
- }
14
-
15
- static attachListener(ref, callback) {
16
- const observedDOMs = NativeResize.observedObjects;
17
- const callbacks = observedDOMs.get(ref) || [];
18
-
19
- // if no callbacks has been added for this ref - start observing it
20
- if (!callbacks.length) {
21
- NativeResize.resizeObserver.observe(ref);
22
- }
23
-
24
- // save the callbacks in an array
25
- observedDOMs.set(ref, [...callbacks, callback]);
26
- }
27
-
28
- static detachListener(ref, callback) {
29
- const callbacks = NativeResize.observedObjects.get(ref) || [];
30
- const filteredCallbacks = callbacks.filter(fn => fn !== callback);
31
-
32
- if (!callbacks.length || (callbacks.length === filteredCallbacks.length && callbacks.length !== 0)) {
33
- return;
34
- }
35
-
36
- NativeResize.observedObjects.set(ref, filteredCallbacks);
37
-
38
- if (!filteredCallbacks.length) {
39
- NativeResize.resizeObserver.unobserve(ref);
40
- NativeResize.observedObjects.delete(ref);
41
- }
42
- }
43
- }
44
-
45
- export default NativeResize;
@@ -1,8 +0,0 @@
1
- import { registerFeature } from "../FeaturesRegistry.js";
2
- import parseProperties from "../util/parseProperties.js";
3
-
4
- const PropertiesFormatSupport = {
5
- parser: parseProperties,
6
- };
7
-
8
- registerFeature("PropertiesFormatSupport", PropertiesFormatSupport);
@@ -1,6 +0,0 @@
1
- // URLSearchParams
2
- import "url-search-params-polyfill/index.js";
3
-
4
-
5
- // "pseudo mutation observer" fix for nodeValue
6
- import "../../compatibility/patchNodeValue.js";
@@ -1,42 +0,0 @@
1
- // CSS Custom Properties
2
- import cssVars from "css-vars-ponyfill/dist/css-vars-ponyfill.esm.js";
3
-
4
- // String
5
- import "../../thirdparty/es6-string-methods.js";
6
-
7
- // Object
8
- import "../../thirdparty/Object.entries.js";
9
-
10
- // Array
11
- import "../../thirdparty/Array.prototype.fill.js";
12
- import "../../thirdparty/Array.prototype.find.js";
13
- import "../../thirdparty/Array.prototype.includes.js";
14
-
15
- // Map
16
- import "../../thirdparty/Map.prototype.keys.js";
17
-
18
- // Number
19
- import "../../thirdparty/Number.isInteger.js";
20
- import "../../thirdparty/Number.isNaN.js";
21
- import "../../thirdparty/Number.parseFloat.js";
22
- import "../../thirdparty/Number.parseInt.js";
23
-
24
- // Element
25
- import "../../thirdparty/Element.prototype.matches.js";
26
- import "../../thirdparty/Element.prototype.closest.js";
27
-
28
- // WeakSet
29
- import "../../thirdparty/WeakSet.js";
30
-
31
- // fetch
32
- import "../../thirdparty/fetch.js";
33
-
34
- // async - await
35
- import "regenerator-runtime/runtime.js";
36
-
37
- // Plus all polyfills needed for Edge are also needed for IE11
38
- import "./Edge.js";
39
-
40
- window.CSSVarsPonyfill = {
41
- cssVars,
42
- };
@@ -1,5 +0,0 @@
1
- // All web components polyfills (including platform) with "window" passed as argument to the iife
2
- import "../../thirdparty/webcomponents-sd-ce-pf.js";
3
-
4
- // All IE11 polyfills, needed by the project itself
5
- import "./IE11.js";
@@ -1,21 +0,0 @@
1
- import {
2
- AttributePart,
3
- directive,
4
- noChange,
5
- } from "lit-html/lit-html.js";
6
-
7
- /*
8
- lit-html directive that removes and attribute if it is undefined
9
- */
10
- export default directive(value => part => {
11
- if ((value === undefined) && part instanceof AttributePart) {
12
- if (value !== part.value) {
13
- const name = part.committer.name;
14
- part.committer.element.removeAttribute(name);
15
- }
16
- } else if (part.committer && part.committer.element && part.committer.element.getAttribute(part.committer.name) === value) {
17
- part.setValue(noChange);
18
- } else {
19
- part.setValue(value);
20
- }
21
- });
@@ -1,32 +0,0 @@
1
- const cache = new Map();
2
-
3
- const scopeHTML = (strings, tags, suffix) => {
4
- if (suffix && tags && tags.length) {
5
- strings = strings.map(string => {
6
- if (cache.has(string)) {
7
- return cache.get(string);
8
- }
9
-
10
- /*
11
- const allTags = [...string.matchAll(/<(ui5-.*?)[> ]/g)].map(x => x[1]);
12
- allTags.forEach(t => {
13
- if (!tags.includes(t)) {
14
- throw new Error(`${t} not found in ${string}`);
15
- // console.log(t, " in ", string);
16
- }
17
- });
18
- */
19
-
20
- let result = string;
21
- tags.forEach(tag => {
22
- result = result.replace(new RegExp(`(</?)(${tag})(/?[> \t\n])`, "g"), `$1$2-${suffix}$3`);
23
- });
24
- cache.set(string, result);
25
- return result;
26
- });
27
- }
28
-
29
- return strings;
30
- };
31
-
32
- export default scopeHTML;