@ui5/webcomponents-base 1.8.0 → 1.9.1

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 (50) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/bundle.esm.js +1 -0
  3. package/dist/InitialConfiguration.js +23 -3
  4. package/dist/StaticAreaItem.js +7 -1
  5. package/dist/api.json +1 -0
  6. package/dist/asset-registries/Illustrations.js +30 -1
  7. package/dist/assets/bundle.esm.f4192314.js +55 -0
  8. package/dist/config/ThemeRoots.js +39 -0
  9. package/dist/features/F6Navigation.js +22 -25
  10. package/dist/features/OpenUI5Support.js +1 -0
  11. package/dist/generated/VersionInfo.js +4 -4
  12. package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +11 -0
  13. package/dist/theming/applyTheme.js +7 -2
  14. package/dist/types/CSSColor.js +11 -0
  15. package/dist/types/CSSSize.js +11 -0
  16. package/dist/types/CalendarType.js +37 -0
  17. package/dist/types/DOMReference.js +4 -0
  18. package/dist/types/DataType.js +6 -0
  19. package/dist/types/Float.js +11 -0
  20. package/dist/types/Integer.js +11 -0
  21. package/dist/types/InvisibleMessageMode.js +17 -1
  22. package/dist/types/PopupState.js +20 -0
  23. package/dist/types/ValueState.js +43 -1
  24. package/dist/util/AriaLabelHelper.js +17 -0
  25. package/dist/util/createLinkInHead.js +6 -1
  26. package/dist/validateThemeRoot.js +58 -0
  27. package/package-scripts.js +3 -1
  28. package/package.json +3 -3
  29. package/src/InitialConfiguration.js +23 -3
  30. package/src/StaticAreaItem.js +7 -1
  31. package/src/asset-registries/Illustrations.js +30 -1
  32. package/src/config/ThemeRoots.js +39 -0
  33. package/src/features/F6Navigation.js +22 -25
  34. package/src/features/OpenUI5Support.js +1 -0
  35. package/src/theming/applyTheme.js +7 -2
  36. package/src/types/CSSColor.js +11 -0
  37. package/src/types/CSSSize.js +11 -0
  38. package/src/types/CalendarType.js +37 -0
  39. package/src/types/DOMReference.js +4 -0
  40. package/src/types/DataType.js +6 -0
  41. package/src/types/Float.js +11 -0
  42. package/src/types/Integer.js +11 -0
  43. package/src/types/InvisibleMessageMode.js +17 -1
  44. package/src/types/PopupState.js +20 -0
  45. package/src/types/ValueState.js +43 -1
  46. package/src/util/AriaLabelHelper.js +17 -0
  47. package/src/util/createLinkInHead.js +6 -1
  48. package/src/validateThemeRoot.js +58 -0
  49. package/dist/assets/bundle.esm.62217b93.js +0 -43
  50. package/hash.txt +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,26 @@
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.9.0](https://github.com/SAP/ui5-webcomponents/compare/v1.8.0...v1.9.0) (2022-10-31)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **f6navigation:** correct activeElement when shadow root doesn't exist ([#5910](https://github.com/SAP/ui5-webcomponents/issues/5910)) ([f8a69b2](https://github.com/SAP/ui5-webcomponents/commit/f8a69b23e350712b3ce723325633ea498b1527a6))
12
+ * **framework:** fix contexts management in hbs-2-lit compiler ([#5958](https://github.com/SAP/ui5-webcomponents/issues/5958)) ([94d1619](https://github.com/SAP/ui5-webcomponents/commit/94d16199ed7dc79b21d99a0637533e93af54c90a)), closes [#4701](https://github.com/SAP/ui5-webcomponents/issues/4701)
13
+ * make static are items recognizable to openui5 dialogs ([#5888](https://github.com/SAP/ui5-webcomponents/issues/5888)) ([efaa1d6](https://github.com/SAP/ui5-webcomponents/commit/efaa1d6e60f965ef0f8479adcd823e1bf5396992)), closes [#5634](https://github.com/SAP/ui5-webcomponents/issues/5634)
14
+ * **theming:** add custom theme support for external CSS ([#5887](https://github.com/SAP/ui5-webcomponents/issues/5887)) ([c7e2668](https://github.com/SAP/ui5-webcomponents/commit/c7e2668cdab83eb32f90b4f6dc6249cda6fba674))
15
+ * **ui5-label:** improve "for" attribute accessibility reading ([#5872](https://github.com/SAP/ui5-webcomponents/issues/5872)) ([b9ffaa6](https://github.com/SAP/ui5-webcomponents/commit/b9ffaa6f0353e9e8136019978299548021555643))
16
+
17
+
18
+ ### Features
19
+
20
+ * **framework:** fetch illustrations on demand ([#5927](https://github.com/SAP/ui5-webcomponents/issues/5927)) ([f8e1033](https://github.com/SAP/ui5-webcomponents/commit/f8e1033643626261dcad8a38f65c325ba9aff99f))
21
+
22
+
23
+
24
+
25
+
6
26
  # [1.8.0](https://github.com/SAP/ui5-webcomponents/compare/v1.7.1...v1.8.0) (2022-10-03)
7
27
 
8
28
 
package/bundle.esm.js CHANGED
@@ -10,6 +10,7 @@ import "./test/elements/NoShadowDOM.js";
10
10
  import "./test/elements/Parent.js";
11
11
  import "./test/elements/Child.js";
12
12
  import "./test/elements/WithStaticArea.js";
13
+ import "./test/elements/WithComplexTemplate.js";
13
14
  import "./test/elements/GenericExt.js";
14
15
 
15
16
  // Test themes - CSS Vars for the sap_fiori_3, sap_fiori_3_dark, sap_belize and sap_belize_hcb themes
@@ -1,12 +1,14 @@
1
1
  import merge from "./thirdparty/merge.js";
2
2
  import { getFeature } from "./FeaturesRegistry.js";
3
3
  import { DEFAULT_THEME } from "./generated/AssetParameters.js";
4
+ import validateThemeRoot from "./validateThemeRoot.js";
4
5
 
5
6
  let initialized = false;
6
7
 
7
8
  let initialConfig = {
8
9
  animationMode: "full",
9
10
  theme: DEFAULT_THEME,
11
+ themeRoot: null,
10
12
  rtl: null,
11
13
  language: null,
12
14
  calendarType: null,
@@ -26,6 +28,11 @@ const getTheme = () => {
26
28
  return initialConfig.theme;
27
29
  };
28
30
 
31
+ const getThemeRoot = () => {
32
+ initConfiguration();
33
+ return initialConfig.themeRoot;
34
+ };
35
+
29
36
  const getRTL = () => {
30
37
  initConfiguration();
31
38
  return initialConfig.rtl;
@@ -106,7 +113,13 @@ const parseURLParameters = () => {
106
113
  });
107
114
  };
108
115
 
109
- const normalizeParamValue = (param, value) => {
116
+ const normalizeThemeRootParamValue = value => {
117
+ const themeRoot = value.split("@")[1];
118
+
119
+ return validateThemeRoot(themeRoot);
120
+ };
121
+
122
+ const normalizeThemeParamValue = (param, value) => {
110
123
  if (param === "theme" && value.includes("@")) { // the theme parameter might have @<URL-TO-THEME> in the value - strip this
111
124
  return value.split("@")[0];
112
125
  }
@@ -122,9 +135,15 @@ const applyURLParam = (key, value, paramType) => {
122
135
  value = booleanMapping.get(lowerCaseValue);
123
136
  }
124
137
 
125
- value = normalizeParamValue(param, value);
138
+ if (param === "theme") {
139
+ initialConfig.theme = normalizeThemeParamValue(param, value);
126
140
 
127
- initialConfig[param] = value;
141
+ if (value && value.includes("@")) {
142
+ initialConfig.themeRoot = normalizeThemeRootParamValue(value);
143
+ }
144
+ } else {
145
+ initialConfig[param] = value;
146
+ }
128
147
  };
129
148
 
130
149
  const applyOpenUI5Configuration = () => {
@@ -157,6 +176,7 @@ const initConfiguration = () => {
157
176
  export {
158
177
  getAnimationMode,
159
178
  getTheme,
179
+ getThemeRoot,
160
180
  getRTL,
161
181
  getLanguage,
162
182
  getFetchDefaultLanguage,
@@ -17,6 +17,7 @@ class StaticAreaItem extends HTMLElement {
17
17
  this._rendered = false;
18
18
  this.attachShadow({ mode: "open" });
19
19
  this.pureTagName = "ui5-static-area-item";
20
+ this.popupIntegrationAttr = "data-sap-ui-integration-popup-content";
20
21
  }
21
22
 
22
23
  /**
@@ -37,7 +38,7 @@ class StaticAreaItem extends HTMLElement {
37
38
  */
38
39
  update() {
39
40
  if (this._rendered) {
40
- this.setAttribute(this.pureTagName, "");
41
+ this._updateAdditionalAttrs();
41
42
  this._updateContentDensity();
42
43
  this._updateDirection();
43
44
  updateShadowRoot(this.ownerElement, true);
@@ -67,6 +68,11 @@ class StaticAreaItem extends HTMLElement {
67
68
  }
68
69
  }
69
70
 
71
+ _updateAdditionalAttrs() {
72
+ this.setAttribute(this.pureTagName, "");
73
+ this.setAttribute(this.popupIntegrationAttr, "");
74
+ }
75
+
70
76
  /**
71
77
  * @protected
72
78
  * Returns reference to the DOM element where the current fragment is added.
package/dist/api.json ADDED
@@ -0,0 +1 @@
1
+ {"$schema-ref":"http://schemas.sap.com/sapui5/designtime/api.json/1.0","version":"1.62","symbols":[{"kind":"class","name":"I18nBundle","basename":"I18nBundle","resource":"i18nBundle.js","module":"i18nBundle","visibility":"public","constructor":{"visibility":"public"},"methods":[{"name":"getText","visibility":"public","returnValue":{"type":"*"},"parameters":[{"name":"textObj","type":"Object|String","optional":false,"description":"key/defaultText pair or just the key"},{"name":"params","type":"undefined","optional":false,"description":"Values for the placeholders"}],"description":"Returns a text in the currently loaded language"}]},{"kind":"class","name":"ItemNavigation","basename":"ItemNavigation","resource":"delegate/ItemNavigation.js","module":"delegate/ItemNavigation","visibility":"public","description":"The ItemNavigation class manages the calculations to determine the correct \"tabindex\" for a group of related items inside a root component. Important: ItemNavigation only does the calculations and does not change \"tabindex\" directly, this is a responsibility of the developer.\n\nThe keys that trigger ItemNavigation are: - Up/down - Left/right - Home/End\n\nUsage: 1) Use the \"getItemsCallback\" constructor property to pass a callback to ItemNavigation, which, whenever called, will return the list of items to navigate among.\n\nEach item passed to ItemNavigation via \"getItemsCallback\" must be: - A) either a UI5Element with a \"_tabIndex\" property - B) or an Object with \"id\" and \"_tabIndex\" properties which represents a part of the root component's shadow DOM. The \"id\" must be a valid ID within the shadow root of the component ItemNavigation operates on. This object must not be a DOM object because, as said, ItemNavigation will not set \"tabindex\" on it. It must be a representation of a DOM object only and the developer has the responsibility to update the \"tabindex\" in the component's DOM. - C) a combination of the above\n\nWhenever the user navigates with the keyboard, ItemNavigation will modify the \"_tabIndex\" properties of the items. It is the items' responsibilities to re-render themselves and apply the correct value of \"tabindex\" (i.e. to map the \"_tabIndex\" ItemNavigation set to them to the \"tabindex\" property). If the items of the ItemNavigation are UI5Elements themselves, this can happen naturally since they will be invalidated by their \"_tabIndex\" property. If the items are Objects with \"id\" and \"_tabIndex\" however, it is the developer's responsibility to apply these and the easiest way is to have the root component invalidated by ItemNavigation. To do so, set the \"affectedPropertiesNames\" constructor property to point to one or more of the root component's properties that need refreshing when \"_tabIndex\" is changed deeply.\n\n2) Call the \"setCurrentItem\" method of ItemNavigation whenever you want to change the current item. This is most commonly required if the user for example clicks on an item and thus selects it directly. Pass as the only argument to \"setCurrentItem\" the item that becomes current (must be one of the items, returned by \"getItemsCallback\").","constructor":{"visibility":"public","parameters":[{"name":"rootWebComponent","type":"undefined","optional":false,"description":"the component to operate on (component that slots or contains within its shadow root the items the user navigates among)"},{"name":"options","type":"undefined","optional":false,"description":"Object with configuration options: - currentIndex: the index of the item that will be initially selected (from which navigation will begin) - navigationMode (Auto|Horizontal|Vertical): whether the items are displayed horizontally (Horizontal), vertically (Vertical) or as a matrix (Auto) meaning the user can navigate in both directions (up/down and left/right) - rowSize: tells how many items per row there are when the items are not rendered as a flat list but rather as a matrix. Relevant for navigationMode=Auto - skipItemsSize: tells how many items upon PAGE_UP and PAGE_DOWN should be skipped to applying the focus on the next item - behavior (Static|Cycling): tells what to do when trying to navigate beyond the first and last items Static means that nothing happens if the user tries to navigate beyond the first/last item. Cycling means that when the user navigates beyond the last item they go to the first and vice versa. - getItemsCallback: function that, when called, returns an array with all items the user can navigate among - affectedPropertiesNames: a list of metadata properties on the root component which, upon user navigation, will be reassigned by address thus causing the root component to invalidate"}]},"methods":[{"name":"setCurrentItem","visibility":"public","parameters":[{"name":"current","type":"undefined","optional":false,"description":"the new selected item"}],"description":"Call this method to set a new \"current\" (selected) item in the item navigation Note: the item passed to this function must be one of the items, returned by the getItemsCallback function"},{"name":"setRowSize","visibility":"public","parameters":[{"name":"newRowSize","type":"undefined","optional":false}],"description":"Call this method to dynamically change the row size"}]},{"kind":"namespace","name":"MediaRange.RANGESETS","basename":"RANGESETS","resource":"MediaRange.js","module":"MediaRange","export":"RANGESETS","static":true,"visibility":"public","description":"Enumeration containing the names and settings of predefined screen width media query range sets.","properties":[{"name":"RANGE_4STEPS","visibility":"public","static":true,"type":"undefined","description":"A 4-step range set (S-M-L-XL).\n\nThe ranges of this set are: <ul> <li><code>\"S\"</code>: For screens smaller than 600 pixels.</li> <li><code>\"M\"</code>: For screens greater than or equal to 600 pixels and smaller than 1024 pixels.</li> <li><code>\"L\"</code>: For screens greater than or equal to 1024 pixels and smaller than 1440 pixels.</li> <li><code>\"XL\"</code>: For screens greater than or equal to 1440 pixels.</li> </ul>"}],"slots":[]},{"kind":"class","name":"ResizeHandler","basename":"ResizeHandler","resource":"delegate/ResizeHandler.js","module":"delegate/ResizeHandler","visibility":"public","description":"Allows to register/deregister resize observers for a DOM element","constructor":{"visibility":"public"},"methods":[{"name":"deregister","visibility":"public","static":true,"parameters":[{"name":"element","type":"*","optional":false,"description":"UI5 Web Component or DOM Element to be unobserved"},{"name":"callback","type":"*","optional":false,"description":"Callback to be removed"}]},{"name":"register","visibility":"public","static":true,"parameters":[{"name":"element","type":"*","optional":false,"description":"UI5 Web Component or DOM Element to be observed"},{"name":"callback","type":"*","optional":false,"description":"Callback to be executed"}]}]},{"kind":"class","name":"sap.ui.webcomponents.base.types.CalendarType","basename":"CalendarType","resource":"types/CalendarType.js","module":"types/CalendarType","static":true,"visibility":"public","extends":"sap.ui.webcomponents.base.types.DataType","description":"Different calendar types.","constructor":{"visibility":"public"},"properties":[{"name":"Buddhist","visibility":"public","type":"Buddhist"},{"name":"Gregorian","visibility":"public","type":"Gregorian"},{"name":"Islamic","visibility":"public","type":"Islamic"},{"name":"Japanese","visibility":"public","type":"Japanese"},{"name":"Persian","visibility":"public","type":"Persian"}],"slots":[]},{"kind":"class","name":"sap.ui.webcomponents.base.types.CSSColor","basename":"CSSColor","resource":"types/CSSColor.js","module":"types/CSSColor","static":true,"visibility":"public","extends":"sap.ui.webcomponents.base.types.DataType","description":"CSSColor data type.","constructor":{"visibility":"public"}},{"kind":"class","name":"sap.ui.webcomponents.base.types.CSSSize","basename":"CSSSize","resource":"types/CSSSize.js","module":"types/CSSSize","static":true,"visibility":"public","extends":"sap.ui.webcomponents.base.types.DataType","description":"CSSSize data type.","constructor":{"visibility":"public"}},{"kind":"class","name":"sap.ui.webcomponents.base.types.DataType","basename":"DataType","resource":"types/DataType.js","module":"types/DataType","static":true,"visibility":"public","constructor":{"visibility":"public"},"methods":[{"name":"isValid","visibility":"public","static":true,"returnValue":{"type":"Boolean"},"description":"Checks if the value is valid for its data type."}]},{"kind":"class","name":"sap.ui.webcomponents.base.types.DOMReference","basename":"DOMReference","resource":"types/DOMReference.js","module":"types/DOMReference","static":true,"visibility":"public","extends":"sap.ui.webcomponents.base.types.DataType","description":"DOM Element reference or ID. <b>Note:</b> If an ID is passed, it is expected to be part of the same <code>document</code> element as the consuming component.","constructor":{"visibility":"public"}},{"kind":"class","name":"sap.ui.webcomponents.base.types.Float","basename":"Float","resource":"types/Float.js","module":"types/Float","static":true,"visibility":"public","extends":"sap.ui.webcomponents.base.types.DataType","description":"Float data type.","constructor":{"visibility":"public"}},{"kind":"class","name":"sap.ui.webcomponents.base.types.Integer","basename":"Integer","resource":"types/Integer.js","module":"types/Integer","static":true,"visibility":"public","extends":"sap.ui.webcomponents.base.types.DataType","description":"Integer data type.","constructor":{"visibility":"public"}},{"kind":"class","name":"sap.ui.webcomponents.base.types.InvisibleMessageMode","basename":"InvisibleMessageMode","resource":"types/InvisibleMessageMode.js","module":"types/InvisibleMessageMode","static":true,"visibility":"public","extends":"sap.ui.webcomponents.base.types.DataType","description":"Different types of InvisibleMessageMode.","constructor":{"visibility":"public"},"properties":[{"name":"Assertive","visibility":"public","type":"Assertive","description":"Indicates that updates to the region have the highest priority and should be presented to the user immediately."},{"name":"Polite","visibility":"public","type":"Polite","description":"Indicates that updates to the region should be presented at the next graceful opportunity, such as at the end of reading the current sentence, or when the user pauses typing."}],"slots":[]},{"kind":"class","name":"sap.ui.webcomponents.base.types.PopupState","basename":"PopupState","resource":"types/PopupState.js","module":"types/PopupState","static":true,"visibility":"public","extends":"sap.ui.webcomponents.base.types.DataType","description":"Different types of PopupState.","constructor":{"visibility":"public"},"properties":[{"name":"CLOSED","visibility":"public","type":"CLOSED","description":"Closed and currently not changing states."},{"name":"CLOSING","visibility":"public","type":"CLOSING","description":"Still open, but in the process of going to the CLOSED state."},{"name":"OPEN","visibility":"public","type":"OPEN","description":"Open and currently not changing states."},{"name":"OPENING","visibility":"public","type":"OPENING","description":"Already left the CLOSED state, is not OPEN yet, but in the process of getting OPEN."}],"slots":[]},{"kind":"class","name":"sap.ui.webcomponents.base.types.ValueState","basename":"ValueState","resource":"types/ValueState.js","module":"types/ValueState","static":true,"visibility":"public","extends":"sap.ui.webcomponents.base.types.DataType","description":"Different types of ValueState.","constructor":{"visibility":"public"},"properties":[{"name":"Error","visibility":"public","type":"Error"},{"name":"Information","visibility":"public","type":"Information"},{"name":"None","visibility":"public","type":"None"},{"name":"Success","visibility":"public","type":"Success"},{"name":"Warning","visibility":"public","type":"Warning"}],"slots":[]},{"kind":"class","name":"sap.ui.webcomponents.base.UI5Element","basename":"UI5Element","resource":"UI5Element.js","module":"UI5Element","static":true,"visibility":"public","extends":"HTMLElement","constructor":{"visibility":"public"},"properties":[{"name":"_id","visibility":"protected","type":"undefined","description":"Returns a unique ID for this UI5 Element","deprecated":{"text":"- This property is not guaranteed in future releases"}},{"name":"dependencies","visibility":"protected","static":true,"type":"undefined","description":"Returns an array with the dependencies for this UI5 Web Component, which could be: - composed components (used in its shadow root or static area item) - slotted components that the component may need to communicate with"},{"name":"effectiveDir","visibility":"public","type":"undefined","description":"Determines whether the component should be rendered in RTL mode or not. Returns: \"rtl\", \"ltr\" or undefined"},{"name":"isUI5Element","visibility":"public","type":"undefined","description":"Used to duck-type UI5 elements without using instanceof"},{"name":"metadata","visibility":"protected","static":true,"type":"undefined","description":"Sets a new metadata object for this UI5 Web Component Class"},{"name":"staticAreaStyles","visibility":"protected","static":true,"type":"undefined","description":"Returns the Static Area CSS for this UI5 Web Component Class"},{"name":"styles","visibility":"protected","static":true,"type":"undefined","description":"Returns the CSS for this UI5 Web Component Class"}],"slots":[],"methods":[{"name":"_render","visibility":"protected","description":"Do not call this method directly, only intended to be called by js"},{"name":"attachInvalidate","visibility":"public","parameters":[{"name":"callback","type":"undefined","optional":false}],"description":"Attach a callback that will be executed whenever the component is invalidated"},{"name":"define","visibility":"public","static":true,"returnValue":{"type":"Promise.<UI5Element>"},"description":"Registers a UI5 Web Component in the browser window object"},{"name":"detachInvalidate","visibility":"public","parameters":[{"name":"callback","type":"undefined","optional":false}],"description":"Detach the callback that is executed whenever the component is invalidated"},{"name":"fireEvent","visibility":"public","returnValue":{"type":"boolean","description":"false, if the event was cancelled (preventDefault called), true otherwise"},"parameters":[{"name":"name","type":"undefined","optional":false,"description":"name of the event"},{"name":"data","type":"undefined","optional":false,"description":"additional data for the event"},{"name":"cancelable","type":"undefined","optional":false,"defaultValue":false,"description":"true, if the user can call preventDefault on the event object"},{"name":"bubbles","type":"undefined","optional":false,"defaultValue":true,"description":"true, if the event bubbles"}]},{"name":"focus","visibility":"public","description":"Set the focus to the element, returned by \"getFocusDomRef()\" (marked by \"data-sap-focus-ref\")"},{"name":"getDomRef","visibility":"public","description":"Returns the DOM Element inside the Shadow Root that corresponds to the opening tag in the UI5 Web Component's template *Note:* For logical (abstract) elements (items, options, etc...), returns the part of the parent's DOM that represents this option Use this method instead of \"this.shadowRoot\" to read the Shadow DOM, if ever necessary"},{"name":"getFocusDomRef","visibility":"public","description":"Returns the DOM Element marked with \"data-sap-focus-ref\" inside the template. This is the element that will receive the focus by default."},{"name":"getFocusDomRefAsync","visibility":"public","description":"Waits for dom ref and then returns the DOM Element marked with \"data-sap-focus-ref\" inside the template. This is the element that will receive the focus by default."},{"name":"getMetadata","visibility":"public","static":true,"returnValue":{"type":"UI5ElementMetadata"},"description":"Returns an instance of UI5ElementMetadata.js representing this UI5 Web Component's full metadata (its and its parents') Note: not to be confused with the \"get metadata()\" method, which returns an object for this class's metadata only"},{"name":"getSlottedNodes","visibility":"public","description":"Returns the actual children, associated with a slot. Useful when there are transitive slots in nested component scenarios and you don't want to get a list of the slots, but rather of their content."},{"name":"getStaticAreaItemDomRef","visibility":"public"},{"name":"getUniqueDependencies","visibility":"public","static":true,"description":"Returns a list of the unique dependencies for this UI5 Web Component"},{"name":"onDefine","visibility":"protected","static":true,"returnValue":{"type":"Promise.<void>"},"description":"Hook that will be called upon custom element definition"},{"name":"onInvalidation","visibility":"public","parameters":[{"name":"changeInfo","type":"undefined","optional":false,"description":"An object with information about the change that caused invalidation. The object can have the following properties: - type: (property|slot) tells what caused the invalidation 1) property: a property value was changed either directly or as a result of changing the corresponding attribute 2) slot: a slotted node(nodes) changed in one of several ways (see \"reason\")\n\n- name: the name of the property or slot that caused the invalidation\n\n- reason: (children|textcontent|childchange|slotchange) relevant only for type=\"slot\" only and tells exactly what changed in the slot 1) children: immediate children (HTML elements or text nodes) were added, removed or reordered in the slot 2) textcontent: text nodes in the slot changed value (or nested text nodes were added or changed value). Can only trigger for slots of \"type: Node\" 3) slotchange: a slot element, slotted inside that slot had its \"slotchange\" event listener called. This practically means that transitively slotted children changed. Can only trigger if the child of a slot is a slot element itself. 4) childchange: indicates that a UI5Element child in that slot was invalidated and in turn invalidated the component. Can only trigger for slots with \"invalidateOnChildChange\" metadata descriptor\n\n- newValue: the new value of the property (for type=\"property\" only)\n\n- oldValue: the old value of the property (for type=\"property\" only)\n\n- child the child that was changed (for type=\"slot\" and reason=\"childchange\" only)"}],"description":"A callback that is executed each time an already rendered component is invalidated (scheduled for re-rendering)"}]},{"kind":"class","name":"UI5ElementMetadata","basename":"UI5ElementMetadata","resource":"UI5ElementMetadata.js","module":"UI5ElementMetadata","export":"","visibility":"public","constructor":{"visibility":"public"},"methods":[{"name":"getAltTag","visibility":"public","description":"Used to get the tag we need to register for backwards compatibility"},{"name":"getAttributesList","visibility":"public","returnValue":{"type":"string[]"},"description":"Returns an array with the attributes of the UI5 Element (in kebab-case)"},{"name":"getEvents","visibility":"public","description":"Returns an object with key-value pairs of events and their metadata definitions"},{"name":"getProperties","visibility":"public","description":"Returns an object with key-value pairs of properties and their metadata definitions"},{"name":"getPropertiesList","visibility":"public","returnValue":{"type":"string[]"},"description":"Returns an array with the properties of the UI5 Element (in camelCase)"},{"name":"getPureTag","visibility":"public","description":"Returns the tag of the UI5 Element without the scope"},{"name":"getSlots","visibility":"public","description":"Returns an object with key-value pairs of slots and their metadata definitions"},{"name":"getTag","visibility":"public","description":"Returns the tag of the UI5 Element"},{"name":"hasAttribute","visibility":"public","returnValue":{"type":"boolean"},"parameters":[{"name":"propName","type":"undefined","optional":false}],"description":"Determines whether a property should have an attribute counterpart"},{"name":"hasIndividualSlots","visibility":"public","description":"Determines whether this UI5 Element supports any slots with \"individualSlots: true\""},{"name":"hasSlots","visibility":"public","description":"Determines whether this UI5 Element supports any slots"},{"name":"slotsAreManaged","visibility":"public","description":"Determines whether this UI5 Element needs to invalidate if children are added/removed/changed"},{"name":"supportsF6FastNavigation","visibility":"public","description":"Determines whether this control supports F6 fast navigation"},{"name":"validatePropertyValue","visibility":"protected","static":true,"description":"Only intended for use by UI5Element.js"},{"name":"validateSlotValue","visibility":"protected","static":true,"description":"Only intended for use by UI5Element.js"}]}]}
@@ -1,6 +1,8 @@
1
1
  import getSharedResource from "../getSharedResource.js";
2
2
 
3
+ const loaders = new Map();
3
4
  const registry = getSharedResource("SVGIllustration.registry", new Map());
5
+ const illustrationPromises = getSharedResource("SVGIllustration.promises", new Map());
4
6
  const ILLUSTRATION_NOT_FOUND = "ILLUSTRATION_NOT_FOUND";
5
7
 
6
8
  const registerIllustration = (name, { dialogSvg, sceneSvg, spotSvg, set, title, subtitle } = {}) => { // eslint-disable-line
@@ -13,6 +15,21 @@ const registerIllustration = (name, { dialogSvg, sceneSvg, spotSvg, set, title,
13
15
  });
14
16
  };
15
17
 
18
+ const registerIllustrationLoader = async (illustrationName, loader) => {
19
+ loaders.set(illustrationName, loader);
20
+ };
21
+
22
+ const _loadIllustrationOnce = async illustrationName => {
23
+ if (!illustrationPromises.has(illustrationName)) {
24
+ if (!loaders.has(illustrationName)) {
25
+ throw new Error(`No loader registered for the ${illustrationName} illustration. Probably you forgot to import the "@ui5/webcomponents-fiori/dist/illustrations/AllIllustrations.js" module.`);
26
+ }
27
+ const loadIllustrations = loaders.get(illustrationName);
28
+ illustrationPromises.set(illustrationName, loadIllustrations(illustrationName));
29
+ }
30
+ return illustrationPromises.get(illustrationName);
31
+ };
32
+
16
33
  const getIllustrationDataSync = nameProp => {
17
34
  let set = "fiori";
18
35
 
@@ -20,11 +37,23 @@ const getIllustrationDataSync = nameProp => {
20
37
  set = "tnt";
21
38
  nameProp = nameProp.replace(/^Tnt/, "");
22
39
  }
40
+ return registry.get(`${set}/${nameProp}`);
41
+ };
42
+
43
+ const getIllustrationData = async illustrationName => {
44
+ let set = "fiori";
23
45
 
24
- return registry.get(`${set}/${nameProp}`) || ILLUSTRATION_NOT_FOUND;
46
+ await _loadIllustrationOnce(illustrationName);
47
+ if (illustrationName.startsWith("Tnt")) {
48
+ set = "tnt";
49
+ illustrationName = illustrationName.replace(/^Tnt/, "");
50
+ }
51
+ return registry.get(`${set}/${illustrationName}`) || ILLUSTRATION_NOT_FOUND;
25
52
  };
26
53
 
27
54
  export {
28
55
  getIllustrationDataSync,
29
56
  registerIllustration,
57
+ registerIllustrationLoader,
58
+ getIllustrationData,
30
59
  };
@@ -0,0 +1,55 @@
1
+ const Zs=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 i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function s(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerpolicy&&(i.referrerPolicy=r.referrerpolicy),r.crossorigin==="use-credentials"?i.credentials="include":r.crossorigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=s(r);fetch(r.href,i)}};Zs();const _t={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"]}},Vt=_t.themes.default,zt=_t.languages.default,O=_t.locales.default,ue=_t.locales.all;var Je=()=>{const e=navigator.languages,t=()=>navigator.language;return e&&e[0]||t()||navigator.userLanguage||navigator.browserLanguage||zt},Xe={},Ye=Xe.hasOwnProperty,qs=Xe.toString,Qe=Ye.toString,Gs=Qe.call(Object),de=function(e){var t,s;return!e||qs.call(e)!=="[object Object]"?!1:(t=Object.getPrototypeOf(e),t?(s=Ye.call(t,"constructor")&&t.constructor,typeof s=="function"&&Qe.call(s)===Gs):!0)},Ks=Object.create(null),ts=function(){var e,t,s,n,r,i,o=arguments[2]||{},a=3,c=arguments.length,l=arguments[0]||!1,d=arguments[1]?void 0:Ks;for(typeof o!="object"&&typeof o!="function"&&(o={});a<c;a++)if((r=arguments[a])!=null)for(n in r)e=o[n],s=r[n],!(n==="__proto__"||o===s)&&(l&&s&&(de(s)||(t=Array.isArray(s)))?(t?(t=!1,i=e&&Array.isArray(e)?e:[]):i=e&&de(e)?e:{},o[n]=ts(l,arguments[1],i,s)):s!==d&&(o[n]=s));return o},te=function(){var e=[!0,!1];return e.push.apply(e,arguments),ts.apply(null,e)};const es=new Map,Js=(e,t)=>{es.set(e,t)},S=e=>es.get(e),Xs=e=>{const t=document.querySelector(`META[name="${e}"]`);return t&&t.getAttribute("content")},Ys=e=>{const t=Xs("sap-allowedThemeOrigins");return t&&t.split(",").some(s=>s==="*"||e===s.trim())},Qs=(e,t)=>{const s=new URL(e).pathname;return new URL(s,t).toString()},tn=e=>{let t,s;try{t=new URL(e);const n=t.origin;return t=t.toString(),t.startsWith(".")||t.startsWith("/")?s=new URL(t,window.location.href).toString():n&&Ys(n)?s=t.toString():s=Qs(t,window.location.href),s.endsWith("/")||(s=`${s}/`),`${s}UI5/`}catch{}};let he=!1,y={animationMode:"full",theme:Vt,themeRoot:null,rtl:null,language:null,calendarType:null,noConflict:!1,formatSettings:{},fetchDefaultLanguage:!1};const en=()=>($(),y.animationMode),sn=()=>($(),y.theme),nn=()=>($(),y.themeRoot),rn=()=>($(),y.rtl),on=()=>($(),y.language),an=()=>($(),y.fetchDefaultLanguage),cn=()=>($(),y.noConflict),ln=()=>($(),y.calendarType),un=()=>($(),y.formatSettings),ft=new Map;ft.set("true",!0);ft.set("false",!1);const dn=()=>{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&&(y=te(y,t))}},hn=()=>{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||fe(s,t,"sap")}),e.forEach((t,s)=>{!s.startsWith("sap-ui")||fe(s,t,"sap-ui")})},fn=e=>{const t=e.split("@")[1];return tn(t)},pn=(e,t)=>e==="theme"&&t.includes("@")?t.split("@")[0]:t,fe=(e,t,s)=>{const n=t.toLowerCase(),r=e.split(`${s}-`)[1];ft.has(t)&&(t=ft.get(n)),r==="theme"?(y.theme=pn(r,t),t&&t.includes("@")&&(y.themeRoot=fn(t))):y[r]=t},gn=()=>{const e=S("OpenUI5Support");if(!e||!e.isLoaded())return;const t=e.getConfigurationSettingsObject();y=te(y,t)},$=()=>{he||(dn(),hn(),gn(),he=!0)};class R{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 i=r.indexOf(s);i!==-1&&r.splice(i,1),r.length===0&&n.delete(t)}fireEvent(t,s){const r=this._eventRegistry.get(t);return r?r.map(i=>i.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 mn=new R,yn="languageChange",ss=e=>{mn.attachEvent(yn,e)},pe=10;class _n{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>pe)throw new Error(`Web component processed too many times this task, max allowed is: ${pe}`);t(s),n.set(s,r+1),s=this.shift()}}}const ns=e=>{const t=[];return e.forEach(s=>{t.push(s)}),t},rs=(e,t=document.body)=>{let s=document.querySelector(e);return s||(s=document.createElement(e),t.insertBefore(s,t.firstChild))},wn=()=>rs("ui5-shared-resources",document.head),x=(e,t)=>{const s=e.split(".");let n=wn();for(let r=0;r<s.length;r++){const i=s[r],o=r===s.length-1;Object.prototype.hasOwnProperty.call(n,i)||(n[i]=o?t:{}),n=n[i]}return n},ge={version:"1.9.1",major:1,minor:9,patch:1,suffix:"",isNext:!1,buildTime:1668115483};let at,vn="";const $t=new Map,G=x("Runtimes",[]),An=()=>{at===void 0&&(at=G.length,G.push({...ge,alias:vn,description:`Runtime ${at} - ver ${ge.version}`}))},is=()=>at,Sn=(e,t)=>{const s=`${e},${t}`;if($t.has(s))return $t.get(s);const n=G[e],r=G[t];if(!n||!r)throw new Error("Invalid runtime index supplied");if(n.isNext||r.isNext)return n.buildTime-r.buildTime;const i=n.major-r.major;if(i)return i;const o=n.minor-r.minor;if(o)return o;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 $t.set(s,l),l},$n=()=>G,os=x("Tags",new Map),ee=new Set;let M={},bt;const as="unknown",me=e=>{ee.add(e),os.set(e,is())},bn=e=>ee.has(e),Cn=()=>ns(ee),Tn=e=>{let t=os.get(e);t===void 0&&(t=as),M[t]=M[t]||new Set,M[t].add(e),bt||(bt=setTimeout(()=>{En(),M={},bt=void 0},1e3))},En=()=>{const e=$n(),t=is(),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(M).forEach(r=>{let i,o;r===as?(i=1,o={description:"Older unknown runtime"}):(i=Sn(t,r),o=e[r]);let a;i>0?a="an older":i<0?a="a newer":a="the same",n=`${n}
4
+
5
+ "${s.description}" failed to define ${M[r].size} tag(s) as they were defined by a runtime of ${a} version "${o.description}": ${ns(M[r]).sort().join(", ")}.`,i>0?n=`${n}
6
+ WARNING! If your code uses features of the above web components, unavailable in ${o.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)},cs=new Set,Ln=e=>{cs.add(e)},Mn=e=>cs.has(e),se=new Set,On=new R,H=new _n;let D,ct,Ct,rt;const ls=async e=>{H.add(e),await In()},us=e=>{On.fireEvent("beforeComponentRender",e),se.add(e),e._render()},Pn=e=>{H.remove(e),se.delete(e)},In=async()=>{rt||(rt=new Promise(e=>{window.requestAnimationFrame(()=>{H.process(us),rt=null,e(),Ct||(Ct=setTimeout(()=>{Ct=void 0,H.isEmpty()&&Dn()},200))})})),await rt},Rn=()=>D||(D=new Promise(e=>{ct=e,window.requestAnimationFrame(()=>{H.isEmpty()&&(D=void 0,e())})}),D),xn=()=>{const e=Cn().map(t=>customElements.whenDefined(t));return Promise.all(e)},ne=async()=>{await xn(),await Rn()},Dn=()=>{!H.isEmpty()||ct&&(ct(),ct=void 0,D=void 0)},re=async e=>{se.forEach(t=>{const s=t.constructor.getMetadata().getTag(),n=Mn(t.constructor),r=t.constructor.getMetadata().isLanguageAware(),i=t.constructor.getMetadata().isThemeAware();(!e||e.tag===s||e.rtlAware&&n||e.languageAware&&r||e.themeAware&&i)&&ls(t)}),await ne()};let Tt,Wt;const pt=()=>(Tt===void 0&&(Tt=on()),Tt),Un=e=>{Wt=e},kn=()=>(Wt===void 0&&Un(an()),Wt),Nn=/^((?:[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=Nn.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 Et=new Map,ds=e=>(Et.has(e)||Et.set(e,new Hn(e)),Et.get(e)),ye=e=>{try{if(e&&typeof e=="string")return ds(e)}catch{}},Zt=e=>e?ye(e):pt()?ds(pt()):ye(Je()),Bn=/^((?:[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,_e=/(?:^|-)(saptrc|sappsd)(?:-|$)/i,jn={he:"iw",yi:"ji",id:"in",sr:"sh"},Fn=e=>{let t;if(!e)return O;if(typeof e=="string"&&(t=Bn.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,i=t[4]?t[4].slice(1):void 0,o=t[6];return s=jn[s]||s,o&&(t=_e.exec(o))||i&&(t=_e.exec(i))?`en_US_${t[1].toLowerCase()}`:(s==="zh"&&!n&&(r==="hans"?n="CN":r==="hant"&&(n="TW")),s+(n?"_"+n+(i?"_"+i.replace("-","_"):""):""))}},Vn=e=>{if(!e)return O;if(e==="zh_HK")return"zh_TW";const t=e.lastIndexOf("_");return t>=0?e.slice(0,t):e!==O?O:""},we=new Set,ve=new Set,ie=new Map,Lt=new Map,oe=new Map,zn=(e,t,s)=>{const n=`${e}/${t}`;oe.set(n,s)},Ae=(e,t)=>{ie.set(e,t)},Wn=e=>ie.get(e),Se=(e,t)=>{const s=`${e}/${t}`;return oe.has(s)},Zn=(e,t)=>{const s=`${e}/${t}`,n=oe.get(s);return Lt.get(s)||Lt.set(s,n(t)),Lt.get(s)},qn=e=>{we.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.`),we.add(e))},hs=async e=>{const t=Zt().getLanguage(),s=Zt().getRegion();let n=Fn(t+(s?`-${s}`:""));for(;n!==zt&&!Se(e,n);)n=Vn(n);const r=kn();if(n===zt&&!r){Ae(e,null);return}if(!Se(e,n)){qn(e);return}try{const i=await Zn(e,n);Ae(e,i)}catch(i){ve.has(i.message)||(ve.add(i.message),console.error(i.message))}};ss(()=>{const e=[...ie.keys()];return Promise.all(e.map(hs))});const Gn=new Map,gt=new Map,Mt=new Map,$e=new Set;let be=!1;const Kn={iw:"he",ji:"yi",in:"id"},Ce=e=>{be||(console.warn(`[LocaleData] Supported locale "${e}" not configured, import the "Assets.js" module from the webcomponents package you are using.`),be=!0)},Jn=(e,t,s)=>{e=e&&Kn[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 ue.includes(n)||(n=e,ue.includes(n))?gt.has(n)?n:(Ce(n),O):O},Te=(e,t)=>{Gn.set(e,t)},Xn=e=>{const t=gt.get(e);return Mt.get(e)||Mt.set(e,t(e)),Mt.get(e)},Yn=async(e,t,s)=>{const n=Jn(e,t,s),r=S("OpenUI5Support");if(r){const i=r.getLocaleDataObject();if(i){Te(n,i);return}}try{const i=await Xn(n);Te(n,i)}catch(i){$e.has(i.message)||($e.add(i.message),console.error(i.message))}},Qn=(e,t)=>{gt.set(e,t)};Qn("en",async e=>(await fetch("https://sdk.openui5.org/1.103.0/resources/sap/ui/core/cldr/en.json")).json());ss(()=>{const e=Zt();return Yn(e.getLanguage(),e.getRegion(),e.getScript())});const fs=new Map,ps=new Map,gs=new Set,mt=new Set,C=(e,t,s)=>{ps.set(`${e}/${t}`,s),gs.add(e),mt.add(t)},ms=async(e,t)=>{const s=fs.get(`${e}_${t}`);if(s!==void 0)return s;if(!mt.has(t)){const n=[...mt.values()].join(", ");return console.warn(`You have requested a non-registered theme ${t} - falling back to ${Vt}. Registered themes are: ${n}`),Ee(e,Vt)}return Ee(e,t)},Ee=async(e,t)=>{const s=ps.get(`${e}/${t}`);if(!s){console.error(`Theme [${t}] not registered for package [${e}]`);return}let n;try{n=await s(t)}catch(i){console.error(e,i.message);return}const r=n._||n;return fs.set(`${e}_${t}`,r),r},ys=()=>gs,tr=e=>mt.has(e),Le={"SAP-icons-TNT":"tnt",BusinessSuiteInAppSymbols:"business-suite",horizon:"SAP-icons-v5"},er=(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},sr=(e,t={})=>{const s=document.createElement("link");return s.type="text/css",s.rel="stylesheet",Object.entries(t).forEach(n=>s.setAttribute(...n)),s.href=e,document.head.appendChild(s),new Promise(n=>{s.addEventListener("load",n),s.addEventListener("error",n)})},wt=(e,t)=>t?`${e}|${t}`:e,vt=(e,t,s="")=>{const n=typeof e=="string"?e:e.content;if(document.adoptedStyleSheets){const r=new CSSStyleSheet;r.replaceSync(n),r._ui5StyleId=wt(t,s),document.adoptedStyleSheets=[...document.adoptedStyleSheets,r]}else{const r={};r[t]=s,er(n,r)}},nr=(e,t,s="")=>{const n=typeof e=="string"?e:e.content;document.adoptedStyleSheets?document.adoptedStyleSheets.find(r=>r._ui5StyleId===wt(t,s)).replaceSync(n||""):document.querySelector(`head>style[${t}="${s}"]`).textContent=n||""},At=(e,t="")=>document.adoptedStyleSheets?!!document.adoptedStyleSheets.find(s=>s._ui5StyleId===wt(e,t)):!!document.querySelector(`head>style[${e}="${t}"]`),rr=(e,t="")=>{if(document.adoptedStyleSheets)document.adoptedStyleSheets=document.adoptedStyleSheets.filter(s=>s._ui5StyleId!==wt(e,t));else{const s=document.querySelector(`head > style[${e}="${t}"]`);s&&s.parentElement.removeChild(s)}},_s=(e,t,s="")=>{At(t,s)?nr(e,t,s):vt(e,t,s)},U=new Set,ir=()=>{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},or=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{U.has("decode")||(console.warn("Malformed theme metadata string, unable to decodeURIComponent"),U.add("decode"));return}try{return JSON.parse(s)}catch{U.has("parse")||(console.warn("Malformed theme metadata string, unable to parse JSON"),U.add("parse"))}}},ar=e=>{let t,s;try{t=e.Path.match(/\.([^.]+)\.css_variables$/)[1],s=e.Extends[0]}catch{U.has("object")||(console.warn("Malformed theme metadata Object",e),U.add("object"));return}return{themeName:t,baseThemeName:s}},Me=()=>{const e=ir();if(!e||e==="none")return;const t=or(e);return ar(t)},cr=new R,lr="themeLoaded",ur=e=>cr.fireEvent(lr,e);let Ot;const ws=()=>(Ot===void 0&&(Ot=nn()),Ot),dr=e=>`${ws()}Base/baseLib/${e}/css_variables.css`,hr=async e=>{const t=document.querySelector(`[sap-ui-webcomponents-theme="${e}"]`);t&&document.head.removeChild(t),await sr(dr(e),{"sap-ui-webcomponents-theme":e})},K="@ui5/webcomponents-theming",fr=()=>ys().has(K),pr=async e=>{if(!fr())return;const t=await ms(K,e);t&&_s(t,"data-ui5-theme-properties",K)},gr=()=>{rr("data-ui5-theme-properties",K)},mr=async e=>{ys().forEach(async s=>{if(s===K)return;const n=await ms(s,e);n&&_s(n,"data-ui5-theme-properties",s)})},yr=async e=>{const t=Me();if(t)return t;const s=S("OpenUI5Support");if(s){if(s.cssVariablesLoaded())return{themeName:s.getConfigurationSettingsObject().theme}}else if(ws())return await hr(e),Me()},vs=async e=>{const t=await yr(e);!t||e!==t.themeName?await pr(e):gr();const s=tr(e)?e:t&&t.baseThemeName;await mr(s),ur(e)};let k;const St=()=>(k===void 0&&(k=sn()),k),As=async e=>{k!==e&&(k=e,await vs(k),await re({themeAware:!0}))},_r=e=>St().startsWith(e),wr=new Map,Ss=()=>{const e=St(),t=wr.get(e);return t||(_r("sap_horizon")?"SAP-icons-v5":"SAP-icons")},Oe=new Map,yt=x("SVGIcons.registry",new Map),Pt=x("SVGIcons.promises",new Map),Pe="ICON_NOT_FOUND",vr=async e=>{if(!Pt.has(e)){if(!Oe.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=Oe.get(e);Pt.set(e,t(e))}return Pt.get(e)},Ar=e=>{Object.keys(e.data).forEach(t=>{const s=e.data[t];Sr(t,{pathData:s.path||s.paths,ltr:s.ltr,accData:s.acc,collection:e.collection,packageName:e.packageName})})},Sr=(e,{pathData:t,ltr:s,accData:n,collection:r,packageName:i,customTemplate:o,viewBox:a}={})=>{r||(r=Ss());const c=`${r}/${e}`;yt.set(c,{pathData:t,ltr:s,accData:n,packageName:i,customTemplate:o,viewBox:a})},$r=e=>{e.startsWith("sap-icon://")&&(e=e.replace("sap-icon://",""));let t;[e,t]=e.split("/").reverse(),t=t||Ss(),t=Cr(t),e=e.replace("icon-","");const s=`${t}/${e}`;return{name:e,collection:t,registryKey:s}},It=async e=>{const{collection:t,registryKey:s}=$r(e);let n=Pe;try{n=await vr(t)}catch(r){console.error(r.message)}return n===Pe?n:(yt.has(s)||Ar(n),yt.get(s))},br=async()=>(await It("edit"),await It("tnt/arrow"),await It("business-suite/3d"),Array.from(yt.keys())),Cr=e=>Le[e]?Le[e]:e,qt=x("PopupUtilsData",{});qt.currentZIndex=qt.currentZIndex||100;const $s=()=>qt.currentZIndex,b=()=>{const e=window.sap;return e&&e.ui&&typeof e.ui.getCore=="function"&&e.ui.getCore()},Tr=()=>!!b(),Er=()=>{const e=b();return e?new Promise(t=>{e.attachInit(()=>{window.sap.ui.require(["sap/ui/core/LocaleData","sap/ui/core/Popup"],(s,n)=>{n.setInitialZIndex($s()),t()})})}):Promise.resolve()},Lr=()=>{const e=b();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(),themeRoot:t.getThemeRoot(),rtl:t.getRTL(),calendarType:t.getCalendarType(),formatSettings:{firstDayOfWeek:s?s.getInstance(t.getLocale()).getFirstDayOfWeek():void 0}}},Mr=()=>{const e=b();if(!e)return;const t=e.getConfiguration();return window.sap.ui.require("sap/ui/core/LocaleData").getInstance(t.getLocale())._get()},Or=()=>{const e=b(),t=e.getConfiguration();e.attachThemeChanged(async()=>{await As(t.getTheme())})},Pr=()=>{!b()||Or()},Ir=()=>{if(!b())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=()=>b()?window.sap.ui.require("sap/ui/core/Popup").getNextZIndex():void 0,xr=()=>{if(!b())return;window.sap.ui.require("sap/ui/core/Popup").setInitialZIndex($s())},Dr={isLoaded:Tr,init:Er,getConfigurationSettingsObject:Lr,getLocaleDataObject:Mr,attachListeners:Pr,cssVariablesLoaded:Ir,getNextZIndex:Rr,setInitialZIndex:xr};Js("OpenUI5Support",Dr);const Ur=()=>new Promise(e=>{document.body?e():document.addEventListener("DOMContentLoaded",()=>{e()})});var kr={packageName:"@ui5/webcomponents-base",fileName:"FontFace.css",content:`@font-face{font-family:"72";font-style:normal;font-weight:400;src:local("72"),url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular.woff2?ui5-webcomponents) format("woff2")}@font-face{font-family:"72full";font-style:normal;font-weight:400;src:local('72-full'),url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular-full.woff2?ui5-webcomponents) format("woff2")}@font-face{font-family:"72";font-style:normal;font-weight:700;src:local('72-Bold'),url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff2?ui5-webcomponents) format("woff2")}@font-face{font-family:"72full";font-style:normal;font-weight:700;src:local('72-Bold-full'),url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff2?ui5-webcomponents) format("woff2")}@font-face{font-family:'72-Bold';font-style:normal;src:local('72-Bold'),url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff2?ui5-webcomponents) format("woff2")}@font-face{font-family:'72-Boldfull';font-style:normal;src:url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff2?ui5-webcomponents) format("woff2")}@font-face{font-family:'72-Light';font-style:normal;src:local('72-Light'),url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light.woff2?ui5-webcomponents) format("woff2")}@font-face{font-family:'72-Lightfull';font-style:normal;src:url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light-full.woff2?ui5-webcomponents) format("woff2")}@font-face{font-family:"72Black";font-style:bold;font-weight:900;src:local('72Black'),url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_horizon/fonts/72-Black.woff2?ui5-webcomponents) format("woff2")}`},Nr={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 Hr=()=>{const e=S("OpenUI5Support");(!e||!e.isLoaded())&&Br(),jr()},Br=()=>{At("data-ui5-font-face")||vt(kr,"data-ui5-font-face")},jr=()=>{At("data-ui5-font-face-override")||vt(Nr,"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 Vr=()=>{At("data-ui5-system-css-vars")||vt(Fr,"data-ui5-system-css-vars")};let it;const zr=async()=>it||(it=new Promise(async e=>{An();const t=S("OpenUI5Support"),s=t?t.isLoaded():!1,n=S("F6Navigation");t&&await t.init(),n&&!s&&n.init(),await Ur(),await vs(St()),t&&t.attachListeners(),Hr(),Vr(),e()}),it);class Z{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 lt=(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},Rt=new Map,xt=new Map,Ie=e=>{if(!Rt.has(e)){const t=Wr(e.split("-"));Rt.set(e,t)}return Rt.get(e)},bs=e=>{if(!xt.has(e)){const t=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();xt.set(e,t)}return xt.get(e)},Wr=e=>e.map((t,s)=>s===0?t.toLowerCase():t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join(""),Zr=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"},Gt=e=>e&&e instanceof HTMLElement&&e.localName==="slot",Cs=e=>Gt(e)?e.assignedNodes({flatten:!0}).filter(t=>t instanceof HTMLElement):[e],qr=e=>{const t=(s,n)=>s.concat(Cs(n));return e.reduce(t,[])};let Gr,Re={include:[/^ui5-/],exclude:[]};const Dt=new Map,Ts=()=>Gr,Kt=e=>{if(!Dt.has(e)){const t=Re.include.some(s=>e.match(s))&&!Re.exclude.some(s=>e.match(s));Dt.set(e,t)}return Dt.get(e)},Jt=e=>{if(Kt(e))return Ts()};class Kr{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 i=n[r].type,o=n[r].defaultValue;i===Boolean?(t[r]=!1,o!==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]=[]:i===Object?t[r]="defaultValue"in n[r]?n[r].defaultValue:{}:i===String?t[r]="defaultValue"in n[r]?n[r].defaultValue:"":t[r]=o}if(s){const r=this.getSlots();for(const[i,o]of Object.entries(r)){const a=o.propertyName||i;t[a]=[]}}return this._initialState=t,t}static validatePropertyValue(t,s){return s.multiple?t.map(r=>xe(r,s)):xe(t,s)}static validateSlotValue(t,s){return Jr(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(bs)}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 xe=(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(lt(s,Z))return s.isValid(e)?e:t.defaultValue},Jr=(e,t)=>(e&&Cs(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 Xr=(e,t)=>{const s=Yr(t),n=Ts();return e(t,s,n)},Yr=e=>{const t=e.constructor.getMetadata().getPureTag(),s=e.constructor.getUniqueDependencies().map(n=>n.getMetadata().getPureTag()).filter(Kt);return Kt(t)&&s.push(t),s},Qr=x("CustomStyle.eventProvider",new R),ti="CustomCSSChange",ae=e=>{Qr.attachEvent(ti,e)},De=x("CustomStyle.customCSSFor",{});ae(e=>{re({tag:e})});const ei=e=>De[e]?De[e].join(""):"",Ut=e=>Array.isArray(e)?Es(e.filter(t=>!!t)).map(t=>typeof t=="string"?t:t.content).join(" "):typeof e=="string"?e:e.content,Es=e=>e.reduce((t,s)=>t.concat(Array.isArray(s)?Es(s):s),[]),ut=new Map;ae(e=>{ut.delete(`${e}_normal`)});const Ls=(e,t=!1)=>{const s=e.getMetadata().getTag(),n=`${s}_${t?"static":"normal"}`,r=S("OpenUI5Enablement");if(!ut.has(n)){let i,o="";if(r&&(o=Ut(r.getBusyIndicatorStyles())),t)i=Ut(e.staticAreaStyles);else{const a=ei(s)||"";i=`${Ut(e.styles)} ${a}`}i=`${i} ${o}`,ut.set(n,i)}return ut.get(n)},dt=new Map;ae(e=>{dt.delete(`${e}_normal`)});const si=(e,t=!1)=>{const n=`${e.getMetadata().getTag()}_${t?"static":"normal"}`;if(!dt.has(n)){const r=Ls(e,t),i=new CSSStyleSheet;i.replaceSync(r),dt.set(n,[i])}return dt.get(n)},Xt=(e,t=!1)=>{let s;const n=t?"staticAreaTemplate":"template",r=t?e.staticAreaItem.shadowRoot:e.shadowRoot,i=Xr(e.constructor[n],e);document.adoptedStyleSheets?r.adoptedStyleSheets=si(e.constructor,t):s=Ls(e.constructor,t),e.constructor.render(i,r,s,t,{host:e})},ni="--_ui5_content_density",ri=e=>getComputedStyle(e).getPropertyValue(ni);var ii=e=>{const t=/\$([-a-z0-9A-Z._]+)(?::([^$]*))?\$/.exec(e);return t&&t[2]?t[2].split(/,/):null};const oi={iw:"he",ji:"yi",in:"id",sh:"sr"},ai=ii("$cldr-rtl-locales:ar,fa,he$")||[],ci=e=>(e=e&&oi[e]||e,ai.indexOf(e)>=0),Ms=()=>{const e=rn();return e!==null?!!e:ci(pt()||Je())},li="--_ui5_dir",Os=e=>{const t=window.document,s=["ltr","rtl"],n=getComputedStyle(e).getPropertyValue(li);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 q extends HTMLElement{constructor(){super(),this._rendered=!1,this.attachShadow({mode:"open"}),this.pureTagName="ui5-static-area-item",this.popupIntegrationAttr="data-sap-ui-integration-popup-content"}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._updateAdditionalAttrs(),this._updateContentDensity(),this._updateDirection(),Xt(this.ownerElement,!0))}_updateContentDensity(){ri(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=Os(this.ownerElement);t?this.setAttribute("dir",t):this.removeAttribute("dir")}_updateAdditionalAttrs(){this.setAttribute(this.pureTagName,""),this.setAttribute(this.popupIntegrationAttr,"")}async getDomRef(){return this._updateContentDensity(),this._rendered||(this._rendered=!0,Xt(this.ownerElement,!0)),await ne(),this.shadowRoot}static getTag(){const t="ui5-static-area-item",s=Jt(t);return s?`${t}-${s}`:t}static createInstance(){return customElements.get(q.getTag())||customElements.define(q.getTag(),q),document.createElement(this.getTag())}}const Yt=new WeakMap;let ui=(e,t,s)=>{const n=new MutationObserver(t);return n.observe(e,s),n},di=e=>{e.disconnect()};const hi=(e,t,s)=>{const n=ui(e,t,s);Yt.set(e,n)},fi=e=>{const t=Yt.get(e);t&&(di(t),Yt.delete(e))},pi=["value-changed"],gi=e=>pi.includes(e);let ht;const mi=e=>{const t=ce();return!(t.events&&t.events.includes&&t.events.includes(e))},ce=()=>(ht===void 0&&(ht=cn()),ht),yi=e=>{const t=ce();return gi(e)?!1:t===!0?!0:!mi(e)},_i=e=>{ht=e},wi=["disabled","title","hidden","role","draggable"],Ue=e=>wi.includes(e)||e.startsWith("aria")?!0:![HTMLElement,Element,Node].some(s=>s.prototype.hasOwnProperty(e)),ke=(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},vi=(e,t)=>class extends e{constructor(){super(),t&&t()}};let Ai=0;const Ne=new Map,kt=new Map;function V(e){this._suppressInvalidation||(this.onInvalidation(e),this._changedState.push(e),ls(this),this._eventProvider.fireEvent("invalidate",{...e,target:this}))}let He={};class T 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 R;let t;this._domRefReadyPromise=new Promise(s=>{t=s}),this._domRefReadyPromise._deferredResolve=t,this._doNotSyncAttributes=new Set,this._initializeState(),this._upgradeAllProperties(),this.constructor._needsShadowDOM()&&this.attachShadow({mode:"open"})}get _id(){return this.__id||(this.__id=`ui5wc_${++Ai}`),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&&(us(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),Pn(this)}_startObservingDOMChildren(){if(!this.constructor.getMetadata().hasSlots())return;const s=this.constructor.getMetadata().canSlotText(),n={childList:!0,subtree:s,characterData:s};hi(this,this._processChildren.bind(this),n)}_stopObservingDOMChildren(){fi(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,i=new Map;for(const[d,h]of Object.entries(t)){const u=h.propertyName||d;i.set(u,d),r.set(u,[...this._state[u]]),this._clearSlot(d,h)}const o=new Map,a=new Map,c=n.map(async(d,h)=>{const u=Zr(d),f=t[u];if(f===void 0){const p=Object.keys(t).join(", ");console.warn(`Unknown slotName: ${u}, ignoring`,d,`Valid values are: ${p}`);return}if(f.individualSlots){const p=(o.get(u)||0)+1;o.set(u,p),d._individualSlot=`${u}-${p}`}if(d instanceof HTMLElement){const p=d.localName;if(p.includes("-")){if(!window.customElements.get(p)){const st=window.customElements.whenDefined(p);let nt=Ne.get(p);nt||(nt=new Promise(Ws=>setTimeout(Ws,1e3)),Ne.set(p,nt)),await Promise.race([st,nt])}window.customElements.upgrade(d)}}d=this.constructor.getMetadata().constructor.validateSlotValue(d,f),d.isUI5Element&&f.invalidateOnChildChange&&(d.attachInvalidate||d._attachChange).bind(d)(this._getChildChangeListener(u)),Gt(d)&&this._attachSlotChange(d,u);const g=f.propertyName||u;a.has(g)?a.get(g).push({child:d,idx:h}):a.set(g,[{child:d,idx:h}])});await Promise.all(c),a.forEach((d,h)=>{this._state[h]=d.sort((u,f)=>u.idx-f.idx).map(u=>u.child)});let l=!1;for(const[d,h]of Object.entries(t)){const u=h.propertyName||d;ke(r.get(u),this._state[u])||(V.call(this,{type:"slot",name:i.get(u),reason:"children"}),l=!0)}l||V.call(this,{type:"slot",name:"default",reason:"textcontent"})}_clearSlot(t,s){const n=s.propertyName||t;this._state[n].forEach(i=>{i&&i.isUI5Element&&(i.detachInvalidate||i._detachChange).bind(i)(this._getChildChangeListener(t)),Gt(i)&&this._detachSlotChange(i,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)||V.call(this,{type:"slot",name:t,reason:"childchange",child:s.target})}attributeChangedCallback(t,s,n){if(this._doNotSyncAttributes.has(t))return;const r=this.constructor.getMetadata().getProperties(),i=t.replace(/^ui5-/,""),o=Ie(i);if(r.hasOwnProperty(o)){const a=r[o].type;a===Boolean?n=n!==null:lt(a,Z)&&(n=a.attributeToProperty(n)),this[o]=n}}_updateAttribute(t,s){if(!this.constructor.getMetadata().hasAttribute(t))return;const r=this.constructor.getMetadata().getProperties()[t].type,i=bs(t),o=this.getAttribute(i);if(r===Boolean)s===!0&&o===null?this.setAttribute(i,""):s===!1&&o!==null&&this.removeAttribute(i);else if(lt(r,Z)){const a=r.propertyToAttribute(s);a===null?(this._doNotSyncAttributes.add(i),this.removeAttribute(i),this._doNotSyncAttributes.delete(i)):this.setAttribute(i,a)}else typeof s!="object"&&o!==s&&this.setAttribute(i,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){V.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()&&Xt(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 i=this._fireEvent(t,s,n,r),o=Ie(t);return o!==t?i&&this._fireEvent(o,s,n):i}_fireEvent(t,s,n=!1,r=!0){const i=new CustomEvent(`ui5-${t}`,{detail:s,composed:!1,bubbles:r,cancelable:n}),o=this.dispatchEvent(i);if(yi(t))return o;const a=new CustomEvent(t,{detail:s,composed:!1,bubbles:r,cancelable:n});return this.dispatchEvent(a)&&o}getSlottedNodes(t){return qr(this[t])}get effectiveDir(){return Ln(this.constructor),Os(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=q.createInstance(),this.staticAreaItem.setOwnerElement(this)),this.staticAreaItem.parentElement||rs("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,i]of Object.entries(n)){if(Ue(r)||console.warn(`"${r}" is not a valid property name. Use a name that does not collide with DOM APIs`),i.type===Boolean&&i.defaultValue)throw new Error(`Cannot set a default value for property "${r}". All booleans are false by default.`);if(i.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(i.type===Object&&i.defaultValue)throw new Error(`Cannot set a default value for property "${r}". All properties of type "Object" are empty objects by default.`);if(i.multiple&&i.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 o=i.defaultValue;return i.type===Boolean?!1:i.type===String?o:i.multiple?[]:o},set(o){let a;o=this.constructor.getMetadata().constructor.validatePropertyValue(o,i);const c=this._state[r];i.multiple&&i.compareValues?a=!ke(c,o):lt(i.type,Z)?a=!i.type.valuesAreEqual(c,o):a=c!==o,a&&(this._state[r]=o,V.call(this,{type:"property",name:r,newValue:o,oldValue:c}),this._updateAttribute(r,o))}})}if(s){const r=this.getMetadata().getSlots();for(const[i,o]of Object.entries(r)){Ue(i)||console.warn(`"${i}" is not a valid property name. Use a name that does not collide with DOM APIs`);const a=o.propertyName||i;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 He}static set metadata(t){He=t}static get styles(){return""}static get staticAreaStyles(){return""}static get dependencies(){return[]}static getUniqueDependencies(){if(!kt.has(this)){const t=this.dependencies.filter((s,n,r)=>r.indexOf(s)===n);kt.set(this,t)}return kt.get(this)}static whenDependenciesDefined(){return Promise.all(this.getUniqueDependencies().map(t=>t.define()))}static async onDefine(){return Promise.resolve()}static async define(){await zr(),await Promise.all([this.whenDependenciesDefined(),this.onDefine()]);const t=this.getMetadata().getTag(),s=this.getMetadata().getAltTag(),n=bn(t),r=customElements.get(t);return r&&!n?Tn(t):r||(this._generateAccessors(),me(t),window.customElements.define(t,this),s&&!customElements.get(s)&&(me(s),window.customElements.define(s,vi(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!==T;)s=Object.getPrototypeOf(s),t.unshift(s.metadata);const n=te({},...t);return this._metadata=new Kr(n),this._metadata}}/**
10
+ * @license
11
+ * Copyright 2017 Google LLC
12
+ * SPDX-License-Identifier: BSD-3-Clause
13
+ */var Nt;const B=globalThis.trustedTypes,Be=B?B.createPolicy("lit-html",{createHTML:e=>e}):void 0,A=`lit$${(Math.random()+"").slice(9)}$`,le="?"+A,Si=`<${le}>`,j=document,J=(e="")=>j.createComment(e),X=e=>e===null||typeof e!="object"&&typeof e!="function",Ps=Array.isArray,Is=e=>{var t;return Ps(e)||typeof((t=e)===null||t===void 0?void 0:t[Symbol.iterator])=="function"},z=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,je=/-->/g,Fe=/>/g,E=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,Ve=/'/g,ze=/"/g,Rs=/^(?:script|style|textarea|title)$/i,$i=e=>(t,...s)=>({_$litType$:e,strings:t,values:s}),bi=$i(1),P=Symbol.for("lit-noChange"),m=Symbol.for("lit-nothing"),We=new WeakMap,Ci=(e,t,s)=>{var n,r;const i=(n=s==null?void 0:s.renderBefore)!==null&&n!==void 0?n:t;let o=i._$litPart$;if(o===void 0){const a=(r=s==null?void 0:s.renderBefore)!==null&&r!==void 0?r:null;i._$litPart$=o=new F(t.insertBefore(J(),a),a,void 0,s!=null?s:{})}return o._$AI(e),o},N=j.createTreeWalker(j,129,null,!1),xs=(e,t)=>{const s=e.length-1,n=[];let r,i=t===2?"<svg>":"",o=z;for(let c=0;c<s;c++){const l=e[c];let d,h,u=-1,f=0;for(;f<l.length&&(o.lastIndex=f,h=o.exec(l),h!==null);)f=o.lastIndex,o===z?h[1]==="!--"?o=je:h[1]!==void 0?o=Fe:h[2]!==void 0?(Rs.test(h[2])&&(r=RegExp("</"+h[2],"g")),o=E):h[3]!==void 0&&(o=E):o===E?h[0]===">"?(o=r!=null?r:z,u=-1):h[1]===void 0?u=-2:(u=o.lastIndex-h[2].length,d=h[1],o=h[3]===void 0?E:h[3]==='"'?ze:Ve):o===ze||o===Ve?o=E:o===je||o===Fe?o=z:(o=E,r=void 0);const g=o===E&&e[c+1].startsWith("/>")?" ":"";i+=o===z?l+Si:u>=0?(n.push(d),l.slice(0,u)+"$lit$"+l.slice(u)+A+g):l+A+(u===-2?(n.push(void 0),c):g)}const a=i+(e[s]||"<?>")+(t===2?"</svg>":"");if(!Array.isArray(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return[Be!==void 0?Be.createHTML(a):a,n]};class Y{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let i=0,o=0;const a=t.length-1,c=this.parts,[l,d]=xs(t,s);if(this.el=Y.createElement(l,n),N.currentNode=this.el.content,s===2){const h=this.el.content,u=h.firstChild;u.remove(),h.append(...u.childNodes)}for(;(r=N.nextNode())!==null&&c.length<a;){if(r.nodeType===1){if(r.hasAttributes()){const h=[];for(const u of r.getAttributeNames())if(u.endsWith("$lit$")||u.startsWith(A)){const f=d[o++];if(h.push(u),f!==void 0){const g=r.getAttribute(f.toLowerCase()+"$lit$").split(A),p=/([.?@])?(.*)/.exec(f);c.push({type:1,index:i,name:p[2],strings:g,ctor:p[1]==="."?Us:p[1]==="?"?ks:p[1]==="@"?Ns:Q})}else c.push({type:6,index:i})}for(const u of h)r.removeAttribute(u)}if(Rs.test(r.tagName)){const h=r.textContent.split(A),u=h.length-1;if(u>0){r.textContent=B?B.emptyScript:"";for(let f=0;f<u;f++)r.append(h[f],J()),N.nextNode(),c.push({type:2,index:++i});r.append(h[u],J())}}}else if(r.nodeType===8)if(r.data===le)c.push({type:2,index:i});else{let h=-1;for(;(h=r.data.indexOf(A,h+1))!==-1;)c.push({type:7,index:i}),h+=A.length-1}i++}}static createElement(t,s){const n=j.createElement("template");return n.innerHTML=t,n}}function I(e,t,s=e,n){var r,i,o,a;if(t===P)return t;let c=n!==void 0?(r=s._$Cl)===null||r===void 0?void 0:r[n]:s._$Cu;const l=X(t)?void 0:t._$litDirective$;return(c==null?void 0:c.constructor)!==l&&((i=c==null?void 0:c._$AO)===null||i===void 0||i.call(c,!1),l===void 0?c=void 0:(c=new l(e),c._$AT(e,s,n)),n!==void 0?((o=(a=s)._$Cl)!==null&&o!==void 0?o:a._$Cl=[])[n]=c:s._$Cu=c),c!==void 0&&(t=I(e,c._$AS(e,t.values),c,n)),t}class Ds{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,i=((s=t==null?void 0:t.creationScope)!==null&&s!==void 0?s:j).importNode(n,!0);N.currentNode=i;let o=N.nextNode(),a=0,c=0,l=r[0];for(;l!==void 0;){if(a===l.index){let d;l.type===2?d=new F(o,o.nextSibling,this,t):l.type===1?d=new l.ctor(o,l.name,l.strings,this,t):l.type===6&&(d=new Hs(o,this,t)),this.v.push(d),l=r[++c]}a!==(l==null?void 0:l.index)&&(o=N.nextNode(),a++)}return i}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 F{constructor(t,s,n,r){var i;this.type=2,this._$AH=m,this._$AN=void 0,this._$AA=t,this._$AB=s,this._$AM=n,this.options=r,this._$Cg=(i=r==null?void 0:r.isConnected)===null||i===void 0||i}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=I(this,t,s),X(t)?t===m||t==null||t===""?(this._$AH!==m&&this._$AR(),this._$AH=m):t!==this._$AH&&t!==P&&this.$(t):t._$litType$!==void 0?this.T(t):t.nodeType!==void 0?this.k(t):Is(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!==m&&X(this._$AH)?this._$AA.nextSibling.data=t:this.k(j.createTextNode(t)),this._$AH=t}T(t){var s;const{values:n,_$litType$:r}=t,i=typeof r=="number"?this._$AC(t):(r.el===void 0&&(r.el=Y.createElement(r.h,this.options)),r);if(((s=this._$AH)===null||s===void 0?void 0:s._$AD)===i)this._$AH.m(n);else{const o=new Ds(i,this),a=o.p(this.options);o.m(n),this.k(a),this._$AH=o}}_$AC(t){let s=We.get(t.strings);return s===void 0&&We.set(t.strings,s=new Y(t)),s}S(t){Ps(this._$AH)||(this._$AH=[],this._$AR());const s=this._$AH;let n,r=0;for(const i of t)r===s.length?s.push(n=new F(this.M(J()),this.M(J()),this,this.options)):n=s[r],n._$AI(i),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 Q{constructor(t,s,n,r,i){this.type=1,this._$AH=m,this._$AN=void 0,this.element=t,this.name=s,this._$AM=r,this.options=i,n.length>2||n[0]!==""||n[1]!==""?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=m}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,s=this,n,r){const i=this.strings;let o=!1;if(i===void 0)t=I(this,t,s,0),o=!X(t)||t!==this._$AH&&t!==P,o&&(this._$AH=t);else{const a=t;let c,l;for(t=i[0],c=0;c<i.length-1;c++)l=I(this,a[n+c],s,c),l===P&&(l=this._$AH[c]),o||(o=!X(l)||l!==this._$AH[c]),l===m?t=m:t!==m&&(t+=(l!=null?l:"")+i[c+1]),this._$AH[c]=l}o&&!r&&this.C(t)}C(t){t===m?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t!=null?t:"")}}class Us extends Q{constructor(){super(...arguments),this.type=3}C(t){this.element[this.name]=t===m?void 0:t}}const Ti=B?B.emptyScript:"";class ks extends Q{constructor(){super(...arguments),this.type=4}C(t){t&&t!==m?this.element.setAttribute(this.name,Ti):this.element.removeAttribute(this.name)}}class Ns extends Q{constructor(t,s,n,r,i){super(t,s,n,r,i),this.type=5}_$AI(t,s=this){var n;if((t=(n=I(this,t,s,0))!==null&&n!==void 0?n:m)===P)return;const r=this._$AH,i=t===m&&r!==m||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,o=t!==m&&(r===m||i);i&&this.element.removeEventListener(this.name,this,r),o&&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 Hs{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){I(this,t)}}const Ei={L:"$lit$",P:A,V:le,I:1,N:xs,R:Ds,j:Is,D:I,H:F,F:Q,O:ks,W:Ns,B:Us,Z:Hs},Ze=window.litHtmlPolyfillSupport;Ze==null||Ze(Y,F),((Nt=globalThis.litHtmlVersions)!==null&&Nt!==void 0?Nt:globalThis.litHtmlVersions=[]).push("2.2.2");/**
14
+ * @license
15
+ * Copyright 2017 Google LLC
16
+ * SPDX-License-Identifier: BSD-3-Clause
17
+ */const Bs={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Li=e=>(...t)=>({_$litDirective$:e,values:t});class js{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 2020 Google LLC
20
+ * SPDX-License-Identifier: BSD-3-Clause
21
+ */const{H:Mi}=Ei,qe=()=>document.createComment(""),W=(e,t,s)=>{var n;const r=e._$AA.parentNode,i=t===void 0?e._$AB:t._$AA;if(s===void 0){const o=r.insertBefore(qe(),i),a=r.insertBefore(qe(),i);s=new Mi(o,a,e,e.options)}else{const o=s._$AB.nextSibling,a=s._$AM,c=a!==e;if(c){let l;(n=s._$AQ)===null||n===void 0||n.call(s,e),s._$AM=e,s._$AP!==void 0&&(l=e._$AU)!==a._$AU&&s._$AP(l)}if(o!==i||c){let l=s._$AA;for(;l!==o;){const d=l.nextSibling;r.insertBefore(l,i),l=d}}}return s},L=(e,t,s=e)=>(e._$AI(t,s),e),Oi={},Pi=(e,t=Oi)=>e._$AH=t,Ii=e=>e._$AH,Ht=e=>{var t;(t=e._$AP)===null||t===void 0||t.call(e,!1,!0);let s=e._$AA;const n=e._$AB.nextSibling;for(;s!==n;){const r=s.nextSibling;s.remove(),s=r}};/**
22
+ * @license
23
+ * Copyright 2017 Google LLC
24
+ * SPDX-License-Identifier: BSD-3-Clause
25
+ */const Ge=(e,t,s)=>{const n=new Map;for(let r=t;r<=s;r++)n.set(e[r],r);return n},Fs=Li(class extends js{constructor(e){if(super(e),e.type!==Bs.CHILD)throw Error("repeat() can only be used in text expressions")}dt(e,t,s){let n;s===void 0?s=t:t!==void 0&&(n=t);const r=[],i=[];let o=0;for(const a of e)r[o]=n?n(a,o):o,i[o]=s(a,o),o++;return{values:i,keys:r}}render(e,t,s){return this.dt(e,t,s).values}update(e,[t,s,n]){var r;const i=Ii(e),{values:o,keys:a}=this.dt(t,s,n);if(!Array.isArray(i))return this.ut=a,o;const c=(r=this.ut)!==null&&r!==void 0?r:this.ut=[],l=[];let d,h,u=0,f=i.length-1,g=0,p=o.length-1;for(;u<=f&&g<=p;)if(i[u]===null)u++;else if(i[f]===null)f--;else if(c[u]===a[g])l[g]=L(i[u],o[g]),u++,g++;else if(c[f]===a[p])l[p]=L(i[f],o[p]),f--,p--;else if(c[u]===a[p])l[p]=L(i[u],o[p]),W(e,l[p+1],i[u]),u++,p--;else if(c[f]===a[g])l[g]=L(i[f],o[g]),W(e,i[u],i[f]),f--,g++;else if(d===void 0&&(d=Ge(a,g,p),h=Ge(c,u,f)),d.has(c[u]))if(d.has(c[f])){const w=h.get(a[g]),et=w!==void 0?i[w]:null;if(et===null){const st=W(e,i[u]);L(st,o[g]),l[g]=st}else l[g]=L(et,o[g]),W(e,i[u],et),i[w]=null;g++}else Ht(i[f]),f--;else Ht(i[u]),u++;for(;g<=p;){const w=W(e,l[p+1]);L(w,o[g]),l[g++]=w}for(;u<=f;){const w=i[u++];w!==null&&Ht(w)}return this.ut=a,Pi(e,l),P}});/**
26
+ * @license
27
+ * Copyright 2018 Google LLC
28
+ * SPDX-License-Identifier: BSD-3-Clause
29
+ */const v=e=>e!=null?e:m;/**
30
+ * @license
31
+ * Copyright 2017 Google LLC
32
+ * SPDX-License-Identifier: BSD-3-Clause
33
+ */class Ke extends js{constructor(t){if(super(t),this.it=m,t.type!==Bs.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===m||t==null)return this.ft=void 0,this.it=t;if(t===P)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:[]}}}Ke.directiveName="unsafeHTML",Ke.resultType=1;const _=(...e)=>{const t=S("LitStatic");return(t?t.html:bi)(...e)},tt=(e,t,s,n,{host:r}={})=>{const i=S("OpenUI5Enablement");i&&!n&&(e=i.wrapTemplateResultInBusyMarkup(_,r,e)),typeof s=="string"?e=_`<style>${s}</style>${e}`:Array.isArray(s)&&s.length&&(e=_`${s.map(o=>_`<link type="text/css" rel="stylesheet" href="${o}">`)}${e}`),Ci(e,t,{host:r})},Ri={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 Vs extends T{static get metadata(){return Ri}static get render(){return tt}static get template(){return t=>_`<div><p>
34
+ <slot></slot>
35
+ <slot name="other"></slot>
36
+ <slot name="individual-1"></slot>
37
+ <slot name="individual-2"></slot>
38
+ </p></div>`}static get styles(){return`:host {
39
+ display: inline-block;
40
+ border: 1px solid black;
41
+ color: var(--var1);
42
+ }`}onBeforeRendering(){}onAfterRendering(){}onEnterDOM(){}onExitDOM(){}}Vs.define();const xi={tag:"ui5-test-no-shadow"};class Di extends T{static get metadata(){return xi}}Di.define();const Ui={tag:"ui5-test-parent",managedSlots:!0,slots:{default:{type:Node,invalidateOnChildChange:{properties:["prop1"]}},items:{type:HTMLElement,invalidateOnChildChange:{properties:!0}}}};class ki extends T{static get metadata(){return Ui}static get render(){return tt}static get template(){return t=>_`<div>
43
+ <slot></slot>
44
+ </div>`}}ki.define();const Ni={tag:"ui5-test-child",properties:{prop1:{type:String},prop2:{type:String},prop3:{type:String}}};class Hi extends T{static get metadata(){return Ni}static get render(){return tt}static get template(){return t=>_`<div></div>`}}Hi.define();const Bi={tag:"ui5-with-static-area",properties:{staticContent:{type:Boolean}},slots:{}};class ji extends T{static get metadata(){return Bi}static get render(){return tt}static get template(){return t=>_`
45
+ <div dir=${t.effectiveDir}>
46
+ WithStaticArea works!
47
+ </div>`}static get staticAreaTemplate(){return t=>_`
48
+ <div class="ui5-with-static-area-content">
49
+ Static area content.
50
+ </div>`}static get styles(){return`
51
+ :host {
52
+ display: inline-block;
53
+ border: 1px solid black;
54
+ color: red;
55
+ }`}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(){}}ji.define();const Fi=(e,t,s)=>_`<div>Root text: ${v(e.text)}${Fs(e.items,(n,r)=>n._id||r,(n,r)=>Vi(n,r,e))} Root text: ${v(e.text)}</div>`,Vi=(e,t,s,n,r)=>_`<h3>Item-${t}</h3>${e.text?zi(e,t,s):void 0}<ul>${Fs(e.words,(i,o)=>i._id||o,(i,o)=>Wi(i,o,s))}</ul>${e.text?Zi(e,t,s):void 0}`,zi=(e,t,s,n,r)=>_`<div class="before-each-content--start--${t}">Root text: ${v(s.text)}, Item text: ${v(e.text)}</div>`,Wi=(e,t,s,n,r)=>_`<li><h3>Word-${t}</h3><div class="nested-each-content--${t}--0">Root Text: ${v(s.text)}, Word text: ${v(e.text)}</div><div class="nested-each-content--${t}--1">Root Text: ${v(s.text)}, Word text: ${v(e.text)}</div></li>`,Zi=(e,t,s,n,r)=>_`<div class="after-each-content--end--${t}">Root text: ${v(s.text)}, Item text: ${v(e.text)}</div>`;class qi extends T{static get metadata(){return{tag:"ui5-test-complex-template"}}static get render(){return tt}static get template(){return Fi}get text(){return"root"}get items(){return[{text:"positives",words:[{text:"word1_good"},{text:"word2_nice"},{text:"word3_kind"}]},{text:"negatives",words:[{text:"word4_bad"},{text:"word5_rude"},{text:"word6_unpolite"}]}]}}qi.define();const Gi={tag:"ui5-test-generic-ext",properties:{extProp:{type:String},strProp:{defaultValue:"Ext"}},slots:{extSlot:{type:HTMLElement}}};class Ki extends Vs{static get metadata(){return Gi}}Ki.define();const Ji=":root{ --var1: red; }",Xi=":root{ --var1: green; }",Yi=":root{ --var1: blue; }",Qi=":root{ --var1: orange; }",to=":root{ --var1: orange; }",eo=":root{ --var1: yellow; }",so=":root{ --var1: yellow; }";C("@ui5/webcomponents-base-test","sap_fiori_3",()=>Ji);C("@ui5/webcomponents-base-test","sap_fiori_3_dark",()=>Xi);C("@ui5/webcomponents-base-test","sap_belize",()=>Yi);C("@ui5/webcomponents-base-test","sap_belize_hcb",()=>Qi);C("@ui5/webcomponents-base-test","sap_belize_hcw",()=>to);C("@ui5/webcomponents-base-test","sap_fiori_3_hcb",()=>eo);C("@ui5/webcomponents-base-test","sap_fiori_3_hcw",()=>so);const no=/('')|'([^']+(?:''[^']*)*)(?:'|$)|\{([0-9]+(?:\s*,[^{}]*)?)\}|[{}]/g,ro=(e,t)=>(t=t||[],e.replace(no,(s,n,r,i,o)=>{if(n)return"'";if(r)return r.replace(/''/g,"'");if(i)return String(t[parseInt(i)]);throw new Error(`[i18n]: pattern syntax error at pos ${o}`)})),Bt=new Map;class io{constructor(t){this.packageName=t}getText(t,...s){if(typeof t=="string"&&(t={key:t,defaultText:t}),!t||!t.key)return"";const n=Wn(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 s.length?ro(r,s):r}}const oo=e=>{if(Bt.has(e))return Bt.get(e);const t=new io(e);return Bt.set(e,t),t},ao=async e=>(await hs(e),oo(e));let jt;const co=()=>(jt===void 0&&(jt=en()),jt),zs={Gregorian:"Gregorian",Islamic:"Islamic",Japanese:"Japanese",Buddhist:"Buddhist",Persian:"Persian"};class Qt extends Z{static isValid(t){return!!zs[t]}}Qt.generateTypeAccessors(zs);let ot;const lo=()=>(ot===void 0&&(ot=ln()),Qt.isValid(ot)?ot:Qt.Gregorian);let Ft;const uo=()=>(Ft===void 0&&(Ft=un()),Ft.firstDayOfWeek),ho=new R,fo="directionChange",po=()=>ho.fireEvent(fo),go=async()=>{const e=po();await Promise.all(e),await re({rtlAware:!0})};window.registerThemePropertiesLoader=C;window["sap-ui-webcomponents-bundle"]={configuration:{getAnimationMode:co,getLanguage:pt,getTheme:St,setTheme:As,getNoConflict:ce,setNoConflict:_i,getCalendarType:lo,getRTL:Ms,getFirstDayOfWeek:uo},getIconNames:br,registerI18nLoader:zn,getI18nBundle:ao,renderFinished:ne,applyDirection:go,EventProvider:R};
@@ -0,0 +1,39 @@
1
+ import createLinkInHead from "../util/createLinkInHead.js";
2
+ import validateThemeRoot from "../validateThemeRoot.js";
3
+ import { getThemeRoot as getConfiguredThemeRoot } from "../InitialConfiguration.js";
4
+
5
+ let themeRoot;
6
+
7
+ const getThemeRoot = () => {
8
+ if (themeRoot === undefined) {
9
+ themeRoot = getConfiguredThemeRoot();
10
+ }
11
+
12
+ return themeRoot;
13
+ };
14
+
15
+ const setThemeRoot = (theme, newThemeRoot) => {
16
+ themeRoot = validateThemeRoot(newThemeRoot);
17
+
18
+ attachCustomThemeStylesToHead(theme);
19
+ };
20
+
21
+ const formatThemeLink = theme => {
22
+ return `${getThemeRoot()}Base/baseLib/${theme}/css_variables.css`;
23
+ };
24
+
25
+ const attachCustomThemeStylesToHead = async theme => {
26
+ const link = document.querySelector(`[sap-ui-webcomponents-theme="${theme}"]`);
27
+
28
+ if (link) {
29
+ document.head.removeChild(link);
30
+ }
31
+
32
+ await createLinkInHead(formatThemeLink(theme), { "sap-ui-webcomponents-theme": theme });
33
+ };
34
+
35
+ export {
36
+ getThemeRoot,
37
+ setThemeRoot,
38
+ attachCustomThemeStylesToHead,
39
+ };
@@ -54,24 +54,20 @@ class F6Navigation {
54
54
  const nextIndex = this.groups.indexOf(this.selectedGroup);
55
55
  let nextElement = null;
56
56
 
57
- if (nextIndex > -1) {
58
- if (nextIndex - 1 < 0) {
59
- nextElement = this.groups[this.groups.length - 1];
60
- } else {
61
- // Handle the situation where the first focusable element of two neighbor groups is the same
62
- // For example:
63
- // <ui5-flexible-column-layout>
64
- // <ui5-list>
65
- // <ui5-li>List Item</ui5-li>
66
- // </ui5-list>
67
- // </ui5-flexible-column-layout>
68
- // Here for both FCL & List the firstFoccusableElement is the same (the ui5-li)
69
-
70
- const firstFocusable = await getFirstFocusableElement(this.groups[nextIndex - 1], true);
71
- const shouldSkipParent = firstFocusable === await getFirstFocusableElement(this.groups[nextIndex], true);
72
-
73
- nextElement = this.groups[shouldSkipParent ? nextIndex - 2 : nextIndex - 1];
74
- }
57
+ if (nextIndex > 0) {
58
+ // Handle the situation where the first focusable element of two neighbor groups is the same
59
+ // For example:
60
+ // <ui5-flexible-column-layout>
61
+ // <ui5-list>
62
+ // <ui5-li>List Item</ui5-li>
63
+ // </ui5-list>
64
+ // </ui5-flexible-column-layout>
65
+ // Here for both FCL & List the firstFoccusableElement is the same (the ui5-li)
66
+
67
+ const firstFocusable = await getFirstFocusableElement(this.groups[nextIndex - 1], true);
68
+ const shouldSkipParent = firstFocusable === await getFirstFocusableElement(this.groups[nextIndex], true);
69
+
70
+ nextElement = this.groups[shouldSkipParent ? nextIndex - 2 : nextIndex - 1];
75
71
  } else {
76
72
  nextElement = this.groups[this.groups.length - 1];
77
73
  }
@@ -86,26 +82,27 @@ class F6Navigation {
86
82
  }
87
83
 
88
84
  updateGroups() {
89
- this.setSelectedGroup(document.activeElement);
85
+ this.setSelectedGroup();
90
86
  this.groups = getFastNavigationGroups(document.body);
91
87
  }
92
88
 
93
- setSelectedGroup(element) {
89
+ setSelectedGroup(element = document) {
90
+ const htmlElement = document.querySelector("html");
94
91
  element = this.deepActive(element);
95
92
 
96
- while (element && element.getAttribute("data-sap-ui-fastnavgroup") !== "true" && element !== document.querySelector("html")) {
93
+ while (element && element.getAttribute("data-sap-ui-fastnavgroup") !== "true" && element !== htmlElement) {
97
94
  element = element.parentElement ? element.parentNode : element.parentNode.host;
98
95
  }
99
96
 
100
97
  this.selectedGroup = element;
101
98
  }
102
99
 
103
- deepActive(element) {
104
- if (element.shadowRoot) {
105
- return this.deepActive(element.shadowRoot);
100
+ deepActive(root) {
101
+ if (root.activeElement && root.activeElement.shadowRoot) {
102
+ return this.deepActive(root.activeElement.shadowRoot);
106
103
  }
107
104
 
108
- return element.activeElement;
105
+ return root.activeElement;
109
106
  }
110
107
 
111
108
  destroy() {
@@ -41,6 +41,7 @@ const getConfigurationSettingsObject = () => {
41
41
  animationMode: config.getAnimationMode(),
42
42
  language: config.getLanguage(),
43
43
  theme: config.getTheme(),
44
+ themeRoot: config.getThemeRoot(),
44
45
  rtl: config.getRTL(),
45
46
  calendarType: config.getCalendarType(),
46
47
  formatSettings: {
@@ -1,10 +1,10 @@
1
1
  const VersionInfo = {
2
- version: "1.8.0",
2
+ version: "1.9.1",
3
3
  major: 1,
4
- minor: 8,
5
- patch: 0,
4
+ minor: 9,
5
+ patch: 1,
6
6
  suffix: "",
7
7
  isNext: false,
8
- buildTime: 1664784291,
8
+ buildTime: 1668115483,
9
9
  };
10
10
  export default VersionInfo;
@@ -0,0 +1,11 @@
1
+ /* eslint no-unused-vars: 0 */
2
+ import { html, svg, repeat, classMap, styleMap, ifDefined, unsafeHTML, scopeTag } from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
+
4
+ const block0 = (context, tags, suffix) => html`<div>Root text: ${ifDefined(context.text)}${ repeat(context.items, (item, index) => item._id || index, (item, index) => block1(item, index, context, tags, suffix)) } Root text: ${ifDefined(context.text)}</div>`;
5
+ const block1 = (item, index, context, tags, suffix) => html`<h3>Item-${index}</h3>${ item.text ? block2(item, index, context, tags, suffix) : undefined }<ul>${ repeat(item.words, (item, index) => item._id || index, (item, index) => block3(item, index, context, tags, suffix)) }</ul>${ item.text ? block4(item, index, context, tags, suffix) : undefined }`;
6
+ const block2 = (item, index, context, tags, suffix) => html`<div class="before-each-content--start--${index}">Root text: ${ifDefined(context.text)}, Item text: ${ifDefined(item.text)}</div>`;
7
+ const block3 = (item, index, context, tags, suffix) => html`<li><h3>Word-${index}</h3><div class="nested-each-content--${index}--0">Root Text: ${ifDefined(context.text)}, Word text: ${ifDefined(item.text)}</div><div class="nested-each-content--${index}--1">Root Text: ${ifDefined(context.text)}, Word text: ${ifDefined(item.text)}</div></li>`;
8
+ const block4 = (item, index, context, tags, suffix) => html`<div class="after-each-content--end--${index}">Root text: ${ifDefined(context.text)}, Item text: ${ifDefined(item.text)}</div>`;
9
+
10
+
11
+ export default block0;