@ui5/webcomponents-base 0.0.0-aeb93167c → 0.0.0-b053ad005

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 (305) hide show
  1. package/.eslintignore +3 -0
  2. package/CHANGELOG.md +84 -0
  3. package/README.md +26 -2
  4. package/bundle.esm.js +13 -11
  5. package/dist/AssetRegistry.js +8 -9
  6. package/dist/Boot.js +43 -0
  7. package/dist/CSP.js +59 -0
  8. package/dist/DOMObserver.js +65 -0
  9. package/dist/Device.js +62 -778
  10. package/dist/EventProvider.js +30 -26
  11. package/dist/FontFace.js +7 -95
  12. package/dist/InitialConfiguration.js +37 -21
  13. package/dist/Keys.js +51 -0
  14. package/dist/ManagedStyles.js +83 -0
  15. package/dist/MediaRange.js +109 -0
  16. package/{src/util/parseProperties.js → dist/PropertiesFileFormat.js} +6 -0
  17. package/dist/Render.js +175 -0
  18. package/dist/RenderScheduler.js +16 -138
  19. package/dist/StaticArea.js +1 -29
  20. package/dist/StaticAreaItem.js +56 -66
  21. package/dist/SystemCSSVars.js +4 -25
  22. package/dist/UI5Element.js +301 -383
  23. package/dist/UI5ElementMetadata.js +123 -16
  24. package/dist/asset-registries/Icons.js +121 -14
  25. package/dist/asset-registries/Illustrations.js +30 -0
  26. package/dist/asset-registries/LocaleData.js +91 -67
  27. package/dist/asset-registries/Themes.js +23 -33
  28. package/dist/asset-registries/i18n.js +61 -50
  29. package/dist/assets-meta/IconCollectionsAlias.js +18 -0
  30. package/dist/config/Language.js +18 -20
  31. package/dist/config/Theme.js +14 -0
  32. package/dist/css/FontFace.css +45 -0
  33. package/dist/css/OverrideFontFace.css +32 -0
  34. package/dist/css/SystemCSSVars.css +17 -0
  35. package/dist/delegate/ItemNavigation.js +233 -201
  36. package/dist/delegate/ResizeHandler.js +78 -37
  37. package/dist/delegate/ScrollEnablement.js +49 -20
  38. package/dist/features/OpenUI5Support.js +41 -6
  39. package/dist/generated/AssetParameters.js +1 -1
  40. package/dist/generated/css/FontFace.css.js +5 -0
  41. package/dist/generated/css/OverrideFontFace.css.js +5 -0
  42. package/dist/generated/css/SystemCSSVars.css.js +5 -0
  43. package/dist/i18nBundle.js +38 -4
  44. package/dist/isLegacyBrowser.js +3 -0
  45. package/dist/locale/applyDirection.js +6 -4
  46. package/dist/locale/directionChange.js +32 -0
  47. package/dist/locale/getEffectiveDir.js +28 -0
  48. package/dist/locale/languageChange.js +1 -1
  49. package/dist/renderer/LitRenderer.js +24 -21
  50. package/dist/renderer/directives/style-map.js +72 -0
  51. package/dist/resources/bundle.esm.js +17 -109
  52. package/dist/resources/bundle.esm.js.map +1 -1
  53. package/dist/sap/base/Log.js +241 -0
  54. package/dist/sap/base/assert.js +8 -0
  55. package/dist/sap/base/security/URLListValidator.js +148 -0
  56. package/dist/sap/base/security/sanitizeHTML.js +16 -0
  57. package/dist/sap/base/util/now.js +7 -0
  58. package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3585 -0
  59. package/dist/test-resources/assets/Themes.js +8 -8
  60. package/dist/test-resources/elements/Parent.js +6 -2
  61. package/dist/test-resources/elements/WithStaticArea.js +2 -1
  62. package/dist/test-resources/pages/AllTestElements.html +3 -3
  63. package/dist/test-resources/pages/Configuration.html +0 -2
  64. package/dist/test-resources/pages/ConfigurationScript.html +0 -2
  65. package/dist/test-resources/pages/i18n.html +2 -9
  66. package/dist/test-resources/specs/ConfigurationChange.spec.js +10 -8
  67. package/dist/test-resources/specs/ConfigurationScript.spec.js +25 -23
  68. package/dist/test-resources/specs/ConfigurationURL.spec.js +65 -17
  69. package/dist/test-resources/specs/CustomTheme.spec.js +9 -7
  70. package/dist/test-resources/specs/EventProvider.spec.js +63 -0
  71. package/dist/test-resources/specs/StaticArea.spec.js +56 -12
  72. package/dist/test-resources/specs/Theming.spec.js +12 -10
  73. package/dist/test-resources/specs/UI5ElementInvalidation.js +54 -70
  74. package/dist/test-resources/specs/UI5ElementLifecycle.js +17 -15
  75. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +25 -51
  76. package/dist/test-resources/specs/UI5ElementMetadataExt.js +9 -7
  77. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +7 -5
  78. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +37 -35
  79. package/dist/test-resources/specs/UI5ElementShadowDOM.js +10 -8
  80. package/dist/test-resources/specs/UI5ElementSlots.js +10 -8
  81. package/dist/theming/CustomStyle.js +2 -2
  82. package/dist/theming/applyTheme.js +5 -14
  83. package/dist/theming/getConstructableStyle.js +7 -6
  84. package/dist/theming/getEffectiveLinksHrefs.js +20 -0
  85. package/dist/theming/getEffectiveStyle.js +15 -8
  86. package/dist/theming/getStylesString.js +4 -2
  87. package/dist/theming/getThemeDesignerTheme.js +2 -1
  88. package/dist/theming/preloadLinks.js +23 -0
  89. package/dist/types/CSSColor.js +9 -0
  90. package/dist/types/CalendarType.js +1 -1
  91. package/dist/types/DataType.js +13 -1
  92. package/dist/types/Float.js +4 -0
  93. package/dist/types/Integer.js +4 -0
  94. package/dist/types/InvisibleMessageMode.js +30 -0
  95. package/dist/types/ItemNavigationBehavior.js +2 -7
  96. package/dist/types/PopupState.js +1 -1
  97. package/dist/types/ValueState.js +1 -1
  98. package/dist/updateShadowRoot.js +30 -0
  99. package/dist/util/AriaLabelHelper.js +4 -4
  100. package/dist/util/Caret.js +45 -0
  101. package/dist/util/ColorConversion.js +370 -0
  102. package/dist/util/FocusableElements.js +17 -6
  103. package/dist/util/HTMLSanitizer.js +7 -0
  104. package/dist/util/InvisibleMessage.js +58 -0
  105. package/dist/util/PopupUtils.js +93 -0
  106. package/dist/util/SlotsHelper.js +43 -0
  107. package/dist/util/TabbableElements.js +1 -1
  108. package/dist/util/arraysAreEqual.js +15 -0
  109. package/dist/util/clamp.js +12 -0
  110. package/dist/util/createLinkInHead.js +19 -0
  111. package/dist/util/debounce.js +17 -0
  112. package/dist/util/getActiveElement.js +11 -0
  113. package/dist/util/getClassCopy.js +10 -0
  114. package/dist/util/getEffectiveContentDensity.js +5 -0
  115. package/dist/util/isElementInView.js +15 -0
  116. package/dist/util/isNodeTabbable.js +4 -4
  117. package/hash.txt +1 -0
  118. package/index.js +1 -1
  119. package/lib/generate-asset-parameters/index.js +0 -1
  120. package/lib/generate-styles/index.js +18 -0
  121. package/package-scripts.js +37 -19
  122. package/package.json +19 -13
  123. package/src/AssetRegistry.js +8 -9
  124. package/src/Boot.js +43 -0
  125. package/src/CSP.js +59 -0
  126. package/src/DOMObserver.js +65 -0
  127. package/src/Device.js +62 -778
  128. package/src/EventProvider.js +30 -26
  129. package/src/FontFace.js +7 -95
  130. package/src/InitialConfiguration.js +37 -21
  131. package/src/Keys.js +51 -0
  132. package/src/ManagedStyles.js +83 -0
  133. package/src/MediaRange.js +109 -0
  134. package/{dist/util/parseProperties.js → src/PropertiesFileFormat.js} +6 -0
  135. package/src/Render.js +175 -0
  136. package/src/RenderScheduler.js +16 -138
  137. package/src/StaticArea.js +1 -29
  138. package/src/StaticAreaItem.js +56 -66
  139. package/src/SystemCSSVars.js +4 -25
  140. package/src/UI5Element.js +301 -383
  141. package/src/UI5ElementMetadata.js +123 -16
  142. package/src/asset-registries/Icons.js +121 -14
  143. package/src/asset-registries/Illustrations.js +30 -0
  144. package/src/asset-registries/LocaleData.js +91 -67
  145. package/src/asset-registries/Themes.js +23 -33
  146. package/src/asset-registries/i18n.js +61 -50
  147. package/src/assets-meta/IconCollectionsAlias.js +18 -0
  148. package/src/config/Language.js +18 -20
  149. package/src/config/Theme.js +14 -0
  150. package/src/css/FontFace.css +45 -0
  151. package/src/css/OverrideFontFace.css +32 -0
  152. package/src/css/SystemCSSVars.css +17 -0
  153. package/src/delegate/ItemNavigation.js +233 -201
  154. package/src/delegate/ResizeHandler.js +78 -37
  155. package/src/delegate/ScrollEnablement.js +49 -20
  156. package/src/features/OpenUI5Support.js +41 -6
  157. package/src/i18nBundle.js +38 -4
  158. package/src/isLegacyBrowser.js +3 -0
  159. package/src/locale/applyDirection.js +6 -4
  160. package/src/locale/directionChange.js +32 -0
  161. package/src/locale/getEffectiveDir.js +28 -0
  162. package/src/locale/languageChange.js +1 -1
  163. package/src/renderer/LitRenderer.js +24 -21
  164. package/src/renderer/directives/style-map.js +72 -0
  165. package/src/theming/CustomStyle.js +2 -2
  166. package/src/theming/applyTheme.js +5 -14
  167. package/src/theming/getConstructableStyle.js +7 -6
  168. package/src/theming/getEffectiveLinksHrefs.js +20 -0
  169. package/src/theming/getEffectiveStyle.js +15 -8
  170. package/src/theming/getStylesString.js +4 -2
  171. package/src/theming/getThemeDesignerTheme.js +2 -1
  172. package/src/theming/preloadLinks.js +23 -0
  173. package/src/types/CSSColor.js +9 -0
  174. package/src/types/CalendarType.js +1 -1
  175. package/src/types/DataType.js +13 -1
  176. package/src/types/Float.js +4 -0
  177. package/src/types/Integer.js +4 -0
  178. package/src/types/InvisibleMessageMode.js +30 -0
  179. package/src/types/ItemNavigationBehavior.js +2 -7
  180. package/src/types/PopupState.js +1 -1
  181. package/src/types/ValueState.js +1 -1
  182. package/src/updateShadowRoot.js +30 -0
  183. package/src/util/AriaLabelHelper.js +4 -4
  184. package/src/util/Caret.js +45 -0
  185. package/src/util/ColorConversion.js +370 -0
  186. package/src/util/FocusableElements.js +17 -6
  187. package/src/util/HTMLSanitizer.js +7 -0
  188. package/src/util/InvisibleMessage.js +58 -0
  189. package/src/util/PopupUtils.js +93 -0
  190. package/src/util/SlotsHelper.js +43 -0
  191. package/src/util/TabbableElements.js +1 -1
  192. package/src/util/arraysAreEqual.js +15 -0
  193. package/src/util/clamp.js +12 -0
  194. package/src/util/createLinkInHead.js +19 -0
  195. package/src/util/debounce.js +17 -0
  196. package/src/util/getActiveElement.js +11 -0
  197. package/src/util/getClassCopy.js +10 -0
  198. package/src/util/getEffectiveContentDensity.js +5 -0
  199. package/src/util/isElementInView.js +15 -0
  200. package/src/util/isNodeTabbable.js +4 -4
  201. package/used-modules.txt +7 -0
  202. package/bundle.es5.js +0 -28
  203. package/dist/SVGIconRegistry.js +0 -73
  204. package/dist/boot.js +0 -34
  205. package/dist/compatibility/DOMObserver.js +0 -62
  206. package/dist/compatibility/patchNodeValue.js +0 -24
  207. package/dist/compatibility/whenPolyfillLoaded.js +0 -26
  208. package/dist/config/AssetsPath.js +0 -17
  209. package/dist/delegate/CustomResize.js +0 -78
  210. package/dist/delegate/NativeResize.js +0 -45
  211. package/dist/features/PropertiesFormatSupport.js +0 -8
  212. package/dist/features/browsersupport/Edge.js +0 -6
  213. package/dist/features/browsersupport/IE11.js +0 -42
  214. package/dist/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  215. package/dist/renderer/ifDefined.js +0 -21
  216. package/dist/renderer/scopeHTML.js +0 -32
  217. package/dist/resources/bundle.es5.js +0 -212
  218. package/dist/resources/bundle.es5.js.map +0 -1
  219. package/dist/theming/CSSVarsPonyfill.js +0 -68
  220. package/dist/theming/adaptCSSForIE.js +0 -95
  221. package/dist/theming/createComponentStyleTag.js +0 -54
  222. package/dist/theming/createThemePropertiesStyleTag.js +0 -20
  223. package/dist/thirdparty/Array.from.js +0 -16
  224. package/dist/thirdparty/Array.prototype.fill.js +0 -44
  225. package/dist/thirdparty/Array.prototype.find.js +0 -46
  226. package/dist/thirdparty/Array.prototype.includes.js +0 -51
  227. package/dist/thirdparty/Element.prototype.closest.js +0 -11
  228. package/dist/thirdparty/Element.prototype.matches.js +0 -6
  229. package/dist/thirdparty/Map.prototype.keys.js +0 -9
  230. package/dist/thirdparty/Number.isInteger.js +0 -5
  231. package/dist/thirdparty/Number.isNaN.js +0 -1
  232. package/dist/thirdparty/Number.parseFloat.js +0 -1
  233. package/dist/thirdparty/Number.parseInt.js +0 -1
  234. package/dist/thirdparty/Object.assign.js +0 -31
  235. package/dist/thirdparty/Object.entries.js +0 -11
  236. package/dist/thirdparty/Symbol.js +0 -2
  237. package/dist/thirdparty/WeakSet.js +0 -27
  238. package/dist/thirdparty/es6-string-methods.js +0 -182
  239. package/dist/thirdparty/events-polyfills.js +0 -89
  240. package/dist/thirdparty/fetch.js +0 -1
  241. package/dist/thirdparty/template.js +0 -600
  242. package/dist/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  243. package/dist/util/EffectiveAssetPath.js +0 -27
  244. package/dist/util/isSlot.js +0 -3
  245. package/dist/webcomponentsjs/LICENSE.md +0 -19
  246. package/dist/webcomponentsjs/README.md +0 -229
  247. package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
  248. package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
  249. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
  250. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
  251. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
  252. package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
  253. package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
  254. package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
  255. package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
  256. package/dist/webcomponentsjs/package.json +0 -46
  257. package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
  258. package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
  259. package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
  260. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
  261. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
  262. package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
  263. package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
  264. package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
  265. package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
  266. package/src/SVGIconRegistry.js +0 -73
  267. package/src/boot.js +0 -34
  268. package/src/compatibility/DOMObserver.js +0 -62
  269. package/src/compatibility/patchNodeValue.js +0 -24
  270. package/src/compatibility/whenPolyfillLoaded.js +0 -26
  271. package/src/config/AssetsPath.js +0 -17
  272. package/src/delegate/CustomResize.js +0 -78
  273. package/src/delegate/NativeResize.js +0 -45
  274. package/src/features/PropertiesFormatSupport.js +0 -8
  275. package/src/features/browsersupport/Edge.js +0 -6
  276. package/src/features/browsersupport/IE11.js +0 -42
  277. package/src/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
  278. package/src/renderer/ifDefined.js +0 -21
  279. package/src/renderer/scopeHTML.js +0 -32
  280. package/src/theming/CSSVarsPonyfill.js +0 -68
  281. package/src/theming/adaptCSSForIE.js +0 -95
  282. package/src/theming/createComponentStyleTag.js +0 -54
  283. package/src/theming/createThemePropertiesStyleTag.js +0 -20
  284. package/src/thirdparty/Array.from.js +0 -16
  285. package/src/thirdparty/Array.prototype.fill.js +0 -44
  286. package/src/thirdparty/Array.prototype.find.js +0 -46
  287. package/src/thirdparty/Array.prototype.includes.js +0 -51
  288. package/src/thirdparty/Element.prototype.closest.js +0 -11
  289. package/src/thirdparty/Element.prototype.matches.js +0 -6
  290. package/src/thirdparty/Map.prototype.keys.js +0 -9
  291. package/src/thirdparty/Number.isInteger.js +0 -5
  292. package/src/thirdparty/Number.isNaN.js +0 -1
  293. package/src/thirdparty/Number.parseFloat.js +0 -1
  294. package/src/thirdparty/Number.parseInt.js +0 -1
  295. package/src/thirdparty/Object.assign.js +0 -31
  296. package/src/thirdparty/Object.entries.js +0 -11
  297. package/src/thirdparty/Symbol.js +0 -2
  298. package/src/thirdparty/WeakSet.js +0 -27
  299. package/src/thirdparty/es6-string-methods.js +0 -182
  300. package/src/thirdparty/events-polyfills.js +0 -89
  301. package/src/thirdparty/fetch.js +0 -1
  302. package/src/thirdparty/template.js +0 -600
  303. package/src/thirdparty/webcomponents-sd-ce-pf.js +0 -318
  304. package/src/util/EffectiveAssetPath.js +0 -27
  305. package/src/util/isSlot.js +0 -3
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Delays function execution by given threshold.
3
+ * @param fn {Function}
4
+ * @param delay {Integer}
5
+ */
6
+
7
+ let debounceInterval = null;
8
+
9
+ const debounce = (fn, delay) => {
10
+ clearTimeout(debounceInterval);
11
+ debounceInterval = setTimeout(() => {
12
+ debounceInterval = null;
13
+ fn();
14
+ }, delay);
15
+ };
16
+
17
+ export default debounce;
@@ -0,0 +1,11 @@
1
+ const getActiveElement = () => {
2
+ let element = document.activeElement;
3
+
4
+ while (element && element.shadowRoot && element.shadowRoot.activeElement) {
5
+ element = element.shadowRoot.activeElement;
6
+ }
7
+
8
+ return element;
9
+ };
10
+
11
+ export default getActiveElement;
@@ -0,0 +1,10 @@
1
+ const getClassCopy = (klass, constructorCallback) => {
2
+ return class classCopy extends klass {
3
+ constructor() {
4
+ super();
5
+ constructorCallback && constructorCallback();
6
+ }
7
+ };
8
+ };
9
+
10
+ export default getClassCopy;
@@ -0,0 +1,5 @@
1
+ const GLOBAL_CONTENT_DENSITY_CSS_VAR = "--_ui5_content_density";
2
+
3
+ const getEffectiveContentDensity = el => getComputedStyle(el).getPropertyValue(GLOBAL_CONTENT_DENSITY_CSS_VAR);
4
+
5
+ export default getEffectiveContentDensity;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Determines if the element is within the viewport.
3
+ * @param el {HTMLElement}
4
+ */
5
+ const isElementInView = el => {
6
+ const rect = el.getBoundingClientRect();
7
+
8
+ return (
9
+ rect.top >= 0 && rect.left >= 0
10
+ && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight)
11
+ && rect.right <= (window.innerWidth || document.documentElement.clientWidth)
12
+ );
13
+ };
14
+
15
+ export default isElementInView;
@@ -15,14 +15,14 @@ const isNodeTabbable = node => {
15
15
  return false;
16
16
  }
17
17
 
18
- if (nodeName === "a" || /input|select|textarea|button|object/.test(nodeName)) {
19
- return !node.disabled;
20
- }
21
-
22
18
  const tabIndex = node.getAttribute("tabindex");
23
19
  if (tabIndex !== null && tabIndex !== undefined) {
24
20
  return parseInt(tabIndex) >= 0;
25
21
  }
22
+
23
+ if (nodeName === "a" || /input|select|textarea|button|object/.test(nodeName)) {
24
+ return !node.disabled;
25
+ }
26
26
  };
27
27
 
28
28
  export default isNodeTabbable;
package/hash.txt ADDED
@@ -0,0 +1 @@
1
+ u7lf+BYiNgLsA+5UYY5y8xTW0Po=
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import UI5Element from "./src/UI5Element.js";
1
+ import UI5Element from "./dist/UI5Element.js";
2
2
 
3
3
  export default UI5Element;
4
4
  export { UI5Element };
@@ -1,5 +1,4 @@
1
1
  const fs = require('fs');
2
- const path = require('path');
3
2
  const mkdirp = require('mkdirp');
4
3
  const assets = require('@ui5/webcomponents-tools/assets-meta.js');
5
4
 
@@ -0,0 +1,18 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const mkdirp = require('mkdirp');
4
+ const CleanCSS = require('clean-css');
5
+
6
+ mkdirp.sync("dist/generated/css/");
7
+ fs.readdirSync("src/css/").filter(file => file.endsWith(".css")).forEach(file => {
8
+ let content = fs.readFileSync(path.join("src/css/", file));
9
+ const res = new CleanCSS().minify(`${content}`);
10
+ content = `export default {
11
+ packageName: "@ui5/webcomponents-base",
12
+ fileName: "${file}",
13
+ content: \`${res.styles}\`
14
+ };`;
15
+
16
+ fs.writeFileSync(path.join("dist/generated/css/", `${file}.js`), content);
17
+ });
18
+
@@ -1,44 +1,62 @@
1
- const path = require("path");
2
1
  const resolve = require("resolve");
3
2
 
4
- const serveConfig = `../tools/components-package/serve.json`;
5
- const port = `9191`;
6
-
7
3
  const assetParametersScript = resolve.sync("@ui5/webcomponents-base/lib/generate-asset-parameters/index.js");
4
+ const stylesScript = resolve.sync("@ui5/webcomponents-base/lib/generate-styles/index.js");
5
+ const serve = resolve.sync("@ui5/webcomponents-tools/lib/serve/index.js");
6
+ const generateHash = resolve.sync("@ui5/webcomponents-tools/lib/hash/generate.js");
7
+ const hashIsUpToDate = resolve.sync("@ui5/webcomponents-tools/lib/hash/upToDate.js");
8
+ const copyUsedModules = resolve.sync("@ui5/webcomponents-tools/lib/copy-list/index.js");
9
+ const replaceGlobalCore = resolve.sync("@ui5/webcomponents-tools/lib/replace-global-core/index.js");
10
+ const esmAbsToRel = resolve.sync("@ui5/webcomponents-tools/lib/esm-abs-to-rel/index.js");
11
+ const UP_TO_DATE = `node "${hashIsUpToDate}" dist/ hash.txt && echo "Up to date."`;
8
12
 
9
13
  const scripts = {
10
- clean: "rimraf dist",
14
+ clean: "rimraf dist && rimraf .port",
11
15
  lint: "eslint . --config config/.eslintrc.js",
12
- prepare: "nps clean copy generateAssetParameters",
16
+ prepare: "nps clean integrate copy generateAssetParameters generateStyles",
17
+ integrate: {
18
+ default: "nps integrate.copy-used-modules integrate.copy-overlay integrate.replace-amd integrate.replace-export-true integrate.replace-export-false integrate.amd-to-es6 integrate.replace-global-core-usage integrate.esm-abs-to-rel integrate.third-party",
19
+ "copy-used-modules": `node "${copyUsedModules}" ./used-modules.txt dist/`,
20
+ "copy-overlay": `copy-and-watch "overlay/**/*.js" dist/`,
21
+ "replace-amd": "replace-in-file sap.ui.define define dist/**/*.js",
22
+ "replace-export-true": `replace-in-file ", /* bExport= */ true" "" dist/**/*.js`,
23
+ "replace-export-false": `replace-in-file ", /* bExport= */ false" "" dist/**/*.js`,
24
+ "amd-to-es6": "amdtoes6 --src=dist/ --replace --glob=**/*.js",
25
+ "replace-global-core-usage": `node "${replaceGlobalCore}" dist/`,
26
+ "esm-abs-to-rel": `node "${esmAbsToRel}" dist/ dist/`,
27
+ "third-party": {
28
+ default: "nps integrate.third-party.copy integrate.third-party.fix",
29
+ copy: "mkdirp dist/sap/ui/thirdparty/ && copy-and-watch ../../node_modules/@openui5/sap.ui.core/src/sap/ui/thirdparty/caja-html-sanitizer.js dist/sap/ui/thirdparty/",
30
+ fix: "replace-in-file 240 xA0 dist/sap/ui/thirdparty/caja-html-sanitizer.js"
31
+ },
32
+ },
13
33
  build: {
14
- default: "nps lint prepare build.bundle",
15
- bundle: "rollup --config config/rollup.config.js --environment ES5_BUILD",
34
+ default: `${UP_TO_DATE} || nps lint prepare build.bundle hash`,
35
+ bundle: "rollup --config config/rollup.config.js",
16
36
  },
17
37
  copy: {
18
- default: "nps copy.src copy.test copy.webcomponents-polyfill",
19
- src: "copy-and-watch \"src/**/*.js\" dist/",
20
- test: "copy-and-watch \"test/**/*.*\" dist/test-resources",
21
- "webcomponents-polyfill": "copy-and-watch \"../../node_modules/@webcomponents/webcomponentsjs/**/*.*\" dist/webcomponentsjs/",
38
+ default: "nps copy.src copy.test",
39
+ src: `copy-and-watch "src/**/*.{js,css}" dist/`,
40
+ test: `copy-and-watch "test/**/*.*" dist/test-resources`,
22
41
  },
23
42
  generateAssetParameters: `node "${assetParametersScript}"`,
43
+ generateStyles: `node "${stylesScript}"`,
24
44
  watch: {
25
- default: 'concurrently "nps watch.test" "nps watch.src" "nps watch.bundle"',
45
+ default: 'concurrently "nps watch.test" "nps watch.src" "nps watch.bundle" "nps watch.styles"',
26
46
  src: 'nps "copy.src --watch --skip-initial-copy"',
27
47
  test: 'nps "copy.test --watch --skip-initial-copy"',
28
- bundle: "rollup --config config/rollup.config.js -w --environment ES5_BUILD,DEV",
48
+ bundle: "rollup --config config/rollup.config.js -w --environment DEV",
49
+ styles: 'chokidar "src/css/*.css" -c "nps generateStyles"'
29
50
  },
30
51
  dev: 'concurrently "nps serve" "nps watch"',
31
52
  start: "nps prepare dev",
32
- serve: {
33
- default: "nps serve.prepare serve.run",
34
- prepare: `copy-and-watch "${serveConfig}" dist/`,
35
- run: `serve --no-clipboard -l ${port} dist`,
36
- },
53
+ serve: `node "${serve}" --dir="dist/" --port=9191 --packageName="@ui5/webcomponents-base"`,
37
54
  test: {
38
55
  // --success first - report the exit code of the test run (first command to finish), as serve is always terminated and has a non-0 exit code
39
56
  default: 'concurrently "nps serve" "nps test.run" --kill-others --success first',
40
57
  run: "cross-env WDIO_LOG_LEVEL=error FORCE_COLOR=0 wdio config/wdio.conf.js",
41
58
  },
59
+ hash: `node "${generateHash}" dist/ hash.txt`,
42
60
  };
43
61
 
44
62
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ui5/webcomponents-base",
3
- "version": "0.0.0-aeb93167c",
3
+ "version": "0.0.0-b053ad005",
4
4
  "description": "UI5 Web Components: webcomponents.base",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -15,28 +15,34 @@
15
15
  "url": "https://github.com/SAP/ui5-webcomponents.git",
16
16
  "directory": "packages/base"
17
17
  },
18
+ "exports": {
19
+ ".": "./index.js",
20
+ "./dist/*": "./dist/*",
21
+ "./package.json": "./package.json",
22
+ "./bundle.esm.js": "./bundle.esm.js",
23
+ "./*": "./dist/*"
24
+ },
18
25
  "scripts": {
19
26
  "clean": "nps clean",
20
27
  "lint": "nps lint",
21
28
  "start": "nps start",
22
29
  "build": "nps build",
23
30
  "test": "nps test",
31
+ "hash": "nps hash",
24
32
  "prepublishOnly": "npm run clean && npm run build"
25
33
  },
26
34
  "dependencies": {
27
- "css-vars-ponyfill": "^2.1.2",
28
- "lit-html": "^1.0.0",
29
- "regenerator-runtime": "0.12.1",
30
- "url-search-params-polyfill": "^5.0.0"
35
+ "lit-html": "2.0.0"
31
36
  },
32
37
  "devDependencies": {
33
- "@ui5/webcomponents-tools": "0.0.0-aeb93167c",
34
- "array-uniq": "^2.0.0",
35
- "chromedriver": "latest",
36
- "copy-and-watch": "^0.1.4",
37
- "eslint": "^5.13.0",
38
- "eslint-config-airbnb-base": "^13.1.0",
39
- "npm-run-all": "^4.1.5",
40
- "path-exists-cli": "^1.0.0"
38
+ "@buxlabs/amd-to-es6": "0.16.1",
39
+ "@openui5/sap.ui.core": "1.94.0",
40
+ "@ui5/webcomponents-tools": "0.0.0-b053ad005",
41
+ "chromedriver": "95.0.0",
42
+ "clean-css": "^5.2.2",
43
+ "copy-and-watch": "^0.1.5",
44
+ "eslint": "^7.22.0",
45
+ "mkdirp": "^1.0.4",
46
+ "resolve": "^1.20.0"
41
47
  }
42
48
  }
@@ -1,12 +1,11 @@
1
- import { registerI18nBundle } from "./asset-registries/i18n.js";
2
- import { registerCldr, _registerMappingFunction as registerCldrMappingFunction } from "./asset-registries/LocaleData.js";
3
- import { registerThemeProperties } from "./asset-registries/Themes.js";
4
- import { registerAssetPathMappingFunction } from "./util/EffectiveAssetPath.js";
1
+ import { registerI18nLoader } from "./asset-registries/i18n.js";
2
+ import { registerLocaleDataLoader } from "./asset-registries/LocaleData.js";
3
+ import { registerThemePropertiesLoader } from "./asset-registries/Themes.js";
4
+ import { registerIconLoader } from "./asset-registries/Icons.js";
5
5
 
6
6
  export {
7
- registerCldr,
8
- registerCldrMappingFunction,
9
- registerThemeProperties,
10
- registerI18nBundle,
11
- registerAssetPathMappingFunction,
7
+ registerI18nLoader,
8
+ registerLocaleDataLoader,
9
+ registerThemePropertiesLoader,
10
+ registerIconLoader,
12
11
  };
package/src/Boot.js ADDED
@@ -0,0 +1,43 @@
1
+ import EventProvider from "./EventProvider.js";
2
+ import whenDOMReady from "./util/whenDOMReady.js";
3
+ import insertFontFace from "./FontFace.js";
4
+ import insertSystemCSSVars from "./SystemCSSVars.js";
5
+ import { getTheme } from "./config/Theme.js";
6
+ import applyTheme from "./theming/applyTheme.js";
7
+ import { getFeature } from "./FeaturesRegistry.js";
8
+
9
+ let booted = false;
10
+ const eventProvider = new EventProvider();
11
+
12
+ /**
13
+ * Attach a callback that will be executed on boot
14
+ * @public
15
+ * @param listener
16
+ */
17
+ const attachBoot = listener => {
18
+ eventProvider.attachEvent("boot", listener);
19
+ };
20
+
21
+ const boot = async () => {
22
+ if (booted) {
23
+ return;
24
+ }
25
+
26
+ const OpenUI5Support = getFeature("OpenUI5Support");
27
+ if (OpenUI5Support) {
28
+ await OpenUI5Support.init();
29
+ }
30
+
31
+ await whenDOMReady();
32
+ await applyTheme(getTheme());
33
+ OpenUI5Support && OpenUI5Support.attachListeners();
34
+ insertFontFace();
35
+ insertSystemCSSVars();
36
+ await eventProvider.fireEventAsync("boot");
37
+ booted = true;
38
+ };
39
+
40
+ export {
41
+ boot,
42
+ attachBoot,
43
+ };
package/src/CSP.js ADDED
@@ -0,0 +1,59 @@
1
+ const roots = new Map();
2
+ let useLinks = false;
3
+ let preloadLinks = true;
4
+
5
+ /**
6
+ * Use this function to provide the path to the directory where the css resources for the given package will be served from
7
+ *
8
+ * @public
9
+ * @param packageName name of the package that is being configured
10
+ * @param root path, accessible by the server that will serve the css resources
11
+ */
12
+ const setPackageCSSRoot = (packageName, root) => {
13
+ roots.set(packageName, root);
14
+ };
15
+
16
+ const getUrl = (packageName, path) => {
17
+ return `${roots.get(packageName)}${path}`;
18
+ };
19
+
20
+ /**
21
+ * Call this function to enable or disable the usage of <link> tags instead of <style> tags to achieve CSP compliance
22
+ * Example: "setUseLinks(true)" will unconditionally use <link> tags for all browsers;
23
+ * Example: "setUseLinks(!document.adoptedStyleSheets) will only enable the usage of <link> tags for browsers that do not support constructable stylesheets.
24
+ *
25
+ * @public
26
+ * @param use whether links will be used
27
+ */
28
+ const setUseLinks = use => {
29
+ useLinks = use;
30
+ };
31
+
32
+ /**
33
+ * Call this function to enable or disable the preloading of <link> tags.
34
+ * Note: only taken into account when <link> tags are being used.
35
+ * Note: links are being preloaded by default, so call "setPreloadLinks(false)" to opt out of this.
36
+ *
37
+ * @public
38
+ * @param preload
39
+ */
40
+ const setPreloadLinks = preload => {
41
+ preloadLinks = preload;
42
+ };
43
+
44
+ const shouldUseLinks = () => {
45
+ return useLinks;
46
+ };
47
+
48
+ const shouldPreloadLinks = () => {
49
+ return preloadLinks;
50
+ };
51
+
52
+ export {
53
+ setPackageCSSRoot,
54
+ getUrl,
55
+ setUseLinks,
56
+ setPreloadLinks,
57
+ shouldUseLinks,
58
+ shouldPreloadLinks,
59
+ };
@@ -0,0 +1,65 @@
1
+ const observers = new WeakMap(); // We want just one observer per node, store them here -> DOM nodes are keys
2
+
3
+ /**
4
+ * Default implementation with MutationObserver for browsers with native support
5
+ */
6
+ let _createObserver = (node, callback, options) => {
7
+ const observer = new MutationObserver(callback);
8
+ observer.observe(node, options);
9
+ return observer;
10
+ };
11
+
12
+ /**
13
+ * Default implementation with MutationObserver for browsers with native support
14
+ */
15
+ let _destroyObserver = observer => {
16
+ observer.disconnect();
17
+ };
18
+
19
+ /**
20
+ * Allows to create an alternative DOM observer implementation
21
+ * @param createFn
22
+ */
23
+ const setCreateObserverCallback = createFn => {
24
+ if (typeof createFn === "function") {
25
+ _createObserver = createFn;
26
+ }
27
+ };
28
+
29
+ /**
30
+ * Allows to create an alternative DOM observer implementation
31
+ * @param destroyFn
32
+ */
33
+ const setDestroyObserverCallback = destroyFn => {
34
+ if (typeof destroyFn === "function") {
35
+ _destroyObserver = destroyFn;
36
+ }
37
+ };
38
+
39
+ /**
40
+ * @param node
41
+ * @param callback
42
+ * @param options
43
+ */
44
+ const observeDOMNode = (node, callback, options) => {
45
+ const observer = _createObserver(node, callback, options);
46
+ observers.set(node, observer);
47
+ };
48
+
49
+ /**
50
+ * @param node
51
+ */
52
+ const unobserveDOMNode = node => {
53
+ const observer = observers.get(node);
54
+ if (observer) {
55
+ _destroyObserver(observer);
56
+ observers.delete(node);
57
+ }
58
+ };
59
+
60
+ export {
61
+ setCreateObserverCallback,
62
+ setDestroyObserverCallback,
63
+ observeDOMNode,
64
+ unobserveDOMNode,
65
+ };