@ui5/webcomponents-base 1.4.0 → 1.5.0

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 (59) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +27 -6
  3. package/bundle.esm.js +7 -9
  4. package/dist/CustomElementsRegistry.js +1 -1
  5. package/dist/asset-registries/LocaleData.js +1 -1
  6. package/dist/asset-registries/i18n.js +3 -1
  7. package/dist/assets/bundle.esm.a812dc7f.js +43 -0
  8. package/dist/delegate/ItemNavigation.js +9 -4
  9. package/dist/features/F6Navigation.js +4 -0
  10. package/dist/generated/VersionInfo.js +3 -3
  11. package/dist/updateShadowRoot.js +1 -2
  12. package/dist/util/Caret.js +1 -14
  13. package/dist/util/isDefaultSlotProvided.js +11 -0
  14. package/package-scripts.js +14 -16
  15. package/package.json +4 -3
  16. package/src/CustomElementsRegistry.js +1 -1
  17. package/src/asset-registries/LocaleData.js +1 -1
  18. package/src/asset-registries/i18n.js +3 -1
  19. package/src/delegate/ItemNavigation.js +9 -4
  20. package/src/features/F6Navigation.js +4 -0
  21. package/src/updateShadowRoot.js +1 -2
  22. package/src/util/Caret.js +1 -14
  23. package/src/util/isDefaultSlotProvided.js +11 -0
  24. package/config/.eslintrc.js +0 -3
  25. package/config/rollup.config.js +0 -1
  26. package/dist/isLegacyBrowser.js +0 -3
  27. package/dist/resources/bundle.esm.js +0 -32
  28. package/dist/resources/bundle.esm.js.map +0 -1
  29. package/dist/test-resources/assets/Themes.js +0 -17
  30. package/dist/test-resources/elements/Child.js +0 -35
  31. package/dist/test-resources/elements/Generic.js +0 -84
  32. package/dist/test-resources/elements/GenericExt.js +0 -26
  33. package/dist/test-resources/elements/NoShadowDOM.js +0 -13
  34. package/dist/test-resources/elements/Parent.js +0 -41
  35. package/dist/test-resources/elements/WithStaticArea.js +0 -77
  36. package/dist/test-resources/pages/AllTestElements.html +0 -42
  37. package/dist/test-resources/pages/Configuration.html +0 -18
  38. package/dist/test-resources/pages/ConfigurationScript.html +0 -34
  39. package/dist/test-resources/pages/assets/messagebundle_de.properties +0 -1
  40. package/dist/test-resources/pages/assets/messagebundle_en.properties +0 -1
  41. package/dist/test-resources/pages/assets/messagebundle_es.properties +0 -1
  42. package/dist/test-resources/pages/assets/messagebundle_fr.properties +0 -1
  43. package/dist/test-resources/pages/i18n.html +0 -33
  44. package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -27
  45. package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -63
  46. package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -93
  47. package/dist/test-resources/specs/CustomTheme.spec.js +0 -27
  48. package/dist/test-resources/specs/EventProvider.spec.js +0 -63
  49. package/dist/test-resources/specs/StaticArea.spec.js +0 -78
  50. package/dist/test-resources/specs/Theming.spec.js +0 -44
  51. package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -242
  52. package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -98
  53. package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -75
  54. package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -42
  55. package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -14
  56. package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -67
  57. package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -24
  58. package/dist/test-resources/specs/UI5ElementSlots.js +0 -36
  59. package/src/isLegacyBrowser.js +0 -3
package/CHANGELOG.md CHANGED
@@ -3,6 +3,20 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.5.0](https://github.com/SAP/ui5-webcomponents/compare/v1.4.0...v1.5.0) (2022-07-03)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **f6navigation:** prevent default behavior on windows OS ([#5424](https://github.com/SAP/ui5-webcomponents/issues/5424)) ([a494f85](https://github.com/SAP/ui5-webcomponents/commit/a494f85))
12
+ * **framework:** correct use of arrow keys for ItemNavigation in RTL ([#5408](https://github.com/SAP/ui5-webcomponents/issues/5408)) ([cec8119](https://github.com/SAP/ui5-webcomponents/commit/cec8119)), closes [#5166](https://github.com/SAP/ui5-webcomponents/issues/5166)
13
+ * cldr url ([#5397](https://github.com/SAP/ui5-webcomponents/issues/5397)) ([a4df0bd](https://github.com/SAP/ui5-webcomponents/commit/a4df0bd))
14
+ * **ui5-badge:** correctly detect if default slot is provided ([#5334](https://github.com/SAP/ui5-webcomponents/issues/5334)) ([0dceaf5](https://github.com/SAP/ui5-webcomponents/commit/0dceaf5)), closes [#5328](https://github.com/SAP/ui5-webcomponents/issues/5328)
15
+
16
+
17
+
18
+
19
+
6
20
  # [1.4.0](https://github.com/SAP/ui5-webcomponents/compare/v1.3.1...v1.4.0) (2022-05-25)
7
21
 
8
22
 
package/README.md CHANGED
@@ -1,14 +1,30 @@
1
- ![UI5 icon](https://raw.githubusercontent.com/SAP/ui5-webcomponents/master/docs/images/UI5_logo_wide.png)
1
+ ![UI5 icon](https://raw.githubusercontent.com/SAP/ui5-webcomponents/main/docs/images/UI5_logo_wide.png)
2
2
 
3
3
  # UI5 Web Components - Base
4
4
 
5
- [![Travis CI Build Status](https://travis-ci.org/SAP/ui5-webcomponents.svg?branch=master)](https://travis-ci.org/SAP/ui5-webcomponents)
6
5
  [![npm Package Version](https://badge.fury.io/js/%40ui5%2Fwebcomponents.svg)](https://www.npmjs.com/package/@ui5/webcomponents)
7
6
 
8
7
  Contains the base files for all Web Components, most notably `@ui5/webcomponents-base/dist/UI5Element.js`.
9
8
 
10
9
  ## Provided APIs for applications
11
10
 
11
+ | Affects | Import | Description |
12
+ |--------------|---------------------------------------------------------- |-----------------------------------------------------------------------------------------------------|
13
+ Configuration | `@ui5/webcomponents-base/dist/config/Theme.js` | Sets Theme Configuration |
14
+ Configuration | `@ui5/webcomponents-base/dist/config/Language.js` | Sets Language Configuration |
15
+ Configuration | `@ui5/webcomponents-base/dist/config/AnimationMode.js` | Sets Animation Mode Configuration |
16
+ Configuration | `@ui5/webcomponents-base/dist/config/NoConflict.js` | Sets "NoConflict" Mode Configuration - if enabled all custom events are fired with the `ui5-` prefix|
17
+ Framework | `@ui5/webcomponents-base/dist/features/OpenUI5Support.js` | Adds integration with the OpenUI5 framework for resources re-use |
18
+ Components | `@ui5/webcomponents-base/dist/features/F6Navigation.js` | Adds support for F6 fast group navigation |
19
+ Components | `import applyDirection from "@ui5/webcomponents-base/dist/locale/applyDirection.js"`| Applies direction ("ltr"/"rtl") - re-renders all RTL-aware components |
20
+ Components | `import { setCustomElementsScopingSuffix } from "@ui5/webcomponents-base/dist/CustomElementsScope.js"`| Adds suffix to the tag names of all components |
21
+ CSP compliance| `import { setPackageCSSRoot } from "@ui5/webcomponents-base/dist/CSP.js"`| Sets directory path where the CSS resources for given package will be served from |
22
+ CSP compliance| `import { setUseLinks } from "@ui5/webcomponents-base/dist/CSP.js"` | Enables or disables the usage of `<link>` tags instead of `<style>` tags |
23
+ CSP compliance| `import { setPreloadLinks } from "@ui5/webcomponents-base/dist/CSP.js"` | Enables or disables the preloading of `<link>` tags |
24
+
25
+ ### `applyDirection.js`
26
+ - `applyDirection`
27
+
12
28
  ### `Boot.js`
13
29
 
14
30
  - `attachBoot`
@@ -20,6 +36,11 @@ Contains the base files for all Web Components, most notably `@ui5/webcomponents
20
36
  - `setCustomElementsScopingRules`
21
37
  - `getCustomElementsScopingRules`
22
38
 
39
+ ### `CSP.js`
40
+ - `setPackageCSSRoot`
41
+ - `setUseLinks`
42
+ - `setPreloadLinks`
43
+
23
44
  ### `i18nBundle.js`
24
45
 
25
46
  - `registerI18nLoader`
@@ -34,16 +55,16 @@ Contains the base files for all Web Components, most notably `@ui5/webcomponents
34
55
  - `renderFinished`
35
56
 
36
57
  ## Resources
37
- - [UI5 Web Components - README.md](https://github.com/SAP/ui5-webcomponents/blob/master/README.md)
58
+ - [UI5 Web Components - README.md](https://github.com/SAP/ui5-webcomponents/blob/main/README.md)
38
59
  - [UI5 Web Components - Home Page](https://sap.github.io/ui5-webcomponents)
39
60
  - [UI5 Web Components - Playground and API Reference](https://sap.github.io/ui5-webcomponents/playground/)
40
61
 
41
62
  ## Support
42
- We welcome all comments, suggestions, questions, and bug reports. Please follow our [Support Guidelines](https://github.com/SAP/ui5-webcomponents/blob/master/SUPPORT.md#-content) on how to report an issue, or chat with us in the `#webcomponents` channel of the [OpenUI5 Community Slack](https://join-ui5-slack.herokuapp.com/).
63
+ We welcome all comments, suggestions, questions, and bug reports. Please follow our [Support Guidelines](https://github.com/SAP/ui5-webcomponents/blob/main/SUPPORT.md#-content) on how to report an issue, or chat with us in the `#webcomponents` channel of the [OpenUI5 Community Slack](https://join-ui5-slack.herokuapp.com/).
43
64
 
44
65
  ## Contribute
45
- Please check our [Contribution Guidelines](https://github.com/SAP/ui5-webcomponents/blob/master/docs/6-contributing/02-conventions-and-guidelines.md).
66
+ Please check our [Contribution Guidelines](https://github.com/SAP/ui5-webcomponents/blob/main/docs/6-contributing/02-conventions-and-guidelines.md).
46
67
 
47
68
  ## License
48
69
  Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved.
49
- This file is licensed under the Apache Software License, Version 2.0 except as noted otherwise in the [LICENSE](https://github.com/SAP/ui5-webcomponents/blob/master/LICENSE.txt) file.
70
+ This file is licensed under the Apache Software License, Version 2.0 except as noted otherwise in the [LICENSE](https://github.com/SAP/ui5-webcomponents/blob/main/LICENSE.txt) file.
package/bundle.esm.js CHANGED
@@ -5,20 +5,18 @@ import EventProvider from "./dist/EventProvider.js";
5
5
  import "./dist/features/OpenUI5Support.js";
6
6
 
7
7
  // Test components
8
- import "./dist/test-resources/elements/Generic.js";
9
- import "./dist/test-resources/elements/NoShadowDOM.js";
10
- import "./dist/test-resources/elements/Parent.js";
11
- import "./dist/test-resources/elements/Child.js";
12
- import "./dist/test-resources/elements/WithStaticArea.js";
13
- import "./dist/test-resources/elements/GenericExt.js";
8
+ import "./test/elements/Generic.js";
9
+ import "./test/elements/NoShadowDOM.js";
10
+ import "./test/elements/Parent.js";
11
+ import "./test/elements/Child.js";
12
+ import "./test/elements/WithStaticArea.js";
13
+ import "./test/elements/GenericExt.js";
14
14
 
15
15
  // Test themes - CSS Vars for the sap_fiori_3, sap_fiori_3_dark, sap_belize and sap_belize_hcb themes
16
- import "./dist/test-resources/assets/Themes.js";
16
+ import "./test/assets/Themes.js";
17
17
 
18
18
  // used in test pages
19
19
  import { renderFinished } from "./dist/Render.js";
20
- import { isIE } from "./dist/Device.js";
21
- window.isIE = isIE; // attached to the window object for testing purposes
22
20
 
23
21
  // used for tests - to register a custom theme
24
22
  window.registerThemePropertiesLoader = registerThemePropertiesLoader;
@@ -82,7 +82,7 @@ const displayFailedRegistrations = () => {
82
82
  }
83
83
  });
84
84
 
85
- message = `${message}\n\nTo prevent other runtimes from defining tags that you use, consider using scoping or have third-party libraries use scoping: https://github.com/SAP/ui5-webcomponents/blob/master/docs/2-advanced/03-scoping.md.`;
85
+ message = `${message}\n\nTo prevent other runtimes from defining tags that you use, consider using scoping or have third-party libraries use scoping: https://github.com/SAP/ui5-webcomponents/blob/main/docs/2-advanced/03-scoping.md.`;
86
86
 
87
87
  console.warn(message); // eslint-disable-line
88
88
  };
@@ -147,7 +147,7 @@ const registerLocaleDataLoader = (localeId, loader) => {
147
147
 
148
148
  // register default loader for "en" from ui5 CDN (dev workflow without assets)
149
149
  registerLocaleDataLoader("en", async runtimeLocaleId => {
150
- return (await fetch(`https://ui5.sap.com/1.60.2/resources/sap/ui/core/cldr/en.json`)).json();
150
+ return (await fetch(`https://ui5.sap.com/1.103.0/resources/sap/ui/core/cldr/en.json`)).json();
151
151
  });
152
152
 
153
153
  // When the language changes dynamically (the user calls setLanguage),
@@ -14,10 +14,12 @@ const bundlePromises = new Map();
14
14
  const loaders = new Map();
15
15
 
16
16
  /**
17
+ * Registers i18n loader function for given package and locale.
17
18
  *
19
+ * @public
18
20
  * @param {string} packageName for which package this loader can fetch data
21
+ * @param {string} localeId locale that this loader can handle
19
22
  * @param {function} loader async function that will be passed a localeId and should return a JSON object
20
- * @param {Array} localeIds Array of locale IDs that this loader can handle
21
23
  */
22
24
  const registerI18nLoader = (packageName, localeId, loader) => {
23
25
  // register loader by key
@@ -0,0 +1,43 @@
1
+ const Cs=function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function s(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerpolicy&&(o.referrerPolicy=r.referrerpolicy),r.crossorigin==="use-credentials"?o.credentials="include":r.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(r){if(r.ep)return;r.ep=!0;const o=s(r);fetch(r.href,o)}};Cs();const ut={themes:{default:"sap_fiori_3",all:["sap_fiori_3","sap_fiori_3_dark","sap_belize","sap_belize_hcb","sap_belize_hcw","sap_fiori_3_hcb","sap_fiori_3_hcw","sap_horizon","sap_horizon_dark","sap_horizon_hcb","sap_horizon_hcw","sap_horizon_exp"]},languages:{default:"en",all:["ar","bg","ca","cs","cy","da","de","el","en","en_GB","en_US_sappsd","en_US_saprigi","en_US_saptrc","es","es_MX","et","fi","fr","fr_CA","hi","hr","hu","in","it","iw","ja","kk","ko","lt","lv","ms","nl","no","pl","pt_PT","pt","ro","ru","sh","sk","sl","sv","th","tr","uk","vi","zh_CN","zh_TW"]},locales:{default:"en",all:["ar","ar_EG","ar_SA","bg","ca","cs","da","de","de_AT","de_CH","el","el_CY","en","en_AU","en_GB","en_HK","en_IE","en_IN","en_NZ","en_PG","en_SG","en_ZA","es","es_AR","es_BO","es_CL","es_CO","es_MX","es_PE","es_UY","es_VE","et","fa","fi","fr","fr_BE","fr_CA","fr_CH","fr_LU","he","hi","hr","hu","id","it","it_CH","ja","kk","ko","lt","lv","ms","nb","nl","nl_BE","pl","pt","pt_PT","ro","ru","ru_UA","sk","sl","sr","sr_Latn","sv","th","tr","uk","vi","zh_CN","zh_HK","zh_SG","zh_TW"]}},xt=ut.themes.default,Nt=ut.languages.default,E=ut.locales.default,ee=ut.locales.all;var ke=()=>{const e=navigator.languages,t=()=>navigator.language;return e&&e[0]||t()||navigator.userLanguage||navigator.browserLanguage||Nt},Be={},He=Be.hasOwnProperty,Es=Be.toString,Fe=He.toString,Ts=Fe.call(Object),se=function(e){var t,s;return!e||Es.call(e)!=="[object Object]"?!1:(t=Object.getPrototypeOf(e),t?(s=He.call(t,"constructor")&&t.constructor,typeof s=="function"&&Fe.call(s)===Ts):!0)},Ms=Object.create(null),je=function(){var e,t,s,n,r,o,i=arguments[2]||{},a=3,c=arguments.length,l=arguments[0]||!1,h=arguments[1]?void 0:Ms;for(typeof i!="object"&&typeof i!="function"&&(i={});a<c;a++)if((r=arguments[a])!=null)for(n in r)e=i[n],s=r[n],!(n==="__proto__"||i===s)&&(l&&s&&(se(s)||(t=Array.isArray(s)))?(t?(t=!1,o=e&&Array.isArray(e)?e:[]):o=e&&se(e)?e:{},i[n]=je(l,arguments[1],o,s)):s!==h&&(i[n]=s));return i},Zt=function(){var e=[!0,!1];return e.push.apply(e,arguments),je.apply(null,e)};const Ve=new Map,Ls=(e,t)=>{Ve.set(e,t)},_=e=>Ve.get(e);let ne=!1,m={animationMode:"full",theme:xt,rtl:null,language:null,calendarType:null,noConflict:!1,formatSettings:{},fetchDefaultLanguage:!1};const Os=()=>(A(),m.animationMode),Ps=()=>(A(),m.theme),Is=()=>(A(),m.rtl),Ds=()=>(A(),m.language),Rs=()=>(A(),m.fetchDefaultLanguage),xs=()=>(A(),m.noConflict),Ns=()=>(A(),m.calendarType),Us=()=>(A(),m.formatSettings),ot=new Map;ot.set("true",!0);ot.set("false",!1);const ks=()=>{const e=document.querySelector("[data-ui5-config]")||document.querySelector("[data-id='sap-ui-config']");let t;if(e){try{t=JSON.parse(e.innerHTML)}catch{console.warn("Incorrect data-sap-ui-config format. Please use JSON")}t&&(m=Zt(m,t))}},Bs=()=>{const e=new URLSearchParams(window.location.search);e.forEach((t,s)=>{const n=s.split("sap-").length;n===0||n===s.split("sap-ui-").length||re(s,t,"sap")}),e.forEach((t,s)=>{!s.startsWith("sap-ui")||re(s,t,"sap-ui")})},Hs=(e,t)=>e==="theme"&&t.includes("@")?t.split("@")[0]:t,re=(e,t,s)=>{const n=t.toLowerCase(),r=e.split(`${s}-`)[1];ot.has(t)&&(t=ot.get(n)),t=Hs(r,t),m[r]=t},Fs=()=>{const e=_("OpenUI5Support");if(!e||!e.isLoaded())return;const t=e.getConfigurationSettingsObject();m=Zt(m,t)},A=()=>{ne||(ks(),Bs(),Fs(),ne=!0)};class T{constructor(){this._eventRegistry=new Map}attachEvent(t,s){const n=this._eventRegistry,r=n.get(t);if(!Array.isArray(r)){n.set(t,[s]);return}r.includes(s)||r.push(s)}detachEvent(t,s){const n=this._eventRegistry,r=n.get(t);if(!r)return;const o=r.indexOf(s);o!==-1&&r.splice(o,1),r.length===0&&n.delete(t)}fireEvent(t,s){const r=this._eventRegistry.get(t);return r?r.map(o=>o.call(this,s)):[]}fireEventAsync(t,s){return Promise.all(this.fireEvent(t,s))}isHandlerAttached(t,s){const r=this._eventRegistry.get(t);return r?r.includes(s):!1}hasListeners(t){return!!this._eventRegistry.get(t)}}const js=new T,Vs="languageChange",ze=e=>{js.attachEvent(Vs,e)},oe=10;class zs{constructor(){this.list=[],this.lookup=new Set}add(t){this.lookup.has(t)||(this.list.push(t),this.lookup.add(t))}remove(t){!this.lookup.has(t)||(this.list=this.list.filter(s=>s!==t),this.lookup.delete(t))}shift(){const t=this.list.shift();if(t)return this.lookup.delete(t),t}isEmpty(){return this.list.length===0}isAdded(t){return this.lookup.has(t)}process(t){let s;const n=new Map;for(s=this.shift();s;){const r=n.get(s)||0;if(r>oe)throw new Error(`Web component processed too many times this task, max allowed is: ${oe}`);t(s),n.set(s,r+1),s=this.shift()}}}const We=e=>{const t=[];return e.forEach(s=>{t.push(s)}),t},Ze=(e,t=document.body)=>{let s=document.querySelector(e);return s||(s=document.createElement(e),t.insertBefore(s,t.firstChild))},Ws=()=>Ze("ui5-shared-resources",document.head),M=(e,t)=>{const s=e.split(".");let n=Ws();for(let r=0;r<s.length;r++){const o=s[r],i=r===s.length-1;Object.prototype.hasOwnProperty.call(n,o)||(n[o]=i?t:{}),n=n[o]}return n},ie={version:"1.5.0",major:1,minor:5,patch:0,suffix:"",isNext:!1,buildTime:1656937916};let Q,Zs="";const yt=new Map,V=M("Runtimes",[]),qs=()=>{Q===void 0&&(Q=V.length,V.push({...ie,alias:Zs,description:`Runtime ${Q} - ver ${ie.version}`}))},qe=()=>Q,Gs=(e,t)=>{const s=`${e},${t}`;if(yt.has(s))return yt.get(s);const n=V[e],r=V[t];if(!n||!r)throw new Error("Invalid runtime index supplied");if(n.isNext||r.isNext)return n.buildTime-r.buildTime;const o=n.major-r.major;if(o)return o;const i=n.minor-r.minor;if(i)return i;const a=n.patch-r.patch;if(a)return a;const l=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"}).compare(n.suffix,r.suffix);return yt.set(s,l),l},Ks=()=>V,Ge=M("Tags",new Map),qt=new Set;let C={},_t;const Ke="unknown",ae=e=>{qt.add(e),Ge.set(e,qe())},Js=e=>qt.has(e),Xs=()=>We(qt),Ys=e=>{let t=Ge.get(e);t===void 0&&(t=Ke),C[t]=C[t]||new Set,C[t].add(e),_t||(_t=setTimeout(()=>{Qs(),C={},_t=void 0},1e3))},Qs=()=>{const e=Ks(),t=qe(),s=e[t];let n="Multiple UI5 Web Components instances detected.";e.length>1&&(n=`${n}
2
+ Loading order (versions before 1.1.0 not listed): ${e.map(r=>`
3
+ ${r.description}`).join("")}`),Object.keys(C).forEach(r=>{let o,i;r===Ke?(o=1,i={description:"Older unknown runtime"}):(o=Gs(t,r),i=e[r]);let a;o>0?a="an older":o<0?a="a newer":a="the same",n=`${n}
4
+
5
+ "${s.description}" failed to define ${C[r].size} tag(s) as they were defined by a runtime of ${a} version "${i.description}": ${We(C[r]).sort().join(", ")}.`,o>0?n=`${n}
6
+ WARNING! If your code uses features of the above web components, unavailable in ${i.description}, it might not work as expected!`:n=`${n}
7
+ Since the above web components were defined by the same or newer version runtime, they should be compatible with your code.`}),n=`${n}
8
+
9
+ To prevent other runtimes from defining tags that you use, consider using scoping or have third-party libraries use scoping: https://github.com/SAP/ui5-webcomponents/blob/main/docs/2-advanced/03-scoping.md.`,console.warn(n)},Je=new Set,tn=e=>{Je.add(e)},en=e=>Je.has(e),Gt=new Set,sn=new T,R=new zs;let O,tt,wt,J;const Xe=async e=>{R.add(e),await rn()},Ye=e=>{sn.fireEvent("beforeComponentRender",e),Gt.add(e),e._render()},nn=e=>{R.remove(e),Gt.delete(e)},rn=async()=>{J||(J=new Promise(e=>{window.requestAnimationFrame(()=>{R.process(Ye),J=null,e(),wt||(wt=setTimeout(()=>{wt=void 0,R.isEmpty()&&cn()},200))})})),await J},on=()=>O||(O=new Promise(e=>{tt=e,window.requestAnimationFrame(()=>{R.isEmpty()&&(O=void 0,e())})}),O),an=()=>{const e=Xs().map(t=>customElements.whenDefined(t));return Promise.all(e)},Kt=async()=>{await an(),await on()},cn=()=>{!R.isEmpty()||tt&&(tt(),tt=void 0,O=void 0)},Jt=async e=>{Gt.forEach(t=>{const s=t.constructor.getMetadata().getTag(),n=en(t.constructor),r=t.constructor.getMetadata().isLanguageAware(),o=t.constructor.getMetadata().isThemeAware();(!e||e.tag===s||e.rtlAware&&n||e.languageAware&&r||e.themeAware&&o)&&Xe(t)}),await Kt()};let vt,Ut;const it=()=>(vt===void 0&&(vt=Ds()),vt),ln=e=>{Ut=e},un=()=>(Ut===void 0&&ln(Rs()),Ut),dn=/^((?:[A-Z]{2,3}(?:-[A-Z]{3}){0,3})|[A-Z]{4}|[A-Z]{5,8})(?:-([A-Z]{4}))?(?:-([A-Z]{2}|[0-9]{3}))?((?:-[0-9A-Z]{5,8}|-[0-9][0-9A-Z]{3})*)((?:-[0-9A-WYZ](?:-[0-9A-Z]{2,8})+)*)(?:-(X(?:-[0-9A-Z]{1,8})+))?$/i;class hn{constructor(t){const s=dn.exec(t.replace(/_/g,"-"));if(s===null)throw new Error(`The given language ${t} does not adhere to BCP-47.`);this.sLocaleId=t,this.sLanguage=s[1]||null,this.sScript=s[2]||null,this.sRegion=s[3]||null,this.sVariant=s[4]&&s[4].slice(1)||null,this.sExtension=s[5]&&s[5].slice(1)||null,this.sPrivateUse=s[6]||null,this.sLanguage&&(this.sLanguage=this.sLanguage.toLowerCase()),this.sScript&&(this.sScript=this.sScript.toLowerCase().replace(/^[a-z]/,n=>n.toUpperCase())),this.sRegion&&(this.sRegion=this.sRegion.toUpperCase())}getLanguage(){return this.sLanguage}getScript(){return this.sScript}getRegion(){return this.sRegion}getVariant(){return this.sVariant}getVariantSubtags(){return this.sVariant?this.sVariant.split("-"):[]}getExtension(){return this.sExtension}getExtensionSubtags(){return this.sExtension?this.sExtension.slice(2).split("-"):[]}getPrivateUse(){return this.sPrivateUse}getPrivateUseSubtags(){return this.sPrivateUse?this.sPrivateUse.slice(2).split("-"):[]}hasPrivateUseSubtag(t){return this.getPrivateUseSubtags().indexOf(t)>=0}toString(){const t=[this.sLanguage];return this.sScript&&t.push(this.sScript),this.sRegion&&t.push(this.sRegion),this.sVariant&&t.push(this.sVariant),this.sExtension&&t.push(this.sExtension),this.sPrivateUse&&t.push(this.sPrivateUse),t.join("-")}}const St=new Map,Qe=e=>(St.has(e)||St.set(e,new hn(e)),St.get(e)),ce=e=>{try{if(e&&typeof e=="string")return Qe(e)}catch{}},kt=e=>e?ce(e):it()?Qe(it()):ce(ke()),fn=/^((?:[A-Z]{2,3}(?:-[A-Z]{3}){0,3})|[A-Z]{4}|[A-Z]{5,8})(?:-([A-Z]{4}))?(?:-([A-Z]{2}|[0-9]{3}))?((?:-[0-9A-Z]{5,8}|-[0-9][0-9A-Z]{3})*)((?:-[0-9A-WYZ](?:-[0-9A-Z]{2,8})+)*)(?:-(X(?:-[0-9A-Z]{1,8})+))?$/i,le=/(?:^|-)(saptrc|sappsd)(?:-|$)/i,pn={he:"iw",yi:"ji",id:"in",sr:"sh"},gn=e=>{let t;if(!e)return E;if(typeof e=="string"&&(t=fn.exec(e.replace(/_/g,"-")))){let s=t[1].toLowerCase(),n=t[3]?t[3].toUpperCase():void 0;const r=t[2]?t[2].toLowerCase():void 0,o=t[4]?t[4].slice(1):void 0,i=t[6];return s=pn[s]||s,i&&(t=le.exec(i))||o&&(t=le.exec(o))?`en_US_${t[1].toLowerCase()}`:(s==="zh"&&!n&&(r==="hans"?n="CN":r==="hant"&&(n="TW")),s+(n?"_"+n+(o?"_"+o.replace("-","_"):""):""))}},mn=e=>{if(!e)return E;if(e==="zh_HK")return"zh_TW";const t=e.lastIndexOf("_");return t>=0?e.slice(0,t):e!==E?E:""},ue=new Set,de=new Set,Xt=new Map,At=new Map,Yt=new Map,yn=(e,t,s)=>{const n=`${e}/${t}`;Yt.set(n,s)},he=(e,t)=>{Xt.set(e,t)},_n=e=>Xt.get(e),fe=(e,t)=>{const s=`${e}/${t}`;return Yt.has(s)},wn=(e,t)=>{const s=`${e}/${t}`,n=Yt.get(s);return At.get(s)||At.set(s,n(t)),At.get(s)},vn=e=>{ue.has(e)||(console.warn(`[${e}]: Message bundle assets are not configured. Falling back to English texts.`,` Add \`import "${e}/dist/Assets.js"\` in your bundle and make sure your build tool supports dynamic imports and JSON imports. See section "Assets" in the documentation for more information.`),ue.add(e))},ts=async e=>{const t=kt().getLanguage(),s=kt().getRegion();let n=gn(t+(s?`-${s}`:""));for(;n!==Nt&&!fe(e,n);)n=mn(n);const r=un();if(n===Nt&&!r){he(e,null);return}if(!fe(e,n)){vn(e);return}try{const o=await wn(e,n);he(e,o)}catch(o){de.has(o.message)||(de.add(o.message),console.error(o.message))}};ze(()=>{const e=[...Xt.keys()];return Promise.all(e.map(ts))});const Sn=new Map,at=new Map,bt=new Map,pe=new Set;let ge=!1;const An={iw:"he",ji:"yi",in:"id"},me=e=>{ge||(console.warn(`[LocaleData] Supported locale "${e}" not configured, import the "Assets.js" module from the webcomponents package you are using.`),ge=!0)},bn=(e,t,s)=>{e=e&&An[e]||e,e==="no"&&(e="nb"),e==="zh"&&!t&&(s==="Hans"?t="CN":s==="Hant"&&(t="TW")),(e==="sh"||e==="sr"&&s==="Latn")&&(e="sr",t="Latn");let n=`${e}_${t}`;return ee.includes(n)||(n=e,ee.includes(n))?at.has(n)?n:(me(n),E):E},ye=(e,t)=>{Sn.set(e,t)},$n=e=>{const t=at.get(e);return bt.get(e)||bt.set(e,t(e)),bt.get(e)},Cn=async(e,t,s)=>{const n=bn(e,t,s),r=_("OpenUI5Support");if(r){const o=r.getLocaleDataObject();if(o){ye(n,o);return}}try{const o=await $n(n);ye(n,o)}catch(o){pe.has(o.message)||(pe.add(o.message),console.error(o.message))}},En=(e,t)=>{at.set(e,t)};En("en",async e=>(await fetch("https://ui5.sap.com/1.103.0/resources/sap/ui/core/cldr/en.json")).json());ze(()=>{const e=kt();return Cn(e.getLanguage(),e.getRegion(),e.getScript())});const es=new Map,ss=new Map,ns=new Set,ct=new Set,b=(e,t,s)=>{ss.set(`${e}/${t}`,s),ns.add(e),ct.add(t)},rs=async(e,t)=>{const s=es.get(`${e}_${t}`);if(s!==void 0)return s;if(!ct.has(t)){const n=[...ct.values()].join(", ");return console.warn(`You have requested a non-registered theme ${t} - falling back to ${xt}. Registered themes are: ${n}`),_e(e,xt)}return _e(e,t)},_e=async(e,t)=>{const s=ss.get(`${e}/${t}`);if(!s){console.error(`Theme [${t}] not registered for package [${e}]`);return}let n;try{n=await s(t)}catch(o){console.error(e,o.message);return}const r=n._||n;return es.set(`${e}_${t}`,r),r},os=()=>ns,Tn=e=>ct.has(e),we={"SAP-icons-TNT":"tnt",BusinessSuiteInAppSymbols:"business-suite",horizon:"SAP-icons-v5"},Mn=(e,t={})=>{const s=document.createElement("style");return s.type="text/css",Object.entries(t).forEach(n=>s.setAttribute(...n)),s.textContent=e,document.head.appendChild(s),s},dt=(e,t)=>t?`${e}|${t}`:e,ht=(e,t,s="")=>{const n=typeof e=="string"?e:e.content;if(document.adoptedStyleSheets){const r=new CSSStyleSheet;r.replaceSync(n),r._ui5StyleId=dt(t,s),document.adoptedStyleSheets=[...document.adoptedStyleSheets,r]}else{const r={};r[t]=s,Mn(n,r)}},Ln=(e,t,s="")=>{const n=typeof e=="string"?e:e.content;document.adoptedStyleSheets?document.adoptedStyleSheets.find(r=>r._ui5StyleId===dt(t,s)).replaceSync(n||""):document.querySelector(`head>style[${t}="${s}"]`).textContent=n||""},ft=(e,t="")=>document.adoptedStyleSheets?!!document.adoptedStyleSheets.find(s=>s._ui5StyleId===dt(e,t)):!!document.querySelector(`head>style[${e}="${t}"]`),On=(e,t="")=>{if(document.adoptedStyleSheets)document.adoptedStyleSheets=document.adoptedStyleSheets.filter(s=>s._ui5StyleId!==dt(e,t));else{const s=document.querySelector(`head > style[${e}="${t}"]`);s&&s.parentElement.removeChild(s)}},is=(e,t,s="")=>{ft(t,s)?Ln(e,t,s):ht(e,t,s)},P=new Set,Pn=()=>{let e=document.querySelector(".sapThemeMetaData-Base-baseLib")||document.querySelector(".sapThemeMetaData-UI5-sap-ui-core");if(e)return getComputedStyle(e).backgroundImage;e=document.createElement("span"),e.style.display="none",e.classList.add("sapThemeMetaData-Base-baseLib"),document.body.appendChild(e);let t=getComputedStyle(e).backgroundImage;return t==="none"&&(e.classList.add("sapThemeMetaData-UI5-sap-ui-core"),t=getComputedStyle(e).backgroundImage),document.body.removeChild(e),t},In=e=>{const t=/\(["']?data:text\/plain;utf-8,(.*?)['"]?\)$/i.exec(e);if(t&&t.length>=2){let s=t[1];if(s=s.replace(/\\"/g,'"'),s.charAt(0)!=="{"&&s.charAt(s.length-1)!=="}")try{s=decodeURIComponent(s)}catch{P.has("decode")||(console.warn("Malformed theme metadata string, unable to decodeURIComponent"),P.add("decode"));return}try{return JSON.parse(s)}catch{P.has("parse")||(console.warn("Malformed theme metadata string, unable to parse JSON"),P.add("parse"))}}},Dn=e=>{let t,s;try{t=e.Path.match(/\.([^.]+)\.css_variables$/)[1],s=e.Extends[0]}catch{P.has("object")||(console.warn("Malformed theme metadata Object",e),P.add("object"));return}return{themeName:t,baseThemeName:s}},Rn=()=>{const e=Pn();if(!e||e==="none")return;const t=In(e);return Dn(t)},xn=new T,Nn="themeLoaded",Un=e=>xn.fireEvent(Nn,e),z="@ui5/webcomponents-theming",kn=()=>os().has(z),Bn=async e=>{if(!kn())return;const t=await rs(z,e);t&&is(t,"data-ui5-theme-properties",z)},Hn=()=>{On("data-ui5-theme-properties",z)},Fn=async e=>{os().forEach(async s=>{if(s===z)return;const n=await rs(s,e);n&&is(n,"data-ui5-theme-properties",s)})},jn=()=>{const e=Rn();if(e)return e;const t=_("OpenUI5Support");if(t&&t.cssVariablesLoaded())return{themeName:t.getConfigurationSettingsObject().theme}},as=async e=>{const t=jn();!t||e!==t.themeName?await Bn(e):Hn();const s=Tn(e)?e:t&&t.baseThemeName;await Fn(s),Un(e)};let I;const pt=()=>(I===void 0&&(I=Ps()),I),cs=async e=>{I!==e&&(I=e,await as(I),await Jt({themeAware:!0}))},Vn=e=>pt().startsWith(e),zn=new Map,ls=()=>{const e=pt(),t=zn.get(e);return t||(Vn("sap_horizon")?"SAP-icons-v5":"SAP-icons")},ve=new Map,lt=M("SVGIcons.registry",new Map),$t=M("SVGIcons.promises",new Map),Se="ICON_NOT_FOUND",Wn=async e=>{if(!$t.has(e)){if(!ve.has(e))throw new Error(`No loader registered for the ${e} icons collection. Probably you forgot to import the "AllIcons.js" module for the respective package.`);const t=ve.get(e);$t.set(e,t(e))}return $t.get(e)},Zn=e=>{Object.keys(e.data).forEach(t=>{const s=e.data[t];qn(t,{pathData:s.path,ltr:s.ltr,accData:s.acc,collection:e.collection,packageName:e.packageName})})},qn=(e,{pathData:t,ltr:s,accData:n,collection:r,packageName:o}={})=>{r||(r=ls());const i=`${r}/${e}`;lt.set(i,{pathData:t,ltr:s,accData:n,packageName:o})},Gn=e=>{e.startsWith("sap-icon://")&&(e=e.replace("sap-icon://",""));let t;[e,t]=e.split("/").reverse(),t=t||ls(),t=Jn(t),e=e.replace("icon-","");const s=`${t}/${e}`;return{name:e,collection:t,registryKey:s}},Ct=async e=>{const{collection:t,registryKey:s}=Gn(e);let n=Se;try{n=await Wn(t)}catch(r){console.error(r.message)}return n===Se?n:(lt.has(s)||Zn(n),lt.get(s))},Kn=async()=>(await Ct("edit"),await Ct("tnt/arrow"),await Ct("business-suite/3d"),Array.from(lt.keys())),Jn=e=>we[e]?we[e]:e,Bt=M("PopupUtilsData",{});Bt.currentZIndex=Bt.currentZIndex||100;const us=()=>Bt.currentZIndex,w=()=>{const e=window.sap;return e&&e.ui&&typeof e.ui.getCore=="function"&&e.ui.getCore()},Xn=()=>!!w(),Yn=()=>{const e=w();return e?new Promise(t=>{e.attachInit(()=>{window.sap.ui.require(["sap/ui/core/LocaleData","sap/ui/core/Popup"],(s,n)=>{n.setInitialZIndex(us()),t()})})}):Promise.resolve()},Qn=()=>{const e=w();if(!e)return;const t=e.getConfiguration(),s=window.sap.ui.require("sap/ui/core/LocaleData");return{animationMode:t.getAnimationMode(),language:t.getLanguage(),theme:t.getTheme(),rtl:t.getRTL(),calendarType:t.getCalendarType(),formatSettings:{firstDayOfWeek:s?s.getInstance(t.getLocale()).getFirstDayOfWeek():void 0}}},tr=()=>{const e=w();if(!e)return;const t=e.getConfiguration();return window.sap.ui.require("sap/ui/core/LocaleData").getInstance(t.getLocale())._get()},er=()=>{const e=w(),t=e.getConfiguration();e.attachThemeChanged(async()=>{await cs(t.getTheme())})},sr=()=>{!w()||er()},nr=()=>{if(!w())return;const t=[...document.head.children].find(s=>s.id==="sap-ui-theme-sap.ui.core");if(!!t)return!!t.href.match(/\/css(-|_)variables\.css/)},rr=()=>w()?window.sap.ui.require("sap/ui/core/Popup").getNextZIndex():void 0,or=()=>{if(!w())return;window.sap.ui.require("sap/ui/core/Popup").setInitialZIndex(us())},ir={isLoaded:Xn,init:Yn,getConfigurationSettingsObject:Qn,getLocaleDataObject:tr,attachListeners:sr,cssVariablesLoaded:nr,getNextZIndex:rr,setInitialZIndex:or};Ls("OpenUI5Support",ir);const ar=()=>new Promise(e=>{document.body?e():document.addEventListener("DOMContentLoaded",()=>{e()})});var cr={packageName:"@ui5/webcomponents-base",fileName:"FontFace.css",content:`@font-face{font-family:"72";font-style:normal;font-weight:400;src:local("72"),url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular.woff2?ui5-webcomponents) format("woff2"),url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular.woff?ui5-webcomponents) format("woff")}@font-face{font-family:"72full";font-style:normal;font-weight:400;src:local('72-full'),url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular-full.woff2?ui5-webcomponents) format("woff2"),url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular-full.woff?ui5-webcomponents) format("woff")}@font-face{font-family:"72";font-style:normal;font-weight:700;src:local('72-Bold'),url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff2?ui5-webcomponents) format("woff2"),url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff?ui5-webcomponents) format("woff")}@font-face{font-family:"72full";font-style:normal;font-weight:700;src:local('72-Bold-full'),url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff2?ui5-webcomponents) format("woff2"),url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff?ui5-webcomponents) format("woff")}@font-face{font-family:'72-Bold';font-style:normal;src:local('72-Bold'),url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff2?ui5-webcomponents) format("woff2"),url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff?ui5-webcomponents) format("woff")}@font-face{font-family:'72-Boldfull';font-style:normal;src:url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff2?ui5-webcomponents) format("woff2"),url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff?ui5-webcomponents) format("woff")}@font-face{font-family:'72-Light';font-style:normal;src:local('72-Light'),url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light.woff2?ui5-webcomponents) format("woff2"),url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light.woff?ui5-webcomponents) format("woff")}@font-face{font-family:'72-Lightfull';font-style:normal;src:url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light-full.woff2?ui5-webcomponents) format("woff2"),url(https://ui5.sap.com/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light-full.woff?ui5-webcomponents) format("woff")}@font-face{font-family:"72Black";font-style:bold;font-weight:900;src:local('72Black'),url(https://openui5nightly.hana.ondemand.com/resources/sap/ui/core/themes/sap_horizon/fonts/72-Black.woff2?ui5-webcomponents) format("woff2"),url(https://openui5nightly.hana.ondemand.com/resources/sap/ui/core/themes/sap_horizon/fonts/72-Black.woff?ui5-webcomponents) format("woff")}`},lr={packageName:"@ui5/webcomponents-base",fileName:"OverrideFontFace.css",content:"@font-face{font-family:'72override';unicode-range:U+0102-0103,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EB7,U+1EB8-1EC7,U+1EC8-1ECB,U+1ECC-1EE3,U+1EE4-1EF1,U+1EF4-1EF7;src:local('Arial'),local('Helvetica'),local('sans-serif')}"};const ur=()=>{const e=_("OpenUI5Support");(!e||!e.isLoaded())&&dr(),hr()},dr=()=>{ft("data-ui5-font-face")||ht(cr,"data-ui5-font-face")},hr=()=>{ft("data-ui5-font-face-override")||ht(lr,"data-ui5-font-face-override")};var fr={packageName:"@ui5/webcomponents-base",fileName:"SystemCSSVars.css",content:":root{--_ui5_content_density:cozy}.sapUiSizeCompact,.ui5-content-density-compact,[data-ui5-compact-size]{--_ui5_content_density:compact}[dir=rtl]{--_ui5_dir:rtl}[dir=ltr]{--_ui5_dir:ltr}"};const pr=()=>{ft("data-ui5-system-css-vars")||ht(fr,"data-ui5-system-css-vars")};let X;const gr=async()=>X||(X=new Promise(async e=>{qs();const t=_("OpenUI5Support"),s=_("F6Navigation");t?await t.init():s&&s.init(),await ar(),await as(pt()),t&&t.attachListeners(),ur(),pr(),e()}),X);class F{static isValid(t){}static attributeToProperty(t){return t}static propertyToAttribute(t){return`${t}`}static valuesAreEqual(t,s){return t===s}static generateTypeAccessors(t){Object.keys(t).forEach(s=>{Object.defineProperty(this,s,{get(){return t[s]}})})}}const et=(e,t,s=!1)=>{if(typeof e!="function"||typeof t!="function")return!1;if(s&&e===t)return!0;let n=e;do n=Object.getPrototypeOf(n);while(n!==null&&n!==t);return n===t},Et=new Map,Tt=new Map,Ae=e=>{if(!Et.has(e)){const t=mr(e.split("-"));Et.set(e,t)}return Et.get(e)},ds=e=>{if(!Tt.has(e)){const t=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();Tt.set(e,t)}return Tt.get(e)},mr=e=>e.map((t,s)=>s===0?t.toLowerCase():t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join(""),yr=e=>{if(!(e instanceof HTMLElement))return"default";const t=e.getAttribute("slot");if(t){const s=t.match(/^(.+?)-\d+$/);return s?s[1]:t}return"default"},Ht=e=>e&&e instanceof HTMLElement&&e.localName==="slot",hs=e=>Ht(e)?e.assignedNodes({flatten:!0}).filter(t=>t instanceof HTMLElement):[e],_r=e=>{const t=(s,n)=>s.concat(hs(n));return e.reduce(t,[])};let wr,be={include:[/^ui5-/],exclude:[]};const Mt=new Map,fs=()=>wr,Ft=e=>{if(!Mt.has(e)){const t=be.include.some(s=>e.match(s))&&!be.exclude.some(s=>e.match(s));Mt.set(e,t)}return Mt.get(e)},jt=e=>{if(Ft(e))return fs()};class vr{constructor(t){this.metadata=t}getInitialState(){if(Object.prototype.hasOwnProperty.call(this,"_initialState"))return this._initialState;const t={},s=this.slotsAreManaged(),n=this.getProperties();for(const r in n){const o=n[r].type,i=n[r].defaultValue;o===Boolean?(t[r]=!1,i!==void 0&&console.warn("The 'defaultValue' metadata key is ignored for all booleans properties, they would be initialized with 'false' by default")):n[r].multiple?t[r]=[]:o===Object?t[r]="defaultValue"in n[r]?n[r].defaultValue:{}:o===String?t[r]="defaultValue"in n[r]?n[r].defaultValue:"":t[r]=i}if(s){const r=this.getSlots();for(const[o,i]of Object.entries(r)){const a=i.propertyName||o;t[a]=[]}}return this._initialState=t,t}static validatePropertyValue(t,s){return s.multiple?t.map(r=>$e(r,s)):$e(t,s)}static validateSlotValue(t,s){return Sr(t,s)}getPureTag(){return this.metadata.tag}getTag(){const t=this.metadata.tag,s=jt(t);return s?`${t}-${s}`:t}getAltTag(){const t=this.metadata.altTag;if(!t)return;const s=jt(t);return s?`${t}-${s}`:t}hasAttribute(t){const s=this.getProperties()[t];return s.type!==Object&&!s.noAttribute&&!s.multiple}getPropertiesList(){return Object.keys(this.getProperties())}getAttributesList(){return this.getPropertiesList().filter(this.hasAttribute,this).map(ds)}getSlots(){return this.metadata.slots||{}}canSlotText(){const t=this.getSlots().default;return t&&t.type===Node}hasSlots(){return!!Object.entries(this.getSlots()).length}hasIndividualSlots(){return this.slotsAreManaged()&&Object.entries(this.getSlots()).some(([t,s])=>s.individualSlots)}slotsAreManaged(){return!!this.metadata.managedSlots}supportsF6FastNavigation(){return!!this.metadata.fastNavigation}getProperties(){return this.metadata.properties||{}}getEvents(){return this.metadata.events||{}}isLanguageAware(){return!!this.metadata.languageAware}isThemeAware(){return!!this.metadata.themeAware}shouldInvalidateOnChildChange(t,s,n){const r=this.getSlots()[t].invalidateOnChildChange;if(r===void 0)return!1;if(typeof r=="boolean")return r;if(typeof r=="object"){if(s==="property"){if(r.properties===void 0)return!1;if(typeof r.properties=="boolean")return r.properties;if(Array.isArray(r.properties))return r.properties.includes(n);throw new Error("Wrong format for invalidateOnChildChange.properties: boolean or array is expected")}if(s==="slot"){if(r.slots===void 0)return!1;if(typeof r.slots=="boolean")return r.slots;if(Array.isArray(r.slots))return r.slots.includes(n);throw new Error("Wrong format for invalidateOnChildChange.slots: boolean or array is expected")}}throw new Error("Wrong format for invalidateOnChildChange: boolean or object is expected")}}const $e=(e,t)=>{const s=t.type;if(s===Boolean)return typeof e=="boolean"?e:!1;if(s===String)return typeof e=="string"||typeof e=="undefined"||e===null?e:e.toString();if(s===Object)return typeof e=="object"?e:t.defaultValue;if(et(s,F))return s.isValid(e)?e:t.defaultValue},Sr=(e,t)=>(e&&hs(e).forEach(s=>{if(!(s instanceof t.type))throw new Error(`${s} is not of type ${t.type}`)}),e);customElements.get("ui5-static-area")||customElements.define("ui5-static-area",class extends HTMLElement{});const Ar=(e,t)=>{const s=br(t),n=fs();return e(t,s,n)},br=e=>{const t=e.constructor.getMetadata().getPureTag(),s=e.constructor.getUniqueDependencies().map(n=>n.getMetadata().getPureTag()).filter(Ft);return Ft(t)&&s.push(t),s},$r=M("CustomStyle.eventProvider",new T),Cr="CustomCSSChange",Qt=e=>{$r.attachEvent(Cr,e)},Ce=M("CustomStyle.customCSSFor",{});Qt(e=>{Jt({tag:e})});const Er=e=>Ce[e]?Ce[e].join(""):"",Lt=e=>Array.isArray(e)?ps(e.filter(t=>!!t)).map(t=>typeof t=="string"?t:t.content).join(" "):typeof e=="string"?e:e.content,ps=e=>e.reduce((t,s)=>t.concat(Array.isArray(s)?ps(s):s),[]),st=new Map;Qt(e=>{st.delete(`${e}_normal`)});const gs=(e,t=!1)=>{const s=e.getMetadata().getTag(),n=`${s}_${t?"static":"normal"}`,r=_("OpenUI5Enablement");if(!st.has(n)){let o,i="";if(r&&(i=Lt(r.getBusyIndicatorStyles())),t)o=Lt(e.staticAreaStyles);else{const a=Er(s)||"";o=`${Lt(e.styles)} ${a}`}o=`${o} ${i}`,st.set(n,o)}return st.get(n)},nt=new Map;Qt(e=>{nt.delete(`${e}_normal`)});const Tr=(e,t=!1)=>{const n=`${e.getMetadata().getTag()}_${t?"static":"normal"}`;if(!nt.has(n)){const r=gs(e,t),o=new CSSStyleSheet;o.replaceSync(r),nt.set(n,[o])}return nt.get(n)},Vt=(e,t=!1)=>{let s;const n=t?"staticAreaTemplate":"template",r=t?e.staticAreaItem.shadowRoot:e.shadowRoot,o=Ar(e.constructor[n],e);document.adoptedStyleSheets?r.adoptedStyleSheets=Tr(e.constructor,t):s=gs(e.constructor,t),e.constructor.render(o,r,s,t,{host:e})},Mr="--_ui5_content_density",Lr=e=>getComputedStyle(e).getPropertyValue(Mr);var Or=e=>{const t=/\$([-a-z0-9A-Z._]+)(?::([^$]*))?\$/.exec(e);return t&&t[2]?t[2].split(/,/):null};const Pr={iw:"he",ji:"yi",in:"id",sh:"sr"},Ir=Or("$cldr-rtl-locales:ar,fa,he$")||[],Dr=e=>(e=e&&Pr[e]||e,Ir.indexOf(e)>=0),ms=()=>{const e=Is();return e!==null?!!e:Dr(it()||ke())},Rr="--_ui5_dir",ys=e=>{const t=window.document,s=["ltr","rtl"],n=getComputedStyle(e).getPropertyValue(Rr);return s.includes(n)?n:s.includes(e.dir)?e.dir:s.includes(t.documentElement.dir)?t.documentElement.dir:s.includes(t.body.dir)?t.body.dir:ms()?"rtl":void 0};class j extends HTMLElement{constructor(){super(),this._rendered=!1,this.attachShadow({mode:"open"})}setOwnerElement(t){this.ownerElement=t,this.classList.add(this.ownerElement._id),this.ownerElement.hasAttribute("data-ui5-static-stable")&&this.setAttribute("data-ui5-stable",this.ownerElement.getAttribute("data-ui5-static-stable"))}update(){this._rendered&&(this._updateContentDensity(),this._updateDirection(),Vt(this.ownerElement,!0))}_updateContentDensity(){Lr(this.ownerElement)==="compact"?(this.classList.add("sapUiSizeCompact"),this.classList.add("ui5-content-density-compact")):(this.classList.remove("sapUiSizeCompact"),this.classList.remove("ui5-content-density-compact"))}_updateDirection(){const t=ys(this.ownerElement);t?this.setAttribute("dir",t):this.removeAttribute("dir")}async getDomRef(){return this._updateContentDensity(),this._rendered||(this._rendered=!0,Vt(this.ownerElement,!0)),await Kt(),this.shadowRoot}static getTag(){const t="ui5-static-area-item",s=jt(t);return s?`${t}-${s}`:t}static createInstance(){return customElements.get(j.getTag())||customElements.define(j.getTag(),j),document.createElement(this.getTag())}}const zt=new WeakMap;let xr=(e,t,s)=>{const n=new MutationObserver(t);return n.observe(e,s),n},Nr=e=>{e.disconnect()};const Ur=(e,t,s)=>{const n=xr(e,t,s);zt.set(e,n)},kr=e=>{const t=zt.get(e);t&&(Nr(t),zt.delete(e))},Br=["value-changed"],Hr=e=>Br.includes(e);let rt;const Fr=e=>{const t=te();return!(t.events&&t.events.includes&&t.events.includes(e))},te=()=>(rt===void 0&&(rt=xs()),rt),jr=e=>{const t=te();return Hr(e)?!1:t===!0?!0:!Fr(e)},Vr=e=>{rt=e},zr=["disabled","title","hidden","role","draggable"],Ee=e=>zr.includes(e)||e.startsWith("aria")?!0:![HTMLElement,Element,Node].some(s=>s.prototype.hasOwnProperty(e)),Te=(e,t)=>{if(e.length!==t.length)return!1;for(let s=0;s<e.length;s++)if(e[s]!==t[s])return!1;return!0},Wr=(e,t)=>class extends e{constructor(){super(),t&&t()}};let Zr=0;const Me=new Map,Ot=new Map;function B(e){this._suppressInvalidation||(this.onInvalidation(e),this._changedState.push(e),Xe(this),this._eventProvider.fireEvent("invalidate",{...e,target:this}))}let Le={};class L extends HTMLElement{constructor(){super(),this._changedState=[],this._suppressInvalidation=!0,this._inDOM=!1,this._fullyConnected=!1,this._childChangeListeners=new Map,this._slotChangeListeners=new Map,this._eventProvider=new T;let t;this._domRefReadyPromise=new Promise(s=>{t=s}),this._domRefReadyPromise._deferredResolve=t,this._initializeState(),this._upgradeAllProperties(),this.constructor._needsShadowDOM()&&this.attachShadow({mode:"open"})}get _id(){return this.__id||(this.__id=`ui5wc_${++Zr}`),this.__id}async connectedCallback(){this.setAttribute(this.constructor.getMetadata().getPureTag(),""),this.constructor.getMetadata().supportsF6FastNavigation()&&this.setAttribute("data-sap-ui-fastnavgroup","true");const t=this.constructor.getMetadata().slotsAreManaged();this._inDOM=!0,t&&(this._startObservingDOMChildren(),await this._processChildren()),this._inDOM&&(Ye(this),this._domRefReadyPromise._deferredResolve(),this._fullyConnected=!0,typeof this.onEnterDOM=="function"&&this.onEnterDOM())}disconnectedCallback(){const t=this.constructor.getMetadata().slotsAreManaged();this._inDOM=!1,t&&this._stopObservingDOMChildren(),this._fullyConnected&&(typeof this.onExitDOM=="function"&&this.onExitDOM(),this._fullyConnected=!1),this.staticAreaItem&&this.staticAreaItem.parentElement&&this.staticAreaItem.parentElement.removeChild(this.staticAreaItem),nn(this)}_startObservingDOMChildren(){if(!this.constructor.getMetadata().hasSlots())return;const s=this.constructor.getMetadata().canSlotText(),n={childList:!0,subtree:s,characterData:s};Ur(this,this._processChildren.bind(this),n)}_stopObservingDOMChildren(){kr(this)}async _processChildren(){this.constructor.getMetadata().hasSlots()&&await this._updateSlots()}async _updateSlots(){const t=this.constructor.getMetadata().getSlots(),s=this.constructor.getMetadata().canSlotText(),n=Array.from(s?this.childNodes:this.children),r=new Map,o=new Map;for(const[h,d]of Object.entries(t)){const u=d.propertyName||h;o.set(u,h),r.set(u,[...this._state[u]]),this._clearSlot(h,d)}const i=new Map,a=new Map,c=n.map(async(h,d)=>{const u=yr(h),p=t[u];if(p===void 0){const g=Object.keys(t).join(", ");console.warn(`Unknown slotName: ${u}, ignoring`,h,`Valid values are: ${g}`);return}if(p.individualSlots){const g=(i.get(u)||0)+1;i.set(u,g),h._individualSlot=`${u}-${g}`}if(h instanceof HTMLElement){const g=h.localName;if(g.includes("-")){if(!window.customElements.get(g)){const bs=window.customElements.whenDefined(g);let K=Me.get(g);K||(K=new Promise($s=>setTimeout($s,1e3)),Me.set(g,K)),await Promise.race([bs,K])}window.customElements.upgrade(h)}}h=this.constructor.getMetadata().constructor.validateSlotValue(h,p),h.isUI5Element&&p.invalidateOnChildChange&&(h.attachInvalidate||h._attachChange).bind(h)(this._getChildChangeListener(u)),Ht(h)&&this._attachSlotChange(h,u);const v=p.propertyName||u;a.has(v)?a.get(v).push({child:h,idx:d}):a.set(v,[{child:h,idx:d}])});await Promise.all(c),a.forEach((h,d)=>{this._state[d]=h.sort((u,p)=>u.idx-p.idx).map(u=>u.child)});let l=!1;for(const[h,d]of Object.entries(t)){const u=d.propertyName||h;Te(r.get(u),this._state[u])||(B.call(this,{type:"slot",name:o.get(u),reason:"children"}),l=!0)}l||B.call(this,{type:"slot",name:"default",reason:"textcontent"})}_clearSlot(t,s){const n=s.propertyName||t;this._state[n].forEach(o=>{o&&o.isUI5Element&&(o.detachInvalidate||o._detachChange).bind(o)(this._getChildChangeListener(t)),Ht(o)&&this._detachSlotChange(o,t)}),this._state[n]=[]}attachInvalidate(t){this._eventProvider.attachEvent("invalidate",t)}detachInvalidate(t){this._eventProvider.detachEvent("invalidate",t)}_onChildChange(t,s){!this.constructor.getMetadata().shouldInvalidateOnChildChange(t,s.type,s.name)||B.call(this,{type:"slot",name:t,reason:"childchange",child:s.target})}attributeChangedCallback(t,s,n){const r=this.constructor.getMetadata().getProperties(),o=t.replace(/^ui5-/,""),i=Ae(o);if(r.hasOwnProperty(i)){const a=r[i].type;a===Boolean?n=n!==null:et(a,F)&&(n=a.attributeToProperty(n)),this[i]=n}}_updateAttribute(t,s){if(!this.constructor.getMetadata().hasAttribute(t))return;const r=this.constructor.getMetadata().getProperties()[t].type,o=ds(t),i=this.getAttribute(o);r===Boolean?s===!0&&i===null?this.setAttribute(o,""):s===!1&&i!==null&&this.removeAttribute(o):et(r,F)?this.setAttribute(o,r.propertyToAttribute(s)):typeof s!="object"&&i!==s&&this.setAttribute(o,s)}_upgradeProperty(t){if(this.hasOwnProperty(t)){const s=this[t];delete this[t],this[t]=s}}_upgradeAllProperties(){this.constructor.getMetadata().getPropertiesList().forEach(this._upgradeProperty,this)}_initializeState(){this._state={...this.constructor.getMetadata().getInitialState()}}_getChildChangeListener(t){return this._childChangeListeners.has(t)||this._childChangeListeners.set(t,this._onChildChange.bind(this,t)),this._childChangeListeners.get(t)}_getSlotChangeListener(t){return this._slotChangeListeners.has(t)||this._slotChangeListeners.set(t,this._onSlotChange.bind(this,t)),this._slotChangeListeners.get(t)}_attachSlotChange(t,s){t.addEventListener("slotchange",this._getSlotChangeListener(s))}_detachSlotChange(t,s){t.removeEventListener("slotchange",this._getSlotChangeListener(s))}_onSlotChange(t){B.call(this,{type:"slot",name:t,reason:"slotchange"})}onInvalidation(t){}_render(){const t=this.constructor.getMetadata().hasIndividualSlots();this._suppressInvalidation=!0,typeof this.onBeforeRendering=="function"&&this.onBeforeRendering(),this._onComponentStateFinalized&&this._onComponentStateFinalized(),this._suppressInvalidation=!1,this._changedState=[],this.constructor._needsShadowDOM()&&Vt(this),this.staticAreaItem&&this.staticAreaItem.update(),t&&this._assignIndividualSlotsToChildren(),typeof this.onAfterRendering=="function"&&this.onAfterRendering()}_assignIndividualSlotsToChildren(){Array.from(this.children).forEach(s=>{s._individualSlot&&s.setAttribute("slot",s._individualSlot)})}_waitForDomRef(){return this._domRefReadyPromise}getDomRef(){if(typeof this._getRealDomRef=="function")return this._getRealDomRef();if(!this.shadowRoot||this.shadowRoot.children.length===0)return;const t=[...this.shadowRoot.children].filter(s=>!["link","style"].includes(s.localName));return t.length!==1&&console.warn(`The shadow DOM for ${this.constructor.getMetadata().getTag()} does not have a top level element, the getDomRef() method might not work as expected`),t[0]}getFocusDomRef(){const t=this.getDomRef();if(t)return t.querySelector("[data-sap-focus-ref]")||t}async getFocusDomRefAsync(){return await this._waitForDomRef(),this.getFocusDomRef()}async focus(){await this._waitForDomRef();const t=this.getFocusDomRef();t&&typeof t.focus=="function"&&t.focus()}fireEvent(t,s,n=!1,r=!0){const o=this._fireEvent(t,s,n,r),i=Ae(t);return i!==t?o&&this._fireEvent(i,s,n):o}_fireEvent(t,s,n=!1,r=!0){const o=new CustomEvent(`ui5-${t}`,{detail:s,composed:!1,bubbles:r,cancelable:n}),i=this.dispatchEvent(o);if(jr(t))return i;const a=new CustomEvent(t,{detail:s,composed:!1,bubbles:r,cancelable:n});return this.dispatchEvent(a)&&i}getSlottedNodes(t){return _r(this[t])}get effectiveDir(){return tn(this.constructor),ys(this)}get isUI5Element(){return!0}static get observedAttributes(){return this.getMetadata().getAttributesList()}static _needsShadowDOM(){return!!this.template}static _needsStaticArea(){return!!this.staticAreaTemplate}getStaticAreaItemDomRef(){if(!this.constructor._needsStaticArea())throw new Error("This component does not use the static area");return this.staticAreaItem||(this.staticAreaItem=j.createInstance(),this.staticAreaItem.setOwnerElement(this)),this.staticAreaItem.parentElement||Ze("ui5-static-area").appendChild(this.staticAreaItem),this.staticAreaItem.getDomRef()}static _generateAccessors(){const t=this.prototype,s=this.getMetadata().slotsAreManaged(),n=this.getMetadata().getProperties();for(const[r,o]of Object.entries(n)){if(Ee(r)||console.warn(`"${r}" is not a valid property name. Use a name that does not collide with DOM APIs`),o.type===Boolean&&o.defaultValue)throw new Error(`Cannot set a default value for property "${r}". All booleans are false by default.`);if(o.type===Array)throw new Error(`Wrong type for property "${r}". Properties cannot be of type Array - use "multiple: true" and set "type" to the single value type, such as "String", "Object", etc...`);if(o.type===Object&&o.defaultValue)throw new Error(`Cannot set a default value for property "${r}". All properties of type "Object" are empty objects by default.`);if(o.multiple&&o.defaultValue)throw new Error(`Cannot set a default value for property "${r}". All multiple properties are empty arrays by default.`);Object.defineProperty(t,r,{get(){if(this._state[r]!==void 0)return this._state[r];const i=o.defaultValue;return o.type===Boolean?!1:o.type===String?i:o.multiple?[]:i},set(i){let a;i=this.constructor.getMetadata().constructor.validatePropertyValue(i,o);const c=this._state[r];o.multiple&&o.compareValues?a=!Te(c,i):et(o.type,F)?a=!o.type.valuesAreEqual(c,i):a=c!==i,a&&(this._state[r]=i,B.call(this,{type:"property",name:r,newValue:i,oldValue:c}),this._updateAttribute(r,i))}})}if(s){const r=this.getMetadata().getSlots();for(const[o,i]of Object.entries(r)){Ee(o)||console.warn(`"${o}" is not a valid property name. Use a name that does not collide with DOM APIs`);const a=i.propertyName||o;Object.defineProperty(t,a,{get(){return this._state[a]!==void 0?this._state[a]:[]},set(){throw new Error("Cannot set slot content directly, use the DOM APIs (appendChild, removeChild, etc...)")}})}}}static get metadata(){return Le}static set metadata(t){Le=t}static get styles(){return""}static get staticAreaStyles(){return""}static get dependencies(){return[]}static getUniqueDependencies(){if(!Ot.has(this)){const t=this.dependencies.filter((s,n,r)=>r.indexOf(s)===n);Ot.set(this,t)}return Ot.get(this)}static whenDependenciesDefined(){return Promise.all(this.getUniqueDependencies().map(t=>t.define()))}static async onDefine(){return Promise.resolve()}static async define(){await gr(),await Promise.all([this.whenDependenciesDefined(),this.onDefine()]);const t=this.getMetadata().getTag(),s=this.getMetadata().getAltTag(),n=Js(t),r=customElements.get(t);return r&&!n?Ys(t):r||(this._generateAccessors(),ae(t),window.customElements.define(t,this),s&&!customElements.get(s)&&(ae(s),window.customElements.define(s,Wr(this,()=>{console.log(`The ${s} tag is deprecated and will be removed in the next release, please use ${t} instead.`)})))),this}static getMetadata(){if(this.hasOwnProperty("_metadata"))return this._metadata;const t=[this.metadata];let s=this;for(;s!==L;)s=Object.getPrototypeOf(s),t.unshift(s.metadata);const n=Zt({},...t);return this._metadata=new vr(n),this._metadata}}/**
10
+ * @license
11
+ * Copyright 2017 Google LLC
12
+ * SPDX-License-Identifier: BSD-3-Clause
13
+ */var Pt;const x=globalThis.trustedTypes,Oe=x?x.createPolicy("lit-html",{createHTML:e=>e}):void 0,S=`lit$${(Math.random()+"").slice(9)}$`,_s="?"+S,qr=`<${_s}>`,N=document,W=(e="")=>N.createComment(e),Z=e=>e===null||typeof e!="object"&&typeof e!="function",ws=Array.isArray,Gr=e=>{var t;return ws(e)||typeof((t=e)===null||t===void 0?void 0:t[Symbol.iterator])=="function"},H=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Pe=/-->/g,Ie=/>/g,$=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,De=/'/g,Re=/"/g,vs=/^(?:script|style|textarea|title)$/i,Kr=e=>(t,...s)=>({_$litType$:e,strings:t,values:s}),Jr=Kr(1),U=Symbol.for("lit-noChange"),f=Symbol.for("lit-nothing"),xe=new WeakMap,Xr=(e,t,s)=>{var n,r;const o=(n=s==null?void 0:s.renderBefore)!==null&&n!==void 0?n:t;let i=o._$litPart$;if(i===void 0){const a=(r=s==null?void 0:s.renderBefore)!==null&&r!==void 0?r:null;o._$litPart$=i=new G(t.insertBefore(W(),a),a,void 0,s!=null?s:{})}return i._$AI(e),i},D=N.createTreeWalker(N,129,null,!1),Yr=(e,t)=>{const s=e.length-1,n=[];let r,o=t===2?"<svg>":"",i=H;for(let c=0;c<s;c++){const l=e[c];let h,d,u=-1,p=0;for(;p<l.length&&(i.lastIndex=p,d=i.exec(l),d!==null);)p=i.lastIndex,i===H?d[1]==="!--"?i=Pe:d[1]!==void 0?i=Ie:d[2]!==void 0?(vs.test(d[2])&&(r=RegExp("</"+d[2],"g")),i=$):d[3]!==void 0&&(i=$):i===$?d[0]===">"?(i=r!=null?r:H,u=-1):d[1]===void 0?u=-2:(u=i.lastIndex-d[2].length,h=d[1],i=d[3]===void 0?$:d[3]==='"'?Re:De):i===Re||i===De?i=$:i===Pe||i===Ie?i=H:(i=$,r=void 0);const v=i===$&&e[c+1].startsWith("/>")?" ":"";o+=i===H?l+qr:u>=0?(n.push(h),l.slice(0,u)+"$lit$"+l.slice(u)+S+v):l+S+(u===-2?(n.push(void 0),c):v)}const a=o+(e[s]||"<?>")+(t===2?"</svg>":"");if(!Array.isArray(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return[Oe!==void 0?Oe.createHTML(a):a,n]};class q{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let o=0,i=0;const a=t.length-1,c=this.parts,[l,h]=Yr(t,s);if(this.el=q.createElement(l,n),D.currentNode=this.el.content,s===2){const d=this.el.content,u=d.firstChild;u.remove(),d.append(...u.childNodes)}for(;(r=D.nextNode())!==null&&c.length<a;){if(r.nodeType===1){if(r.hasAttributes()){const d=[];for(const u of r.getAttributeNames())if(u.endsWith("$lit$")||u.startsWith(S)){const p=h[i++];if(d.push(u),p!==void 0){const v=r.getAttribute(p.toLowerCase()+"$lit$").split(S),g=/([.?@])?(.*)/.exec(p);c.push({type:1,index:o,name:g[2],strings:v,ctor:g[1]==="."?to:g[1]==="?"?so:g[1]==="@"?no:gt})}else c.push({type:6,index:o})}for(const u of d)r.removeAttribute(u)}if(vs.test(r.tagName)){const d=r.textContent.split(S),u=d.length-1;if(u>0){r.textContent=x?x.emptyScript:"";for(let p=0;p<u;p++)r.append(d[p],W()),D.nextNode(),c.push({type:2,index:++o});r.append(d[u],W())}}}else if(r.nodeType===8)if(r.data===_s)c.push({type:2,index:o});else{let d=-1;for(;(d=r.data.indexOf(S,d+1))!==-1;)c.push({type:7,index:o}),d+=S.length-1}o++}}static createElement(t,s){const n=N.createElement("template");return n.innerHTML=t,n}}function k(e,t,s=e,n){var r,o,i,a;if(t===U)return t;let c=n!==void 0?(r=s._$Cl)===null||r===void 0?void 0:r[n]:s._$Cu;const l=Z(t)?void 0:t._$litDirective$;return(c==null?void 0:c.constructor)!==l&&((o=c==null?void 0:c._$AO)===null||o===void 0||o.call(c,!1),l===void 0?c=void 0:(c=new l(e),c._$AT(e,s,n)),n!==void 0?((i=(a=s)._$Cl)!==null&&i!==void 0?i:a._$Cl=[])[n]=c:s._$Cu=c),c!==void 0&&(t=k(e,c._$AS(e,t.values),c,n)),t}class Qr{constructor(t,s){this.v=[],this._$AN=void 0,this._$AD=t,this._$AM=s}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(t){var s;const{el:{content:n},parts:r}=this._$AD,o=((s=t==null?void 0:t.creationScope)!==null&&s!==void 0?s:N).importNode(n,!0);D.currentNode=o;let i=D.nextNode(),a=0,c=0,l=r[0];for(;l!==void 0;){if(a===l.index){let h;l.type===2?h=new G(i,i.nextSibling,this,t):l.type===1?h=new l.ctor(i,l.name,l.strings,this,t):l.type===6&&(h=new ro(i,this,t)),this.v.push(h),l=r[++c]}a!==(l==null?void 0:l.index)&&(i=D.nextNode(),a++)}return o}m(t){let s=0;for(const n of this.v)n!==void 0&&(n.strings!==void 0?(n._$AI(t,n,s),s+=n.strings.length-2):n._$AI(t[s])),s++}}class G{constructor(t,s,n,r){var o;this.type=2,this._$AH=f,this._$AN=void 0,this._$AA=t,this._$AB=s,this._$AM=n,this.options=r,this._$Cg=(o=r==null?void 0:r.isConnected)===null||o===void 0||o}get _$AU(){var t,s;return(s=(t=this._$AM)===null||t===void 0?void 0:t._$AU)!==null&&s!==void 0?s:this._$Cg}get parentNode(){let t=this._$AA.parentNode;const s=this._$AM;return s!==void 0&&t.nodeType===11&&(t=s.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,s=this){t=k(this,t,s),Z(t)?t===f||t==null||t===""?(this._$AH!==f&&this._$AR(),this._$AH=f):t!==this._$AH&&t!==U&&this.$(t):t._$litType$!==void 0?this.T(t):t.nodeType!==void 0?this.k(t):Gr(t)?this.S(t):this.$(t)}M(t,s=this._$AB){return this._$AA.parentNode.insertBefore(t,s)}k(t){this._$AH!==t&&(this._$AR(),this._$AH=this.M(t))}$(t){this._$AH!==f&&Z(this._$AH)?this._$AA.nextSibling.data=t:this.k(N.createTextNode(t)),this._$AH=t}T(t){var s;const{values:n,_$litType$:r}=t,o=typeof r=="number"?this._$AC(t):(r.el===void 0&&(r.el=q.createElement(r.h,this.options)),r);if(((s=this._$AH)===null||s===void 0?void 0:s._$AD)===o)this._$AH.m(n);else{const i=new Qr(o,this),a=i.p(this.options);i.m(n),this.k(a),this._$AH=i}}_$AC(t){let s=xe.get(t.strings);return s===void 0&&xe.set(t.strings,s=new q(t)),s}S(t){ws(this._$AH)||(this._$AH=[],this._$AR());const s=this._$AH;let n,r=0;for(const o of t)r===s.length?s.push(n=new G(this.M(W()),this.M(W()),this,this.options)):n=s[r],n._$AI(o),r++;r<s.length&&(this._$AR(n&&n._$AB.nextSibling,r),s.length=r)}_$AR(t=this._$AA.nextSibling,s){var n;for((n=this._$AP)===null||n===void 0||n.call(this,!1,!0,s);t&&t!==this._$AB;){const r=t.nextSibling;t.remove(),t=r}}setConnected(t){var s;this._$AM===void 0&&(this._$Cg=t,(s=this._$AP)===null||s===void 0||s.call(this,t))}}class gt{constructor(t,s,n,r,o){this.type=1,this._$AH=f,this._$AN=void 0,this.element=t,this.name=s,this._$AM=r,this.options=o,n.length>2||n[0]!==""||n[1]!==""?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=f}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,s=this,n,r){const o=this.strings;let i=!1;if(o===void 0)t=k(this,t,s,0),i=!Z(t)||t!==this._$AH&&t!==U,i&&(this._$AH=t);else{const a=t;let c,l;for(t=o[0],c=0;c<o.length-1;c++)l=k(this,a[n+c],s,c),l===U&&(l=this._$AH[c]),i||(i=!Z(l)||l!==this._$AH[c]),l===f?t=f:t!==f&&(t+=(l!=null?l:"")+o[c+1]),this._$AH[c]=l}i&&!r&&this.C(t)}C(t){t===f?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t!=null?t:"")}}class to extends gt{constructor(){super(...arguments),this.type=3}C(t){this.element[this.name]=t===f?void 0:t}}const eo=x?x.emptyScript:"";class so extends gt{constructor(){super(...arguments),this.type=4}C(t){t&&t!==f?this.element.setAttribute(this.name,eo):this.element.removeAttribute(this.name)}}class no extends gt{constructor(t,s,n,r,o){super(t,s,n,r,o),this.type=5}_$AI(t,s=this){var n;if((t=(n=k(this,t,s,0))!==null&&n!==void 0?n:f)===U)return;const r=this._$AH,o=t===f&&r!==f||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,i=t!==f&&(r===f||o);o&&this.element.removeEventListener(this.name,this,r),i&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var s,n;typeof this._$AH=="function"?this._$AH.call((n=(s=this.options)===null||s===void 0?void 0:s.host)!==null&&n!==void 0?n:this.element,t):this._$AH.handleEvent(t)}}class ro{constructor(t,s,n){this.element=t,this.type=6,this._$AN=void 0,this._$AM=s,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(t){k(this,t)}}const Ne=window.litHtmlPolyfillSupport;Ne==null||Ne(q,G),((Pt=globalThis.litHtmlVersions)!==null&&Pt!==void 0?Pt:globalThis.litHtmlVersions=[]).push("2.2.2");/**
14
+ * @license
15
+ * Copyright 2017 Google LLC
16
+ * SPDX-License-Identifier: BSD-3-Clause
17
+ */const oo={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6};class io{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,s,n){this._$Ct=t,this._$AM=s,this._$Ci=n}_$AS(t,s){return this.update(t,s)}update(t,s){return this.render(...s)}}/**
18
+ * @license
19
+ * Copyright 2017 Google LLC
20
+ * SPDX-License-Identifier: BSD-3-Clause
21
+ */class Ue extends io{constructor(t){if(super(t),this.it=f,t.type!==oo.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===f||t==null)return this.ft=void 0,this.it=t;if(t===U)return t;if(typeof t!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this.ft;this.it=t;const s=[t];return s.raw=s,this.ft={_$litType$:this.constructor.resultType,strings:s,values:[]}}}Ue.directiveName="unsafeHTML",Ue.resultType=1;const y=(...e)=>{const t=_("LitStatic");return(t?t.html:Jr)(...e)},mt=(e,t,s,n,{host:r}={})=>{const o=_("OpenUI5Enablement");o&&!n&&(e=o.wrapTemplateResultInBusyMarkup(y,r,e)),typeof s=="string"?e=y`<style>${s}</style>${e}`:Array.isArray(s)&&s.length&&(e=y`${s.map(i=>y`<link type="text/css" rel="stylesheet" href="${i}">`)}${e}`),Xr(e,t,{host:r})},ao={tag:"ui5-test-generic",properties:{strProp:{type:String},boolProp:{type:Boolean},objectProp:{type:Object},noAttributeProp:{type:String,noAttribute:!0},multiProp:{type:String,multiple:!0},defaultValueProp:{type:String,defaultValue:"Hello"}},managedSlots:!0,slots:{default:{type:Node},other:{type:HTMLElement},individual:{type:HTMLElement,individualSlots:!0},named:{type:HTMLElement,propertyName:"items"}}};class Ss extends L{static get metadata(){return ao}static get render(){return mt}static get template(){return t=>y`<div><p>
22
+ <slot></slot>
23
+ <slot name="other"></slot>
24
+ <slot name="individual-1"></slot>
25
+ <slot name="individual-2"></slot>
26
+ </p></div>`}static get styles(){return`:host {
27
+ display: inline-block;
28
+ border: 1px solid black;
29
+ color: var(--var1);
30
+ }`}onBeforeRendering(){}onAfterRendering(){}onEnterDOM(){}onExitDOM(){}}Ss.define();const co={tag:"ui5-test-no-shadow"};class lo extends L{static get metadata(){return co}}lo.define();const uo={tag:"ui5-test-parent",managedSlots:!0,slots:{default:{type:Node,invalidateOnChildChange:{properties:["prop1"]}},items:{type:HTMLElement,invalidateOnChildChange:{properties:!0}}}};class ho extends L{static get metadata(){return uo}static get render(){return mt}static get template(){return t=>y`<div>
31
+ <slot></slot>
32
+ </div>`}}ho.define();const fo={tag:"ui5-test-child",properties:{prop1:{type:String},prop2:{type:String},prop3:{type:String}}};class po extends L{static get metadata(){return fo}static get render(){return mt}static get template(){return t=>y`<div></div>`}}po.define();const go={tag:"ui5-with-static-area",properties:{staticContent:{type:Boolean}},slots:{}};class mo extends L{static get metadata(){return go}static get render(){return mt}static get template(){return t=>y`
33
+ <div dir=${t.effectiveDir}>
34
+ WithStaticArea works!
35
+ </div>`}static get staticAreaTemplate(){return t=>y`
36
+ <div class="ui5-with-static-area-content">
37
+ Static area content.
38
+ </div>`}static get styles(){return`
39
+ :host {
40
+ display: inline-block;
41
+ border: 1px solid black;
42
+ color: red;
43
+ }`}async addStaticArea(){if(!this.staticContent)return;const t=await this.getStaticAreaItemDomRef();return this.responsivePopover=t.querySelector(".ui5-with-static-area-content"),this.responsivePopover}onBeforeRendering(){this.addStaticArea()}onAfterRendering(){}onEnterDOM(){}onExitDOM(){}}mo.define();const yo={tag:"ui5-test-generic-ext",properties:{extProp:{type:String},strProp:{defaultValue:"Ext"}},slots:{extSlot:{type:HTMLElement}}};class _o extends Ss{static get metadata(){return yo}}_o.define();const wo=":root{ --var1: red; }",vo=":root{ --var1: green; }",So=":root{ --var1: blue; }",Ao=":root{ --var1: orange; }",bo=":root{ --var1: orange; }",$o=":root{ --var1: yellow; }",Co=":root{ --var1: yellow; }";b("@ui5/webcomponents-base-test","sap_fiori_3",()=>wo);b("@ui5/webcomponents-base-test","sap_fiori_3_dark",()=>vo);b("@ui5/webcomponents-base-test","sap_belize",()=>So);b("@ui5/webcomponents-base-test","sap_belize_hcb",()=>Ao);b("@ui5/webcomponents-base-test","sap_belize_hcw",()=>bo);b("@ui5/webcomponents-base-test","sap_fiori_3_hcb",()=>$o);b("@ui5/webcomponents-base-test","sap_fiori_3_hcw",()=>Co);const Eo=/('')|'([^']+(?:''[^']*)*)(?:'|$)|\{([0-9]+(?:\s*,[^{}]*)?)\}|[{}]/g,To=(e,t)=>(t=t||[],e.replace(Eo,(s,n,r,o,i)=>{if(n)return"'";if(r)return r.replace(/''/g,"'");if(o)return String(t[parseInt(o)]);throw new Error(`[i18n]: pattern syntax error at pos ${i}`)})),It=new Map;class Mo{constructor(t){this.packageName=t}getText(t,...s){if(typeof t=="string"&&(t={key:t,defaultText:t}),!t||!t.key)return"";const n=_n(this.packageName);n&&!n[t.key]&&console.warn(`Key ${t.key} not found in the i18n bundle, the default text will be used`);const r=n&&n[t.key]?n[t.key]:t.defaultText||t.key;return To(r,s)}}const Lo=e=>{if(It.has(e))return It.get(e);const t=new Mo(e);return It.set(e,t),t},Oo=async e=>(await ts(e),Lo(e));let Dt;const Po=()=>(Dt===void 0&&(Dt=Os()),Dt),As={Gregorian:"Gregorian",Islamic:"Islamic",Japanese:"Japanese",Buddhist:"Buddhist",Persian:"Persian"};class Wt extends F{static isValid(t){return!!As[t]}}Wt.generateTypeAccessors(As);let Y;const Io=()=>(Y===void 0&&(Y=Ns()),Wt.isValid(Y)?Y:Wt.Gregorian);let Rt;const Do=()=>(Rt===void 0&&(Rt=Us()),Rt.firstDayOfWeek),Ro=new T,xo="directionChange",No=()=>Ro.fireEvent(xo),Uo=async()=>{const e=No();await Promise.all(e),await Jt({rtlAware:!0})};window.registerThemePropertiesLoader=b;window["sap-ui-webcomponents-bundle"]={configuration:{getAnimationMode:Po,getLanguage:it,getTheme:pt,setTheme:cs,getNoConflict:te,setNoConflict:Vr,getCalendarType:Io,getRTL:ms,getFirstDayOfWeek:Do},getIconNames:Kn,registerI18nLoader:yn,getI18nBundle:Oo,renderFinished:Kt,applyDirection:Uo,EventProvider:T};
@@ -133,15 +133,20 @@ class ItemNavigation {
133
133
 
134
134
  const horizontalNavigationOn = this._navigationMode === NavigationMode.Horizontal || this._navigationMode === NavigationMode.Auto;
135
135
  const verticalNavigationOn = this._navigationMode === NavigationMode.Vertical || this._navigationMode === NavigationMode.Auto;
136
+ const isRTL = this.rootWebComponent.effectiveDir === "rtl";
136
137
 
137
- if (isUp(event) && verticalNavigationOn) {
138
- this._handleUp();
139
- } else if (isDown(event) && verticalNavigationOn) {
140
- this._handleDown();
138
+ if (isRTL && isLeft(event) && horizontalNavigationOn) {
139
+ this._handleRight();
140
+ } else if (isRTL && isRight(event) && horizontalNavigationOn) {
141
+ this._handleLeft();
141
142
  } else if (isLeft(event) && horizontalNavigationOn) {
142
143
  this._handleLeft();
143
144
  } else if (isRight(event) && horizontalNavigationOn) {
144
145
  this._handleRight();
146
+ } else if (isUp(event) && verticalNavigationOn) {
147
+ this._handleUp();
148
+ } else if (isDown(event) && verticalNavigationOn) {
149
+ this._handleDown();
145
150
  } else if (isHome(event)) {
146
151
  this._handleHome();
147
152
  } else if (isEnd(event)) {
@@ -21,6 +21,8 @@ class F6Navigation {
21
21
  return;
22
22
  }
23
23
 
24
+ event.preventDefault();
25
+
24
26
  const nextIndex = this.groups.indexOf(this.selectedGroup);
25
27
  let nextElement = null;
26
28
 
@@ -44,6 +46,8 @@ class F6Navigation {
44
46
  return;
45
47
  }
46
48
 
49
+ event.preventDefault();
50
+
47
51
  const nextIndex = this.groups.indexOf(this.selectedGroup);
48
52
  let nextElement = null;
49
53
 
@@ -1,10 +1,10 @@
1
1
  const VersionInfo = {
2
- version: "1.4.0",
2
+ version: "1.5.0",
3
3
  major: 1,
4
- minor: 4,
4
+ minor: 5,
5
5
  patch: 0,
6
6
  suffix: "",
7
7
  isNext: false,
8
- buildTime: 1653558081,
8
+ buildTime: 1656937916,
9
9
  };
10
10
  export default VersionInfo;
@@ -2,7 +2,6 @@ import executeTemplate from "./renderer/executeTemplate.js";
2
2
  import getConstructableStyle from "./theming/getConstructableStyle.js";
3
3
  import getEffectiveStyle from "./theming/getEffectiveStyle.js";
4
4
  import getEffectiveLinksHrefs from "./theming/getEffectiveLinksHrefs.js";
5
- import isLegacyBrowser from "./isLegacyBrowser.js";
6
5
  import { shouldUseLinks } from "./CSP.js";
7
6
 
8
7
  /**
@@ -20,7 +19,7 @@ const updateShadowRoot = (element, forStaticArea = false) => {
20
19
  styleStrOrHrefsArr = getEffectiveLinksHrefs(element.constructor, forStaticArea);
21
20
  } else if (document.adoptedStyleSheets) { // Chrome
22
21
  shadowRoot.adoptedStyleSheets = getConstructableStyle(element.constructor, forStaticArea);
23
- } else if (!isLegacyBrowser()) { // FF, Safari
22
+ } else { // FF, Safari
24
23
  styleStrOrHrefsArr = getEffectiveStyle(element.constructor, forStaticArea);
25
24
  }
26
25
 
@@ -6,20 +6,7 @@ const getCaretPosition = field => {
6
6
  // Initialize
7
7
  let caretPos = 0;
8
8
 
9
- // IE Support
10
- if (document.selection) {
11
- // Set focus on the element
12
- field.focus();
13
-
14
- // To get cursor position, get empty selection range
15
- const selection = document.selection.createRange();
16
-
17
- // Move selection start to 0 position
18
- selection.moveStart("character", -field.value.length);
19
-
20
- // The caret position is selection length
21
- caretPos = selection.text.length;
22
- } else if (field.selectionStart || field.selectionStart === "0") { // Firefox support
9
+ if (field.selectionStart || field.selectionStart === "0") { // Firefox support
23
10
  caretPos = field.selectionDirection === "backward" ? field.selectionStart : field.selectionEnd;
24
11
  }
25
12
 
@@ -0,0 +1,11 @@
1
+ import { getSlotName } from "./SlotsHelper.js";
2
+
3
+ const isDefaultSlotProvided = element => {
4
+ return Array.from(element.childNodes).filter(node => {
5
+ return node.nodeType !== Node.COMMENT_NODE
6
+ && getSlotName(node) === "default"
7
+ && (node.nodeType !== Node.TEXT_NODE || node.nodeValue.trim().length !== 0);
8
+ }).length > 0;
9
+ };
10
+
11
+ export default isDefaultSlotProvided;
@@ -1,15 +1,20 @@
1
1
  const resolve = require("resolve");
2
+ const path = require("path");
2
3
 
3
4
  const assetParametersScript = resolve.sync("@ui5/webcomponents-base/lib/generate-asset-parameters/index.js");
4
5
  const stylesScript = resolve.sync("@ui5/webcomponents-base/lib/generate-styles/index.js");
5
6
  const versionScript = resolve.sync("@ui5/webcomponents-base/lib/generate-version-info/index.js");
6
- const serve = resolve.sync("@ui5/webcomponents-tools/lib/serve/index.js");
7
7
  const copyUsedModules = resolve.sync("@ui5/webcomponents-tools/lib/copy-list/index.js");
8
8
  const esmAbsToRel = resolve.sync("@ui5/webcomponents-tools/lib/esm-abs-to-rel/index.js");
9
9
 
10
+ const LIB = path.join(__dirname, `../tools/lib/`);
11
+
12
+ const viteConfig = `-c "${require.resolve("@ui5/webcomponents-tools/components-package/vite.config.js")}"`;
13
+ const eslintConfig = `--config ${require.resolve("@ui5/webcomponents-tools/components-package/eslint.js")}`;
14
+
10
15
  const scripts = {
11
16
  clean: "rimraf dist && rimraf .port",
12
- lint: "eslint . --config config/.eslintrc.js",
17
+ lint: `eslint . ${eslintConfig}`,
13
18
  prepare: "nps clean integrate copy generateAssetParameters generateVersionInfo generateStyles",
14
19
  integrate: {
15
20
  default: "nps integrate.copy-used-modules integrate.replace-amd integrate.amd-to-es6 integrate.esm-abs-to-rel integrate.third-party",
@@ -25,31 +30,24 @@ const scripts = {
25
30
  },
26
31
  build: {
27
32
  default: `nps lint prepare build.bundle`,
28
- bundle: "rollup --config config/rollup.config.js",
33
+ bundle: `vite build ${viteConfig}`,
29
34
  },
30
35
  copy: {
31
- default: "nps copy.src copy.test",
36
+ default: "nps copy.src",
32
37
  src: `copy-and-watch "src/**/*.{js,css}" dist/`,
33
- test: `copy-and-watch "test/**/*.*" dist/test-resources`,
34
38
  },
35
39
  generateAssetParameters: `node "${assetParametersScript}"`,
36
40
  generateVersionInfo: `node "${versionScript}"`,
37
41
  generateStyles: `node "${stylesScript}"`,
38
42
  watch: {
39
- default: 'concurrently "nps watch.test" "nps watch.src" "nps watch.bundle" "nps watch.styles"',
43
+ default: 'concurrently "nps watch.src" "nps watch.styles"',
44
+ withBundle: 'concurrently "nps watch.src" "nps watch.bundle" "nps watch.styles"',
40
45
  src: 'nps "copy.src --watch --skip-initial-copy"',
41
- test: 'nps "copy.test --watch --skip-initial-copy"',
42
- bundle: "rollup --config config/rollup.config.js -w --environment DEV",
46
+ bundle: `node ${LIB}/dev-server/dev-server.js ${viteConfig}`,
43
47
  styles: 'chokidar "src/css/*.css" -c "nps generateStyles"'
44
48
  },
45
- dev: 'concurrently "nps serve" "nps watch"',
46
- start: "nps prepare dev",
47
- serve: `node "${serve}" --dir="dist/" --port=9191 --packageName="@ui5/webcomponents-base"`,
48
- test: {
49
- // --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
50
- default: 'concurrently "nps serve" "nps test.run" --kill-others --success first',
51
- run: "cross-env WDIO_LOG_LEVEL=error FORCE_COLOR=0 wdio config/wdio.conf.js",
52
- },
49
+ start: "nps prepare watch.withBundle",
50
+ test: `node "${LIB}/test-runner/test-runner.js"`,
53
51
  };
54
52
 
55
53
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ui5/webcomponents-base",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "UI5 Web Components: webcomponents.base",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -36,13 +36,14 @@
36
36
  "devDependencies": {
37
37
  "@buxlabs/amd-to-es6": "0.16.1",
38
38
  "@openui5/sap.ui.core": "1.101.0",
39
- "@ui5/webcomponents-tools": "1.4.0",
40
- "chromedriver": "101.0.0",
39
+ "@ui5/webcomponents-tools": "1.5.0",
40
+ "chromedriver": "102.0.0",
41
41
  "clean-css": "^5.2.2",
42
42
  "copy-and-watch": "^0.1.5",
43
43
  "cross-env": "^7.0.3",
44
44
  "eslint": "^7.22.0",
45
45
  "mkdirp": "^1.0.4",
46
+ "replace-in-file": "^6.3.5",
46
47
  "resolve": "^1.20.0"
47
48
  }
48
49
  }
@@ -82,7 +82,7 @@ const displayFailedRegistrations = () => {
82
82
  }
83
83
  });
84
84
 
85
- message = `${message}\n\nTo prevent other runtimes from defining tags that you use, consider using scoping or have third-party libraries use scoping: https://github.com/SAP/ui5-webcomponents/blob/master/docs/2-advanced/03-scoping.md.`;
85
+ message = `${message}\n\nTo prevent other runtimes from defining tags that you use, consider using scoping or have third-party libraries use scoping: https://github.com/SAP/ui5-webcomponents/blob/main/docs/2-advanced/03-scoping.md.`;
86
86
 
87
87
  console.warn(message); // eslint-disable-line
88
88
  };
@@ -147,7 +147,7 @@ const registerLocaleDataLoader = (localeId, loader) => {
147
147
 
148
148
  // register default loader for "en" from ui5 CDN (dev workflow without assets)
149
149
  registerLocaleDataLoader("en", async runtimeLocaleId => {
150
- return (await fetch(`https://ui5.sap.com/1.60.2/resources/sap/ui/core/cldr/en.json`)).json();
150
+ return (await fetch(`https://ui5.sap.com/1.103.0/resources/sap/ui/core/cldr/en.json`)).json();
151
151
  });
152
152
 
153
153
  // When the language changes dynamically (the user calls setLanguage),
@@ -14,10 +14,12 @@ const bundlePromises = new Map();
14
14
  const loaders = new Map();
15
15
 
16
16
  /**
17
+ * Registers i18n loader function for given package and locale.
17
18
  *
19
+ * @public
18
20
  * @param {string} packageName for which package this loader can fetch data
21
+ * @param {string} localeId locale that this loader can handle
19
22
  * @param {function} loader async function that will be passed a localeId and should return a JSON object
20
- * @param {Array} localeIds Array of locale IDs that this loader can handle
21
23
  */
22
24
  const registerI18nLoader = (packageName, localeId, loader) => {
23
25
  // register loader by key
@@ -133,15 +133,20 @@ class ItemNavigation {
133
133
 
134
134
  const horizontalNavigationOn = this._navigationMode === NavigationMode.Horizontal || this._navigationMode === NavigationMode.Auto;
135
135
  const verticalNavigationOn = this._navigationMode === NavigationMode.Vertical || this._navigationMode === NavigationMode.Auto;
136
+ const isRTL = this.rootWebComponent.effectiveDir === "rtl";
136
137
 
137
- if (isUp(event) && verticalNavigationOn) {
138
- this._handleUp();
139
- } else if (isDown(event) && verticalNavigationOn) {
140
- this._handleDown();
138
+ if (isRTL && isLeft(event) && horizontalNavigationOn) {
139
+ this._handleRight();
140
+ } else if (isRTL && isRight(event) && horizontalNavigationOn) {
141
+ this._handleLeft();
141
142
  } else if (isLeft(event) && horizontalNavigationOn) {
142
143
  this._handleLeft();
143
144
  } else if (isRight(event) && horizontalNavigationOn) {
144
145
  this._handleRight();
146
+ } else if (isUp(event) && verticalNavigationOn) {
147
+ this._handleUp();
148
+ } else if (isDown(event) && verticalNavigationOn) {
149
+ this._handleDown();
145
150
  } else if (isHome(event)) {
146
151
  this._handleHome();
147
152
  } else if (isEnd(event)) {
@@ -21,6 +21,8 @@ class F6Navigation {
21
21
  return;
22
22
  }
23
23
 
24
+ event.preventDefault();
25
+
24
26
  const nextIndex = this.groups.indexOf(this.selectedGroup);
25
27
  let nextElement = null;
26
28
 
@@ -44,6 +46,8 @@ class F6Navigation {
44
46
  return;
45
47
  }
46
48
 
49
+ event.preventDefault();
50
+
47
51
  const nextIndex = this.groups.indexOf(this.selectedGroup);
48
52
  let nextElement = null;
49
53