@ui5/webcomponents-base 1.2.4 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/.eslintignore +0 -1
  2. package/CHANGELOG.md +20 -0
  3. package/dist/CustomElementsScope.js +20 -98
  4. package/dist/CustomElementsScopeUtils.js +108 -0
  5. package/dist/Device.js +5 -0
  6. package/dist/Keys.js +15 -0
  7. package/dist/StaticAreaItem.js +1 -1
  8. package/dist/UI5Element.js +11 -1
  9. package/dist/UI5ElementMetadata.js +1 -1
  10. package/dist/asset-registries/Icons.js +3 -7
  11. package/dist/config/Icons.js +52 -0
  12. package/dist/css/BusyIndicator.css +76 -0
  13. package/dist/features/F6Navigation.js +2 -0
  14. package/dist/features/OpenUI5Enablement.js +119 -0
  15. package/dist/generated/VersionInfo.js +4 -4
  16. package/dist/generated/css/BusyIndicator.css.js +5 -0
  17. package/dist/renderer/LitRenderer.js +29 -11
  18. package/dist/renderer/executeTemplate.js +1 -1
  19. package/dist/resources/bundle.esm.js +8 -13
  20. package/dist/resources/bundle.esm.js.map +1 -1
  21. package/dist/theming/getEffectiveLinksHrefs.js +7 -0
  22. package/dist/theming/getEffectiveStyle.js +9 -0
  23. package/dist/updateShadowRoot.js +1 -1
  24. package/dist/util/getNormalizedTarget.js +16 -0
  25. package/hash.txt +1 -1
  26. package/package-scripts.js +1 -6
  27. package/package.json +3 -3
  28. package/src/CustomElementsScope.js +20 -98
  29. package/src/CustomElementsScopeUtils.js +108 -0
  30. package/src/Device.js +5 -0
  31. package/src/Keys.js +15 -0
  32. package/src/StaticAreaItem.js +1 -1
  33. package/src/UI5Element.js +11 -1
  34. package/src/UI5ElementMetadata.js +1 -1
  35. package/src/asset-registries/Icons.js +3 -7
  36. package/src/config/Icons.js +52 -0
  37. package/src/css/BusyIndicator.css +76 -0
  38. package/src/features/F6Navigation.js +2 -0
  39. package/src/features/OpenUI5Enablement.js +119 -0
  40. package/src/renderer/LitRenderer.js +29 -11
  41. package/src/renderer/executeTemplate.js +1 -1
  42. package/src/theming/getEffectiveLinksHrefs.js +7 -0
  43. package/src/theming/getEffectiveStyle.js +9 -0
  44. package/src/updateShadowRoot.js +1 -1
  45. package/src/util/getNormalizedTarget.js +16 -0
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.esm.js","sources":["../generated/AssetParameters.js","../util/detectNavigatorLanguage.js","../thirdparty/isPlainObject.js","../thirdparty/_merge.js","../thirdparty/merge.js","../FeaturesRegistry.js","../InitialConfiguration.js","../EventProvider.js","../locale/languageChange.js","../util/setToArray.js","../util/getSingletonElementInstance.js","../getSharedResource.js","../generated/VersionInfo.js","../Runtimes.js","../CustomElementsRegistry.js","../locale/RTLAwareRegistry.js","../Render.js","../RenderQueue.js","../config/Language.js","../locale/Locale.js","../locale/getLocale.js","../locale/normalizeLocale.js","../locale/nextFallbackLocale.js","../asset-registries/i18n.js","../asset-registries/LocaleData.js","../asset-registries/Themes.js","../assets-meta/IconCollectionsAlias.js","../ManagedStyles.js","../util/createStyleInHead.js","../theming/getThemeDesignerTheme.js","../theming/ThemeLoaded.js","../theming/applyTheme.js","../config/Theme.js","../asset-registries/Icons.js","../util/PopupUtils.js","../features/OpenUI5Support.js","../generated/css/FontFace.css.js","../generated/css/OverrideFontFace.css.js","../FontFace.js","../generated/css/SystemCSSVars.css.js","../Boot.js","../util/whenDOMReady.js","../SystemCSSVars.js","../types/DataType.js","../util/isDescendantOf.js","../util/StringHelper.js","../util/SlotsHelper.js","../CustomElementsScope.js","../UI5ElementMetadata.js","../StaticArea.js","../renderer/executeTemplate.js","../theming/CustomStyle.js","../theming/getStylesString.js","../theming/getEffectiveStyle.js","../theming/getConstructableStyle.js","../updateShadowRoot.js","../isLegacyBrowser.js","../config/RTL.js","../util/getDesigntimePropertyAsArray.js","../locale/getEffectiveDir.js","../StaticAreaItem.js","../util/getEffectiveContentDensity.js","../DOMObserver.js","../config/NoConflict.js","../util/isValidPropertyName.js","../util/arraysAreEqual.js","../util/getClassCopy.js","../UI5Element.js","../../../../node_modules/lit-html/lit-html.js","../../../../node_modules/lit-html/static.js","../../../../node_modules/lit-html/directive.js","../../../../node_modules/lit-html/directives/unsafe-html.js","../renderer/LitRenderer.js","../test-resources/elements/Generic.js","../test-resources/elements/NoShadowDOM.js","../test-resources/elements/Parent.js","../test-resources/elements/Child.js","../test-resources/elements/WithStaticArea.js","../test-resources/elements/GenericExt.js","../test-resources/assets/Themes.js","../Device.js","../util/formatMessage.js","../i18nBundle.js","../config/AnimationMode.js","../types/CalendarType.js","../config/CalendarType.js","../config/FormatSettings.js","../locale/directionChange.js","../../bundle.esm.js","../locale/applyDirection.js"],"sourcesContent":["const assetParameters = {\"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\"]}};\n\nconst DEFAULT_THEME = assetParameters.themes.default;\nconst DEFAULT_LANGUAGE = assetParameters.languages.default;\nconst DEFAULT_LOCALE = assetParameters.locales.default;\nconst SUPPORTED_LOCALES = assetParameters.locales.all;\n\nexport {\n\tDEFAULT_THEME,\n\tDEFAULT_LANGUAGE,\n\tDEFAULT_LOCALE,\n\tSUPPORTED_LOCALES,\n};","import { DEFAULT_LANGUAGE } from \"../generated/AssetParameters.js\";\n\nexport default () => {\n\tconst browserLanguages = navigator.languages;\n\n\tconst navigatorLanguage = () => {\n\t\treturn navigator.language;\n\t};\n\n\tconst rawLocale = (browserLanguages && browserLanguages[0]) || navigatorLanguage() || navigator.userLanguage || navigator.browserLanguage;\n\n\treturn rawLocale || DEFAULT_LANGUAGE;\n};\n","var class2type = {};\nvar hasOwn = class2type.hasOwnProperty;\nvar toString = class2type.toString;\nvar fnToString = hasOwn.toString;\nvar ObjectFunctionString = fnToString.call(Object);\nvar fnIsPlainObject = function (obj) {\n var proto, Ctor;\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n proto = Object.getPrototypeOf(obj);\n if (!proto) {\n return true;\n }\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n};\nexport default fnIsPlainObject;\n","import isPlainObject from './isPlainObject.js';\nvar oToken = Object.create(null);\nvar fnMerge = function () {\n var src, copyIsArray, copy, name, options, clone, target = arguments[2] || {}, i = 3, length = arguments.length, deep = arguments[0] || false, skipToken = arguments[1] ? undefined : oToken;\n if (typeof target !== 'object' && typeof target !== 'function') {\n target = {};\n }\n for (; i < length; i++) {\n if ((options = arguments[i]) != null) {\n for (name in options) {\n src = target[name];\n copy = options[name];\n if (name === '__proto__' || target === copy) {\n continue;\n }\n if (deep && copy && (isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && Array.isArray(src) ? src : [];\n } else {\n clone = src && isPlainObject(src) ? src : {};\n }\n target[name] = fnMerge(deep, arguments[1], clone, copy);\n } else if (copy !== skipToken) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n};\nexport default fnMerge;","import _merge from './_merge.js';\nvar fnMerge = function () {\n var args = [\n true,\n false\n ];\n args.push.apply(args, arguments);\n return _merge.apply(null, args);\n};\nexport default fnMerge;","const features = new Map();\n\nconst registerFeature = (name, feature) => {\n\tfeatures.set(name, feature);\n};\n\nconst getFeature = name => {\n\treturn features.get(name);\n};\n\nexport {\n\tregisterFeature,\n\tgetFeature,\n};\n","import merge from \"./thirdparty/merge.js\";\nimport { getFeature } from \"./FeaturesRegistry.js\";\nimport { DEFAULT_THEME } from \"./generated/AssetParameters.js\";\n\nlet initialized = false;\n\nlet initialConfig = {\n\tanimationMode: \"full\",\n\ttheme: DEFAULT_THEME,\n\trtl: null,\n\tlanguage: null,\n\tcalendarType: null,\n\tnoConflict: false, // no URL\n\tformatSettings: {},\n\tfetchDefaultLanguage: false,\n};\n\n/* General settings */\nconst getAnimationMode = () => {\n\tinitConfiguration();\n\treturn initialConfig.animationMode;\n};\n\nconst getTheme = () => {\n\tinitConfiguration();\n\treturn initialConfig.theme;\n};\n\nconst getRTL = () => {\n\tinitConfiguration();\n\treturn initialConfig.rtl;\n};\n\nconst getLanguage = () => {\n\tinitConfiguration();\n\treturn initialConfig.language;\n};\n\n/**\n * Returns if the default language, that is inlined at build time,\n * should be fetched over the network instead.\n * @returns {Boolean}\n */\nconst getFetchDefaultLanguage = () => {\n\tinitConfiguration();\n\treturn initialConfig.fetchDefaultLanguage;\n};\n\nconst getNoConflict = () => {\n\tinitConfiguration();\n\treturn initialConfig.noConflict;\n};\n\nconst getCalendarType = () => {\n\tinitConfiguration();\n\treturn initialConfig.calendarType;\n};\n\nconst getFormatSettings = () => {\n\tinitConfiguration();\n\treturn initialConfig.formatSettings;\n};\n\nconst booleanMapping = new Map();\nbooleanMapping.set(\"true\", true);\nbooleanMapping.set(\"false\", false);\n\nconst parseConfigurationScript = () => {\n\tconst configScript = document.querySelector(\"[data-ui5-config]\") || document.querySelector(\"[data-id='sap-ui-config']\"); // for backward compatibility\n\n\tlet configJSON;\n\n\tif (configScript) {\n\t\ttry {\n\t\t\tconfigJSON = JSON.parse(configScript.innerHTML);\n\t\t} catch (err) {\n\t\t\tconsole.warn(\"Incorrect data-sap-ui-config format. Please use JSON\"); /* eslint-disable-line */\n\t\t}\n\n\t\tif (configJSON) {\n\t\t\tinitialConfig = merge(initialConfig, configJSON);\n\t\t}\n\t}\n};\n\nconst parseURLParameters = () => {\n\tconst params = new URLSearchParams(window.location.search);\n\n\t// Process \"sap-*\" params first\n\tparams.forEach((value, key) => {\n\t\tconst parts = key.split(\"sap-\").length;\n\t\tif (parts === 0 || parts === key.split(\"sap-ui-\").length) {\n\t\t\treturn;\n\t\t}\n\n\t\tapplyURLParam(key, value, \"sap\");\n\t});\n\n\t// Process \"sap-ui-*\" params\n\tparams.forEach((value, key) => {\n\t\tif (!key.startsWith(\"sap-ui\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tapplyURLParam(key, value, \"sap-ui\");\n\t});\n};\n\nconst normalizeParamValue = (param, value) => {\n\tif (param === \"theme\" && value.includes(\"@\")) { // the theme parameter might have @<URL-TO-THEME> in the value - strip this\n\t\treturn value.split(\"@\")[0];\n\t}\n\n\treturn value;\n};\n\nconst applyURLParam = (key, value, paramType) => {\n\tconst lowerCaseValue = value.toLowerCase();\n\tconst param = key.split(`${paramType}-`)[1];\n\n\tif (booleanMapping.has(value)) {\n\t\tvalue = booleanMapping.get(lowerCaseValue);\n\t}\n\n\tvalue = normalizeParamValue(param, value);\n\n\tinitialConfig[param] = value;\n};\n\nconst applyOpenUI5Configuration = () => {\n\tconst OpenUI5Support = getFeature(\"OpenUI5Support\");\n\tif (!OpenUI5Support || !OpenUI5Support.isLoaded()) {\n\t\treturn;\n\t}\n\n\tconst OpenUI5Config = OpenUI5Support.getConfigurationSettingsObject();\n\tinitialConfig = merge(initialConfig, OpenUI5Config);\n};\n\nconst initConfiguration = () => {\n\tif (initialized) {\n\t\treturn;\n\t}\n\n\t// 1. Lowest priority - configuration script\n\tparseConfigurationScript();\n\n\t// 2. URL parameters overwrite configuration script parameters\n\tparseURLParameters();\n\n\t// 3. If OpenUI5 is detected, it has the highest priority\n\tapplyOpenUI5Configuration();\n\n\tinitialized = true;\n};\n\nexport {\n\tgetAnimationMode,\n\tgetTheme,\n\tgetRTL,\n\tgetLanguage,\n\tgetFetchDefaultLanguage,\n\tgetNoConflict,\n\tgetCalendarType,\n\tgetFormatSettings,\n};\n","class EventProvider {\n\tconstructor() {\n\t\tthis._eventRegistry = new Map();\n\t}\n\n\tattachEvent(eventName, fnFunction) {\n\t\tconst eventRegistry = this._eventRegistry;\n\t\tconst eventListeners = eventRegistry.get(eventName);\n\n\t\tif (!Array.isArray(eventListeners)) {\n\t\t\teventRegistry.set(eventName, [fnFunction]);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!eventListeners.includes(fnFunction)) {\n\t\t\teventListeners.push(fnFunction);\n\t\t}\n\t}\n\n\tdetachEvent(eventName, fnFunction) {\n\t\tconst eventRegistry = this._eventRegistry;\n\t\tconst eventListeners = eventRegistry.get(eventName);\n\n\t\tif (!eventListeners) {\n\t\t\treturn;\n\t\t}\n\t\tconst indexOfFnToDetach = eventListeners.indexOf(fnFunction);\n\n\t\tif (indexOfFnToDetach !== -1) {\n\t\t\teventListeners.splice(indexOfFnToDetach, 1);\n\t\t}\n\n\t\tif (eventListeners.length === 0) {\n\t\t\teventRegistry.delete(eventName);\n\t\t}\n\t}\n\n\t/**\n\t * Fires an event and returns the results of all event listeners as an array.\n\t *\n\t * @param eventName the event to fire\n\t * @param data optional data to pass to each event listener\n\t * @returns {Array} an array with the results of all event listeners\n\t */\n\tfireEvent(eventName, data) {\n\t\tconst eventRegistry = this._eventRegistry;\n\t\tconst eventListeners = eventRegistry.get(eventName);\n\n\t\tif (!eventListeners) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn eventListeners.map(fn => {\n\t\t\treturn fn.call(this, data); // eslint-disable-line\n\t\t});\n\t}\n\n\t/**\n\t * Fires an event and returns a promise that will resolve once all listeners have resolved.\n\t *\n\t * @param eventName the event to fire\n\t * @param data optional data to pass to each event listener\n\t * @returns {Promise} a promise that will resolve when all listeners have resolved\n\t */\n\tfireEventAsync(eventName, data) {\n\t\treturn Promise.all(this.fireEvent(eventName, data));\n\t}\n\n\tisHandlerAttached(eventName, fnFunction) {\n\t\tconst eventRegistry = this._eventRegistry;\n\t\tconst eventListeners = eventRegistry.get(eventName);\n\n\t\tif (!eventListeners) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn eventListeners.includes(fnFunction);\n\t}\n\n\thasListeners(eventName) {\n\t\treturn !!this._eventRegistry.get(eventName);\n\t}\n}\n\nexport default EventProvider;\n","import EventProvider from \"../EventProvider.js\";\n\nconst eventProvider = new EventProvider();\nconst LANG_CHANGE = \"languageChange\";\n\nconst attachLanguageChange = listener => {\n\teventProvider.attachEvent(LANG_CHANGE, listener);\n};\n\nconst detachLanguageChange = listener => {\n\teventProvider.detachEvent(LANG_CHANGE, listener);\n};\n\nconst fireLanguageChange = lang => {\n\treturn eventProvider.fireEventAsync(LANG_CHANGE, lang);\n};\n\nexport {\n\tattachLanguageChange,\n\tdetachLanguageChange,\n\tfireLanguageChange,\n};\n","// This is needed as IE11 doesn't have Set.prototype.keys/values/entries, so [...mySet.values()] is not an option\nconst setToArray = s => {\n\tconst arr = [];\n\ts.forEach(item => {\n\t\tarr.push(item);\n\t});\n\treturn arr;\n};\n\nexport default setToArray;\n","const getSingletonElementInstance = (tag, parentElement = document.body) => {\n\tlet el = document.querySelector(tag);\n\n\tif (el) {\n\t\treturn el;\n\t}\n\n\tel = document.createElement(tag);\n\n\treturn parentElement.insertBefore(el, parentElement.firstChild);\n};\n\nexport default getSingletonElementInstance;\n","import getSingletonElementInstance from \"./util/getSingletonElementInstance.js\";\n\nconst getSharedResourcesInstance = () => getSingletonElementInstance(\"ui5-shared-resources\", document.head);\n\n/**\n * Use this method to initialize/get resources that you would like to be shared among UI5 Web Components runtime instances.\n * The data will be accessed via a singleton \"ui5-shared-resources\" HTML element in the \"head\" element of the page.\n *\n * @public\n * @param namespace Unique ID of the resource, may contain \".\" to denote hierarchy\n * @param initialValue Object or primitive that will be used as an initial value if the resource does not exist\n * @returns {*}\n */\nconst getSharedResource = (namespace, initialValue) => {\n\tconst parts = namespace.split(\".\");\n\tlet current = getSharedResourcesInstance();\n\n\tfor (let i = 0; i < parts.length; i++) {\n\t\tconst part = parts[i];\n\t\tconst lastPart = i === parts.length - 1;\n\t\tif (!Object.prototype.hasOwnProperty.call(current, part)) {\n\t\t\tcurrent[part] = lastPart ? initialValue : {};\n\t\t}\n\t\tcurrent = current[part];\n\t}\n\n\treturn current;\n};\n\nexport default getSharedResource;\n","const VersionInfo = {\n\tversion: \"1.2.4\",\n\tmajor: 1,\n\tminor: 2,\n\tpatch: 4,\n\tsuffix: \"\",\n\tisNext: false,\n\tbuildTime: 1648627645,\n};\nexport default VersionInfo;","import VersionInfo from \"./generated/VersionInfo.js\";\nimport getSharedResource from \"./getSharedResource.js\";\n\nlet currentRuntimeIndex;\nlet currentRuntimeAlias = \"\";\n\nconst compareCache = new Map();\n\n/**\n * Central registry where all runtimes register themselves by pushing an object.\n * The index in the registry servers as an ID for the runtime.\n * @type {*}\n */\nconst Runtimes = getSharedResource(\"Runtimes\", []);\n\n/**\n * Registers the current runtime in the shared runtimes resource registry\n */\nconst registerCurrentRuntime = () => {\n\tif (currentRuntimeIndex === undefined) {\n\t\tcurrentRuntimeIndex = Runtimes.length;\n\t\tRuntimes.push({\n\t\t\t...VersionInfo,\n\t\t\talias: currentRuntimeAlias,\n\t\t\tdescription: `Runtime ${currentRuntimeIndex} - ver ${VersionInfo.version}${currentRuntimeAlias ? ` (${currentRuntimeAlias})` : \"\"}`,\n\t\t});\n\t}\n};\n\n/**\n * Returns the index of the current runtime's object in the shared runtimes resource registry\n * @returns {*}\n */\nconst getCurrentRuntimeIndex = () => {\n\treturn currentRuntimeIndex;\n};\n\n/**\n * Compares two runtimes and returns 1 if the first is of a bigger version, -1 if the second is of a bigger version, and 0 if equal\n * @param index1 The index of the first runtime to compare\n * @param index2 The index of the second runtime to compare\n * @returns {number}\n */\nconst compareRuntimes = (index1, index2) => {\n\tconst cacheIndex = `${index1},${index2}`;\n\tif (compareCache.has(cacheIndex)) {\n\t\treturn compareCache.get(cacheIndex);\n\t}\n\n\tconst runtime1 = Runtimes[index1];\n\tconst runtime2 = Runtimes[index2];\n\n\tif (!runtime1 || !runtime2) {\n\t\tthrow new Error(\"Invalid runtime index supplied\");\n\t}\n\n\t// If any of the two is a next version, bigger buildTime wins\n\tif (runtime1.isNext || runtime2.isNext) {\n\t\treturn runtime1.buildTime - runtime2.buildTime;\n\t}\n\n\t// If major versions differ, bigger one wins\n\tconst majorDiff = runtime1.major - runtime2.major;\n\tif (majorDiff) {\n\t\treturn majorDiff;\n\t}\n\n\t// If minor versions differ, bigger one wins\n\tconst minorDiff = runtime1.minor - runtime2.minor;\n\tif (minorDiff) {\n\t\treturn minorDiff;\n\t}\n\n\t// If patch versions differ, bigger one wins\n\tconst patchDiff = runtime1.patch - runtime2.patch;\n\tif (patchDiff) {\n\t\treturn patchDiff;\n\t}\n\n\t// Bigger suffix wins, f.e. rc10 > rc9\n\t// Important: suffix is alphanumeric, must use natural compare\n\tconst collator = new Intl.Collator(undefined, { numeric: true, sensitivity: \"base\" });\n\tconst result = collator.compare(runtime1.suffix, runtime2.suffix);\n\n\tcompareCache.set(cacheIndex, result);\n\treturn result;\n};\n\n/**\n * Set an alias for the the current app/library/microfrontend which will appear in debug messages and console warnings\n * @param alias\n */\nconst setRuntimeAlias = alias => {\n\tcurrentRuntimeAlias = alias;\n};\n\nconst getAllRuntimes = () => {\n\treturn Runtimes;\n};\n\nexport {\n\tgetCurrentRuntimeIndex,\n\tregisterCurrentRuntime,\n\tcompareRuntimes,\n\tsetRuntimeAlias,\n\tgetAllRuntimes,\n};\n","import setToArray from \"./util/setToArray.js\";\nimport getSharedResource from \"./getSharedResource.js\";\nimport { getCurrentRuntimeIndex, compareRuntimes, getAllRuntimes } from \"./Runtimes.js\";\n\nconst Tags = getSharedResource(\"Tags\", new Map());\n\nconst Definitions = new Set();\nlet Failures = {};\nlet failureTimeout;\n\nconst UNKNOWN_RUNTIME = \"unknown\";\n\nconst registerTag = tag => {\n\tDefinitions.add(tag);\n\tTags.set(tag, getCurrentRuntimeIndex());\n};\n\nconst isTagRegistered = tag => {\n\treturn Definitions.has(tag);\n};\n\nconst getAllRegisteredTags = () => {\n\treturn setToArray(Definitions);\n};\n\nconst recordTagRegistrationFailure = tag => {\n\tlet tagRegRuntimeIndex = Tags.get(tag);\n\tif (tagRegRuntimeIndex === undefined) {\n\t\ttagRegRuntimeIndex = UNKNOWN_RUNTIME; // If the tag is taken, but not registered in Tags, then a version before 1.1.0 defined it => use the \"unknown\" key\n\t}\n\tFailures[tagRegRuntimeIndex] = Failures[tagRegRuntimeIndex] || new Set();\n\tFailures[tagRegRuntimeIndex].add(tag);\n\n\tif (!failureTimeout) {\n\t\tfailureTimeout = setTimeout(() => {\n\t\t\tdisplayFailedRegistrations();\n\t\t\tFailures = {};\n\t\t\tfailureTimeout = undefined;\n\t\t}, 1000);\n\t}\n};\n\nconst displayFailedRegistrations = () => {\n\tconst allRuntimes = getAllRuntimes();\n\tconst currentRuntimeIndex = getCurrentRuntimeIndex();\n\tconst currentRuntime = allRuntimes[currentRuntimeIndex];\n\n\tlet message = `Multiple UI5 Web Components instances detected.`;\n\n\tif (allRuntimes.length > 1) {\n\t\tmessage = `${message}\\nLoading order (versions before 1.1.0 not listed): ${allRuntimes.map(runtime => `\\n${runtime.description}`).join(\"\")}`;\n\t}\n\n\tObject.keys(Failures).forEach(otherRuntimeIndex => {\n\t\tlet comparison;\n\t\tlet otherRuntime;\n\n\t\tif (otherRuntimeIndex === UNKNOWN_RUNTIME) { // version < 1.1.0 defined the tag\n\t\t\tcomparison = 1; // the current runtime is considered newer\n\t\t\totherRuntime = {\n\t\t\t\tdescription: `Older unknown runtime`,\n\t\t\t};\n\t\t} else {\n\t\t\tcomparison = compareRuntimes(currentRuntimeIndex, otherRuntimeIndex);\n\t\t\totherRuntime = allRuntimes[otherRuntimeIndex];\n\t\t}\n\n\t\tlet compareWord;\n\t\tif (comparison > 0) {\n\t\t\tcompareWord = \"an older\";\n\t\t} else if (comparison < 0) {\n\t\t\tcompareWord = \"a newer\";\n\t\t} else {\n\t\t\tcompareWord = \"the same\";\n\t\t}\n\t\tmessage = `${message}\\n\\n\"${currentRuntime.description}\" failed to define ${Failures[otherRuntimeIndex].size} tag(s) as they were defined by a runtime of ${compareWord} version \"${otherRuntime.description}\": ${setToArray(Failures[otherRuntimeIndex]).sort().join(\", \")}.`;\n\n\t\tif (comparison > 0) {\n\t\t\tmessage = `${message}\\nWARNING! If your code uses features of the above web components, unavailable in ${otherRuntime.description}, it might not work as expected!`;\n\t\t} else {\n\t\t\tmessage = `${message}\\nSince the above web components were defined by the same or newer version runtime, they should be compatible with your code.`;\n\t\t}\n\t});\n\n\tmessage = `${message}\\n\\nTo prevent other runtimes from defining tags that you use, consider using scoping or have third-party libraries use scoping: https://github.com/SAP/ui5-webcomponents/blob/master/docs/2-advanced/03-scoping.md.`;\n\n\tconsole.warn(message); // eslint-disable-line\n};\n\nexport {\n\tregisterTag,\n\tisTagRegistered,\n\tgetAllRegisteredTags,\n\trecordTagRegistrationFailure,\n};\n","const rtlAwareSet = new Set();\n\nconst markAsRtlAware = klass => {\n\trtlAwareSet.add(klass);\n};\n\nconst isRtlAware = klass => {\n\treturn rtlAwareSet.has(klass);\n};\n\nexport {\n\tmarkAsRtlAware,\n\tisRtlAware,\n};\n","import EventProvider from \"./EventProvider.js\";\nimport RenderQueue from \"./RenderQueue.js\";\nimport { getAllRegisteredTags } from \"./CustomElementsRegistry.js\";\nimport { isRtlAware } from \"./locale/RTLAwareRegistry.js\";\n\nconst registeredElements = new Set();\nconst eventProvider = new EventProvider();\n\nconst invalidatedWebComponents = new RenderQueue(); // Queue for invalidated web components\n\nlet renderTaskPromise,\n\trenderTaskPromiseResolve;\n\nlet mutationObserverTimer;\n\nlet queuePromise;\n\n/**\n * Schedules a render task (if not already scheduled) to render the component\n *\n * @param webComponent\n * @returns {Promise}\n */\nconst renderDeferred = async webComponent => {\n\t// Enqueue the web component\n\tinvalidatedWebComponents.add(webComponent);\n\n\t// Schedule a rendering task\n\tawait scheduleRenderTask();\n};\n\n/**\n * Renders a component synchronously and adds it to the registry of rendered components\n *\n * @param webComponent\n */\nconst renderImmediately = webComponent => {\n\teventProvider.fireEvent(\"beforeComponentRender\", webComponent);\n\tregisteredElements.add(webComponent);\n\twebComponent._render();\n};\n\n/**\n * Cancels the rendering of a component, if awaiting to be rendered, and removes it from the registry of rendered components\n *\n * @param webComponent\n */\nconst cancelRender = webComponent => {\n\tinvalidatedWebComponents.remove(webComponent);\n\tregisteredElements.delete(webComponent);\n};\n\n/**\n * Schedules a rendering task, if not scheduled already\n */\nconst scheduleRenderTask = async () => {\n\tif (!queuePromise) {\n\t\tqueuePromise = new Promise(resolve => {\n\t\t\twindow.requestAnimationFrame(() => {\n\t\t\t\t// Render all components in the queue\n\n\t\t\t\t// console.log(`--------------------RENDER TASK START------------------------------`); // eslint-disable-line\n\t\t\t\tinvalidatedWebComponents.process(renderImmediately);\n\t\t\t\t// console.log(`--------------------RENDER TASK END------------------------------`); // eslint-disable-line\n\n\t\t\t\t// Resolve the promise so that callers of renderDeferred can continue\n\t\t\t\tqueuePromise = null;\n\t\t\t\tresolve();\n\n\t\t\t\t// Wait for Mutation observer before the render task is considered finished\n\t\t\t\tif (!mutationObserverTimer) {\n\t\t\t\t\tmutationObserverTimer = setTimeout(() => {\n\t\t\t\t\t\tmutationObserverTimer = undefined;\n\t\t\t\t\t\tif (invalidatedWebComponents.isEmpty()) {\n\t\t\t\t\t\t\t_resolveTaskPromise();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 200);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tawait queuePromise;\n};\n\n/**\n * return a promise that will be resolved once all invalidated web components are rendered\n */\nconst whenDOMUpdated = () => {\n\tif (renderTaskPromise) {\n\t\treturn renderTaskPromise;\n\t}\n\n\trenderTaskPromise = new Promise(resolve => {\n\t\trenderTaskPromiseResolve = resolve;\n\t\twindow.requestAnimationFrame(() => {\n\t\t\tif (invalidatedWebComponents.isEmpty()) {\n\t\t\t\trenderTaskPromise = undefined;\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t});\n\n\treturn renderTaskPromise;\n};\n\nconst whenAllCustomElementsAreDefined = () => {\n\tconst definedPromises = getAllRegisteredTags().map(tag => customElements.whenDefined(tag));\n\treturn Promise.all(definedPromises);\n};\n\nconst renderFinished = async () => {\n\tawait whenAllCustomElementsAreDefined();\n\tawait whenDOMUpdated();\n};\n\nconst _resolveTaskPromise = () => {\n\tif (!invalidatedWebComponents.isEmpty()) {\n\t\t// More updates are pending. Resolve will be called again\n\t\treturn;\n\t}\n\n\tif (renderTaskPromiseResolve) {\n\t\trenderTaskPromiseResolve();\n\t\trenderTaskPromiseResolve = undefined;\n\t\trenderTaskPromise = undefined;\n\t}\n};\n\n/**\n * Re-renders all UI5 Elements on the page, with the option to specify filters to rerender only some components.\n *\n * Usage:\n * reRenderAllUI5Elements() -> re-renders all components\n * reRenderAllUI5Elements({tag: \"ui5-button\"}) -> re-renders only instances of ui5-button\n * reRenderAllUI5Elements({rtlAware: true}) -> re-renders only rtlAware components\n * reRenderAllUI5Elements({languageAware: true}) -> re-renders only languageAware components\n * reRenderAllUI5Elements({themeAware: true}) -> re-renders only themeAware components\n * reRenderAllUI5Elements({rtlAware: true, languageAware: true}) -> re-renders components that are rtlAware or languageAware\n * etc...\n *\n * @public\n * @param {Object|undefined} filters - Object with keys that can be \"rtlAware\" or \"languageAware\"\n * @returns {Promise<void>}\n */\nconst reRenderAllUI5Elements = async filters => {\n\tregisteredElements.forEach(element => {\n\t\tconst tag = element.constructor.getMetadata().getTag();\n\t\tconst rtlAware = isRtlAware(element.constructor);\n\t\tconst languageAware = element.constructor.getMetadata().isLanguageAware();\n\t\tconst themeAware = element.constructor.getMetadata().isThemeAware();\n\t\tif (!filters || (filters.tag === tag) || (filters.rtlAware && rtlAware) || (filters.languageAware && languageAware) || (filters.themeAware && themeAware)) {\n\t\t\trenderDeferred(element);\n\t\t}\n\t});\n\tawait renderFinished();\n};\n\nconst attachBeforeComponentRender = listener => {\n\teventProvider.attachEvent(\"beforeComponentRender\", listener);\n};\n\nconst detachBeforeComponentRender = listener => {\n\teventProvider.detachEvent(\"beforeComponentRender\", listener);\n};\n\nexport {\n\trenderDeferred,\n\trenderImmediately,\n\tcancelRender,\n\trenderFinished,\n\treRenderAllUI5Elements,\n\tattachBeforeComponentRender,\n\tdetachBeforeComponentRender,\n};\n","const MAX_PROCESS_COUNT = 10;\n\nclass RenderQueue {\n\tconstructor() {\n\t\tthis.list = []; // Used to store the web components in order\n\t\tthis.lookup = new Set(); // Used for faster search\n\t}\n\n\tadd(webComponent) {\n\t\tif (this.lookup.has(webComponent)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.list.push(webComponent);\n\t\tthis.lookup.add(webComponent);\n\t}\n\n\tremove(webComponent) {\n\t\tif (!this.lookup.has(webComponent)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.list = this.list.filter(item => item !== webComponent);\n\t\tthis.lookup.delete(webComponent);\n\t}\n\n\tshift() {\n\t\tconst webComponent = this.list.shift();\n\t\tif (webComponent) {\n\t\t\tthis.lookup.delete(webComponent);\n\t\t\treturn webComponent;\n\t\t}\n\t}\n\n\tisEmpty() {\n\t\treturn this.list.length === 0;\n\t}\n\n\tisAdded(webComponent) {\n\t\treturn this.lookup.has(webComponent);\n\t}\n\n\t/**\n\t * Processes the whole queue by executing the callback on each component,\n\t * while also imposing restrictions on how many times a component may be processed.\n\t *\n\t * @param callback - function with one argument (the web component to be processed)\n\t */\n\tprocess(callback) {\n\t\tlet webComponent;\n\t\tconst stats = new Map();\n\n\t\twebComponent = this.shift();\n\t\twhile (webComponent) {\n\t\t\tconst timesProcessed = stats.get(webComponent) || 0;\n\t\t\tif (timesProcessed > MAX_PROCESS_COUNT) {\n\t\t\t\tthrow new Error(`Web component processed too many times this task, max allowed is: ${MAX_PROCESS_COUNT}`);\n\t\t\t}\n\t\t\tcallback(webComponent);\n\t\t\tstats.set(webComponent, timesProcessed + 1);\n\t\t\twebComponent = this.shift();\n\t\t}\n\t}\n}\n\nexport default RenderQueue;\n","import {\n\tgetLanguage as getConfiguredLanguage,\n\tgetFetchDefaultLanguage as getConfiguredFetchDefaultLanguage,\n} from \"../InitialConfiguration.js\";\nimport { fireLanguageChange } from \"../locale/languageChange.js\";\nimport { reRenderAllUI5Elements } from \"../Render.js\";\n\nlet language;\nlet fetchDefaultLanguage;\n\n/**\n * Returns the currently configured language, or the browser language as a fallback\n * @returns {String}\n */\nconst getLanguage = () => {\n\tif (language === undefined) {\n\t\tlanguage = getConfiguredLanguage();\n\t}\n\treturn language;\n};\n\n/**\n * Changes the current language, re-fetches all message bundles, updates all language-aware components\n * and returns a promise that resolves when all rendering is done\n *\n * @param newLanguage\n * @returns {Promise<void>}\n */\nconst setLanguage = async newLanguage => {\n\tif (language === newLanguage) {\n\t\treturn;\n\t}\n\n\tlanguage = newLanguage;\n\n\tawait fireLanguageChange(newLanguage);\n\tawait reRenderAllUI5Elements({ languageAware: true });\n};\n\n/**\n * Defines if the default language, that is inlined, should be\n * fetched over the network instead of using the inlined one.\n * <b>Note:</b> By default the language will not be fetched.\n *\n * @param {Boolean} fetchDefaultLanguage\n */\nconst setFetchDefaultLanguage = fetchDefaultLang => {\n\tfetchDefaultLanguage = fetchDefaultLang;\n};\n\n/**\n * Returns if the default language, that is inlined, should be fetched over the network.\n * @returns {Boolean}\n */\nconst getFetchDefaultLanguage = () => {\n\tif (fetchDefaultLanguage === undefined) {\n\t\tsetFetchDefaultLanguage(getConfiguredFetchDefaultLanguage());\n\t}\n\n\treturn fetchDefaultLanguage;\n};\n\nexport {\n\tgetLanguage,\n\tsetLanguage,\n\tsetFetchDefaultLanguage,\n\tgetFetchDefaultLanguage,\n};\n","const rLocale = /^((?:[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;\n\nclass Locale {\n\tconstructor(sLocaleId) {\n\t\tconst aResult = rLocale.exec(sLocaleId.replace(/_/g, \"-\"));\n\t\tif (aResult === null) {\n\t\t\tthrow new Error(`The given language ${sLocaleId} does not adhere to BCP-47.`);\n\t\t}\n\t\tthis.sLocaleId = sLocaleId;\n\t\tthis.sLanguage = aResult[1] || null;\n\t\tthis.sScript = aResult[2] || null;\n\t\tthis.sRegion = aResult[3] || null;\n\t\tthis.sVariant = (aResult[4] && aResult[4].slice(1)) || null;\n\t\tthis.sExtension = (aResult[5] && aResult[5].slice(1)) || null;\n\t\tthis.sPrivateUse = aResult[6] || null;\n\t\tif (this.sLanguage) {\n\t\t\tthis.sLanguage = this.sLanguage.toLowerCase();\n\t\t}\n\t\tif (this.sScript) {\n\t\t\tthis.sScript = this.sScript.toLowerCase().replace(/^[a-z]/, s => {\n\t\t\t\treturn s.toUpperCase();\n\t\t\t});\n\t\t}\n\t\tif (this.sRegion) {\n\t\t\tthis.sRegion = this.sRegion.toUpperCase();\n\t\t}\n\t}\n\n\tgetLanguage() {\n\t\treturn this.sLanguage;\n\t}\n\n\tgetScript() {\n\t\treturn this.sScript;\n\t}\n\n\tgetRegion() {\n\t\treturn this.sRegion;\n\t}\n\n\tgetVariant() {\n\t\treturn this.sVariant;\n\t}\n\n\tgetVariantSubtags() {\n\t\treturn this.sVariant ? this.sVariant.split(\"-\") : [];\n\t}\n\n\tgetExtension() {\n\t\treturn this.sExtension;\n\t}\n\n\tgetExtensionSubtags() {\n\t\treturn this.sExtension ? this.sExtension.slice(2).split(\"-\") : [];\n\t}\n\n\tgetPrivateUse() {\n\t\treturn this.sPrivateUse;\n\t}\n\n\tgetPrivateUseSubtags() {\n\t\treturn this.sPrivateUse ? this.sPrivateUse.slice(2).split(\"-\") : [];\n\t}\n\n\thasPrivateUseSubtag(sSubtag) {\n\t\treturn this.getPrivateUseSubtags().indexOf(sSubtag) >= 0;\n\t}\n\n\ttoString() {\n\t\tconst r = [this.sLanguage];\n\n\t\tif (this.sScript) {\n\t\t\tr.push(this.sScript);\n\t\t}\n\t\tif (this.sRegion) {\n\t\t\tr.push(this.sRegion);\n\t\t}\n\t\tif (this.sVariant) {\n\t\t\tr.push(this.sVariant);\n\t\t}\n\t\tif (this.sExtension) {\n\t\t\tr.push(this.sExtension);\n\t\t}\n\t\tif (this.sPrivateUse) {\n\t\t\tr.push(this.sPrivateUse);\n\t\t}\n\t\treturn r.join(\"-\");\n\t}\n}\n\nexport default Locale;\n","import detectNavigatorLanguage from \"../util/detectNavigatorLanguage.js\";\nimport { getLanguage as getConfigLanguage } from \"../config/Language.js\";\nimport Locale from \"./Locale.js\";\n\nconst cache = new Map();\n\nconst getLocaleInstance = lang => {\n\tif (!cache.has(lang)) {\n\t\tcache.set(lang, new Locale(lang));\n\t}\n\n\treturn cache.get(lang);\n};\n\nconst convertToLocaleOrNull = lang => {\n\ttry {\n\t\tif (lang && typeof lang === \"string\") {\n\t\t\treturn getLocaleInstance(lang);\n\t\t}\n\t} catch (e) {\n\t\t// ignore\n\t}\n};\n\n/**\n * Returns the locale based on the parameter or configured language Configuration#getLanguage\n * If no language has been configured - a new locale based on browser language is returned\n */\nconst getLocale = lang => {\n\tif (lang) {\n\t\treturn convertToLocaleOrNull(lang);\n\t}\n\n\tif (getConfigLanguage()) {\n\t\treturn getLocaleInstance(getConfigLanguage());\n\t}\n\n\treturn convertToLocaleOrNull(detectNavigatorLanguage());\n};\n\nexport default getLocale;\n","import { DEFAULT_LOCALE } from \"../generated/AssetParameters.js\";\n\nconst localeRegEX = /^((?:[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;\nconst SAPSupportabilityLocales = /(?:^|-)(saptrc|sappsd)(?:-|$)/i;\n\n/* Map for old language names for a few ISO639 codes. */\nconst M_ISO639_NEW_TO_OLD = {\n\t\"he\": \"iw\",\n\t\"yi\": \"ji\",\n\t\"id\": \"in\",\n\t\"sr\": \"sh\",\n};\n\n/**\n * Normalizes the given locale in BCP-47 syntax.\n * @param {string} locale locale to normalize\n * @returns {string} Normalized locale, \"undefined\" if the locale can't be normalized or the default locale, if no locale provided.\n */\nconst normalizeLocale = locale => {\n\tlet m;\n\n\tif (!locale) {\n\t\treturn DEFAULT_LOCALE;\n\t}\n\n\tif (typeof locale === \"string\" && (m = localeRegEX.exec(locale.replace(/_/g, \"-\")))) {/* eslint-disable-line */\n\t\tlet language = m[1].toLowerCase();\n\t\tlet region = m[3] ? m[3].toUpperCase() : undefined;\n\t\tconst script = m[2] ? m[2].toLowerCase() : undefined;\n\t\tconst variants = m[4] ? m[4].slice(1) : undefined;\n\t\tconst isPrivate = m[6];\n\n\t\tlanguage = M_ISO639_NEW_TO_OLD[language] || language;\n\n\t\t// recognize and convert special SAP supportability locales (overwrites m[]!)\n\t\tif ((isPrivate && (m = SAPSupportabilityLocales.exec(isPrivate))) /* eslint-disable-line */ ||\n\t\t\t(variants && (m = SAPSupportabilityLocales.exec(variants)))) {/* eslint-disable-line */\n\t\t\treturn `en_US_${m[1].toLowerCase()}`; // for now enforce en_US (agreed with SAP SLS)\n\t\t}\n\n\t\t// Chinese: when no region but a script is specified, use default region for each script\n\t\tif (language === \"zh\" && !region) {\n\t\t\tif (script === \"hans\") {\n\t\t\t\tregion = \"CN\";\n\t\t\t} else if (script === \"hant\") {\n\t\t\t\tregion = \"TW\";\n\t\t\t}\n\t\t}\n\n\t\treturn language + (region ? \"_\" + region + (variants ? \"_\" + variants.replace(\"-\", \"_\") : \"\") : \"\"); /* eslint-disable-line */\n\t}\n};\n\nexport default normalizeLocale;\n","import { DEFAULT_LOCALE } from \"../generated/AssetParameters.js\";\n\n/**\n * Calculates the next fallback locale for the given locale.\n *\n * @param {string} locale Locale string in Java format (underscores) or null\n * @returns {string} Next fallback Locale or \"en\" if no fallbacks found.\n */\nconst nextFallbackLocale = locale => {\n\tif (!locale) {\n\t\treturn DEFAULT_LOCALE;\n\t}\n\n\tif (locale === \"zh_HK\") {\n\t\treturn \"zh_TW\";\n\t}\n\n\t// if there are multiple segments (separated by underscores), remove the last one\n\tconst p = locale.lastIndexOf(\"_\");\n\tif (p >= 0) {\n\t\treturn locale.slice(0, p);\n\t}\n\n\t// for any language but the default, fallback to the default first before falling back to the 'raw' language (empty string)\n\treturn locale !== DEFAULT_LOCALE ? DEFAULT_LOCALE : \"\";\n};\n\nexport default nextFallbackLocale;\n","import getLocale from \"../locale/getLocale.js\";\nimport { attachLanguageChange } from \"../locale/languageChange.js\";\nimport normalizeLocale from \"../locale/normalizeLocale.js\";\nimport nextFallbackLocale from \"../locale/nextFallbackLocale.js\";\nimport { DEFAULT_LANGUAGE } from \"../generated/AssetParameters.js\";\nimport { getFetchDefaultLanguage } from \"../config/Language.js\";\n\n// contains package names for which the warning has been shown\nconst warningShown = new Set();\nconst reportedErrors = new Set();\n\nconst bundleData = new Map();\nconst bundlePromises = new Map();\nconst loaders = new Map();\n\n/**\n *\n * @param {string} packageName for which package this loader can fetch data\n * @param {function} loader async function that will be passed a localeId and should return a JSON object\n * @param {Array} localeIds Array of locale IDs that this loader can handle\n */\nconst registerI18nLoader = (packageName, localeId, loader) => {\n\t// register loader by key\n\tconst bundleKey = `${packageName}/${localeId}`;\n\tloaders.set(bundleKey, loader);\n};\n\nconst _setI18nBundleData = (packageName, data) => {\n\tbundleData.set(packageName, data);\n};\n\nconst getI18nBundleData = packageName => {\n\treturn bundleData.get(packageName);\n};\n\n/**\n * @public\n * @deprecated\n */\nconst registerI18nBundle = (_packageName, _bundle) => {\n\tthrow new Error(\"This method has been removed. Use `registerI18nLoader` instead.\");\n};\n\nconst _hasLoader = (packageName, localeId) => {\n\tconst bundleKey = `${packageName}/${localeId}`;\n\treturn loaders.has(bundleKey);\n};\n\n// load bundle over the network once\nconst _loadMessageBundleOnce = (packageName, localeId) => {\n\tconst bundleKey = `${packageName}/${localeId}`;\n\tconst loadMessageBundle = loaders.get(bundleKey);\n\n\tif (!bundlePromises.get(bundleKey)) {\n\t\tbundlePromises.set(bundleKey, loadMessageBundle(localeId));\n\t}\n\n\treturn bundlePromises.get(bundleKey);\n};\n\nconst _showAssetsWarningOnce = packageName => {\n\tif (!warningShown.has(packageName)) {\n\t\tconsole.warn(`[${packageName}]: Message bundle assets are not configured. Falling back to English texts.`, /* eslint-disable-line */\n\t\t` Add \\`import \"${packageName}/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.`); /* eslint-disable-line */\n\t\twarningShown.add(packageName);\n\t}\n};\n\n/**\n * This method preforms the asynchronous task of fetching the actual text resources. It will fetch\n * each text resource over the network once (even for multiple calls to the same method).\n * It should be fully finished before the i18nBundle class is created in the webcomponents.\n * This method uses the bundle URLs that are populated by the <code>registerI18nBundle</code> method.\n * To simplify the usage, the synchronization of both methods happens internally for the same <code>bundleId</code>\n * @param {packageName} packageName the NPM package name\n * @public\n */\nconst fetchI18nBundle = async packageName => {\n\tconst language = getLocale().getLanguage();\n\tconst region = getLocale().getRegion();\n\tlet localeId = normalizeLocale(language + (region ? `-${region}` : ``));\n\n\twhile (localeId !== DEFAULT_LANGUAGE && !_hasLoader(packageName, localeId)) {\n\t\tlocaleId = nextFallbackLocale(localeId);\n\t}\n\n\t// use default language unless configured to always fetch it from the network\n\tconst fetchDefaultLanguage = getFetchDefaultLanguage();\n\tif (localeId === DEFAULT_LANGUAGE && !fetchDefaultLanguage) {\n\t\t_setI18nBundleData(packageName, null); // reset for the default language (if data was set for a previous language)\n\t\treturn;\n\t}\n\n\tif (!_hasLoader(packageName, localeId)) {\n\t\t_showAssetsWarningOnce(packageName);\n\t\treturn;\n\t}\n\n\ttry {\n\t\tconst data = await _loadMessageBundleOnce(packageName, localeId);\n\t\t_setI18nBundleData(packageName, data);\n\t} catch (e) {\n\t\tif (!reportedErrors.has(e.message)) {\n\t\t\treportedErrors.add(e.message);\n\t\t\tconsole.error(e.message); /* eslint-disable-line */\n\t\t}\n\t}\n};\n\n// When the language changes dynamically (the user calls setLanguage), re-fetch all previously fetched bundles\nattachLanguageChange(() => {\n\tconst allPackages = [...bundleData.keys()];\n\treturn Promise.all(allPackages.map(fetchI18nBundle));\n});\n\nexport {\n\tregisterI18nLoader,\n\tfetchI18nBundle,\n\tregisterI18nBundle,\n\tgetI18nBundleData,\n};\n","import { attachLanguageChange } from \"../locale/languageChange.js\";\nimport getLocale from \"../locale/getLocale.js\";\nimport { DEFAULT_LOCALE, SUPPORTED_LOCALES } from \"../generated/AssetParameters.js\";\nimport { getFeature } from \"../FeaturesRegistry.js\";\n\nconst localeDataMap = new Map();\nconst loaders = new Map();\nconst cldrPromises = new Map();\nconst reportedErrors = new Set();\nlet warningShown = false;\n\nconst M_ISO639_OLD_TO_NEW = {\n\t\"iw\": \"he\",\n\t\"ji\": \"yi\",\n\t\"in\": \"id\",\n};\n\nconst DEV_MODE = false;\n\nconst _showAssetsWarningOnce = localeId => {\n\tif (warningShown) {\n\t\treturn;\n\t}\n\n\tif (!DEV_MODE) {\n\t\tconsole.warn(`[LocaleData] Supported locale \"${localeId}\" not configured, import the \"Assets.js\" module from the webcomponents package you are using.`); /* eslint-disable-line */\n\t} else {\n\t\tconsole.warn(`[LocaleData] Note: in dev mode, CLDR assets might be disabled for performance reasons. Try running \"ENABLE_CLDR=1 yarn start\" to test CLDR assets.`); /* eslint-disable-line */\n\t}\n\n\twarningShown = true;\n};\n\nconst calcLocale = (language, region, script) => {\n\t// normalize language and handle special cases\n\tlanguage = (language && M_ISO639_OLD_TO_NEW[language]) || language;\n\t// Special case 1: in an SAP context, the inclusive language code \"no\" always means Norwegian Bokmal (\"nb\")\n\tif (language === \"no\") {\n\t\tlanguage = \"nb\";\n\t}\n\t// Special case 2: for Chinese, derive a default region from the script (this behavior is inherited from Java)\n\tif (language === \"zh\" && !region) {\n\t\tif (script === \"Hans\") {\n\t\t\tregion = \"CN\";\n\t\t} else if (script === \"Hant\") {\n\t\t\tregion = \"TW\";\n\t\t}\n\t}\n\n\t// Special case 3: for Serbian, there are cyrillic and latin scripts, \"sh\" and \"sr-latn\" map to \"latin\", \"sr\" maps to cyrillic.\n\tif (language === \"sh\" || (language === \"sr\" && script === \"Latn\")) {\n\t\tlanguage = \"sr\";\n\t\tregion = \"Latn\";\n\t}\n\n\t// try language + region\n\tlet localeId = `${language}_${region}`;\n\tif (SUPPORTED_LOCALES.includes(localeId)) {\n\t\tif (loaders.has(localeId)) {\n\t\t\t// supported and has loader\n\t\t\treturn localeId;\n\t\t}\n\n\t\t// supported, no loader - fallback to default and warn\n\t\t_showAssetsWarningOnce(localeId);\n\t\treturn DEFAULT_LOCALE;\n\t}\n\n\t// not supported, try language only\n\tlocaleId = language;\n\tif (SUPPORTED_LOCALES.includes(localeId)) {\n\t\tif (loaders.has(localeId)) {\n\t\t\t// supported and has loader\n\t\t\treturn localeId;\n\t\t}\n\n\t\t// supported, no loader - fallback to default and warn\n\t\t_showAssetsWarningOnce(localeId);\n\t\treturn DEFAULT_LOCALE;\n\t}\n\n\t// not supported - fallback to default locale\n\treturn DEFAULT_LOCALE;\n};\n\n// internal set data\nconst setLocaleData = (localeId, content) => {\n\tlocaleDataMap.set(localeId, content);\n};\n\n// external getSync\nconst getLocaleData = localeId => {\n\t// if there is no loader, the default fallback was fetched and a warning was given - use default locale instead\n\tif (!loaders.has(localeId)) {\n\t\tlocaleId = DEFAULT_LOCALE;\n\t}\n\n\tconst content = localeDataMap.get(localeId);\n\tif (!content) {\n\t\tthrow new Error(`CLDR data for locale ${localeId} is not loaded!`);\n\t}\n\n\treturn content;\n};\n\n// load bundle over the network once\nconst _loadCldrOnce = localeId => {\n\tconst loadCldr = loaders.get(localeId);\n\n\tif (!cldrPromises.get(localeId)) {\n\t\tcldrPromises.set(localeId, loadCldr(localeId));\n\t}\n\n\treturn cldrPromises.get(localeId);\n};\n\n// external getAsync\nconst fetchCldr = async (language, region, script) => {\n\tconst localeId = calcLocale(language, region, script);\n\n\t// reuse OpenUI5 CLDR if present\n\tconst OpenUI5Support = getFeature(\"OpenUI5Support\");\n\tif (OpenUI5Support) {\n\t\tconst cldrContent = OpenUI5Support.getLocaleDataObject();\n\t\tif (cldrContent) {\n\t\t\t// only if openui5 actually returned valid content\n\t\t\tsetLocaleData(localeId, cldrContent);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// fetch it\n\ttry {\n\t\tconst cldrContent = await _loadCldrOnce(localeId);\n\t\tsetLocaleData(localeId, cldrContent);\n\t} catch (e) {\n\t\tif (!reportedErrors.has(e.message)) {\n\t\t\treportedErrors.add(e.message);\n\t\t\tconsole.error(e.message); /* eslint-disable-line */\n\t\t}\n\t}\n};\n\nconst registerLocaleDataLoader = (localeId, loader) => {\n\tloaders.set(localeId, loader);\n};\n\n// register default loader for \"en\" from ui5 CDN (dev workflow without assets)\nregisterLocaleDataLoader(\"en\", async runtimeLocaleId => {\n\treturn (await fetch(`https://ui5.sap.com/1.60.2/resources/sap/ui/core/cldr/en.json`)).json();\n});\n\n// When the language changes dynamically (the user calls setLanguage),\n// re-fetch the required CDRD data.\nattachLanguageChange(() => {\n\tconst locale = getLocale();\n\treturn fetchCldr(locale.getLanguage(), locale.getRegion(), locale.getScript());\n});\n\nexport {\n\tregisterLocaleDataLoader,\n\tfetchCldr,\n\tgetLocaleData,\n};\n","import { DEFAULT_THEME } from \"../generated/AssetParameters.js\";\n\nconst themeStyles = new Map();\nconst loaders = new Map();\nconst registeredPackages = new Set();\nconst registeredThemes = new Set();\n\n/**\n * Used to provide CSS Vars for a specific theme for a specific package.\n * The CSS Vars can be passed directly as a string (containing them), as an object with a \"_\" property(containing them in the \"_\" property), or as a URL.\n * This URL must point to a JSON file, containing a \"_\" property.\n *\n * Example usage:\n * 1) Pass the CSS Vars as a string directly.\n * registerThemeProperties(\"my-package\", \"my_theme\", \":root{--var1: red;}\");\n *\n * @public\n * @param packageName - the NPM package for which CSS Vars are registered\n * @param themeName - the theme which the CSS Vars implement\n * @param style - the style content directly\n * @deprecated\n */\nconst registerThemeProperties = (_packageName, _themeName, _style) => {\n\tthrow new Error(\"`registerThemeProperties` has been depracated. Use `registerThemePropertiesLoader` instead.\");\n};\n\nconst registerThemePropertiesLoader = (packageName, themeName, loader) => {\n\tloaders.set(`${packageName}/${themeName}`, loader);\n\tregisteredPackages.add(packageName);\n\tregisteredThemes.add(themeName);\n};\n\nconst getThemeProperties = async (packageName, themeName) => {\n\tconst style = themeStyles.get(`${packageName}_${themeName}`);\n\tif (style !== undefined) { // it's valid for style to be an empty string\n\t\treturn style;\n\t}\n\n\tif (!registeredThemes.has(themeName)) {\n\t\tconst regThemesStr = [...registeredThemes.values()].join(\", \");\n\t\tconsole.warn(`You have requested a non-registered theme - falling back to ${DEFAULT_THEME}. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */\n\t\treturn themeStyles.get(`${packageName}_${DEFAULT_THEME}`);\n\t}\n\n\tconst loader = loaders.get(`${packageName}/${themeName}`);\n\tif (!loader) {\n\t\t// no themes for package\n\t\tconsole.error(`Theme [${themeName}] not registered for package [${packageName}]`); /* eslint-disable-line */\n\t\treturn;\n\t}\n\tlet data;\n\ttry {\n\t\tdata = await loader(themeName);\n\t} catch (e) {\n\t\tconsole.error(packageName, e.message); /* eslint-disable-line */\n\t\treturn;\n\t}\n\tconst themeProps = data._ || data;\n\n\tthemeStyles.set(`${packageName}_${themeName}`, themeProps);\n\treturn themeProps;\n};\n\nconst getRegisteredPackages = () => {\n\treturn registeredPackages;\n};\n\nconst isThemeRegistered = theme => {\n\treturn registeredThemes.has(theme);\n};\n\nexport {\n\tregisterThemePropertiesLoader,\n\tregisterThemeProperties,\n\tgetThemeProperties,\n\tgetRegisteredPackages,\n\tisThemeRegistered,\n};\n","/**\n * Supported icon collection names and aliases.\n *\n * Users might specify a collection, using both the key and the value in the following key-value pairs,\n * e.g the following pairs are completely exchangeable:\n * \"SAP-icons-TNT/actor\" and \"tnt/actor\", \"BusinessSuiteInAppSymbols/3d\" and \"business-suite/3d\",\n * \"SAP-icons-v5/accept\" and \"horizon/accept\".\n *\n * Note: technically, in the code we maintain the collections under the \"value\" name - \"tnt\", \"business-suite\",\n * SAP-icons-v5\" and \"SAP-icons\"(which does not have an alias).\n */\nconst IconCollectionsAlias = {\n\t\"SAP-icons-TNT\": \"tnt\",\n\t\"BusinessSuiteInAppSymbols\": \"business-suite\",\n\t\"horizon\": \"SAP-icons-v5\",\n};\n\nexport default IconCollectionsAlias;\n","import createStyleInHead from \"./util/createStyleInHead.js\";\nimport createLinkInHead from \"./util/createLinkInHead.js\";\nimport { shouldUseLinks, getUrl } from \"./CSP.js\";\n\nconst getStyleId = (name, value) => {\n\treturn value ? `${name}|${value}` : name;\n};\n\nconst createStyle = (data, name, value = \"\") => {\n\tconst content = typeof data === \"string\" ? data : data.content;\n\n\tif (shouldUseLinks()) {\n\t\tconst attributes = {};\n\t\tattributes[name] = value;\n\t\tconst href = getUrl(data.packageName, data.fileName);\n\t\tcreateLinkInHead(href, attributes);\n\t} else if (document.adoptedStyleSheets) {\n\t\tconst stylesheet = new CSSStyleSheet();\n\t\tstylesheet.replaceSync(content);\n\t\tstylesheet._ui5StyleId = getStyleId(name, value); // set an id so that we can find the style later\n\t\tdocument.adoptedStyleSheets = [...document.adoptedStyleSheets, stylesheet];\n\t} else {\n\t\tconst attributes = {};\n\t\tattributes[name] = value;\n\t\tcreateStyleInHead(content, attributes);\n\t}\n};\n\nconst updateStyle = (data, name, value = \"\") => {\n\tconst content = typeof data === \"string\" ? data : data.content;\n\n\tif (shouldUseLinks()) {\n\t\tdocument.querySelector(`head>link[${name}=\"${value}\"]`).href = getUrl(data.packageName, data.fileName);\n\t} else if (document.adoptedStyleSheets) {\n\t\tdocument.adoptedStyleSheets.find(sh => sh._ui5StyleId === getStyleId(name, value)).replaceSync(content || \"\");\n\t} else {\n\t\tdocument.querySelector(`head>style[${name}=\"${value}\"]`).textContent = content || \"\";\n\t}\n};\n\nconst hasStyle = (name, value = \"\") => {\n\tif (shouldUseLinks()) {\n\t\treturn !!document.querySelector(`head>link[${name}=\"${value}\"]`);\n\t}\n\n\tif (document.adoptedStyleSheets) {\n\t\treturn !!document.adoptedStyleSheets.find(sh => sh._ui5StyleId === getStyleId(name, value));\n\t}\n\n\treturn !!document.querySelector(`head>style[${name}=\"${value}\"]`);\n};\n\nconst removeStyle = (name, value = \"\") => {\n\tif (shouldUseLinks()) {\n\t\tconst linkElement = document.querySelector(`head>link[${name}=\"${value}\"]`);\n\t\tif (linkElement) {\n\t\t\tlinkElement.parentElement.removeChild(linkElement);\n\t\t}\n\t} else if (document.adoptedStyleSheets) {\n\t\tdocument.adoptedStyleSheets = document.adoptedStyleSheets.filter(sh => sh._ui5StyleId !== getStyleId(name, value));\n\t} else {\n\t\tconst styleElement = document.querySelector(`head > style[${name}=\"${value}\"]`);\n\t\tif (styleElement) {\n\t\t\tstyleElement.parentElement.removeChild(styleElement);\n\t\t}\n\t}\n};\n\nconst createOrUpdateStyle = (data, name, value = \"\") => {\n\tif (hasStyle(name, value)) {\n\t\tupdateStyle(data, name, value);\n\t} else {\n\t\tcreateStyle(data, name, value);\n\t}\n};\n\nexport {\n\tcreateStyle,\n\thasStyle,\n\tupdateStyle,\n\tremoveStyle,\n\tcreateOrUpdateStyle,\n};\n","/**\n * Creates a <style> tag in the <head> tag\n * @param cssText - the CSS\n * @param attributes - optional attributes to add to the tag\n * @returns {HTMLElement}\n */\nconst createStyleInHead = (cssText, attributes = {}) => {\n\tconst style = document.createElement(\"style\");\n\tstyle.type = \"text/css\";\n\n\tObject.entries(attributes).forEach(pair => style.setAttribute(...pair));\n\n\tstyle.textContent = cssText;\n\tdocument.head.appendChild(style);\n\treturn style;\n};\n\nexport default createStyleInHead;\n","const warnings = new Set();\n\nconst getThemeMetadata = () => {\n\t// Check if the class was already applied, most commonly to the link/style tag with the CSS Variables\n\tlet el = document.querySelector(\".sapThemeMetaData-Base-baseLib\") || document.querySelector(\".sapThemeMetaData-UI5-sap-ui-core\");\n\tif (el) {\n\t\treturn getComputedStyle(el).backgroundImage;\n\t}\n\n\tel = document.createElement(\"span\");\n\tel.style.display = \"none\";\n\n\t// Try with sapThemeMetaData-Base-baseLib first\n\tel.classList.add(\"sapThemeMetaData-Base-baseLib\");\n\tdocument.body.appendChild(el);\n\tlet metadata = getComputedStyle(el).backgroundImage;\n\n\t// Try with sapThemeMetaData-UI5-sap-ui-core only if the previous selector was not found\n\tif (metadata === \"none\") {\n\t\tel.classList.add(\"sapThemeMetaData-UI5-sap-ui-core\");\n\t\tmetadata = getComputedStyle(el).backgroundImage;\n\t}\n\n\tdocument.body.removeChild(el);\n\n\treturn metadata;\n};\n\nconst parseThemeMetadata = metadataString => {\n\tconst params = /\\([\"']?data:text\\/plain;utf-8,(.*?)['\"]?\\)$/i.exec(metadataString);\n\tif (params && params.length >= 2) {\n\t\tlet paramsString = params[1];\n\t\tparamsString = paramsString.replace(/\\\\\"/g, `\"`);\n\t\tif (paramsString.charAt(0) !== \"{\" && paramsString.charAt(paramsString.length - 1) !== \"}\") {\n\t\t\ttry {\n\t\t\t\tparamsString = decodeURIComponent(paramsString);\n\t\t\t} catch (ex) {\n\t\t\t\tif (!warnings.has(\"decode\")) {\n\t\t\t\t\tconsole.warn(\"Malformed theme metadata string, unable to decodeURIComponent\"); // eslint-disable-line\n\t\t\t\t\twarnings.add(\"decode\");\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\ttry {\n\t\t\treturn JSON.parse(paramsString);\n\t\t} catch (ex) {\n\t\t\tif (!warnings.has(\"parse\")) {\n\t\t\t\tconsole.warn(\"Malformed theme metadata string, unable to parse JSON\"); // eslint-disable-line\n\t\t\t\twarnings.add(\"parse\");\n\t\t\t}\n\t\t}\n\t}\n};\n\nconst processThemeMetadata = metadata => {\n\tlet themeName;\n\tlet baseThemeName;\n\n\ttry {\n\t\tthemeName = metadata.Path.match(/\\.([^.]+)\\.css_variables$/)[1];\n\t\tbaseThemeName = metadata.Extends[0];\n\t} catch (ex) {\n\t\tif (!warnings.has(\"object\")) {\n\t\t\tconsole.warn(\"Malformed theme metadata Object\", metadata); // eslint-disable-line\n\t\t\twarnings.add(\"object\");\n\t\t}\n\t\treturn;\n\t}\n\n\treturn {\n\t\tthemeName,\n\t\tbaseThemeName,\n\t};\n};\n\nconst getThemeDesignerTheme = () => {\n\tconst metadataString = getThemeMetadata();\n\tif (!metadataString || metadataString === \"none\") {\n\t\treturn;\n\t}\n\n\tconst metadata = parseThemeMetadata(metadataString);\n\treturn processThemeMetadata(metadata);\n};\n\nexport default getThemeDesignerTheme;\n","import EventProvider from \"../EventProvider.js\";\n\nconst eventProvider = new EventProvider();\nconst THEME_LOADED = \"themeLoaded\";\n\nconst attachThemeLoaded = listener => {\n\teventProvider.attachEvent(THEME_LOADED, listener);\n};\n\nconst detachThemeLoaded = listener => {\n\teventProvider.detachEvent(THEME_LOADED, listener);\n};\n\nconst fireThemeLoaded = theme => {\n\treturn eventProvider.fireEvent(THEME_LOADED, theme);\n};\n\nexport {\n\tattachThemeLoaded,\n\tdetachThemeLoaded,\n\tfireThemeLoaded,\n};\n","import { getThemeProperties, getRegisteredPackages, isThemeRegistered } from \"../asset-registries/Themes.js\";\nimport { removeStyle, createOrUpdateStyle } from \"../ManagedStyles.js\";\nimport getThemeDesignerTheme from \"./getThemeDesignerTheme.js\";\nimport { fireThemeLoaded } from \"./ThemeLoaded.js\";\nimport { getFeature } from \"../FeaturesRegistry.js\";\n\nconst BASE_THEME_PACKAGE = \"@ui5/webcomponents-theming\";\n\nconst isThemeBaseRegistered = () => {\n\tconst registeredPackages = getRegisteredPackages();\n\treturn registeredPackages.has(BASE_THEME_PACKAGE);\n};\n\nconst loadThemeBase = async theme => {\n\tif (!isThemeBaseRegistered()) {\n\t\treturn;\n\t}\n\n\tconst cssData = await getThemeProperties(BASE_THEME_PACKAGE, theme);\n\tif (cssData) {\n\t\tcreateOrUpdateStyle(cssData, \"data-ui5-theme-properties\", BASE_THEME_PACKAGE);\n\t}\n};\n\nconst deleteThemeBase = () => {\n\tremoveStyle(\"data-ui5-theme-properties\", BASE_THEME_PACKAGE);\n};\n\nconst loadComponentPackages = async theme => {\n\tconst registeredPackages = getRegisteredPackages();\n\tregisteredPackages.forEach(async packageName => {\n\t\tif (packageName === BASE_THEME_PACKAGE) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst cssData = await getThemeProperties(packageName, theme);\n\t\tif (cssData) {\n\t\t\tcreateOrUpdateStyle(cssData, \"data-ui5-theme-properties\", packageName);\n\t\t}\n\t});\n};\n\nconst detectExternalTheme = () => {\n\t// If theme designer theme is detected, use this\n\tconst extTheme = getThemeDesignerTheme();\n\tif (extTheme) {\n\t\treturn extTheme;\n\t}\n\n\t// If OpenUI5Support is enabled, try to find out if it loaded variables\n\tconst OpenUI5Support = getFeature(\"OpenUI5Support\");\n\tif (OpenUI5Support) {\n\t\tconst varsLoaded = OpenUI5Support.cssVariablesLoaded();\n\t\tif (varsLoaded) {\n\t\t\treturn {\n\t\t\t\tthemeName: OpenUI5Support.getConfigurationSettingsObject().theme, // just themeName, baseThemeName is only relevant for custom themes\n\t\t\t};\n\t\t}\n\t}\n};\n\nconst applyTheme = async theme => {\n\tconst extTheme = detectExternalTheme();\n\n\t// Only load theme_base properties if there is no externally loaded theme, or there is, but it is not being loaded\n\tif (!extTheme || theme !== extTheme.themeName) {\n\t\tawait loadThemeBase(theme);\n\t} else {\n\t\tdeleteThemeBase();\n\t}\n\n\t// Always load component packages properties. For non-registered themes, try with the base theme, if any\n\tconst packagesTheme = isThemeRegistered(theme) ? theme : extTheme && extTheme.baseThemeName;\n\tawait loadComponentPackages(packagesTheme);\n\n\tfireThemeLoaded(theme);\n};\n\nexport default applyTheme;\n","import { getTheme as getConfiguredTheme } from \"../InitialConfiguration.js\";\nimport { reRenderAllUI5Elements } from \"../Render.js\";\nimport applyTheme from \"../theming/applyTheme.js\";\n\nlet theme;\n\nconst getTheme = () => {\n\tif (theme === undefined) {\n\t\ttheme = getConfiguredTheme();\n\t}\n\n\treturn theme;\n};\n\nconst setTheme = async newTheme => {\n\tif (theme === newTheme) {\n\t\treturn;\n\t}\n\n\ttheme = newTheme;\n\n\t// Update CSS Custom Properties\n\tawait applyTheme(theme);\n\tawait reRenderAllUI5Elements({ themeAware: true });\n};\n\n/**\n * Returns if the given theme name is the one currently applied.\n * @private\n * @param {String}\n * @returns {boolean}\n */\nconst isTheme = _theme => {\n\tconst currentTheme = getTheme();\n\treturn currentTheme === _theme || currentTheme === `${_theme}_exp`;\n};\n\n/**\n * Returns if the current theme is part of given theme family\n * @private\n * @param {String} the theme family\n * @returns {boolean}\n */\nconst isThemeFamily = _theme => {\n\treturn getTheme().startsWith(_theme);\n};\n\nexport {\n\tgetTheme,\n\tsetTheme,\n\tisTheme,\n\tisThemeFamily,\n};\n","import getSharedResource from \"../getSharedResource.js\";\nimport IconCollectionsAlias from \"../assets-meta/IconCollectionsAlias.js\";\nimport { isThemeFamily } from \"../config/Theme.js\";\n\nconst loaders = new Map();\nconst registry = getSharedResource(\"SVGIcons.registry\", new Map());\nconst iconCollectionPromises = getSharedResource(\"SVGIcons.promises\", new Map());\n\nconst ICON_NOT_FOUND = \"ICON_NOT_FOUND\";\n\n/**\n * @deprecated\n */\nconst registerIconBundle = async (collectionName, bundleData) => {\n\tthrow new Error(\"This method has been removed. Use `registerIconLoader` instead.\");\n};\n\nconst registerIconLoader = async (collectionName, loader) => {\n\tloaders.set(collectionName, loader);\n};\n\nconst _loadIconCollectionOnce = async collectionName => {\n\tif (!iconCollectionPromises.has(collectionName)) {\n\t\tif (!loaders.has(collectionName)) {\n\t\t\tthrow new Error(`No loader registered for the ${collectionName} icons collection. Probably you forgot to import the \"AllIcons.js\" module for the respective package.`);\n\t\t}\n\t\tconst loadIcons = loaders.get(collectionName);\n\t\ticonCollectionPromises.set(collectionName, loadIcons(collectionName));\n\t}\n\n\treturn iconCollectionPromises.get(collectionName);\n};\n\nconst _fillRegistry = bundleData => {\n\tObject.keys(bundleData.data).forEach(iconName => {\n\t\tconst iconData = bundleData.data[iconName];\n\n\t\tregisterIcon(iconName, {\n\t\t\tpathData: iconData.path,\n\t\t\tltr: iconData.ltr,\n\t\t\taccData: iconData.acc,\n\t\t\tcollection: bundleData.collection,\n\t\t\tpackageName: bundleData.packageName,\n\t\t });\n\t});\n};\n\n// set\nconst registerIcon = (name, { pathData, ltr, accData, collection, packageName } = {}) => { // eslint-disable-line\n\tif (!collection) {\n\t\tcollection = _getDefaultCollection();\n\t}\n\n\tconst key = `${collection}/${name}`;\n\tregistry.set(key, {\n\t\tpathData,\n\t\tltr,\n\t\taccData,\n\t\tpackageName,\n\t});\n};\n\nconst _parseName = name => {\n\t// silently support ui5-compatible URIs\n\tif (name.startsWith(\"sap-icon://\")) {\n\t\tname = name.replace(\"sap-icon://\", \"\");\n\t}\n\n\tlet collection;\n\t[name, collection] = name.split(\"/\").reverse();\n\tcollection = collection || _getDefaultCollection();\n\n\t// Normalize collection name.\n\t// - resolve `SAP-icons-TNT` to `tnt`.\n\t// - resolve `BusinessSuiteInAppSymbols` to `business-suite`.\n\t// - resolve `horizon` to `SAP-icons-v5`,\n\t// Note: aliases can be made as a feature, if more collections need it or more aliases are needed.\n\tcollection = _normalizeCollection(collection);\n\tname = name.replace(\"icon-\", \"\");\n\n\tconst registryKey = `${collection}/${name}`;\n\treturn { name, collection, registryKey };\n};\n\nconst getIconDataSync = nameProp => {\n\tconst { registryKey } = _parseName(nameProp);\n\treturn registry.get(registryKey);\n};\n\nconst getIconData = async nameProp => {\n\tconst { collection, registryKey } = _parseName(nameProp);\n\n\tlet iconData = ICON_NOT_FOUND;\n\ttry {\n\t\ticonData = await _loadIconCollectionOnce(collection);\n\t} catch (e) {\n\t\tconsole.error(e.message); /* eslint-disable-line */\n\t}\n\n\tif (iconData === ICON_NOT_FOUND) {\n\t\treturn iconData;\n\t}\n\n\tif (!registry.has(registryKey)) {\n\t\t// not filled by another await. many getters will await on the same loader, but fill only once\n\t\t_fillRegistry(iconData);\n\t}\n\treturn registry.get(registryKey);\n};\n\n// test page usage only\nconst _getRegisteredNames = async () => {\n\t// fetch one icon of each collection to trigger the bundle load\n\tawait getIconData(\"edit\");\n\tawait getIconData(\"tnt/arrow\");\n\tawait getIconData(\"business-suite/3d\");\n\treturn Array.from(registry.keys());\n};\n\nconst _getDefaultCollection = () => {\n\treturn isThemeFamily(\"sap_horizon\") ? \"SAP-icons-v5\" : \"SAP-icons\";\n};\n\nconst _normalizeCollection = collectionName => {\n\tif (IconCollectionsAlias[collectionName]) {\n\t\treturn IconCollectionsAlias[collectionName];\n\t}\n\n\treturn collectionName;\n};\n\nexport {\n\tregisterIconBundle,\n\tregisterIconLoader,\n\tgetIconData,\n\tgetIconDataSync,\n\tregisterIcon,\n\t_getRegisteredNames,\n};\n","import getSharedResource from \"../getSharedResource.js\";\nimport { getFeature } from \"../FeaturesRegistry.js\";\nimport getActiveElement from \"./getActiveElement.js\";\n\nconst PopupUtilsData = getSharedResource(\"PopupUtilsData\", {});\nPopupUtilsData.currentZIndex = PopupUtilsData.currentZIndex || 100;\n\nconst getFocusedElement = () => {\n\tconst element = getActiveElement();\n\treturn (element && typeof element.focus === \"function\") ? element : null;\n};\n\nconst isFocusedElementWithinNode = node => {\n\tconst fe = getFocusedElement();\n\n\tif (fe) {\n\t\treturn isNodeContainedWithin(node, fe);\n\t}\n\n\treturn false;\n};\n\nconst isNodeContainedWithin = (parent, child) => {\n\tlet currentNode = parent;\n\n\tif (currentNode.shadowRoot) {\n\t\tcurrentNode = Array.from(currentNode.shadowRoot.children).find(n => n.localName !== \"style\");\n\t}\n\n\tif (currentNode === child) {\n\t\treturn true;\n\t}\n\n\tconst childNodes = currentNode.localName === \"slot\" ? currentNode.assignedNodes() : currentNode.children;\n\n\tif (childNodes) {\n\t\treturn Array.from(childNodes).some(n => isNodeContainedWithin(n, child));\n\t}\n};\n\nconst isPointInRect = (x, y, rect) => {\n\treturn x >= rect.left && x <= rect.right\n\t\t&& y >= rect.top && y <= rect.bottom;\n};\n\nconst isClickInRect = (event, rect) => {\n\tlet x;\n\tlet y;\n\n\tif (event.touches) {\n\t\tconst touch = event.touches[0];\n\t\tx = touch.clientX;\n\t\ty = touch.clientY;\n\t} else {\n\t\tx = event.clientX;\n\t\ty = event.clientY;\n\t}\n\n\treturn isPointInRect(x, y, rect);\n};\n\nconst getClosedPopupParent = el => {\n\tconst parent = el.parentElement || (el.getRootNode && el.getRootNode().host);\n\n\tif (parent && ((parent.showAt && parent.isUI5Element) || (parent.open && parent.isUI5Element) || parent === document.documentElement)) {\n\t\treturn parent;\n\t}\n\n\treturn getClosedPopupParent(parent);\n};\n\nconst getNextZIndex = () => {\n\tconst OpenUI5Support = getFeature(\"OpenUI5Support\");\n\tif (OpenUI5Support && OpenUI5Support.isLoaded()) { // use OpenUI5 for getting z-index values, if loaded\n\t\treturn OpenUI5Support.getNextZIndex();\n\t}\n\n\tPopupUtilsData.currentZIndex += 2;\n\treturn PopupUtilsData.currentZIndex;\n};\n\nconst getCurrentZIndex = () => {\n\treturn PopupUtilsData.currentZIndex;\n};\n\nexport {\n\tgetFocusedElement,\n\tisClickInRect,\n\tgetClosedPopupParent,\n\tgetNextZIndex,\n\tgetCurrentZIndex,\n\tisFocusedElementWithinNode,\n};\n","import { registerFeature } from \"../FeaturesRegistry.js\";\nimport { setTheme } from \"../config/Theme.js\";\nimport { getCurrentZIndex } from \"../util/PopupUtils.js\";\n\nconst getCore = () => {\n\tconst sap = window.sap;\n\tconst core = sap && sap.ui && typeof sap.ui.getCore === \"function\" && sap.ui.getCore();\n\treturn core;\n};\n\nconst isLoaded = () => {\n\treturn !!getCore();\n};\n\nconst init = () => {\n\tconst core = getCore();\n\tif (!core) {\n\t\treturn Promise.resolve();\n\t}\n\n\treturn new Promise(resolve => {\n\t\tcore.attachInit(() => {\n\t\t\twindow.sap.ui.require([\"sap/ui/core/LocaleData\", \"sap/ui/core/Popup\"], (LocaleData, Popup) => {\n\t\t\t\tPopup.setInitialZIndex(getCurrentZIndex());\n\t\t\t\tresolve();\n\t\t\t});\n\t\t});\n\t});\n};\n\nconst getConfigurationSettingsObject = () => {\n\tconst core = getCore();\n\tif (!core) {\n\t\treturn;\n\t}\n\n\tconst config = core.getConfiguration();\n\tconst LocaleData = window.sap.ui.require(\"sap/ui/core/LocaleData\");\n\n\treturn {\n\t\tanimationMode: config.getAnimationMode(),\n\t\tlanguage: config.getLanguage(),\n\t\ttheme: config.getTheme(),\n\t\trtl: config.getRTL(),\n\t\tcalendarType: config.getCalendarType(),\n\t\tformatSettings: {\n\t\t\tfirstDayOfWeek: LocaleData ? LocaleData.getInstance(config.getLocale()).getFirstDayOfWeek() : undefined,\n\t\t},\n\t};\n};\n\nconst getLocaleDataObject = () => {\n\tconst core = getCore();\n\tif (!core) {\n\t\treturn;\n\t}\n\n\tconst config = core.getConfiguration();\n\tconst LocaleData = window.sap.ui.require(\"sap/ui/core/LocaleData\");\n\treturn LocaleData.getInstance(config.getLocale())._get();\n};\n\nconst listenForThemeChange = () => {\n\tconst core = getCore();\n\tconst config = core.getConfiguration();\n\tcore.attachThemeChanged(async () => {\n\t\tawait setTheme(config.getTheme());\n\t});\n};\n\nconst attachListeners = () => {\n\tconst core = getCore();\n\tif (!core) {\n\t\treturn;\n\t}\n\n\tlistenForThemeChange();\n};\n\nconst cssVariablesLoaded = () => {\n\tconst core = getCore();\n\tif (!core) {\n\t\treturn;\n\t}\n\n\tconst link = [...document.head.children].find(el => el.id === \"sap-ui-theme-sap.ui.core\"); // more reliable than querySelector early\n\tif (!link) {\n\t\treturn;\n\t}\n\n\treturn !!link.href.match(/\\/css(-|_)variables\\.css/);\n};\n\nconst getNextZIndex = () => {\n\tconst core = getCore();\n\tif (!core) {\n\t\treturn;\n\t}\n\n\tconst Popup = window.sap.ui.require(\"sap/ui/core/Popup\");\n\treturn Popup.getNextZIndex();\n};\n\nconst setInitialZIndex = () => {\n\tconst core = getCore();\n\tif (!core) {\n\t\treturn;\n\t}\n\n\tconst Popup = window.sap.ui.require(\"sap/ui/core/Popup\");\n\tPopup.setInitialZIndex(getCurrentZIndex());\n};\n\nconst OpenUI5Support = {\n\tisLoaded,\n\tinit,\n\tgetConfigurationSettingsObject,\n\tgetLocaleDataObject,\n\tattachListeners,\n\tcssVariablesLoaded,\n\tgetNextZIndex,\n\tsetInitialZIndex,\n};\n\nregisterFeature(\"OpenUI5Support\", OpenUI5Support);\n","export default {\n\tpackageName: \"@ui5/webcomponents-base\",\n\tfileName: \"FontFace.css\",\n\tcontent: `@font-face{font-family:\"72\";font-style:normal;font-weight:400;src:local(\"72\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:\"72full\";font-style:normal;font-weight:400;src:local('72-full'),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular-full.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular-full.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:\"72\";font-style:normal;font-weight:700;src:local('72-Bold'),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:\"72full\";font-style:normal;font-weight:700;src:local('72-Bold-full'),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:'72-Bold';font-style:normal;src:local('72-Bold'),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:'72-Boldfull';font-style:normal;src:url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:'72-Light';font-style:normal;src:local('72-Light'),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:'72-Lightfull';font-style:normal;src:url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light-full.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light-full.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:\"72Black\";font-style:bold;font-weight:900;src:local('72Black'),url(https://openui5nightly.hana.ondemand.com/resources/sap/ui/core/themes/sap_horizon/fonts/72-Black.woff2?ui5-webcomponents) format(\"woff2\"),url(https://openui5nightly.hana.ondemand.com/resources/sap/ui/core/themes/sap_horizon/fonts/72-Black.woff?ui5-webcomponents) format(\"woff\")}`\n};","export default {\n\tpackageName: \"@ui5/webcomponents-base\",\n\tfileName: \"OverrideFontFace.css\",\n\tcontent: `@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')}`\n};","import { hasStyle, createStyle } from \"./ManagedStyles.js\";\nimport { getFeature } from \"./FeaturesRegistry.js\";\nimport fontFaceCSS from \"./generated/css/FontFace.css.js\";\nimport overrideFontFaceCSS from \"./generated/css/OverrideFontFace.css.js\";\n\nconst insertFontFace = () => {\n\tconst OpenUI5Support = getFeature(\"OpenUI5Support\");\n\n\t// Only set the main font if there is no OpenUI5 support, or there is, but OpenUI5 is not loaded\n\tif (!OpenUI5Support || !OpenUI5Support.isLoaded()) {\n\t\tinsertMainFontFace();\n\t}\n\n\t// Always set the override font - OpenUI5 in CSS Vars mode does not set it, unlike the main font\n\tinsertOverrideFontFace();\n};\n\nconst insertMainFontFace = () => {\n\tif (!hasStyle(\"data-ui5-font-face\")) {\n\t\tcreateStyle(fontFaceCSS, \"data-ui5-font-face\");\n\t}\n};\n\nconst insertOverrideFontFace = () => {\n\tif (!hasStyle(\"data-ui5-font-face-override\")) {\n\t\tcreateStyle(overrideFontFaceCSS, \"data-ui5-font-face-override\");\n\t}\n};\n\nexport default insertFontFace;\n","export default {\n\tpackageName: \"@ui5/webcomponents-base\",\n\tfileName: \"SystemCSSVars.css\",\n\tcontent: `: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}`\n};","import whenDOMReady from \"./util/whenDOMReady.js\";\nimport insertFontFace from \"./FontFace.js\";\nimport insertSystemCSSVars from \"./SystemCSSVars.js\";\nimport { getTheme } from \"./config/Theme.js\";\nimport applyTheme from \"./theming/applyTheme.js\";\nimport { registerCurrentRuntime } from \"./Runtimes.js\";\nimport { getFeature } from \"./FeaturesRegistry.js\";\n\nlet bootPromise;\n\n/**\n * Attach a callback that will be executed on boot\n * @public\n * @param listener\n */\nconst attachBoot = async listener => {\n\tawait boot();\n\tlistener();\n};\n\nconst boot = async () => {\n\tif (bootPromise) {\n\t\treturn bootPromise;\n\t}\n\n\t/* eslint-disable no-alert, no-async-promise-executor */\n\t/*\n\t\tNote(since we disable eslint rule):\n\t\tIf an async executor function throws an error, the error will be lost and won't cause the newly-constructed Promise to reject.\n\t\tThis could make it difficult to debug and handle some errors.\n\t*/\n\tbootPromise = new Promise(async resolve => {\n\t\tregisterCurrentRuntime();\n\n\t\tconst OpenUI5Support = getFeature(\"OpenUI5Support\");\n\t\tconst F6Navigation = getFeature(\"F6Navigation\");\n\t\tif (OpenUI5Support) {\n\t\t\tawait OpenUI5Support.init();\n\t\t} else if (F6Navigation) {\n\t\t\tF6Navigation.init();\n\t\t}\n\n\t\tawait whenDOMReady();\n\t\tawait applyTheme(getTheme());\n\t\tOpenUI5Support && OpenUI5Support.attachListeners();\n\t\tinsertFontFace();\n\t\tinsertSystemCSSVars();\n\n\t\tresolve();\n\t});\n\t/* eslint-enable no-alert, no-async-promise-executor */\n\n\treturn bootPromise;\n};\n\nexport {\n\tboot,\n\tattachBoot,\n};\n","const whenDOMReady = () => {\n\treturn new Promise(resolve => {\n\t\tif (document.body) {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tdocument.addEventListener(\"DOMContentLoaded\", () => {\n\t\t\t\tresolve();\n\t\t\t});\n\t\t}\n\t});\n};\n\nexport default whenDOMReady;\n","import { hasStyle, createStyle } from \"./ManagedStyles.js\";\nimport systemCSSVars from \"./generated/css/SystemCSSVars.css.js\";\n\nconst insertSystemCSSVars = () => {\n\tif (!hasStyle(\"data-ui5-system-css-vars\")) {\n\t\tcreateStyle(systemCSSVars, \"data-ui5-system-css-vars\");\n\t}\n};\n\nexport default insertSystemCSSVars;\n","/**\n * Base class for all data types.\n *\n * @class\n * @constructor\n * @author SAP SE\n * @alias sap.ui.webcomponents.base.types.DataType\n * @public\n */\nclass DataType {\n\tstatic isValid(value) {\n\t}\n\n\tstatic attributeToProperty(attributeValue) {\n\t\treturn attributeValue;\n\t}\n\n\tstatic propertyToAttribute(propertyValue) {\n\t\treturn `${propertyValue}`;\n\t}\n\n\tstatic valuesAreEqual(value1, value2) {\n\t\treturn value1 === value2;\n\t}\n\n\tstatic generateTypeAccessors(types) {\n\t\tObject.keys(types).forEach(type => {\n\t\t\tObject.defineProperty(this, type, {\n\t\t\t\tget() {\n\t\t\t\t\treturn types[type];\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n}\n\nexport default DataType;\n","const isDescendantOf = (klass, baseKlass, inclusive = false) => {\n\tif (typeof klass !== \"function\" || typeof baseKlass !== \"function\") {\n\t\treturn false;\n\t}\n\tif (inclusive && klass === baseKlass) {\n\t\treturn true;\n\t}\n\tlet parent = klass;\n\tdo {\n\t\tparent = Object.getPrototypeOf(parent);\n\t} while (parent !== null && parent !== baseKlass);\n\treturn parent === baseKlass;\n};\n\nexport default isDescendantOf;\n","const kebabToCamelMap = new Map();\nconst camelToKebabMap = new Map();\n\nconst kebabToCamelCase = string => {\n\tif (!kebabToCamelMap.has(string)) {\n\t\tconst result = toCamelCase(string.split(\"-\"));\n\t\tkebabToCamelMap.set(string, result);\n\t}\n\treturn kebabToCamelMap.get(string);\n};\n\nconst camelToKebabCase = string => {\n\tif (!camelToKebabMap.has(string)) {\n\t\tconst result = string.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\t\tcamelToKebabMap.set(string, result);\n\t}\n\treturn camelToKebabMap.get(string);\n};\n\nconst toCamelCase = parts => {\n\treturn parts.map((string, index) => {\n\t\treturn index === 0 ? string.toLowerCase() : string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n\t}).join(\"\");\n};\n\nexport { kebabToCamelCase, camelToKebabCase };\n","/**\n * Determines the slot to which a node should be assigned\n * @param node Text node or HTML element\n * @returns {string}\n */\nconst getSlotName = node => {\n\t// Text nodes can only go to the default slot\n\tif (!(node instanceof HTMLElement)) {\n\t\treturn \"default\";\n\t}\n\n\t// Discover the slot based on the real slot name (f.e. footer => footer, or content-32 => content)\n\tconst slot = node.getAttribute(\"slot\");\n\tif (slot) {\n\t\tconst match = slot.match(/^(.+?)-\\d+$/);\n\t\treturn match ? match[1] : slot;\n\t}\n\n\t// Use default slot as a fallback\n\treturn \"default\";\n};\n\nconst isSlot = el => el && el instanceof HTMLElement && el.localName === \"slot\";\n\nconst getSlottedElements = el => {\n\tif (isSlot(el)) {\n\t\treturn el.assignedNodes({ flatten: true }).filter(item => item instanceof HTMLElement);\n\t}\n\n\treturn [el];\n};\n\nconst getSlottedElementsList = elList => {\n\tconst reducer = (acc, curr) => acc.concat(getSlottedElements(curr));\n\treturn elList.reduce(reducer, []);\n};\n\nexport {\n\tgetSlotName,\n\tisSlot,\n\tgetSlottedElements,\n\tgetSlottedElementsList,\n};\n","let suf;\nlet rulesObj = {\n\tinclude: [/^ui5-/],\n\texclude: [],\n};\nconst tagsCache = new Map(); // true/false means the tag should/should not be cached, undefined means not known yet.\n\n/**\n * Sets the suffix to be used for custom elements scoping, f.e. pass \"demo\" to get tags such as \"ui5-button-demo\".\n * Note: by default all tags starting with \"ui5-\" will be scoped, unless you change this by calling \"setCustomElementsScopingRules\"\n *\n * @public\n * @param suffix The scoping suffix\n */\nconst setCustomElementsScopingSuffix = suffix => {\n\tif (!suffix.match(/^[a-zA-Z0-9_-]+$/)) {\n\t\tthrow new Error(\"Only alphanumeric characters and dashes allowed for the scoping suffix\");\n\t}\n\n\tsuf = suffix;\n};\n\n/**\n * Returns the currently set scoping suffix, or undefined if not set.\n *\n * @public\n * @returns {String|undefined}\n */\nconst getCustomElementsScopingSuffix = () => {\n\treturn suf;\n};\n\n/**\n * Sets the rules, governing which custom element tags to scope and which not, f.e.\n * setCustomElementsScopingRules({include: [/^ui5-/]}, exclude: [/^ui5-mylib-/, /^ui5-carousel$/]);\n * will scope all elements starting with \"ui5-\" but not the ones starting with \"ui5-mylib-\" and not \"ui5-carousel\".\n *\n * @public\n * @param rules Object with \"include\" and \"exclude\" properties, both arrays of regular expressions. Note that \"include\"\n * rules are applied first and \"exclude\" rules second.\n */\nconst setCustomElementsScopingRules = rules => {\n\tif (!rules || !rules.include) {\n\t\tthrow new Error(`\"rules\" must be an object with at least an \"include\" property`);\n\t}\n\n\tif (!Array.isArray(rules.include) || rules.include.some(rule => !(rule instanceof RegExp))) {\n\t\tthrow new Error(`\"rules.include\" must be an array of regular expressions`);\n\t}\n\n\tif (rules.exclude && (!Array.isArray(rules.exclude) || rules.exclude.some(rule => !(rule instanceof RegExp)))) {\n\t\tthrow new Error(`\"rules.exclude\" must be an array of regular expressions`);\n\t}\n\n\trules.exclude = rules.exclude || [];\n\trulesObj = rules;\n\ttagsCache.clear(); // reset the cache upon setting new rules\n};\n\n/**\n * Returns the rules, governing which custom element tags to scope and which not. By default, all elements\n * starting with \"ui5-\" are scoped. The default rules are: {include: [/^ui5-/]}.\n *\n * @public\n * @returns {Object}\n */\nconst getCustomElementsScopingRules = () => {\n\treturn rulesObj;\n};\n\n/**\n * Determines whether custom elements with the given tag should be scoped or not.\n * The tag is first matched against the \"include\" rules and then against the \"exclude\" rules and the\n * result is cached until new rules are set.\n *\n * @public\n * @param tag\n */\nconst shouldScopeCustomElement = tag => {\n\tif (!tagsCache.has(tag)) {\n\t\tconst result = rulesObj.include.some(rule => tag.match(rule)) && !rulesObj.exclude.some(rule => tag.match(rule));\n\t\ttagsCache.set(tag, result);\n\t}\n\n\treturn tagsCache.get(tag);\n};\n\n/**\n * Returns the currently set scoping suffix, if any and if the tag should be scoped, or undefined otherwise.\n *\n * @public\n * @param tag\n * @returns {String}\n */\nconst getEffectiveScopingSuffixForTag = tag => {\n\tif (shouldScopeCustomElement(tag)) {\n\t\treturn getCustomElementsScopingSuffix();\n\t}\n};\n\nexport {\n\tsetCustomElementsScopingSuffix,\n\tgetCustomElementsScopingSuffix,\n\tsetCustomElementsScopingRules,\n\tgetCustomElementsScopingRules,\n\tshouldScopeCustomElement,\n\tgetEffectiveScopingSuffixForTag,\n};\n","import DataType from \"./types/DataType.js\";\nimport isDescendantOf from \"./util/isDescendantOf.js\";\nimport { camelToKebabCase } from \"./util/StringHelper.js\";\nimport { getSlottedElements } from \"./util/SlotsHelper.js\";\nimport { getEffectiveScopingSuffixForTag } from \"./CustomElementsScope.js\";\n\n/**\n *\n * @class\n * @public\n */\nclass UI5ElementMetadata {\n\tconstructor(metadata) {\n\t\tthis.metadata = metadata;\n\t}\n\n\tgetInitialState() {\n\t\tif (Object.prototype.hasOwnProperty.call(this, \"_initialState\")) {\n\t\t\treturn this._initialState;\n\t\t}\n\n\t\tconst initialState = {};\n\t\tconst slotsAreManaged = this.slotsAreManaged();\n\n\t\t// Initialize properties\n\t\tconst props = this.getProperties();\n\t\tfor (const propName in props) { // eslint-disable-line\n\t\t\tconst propType = props[propName].type;\n\t\t\tconst propDefaultValue = props[propName].defaultValue;\n\n\t\t\tif (propType === Boolean) {\n\t\t\t\tinitialState[propName] = false;\n\n\t\t\t\tif (propDefaultValue !== undefined) {\n\t\t\t\t\tconsole.warn(\"The 'defaultValue' metadata key is ignored for all booleans properties, they would be initialized with 'false' by default\"); // eslint-disable-line\n\t\t\t\t}\n\t\t\t} else if (props[propName].multiple) {\n\t\t\t\tinitialState[propName] = [];\n\t\t\t} else if (propType === Object) {\n\t\t\t\tinitialState[propName] = \"defaultValue\" in props[propName] ? props[propName].defaultValue : {};\n\t\t\t} else if (propType === String) {\n\t\t\t\tinitialState[propName] = \"defaultValue\" in props[propName] ? props[propName].defaultValue : \"\";\n\t\t\t} else {\n\t\t\t\tinitialState[propName] = propDefaultValue;\n\t\t\t}\n\t\t}\n\n\t\t// Initialize slots\n\t\tif (slotsAreManaged) {\n\t\t\tconst slots = this.getSlots();\n\t\t\tfor (const [slotName, slotData] of Object.entries(slots)) { // eslint-disable-line\n\t\t\t\tconst propertyName = slotData.propertyName || slotName;\n\t\t\t\tinitialState[propertyName] = [];\n\t\t\t}\n\t\t}\n\n\t\tthis._initialState = initialState;\n\t\treturn initialState;\n\t}\n\n\t/**\n\t * Only intended for use by UI5Element.js\n\t * @protected\n\t */\n\tstatic validatePropertyValue(value, propData) {\n\t\tconst isMultiple = propData.multiple;\n\t\tif (isMultiple) {\n\t\t\treturn value.map(propValue => validateSingleProperty(propValue, propData));\n\t\t}\n\t\treturn validateSingleProperty(value, propData);\n\t}\n\n\t/**\n\t * Only intended for use by UI5Element.js\n\t * @protected\n\t */\n\tstatic validateSlotValue(value, slotData) {\n\t\treturn validateSingleSlot(value, slotData);\n\t}\n\n\t/**\n\t * Returns the tag of the UI5 Element without the scope\n\t * @public\n\t */\n\tgetPureTag() {\n\t\treturn this.metadata.tag;\n\t}\n\n\t/**\n\t * Returns the tag of the UI5 Element\n\t * @public\n\t */\n\tgetTag() {\n\t\tconst pureTag = this.metadata.tag;\n\t\tconst suffix = getEffectiveScopingSuffixForTag(pureTag);\n\t\tif (!suffix) {\n\t\t\treturn pureTag;\n\t\t}\n\n\t\treturn `${pureTag}-${suffix}`;\n\t}\n\n\t/**\n\t * Used to get the tag we need to register for backwards compatibility\n\t * @public\n\t */\n\tgetAltTag() {\n\t\tconst pureAltTag = this.metadata.altTag;\n\t\tif (!pureAltTag) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst suffix = getEffectiveScopingSuffixForTag(pureAltTag);\n\t\tif (!suffix) {\n\t\t\treturn pureAltTag;\n\t\t}\n\n\t\treturn `${pureAltTag}-${suffix}`;\n\t}\n\n\t/**\n\t * Determines whether a property should have an attribute counterpart\n\t * @public\n\t * @param propName\n\t * @returns {boolean}\n\t */\n\thasAttribute(propName) {\n\t\tconst propData = this.getProperties()[propName];\n\t\treturn propData.type !== Object && !propData.noAttribute && !propData.multiple;\n\t}\n\n\t/**\n\t * Returns an array with the properties of the UI5 Element (in camelCase)\n\t * @public\n\t * @returns {string[]}\n\t */\n\tgetPropertiesList() {\n\t\treturn Object.keys(this.getProperties());\n\t}\n\n\t/**\n\t * Returns an array with the attributes of the UI5 Element (in kebab-case)\n\t * @public\n\t * @returns {string[]}\n\t */\n\tgetAttributesList() {\n\t\treturn this.getPropertiesList().filter(this.hasAttribute, this).map(camelToKebabCase);\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of slots and their metadata definitions\n\t * @public\n\t */\n\tgetSlots() {\n\t\treturn this.metadata.slots || {};\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has a default slot of type Node, therefore can slot text\n\t * @returns {boolean}\n\t */\n\tcanSlotText() {\n\t\tconst defaultSlot = this.getSlots().default;\n\t\treturn defaultSlot && defaultSlot.type === Node;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element supports any slots\n\t * @public\n\t */\n\thasSlots() {\n\t\treturn !!Object.entries(this.getSlots()).length;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element supports any slots with \"individualSlots: true\"\n\t * @public\n\t */\n\thasIndividualSlots() {\n\t\treturn this.slotsAreManaged() && Object.entries(this.getSlots()).some(([_slotName, slotData]) => slotData.individualSlots);\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element needs to invalidate if children are added/removed/changed\n\t * @public\n\t */\n\tslotsAreManaged() {\n\t\treturn !!this.metadata.managedSlots;\n\t}\n\n\t/**\n\t * Determines whether this control supports F6 fast navigation\n\t * @public\n\t */\n\tsupportsF6FastNavigation() {\n\t\treturn !!this.metadata.fastNavigation;\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of properties and their metadata definitions\n\t * @public\n\t */\n\tgetProperties() {\n\t\treturn this.metadata.properties || {};\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of events and their metadata definitions\n\t * @public\n\t */\n\tgetEvents() {\n\t\treturn this.metadata.events || {};\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has any translatable texts (needs to be invalidated upon language change)\n\t * @returns {boolean}\n\t */\n\tisLanguageAware() {\n\t\treturn !!this.metadata.languageAware;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has any theme dependant carachteristics.\n\t * @returns {boolean}\n\t */\n\t isThemeAware() {\n\t\treturn !!this.metadata.themeAware;\n\t}\n\n\t/**\n\t * Matches a changed entity (property/slot) with the given name against the \"invalidateOnChildChange\" configuration\n\t * and determines whether this should cause and invalidation\n\t *\n\t * @param slotName the name of the slot in which a child was changed\n\t * @param type the type of change in the child: \"property\" or \"slot\"\n\t * @param name the name of the property/slot that changed\n\t * @returns {boolean}\n\t */\n\tshouldInvalidateOnChildChange(slotName, type, name) {\n\t\tconst config = this.getSlots()[slotName].invalidateOnChildChange;\n\n\t\t// invalidateOnChildChange was not set in the slot metadata - by default child changes do not affect the component\n\t\tif (config === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// The simple format was used: invalidateOnChildChange: true/false;\n\t\tif (typeof config === \"boolean\") {\n\t\t\treturn config;\n\t\t}\n\n\t\t// The complex format was used: invalidateOnChildChange: { properties, slots }\n\t\tif (typeof config === \"object\") {\n\t\t\t// A property was changed\n\t\t\tif (type === \"property\") {\n\t\t\t\t// The config object does not have a properties field\n\t\t\t\tif (config.properties === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the short format: properties: true/false\n\t\t\t\tif (typeof config.properties === \"boolean\") {\n\t\t\t\t\treturn config.properties;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the complex format: properties: [...]\n\t\t\t\tif (Array.isArray(config.properties)) {\n\t\t\t\t\treturn config.properties.includes(name);\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"Wrong format for invalidateOnChildChange.properties: boolean or array is expected\");\n\t\t\t}\n\n\t\t\t// A slot was changed\n\t\t\tif (type === \"slot\") {\n\t\t\t\t// The config object does not have a slots field\n\t\t\t\tif (config.slots === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the short format: slots: true/false\n\t\t\t\tif (typeof config.slots === \"boolean\") {\n\t\t\t\t\treturn config.slots;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the complex format: slots: [...]\n\t\t\t\tif (Array.isArray(config.slots)) {\n\t\t\t\t\treturn config.slots.includes(name);\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"Wrong format for invalidateOnChildChange.slots: boolean or array is expected\");\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(\"Wrong format for invalidateOnChildChange: boolean or object is expected\");\n\t}\n}\n\nconst validateSingleProperty = (value, propData) => {\n\tconst propertyType = propData.type;\n\n\tif (propertyType === Boolean) {\n\t\treturn typeof value === \"boolean\" ? value : false;\n\t}\n\tif (propertyType === String) {\n\t\treturn (typeof value === \"string\" || typeof value === \"undefined\" || value === null) ? value : value.toString();\n\t}\n\tif (propertyType === Object) {\n\t\treturn typeof value === \"object\" ? value : propData.defaultValue;\n\t}\n\tif (isDescendantOf(propertyType, DataType)) {\n\t\treturn propertyType.isValid(value) ? value : propData.defaultValue;\n\t}\n};\n\nconst validateSingleSlot = (value, slotData) => {\n\tvalue && getSlottedElements(value).forEach(el => {\n\t\tif (!(el instanceof slotData.type)) {\n\t\t\tthrow new Error(`${el} is not of type ${slotData.type}`);\n\t\t}\n\t});\n\n\treturn value;\n};\n\nexport default UI5ElementMetadata;\n","if (!customElements.get(\"ui5-static-area\")) {\n\tcustomElements.define(\"ui5-static-area\", class extends HTMLElement {});\n}\n","import { getCustomElementsScopingSuffix, shouldScopeCustomElement } from \"../CustomElementsScope.js\";\n\n/**\n * Runs a component's template with the component's current state, while also scoping HTML\n *\n * @param template - the template to execute\n * @param component - the component\n * @public\n * @returns {*}\n */\nconst executeTemplate = (template, component) => {\n\tconst tagsToScope = getTagsToScope(component);\n\tconst scope = getCustomElementsScopingSuffix();\n\treturn template(component, tagsToScope, scope);\n};\n\n/**\n * Returns all tags, used inside component's template subject to scoping.\n * @param component - the component\n * @returns {Array[]}\n * @private\n */\nconst getTagsToScope = component => {\n\tconst componentTag = component.constructor.getMetadata().getPureTag();\n\tconst tagsToScope = component.constructor.getUniqueDependencies().map(dep => dep.getMetadata().getPureTag()).filter(shouldScopeCustomElement);\n\n\tif (shouldScopeCustomElement(componentTag)) {\n\t\ttagsToScope.push(componentTag);\n\t}\n\n\treturn tagsToScope;\n};\n\nexport default executeTemplate;\n","import { reRenderAllUI5Elements } from \"../Render.js\";\nimport getSharedResource from \"../getSharedResource.js\";\nimport EventProvider from \"../EventProvider.js\";\n\nconst eventProvider = getSharedResource(\"CustomStyle.eventProvider\", new EventProvider());\nconst CUSTOM_CSS_CHANGE = \"CustomCSSChange\";\n\nconst attachCustomCSSChange = listener => {\n\teventProvider.attachEvent(CUSTOM_CSS_CHANGE, listener);\n};\n\nconst detachCustomCSSChange = listener => {\n\teventProvider.detachEvent(CUSTOM_CSS_CHANGE, listener);\n};\n\nconst fireCustomCSSChange = tag => {\n\treturn eventProvider.fireEvent(CUSTOM_CSS_CHANGE, tag);\n};\n\nconst customCSSFor = getSharedResource(\"CustomStyle.customCSSFor\", {});\n\n// Listen to the eventProvider, in case other copies of this CustomStyle module fire this\n// event, and this copy would therefore need to reRender the ui5 webcomponents; but\n// don't reRender if it was this copy that fired the event to begin with.\nlet skipRerender;\nattachCustomCSSChange(tag => {\n\tif (!skipRerender) {\n\t\treRenderAllUI5Elements({ tag });\n\t}\n});\n\nconst addCustomCSS = (tag, css) => {\n\tif (!customCSSFor[tag]) {\n\t\tcustomCSSFor[tag] = [];\n\t}\n\tcustomCSSFor[tag].push(css);\n\n\tskipRerender = true;\n\ttry {\n\t\t// The event is fired and the attached event listeners are all called synchronously\n\t\t// The skipRerender flag will be used to avoid calling reRenderAllUI5Elements twice when it is this copy\n\t\t// of CustomStyle.js which is firing the `CustomCSSChange` event.\n\t\tfireCustomCSSChange(tag);\n\t} finally {\n\t\tskipRerender = false;\n\t}\n\n\treturn reRenderAllUI5Elements({ tag });\n};\n\nconst getCustomCSS = tag => {\n\treturn customCSSFor[tag] ? customCSSFor[tag].join(\"\") : \"\";\n};\n\nexport {\n\taddCustomCSS,\n\tgetCustomCSS,\n\tattachCustomCSSChange,\n\tdetachCustomCSSChange,\n};\n","const getStylesString = styles => {\n\tif (Array.isArray(styles)) {\n\t\treturn flatten(styles.filter(style => !!style)).map(style => {\n\t\t\treturn typeof style === \"string\" ? style : style.content;\n\t\t}).join(\" \");\n\t}\n\n\treturn typeof styles === \"string\" ? styles : styles.content;\n};\n\nconst flatten = arr => {\n\treturn arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatten(val) : val), []);\n};\n\nexport default getStylesString;\n","import { getCustomCSS, attachCustomCSSChange } from \"./CustomStyle.js\";\nimport getStylesString from \"./getStylesString.js\";\n\nconst effectiveStyleMap = new Map();\n\nattachCustomCSSChange(tag => {\n\teffectiveStyleMap.delete(`${tag}_normal`); // there is custom CSS only for the component itself, not for its static area part\n});\n\nconst getEffectiveStyle = (ElementClass, forStaticArea = false) => {\n\tconst tag = ElementClass.getMetadata().getTag();\n\tconst key = `${tag}_${forStaticArea ? \"static\" : \"normal\"}`;\n\n\tif (!effectiveStyleMap.has(key)) {\n\t\tlet effectiveStyle;\n\n\t\tif (forStaticArea) {\n\t\t\teffectiveStyle = getStylesString(ElementClass.staticAreaStyles);\n\t\t} else {\n\t\t\tconst customStyle = getCustomCSS(tag) || \"\";\n\t\t\tconst builtInStyles = getStylesString(ElementClass.styles);\n\t\t\teffectiveStyle = `${builtInStyles} ${customStyle}`;\n\t\t}\n\t\teffectiveStyleMap.set(key, effectiveStyle);\n\t}\n\n\treturn effectiveStyleMap.get(key);\n};\n\nexport default getEffectiveStyle;\n","import getEffectiveStyle from \"./getEffectiveStyle.js\";\nimport { attachCustomCSSChange } from \"./CustomStyle.js\";\n\nconst constructableStyleMap = new Map();\n\nattachCustomCSSChange(tag => {\n\tconstructableStyleMap.delete(`${tag}_normal`); // there is custom CSS only for the component itself, not for its static area part\n});\n\n/**\n * Returns (and caches) a constructable style sheet for a web component class\n * Note: Chrome\n * @param ElementClass\n * @returns {*}\n */\nconst getConstructableStyle = (ElementClass, forStaticArea = false) => {\n\tconst tag = ElementClass.getMetadata().getTag();\n\tconst key = `${tag}_${forStaticArea ? \"static\" : \"normal\"}`;\n\n\tif (!constructableStyleMap.has(key)) {\n\t\tconst styleContent = getEffectiveStyle(ElementClass, forStaticArea);\n\t\tconst style = new CSSStyleSheet();\n\t\tstyle.replaceSync(styleContent);\n\t\tconstructableStyleMap.set(key, [style]);\n\t}\n\n\treturn constructableStyleMap.get(key);\n};\n\nexport default getConstructableStyle;\n","import executeTemplate from \"./renderer/executeTemplate.js\";\nimport getConstructableStyle from \"./theming/getConstructableStyle.js\";\nimport getEffectiveStyle from \"./theming/getEffectiveStyle.js\";\nimport getEffectiveLinksHrefs from \"./theming/getEffectiveLinksHrefs.js\";\nimport isLegacyBrowser from \"./isLegacyBrowser.js\";\nimport { shouldUseLinks } from \"./CSP.js\";\n\n/**\n * Updates the shadow root of a UI5Element or its static area item\n * @param element\n * @param forStaticArea\n */\nconst updateShadowRoot = (element, forStaticArea = false) => {\n\tlet styleStrOrHrefsArr;\n\tconst template = forStaticArea ? \"staticAreaTemplate\" : \"template\";\n\tconst shadowRoot = forStaticArea ? element.staticAreaItem.shadowRoot : element.shadowRoot;\n\tconst renderResult = executeTemplate(element.constructor[template], element);\n\n\tif (shouldUseLinks()) {\n\t\tstyleStrOrHrefsArr = getEffectiveLinksHrefs(element.constructor, forStaticArea);\n\t} else if (document.adoptedStyleSheets) { // Chrome\n\t\tshadowRoot.adoptedStyleSheets = getConstructableStyle(element.constructor, forStaticArea);\n\t} else if (!isLegacyBrowser()) { // FF, Safari\n\t\tstyleStrOrHrefsArr = getEffectiveStyle(element.constructor, forStaticArea);\n\t}\n\n\telement.constructor.render(renderResult, shadowRoot, styleStrOrHrefsArr, { host: element });\n};\n\nexport default updateShadowRoot;\n","const isLegacyBrowser = () => !!window.ShadyDOM;\n\nexport default isLegacyBrowser;\n","import { getRTL as getConfiguredRTL } from \"../InitialConfiguration.js\";\nimport { getLanguage } from \"./Language.js\";\nimport getDesigntimePropertyAsArray from \"../util/getDesigntimePropertyAsArray.js\";\nimport detectNavigatorLanguage from \"../util/detectNavigatorLanguage.js\";\n\nconst M_ISO639_OLD_TO_NEW = {\n\t\"iw\": \"he\",\n\t\"ji\": \"yi\",\n\t\"in\": \"id\",\n\t\"sh\": \"sr\",\n};\n\nconst A_RTL_LOCALES = getDesigntimePropertyAsArray(\"$cldr-rtl-locales:ar,fa,he$\") || [];\n\nconst impliesRTL = language => {\n\tlanguage = (language && M_ISO639_OLD_TO_NEW[language]) || language;\n\n\treturn A_RTL_LOCALES.indexOf(language) >= 0;\n};\n\nconst getRTL = () => {\n\tconst configurationRTL = getConfiguredRTL();\n\n\tif (configurationRTL !== null) {\n\t\treturn !!configurationRTL;\n\t}\n\n\treturn impliesRTL(getLanguage() || detectNavigatorLanguage());\n};\n\nexport { getRTL }; // eslint-disable-line\n","export default value => {\n\tconst m = /\\$([-a-z0-9A-Z._]+)(?::([^$]*))?\\$/.exec(value);\n\treturn m && m[2] ? m[2].split(/,/) : null;\n};\n","import { getRTL } from \"../config/RTL.js\";\n\nconst GLOBAL_DIR_CSS_VAR = \"--_ui5_dir\";\n\nconst getEffectiveDir = element => {\n\tconst doc = window.document;\n\tconst dirValues = [\"ltr\", \"rtl\"]; // exclude \"auto\" and \"\" from all calculations\n\tconst locallyAppliedDir = getComputedStyle(element).getPropertyValue(GLOBAL_DIR_CSS_VAR);\n\n\t// In that order, inspect the CSS Var (for modern browsers), the element itself, html and body (for IE fallback)\n\tif (dirValues.includes(locallyAppliedDir)) {\n\t\treturn locallyAppliedDir;\n\t}\n\tif (dirValues.includes(element.dir)) {\n\t\treturn element.dir;\n\t}\n\tif (dirValues.includes(doc.documentElement.dir)) {\n\t\treturn doc.documentElement.dir;\n\t}\n\tif (dirValues.includes(doc.body.dir)) {\n\t\treturn doc.body.dir;\n\t}\n\n\t// Finally, check the configuration for explicitly set RTL or language-implied RTL\n\treturn getRTL() ? \"rtl\" : undefined;\n};\n\nexport default getEffectiveDir;\n","import \"./StaticArea.js\";\nimport updateShadowRoot from \"./updateShadowRoot.js\";\nimport { renderFinished } from \"./Render.js\";\nimport getEffectiveContentDensity from \"./util/getEffectiveContentDensity.js\";\nimport { getEffectiveScopingSuffixForTag } from \"./CustomElementsScope.js\";\nimport getEffectiveDir from \"./locale/getEffectiveDir.js\";\n\n/**\n *\n * @class\n * @author SAP SE\n * @private\n */\nclass StaticAreaItem extends HTMLElement {\n\tconstructor() {\n\t\tsuper();\n\t\tthis._rendered = false;\n\t\tthis.attachShadow({ mode: \"open\" });\n\t}\n\n\t/**\n\t * @protected\n\t * @param ownerElement The UI5Element instance that owns this static area item\n\t */\n\tsetOwnerElement(ownerElement) {\n\t\tthis.ownerElement = ownerElement;\n\t\tthis.classList.add(this.ownerElement._id); // used for getting the popover in the tests\n\t\tif (this.ownerElement.hasAttribute(\"data-ui5-static-stable\")) {\n\t\t\tthis.setAttribute(\"data-ui5-stable\", this.ownerElement.getAttribute(\"data-ui5-static-stable\")); // stable selector\n\t\t}\n\t}\n\n\t/**\n\t * Updates the shadow root of the static area item with the latest state, if rendered\n\t * @protected\n\t */\n\tupdate() {\n\t\tif (this._rendered) {\n\t\t\tthis._updateContentDensity();\n\t\t\tthis._updateDirection();\n\t\t\tupdateShadowRoot(this.ownerElement, true);\n\t\t}\n\t}\n\n\t/**\n\t * Sets the correct content density based on the owner element's state\n\t * @private\n\t */\n\t_updateContentDensity() {\n\t\tif (getEffectiveContentDensity(this.ownerElement) === \"compact\") {\n\t\t\tthis.classList.add(\"sapUiSizeCompact\");\n\t\t\tthis.classList.add(\"ui5-content-density-compact\");\n\t\t} else {\n\t\t\tthis.classList.remove(\"sapUiSizeCompact\");\n\t\t\tthis.classList.remove(\"ui5-content-density-compact\");\n\t\t}\n\t}\n\n\t_updateDirection() {\n\t\tconst dir = getEffectiveDir(this.ownerElement);\n\t\tif (dir) {\n\t\t\tthis.setAttribute(\"dir\", dir);\n\t\t} else {\n\t\t\tthis.removeAttribute(\"dir\");\n\t\t}\n\t}\n\n\t/**\n\t * @protected\n\t * Returns reference to the DOM element where the current fragment is added.\n\t */\n\tasync getDomRef() {\n\t\tthis._updateContentDensity();\n\t\tif (!this._rendered) {\n\t\t\tthis._rendered = true;\n\t\t\tupdateShadowRoot(this.ownerElement, true);\n\t\t}\n\t\tawait renderFinished(); // Wait for the content of the ui5-static-area-item to be rendered\n\t\treturn this.shadowRoot;\n\t}\n\n\tstatic getTag() {\n\t\tconst pureTag = \"ui5-static-area-item\";\n\t\tconst suffix = getEffectiveScopingSuffixForTag(pureTag);\n\t\tif (!suffix) {\n\t\t\treturn pureTag;\n\t\t}\n\n\t\treturn `${pureTag}-${suffix}`;\n\t}\n\n\tstatic createInstance() {\n\t\tif (!customElements.get(StaticAreaItem.getTag())) {\n\t\t\tcustomElements.define(StaticAreaItem.getTag(), StaticAreaItem);\n\t\t}\n\n\t\treturn document.createElement(this.getTag());\n\t}\n}\n\nexport default StaticAreaItem;\n","const GLOBAL_CONTENT_DENSITY_CSS_VAR = \"--_ui5_content_density\";\n\nconst getEffectiveContentDensity = el => getComputedStyle(el).getPropertyValue(GLOBAL_CONTENT_DENSITY_CSS_VAR);\n\nexport default getEffectiveContentDensity;\n","const observers = new WeakMap(); // We want just one observer per node, store them here -> DOM nodes are keys\n\n/**\n * Default implementation with MutationObserver for browsers with native support\n */\nlet _createObserver = (node, callback, options) => {\n\tconst observer = new MutationObserver(callback);\n\tobserver.observe(node, options);\n\treturn observer;\n};\n\n/**\n * Default implementation with MutationObserver for browsers with native support\n */\nlet _destroyObserver = observer => {\n\tobserver.disconnect();\n};\n\n/**\n * Allows to create an alternative DOM observer implementation\n * @param createFn\n */\nconst setCreateObserverCallback = createFn => {\n\tif (typeof createFn === \"function\") {\n\t\t_createObserver = createFn;\n\t}\n};\n\n/**\n * Allows to create an alternative DOM observer implementation\n * @param destroyFn\n */\nconst setDestroyObserverCallback = destroyFn => {\n\tif (typeof destroyFn === \"function\") {\n\t\t_destroyObserver = destroyFn;\n\t}\n};\n\n/**\n * @param node\n * @param callback\n * @param options\n */\nconst observeDOMNode = (node, callback, options) => {\n\tconst observer = _createObserver(node, callback, options);\n\tobservers.set(node, observer);\n};\n\n/**\n * @param node\n */\nconst unobserveDOMNode = node => {\n\tconst observer = observers.get(node);\n\tif (observer) {\n\t\t_destroyObserver(observer);\n\t\tobservers.delete(node);\n\t}\n};\n\nexport {\n\tsetCreateObserverCallback,\n\tsetDestroyObserverCallback,\n\tobserveDOMNode,\n\tunobserveDOMNode,\n};\n","import { getNoConflict as getConfiguredNoConflict } from \"../InitialConfiguration.js\";\n\n// Fire these events even with noConflict: true\nconst excludeList = [\n\t\"value-changed\",\n];\n\nconst shouldFireOriginalEvent = eventName => {\n\treturn excludeList.includes(eventName);\n};\n\nlet noConflict;\n\nconst shouldNotFireOriginalEvent = eventName => {\n\tconst nc = getNoConflict();\n\treturn !(nc.events && nc.events.includes && nc.events.includes(eventName));\n};\n\nconst getNoConflict = () => {\n\tif (noConflict === undefined) {\n\t\tnoConflict = getConfiguredNoConflict();\n\t}\n\n\treturn noConflict;\n};\n\nconst skipOriginalEvent = eventName => {\n\tconst nc = getNoConflict();\n\n\t// Always fire these events\n\tif (shouldFireOriginalEvent(eventName)) {\n\t\treturn false;\n\t}\n\n\t// Read from the configuration\n\tif (nc === true) {\n\t\treturn true;\n\t}\n\n\treturn !shouldNotFireOriginalEvent(eventName);\n};\n\nconst setNoConflict = noConflictData => {\n\tnoConflict = noConflictData;\n};\n\nexport {\n\tgetNoConflict,\n\tsetNoConflict,\n\tskipOriginalEvent,\n};\n","// Note: disabled is present in IE so we explicitly allow it here.\n// Others, such as title/hidden, we explicitly override, so valid too\nconst allowList = [\n\t\"disabled\",\n\t\"title\",\n\t\"hidden\",\n\t\"role\",\n\t\"draggable\",\n];\n\n/**\n * Checks whether a property name is valid (does not collide with existing DOM API properties)\n *\n * @param name\n * @returns {boolean}\n */\nconst isValidPropertyName = name => {\n\tif (allowList.includes(name) || name.startsWith(\"aria\")) {\n\t\treturn true;\n\t}\n\tconst classes = [\n\t\tHTMLElement,\n\t\tElement,\n\t\tNode,\n\t];\n\treturn !classes.some(klass => klass.prototype.hasOwnProperty(name)); // eslint-disable-line\n};\n\nexport default isValidPropertyName;\n","const arraysAreEqual = (arr1, arr2) => {\n\tif (arr1.length !== arr2.length) {\n\t\treturn false;\n\t}\n\n\tfor (let i = 0; i < arr1.length; i++) {\n\t\tif (arr1[i] !== arr2[i]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n};\n\nexport default arraysAreEqual;\n","const getClassCopy = (klass, constructorCallback) => {\n\treturn class classCopy extends klass {\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tconstructorCallback && constructorCallback();\n\t\t}\n\t};\n};\n\nexport default getClassCopy;\n","import merge from \"./thirdparty/merge.js\";\nimport { boot } from \"./Boot.js\";\nimport UI5ElementMetadata from \"./UI5ElementMetadata.js\";\nimport EventProvider from \"./EventProvider.js\";\nimport getSingletonElementInstance from \"./util/getSingletonElementInstance.js\";\nimport StaticAreaItem from \"./StaticAreaItem.js\";\nimport updateShadowRoot from \"./updateShadowRoot.js\";\nimport { renderDeferred, renderImmediately, cancelRender } from \"./Render.js\";\nimport { registerTag, isTagRegistered, recordTagRegistrationFailure } from \"./CustomElementsRegistry.js\";\nimport { observeDOMNode, unobserveDOMNode } from \"./DOMObserver.js\";\nimport { skipOriginalEvent } from \"./config/NoConflict.js\";\nimport getEffectiveDir from \"./locale/getEffectiveDir.js\";\nimport DataType from \"./types/DataType.js\";\nimport { kebabToCamelCase, camelToKebabCase } from \"./util/StringHelper.js\";\nimport isValidPropertyName from \"./util/isValidPropertyName.js\";\nimport isDescendantOf from \"./util/isDescendantOf.js\";\nimport { isSlot, getSlotName, getSlottedElementsList } from \"./util/SlotsHelper.js\";\nimport arraysAreEqual from \"./util/arraysAreEqual.js\";\nimport getClassCopy from \"./util/getClassCopy.js\";\nimport { markAsRtlAware } from \"./locale/RTLAwareRegistry.js\";\nimport preloadLinks from \"./theming/preloadLinks.js\";\n\nlet autoId = 0;\n\nconst elementTimeouts = new Map();\nconst uniqueDependenciesCache = new Map();\n\n/**\n * Triggers re-rendering of a UI5Element instance due to state change.\n *\n * @param changeInfo An object with information about the change that caused invalidation.\n * @private\n */\nfunction _invalidate(changeInfo) {\n\t// Invalidation should be suppressed: 1) before the component is rendered for the first time 2) and during the execution of onBeforeRendering\n\t// This is necessary not only as an optimization, but also to avoid infinite loops on invalidation between children and parents (when invalidateOnChildChange is used)\n\tif (this._suppressInvalidation) {\n\t\treturn;\n\t}\n\n\t// Call the onInvalidation hook\n\tthis.onInvalidation(changeInfo);\n\n\tthis._changedState.push(changeInfo);\n\trenderDeferred(this);\n\tthis._eventProvider.fireEvent(\"invalidate\", { ...changeInfo, target: this });\n}\n\n/**\n * Base class for all UI5 Web Components\n *\n * @class\n * @constructor\n * @author SAP SE\n * @alias sap.ui.webcomponents.base.UI5Element\n * @extends HTMLElement\n * @public\n */\nclass UI5Element extends HTMLElement {\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._changedState = []; // Filled on each invalidation, cleared on re-render (used for debugging)\n\t\tthis._suppressInvalidation = true; // A flag telling whether all invalidations should be ignored. Initialized with \"true\" because a UI5Element can not be invalidated until it is rendered for the first time\n\t\tthis._inDOM = false; // A flag telling whether the UI5Element is currently in the DOM tree of the document or not\n\t\tthis._fullyConnected = false; // A flag telling whether the UI5Element's onEnterDOM hook was called (since it's possible to have the element removed from DOM before that)\n\t\tthis._childChangeListeners = new Map(); // used to store lazy listeners per slot for the child change event of every child inside that slot\n\t\tthis._slotChangeListeners = new Map(); // used to store lazy listeners per slot for the slotchange event of all slot children inside that slot\n\t\tthis._eventProvider = new EventProvider(); // used by parent components for listening to changes to child components\n\t\tlet deferredResolve;\n\t\tthis._domRefReadyPromise = new Promise(resolve => {\n\t\t\tdeferredResolve = resolve;\n\t\t});\n\t\tthis._domRefReadyPromise._deferredResolve = deferredResolve;\n\n\t\tthis._initializeState();\n\t\tthis._upgradeAllProperties();\n\n\t\tif (this.constructor._needsShadowDOM()) {\n\t\t\tthis.attachShadow({ mode: \"open\" });\n\t\t}\n\t}\n\n\t/**\n\t * Returns a unique ID for this UI5 Element\n\t *\n\t * @deprecated - This property is not guaranteed in future releases\n\t * @protected\n\t */\n\tget _id() {\n\t\tif (!this.__id) {\n\t\t\tthis.__id = `ui5wc_${++autoId}`;\n\t\t}\n\n\t\treturn this.__id;\n\t}\n\n\t/**\n\t * Do not call this method from derivatives of UI5Element, use \"onEnterDOM\" only\n\t * @private\n\t */\n\tasync connectedCallback() {\n\t\tthis.setAttribute(this.constructor.getMetadata().getPureTag(), \"\");\n\t\tif (this.constructor.getMetadata().supportsF6FastNavigation()) {\n\t\t\tthis.setAttribute(\"data-sap-ui-fastnavgroup\", \"true\");\n\t\t}\n\n\t\tconst slotsAreManaged = this.constructor.getMetadata().slotsAreManaged();\n\n\t\tthis._inDOM = true;\n\n\t\tif (slotsAreManaged) {\n\t\t\t// always register the observer before yielding control to the main thread (await)\n\t\t\tthis._startObservingDOMChildren();\n\t\t\tawait this._processChildren();\n\t\t}\n\n\t\tif (!this._inDOM) { // Component removed from DOM while _processChildren was running\n\t\t\treturn;\n\t\t}\n\n\t\trenderImmediately(this);\n\t\tthis._domRefReadyPromise._deferredResolve();\n\t\tthis._fullyConnected = true;\n\t\tif (typeof this.onEnterDOM === \"function\") {\n\t\t\tthis.onEnterDOM();\n\t\t}\n\t}\n\n\t/**\n\t * Do not call this method from derivatives of UI5Element, use \"onExitDOM\" only\n\t * @private\n\t */\n\tdisconnectedCallback() {\n\t\tconst slotsAreManaged = this.constructor.getMetadata().slotsAreManaged();\n\n\t\tthis._inDOM = false;\n\n\t\tif (slotsAreManaged) {\n\t\t\tthis._stopObservingDOMChildren();\n\t\t}\n\n\t\tif (this._fullyConnected) {\n\t\t\tif (typeof this.onExitDOM === \"function\") {\n\t\t\t\tthis.onExitDOM();\n\t\t\t}\n\t\t\tthis._fullyConnected = false;\n\t\t}\n\n\t\tif (this.staticAreaItem && this.staticAreaItem.parentElement) {\n\t\t\tthis.staticAreaItem.parentElement.removeChild(this.staticAreaItem);\n\t\t}\n\n\t\tcancelRender(this);\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_startObservingDOMChildren() {\n\t\tconst shouldObserveChildren = this.constructor.getMetadata().hasSlots();\n\t\tif (!shouldObserveChildren) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst canSlotText = this.constructor.getMetadata().canSlotText();\n\t\tconst mutationObserverOptions = {\n\t\t\tchildList: true,\n\t\t\tsubtree: canSlotText,\n\t\t\tcharacterData: canSlotText,\n\t\t};\n\t\tobserveDOMNode(this, this._processChildren.bind(this), mutationObserverOptions);\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_stopObservingDOMChildren() {\n\t\tunobserveDOMNode(this);\n\t}\n\n\t/**\n\t * Note: this method is also manually called by \"compatibility/patchNodeValue.js\"\n\t * @private\n\t */\n\tasync _processChildren() {\n\t\tconst hasSlots = this.constructor.getMetadata().hasSlots();\n\t\tif (hasSlots) {\n\t\t\tawait this._updateSlots();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tasync _updateSlots() {\n\t\tconst slotsMap = this.constructor.getMetadata().getSlots();\n\t\tconst canSlotText = this.constructor.getMetadata().canSlotText();\n\t\tconst domChildren = Array.from(canSlotText ? this.childNodes : this.children);\n\n\t\tconst slotsCachedContentMap = new Map(); // Store here the content of each slot before the mutation occurred\n\t\tconst propertyNameToSlotMap = new Map(); // Used for reverse lookup to determine to which slot the property name corresponds\n\n\t\t// Init the _state object based on the supported slots and store the previous values\n\t\tfor (const [slotName, slotData] of Object.entries(slotsMap)) { // eslint-disable-line\n\t\t\tconst propertyName = slotData.propertyName || slotName;\n\t\t\tpropertyNameToSlotMap.set(propertyName, slotName);\n\t\t\tslotsCachedContentMap.set(propertyName, [...this._state[propertyName]]);\n\t\t\tthis._clearSlot(slotName, slotData);\n\t\t}\n\n\t\tconst autoIncrementMap = new Map();\n\t\tconst slottedChildrenMap = new Map();\n\n\t\tconst allChildrenUpgraded = domChildren.map(async (child, idx) => {\n\t\t\t// Determine the type of the child (mainly by the slot attribute)\n\t\t\tconst slotName = getSlotName(child);\n\t\t\tconst slotData = slotsMap[slotName];\n\n\t\t\t// Check if the slotName is supported\n\t\t\tif (slotData === undefined) {\n\t\t\t\tconst validValues = Object.keys(slotsMap).join(\", \");\n\t\t\t\tconsole.warn(`Unknown slotName: ${slotName}, ignoring`, child, `Valid values are: ${validValues}`); // eslint-disable-line\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For children that need individual slots, calculate them\n\t\t\tif (slotData.individualSlots) {\n\t\t\t\tconst nextIndex = (autoIncrementMap.get(slotName) || 0) + 1;\n\t\t\t\tautoIncrementMap.set(slotName, nextIndex);\n\t\t\t\tchild._individualSlot = `${slotName}-${nextIndex}`;\n\t\t\t}\n\n\t\t\t// Await for not-yet-defined custom elements\n\t\t\tif (child instanceof HTMLElement) {\n\t\t\t\tconst localName = child.localName;\n\t\t\t\tconst isCustomElement = localName.includes(\"-\");\n\t\t\t\tif (isCustomElement) {\n\t\t\t\t\tconst isDefined = window.customElements.get(localName);\n\t\t\t\t\tif (!isDefined) {\n\t\t\t\t\t\tconst whenDefinedPromise = window.customElements.whenDefined(localName); // Class registered, but instances not upgraded yet\n\t\t\t\t\t\tlet timeoutPromise = elementTimeouts.get(localName);\n\t\t\t\t\t\tif (!timeoutPromise) {\n\t\t\t\t\t\t\ttimeoutPromise = new Promise(resolve => setTimeout(resolve, 1000));\n\t\t\t\t\t\t\telementTimeouts.set(localName, timeoutPromise);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tawait Promise.race([whenDefinedPromise, timeoutPromise]);\n\t\t\t\t\t}\n\t\t\t\t\twindow.customElements.upgrade(child);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchild = this.constructor.getMetadata().constructor.validateSlotValue(child, slotData);\n\n\t\t\t// Listen for any invalidation on the child if invalidateOnChildChange is true or an object (ignore when false or not set)\n\t\t\tif (child.isUI5Element && slotData.invalidateOnChildChange) {\n\t\t\t\tconst method = (child.attachInvalidate || child._attachChange).bind(child);\n\t\t\t\tmethod(this._getChildChangeListener(slotName));\n\t\t\t}\n\n\t\t\t// Listen for the slotchange event if the child is a slot itself\n\t\t\tif (isSlot(child)) {\n\t\t\t\tthis._attachSlotChange(child, slotName);\n\t\t\t}\n\n\t\t\tconst propertyName = slotData.propertyName || slotName;\n\n\t\t\tif (slottedChildrenMap.has(propertyName)) {\n\t\t\t\tslottedChildrenMap.get(propertyName).push({ child, idx });\n\t\t\t} else {\n\t\t\t\tslottedChildrenMap.set(propertyName, [{ child, idx }]);\n\t\t\t}\n\t\t});\n\n\t\tawait Promise.all(allChildrenUpgraded);\n\n\t\t// Distribute the child in the _state object, keeping the Light DOM order,\n\t\t// not the order elements are defined.\n\t\tslottedChildrenMap.forEach((children, propertyName) => {\n\t\t\tthis._state[propertyName] = children.sort((a, b) => a.idx - b.idx).map(_ => _.child);\n\t\t});\n\n\t\t// Compare the content of each slot with the cached values and invalidate for the ones that changed\n\t\tlet invalidated = false;\n\t\tfor (const [slotName, slotData] of Object.entries(slotsMap)) { // eslint-disable-line\n\t\t\tconst propertyName = slotData.propertyName || slotName;\n\t\t\tif (!arraysAreEqual(slotsCachedContentMap.get(propertyName), this._state[propertyName])) {\n\t\t\t\t_invalidate.call(this, {\n\t\t\t\t\ttype: \"slot\",\n\t\t\t\t\tname: propertyNameToSlotMap.get(propertyName),\n\t\t\t\t\treason: \"children\",\n\t\t\t\t});\n\t\t\t\tinvalidated = true;\n\t\t\t}\n\t\t}\n\n\t\t// If none of the slots had an invalidation due to changes to immediate children,\n\t\t// the change is considered to be text content of the default slot\n\t\tif (!invalidated) {\n\t\t\t_invalidate.call(this, {\n\t\t\t\ttype: \"slot\",\n\t\t\t\tname: \"default\",\n\t\t\t\treason: \"textcontent\",\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Removes all children from the slot and detaches listeners, if any\n\t * @private\n\t */\n\t_clearSlot(slotName, slotData) {\n\t\tconst propertyName = slotData.propertyName || slotName;\n\t\tconst children = this._state[propertyName];\n\n\t\tchildren.forEach(child => {\n\t\t\tif (child && child.isUI5Element) {\n\t\t\t\tconst method = (child.detachInvalidate || child._detachChange).bind(child);\n\t\t\t\tmethod(this._getChildChangeListener(slotName));\n\t\t\t}\n\n\t\t\tif (isSlot(child)) {\n\t\t\t\tthis._detachSlotChange(child, slotName);\n\t\t\t}\n\t\t});\n\n\t\tthis._state[propertyName] = [];\n\t}\n\n\t/**\n\t * Attach a callback that will be executed whenever the component is invalidated\n\t *\n\t * @param callback\n\t * @public\n\t */\n\tattachInvalidate(callback) {\n\t\tthis._eventProvider.attachEvent(\"invalidate\", callback);\n\t}\n\n\t/**\n\t * Detach the callback that is executed whenever the component is invalidated\n\t *\n\t * @param callback\n\t * @public\n\t */\n\tdetachInvalidate(callback) {\n\t\tthis._eventProvider.detachEvent(\"invalidate\", callback);\n\t}\n\n\t/**\n\t * Callback that is executed whenever a monitored child changes its state\n\t *\n\t * @param slotName the slot in which a child was invalidated\n\t * @param childChangeInfo the changeInfo object for the child in the given slot\n\t * @private\n\t */\n\t_onChildChange(slotName, childChangeInfo) {\n\t\tif (!this.constructor.getMetadata().shouldInvalidateOnChildChange(slotName, childChangeInfo.type, childChangeInfo.name)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// The component should be invalidated as this type of change on the child is listened for\n\t\t// However, no matter what changed on the child (property/slot), the invalidation is registered as \"type=slot\" for the component itself\n\t\t_invalidate.call(this, {\n\t\t\ttype: \"slot\",\n\t\t\tname: slotName,\n\t\t\treason: \"childchange\",\n\t\t\tchild: childChangeInfo.target,\n\t\t});\n\t}\n\n\t/**\n\t * Do not override this method in derivatives of UI5Element\n\t * @private\n\t */\n\tattributeChangedCallback(name, oldValue, newValue) {\n\t\tconst properties = this.constructor.getMetadata().getProperties();\n\t\tconst realName = name.replace(/^ui5-/, \"\");\n\t\tconst nameInCamelCase = kebabToCamelCase(realName);\n\t\tif (properties.hasOwnProperty(nameInCamelCase)) { // eslint-disable-line\n\t\t\tconst propertyTypeClass = properties[nameInCamelCase].type;\n\t\t\tif (propertyTypeClass === Boolean) {\n\t\t\t\tnewValue = newValue !== null;\n\t\t\t} else if (isDescendantOf(propertyTypeClass, DataType)) {\n\t\t\t\tnewValue = propertyTypeClass.attributeToProperty(newValue);\n\t\t\t}\n\t\t\tthis[nameInCamelCase] = newValue;\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_updateAttribute(name, newValue) {\n\t\tif (!this.constructor.getMetadata().hasAttribute(name)) {\n\t\t\treturn;\n\t\t}\n\t\tconst properties = this.constructor.getMetadata().getProperties();\n\t\tconst propertyTypeClass = properties[name].type;\n\t\tconst attrName = camelToKebabCase(name);\n\t\tconst attrValue = this.getAttribute(attrName);\n\n\t\tif (propertyTypeClass === Boolean) {\n\t\t\tif (newValue === true && attrValue === null) {\n\t\t\t\tthis.setAttribute(attrName, \"\");\n\t\t\t} else if (newValue === false && attrValue !== null) {\n\t\t\t\tthis.removeAttribute(attrName);\n\t\t\t}\n\t\t} else if (isDescendantOf(propertyTypeClass, DataType)) {\n\t\t\tthis.setAttribute(attrName, propertyTypeClass.propertyToAttribute(newValue));\n\t\t} else if (typeof newValue !== \"object\") {\n\t\t\tif (attrValue !== newValue) {\n\t\t\t\tthis.setAttribute(attrName, newValue);\n\t\t\t}\n\t\t} // else { return; } // old object handling\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_upgradeProperty(prop) {\n\t\tif (this.hasOwnProperty(prop)) { // eslint-disable-line\n\t\t\tconst value = this[prop];\n\t\t\tdelete this[prop];\n\t\t\tthis[prop] = value;\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_upgradeAllProperties() {\n\t\tconst allProps = this.constructor.getMetadata().getPropertiesList();\n\t\tallProps.forEach(this._upgradeProperty, this);\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_initializeState() {\n\t\tthis._state = { ...this.constructor.getMetadata().getInitialState() };\n\t}\n\n\t/**\n\t * Returns a singleton event listener for the \"change\" event of a child in a given slot\n\t *\n\t * @param slotName the name of the slot, where the child is\n\t * @returns {any}\n\t * @private\n\t */\n\t_getChildChangeListener(slotName) {\n\t\tif (!this._childChangeListeners.has(slotName)) {\n\t\t\tthis._childChangeListeners.set(slotName, this._onChildChange.bind(this, slotName));\n\t\t}\n\t\treturn this._childChangeListeners.get(slotName);\n\t}\n\n\t/**\n\t * Returns a singleton slotchange event listener that invalidates the component due to changes in the given slot\n\t *\n\t * @param slotName the name of the slot, where the slot element (whose slotchange event we're listening to) is\n\t * @returns {any}\n\t * @private\n\t */\n\t_getSlotChangeListener(slotName) {\n\t\tif (!this._slotChangeListeners.has(slotName)) {\n\t\t\tthis._slotChangeListeners.set(slotName, this._onSlotChange.bind(this, slotName));\n\t\t}\n\t\treturn this._slotChangeListeners.get(slotName);\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_attachSlotChange(child, slotName) {\n\t\tchild.addEventListener(\"slotchange\", this._getSlotChangeListener(slotName));\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_detachSlotChange(child, slotName) {\n\t\tchild.removeEventListener(\"slotchange\", this._getSlotChangeListener(slotName));\n\t}\n\n\t/**\n\t * Whenever a slot element is slotted inside a UI5 Web Component, its slotchange event invalidates the component\n\t *\n\t * @param slotName the name of the slot, where the slot element (whose slotchange event we're listening to) is\n\t * @private\n\t */\n\t_onSlotChange(slotName) {\n\t\t_invalidate.call(this, {\n\t\t\ttype: \"slot\",\n\t\t\tname: slotName,\n\t\t\treason: \"slotchange\",\n\t\t});\n\t}\n\n\t/**\n\t * A callback that is executed each time an already rendered component is invalidated (scheduled for re-rendering)\n\t *\n\t * @param changeInfo An object with information about the change that caused invalidation.\n\t * The object can have the following properties:\n\t * - type: (property|slot) tells what caused the invalidation\n\t * 1) property: a property value was changed either directly or as a result of changing the corresponding attribute\n\t * 2) slot: a slotted node(nodes) changed in one of several ways (see \"reason\")\n\t *\n\t * - name: the name of the property or slot that caused the invalidation\n\t *\n\t * - reason: (children|textcontent|childchange|slotchange) relevant only for type=\"slot\" only and tells exactly what changed in the slot\n\t * 1) children: immediate children (HTML elements or text nodes) were added, removed or reordered in the slot\n\t * 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\"\n\t * 3) slotchange: a slot element, slotted inside that slot had its \"slotchange\" event listener called. This practically means that transitively slotted children changed.\n\t * Can only trigger if the child of a slot is a slot element itself.\n\t * 4) childchange: indicates that a UI5Element child in that slot was invalidated and in turn invalidated the component.\n\t * Can only trigger for slots with \"invalidateOnChildChange\" metadata descriptor\n\t *\n\t * - newValue: the new value of the property (for type=\"property\" only)\n\t *\n\t * - oldValue: the old value of the property (for type=\"property\" only)\n\t *\n\t * - child the child that was changed (for type=\"slot\" and reason=\"childchange\" only)\n\t *\n\t * @public\n\t */\n\tonInvalidation(changeInfo) {}\n\n\t/**\n\t * Do not call this method directly, only intended to be called by js\n\t * @protected\n\t */\n\t_render() {\n\t\tconst hasIndividualSlots = this.constructor.getMetadata().hasIndividualSlots();\n\n\t\t// suppress invalidation to prevent state changes scheduling another rendering\n\t\tthis._suppressInvalidation = true;\n\n\t\tif (typeof this.onBeforeRendering === \"function\") {\n\t\t\tthis.onBeforeRendering();\n\t\t}\n\n\t\t// Intended for framework usage only. Currently ItemNavigation updates tab indexes after the component has updated its state but before the template is rendered\n\t\tif (this._onComponentStateFinalized) {\n\t\t\tthis._onComponentStateFinalized();\n\t\t}\n\n\t\t// resume normal invalidation handling\n\t\tthis._suppressInvalidation = false;\n\n\t\t// Update the shadow root with the render result\n\t\t/*\n\t\tif (this._changedState.length) {\n\t\t\tlet element = this.localName;\n\t\t\tif (this.id) {\n\t\t\t\telement = `${element}#${this.id}`;\n\t\t\t}\n\t\t\tconsole.log(\"Re-rendering:\", element, this._changedState.map(x => { // eslint-disable-line\n\t\t\t\tlet res = `${x.type}`;\n\t\t\t\tif (x.reason) {\n\t\t\t\t\tres = `${res}(${x.reason})`;\n\t\t\t\t}\n\t\t\t\tres = `${res}: ${x.name}`;\n\t\t\t\tif (x.type === \"property\") {\n\t\t\t\t\tres = `${res} ${x.oldValue} => ${x.newValue}`;\n\t\t\t\t}\n\n\t\t\t\treturn res;\n\t\t\t}));\n\t\t}\n\t\t*/\n\t\tthis._changedState = [];\n\n\t\t// Update shadow root and static area item\n\t\tif (this.constructor._needsShadowDOM()) {\n\t\t\tupdateShadowRoot(this);\n\t\t}\n\t\tif (this.staticAreaItem) {\n\t\t\tthis.staticAreaItem.update();\n\t\t}\n\n\t\t// Safari requires that children get the slot attribute only after the slot tags have been rendered in the shadow DOM\n\t\tif (hasIndividualSlots) {\n\t\t\tthis._assignIndividualSlotsToChildren();\n\t\t}\n\n\t\t// Call the onAfterRendering hook\n\t\tif (typeof this.onAfterRendering === \"function\") {\n\t\t\tthis.onAfterRendering();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_assignIndividualSlotsToChildren() {\n\t\tconst domChildren = Array.from(this.children);\n\n\t\tdomChildren.forEach(child => {\n\t\t\tif (child._individualSlot) {\n\t\t\t\tchild.setAttribute(\"slot\", child._individualSlot);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_waitForDomRef() {\n\t\treturn this._domRefReadyPromise;\n\t}\n\n\t/**\n\t * Returns the DOM Element inside the Shadow Root that corresponds to the opening tag in the UI5 Web Component's template\n\t * *Note:* For logical (abstract) elements (items, options, etc...), returns the part of the parent's DOM that represents this option\n\t * Use this method instead of \"this.shadowRoot\" to read the Shadow DOM, if ever necessary\n\t *\n\t * @public\n\t */\n\tgetDomRef() {\n\t\t// If a component set _getRealDomRef to its children, use the return value of this function\n\t\tif (typeof this._getRealDomRef === \"function\") {\n\t\t\treturn this._getRealDomRef();\n\t\t}\n\n\t\tif (!this.shadowRoot || this.shadowRoot.children.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst children = [...this.shadowRoot.children].filter(child => ![\"link\", \"style\"].includes(child.localName));\n\t\tif (children.length !== 1) {\n\t\t\tconsole.warn(`The shadow DOM for ${this.constructor.getMetadata().getTag()} does not have a top level element, the getDomRef() method might not work as expected`); // eslint-disable-line\n\t\t}\n\n\t\treturn children[0];\n\t}\n\n\t/**\n\t * Returns the DOM Element marked with \"data-sap-focus-ref\" inside the template.\n\t * This is the element that will receive the focus by default.\n\t * @public\n\t */\n\tgetFocusDomRef() {\n\t\tconst domRef = this.getDomRef();\n\t\tif (domRef) {\n\t\t\tconst focusRef = domRef.querySelector(\"[data-sap-focus-ref]\");\n\t\t\treturn focusRef || domRef;\n\t\t}\n\t}\n\n\t/**\n\t * Waits for dom ref and then returns the DOM Element marked with \"data-sap-focus-ref\" inside the template.\n\t * This is the element that will receive the focus by default.\n\t * @public\n\t */\n\tasync getFocusDomRefAsync() {\n\t\tawait this._waitForDomRef();\n\t\treturn this.getFocusDomRef();\n\t}\n\n\t/**\n\t * Set the focus to the element, returned by \"getFocusDomRef()\" (marked by \"data-sap-focus-ref\")\n\t * @public\n\t */\n\tasync focus() {\n\t\tawait this._waitForDomRef();\n\n\t\tconst focusDomRef = this.getFocusDomRef();\n\n\t\tif (focusDomRef && typeof focusDomRef.focus === \"function\") {\n\t\t\tfocusDomRef.focus();\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @public\n\t * @param name - name of the event\n\t * @param data - additional data for the event\n\t * @param cancelable - true, if the user can call preventDefault on the event object\n\t * @param bubbles - true, if the event bubbles\n\t * @returns {boolean} false, if the event was cancelled (preventDefault called), true otherwise\n\t */\n\tfireEvent(name, data, cancelable = false, bubbles = true) {\n\t\tconst eventResult = this._fireEvent(name, data, cancelable, bubbles);\n\t\tconst camelCaseEventName = kebabToCamelCase(name);\n\n\t\tif (camelCaseEventName !== name) {\n\t\t\treturn eventResult && this._fireEvent(camelCaseEventName, data, cancelable);\n\t\t}\n\n\t\treturn eventResult;\n\t}\n\n\t_fireEvent(name, data, cancelable = false, bubbles = true) {\n\t\tconst noConflictEvent = new CustomEvent(`ui5-${name}`, {\n\t\t\tdetail: data,\n\t\t\tcomposed: false,\n\t\t\tbubbles,\n\t\t\tcancelable,\n\t\t});\n\n\t\t// This will be false if the no-conflict event is prevented\n\t\tconst noConflictEventResult = this.dispatchEvent(noConflictEvent);\n\n\t\tif (skipOriginalEvent(name)) {\n\t\t\treturn noConflictEventResult;\n\t\t}\n\n\t\tconst normalEvent = new CustomEvent(name, {\n\t\t\tdetail: data,\n\t\t\tcomposed: false,\n\t\t\tbubbles,\n\t\t\tcancelable,\n\t\t});\n\n\t\t// This will be false if the normal event is prevented\n\t\tconst normalEventResult = this.dispatchEvent(normalEvent);\n\n\t\t// Return false if any of the two events was prevented (its result was false).\n\t\treturn normalEventResult && noConflictEventResult;\n\t}\n\n\t/**\n\t * Returns the actual children, associated with a slot.\n\t * 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.\n\t * @public\n\t */\n\tgetSlottedNodes(slotName) {\n\t\treturn getSlottedElementsList(this[slotName]);\n\t}\n\n\t/**\n\t * Determines whether the component should be rendered in RTL mode or not.\n\t * Returns: \"rtl\", \"ltr\" or undefined\n\t *\n\t * @public\n\t * @returns {String|undefined}\n\t */\n\tget effectiveDir() {\n\t\tmarkAsRtlAware(this.constructor); // if a UI5 Element calls this method, it's considered to be rtl-aware\n\t\treturn getEffectiveDir(this);\n\t}\n\n\t/**\n\t * Used to duck-type UI5 elements without using instanceof\n\t * @returns {boolean}\n\t * @public\n\t */\n\tget isUI5Element() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Do not override this method in derivatives of UI5Element, use metadata properties instead\n\t * @private\n\t */\n\tstatic get observedAttributes() {\n\t\treturn this.getMetadata().getAttributesList();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tstatic _needsShadowDOM() {\n\t\treturn !!this.template;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tstatic _needsStaticArea() {\n\t\treturn !!this.staticAreaTemplate;\n\t}\n\n\t/**\n\t * @public\n\t */\n\tgetStaticAreaItemDomRef() {\n\t\tif (!this.constructor._needsStaticArea()) {\n\t\t\tthrow new Error(\"This component does not use the static area\");\n\t\t}\n\n\t\tif (!this.staticAreaItem) {\n\t\t\tthis.staticAreaItem = StaticAreaItem.createInstance();\n\t\t\tthis.staticAreaItem.setOwnerElement(this);\n\t\t}\n\t\tif (!this.staticAreaItem.parentElement) {\n\t\t\tgetSingletonElementInstance(\"ui5-static-area\").appendChild(this.staticAreaItem);\n\t\t}\n\n\t\treturn this.staticAreaItem.getDomRef();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tstatic _generateAccessors() {\n\t\tconst proto = this.prototype;\n\t\tconst slotsAreManaged = this.getMetadata().slotsAreManaged();\n\n\t\t// Properties\n\t\tconst properties = this.getMetadata().getProperties();\n\t\tfor (const [prop, propData] of Object.entries(properties)) { // eslint-disable-line\n\t\t\tif (!isValidPropertyName(prop)) {\n\t\t\t\tconsole.warn(`\"${prop}\" is not a valid property name. Use a name that does not collide with DOM APIs`); /* eslint-disable-line */\n\t\t\t}\n\n\t\t\tif (propData.type === Boolean && propData.defaultValue) {\n\t\t\t\tthrow new Error(`Cannot set a default value for property \"${prop}\". All booleans are false by default.`);\n\t\t\t}\n\n\t\t\tif (propData.type === Array) {\n\t\t\t\tthrow new Error(`Wrong type for property \"${prop}\". Properties cannot be of type Array - use \"multiple: true\" and set \"type\" to the single value type, such as \"String\", \"Object\", etc...`);\n\t\t\t}\n\n\t\t\tif (propData.type === Object && propData.defaultValue) {\n\t\t\t\tthrow new Error(`Cannot set a default value for property \"${prop}\". All properties of type \"Object\" are empty objects by default.`);\n\t\t\t}\n\n\t\t\tif (propData.multiple && propData.defaultValue) {\n\t\t\t\tthrow new Error(`Cannot set a default value for property \"${prop}\". All multiple properties are empty arrays by default.`);\n\t\t\t}\n\n\t\t\tObject.defineProperty(proto, prop, {\n\t\t\t\tget() {\n\t\t\t\t\tif (this._state[prop] !== undefined) {\n\t\t\t\t\t\treturn this._state[prop];\n\t\t\t\t\t}\n\n\t\t\t\t\tconst propDefaultValue = propData.defaultValue;\n\n\t\t\t\t\tif (propData.type === Boolean) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (propData.type === String) { // eslint-disable-line\n\t\t\t\t\t\treturn propDefaultValue;\n\t\t\t\t\t} else if (propData.multiple) { // eslint-disable-line\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn propDefaultValue;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tset(value) {\n\t\t\t\t\tlet isDifferent;\n\t\t\t\t\tvalue = this.constructor.getMetadata().constructor.validatePropertyValue(value, propData);\n\n\t\t\t\t\tconst oldState = this._state[prop];\n\t\t\t\t\tif (propData.multiple && propData.compareValues) {\n\t\t\t\t\t\tisDifferent = !arraysAreEqual(oldState, value);\n\t\t\t\t\t} else if (isDescendantOf(propData.type, DataType)) {\n\t\t\t\t\t\tisDifferent = !propData.type.valuesAreEqual(oldState, value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tisDifferent = oldState !== value;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isDifferent) {\n\t\t\t\t\t\tthis._state[prop] = value;\n\t\t\t\t\t\t_invalidate.call(this, {\n\t\t\t\t\t\t\ttype: \"property\",\n\t\t\t\t\t\t\tname: prop,\n\t\t\t\t\t\t\tnewValue: value,\n\t\t\t\t\t\t\toldValue: oldState,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._updateAttribute(prop, value);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t// Slots\n\t\tif (slotsAreManaged) {\n\t\t\tconst slots = this.getMetadata().getSlots();\n\t\t\tfor (const [slotName, slotData] of Object.entries(slots)) { // eslint-disable-line\n\t\t\t\tif (!isValidPropertyName(slotName)) {\n\t\t\t\t\tconsole.warn(`\"${slotName}\" is not a valid property name. Use a name that does not collide with DOM APIs`); /* eslint-disable-line */\n\t\t\t\t}\n\n\t\t\t\tconst propertyName = slotData.propertyName || slotName;\n\t\t\t\tObject.defineProperty(proto, propertyName, {\n\t\t\t\t\tget() {\n\t\t\t\t\t\tif (this._state[propertyName] !== undefined) {\n\t\t\t\t\t\t\treturn this._state[propertyName];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t},\n\t\t\t\t\tset() {\n\t\t\t\t\t\tthrow new Error(\"Cannot set slot content directly, use the DOM APIs (appendChild, removeChild, etc...)\");\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns the metadata object for this UI5 Web Component Class\n\t * @protected\n\t */\n\tstatic get metadata() {\n\t\treturn {};\n\t}\n\n\t/**\n\t * Returns the CSS for this UI5 Web Component Class\n\t * @protected\n\t */\n\tstatic get styles() {\n\t\treturn \"\";\n\t}\n\n\t/**\n\t * Returns the Static Area CSS for this UI5 Web Component Class\n\t * @protected\n\t */\n\tstatic get staticAreaStyles() {\n\t\treturn \"\";\n\t}\n\n\t/**\n\t * Returns an array with the dependencies for this UI5 Web Component, which could be:\n\t * - composed components (used in its shadow root or static area item)\n\t * - slotted components that the component may need to communicate with\n\t *\n\t * @protected\n\t */\n\tstatic get dependencies() {\n\t\treturn [];\n\t}\n\n\t/**\n\t * Returns a list of the unique dependencies for this UI5 Web Component\n\t *\n\t * @public\n\t */\n\tstatic getUniqueDependencies() {\n\t\tif (!uniqueDependenciesCache.has(this)) {\n\t\t\tconst filtered = this.dependencies.filter((dep, index, deps) => deps.indexOf(dep) === index);\n\t\t\tuniqueDependenciesCache.set(this, filtered);\n\t\t}\n\n\t\treturn uniqueDependenciesCache.get(this);\n\t}\n\n\t/**\n\t * Returns a promise that resolves whenever all dependencies for this UI5 Web Component have resolved\n\t *\n\t * @returns {Promise<any[]>}\n\t */\n\tstatic whenDependenciesDefined() {\n\t\treturn Promise.all(this.getUniqueDependencies().map(dep => dep.define()));\n\t}\n\n\t/**\n\t * Hook that will be called upon custom element definition\n\t *\n\t * @protected\n\t * @returns {Promise<void>}\n\t */\n\tstatic async onDefine() {\n\t\treturn Promise.resolve();\n\t}\n\n\t/**\n\t * Registers a UI5 Web Component in the browser window object\n\t * @public\n\t * @returns {Promise<UI5Element>}\n\t */\n\tstatic async define() {\n\t\tawait boot();\n\n\t\tawait Promise.all([\n\t\t\tthis.whenDependenciesDefined(),\n\t\t\tthis.onDefine(),\n\t\t]);\n\n\t\tconst tag = this.getMetadata().getTag();\n\t\tconst altTag = this.getMetadata().getAltTag();\n\n\t\tconst definedLocally = isTagRegistered(tag);\n\t\tconst definedGlobally = customElements.get(tag);\n\n\t\tif (definedGlobally && !definedLocally) {\n\t\t\trecordTagRegistrationFailure(tag);\n\t\t} else if (!definedGlobally) {\n\t\t\tthis._generateAccessors();\n\t\t\tregisterTag(tag);\n\t\t\twindow.customElements.define(tag, this);\n\t\t\tpreloadLinks(this);\n\n\t\t\tif (altTag && !customElements.get(altTag)) {\n\t\t\t\tregisterTag(altTag);\n\t\t\t\twindow.customElements.define(altTag, getClassCopy(this, () => {\n\t\t\t\t\tconsole.log(`The ${altTag} tag is deprecated and will be removed in the next release, please use ${tag} instead.`); // eslint-disable-line\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns an instance of UI5ElementMetadata.js representing this UI5 Web Component's full metadata (its and its parents')\n\t * Note: not to be confused with the \"get metadata()\" method, which returns an object for this class's metadata only\n\t * @public\n\t * @returns {UI5ElementMetadata}\n\t */\n\tstatic getMetadata() {\n\t\tif (this.hasOwnProperty(\"_metadata\")) { // eslint-disable-line\n\t\t\treturn this._metadata;\n\t\t}\n\n\t\tconst metadataObjects = [this.metadata];\n\t\tlet klass = this; // eslint-disable-line\n\t\twhile (klass !== UI5Element) {\n\t\t\tklass = Object.getPrototypeOf(klass);\n\t\t\tmetadataObjects.unshift(klass.metadata);\n\t\t}\n\t\tconst mergedMetadata = merge({}, ...metadataObjects);\n\n\t\tthis._metadata = new UI5ElementMetadata(mergedMetadata);\n\t\treturn this._metadata;\n\t}\n}\n\nexport default UI5Element;\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar t;const i=globalThis.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=`lit$${(Math.random()+\"\").slice(9)}$`,o=\"?\"+e,n=`<${o}>`,l=document,h=(t=\"\")=>l.createComment(t),r=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,d=Array.isArray,u=t=>{var i;return d(t)||\"function\"==typeof(null===(i=t)||void 0===i?void 0:i[Symbol.iterator])},c=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,a=/>/g,f=/>|[ \t\\n\f\\r](?:([^\\s\"'>=/]+)([ \t\\n\f\\r]*=[ \t\\n\f\\r]*(?:[^ \t\\n\f\\r\"'`<>=]|(\"|')|))|$)/g,_=/'/g,m=/\"/g,g=/^(?:script|style|textarea)$/i,$=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),p=$(1),y=$(2),b=Symbol.for(\"lit-noChange\"),T=Symbol.for(\"lit-nothing\"),x=new WeakMap,w=(t,i,s)=>{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let l=n._$litPart$;if(void 0===l){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=l=new N(i.insertBefore(h(),t),t,void 0,null!=s?s:{})}return l._$AI(t),l},A=l.createTreeWalker(l,129,null,!1),C=(t,i)=>{const o=t.length-1,l=[];let h,r=2===i?\"<svg>\":\"\",d=c;for(let i=0;i<o;i++){const s=t[i];let o,u,$=-1,p=0;for(;p<s.length&&(d.lastIndex=p,u=d.exec(s),null!==u);)p=d.lastIndex,d===c?\"!--\"===u[1]?d=v:void 0!==u[1]?d=a:void 0!==u[2]?(g.test(u[2])&&(h=RegExp(\"</\"+u[2],\"g\")),d=f):void 0!==u[3]&&(d=f):d===f?\">\"===u[0]?(d=null!=h?h:c,$=-1):void 0===u[1]?$=-2:($=d.lastIndex-u[2].length,o=u[1],d=void 0===u[3]?f:'\"'===u[3]?m:_):d===m||d===_?d=f:d===v||d===a?d=c:(d=f,h=void 0);const y=d===f&&t[i+1].startsWith(\"/>\")?\" \":\"\";r+=d===c?s+n:$>=0?(l.push(o),s.slice(0,$)+\"$lit$\"+s.slice($)+e+y):s+e+(-2===$?(l.push(void 0),i):y)}const u=r+(t[o]||\"<?>\")+(2===i?\"</svg>\":\"\");return[void 0!==s?s.createHTML(u):u,l]};class P{constructor({strings:t,_$litType$:s},n){let l;this.parts=[];let r=0,d=0;const u=t.length-1,c=this.parts,[v,a]=C(t,s);if(this.el=P.createElement(v,n),A.currentNode=this.el.content,2===s){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(l=A.nextNode())&&c.length<u;){if(1===l.nodeType){if(l.hasAttributes()){const t=[];for(const i of l.getAttributeNames())if(i.endsWith(\"$lit$\")||i.startsWith(e)){const s=a[d++];if(t.push(i),void 0!==s){const t=l.getAttribute(s.toLowerCase()+\"$lit$\").split(e),i=/([.?@])?(.*)/.exec(s);c.push({type:1,index:r,name:i[2],strings:t,ctor:\".\"===i[1]?M:\"?\"===i[1]?k:\"@\"===i[1]?H:S})}else c.push({type:6,index:r})}for(const i of t)l.removeAttribute(i)}if(g.test(l.tagName)){const t=l.textContent.split(e),s=t.length-1;if(s>0){l.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)l.append(t[i],h()),A.nextNode(),c.push({type:2,index:++r});l.append(t[s],h())}}}else if(8===l.nodeType)if(l.data===o)c.push({type:2,index:r});else{let t=-1;for(;-1!==(t=l.data.indexOf(e,t+1));)c.push({type:7,index:r}),t+=e.length-1}r++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function V(t,i,s=t,e){var o,n,l,h;if(i===b)return i;let d=void 0!==e?null===(o=s._$Cl)||void 0===o?void 0:o[e]:s._$Cu;const u=r(i)?void 0:i._$litDirective$;return(null==d?void 0:d.constructor)!==u&&(null===(n=null==d?void 0:d._$AO)||void 0===n||n.call(d,!1),void 0===u?d=void 0:(d=new u(t),d._$AT(t,s,e)),void 0!==e?(null!==(l=(h=s)._$Cl)&&void 0!==l?l:h._$Cl=[])[e]=d:s._$Cu=d),void 0!==d&&(i=V(t,d._$AS(t,i.values),d,e)),i}class E{constructor(t,i){this.v=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(t){var i;const{el:{content:s},parts:e}=this._$AD,o=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:l).importNode(s,!0);A.currentNode=o;let n=A.nextNode(),h=0,r=0,d=e[0];for(;void 0!==d;){if(h===d.index){let i;2===d.type?i=new N(n,n.nextSibling,this,t):1===d.type?i=new d.ctor(n,d.name,d.strings,this,t):6===d.type&&(i=new I(n,this,t)),this.v.push(i),d=e[++r]}h!==(null==d?void 0:d.index)&&(n=A.nextNode(),h++)}return o}m(t){let i=0;for(const s of this.v)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class N{constructor(t,i,s,e){var o;this.type=2,this._$AH=T,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cg=null===(o=null==e?void 0:e.isConnected)||void 0===o||o}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cg}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=V(this,t,i),r(t)?t===T||null==t||\"\"===t?(this._$AH!==T&&this._$AR(),this._$AH=T):t!==this._$AH&&t!==b&&this.$(t):void 0!==t._$litType$?this.T(t):void 0!==t.nodeType?this.S(t):u(t)?this.M(t):this.$(t)}A(t,i=this._$AB){return this._$AA.parentNode.insertBefore(t,i)}S(t){this._$AH!==t&&(this._$AR(),this._$AH=this.A(t))}$(t){this._$AH!==T&&r(this._$AH)?this._$AA.nextSibling.data=t:this.S(l.createTextNode(t)),this._$AH=t}T(t){var i;const{values:s,_$litType$:e}=t,o=\"number\"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=P.createElement(e.h,this.options)),e);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===o)this._$AH.m(s);else{const t=new E(o,this),i=t.p(this.options);t.m(s),this.S(i),this._$AH=t}}_$AC(t){let i=x.get(t.strings);return void 0===i&&x.set(t.strings,i=new P(t)),i}M(t){d(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const o of t)e===i.length?i.push(s=new N(this.A(h()),this.A(h()),this,this.options)):s=i[e],s._$AI(o),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){var s;for(null===(s=this._$AP)||void 0===s||s.call(this,!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var i;void 0===this._$AM&&(this._$Cg=t,null===(i=this._$AP)||void 0===i||i.call(this,t))}}class S{constructor(t,i,s,e,o){this.type=1,this._$AH=T,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=o,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=T}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=V(this,t,i,0),n=!r(t)||t!==this._$AH&&t!==b,n&&(this._$AH=t);else{const e=t;let l,h;for(t=o[0],l=0;l<o.length-1;l++)h=V(this,e[s+l],i,l),h===b&&(h=this._$AH[l]),n||(n=!r(h)||h!==this._$AH[l]),h===T?t=T:t!==T&&(t+=(null!=h?h:\"\")+o[l+1]),this._$AH[l]=h}n&&!e&&this.k(t)}k(t){t===T?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:\"\")}}class M extends S{constructor(){super(...arguments),this.type=3}k(t){this.element[this.name]=t===T?void 0:t}}class k extends S{constructor(){super(...arguments),this.type=4}k(t){t&&t!==T?this.element.setAttribute(this.name,\"\"):this.element.removeAttribute(this.name)}}class H extends S{constructor(t,i,s,e,o){super(t,i,s,e,o),this.type=5}_$AI(t,i=this){var s;if((t=null!==(s=V(this,t,i,0))&&void 0!==s?s:T)===b)return;const e=this._$AH,o=t===T&&e!==T||t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive,n=t!==T&&(e===T||o);o&&this.element.removeEventListener(this.name,this,e),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var i,s;\"function\"==typeof this._$AH?this._$AH.call(null!==(s=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==s?s:this.element,t):this._$AH.handleEvent(t)}}class I{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){V(this,t)}}const L={P:\"$lit$\",V:e,L:o,I:1,N:C,R:E,D:u,j:V,H:N,O:S,F:k,B:H,W:M,Z:I},R=window.litHtmlPolyfillSupport;null==R||R(P,N),(null!==(t=globalThis.litHtmlVersions)&&void 0!==t?t:globalThis.litHtmlVersions=[]).push(\"2.0.1\");export{L as _$LH,p as html,b as noChange,T as nothing,w as render,y as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{html as t,svg as e}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=t=>({_$litStatic$:t}),r=(t,...e)=>({_$litStatic$:e.reduce(((e,o,r)=>e+(t=>{if(void 0!==t._$litStatic$)return t._$litStatic$;throw Error(`Value passed to 'literal' function must be a 'literal' result: ${t}. Use 'unsafeStatic' to pass non-literal values, but\\n take care to ensure page security.`)})(o)+t[r+1]),t[0])}),i=new Map,a=t=>(e,...o)=>{var r;const a=o.length;let l,s;const n=[],u=[];let c,$=0,v=!1;for(;$<a;){for(c=e[$];$<a&&void 0!==(s=o[$],l=null===(r=s)||void 0===r?void 0:r._$litStatic$);)c+=l+e[++$],v=!0;u.push(s),n.push(c),$++}if($===a&&n.push(e[a]),v){const t=n.join(\"$$lit$$\");void 0===(e=i.get(t))&&i.set(t,e=n),o=u}return t(e,...o)},l=a(t),s=a(e);export{l as html,r as literal,s as svg,o as unsafeStatic,a as withStatic};\n//# sourceMappingURL=static.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{nothing as t,noChange as i}from\"../lit-html.js\";import{Directive as r,PartType as s,directive as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends r{constructor(i){if(super(i),this.it=t,i.type!==s.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this.vt=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this.vt;this.it=r;const s=[r];return s.raw=s,this.vt={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=n(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","import { render } from \"lit-html\";\nimport {\n\thtml,\n\tsvg,\n\tunsafeStatic,\n} from \"lit-html/static.js\";\n\nconst litRender = (templateResult, domNode, styleStrOrHrefsArr, { host } = {}) => {\n\tif (typeof styleStrOrHrefsArr === \"string\") {\n\t\ttemplateResult = html`<style>${styleStrOrHrefsArr}</style>${templateResult}`;\n\t} else if (Array.isArray(styleStrOrHrefsArr) && styleStrOrHrefsArr.length) {\n\t\ttemplateResult = html`${styleStrOrHrefsArr.map(href => html`<link type=\"text/css\" rel=\"stylesheet\" href=\"${href}\">`)}${templateResult}`;\n\t}\n\trender(templateResult, domNode, { host });\n};\n\nconst scopeTag = (tag, tags, suffix) => {\n\tconst resultTag = suffix && (tags || []).includes(tag) ? `${tag}-${suffix}` : tag;\n\treturn unsafeStatic(resultTag);\n};\n\nexport {\n\thtml,\n\tsvg,\n\tunsafeStatic,\n};\nexport { scopeTag };\nexport { repeat } from \"lit-html/directives/repeat.js\";\nexport { classMap } from \"lit-html/directives/class-map.js\";\nexport { styleMap } from \"./directives/style-map.js\";\nexport { ifDefined } from \"lit-html/directives/if-defined.js\";\nexport { unsafeHTML } from \"lit-html/directives/unsafe-html.js\";\n\nexport default litRender;\n","import UI5Element from \"../../UI5Element.js\";\nimport litRender, { html } from \"../../renderer/LitRenderer.js\";\n\nconst metadata = {\n\ttag: \"ui5-test-generic\",\n\tproperties: {\n\t\tstrProp: {\n\t\t\ttype: String,\n\t\t},\n\t\tboolProp: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tobjectProp: {\n\t\t\ttype: Object,\n\t\t},\n\t\tnoAttributeProp: {\n\t\t\ttype: String,\n\t\t\tnoAttribute: true,\n\t\t},\n\t\tmultiProp: {\n\t\t\ttype: String,\n\t\t\tmultiple: true,\n\t\t},\n\t\tdefaultValueProp: {\n\t\t\ttype: String,\n\t\t\tdefaultValue: \"Hello\",\n\t\t}\n\t},\n\tmanagedSlots: true,\n\tslots: {\n\t\tdefault: {\n\t\t\ttype: Node,\n\t\t},\n\t\tother: {\n\t\t\ttype: HTMLElement,\n\t\t},\n\t\tindividual: {\n\t\t\ttype: HTMLElement,\n\t\t\tindividualSlots: true,\n\t\t},\n\t\tnamed: {\n\t\t\ttype: HTMLElement,\n\t\t\tpropertyName: \"items\",\n\t\t}\n\t}\n};\n\nclass Generic extends UI5Element {\n\tstatic get metadata() {\n\t\treturn metadata;\n\t}\n\n\tstatic get render() {\n\t\treturn litRender;\n\t}\n\n\tstatic get template() {\n\t\treturn element => {\n\t\t\treturn html`<div><p>\n\t\t\t\t<slot></slot>\n\t\t\t\t<slot name=\"other\"></slot>\n\t\t\t\t<slot name=\"individual-1\"></slot>\n\t\t\t\t<slot name=\"individual-2\"></slot>\n\t\t\t</p></div>`;\n\t\t};\n\t}\n\n\tstatic get styles() {\n\t\treturn `:host {\n display: inline-block;\n border: 1px solid black;\n color: var(--var1);\n }`;\n\t}\n\n\tonBeforeRendering() {}\n\tonAfterRendering() {}\n\tonEnterDOM() {}\n\tonExitDOM() {}\n}\n\nGeneric.define();\n\nexport default Generic;\n","import UI5Element from \"../../UI5Element.js\";\n\nconst metadata = {\n\ttag: \"ui5-test-no-shadow\",\n};\n\nclass NoShadow extends UI5Element {\n\tstatic get metadata() {\n\t\treturn metadata;\n\t}\n}\n\nNoShadow.define();\n","import UI5Element from \"../../UI5Element.js\";\nimport litRender, { html } from \"../../renderer/LitRenderer.js\";\n\nconst metadata = {\n\ttag: \"ui5-test-parent\",\n\tmanagedSlots: true,\n\tslots: {\n\t\tdefault: {\n\t\t\ttype: Node,\n\t\t\tinvalidateOnChildChange: {\n\t\t\t\tproperties: [\"prop1\"]\n\t\t\t},\n\t\t},\n\t\titems: {\n\t\t\ttype: HTMLElement,\n\t\t\tinvalidateOnChildChange: {\n\t\t\t\tproperties: true\n\t\t\t},\n\t\t}\n\t}\n};\n\nclass Parent extends UI5Element {\n\tstatic get metadata() {\n\t\treturn metadata;\n\t}\n\n\tstatic get render() {\n\t\treturn litRender;\n\t}\n\n\tstatic get template() {\n\t\treturn element => {\n\t\t\treturn html`<div>\n\t\t\t\t<slot></slot>\n\t\t\t</div>`;\n\t\t};\n\t}\n}\n\nParent.define();\n","import UI5Element from \"../../UI5Element.js\";\nimport litRender, { html } from \"../../renderer/LitRenderer.js\";\n\nconst metadata = {\n\ttag: \"ui5-test-child\",\n\tproperties: {\n\t\tprop1: {\n\t\t\ttype: String,\n\t\t},\n\t\tprop2: {\n\t\t\ttype: String,\n\t\t},\n\t\tprop3: {\n\t\t\ttype: String,\n\t\t},\n\t}\n};\n\nclass Child extends UI5Element {\n\tstatic get metadata() {\n\t\treturn metadata;\n\t}\n\n\tstatic get render() {\n\t\treturn litRender;\n\t}\n\n\tstatic get template() {\n\t\treturn element => {\n\t\t\treturn html`<div></div>`;\n\t\t};\n\t}\n}\n\nChild.define();\n","import UI5Element from \"../../UI5Element.js\";\nimport litRender, { html } from \"../../renderer/LitRenderer.js\";\n\nconst metadata = {\n\ttag: \"ui5-with-static-area\",\n\tproperties: {\n\t\t/**\n\t\t * Defines whether the static area item will be rendered\n\t\t */\n\t\tstaticContent: {\n\t\t\ttype: Boolean,\n\t\t}\n\t},\n\tslots: {\n\n\t}\n};\n\nclass WithStaticArea extends UI5Element {\n\tstatic get metadata() {\n\t\treturn metadata;\n\t}\n\n\tstatic get render() {\n\t\treturn litRender;\n\t}\n\n\tstatic get template() {\n\t\treturn element => {\n\t\t\t// access effectiveDir getter to mark control as RTL-aware (test changes dir attribute and expects rerender)\n\t\t\treturn html`\n\t\t\t\t<div dir=${element.effectiveDir}>\n\t\t\t\t\tWithStaticArea works!\n\t\t\t\t</div>`;\n\t\t};\n\t}\n\n\tstatic get staticAreaTemplate() {\n\t\treturn element => {\n\t\t\treturn html`\n\t\t\t\t<div class=\"ui5-with-static-area-content\">\n\t\t\t\t\tStatic area content.\n\t\t\t\t</div>`;\n\t\t};\n\t}\n\n\tstatic get styles() {\n\t\treturn `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tborder: 1px solid black;\n\t\t\t\tcolor: red;\n\t\t\t}`;\n\t}\n\n\tasync addStaticArea() {\n\t\tif (!this.staticContent) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Require static area item\n\t\tconst staticArea = await this.getStaticAreaItemDomRef();\n\t\tthis.responsivePopover = staticArea.querySelector(\".ui5-with-static-area-content\");\n\t\treturn this.responsivePopover;\n\t}\n\n\tonBeforeRendering() {\n\t\tthis.addStaticArea();\n\t}\n\tonAfterRendering() {}\n\tonEnterDOM() {}\n\tonExitDOM() {}\n}\n\nWithStaticArea.define();\n\nexport default WithStaticArea;\n","import Generic from \"./Generic.js\";\n\nconst metadata = {\n\ttag: \"ui5-test-generic-ext\",\n\tproperties: {\n\t\textProp: {\n\t\t\ttype: String,\n\t\t},\n\t\tstrProp: {\n\t\t\tdefaultValue: \"Ext\",\n\t\t}\n\t},\n\tslots: {\n\t\textSlot: {\n\t\t\ttype: HTMLElement,\n\t\t},\n\t}\n};\n\nclass GenericExt extends Generic {\n\tstatic get metadata() {\n\t\treturn metadata;\n\t}\n}\n\nGenericExt.define();\n","import { registerThemePropertiesLoader } from \"../../asset-registries/Themes.js\";\n\nconst fiori3 = `:root{ --var1: red; }`;\nconst fiori3Dark = `:root{ --var1: green; }`;\nconst belize = `:root{ --var1: blue; }`;\nconst belizeHcb = `:root{ --var1: orange; }`;\nconst belizeHcw = `:root{ --var1: orange; }`;\nconst fiori3Hcb = `:root{ --var1: yellow; }`;\nconst fiori3Hcw = `:root{ --var1: yellow; }`;\n\nregisterThemePropertiesLoader(\"@ui5/webcomponents-base-test\", \"sap_fiori_3\", () => fiori3);\nregisterThemePropertiesLoader(\"@ui5/webcomponents-base-test\", \"sap_fiori_3_dark\", () => fiori3Dark);\nregisterThemePropertiesLoader(\"@ui5/webcomponents-base-test\", \"sap_belize\", () => belize);\nregisterThemePropertiesLoader(\"@ui5/webcomponents-base-test\", \"sap_belize_hcb\", () => belizeHcb);\nregisterThemePropertiesLoader(\"@ui5/webcomponents-base-test\", \"sap_belize_hcw\", () => belizeHcw);\nregisterThemePropertiesLoader(\"@ui5/webcomponents-base-test\", \"sap_fiori_3_hcb\", () => fiori3Hcb);\nregisterThemePropertiesLoader(\"@ui5/webcomponents-base-test\", \"sap_fiori_3_hcw\", () => fiori3Hcw);\n","const ua = navigator.userAgent;\nconst touch = \"ontouchstart\" in window || navigator.maxTouchPoints > 0;\nconst ie = /(msie|trident)/i.test(ua);\nconst chrome = !ie && /(Chrome|CriOS)/.test(ua);\nconst safari = !ie && !chrome && /(Version|PhantomJS)\\/(\\d+\\.\\d+).*Safari/.test(ua);\nconst webkit = !ie && /webkit/.test(ua);\nconst windows = navigator.platform.indexOf(\"Win\") !== -1;\nconst iOS = navigator.platform.match(/iPhone|iPad|iPod/) || (navigator.userAgent.match(/Mac/) && \"ontouchend\" in document);\nconst android = !windows && /Android/.test(ua);\nconst androidPhone = android && /(?=android)(?=.*mobile)/i.test(ua);\nconst ipad = /ipad/i.test(ua) || (/Macintosh/i.test(ua) && \"ontouchend\" in document);\n// With iOS 13 the string 'iPad' was removed from the user agent string through a browser setting, which is applied on all sites by default:\n// \"Request Desktop Website -> All websites\" (for more infos see: https://forums.developer.apple.com/thread/119186).\n// Therefore the OS is detected as MACINTOSH instead of iOS and the device is a tablet if the Device.support.touch is true.\n\nlet windowsVersion;\nlet webkitVersion;\nlet tablet;\n\nconst isWindows8OrAbove = () => {\n\tif (!windows) {\n\t\treturn false;\n\t}\n\n\tif (windowsVersion === undefined) {\n\t\tconst matches = ua.match(/Windows NT (\\d+).(\\d)/);\n\t\twindowsVersion = matches ? parseFloat(matches[1]) : 0;\n\t}\n\n\treturn windowsVersion >= 8;\n};\n\nconst isWebkit537OrAbove = () => {\n\tif (!webkit) {\n\t\treturn false;\n\t}\n\n\tif (webkitVersion === undefined) {\n\t\tconst matches = ua.match(/(webkit)[ /]([\\w.]+)/);\n\t\twebkitVersion = matches ? parseFloat(matches[1]) : 0;\n\t}\n\n\treturn webkitVersion >= 537.10;\n};\n\nconst detectTablet = () => {\n\tif (tablet !== undefined) {\n\t\treturn;\n\t}\n\n\tif (ipad) {\n\t\ttablet = true;\n\t\treturn;\n\t}\n\n\tif (touch) {\n\t\tif (isWindows8OrAbove()) {\n\t\t\ttablet = true;\n\t\t\treturn;\n\t\t}\n\n\t\tif (chrome && android) {\n\t\t\ttablet = !/Mobile Safari\\/[.0-9]+/.test(ua);\n\t\t\treturn;\n\t\t}\n\n\t\tlet densityFactor = window.devicePixelRatio ? window.devicePixelRatio : 1; // may be undefined in Windows Phone devices\n\t\tif (android && isWebkit537OrAbove()) {\n\t\t\tdensityFactor = 1;\n\t\t}\n\n\t\ttablet = (Math.min(window.screen.width / densityFactor, window.screen.height / densityFactor) >= 600);\n\t\treturn;\n\t}\n\n\ttablet = (ie && ua.indexOf(\"Touch\") !== -1) || (android && !androidPhone);\n};\n\nconst supportsTouch = () => touch;\nconst isIE = () => ie;\nconst isSafari = () => safari;\nconst isChrome = () => chrome;\n\nconst isTablet = () => {\n\tdetectTablet();\n\treturn (touch || isWindows8OrAbove()) && tablet;\n};\n\nconst isPhone = () => {\n\tdetectTablet();\n\treturn touch && !tablet;\n};\n\nconst isDesktop = () => {\n\treturn (!isTablet() && !isPhone()) || isWindows8OrAbove();\n};\n\nconst isCombi = () => {\n\treturn isTablet() && isDesktop();\n};\n\nconst isIOS = () => {\n\treturn iOS;\n};\n\nexport {\n\tsupportsTouch,\n\tisIE,\n\tisSafari,\n\tisChrome,\n\tisPhone,\n\tisTablet,\n\tisDesktop,\n\tisCombi,\n\tisIOS,\n};\n","const messageFormatRegEX = /('')|'([^']+(?:''[^']*)*)(?:'|$)|\\{([0-9]+(?:\\s*,[^{}]*)?)\\}|[{}]/g;\n\nconst formatMessage = (text, values) => {\n\tvalues = values || [];\n\n\treturn text.replace(messageFormatRegEX, ($0, $1, $2, $3, offset) => {\n\t\tif ($1) {\n\t\t\treturn '\\''; /* eslint-disable-line */\n\t\t}\n\n\t\tif ($2) {\n\t\t\treturn $2.replace(/''/g, '\\''); /* eslint-disable-line */\n\t\t}\n\n\t\tif ($3) {\n\t\t\treturn String(values[parseInt($3)]);\n\t\t}\n\n\t\tthrow new Error(`[i18n]: pattern syntax error at pos ${offset}`);\n\t});\n};\n\nexport default formatMessage;\n","import { registerI18nLoader, fetchI18nBundle, getI18nBundleData } from \"./asset-registries/i18n.js\";\nimport formatMessage from \"./util/formatMessage.js\";\n\nconst I18nBundleInstances = new Map();\n\nlet customGetI18nBundle;\n\n/**\n * @class\n * @public\n */\nclass I18nBundle {\n\tconstructor(packageName) {\n\t\tthis.packageName = packageName;\n\t}\n\n\t/**\n\t * Returns a text in the currently loaded language\n\t *\n\t * @public\n\t * @param {Object|String} textObj key/defaultText pair or just the key\n\t * @param params Values for the placeholders\n\t * @returns {*}\n\t */\n\tgetText(textObj, ...params) {\n\t\tif (typeof textObj === \"string\") {\n\t\t\ttextObj = { key: textObj, defaultText: textObj };\n\t\t}\n\n\t\tif (!textObj || !textObj.key) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst bundle = getI18nBundleData(this.packageName);\n\t\tif (bundle && !bundle[textObj.key]) {\n\t\t\tconsole.warn(`Key ${textObj.key} not found in the i18n bundle, the default text will be used`); // eslint-disable-line\n\t\t}\n\t\tconst messageText = bundle && bundle[textObj.key] ? bundle[textObj.key] : (textObj.defaultText || textObj.key);\n\n\t\treturn formatMessage(messageText, params);\n\t}\n}\n\nconst getI18nBundleSync = packageName => {\n\tif (I18nBundleInstances.has(packageName)) {\n\t\treturn I18nBundleInstances.get(packageName);\n\t}\n\n\tconst i18nBundle = new I18nBundle(packageName);\n\tI18nBundleInstances.set(packageName, i18nBundle);\n\treturn i18nBundle;\n};\n\n/**\n * Allows developers to provide a custom getI18nBundle implementation\n * If this function is called, the custom implementation will be used for all components and will completely\n * replace the default implementation.\n *\n * @public\n * @param customGet the function to use instead of the standard getI18nBundle implementation\n */\nconst registerCustomI18nBundleGetter = customGet => {\n\tcustomGetI18nBundle = customGet;\n};\n\n/**\n * Fetches and returns the I18nBundle instance for the given package\n *\n * @public\n * @param packageName\n * @returns {Promise<I18nBundle>}\n */\nconst getI18nBundle = async packageName => {\n\tif (customGetI18nBundle) {\n\t\treturn customGetI18nBundle(packageName);\n\t}\n\n\tawait fetchI18nBundle(packageName);\n\treturn getI18nBundleSync(packageName);\n};\n\nexport {\n\tregisterI18nLoader,\n\tgetI18nBundle,\n\tregisterCustomI18nBundleGetter,\n};\n","import { getAnimationMode as getConfiguredAnimationMode } from \"../InitialConfiguration.js\";\nimport AnimationMode from \"../types/AnimationMode.js\";\n\nlet animationMode;\n\nconst getAnimationMode = () => {\n\tif (animationMode === undefined) {\n\t\tanimationMode = getConfiguredAnimationMode();\n\t}\n\n\treturn animationMode;\n};\n\nconst setAnimationMode = newAnimationMode => {\n\tif (Object.values(AnimationMode).includes(newAnimationMode)) {\n\t\tanimationMode = newAnimationMode;\n\t}\n};\n\nexport {\n\tgetAnimationMode,\n\tsetAnimationMode,\n};\n","import DataType from \"./DataType.js\";\n\n/**\n * Different calendar types.\n */\nconst CalendarTypes = {\n\tGregorian: \"Gregorian\",\n\tIslamic: \"Islamic\",\n\tJapanese: \"Japanese\",\n\tBuddhist: \"Buddhist\",\n\tPersian: \"Persian\",\n};\n\nclass CalendarType extends DataType {\n\tstatic isValid(value) {\n\t\treturn !!CalendarTypes[value];\n\t}\n}\n\nCalendarType.generateTypeAccessors(CalendarTypes);\n\nexport default CalendarType;\n","import CalendarType from \"../types/CalendarType.js\";\nimport { getCalendarType as getConfiguredCalendarType } from \"../InitialConfiguration.js\";\n\nlet calendarType;\n\nconst getCalendarType = () => {\n\tif (calendarType === undefined) {\n\t\tcalendarType = getConfiguredCalendarType();\n\t}\n\n\tif (CalendarType.isValid(calendarType)) {\n\t\treturn calendarType;\n\t}\n\n\treturn CalendarType.Gregorian;\n};\n\nexport { getCalendarType }; // eslint-disable-line\n","import { getFormatSettings } from \"../InitialConfiguration.js\";\n\nlet formatSettings;\n\nconst getFirstDayOfWeek = () => {\n\tif (formatSettings === undefined) {\n\t\tformatSettings = getFormatSettings();\n\t}\n\n\treturn formatSettings.firstDayOfWeek;\n};\n\nexport { getFirstDayOfWeek }; // eslint-disable-line\n","import EventProvider from \"../EventProvider.js\";\n\nconst eventProvider = new EventProvider();\nconst DIR_CHANGE = \"directionChange\";\n\n/**\n * Attach a callback that will be executed whenever the application calls the \"applyDirection\" function\n * @public\n * @param listener\n */\nconst attachDirectionChange = listener => {\n\teventProvider.attachEvent(DIR_CHANGE, listener);\n};\n\n/**\n * Detach a callback that was passed with \"attachDirectionChange\"\n * @public\n * @param listener\n */\nconst detachDirectionChange = listener => {\n\teventProvider.detachEvent(DIR_CHANGE, listener);\n};\n\nconst fireDirectionChange = () => {\n\treturn eventProvider.fireEvent(DIR_CHANGE);\n};\n\nexport {\n\tattachDirectionChange,\n\tdetachDirectionChange,\n\tfireDirectionChange,\n};\n","import { registerThemePropertiesLoader } from \"./dist/AssetRegistry.js\";\nimport EventProvider from \"./dist/EventProvider.js\";\n\n// ESM bundle targets browsers with native support\nimport \"./dist/features/OpenUI5Support.js\";\n\n// Test components\nimport \"./dist/test-resources/elements/Generic.js\";\nimport \"./dist/test-resources/elements/NoShadowDOM.js\";\nimport \"./dist/test-resources/elements/Parent.js\";\nimport \"./dist/test-resources/elements/Child.js\";\nimport \"./dist/test-resources/elements/WithStaticArea.js\";\nimport \"./dist/test-resources/elements/GenericExt.js\";\n\n// Test themes - CSS Vars for the sap_fiori_3, sap_fiori_3_dark, sap_belize and sap_belize_hcb themes\nimport \"./dist/test-resources/assets/Themes.js\";\n\n// used in test pages\nimport { renderFinished } from \"./dist/Render.js\";\nimport { isIE } from \"./dist/Device.js\";\nwindow.isIE = isIE; // attached to the window object for testing purposes\n\n// used for tests - to register a custom theme\nwindow.registerThemePropertiesLoader = registerThemePropertiesLoader;\n\n// i18n\nimport { registerI18nLoader, getI18nBundle } from \"./dist/i18nBundle.js\";\n\n// Note: keep in sync with rollup.config value for IIFE\nimport { getAnimationMode } from \"./dist/config/AnimationMode.js\";\nimport { getLanguage } from \"./dist/config/Language.js\";\nimport { getCalendarType } from \"./dist/config/CalendarType.js\";\nimport { getTheme, setTheme } from \"./dist/config/Theme.js\";\nimport { getNoConflict, setNoConflict } from \"./dist/config/NoConflict.js\";\nimport { getRTL } from \"./dist/config/RTL.js\";\nimport { getFirstDayOfWeek } from \"./dist/config/FormatSettings.js\";\nimport { _getRegisteredNames as getIconNames } from \"./dist/asset-registries/Icons.js\"\nimport applyDirection from \"./dist/locale/applyDirection.js\";\n\nwindow[\"sap-ui-webcomponents-bundle\"] = {\n\tconfiguration : {\n\t\tgetAnimationMode,\n\t\tgetLanguage,\n\t\tgetTheme,\n\t\tsetTheme,\n\t\tgetNoConflict,\n\t\tsetNoConflict,\n\t\tgetCalendarType,\n\t\tgetRTL,\n\t\tgetFirstDayOfWeek,\n\t},\n\tgetIconNames,\n\tregisterI18nLoader,\n\tgetI18nBundle,\n\trenderFinished,\n\tapplyDirection,\n\tEventProvider,\n};\n","import { reRenderAllUI5Elements } from \"../Render.js\";\nimport { fireDirectionChange } from \"./directionChange.js\";\n\n/**\n * Re-renders all RTL-aware UI5 Elements.\n * Call this method whenever you change the \"dir\" property anywhere in your HTML page\n * Example: document.body.dir = \"rtl\"; applyDirection();\n *\n * @returns {Promise<void>}\n */\nconst applyDirection = async () => {\n\tconst listenersResults = fireDirectionChange();\n\tawait Promise.all(listenersResults);\n\tawait reRenderAllUI5Elements({ rtlAware: true });\n};\n\nexport default applyDirection;\n"],"names":["assetParameters","default","all","DEFAULT_THEME","DEFAULT_LANGUAGE","DEFAULT_LOCALE","SUPPORTED_LOCALES","browserLanguages","navigator","languages","language","userLanguage","browserLanguage","class2type","hasOwn","hasOwnProperty","toString","fnToString","ObjectFunctionString","call","Object","fnIsPlainObject","obj","proto","Ctor","getPrototypeOf","constructor","oToken","create","fnMerge","src","copyIsArray","copy","name","options","clone","target","arguments","i","length","deep","skipToken","undefined","isPlainObject","Array","isArray","args","push","apply","_merge","features","Map","getFeature","get","initialized","initialConfig","animationMode","theme","rtl","calendarType","noConflict","formatSettings","fetchDefaultLanguage","booleanMapping","set","applyURLParam","key","value","paramType","lowerCaseValue","toLowerCase","param","split","has","includes","normalizeParamValue","initConfiguration","configScript","document","querySelector","configJSON","JSON","parse","innerHTML","err","console","warn","merge","parseConfigurationScript","params","URLSearchParams","window","location","search","forEach","parts","startsWith","parseURLParameters","OpenUI5Support","isLoaded","OpenUI5Config","getConfigurationSettingsObject","applyOpenUI5Configuration","EventProvider","this","_eventRegistry","attachEvent","eventName","fnFunction","eventRegistry","eventListeners","detachEvent","indexOfFnToDetach","indexOf","splice","delete","fireEvent","data","map","fn","fireEventAsync","Promise","isHandlerAttached","hasListeners","eventProvider","attachLanguageChange","listener","setToArray","s","arr","item","getSingletonElementInstance","tag","parentElement","body","el","createElement","insertBefore","firstChild","getSharedResource","namespace","initialValue","current","head","part","lastPart","prototype","VersionInfo","version","major","minor","patch","suffix","isNext","buildTime","currentRuntimeIndex","compareCache","Runtimes","getCurrentRuntimeIndex","Tags","Definitions","Set","failureTimeout","Failures","registerTag","add","displayFailedRegistrations","allRuntimes","currentRuntime","message","runtime","description","join","keys","otherRuntimeIndex","comparison","otherRuntime","compareWord","index1","index2","cacheIndex","runtime1","runtime2","Error","majorDiff","minorDiff","patchDiff","result","Intl","Collator","numeric","sensitivity","compare","compareRuntimes","size","sort","rtlAwareSet","registeredElements","invalidatedWebComponents","list","lookup","webComponent","remove","filter","shift","isEmpty","isAdded","process","callback","stats","timesProcessed","renderTaskPromise","renderTaskPromiseResolve","mutationObserverTimer","queuePromise","renderDeferred","async","scheduleRenderTask","renderImmediately","_render","resolve","requestAnimationFrame","setTimeout","_resolveTaskPromise","whenAllCustomElementsAreDefined","definedPromises","customElements","whenDefined","renderFinished","reRenderAllUI5Elements","element","getMetadata","getTag","rtlAware","klass","languageAware","isLanguageAware","themeAware","isThemeAware","filters","getLanguage","getFetchDefaultLanguage","fetchDefaultLang","rLocale","Locale","sLocaleId","aResult","exec","replace","sLanguage","sScript","sRegion","sVariant","slice","sExtension","sPrivateUse","toUpperCase","getScript","getRegion","getVariant","getVariantSubtags","getExtension","getExtensionSubtags","getPrivateUse","getPrivateUseSubtags","hasPrivateUseSubtag","sSubtag","r","cache","getLocaleInstance","lang","convertToLocaleOrNull","e","getLocale","getConfigLanguage","detectNavigatorLanguage","localeRegEX","SAPSupportabilityLocales","M_ISO639_NEW_TO_OLD","he","yi","id","sr","nextFallbackLocale","locale","p","lastIndexOf","warningShown","reportedErrors","bundleData","bundlePromises","loaders","_setI18nBundleData","packageName","_hasLoader","localeId","bundleKey","fetchI18nBundle","region","m","script","variants","isPrivate","normalizeLocale","loadMessageBundle","_loadMessageBundleOnce","error","_showAssetsWarningOnce","allPackages","localeDataMap","cldrPromises","M_ISO639_OLD_TO_NEW","iw","ji","in","setLocaleData","content","fetchCldr","calcLocale","cldrContent","getLocaleDataObject","loadCldr","_loadCldrOnce","loader","fetch","json","themeStyles","registeredPackages","registeredThemes","registerThemePropertiesLoader","themeName","getThemeProperties","style","regThemesStr","values","themeProps","_","getRegisteredPackages","IconCollectionsAlias","BusinessSuiteInAppSymbols","horizon","getStyleId","createStyle","adoptedStyleSheets","stylesheet","CSSStyleSheet","replaceSync","_ui5StyleId","attributes","cssText","type","entries","pair","setAttribute","textContent","appendChild","createStyleInHead","hasStyle","find","sh","createOrUpdateStyle","updateStyle","warnings","getThemeDesignerTheme","metadataString","getComputedStyle","backgroundImage","display","classList","metadata","removeChild","getThemeMetadata","paramsString","charAt","decodeURIComponent","ex","parseThemeMetadata","baseThemeName","Path","match","Extends","processThemeMetadata","BASE_THEME_PACKAGE","loadThemeBase","cssData","deleteThemeBase","styleElement","removeStyle","applyTheme","extTheme","cssVariablesLoaded","detectExternalTheme","packagesTheme","isThemeRegistered","loadComponentPackages","fireThemeLoaded","getTheme","setTheme","newTheme","registry","iconCollectionPromises","registerIcon","pathData","ltr","accData","collection","_getDefaultCollection","getIconData","registryKey","reverse","_normalizeCollection","_parseName","nameProp","iconData","collectionName","loadIcons","_loadIconCollectionOnce","iconName","path","acc","_fillRegistry","_theme","PopupUtilsData","currentZIndex","getCurrentZIndex","getCore","sap","ui","feature","init","core","attachInit","require","LocaleData","Popup","setInitialZIndex","config","getConfiguration","getAnimationMode","getRTL","getCalendarType","firstDayOfWeek","getInstance","getFirstDayOfWeek","_get","attachListeners","attachThemeChanged","listenForThemeChange","link","children","href","getNextZIndex","fileName","insertMainFontFace","fontFaceCSS","insertOverrideFontFace","overrideFontFaceCSS","bootPromise","boot","alias","F6Navigation","addEventListener","insertFontFace","systemCSSVars","DataType","static","attributeValue","propertyValue","value1","value2","types","defineProperty","isDescendantOf","baseKlass","inclusive","parent","kebabToCamelMap","camelToKebabMap","kebabToCamelCase","string","toCamelCase","camelToKebabCase","index","isSlot","HTMLElement","localName","getSlottedElements","assignedNodes","flatten","rulesObj","include","exclude","tagsCache","shouldScopeCustomElement","some","rule","getEffectiveScopingSuffixForTag","UI5ElementMetadata","getInitialState","_initialState","initialState","slotsAreManaged","props","getProperties","propName","propType","propDefaultValue","defaultValue","Boolean","multiple","String","slots","getSlots","slotName","slotData","propertyName","propData","propValue","validateSingleProperty","validateSingleSlot","getPureTag","pureTag","getAltTag","pureAltTag","altTag","hasAttribute","noAttribute","getPropertiesList","getAttributesList","canSlotText","defaultSlot","Node","hasSlots","hasIndividualSlots","_slotName","individualSlots","managedSlots","supportsF6FastNavigation","fastNavigation","properties","getEvents","events","shouldInvalidateOnChildChange","invalidateOnChildChange","propertyType","isValid","define","getTagsToScope","component","componentTag","tagsToScope","getUniqueDependencies","dep","attachCustomCSSChange","customCSSFor","getStylesString","styles","reduce","val","concat","effectiveStyleMap","getEffectiveStyle","ElementClass","forStaticArea","effectiveStyle","staticAreaStyles","customStyle","getCustomCSS","constructableStyleMap","updateShadowRoot","styleStrOrHrefsArr","template","shadowRoot","staticAreaItem","renderResult","getCustomElementsScopingSuffix","executeTemplate","styleContent","getConstructableStyle","ShadyDOM","render","host","A_RTL_LOCALES","getDesigntimePropertyAsArray","configurationRTL","impliesRTL","getEffectiveDir","doc","dirValues","locallyAppliedDir","getPropertyValue","dir","documentElement","StaticAreaItem","super","_rendered","attachShadow","mode","setOwnerElement","ownerElement","_id","getAttribute","update","_updateContentDensity","_updateDirection","removeAttribute","observers","WeakMap","observeDOMNode","node","observer","MutationObserver","observe","_createObserver","excludeList","getNoConflict","skipOriginalEvent","nc","shouldFireOriginalEvent","shouldNotFireOriginalEvent","allowList","isValidPropertyName","Element","arraysAreEqual","arr1","arr2","getClassCopy","constructorCallback","autoId","elementTimeouts","uniqueDependenciesCache","_invalidate","changeInfo","_suppressInvalidation","onInvalidation","_changedState","_eventProvider","UI5Element","deferredResolve","_inDOM","_fullyConnected","_childChangeListeners","_slotChangeListeners","_domRefReadyPromise","_deferredResolve","_initializeState","_upgradeAllProperties","_needsShadowDOM","__id","_startObservingDOMChildren","_processChildren","onEnterDOM","disconnectedCallback","_stopObservingDOMChildren","onExitDOM","mutationObserverOptions","childList","subtree","characterData","bind","disconnect","_destroyObserver","unobserveDOMNode","_updateSlots","slotsMap","domChildren","from","childNodes","slotsCachedContentMap","propertyNameToSlotMap","_state","_clearSlot","autoIncrementMap","slottedChildrenMap","allChildrenUpgraded","child","idx","slot","getSlotName","validValues","nextIndex","_individualSlot","whenDefinedPromise","timeoutPromise","race","upgrade","validateSlotValue","isUI5Element","attachInvalidate","_attachChange","method","_getChildChangeListener","_attachSlotChange","a","b","invalidated","reason","detachInvalidate","_detachChange","_detachSlotChange","_onChildChange","childChangeInfo","attributeChangedCallback","oldValue","newValue","realName","nameInCamelCase","propertyTypeClass","attributeToProperty","_updateAttribute","attrName","attrValue","propertyToAttribute","_upgradeProperty","prop","_getSlotChangeListener","_onSlotChange","removeEventListener","onBeforeRendering","_onComponentStateFinalized","_assignIndividualSlotsToChildren","onAfterRendering","_waitForDomRef","getDomRef","_getRealDomRef","getFocusDomRef","domRef","focusDomRef","focus","cancelable","bubbles","eventResult","_fireEvent","camelCaseEventName","noConflictEvent","CustomEvent","detail","composed","noConflictEventResult","dispatchEvent","normalEvent","getSlottedNodes","curr","effectiveDir","observedAttributes","staticAreaTemplate","getStaticAreaItemDomRef","_needsStaticArea","createInstance","isDifferent","validatePropertyValue","oldState","compareValues","valuesAreEqual","dependencies","filtered","deps","whenDependenciesDefined","onDefine","definedLocally","isTagRegistered","definedGlobally","tagRegRuntimeIndex","recordTagRegistrationFailure","_generateAccessors","log","_metadata","metadataObjects","unshift","mergedMetadata","t","globalThis","trustedTypes","createPolicy","createHTML","Math","random","o","n","l","h","createComment","d","c","v","f","g","_$litType$","strings","$","Symbol","for","T","x","A","createTreeWalker","C","u","lastIndex","test","RegExp","y","P","currentNode","append","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","ctor","M","k","H","S","tagName","emptyScript","V","_$Cl","_$Cu","_$litDirective$","_$AO","_$AT","_$AS","E","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","N","nextSibling","I","_$AI","_$AH","_$AA","_$AB","_$Cg","isConnected","startNode","endNode","_$AR","iterator","createTextNode","_$AC","_$AP","setConnected","fill","capture","once","passive","handleEvent","R","litHtmlPolyfillSupport","litHtmlVersions","_$litStatic$","_$Ct","_$Ci","it","directiveName","vt","raw","resultType","litRender","templateResult","domNode","html","renderBefore","_$litPart$","strProp","boolProp","objectProp","noAttributeProp","multiProp","defaultValueProp","other","individual","named","Generic","items","prop1","prop2","prop3","staticContent","staticArea","responsivePopover","addStaticArea","extProp","extSlot","ua","userAgent","ie","chrome","windows","platform","messageFormatRegEX","I18nBundleInstances","I18nBundle","getText","textObj","defaultText","bundle","messageText","$0","$1","$2","$3","offset","parseInt","CalendarTypes","Gregorian","Islamic","Japanese","Buddhist","Persian","CalendarType","generateTypeAccessors","isIE","configuration","setNoConflict","noConflictData","registerI18nLoader","getI18nBundle","i18nBundle","getI18nBundleSync","applyDirection","listenersResults"],"mappings":"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"}
1
+ {"version":3,"file":"bundle.esm.js","sources":["../generated/AssetParameters.js","../util/detectNavigatorLanguage.js","../thirdparty/isPlainObject.js","../thirdparty/_merge.js","../thirdparty/merge.js","../FeaturesRegistry.js","../InitialConfiguration.js","../EventProvider.js","../locale/languageChange.js","../util/setToArray.js","../util/getSingletonElementInstance.js","../getSharedResource.js","../generated/VersionInfo.js","../Runtimes.js","../CustomElementsRegistry.js","../locale/RTLAwareRegistry.js","../Render.js","../RenderQueue.js","../config/Language.js","../locale/Locale.js","../locale/getLocale.js","../locale/normalizeLocale.js","../locale/nextFallbackLocale.js","../asset-registries/i18n.js","../asset-registries/LocaleData.js","../asset-registries/Themes.js","../assets-meta/IconCollectionsAlias.js","../ManagedStyles.js","../util/createStyleInHead.js","../theming/getThemeDesignerTheme.js","../theming/ThemeLoaded.js","../theming/applyTheme.js","../config/Theme.js","../config/Icons.js","../asset-registries/Icons.js","../util/PopupUtils.js","../features/OpenUI5Support.js","../generated/css/FontFace.css.js","../generated/css/OverrideFontFace.css.js","../FontFace.js","../generated/css/SystemCSSVars.css.js","../Boot.js","../util/whenDOMReady.js","../SystemCSSVars.js","../types/DataType.js","../util/isDescendantOf.js","../util/StringHelper.js","../util/SlotsHelper.js","../CustomElementsScopeUtils.js","../UI5ElementMetadata.js","../StaticArea.js","../renderer/executeTemplate.js","../theming/CustomStyle.js","../theming/getStylesString.js","../theming/getEffectiveStyle.js","../theming/getConstructableStyle.js","../updateShadowRoot.js","../isLegacyBrowser.js","../config/RTL.js","../util/getDesigntimePropertyAsArray.js","../locale/getEffectiveDir.js","../StaticAreaItem.js","../util/getEffectiveContentDensity.js","../DOMObserver.js","../config/NoConflict.js","../util/isValidPropertyName.js","../util/arraysAreEqual.js","../util/getClassCopy.js","../UI5Element.js","../../../../node_modules/lit-html/lit-html.js","../../../../node_modules/lit-html/directive.js","../../../../node_modules/lit-html/directives/unsafe-html.js","../renderer/LitRenderer.js","../test-resources/elements/Generic.js","../test-resources/elements/NoShadowDOM.js","../test-resources/elements/Parent.js","../test-resources/elements/Child.js","../test-resources/elements/WithStaticArea.js","../test-resources/elements/GenericExt.js","../test-resources/assets/Themes.js","../Device.js","../util/formatMessage.js","../i18nBundle.js","../config/AnimationMode.js","../types/CalendarType.js","../config/CalendarType.js","../config/FormatSettings.js","../locale/directionChange.js","../../bundle.esm.js","../locale/applyDirection.js"],"sourcesContent":["const assetParameters = {\"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\"]}};\n\nconst DEFAULT_THEME = assetParameters.themes.default;\nconst DEFAULT_LANGUAGE = assetParameters.languages.default;\nconst DEFAULT_LOCALE = assetParameters.locales.default;\nconst SUPPORTED_LOCALES = assetParameters.locales.all;\n\nexport {\n\tDEFAULT_THEME,\n\tDEFAULT_LANGUAGE,\n\tDEFAULT_LOCALE,\n\tSUPPORTED_LOCALES,\n};","import { DEFAULT_LANGUAGE } from \"../generated/AssetParameters.js\";\n\nexport default () => {\n\tconst browserLanguages = navigator.languages;\n\n\tconst navigatorLanguage = () => {\n\t\treturn navigator.language;\n\t};\n\n\tconst rawLocale = (browserLanguages && browserLanguages[0]) || navigatorLanguage() || navigator.userLanguage || navigator.browserLanguage;\n\n\treturn rawLocale || DEFAULT_LANGUAGE;\n};\n","var class2type = {};\nvar hasOwn = class2type.hasOwnProperty;\nvar toString = class2type.toString;\nvar fnToString = hasOwn.toString;\nvar ObjectFunctionString = fnToString.call(Object);\nvar fnIsPlainObject = function (obj) {\n var proto, Ctor;\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n proto = Object.getPrototypeOf(obj);\n if (!proto) {\n return true;\n }\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n};\nexport default fnIsPlainObject;\n","import isPlainObject from './isPlainObject.js';\nvar oToken = Object.create(null);\nvar fnMerge = function () {\n var src, copyIsArray, copy, name, options, clone, target = arguments[2] || {}, i = 3, length = arguments.length, deep = arguments[0] || false, skipToken = arguments[1] ? undefined : oToken;\n if (typeof target !== 'object' && typeof target !== 'function') {\n target = {};\n }\n for (; i < length; i++) {\n if ((options = arguments[i]) != null) {\n for (name in options) {\n src = target[name];\n copy = options[name];\n if (name === '__proto__' || target === copy) {\n continue;\n }\n if (deep && copy && (isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && Array.isArray(src) ? src : [];\n } else {\n clone = src && isPlainObject(src) ? src : {};\n }\n target[name] = fnMerge(deep, arguments[1], clone, copy);\n } else if (copy !== skipToken) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n};\nexport default fnMerge;","import _merge from './_merge.js';\nvar fnMerge = function () {\n var args = [\n true,\n false\n ];\n args.push.apply(args, arguments);\n return _merge.apply(null, args);\n};\nexport default fnMerge;","const features = new Map();\n\nconst registerFeature = (name, feature) => {\n\tfeatures.set(name, feature);\n};\n\nconst getFeature = name => {\n\treturn features.get(name);\n};\n\nexport {\n\tregisterFeature,\n\tgetFeature,\n};\n","import merge from \"./thirdparty/merge.js\";\nimport { getFeature } from \"./FeaturesRegistry.js\";\nimport { DEFAULT_THEME } from \"./generated/AssetParameters.js\";\n\nlet initialized = false;\n\nlet initialConfig = {\n\tanimationMode: \"full\",\n\ttheme: DEFAULT_THEME,\n\trtl: null,\n\tlanguage: null,\n\tcalendarType: null,\n\tnoConflict: false, // no URL\n\tformatSettings: {},\n\tfetchDefaultLanguage: false,\n};\n\n/* General settings */\nconst getAnimationMode = () => {\n\tinitConfiguration();\n\treturn initialConfig.animationMode;\n};\n\nconst getTheme = () => {\n\tinitConfiguration();\n\treturn initialConfig.theme;\n};\n\nconst getRTL = () => {\n\tinitConfiguration();\n\treturn initialConfig.rtl;\n};\n\nconst getLanguage = () => {\n\tinitConfiguration();\n\treturn initialConfig.language;\n};\n\n/**\n * Returns if the default language, that is inlined at build time,\n * should be fetched over the network instead.\n * @returns {Boolean}\n */\nconst getFetchDefaultLanguage = () => {\n\tinitConfiguration();\n\treturn initialConfig.fetchDefaultLanguage;\n};\n\nconst getNoConflict = () => {\n\tinitConfiguration();\n\treturn initialConfig.noConflict;\n};\n\nconst getCalendarType = () => {\n\tinitConfiguration();\n\treturn initialConfig.calendarType;\n};\n\nconst getFormatSettings = () => {\n\tinitConfiguration();\n\treturn initialConfig.formatSettings;\n};\n\nconst booleanMapping = new Map();\nbooleanMapping.set(\"true\", true);\nbooleanMapping.set(\"false\", false);\n\nconst parseConfigurationScript = () => {\n\tconst configScript = document.querySelector(\"[data-ui5-config]\") || document.querySelector(\"[data-id='sap-ui-config']\"); // for backward compatibility\n\n\tlet configJSON;\n\n\tif (configScript) {\n\t\ttry {\n\t\t\tconfigJSON = JSON.parse(configScript.innerHTML);\n\t\t} catch (err) {\n\t\t\tconsole.warn(\"Incorrect data-sap-ui-config format. Please use JSON\"); /* eslint-disable-line */\n\t\t}\n\n\t\tif (configJSON) {\n\t\t\tinitialConfig = merge(initialConfig, configJSON);\n\t\t}\n\t}\n};\n\nconst parseURLParameters = () => {\n\tconst params = new URLSearchParams(window.location.search);\n\n\t// Process \"sap-*\" params first\n\tparams.forEach((value, key) => {\n\t\tconst parts = key.split(\"sap-\").length;\n\t\tif (parts === 0 || parts === key.split(\"sap-ui-\").length) {\n\t\t\treturn;\n\t\t}\n\n\t\tapplyURLParam(key, value, \"sap\");\n\t});\n\n\t// Process \"sap-ui-*\" params\n\tparams.forEach((value, key) => {\n\t\tif (!key.startsWith(\"sap-ui\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tapplyURLParam(key, value, \"sap-ui\");\n\t});\n};\n\nconst normalizeParamValue = (param, value) => {\n\tif (param === \"theme\" && value.includes(\"@\")) { // the theme parameter might have @<URL-TO-THEME> in the value - strip this\n\t\treturn value.split(\"@\")[0];\n\t}\n\n\treturn value;\n};\n\nconst applyURLParam = (key, value, paramType) => {\n\tconst lowerCaseValue = value.toLowerCase();\n\tconst param = key.split(`${paramType}-`)[1];\n\n\tif (booleanMapping.has(value)) {\n\t\tvalue = booleanMapping.get(lowerCaseValue);\n\t}\n\n\tvalue = normalizeParamValue(param, value);\n\n\tinitialConfig[param] = value;\n};\n\nconst applyOpenUI5Configuration = () => {\n\tconst OpenUI5Support = getFeature(\"OpenUI5Support\");\n\tif (!OpenUI5Support || !OpenUI5Support.isLoaded()) {\n\t\treturn;\n\t}\n\n\tconst OpenUI5Config = OpenUI5Support.getConfigurationSettingsObject();\n\tinitialConfig = merge(initialConfig, OpenUI5Config);\n};\n\nconst initConfiguration = () => {\n\tif (initialized) {\n\t\treturn;\n\t}\n\n\t// 1. Lowest priority - configuration script\n\tparseConfigurationScript();\n\n\t// 2. URL parameters overwrite configuration script parameters\n\tparseURLParameters();\n\n\t// 3. If OpenUI5 is detected, it has the highest priority\n\tapplyOpenUI5Configuration();\n\n\tinitialized = true;\n};\n\nexport {\n\tgetAnimationMode,\n\tgetTheme,\n\tgetRTL,\n\tgetLanguage,\n\tgetFetchDefaultLanguage,\n\tgetNoConflict,\n\tgetCalendarType,\n\tgetFormatSettings,\n};\n","class EventProvider {\n\tconstructor() {\n\t\tthis._eventRegistry = new Map();\n\t}\n\n\tattachEvent(eventName, fnFunction) {\n\t\tconst eventRegistry = this._eventRegistry;\n\t\tconst eventListeners = eventRegistry.get(eventName);\n\n\t\tif (!Array.isArray(eventListeners)) {\n\t\t\teventRegistry.set(eventName, [fnFunction]);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!eventListeners.includes(fnFunction)) {\n\t\t\teventListeners.push(fnFunction);\n\t\t}\n\t}\n\n\tdetachEvent(eventName, fnFunction) {\n\t\tconst eventRegistry = this._eventRegistry;\n\t\tconst eventListeners = eventRegistry.get(eventName);\n\n\t\tif (!eventListeners) {\n\t\t\treturn;\n\t\t}\n\t\tconst indexOfFnToDetach = eventListeners.indexOf(fnFunction);\n\n\t\tif (indexOfFnToDetach !== -1) {\n\t\t\teventListeners.splice(indexOfFnToDetach, 1);\n\t\t}\n\n\t\tif (eventListeners.length === 0) {\n\t\t\teventRegistry.delete(eventName);\n\t\t}\n\t}\n\n\t/**\n\t * Fires an event and returns the results of all event listeners as an array.\n\t *\n\t * @param eventName the event to fire\n\t * @param data optional data to pass to each event listener\n\t * @returns {Array} an array with the results of all event listeners\n\t */\n\tfireEvent(eventName, data) {\n\t\tconst eventRegistry = this._eventRegistry;\n\t\tconst eventListeners = eventRegistry.get(eventName);\n\n\t\tif (!eventListeners) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn eventListeners.map(fn => {\n\t\t\treturn fn.call(this, data); // eslint-disable-line\n\t\t});\n\t}\n\n\t/**\n\t * Fires an event and returns a promise that will resolve once all listeners have resolved.\n\t *\n\t * @param eventName the event to fire\n\t * @param data optional data to pass to each event listener\n\t * @returns {Promise} a promise that will resolve when all listeners have resolved\n\t */\n\tfireEventAsync(eventName, data) {\n\t\treturn Promise.all(this.fireEvent(eventName, data));\n\t}\n\n\tisHandlerAttached(eventName, fnFunction) {\n\t\tconst eventRegistry = this._eventRegistry;\n\t\tconst eventListeners = eventRegistry.get(eventName);\n\n\t\tif (!eventListeners) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn eventListeners.includes(fnFunction);\n\t}\n\n\thasListeners(eventName) {\n\t\treturn !!this._eventRegistry.get(eventName);\n\t}\n}\n\nexport default EventProvider;\n","import EventProvider from \"../EventProvider.js\";\n\nconst eventProvider = new EventProvider();\nconst LANG_CHANGE = \"languageChange\";\n\nconst attachLanguageChange = listener => {\n\teventProvider.attachEvent(LANG_CHANGE, listener);\n};\n\nconst detachLanguageChange = listener => {\n\teventProvider.detachEvent(LANG_CHANGE, listener);\n};\n\nconst fireLanguageChange = lang => {\n\treturn eventProvider.fireEventAsync(LANG_CHANGE, lang);\n};\n\nexport {\n\tattachLanguageChange,\n\tdetachLanguageChange,\n\tfireLanguageChange,\n};\n","// This is needed as IE11 doesn't have Set.prototype.keys/values/entries, so [...mySet.values()] is not an option\nconst setToArray = s => {\n\tconst arr = [];\n\ts.forEach(item => {\n\t\tarr.push(item);\n\t});\n\treturn arr;\n};\n\nexport default setToArray;\n","const getSingletonElementInstance = (tag, parentElement = document.body) => {\n\tlet el = document.querySelector(tag);\n\n\tif (el) {\n\t\treturn el;\n\t}\n\n\tel = document.createElement(tag);\n\n\treturn parentElement.insertBefore(el, parentElement.firstChild);\n};\n\nexport default getSingletonElementInstance;\n","import getSingletonElementInstance from \"./util/getSingletonElementInstance.js\";\n\nconst getSharedResourcesInstance = () => getSingletonElementInstance(\"ui5-shared-resources\", document.head);\n\n/**\n * Use this method to initialize/get resources that you would like to be shared among UI5 Web Components runtime instances.\n * The data will be accessed via a singleton \"ui5-shared-resources\" HTML element in the \"head\" element of the page.\n *\n * @public\n * @param namespace Unique ID of the resource, may contain \".\" to denote hierarchy\n * @param initialValue Object or primitive that will be used as an initial value if the resource does not exist\n * @returns {*}\n */\nconst getSharedResource = (namespace, initialValue) => {\n\tconst parts = namespace.split(\".\");\n\tlet current = getSharedResourcesInstance();\n\n\tfor (let i = 0; i < parts.length; i++) {\n\t\tconst part = parts[i];\n\t\tconst lastPart = i === parts.length - 1;\n\t\tif (!Object.prototype.hasOwnProperty.call(current, part)) {\n\t\t\tcurrent[part] = lastPart ? initialValue : {};\n\t\t}\n\t\tcurrent = current[part];\n\t}\n\n\treturn current;\n};\n\nexport default getSharedResource;\n","const VersionInfo = {\n\tversion: \"1.3.0\",\n\tmajor: 1,\n\tminor: 3,\n\tpatch: 0,\n\tsuffix: \"\",\n\tisNext: false,\n\tbuildTime: 1650378910,\n};\nexport default VersionInfo;","import VersionInfo from \"./generated/VersionInfo.js\";\nimport getSharedResource from \"./getSharedResource.js\";\n\nlet currentRuntimeIndex;\nlet currentRuntimeAlias = \"\";\n\nconst compareCache = new Map();\n\n/**\n * Central registry where all runtimes register themselves by pushing an object.\n * The index in the registry servers as an ID for the runtime.\n * @type {*}\n */\nconst Runtimes = getSharedResource(\"Runtimes\", []);\n\n/**\n * Registers the current runtime in the shared runtimes resource registry\n */\nconst registerCurrentRuntime = () => {\n\tif (currentRuntimeIndex === undefined) {\n\t\tcurrentRuntimeIndex = Runtimes.length;\n\t\tRuntimes.push({\n\t\t\t...VersionInfo,\n\t\t\talias: currentRuntimeAlias,\n\t\t\tdescription: `Runtime ${currentRuntimeIndex} - ver ${VersionInfo.version}${currentRuntimeAlias ? ` (${currentRuntimeAlias})` : \"\"}`,\n\t\t});\n\t}\n};\n\n/**\n * Returns the index of the current runtime's object in the shared runtimes resource registry\n * @returns {*}\n */\nconst getCurrentRuntimeIndex = () => {\n\treturn currentRuntimeIndex;\n};\n\n/**\n * Compares two runtimes and returns 1 if the first is of a bigger version, -1 if the second is of a bigger version, and 0 if equal\n * @param index1 The index of the first runtime to compare\n * @param index2 The index of the second runtime to compare\n * @returns {number}\n */\nconst compareRuntimes = (index1, index2) => {\n\tconst cacheIndex = `${index1},${index2}`;\n\tif (compareCache.has(cacheIndex)) {\n\t\treturn compareCache.get(cacheIndex);\n\t}\n\n\tconst runtime1 = Runtimes[index1];\n\tconst runtime2 = Runtimes[index2];\n\n\tif (!runtime1 || !runtime2) {\n\t\tthrow new Error(\"Invalid runtime index supplied\");\n\t}\n\n\t// If any of the two is a next version, bigger buildTime wins\n\tif (runtime1.isNext || runtime2.isNext) {\n\t\treturn runtime1.buildTime - runtime2.buildTime;\n\t}\n\n\t// If major versions differ, bigger one wins\n\tconst majorDiff = runtime1.major - runtime2.major;\n\tif (majorDiff) {\n\t\treturn majorDiff;\n\t}\n\n\t// If minor versions differ, bigger one wins\n\tconst minorDiff = runtime1.minor - runtime2.minor;\n\tif (minorDiff) {\n\t\treturn minorDiff;\n\t}\n\n\t// If patch versions differ, bigger one wins\n\tconst patchDiff = runtime1.patch - runtime2.patch;\n\tif (patchDiff) {\n\t\treturn patchDiff;\n\t}\n\n\t// Bigger suffix wins, f.e. rc10 > rc9\n\t// Important: suffix is alphanumeric, must use natural compare\n\tconst collator = new Intl.Collator(undefined, { numeric: true, sensitivity: \"base\" });\n\tconst result = collator.compare(runtime1.suffix, runtime2.suffix);\n\n\tcompareCache.set(cacheIndex, result);\n\treturn result;\n};\n\n/**\n * Set an alias for the the current app/library/microfrontend which will appear in debug messages and console warnings\n * @param alias\n */\nconst setRuntimeAlias = alias => {\n\tcurrentRuntimeAlias = alias;\n};\n\nconst getAllRuntimes = () => {\n\treturn Runtimes;\n};\n\nexport {\n\tgetCurrentRuntimeIndex,\n\tregisterCurrentRuntime,\n\tcompareRuntimes,\n\tsetRuntimeAlias,\n\tgetAllRuntimes,\n};\n","import setToArray from \"./util/setToArray.js\";\nimport getSharedResource from \"./getSharedResource.js\";\nimport { getCurrentRuntimeIndex, compareRuntimes, getAllRuntimes } from \"./Runtimes.js\";\n\nconst Tags = getSharedResource(\"Tags\", new Map());\n\nconst Definitions = new Set();\nlet Failures = {};\nlet failureTimeout;\n\nconst UNKNOWN_RUNTIME = \"unknown\";\n\nconst registerTag = tag => {\n\tDefinitions.add(tag);\n\tTags.set(tag, getCurrentRuntimeIndex());\n};\n\nconst isTagRegistered = tag => {\n\treturn Definitions.has(tag);\n};\n\nconst getAllRegisteredTags = () => {\n\treturn setToArray(Definitions);\n};\n\nconst recordTagRegistrationFailure = tag => {\n\tlet tagRegRuntimeIndex = Tags.get(tag);\n\tif (tagRegRuntimeIndex === undefined) {\n\t\ttagRegRuntimeIndex = UNKNOWN_RUNTIME; // If the tag is taken, but not registered in Tags, then a version before 1.1.0 defined it => use the \"unknown\" key\n\t}\n\tFailures[tagRegRuntimeIndex] = Failures[tagRegRuntimeIndex] || new Set();\n\tFailures[tagRegRuntimeIndex].add(tag);\n\n\tif (!failureTimeout) {\n\t\tfailureTimeout = setTimeout(() => {\n\t\t\tdisplayFailedRegistrations();\n\t\t\tFailures = {};\n\t\t\tfailureTimeout = undefined;\n\t\t}, 1000);\n\t}\n};\n\nconst displayFailedRegistrations = () => {\n\tconst allRuntimes = getAllRuntimes();\n\tconst currentRuntimeIndex = getCurrentRuntimeIndex();\n\tconst currentRuntime = allRuntimes[currentRuntimeIndex];\n\n\tlet message = `Multiple UI5 Web Components instances detected.`;\n\n\tif (allRuntimes.length > 1) {\n\t\tmessage = `${message}\\nLoading order (versions before 1.1.0 not listed): ${allRuntimes.map(runtime => `\\n${runtime.description}`).join(\"\")}`;\n\t}\n\n\tObject.keys(Failures).forEach(otherRuntimeIndex => {\n\t\tlet comparison;\n\t\tlet otherRuntime;\n\n\t\tif (otherRuntimeIndex === UNKNOWN_RUNTIME) { // version < 1.1.0 defined the tag\n\t\t\tcomparison = 1; // the current runtime is considered newer\n\t\t\totherRuntime = {\n\t\t\t\tdescription: `Older unknown runtime`,\n\t\t\t};\n\t\t} else {\n\t\t\tcomparison = compareRuntimes(currentRuntimeIndex, otherRuntimeIndex);\n\t\t\totherRuntime = allRuntimes[otherRuntimeIndex];\n\t\t}\n\n\t\tlet compareWord;\n\t\tif (comparison > 0) {\n\t\t\tcompareWord = \"an older\";\n\t\t} else if (comparison < 0) {\n\t\t\tcompareWord = \"a newer\";\n\t\t} else {\n\t\t\tcompareWord = \"the same\";\n\t\t}\n\t\tmessage = `${message}\\n\\n\"${currentRuntime.description}\" failed to define ${Failures[otherRuntimeIndex].size} tag(s) as they were defined by a runtime of ${compareWord} version \"${otherRuntime.description}\": ${setToArray(Failures[otherRuntimeIndex]).sort().join(\", \")}.`;\n\n\t\tif (comparison > 0) {\n\t\t\tmessage = `${message}\\nWARNING! If your code uses features of the above web components, unavailable in ${otherRuntime.description}, it might not work as expected!`;\n\t\t} else {\n\t\t\tmessage = `${message}\\nSince the above web components were defined by the same or newer version runtime, they should be compatible with your code.`;\n\t\t}\n\t});\n\n\tmessage = `${message}\\n\\nTo prevent other runtimes from defining tags that you use, consider using scoping or have third-party libraries use scoping: https://github.com/SAP/ui5-webcomponents/blob/master/docs/2-advanced/03-scoping.md.`;\n\n\tconsole.warn(message); // eslint-disable-line\n};\n\nexport {\n\tregisterTag,\n\tisTagRegistered,\n\tgetAllRegisteredTags,\n\trecordTagRegistrationFailure,\n};\n","const rtlAwareSet = new Set();\n\nconst markAsRtlAware = klass => {\n\trtlAwareSet.add(klass);\n};\n\nconst isRtlAware = klass => {\n\treturn rtlAwareSet.has(klass);\n};\n\nexport {\n\tmarkAsRtlAware,\n\tisRtlAware,\n};\n","import EventProvider from \"./EventProvider.js\";\nimport RenderQueue from \"./RenderQueue.js\";\nimport { getAllRegisteredTags } from \"./CustomElementsRegistry.js\";\nimport { isRtlAware } from \"./locale/RTLAwareRegistry.js\";\n\nconst registeredElements = new Set();\nconst eventProvider = new EventProvider();\n\nconst invalidatedWebComponents = new RenderQueue(); // Queue for invalidated web components\n\nlet renderTaskPromise,\n\trenderTaskPromiseResolve;\n\nlet mutationObserverTimer;\n\nlet queuePromise;\n\n/**\n * Schedules a render task (if not already scheduled) to render the component\n *\n * @param webComponent\n * @returns {Promise}\n */\nconst renderDeferred = async webComponent => {\n\t// Enqueue the web component\n\tinvalidatedWebComponents.add(webComponent);\n\n\t// Schedule a rendering task\n\tawait scheduleRenderTask();\n};\n\n/**\n * Renders a component synchronously and adds it to the registry of rendered components\n *\n * @param webComponent\n */\nconst renderImmediately = webComponent => {\n\teventProvider.fireEvent(\"beforeComponentRender\", webComponent);\n\tregisteredElements.add(webComponent);\n\twebComponent._render();\n};\n\n/**\n * Cancels the rendering of a component, if awaiting to be rendered, and removes it from the registry of rendered components\n *\n * @param webComponent\n */\nconst cancelRender = webComponent => {\n\tinvalidatedWebComponents.remove(webComponent);\n\tregisteredElements.delete(webComponent);\n};\n\n/**\n * Schedules a rendering task, if not scheduled already\n */\nconst scheduleRenderTask = async () => {\n\tif (!queuePromise) {\n\t\tqueuePromise = new Promise(resolve => {\n\t\t\twindow.requestAnimationFrame(() => {\n\t\t\t\t// Render all components in the queue\n\n\t\t\t\t// console.log(`--------------------RENDER TASK START------------------------------`); // eslint-disable-line\n\t\t\t\tinvalidatedWebComponents.process(renderImmediately);\n\t\t\t\t// console.log(`--------------------RENDER TASK END------------------------------`); // eslint-disable-line\n\n\t\t\t\t// Resolve the promise so that callers of renderDeferred can continue\n\t\t\t\tqueuePromise = null;\n\t\t\t\tresolve();\n\n\t\t\t\t// Wait for Mutation observer before the render task is considered finished\n\t\t\t\tif (!mutationObserverTimer) {\n\t\t\t\t\tmutationObserverTimer = setTimeout(() => {\n\t\t\t\t\t\tmutationObserverTimer = undefined;\n\t\t\t\t\t\tif (invalidatedWebComponents.isEmpty()) {\n\t\t\t\t\t\t\t_resolveTaskPromise();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 200);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tawait queuePromise;\n};\n\n/**\n * return a promise that will be resolved once all invalidated web components are rendered\n */\nconst whenDOMUpdated = () => {\n\tif (renderTaskPromise) {\n\t\treturn renderTaskPromise;\n\t}\n\n\trenderTaskPromise = new Promise(resolve => {\n\t\trenderTaskPromiseResolve = resolve;\n\t\twindow.requestAnimationFrame(() => {\n\t\t\tif (invalidatedWebComponents.isEmpty()) {\n\t\t\t\trenderTaskPromise = undefined;\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t});\n\n\treturn renderTaskPromise;\n};\n\nconst whenAllCustomElementsAreDefined = () => {\n\tconst definedPromises = getAllRegisteredTags().map(tag => customElements.whenDefined(tag));\n\treturn Promise.all(definedPromises);\n};\n\nconst renderFinished = async () => {\n\tawait whenAllCustomElementsAreDefined();\n\tawait whenDOMUpdated();\n};\n\nconst _resolveTaskPromise = () => {\n\tif (!invalidatedWebComponents.isEmpty()) {\n\t\t// More updates are pending. Resolve will be called again\n\t\treturn;\n\t}\n\n\tif (renderTaskPromiseResolve) {\n\t\trenderTaskPromiseResolve();\n\t\trenderTaskPromiseResolve = undefined;\n\t\trenderTaskPromise = undefined;\n\t}\n};\n\n/**\n * Re-renders all UI5 Elements on the page, with the option to specify filters to rerender only some components.\n *\n * Usage:\n * reRenderAllUI5Elements() -> re-renders all components\n * reRenderAllUI5Elements({tag: \"ui5-button\"}) -> re-renders only instances of ui5-button\n * reRenderAllUI5Elements({rtlAware: true}) -> re-renders only rtlAware components\n * reRenderAllUI5Elements({languageAware: true}) -> re-renders only languageAware components\n * reRenderAllUI5Elements({themeAware: true}) -> re-renders only themeAware components\n * reRenderAllUI5Elements({rtlAware: true, languageAware: true}) -> re-renders components that are rtlAware or languageAware\n * etc...\n *\n * @public\n * @param {Object|undefined} filters - Object with keys that can be \"rtlAware\" or \"languageAware\"\n * @returns {Promise<void>}\n */\nconst reRenderAllUI5Elements = async filters => {\n\tregisteredElements.forEach(element => {\n\t\tconst tag = element.constructor.getMetadata().getTag();\n\t\tconst rtlAware = isRtlAware(element.constructor);\n\t\tconst languageAware = element.constructor.getMetadata().isLanguageAware();\n\t\tconst themeAware = element.constructor.getMetadata().isThemeAware();\n\t\tif (!filters || (filters.tag === tag) || (filters.rtlAware && rtlAware) || (filters.languageAware && languageAware) || (filters.themeAware && themeAware)) {\n\t\t\trenderDeferred(element);\n\t\t}\n\t});\n\tawait renderFinished();\n};\n\nconst attachBeforeComponentRender = listener => {\n\teventProvider.attachEvent(\"beforeComponentRender\", listener);\n};\n\nconst detachBeforeComponentRender = listener => {\n\teventProvider.detachEvent(\"beforeComponentRender\", listener);\n};\n\nexport {\n\trenderDeferred,\n\trenderImmediately,\n\tcancelRender,\n\trenderFinished,\n\treRenderAllUI5Elements,\n\tattachBeforeComponentRender,\n\tdetachBeforeComponentRender,\n};\n","const MAX_PROCESS_COUNT = 10;\n\nclass RenderQueue {\n\tconstructor() {\n\t\tthis.list = []; // Used to store the web components in order\n\t\tthis.lookup = new Set(); // Used for faster search\n\t}\n\n\tadd(webComponent) {\n\t\tif (this.lookup.has(webComponent)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.list.push(webComponent);\n\t\tthis.lookup.add(webComponent);\n\t}\n\n\tremove(webComponent) {\n\t\tif (!this.lookup.has(webComponent)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.list = this.list.filter(item => item !== webComponent);\n\t\tthis.lookup.delete(webComponent);\n\t}\n\n\tshift() {\n\t\tconst webComponent = this.list.shift();\n\t\tif (webComponent) {\n\t\t\tthis.lookup.delete(webComponent);\n\t\t\treturn webComponent;\n\t\t}\n\t}\n\n\tisEmpty() {\n\t\treturn this.list.length === 0;\n\t}\n\n\tisAdded(webComponent) {\n\t\treturn this.lookup.has(webComponent);\n\t}\n\n\t/**\n\t * Processes the whole queue by executing the callback on each component,\n\t * while also imposing restrictions on how many times a component may be processed.\n\t *\n\t * @param callback - function with one argument (the web component to be processed)\n\t */\n\tprocess(callback) {\n\t\tlet webComponent;\n\t\tconst stats = new Map();\n\n\t\twebComponent = this.shift();\n\t\twhile (webComponent) {\n\t\t\tconst timesProcessed = stats.get(webComponent) || 0;\n\t\t\tif (timesProcessed > MAX_PROCESS_COUNT) {\n\t\t\t\tthrow new Error(`Web component processed too many times this task, max allowed is: ${MAX_PROCESS_COUNT}`);\n\t\t\t}\n\t\t\tcallback(webComponent);\n\t\t\tstats.set(webComponent, timesProcessed + 1);\n\t\t\twebComponent = this.shift();\n\t\t}\n\t}\n}\n\nexport default RenderQueue;\n","import {\n\tgetLanguage as getConfiguredLanguage,\n\tgetFetchDefaultLanguage as getConfiguredFetchDefaultLanguage,\n} from \"../InitialConfiguration.js\";\nimport { fireLanguageChange } from \"../locale/languageChange.js\";\nimport { reRenderAllUI5Elements } from \"../Render.js\";\n\nlet language;\nlet fetchDefaultLanguage;\n\n/**\n * Returns the currently configured language, or the browser language as a fallback\n * @returns {String}\n */\nconst getLanguage = () => {\n\tif (language === undefined) {\n\t\tlanguage = getConfiguredLanguage();\n\t}\n\treturn language;\n};\n\n/**\n * Changes the current language, re-fetches all message bundles, updates all language-aware components\n * and returns a promise that resolves when all rendering is done\n *\n * @param newLanguage\n * @returns {Promise<void>}\n */\nconst setLanguage = async newLanguage => {\n\tif (language === newLanguage) {\n\t\treturn;\n\t}\n\n\tlanguage = newLanguage;\n\n\tawait fireLanguageChange(newLanguage);\n\tawait reRenderAllUI5Elements({ languageAware: true });\n};\n\n/**\n * Defines if the default language, that is inlined, should be\n * fetched over the network instead of using the inlined one.\n * <b>Note:</b> By default the language will not be fetched.\n *\n * @param {Boolean} fetchDefaultLanguage\n */\nconst setFetchDefaultLanguage = fetchDefaultLang => {\n\tfetchDefaultLanguage = fetchDefaultLang;\n};\n\n/**\n * Returns if the default language, that is inlined, should be fetched over the network.\n * @returns {Boolean}\n */\nconst getFetchDefaultLanguage = () => {\n\tif (fetchDefaultLanguage === undefined) {\n\t\tsetFetchDefaultLanguage(getConfiguredFetchDefaultLanguage());\n\t}\n\n\treturn fetchDefaultLanguage;\n};\n\nexport {\n\tgetLanguage,\n\tsetLanguage,\n\tsetFetchDefaultLanguage,\n\tgetFetchDefaultLanguage,\n};\n","const rLocale = /^((?:[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;\n\nclass Locale {\n\tconstructor(sLocaleId) {\n\t\tconst aResult = rLocale.exec(sLocaleId.replace(/_/g, \"-\"));\n\t\tif (aResult === null) {\n\t\t\tthrow new Error(`The given language ${sLocaleId} does not adhere to BCP-47.`);\n\t\t}\n\t\tthis.sLocaleId = sLocaleId;\n\t\tthis.sLanguage = aResult[1] || null;\n\t\tthis.sScript = aResult[2] || null;\n\t\tthis.sRegion = aResult[3] || null;\n\t\tthis.sVariant = (aResult[4] && aResult[4].slice(1)) || null;\n\t\tthis.sExtension = (aResult[5] && aResult[5].slice(1)) || null;\n\t\tthis.sPrivateUse = aResult[6] || null;\n\t\tif (this.sLanguage) {\n\t\t\tthis.sLanguage = this.sLanguage.toLowerCase();\n\t\t}\n\t\tif (this.sScript) {\n\t\t\tthis.sScript = this.sScript.toLowerCase().replace(/^[a-z]/, s => {\n\t\t\t\treturn s.toUpperCase();\n\t\t\t});\n\t\t}\n\t\tif (this.sRegion) {\n\t\t\tthis.sRegion = this.sRegion.toUpperCase();\n\t\t}\n\t}\n\n\tgetLanguage() {\n\t\treturn this.sLanguage;\n\t}\n\n\tgetScript() {\n\t\treturn this.sScript;\n\t}\n\n\tgetRegion() {\n\t\treturn this.sRegion;\n\t}\n\n\tgetVariant() {\n\t\treturn this.sVariant;\n\t}\n\n\tgetVariantSubtags() {\n\t\treturn this.sVariant ? this.sVariant.split(\"-\") : [];\n\t}\n\n\tgetExtension() {\n\t\treturn this.sExtension;\n\t}\n\n\tgetExtensionSubtags() {\n\t\treturn this.sExtension ? this.sExtension.slice(2).split(\"-\") : [];\n\t}\n\n\tgetPrivateUse() {\n\t\treturn this.sPrivateUse;\n\t}\n\n\tgetPrivateUseSubtags() {\n\t\treturn this.sPrivateUse ? this.sPrivateUse.slice(2).split(\"-\") : [];\n\t}\n\n\thasPrivateUseSubtag(sSubtag) {\n\t\treturn this.getPrivateUseSubtags().indexOf(sSubtag) >= 0;\n\t}\n\n\ttoString() {\n\t\tconst r = [this.sLanguage];\n\n\t\tif (this.sScript) {\n\t\t\tr.push(this.sScript);\n\t\t}\n\t\tif (this.sRegion) {\n\t\t\tr.push(this.sRegion);\n\t\t}\n\t\tif (this.sVariant) {\n\t\t\tr.push(this.sVariant);\n\t\t}\n\t\tif (this.sExtension) {\n\t\t\tr.push(this.sExtension);\n\t\t}\n\t\tif (this.sPrivateUse) {\n\t\t\tr.push(this.sPrivateUse);\n\t\t}\n\t\treturn r.join(\"-\");\n\t}\n}\n\nexport default Locale;\n","import detectNavigatorLanguage from \"../util/detectNavigatorLanguage.js\";\nimport { getLanguage as getConfigLanguage } from \"../config/Language.js\";\nimport Locale from \"./Locale.js\";\n\nconst cache = new Map();\n\nconst getLocaleInstance = lang => {\n\tif (!cache.has(lang)) {\n\t\tcache.set(lang, new Locale(lang));\n\t}\n\n\treturn cache.get(lang);\n};\n\nconst convertToLocaleOrNull = lang => {\n\ttry {\n\t\tif (lang && typeof lang === \"string\") {\n\t\t\treturn getLocaleInstance(lang);\n\t\t}\n\t} catch (e) {\n\t\t// ignore\n\t}\n};\n\n/**\n * Returns the locale based on the parameter or configured language Configuration#getLanguage\n * If no language has been configured - a new locale based on browser language is returned\n */\nconst getLocale = lang => {\n\tif (lang) {\n\t\treturn convertToLocaleOrNull(lang);\n\t}\n\n\tif (getConfigLanguage()) {\n\t\treturn getLocaleInstance(getConfigLanguage());\n\t}\n\n\treturn convertToLocaleOrNull(detectNavigatorLanguage());\n};\n\nexport default getLocale;\n","import { DEFAULT_LOCALE } from \"../generated/AssetParameters.js\";\n\nconst localeRegEX = /^((?:[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;\nconst SAPSupportabilityLocales = /(?:^|-)(saptrc|sappsd)(?:-|$)/i;\n\n/* Map for old language names for a few ISO639 codes. */\nconst M_ISO639_NEW_TO_OLD = {\n\t\"he\": \"iw\",\n\t\"yi\": \"ji\",\n\t\"id\": \"in\",\n\t\"sr\": \"sh\",\n};\n\n/**\n * Normalizes the given locale in BCP-47 syntax.\n * @param {string} locale locale to normalize\n * @returns {string} Normalized locale, \"undefined\" if the locale can't be normalized or the default locale, if no locale provided.\n */\nconst normalizeLocale = locale => {\n\tlet m;\n\n\tif (!locale) {\n\t\treturn DEFAULT_LOCALE;\n\t}\n\n\tif (typeof locale === \"string\" && (m = localeRegEX.exec(locale.replace(/_/g, \"-\")))) {/* eslint-disable-line */\n\t\tlet language = m[1].toLowerCase();\n\t\tlet region = m[3] ? m[3].toUpperCase() : undefined;\n\t\tconst script = m[2] ? m[2].toLowerCase() : undefined;\n\t\tconst variants = m[4] ? m[4].slice(1) : undefined;\n\t\tconst isPrivate = m[6];\n\n\t\tlanguage = M_ISO639_NEW_TO_OLD[language] || language;\n\n\t\t// recognize and convert special SAP supportability locales (overwrites m[]!)\n\t\tif ((isPrivate && (m = SAPSupportabilityLocales.exec(isPrivate))) /* eslint-disable-line */ ||\n\t\t\t(variants && (m = SAPSupportabilityLocales.exec(variants)))) {/* eslint-disable-line */\n\t\t\treturn `en_US_${m[1].toLowerCase()}`; // for now enforce en_US (agreed with SAP SLS)\n\t\t}\n\n\t\t// Chinese: when no region but a script is specified, use default region for each script\n\t\tif (language === \"zh\" && !region) {\n\t\t\tif (script === \"hans\") {\n\t\t\t\tregion = \"CN\";\n\t\t\t} else if (script === \"hant\") {\n\t\t\t\tregion = \"TW\";\n\t\t\t}\n\t\t}\n\n\t\treturn language + (region ? \"_\" + region + (variants ? \"_\" + variants.replace(\"-\", \"_\") : \"\") : \"\"); /* eslint-disable-line */\n\t}\n};\n\nexport default normalizeLocale;\n","import { DEFAULT_LOCALE } from \"../generated/AssetParameters.js\";\n\n/**\n * Calculates the next fallback locale for the given locale.\n *\n * @param {string} locale Locale string in Java format (underscores) or null\n * @returns {string} Next fallback Locale or \"en\" if no fallbacks found.\n */\nconst nextFallbackLocale = locale => {\n\tif (!locale) {\n\t\treturn DEFAULT_LOCALE;\n\t}\n\n\tif (locale === \"zh_HK\") {\n\t\treturn \"zh_TW\";\n\t}\n\n\t// if there are multiple segments (separated by underscores), remove the last one\n\tconst p = locale.lastIndexOf(\"_\");\n\tif (p >= 0) {\n\t\treturn locale.slice(0, p);\n\t}\n\n\t// for any language but the default, fallback to the default first before falling back to the 'raw' language (empty string)\n\treturn locale !== DEFAULT_LOCALE ? DEFAULT_LOCALE : \"\";\n};\n\nexport default nextFallbackLocale;\n","import getLocale from \"../locale/getLocale.js\";\nimport { attachLanguageChange } from \"../locale/languageChange.js\";\nimport normalizeLocale from \"../locale/normalizeLocale.js\";\nimport nextFallbackLocale from \"../locale/nextFallbackLocale.js\";\nimport { DEFAULT_LANGUAGE } from \"../generated/AssetParameters.js\";\nimport { getFetchDefaultLanguage } from \"../config/Language.js\";\n\n// contains package names for which the warning has been shown\nconst warningShown = new Set();\nconst reportedErrors = new Set();\n\nconst bundleData = new Map();\nconst bundlePromises = new Map();\nconst loaders = new Map();\n\n/**\n *\n * @param {string} packageName for which package this loader can fetch data\n * @param {function} loader async function that will be passed a localeId and should return a JSON object\n * @param {Array} localeIds Array of locale IDs that this loader can handle\n */\nconst registerI18nLoader = (packageName, localeId, loader) => {\n\t// register loader by key\n\tconst bundleKey = `${packageName}/${localeId}`;\n\tloaders.set(bundleKey, loader);\n};\n\nconst _setI18nBundleData = (packageName, data) => {\n\tbundleData.set(packageName, data);\n};\n\nconst getI18nBundleData = packageName => {\n\treturn bundleData.get(packageName);\n};\n\n/**\n * @public\n * @deprecated\n */\nconst registerI18nBundle = (_packageName, _bundle) => {\n\tthrow new Error(\"This method has been removed. Use `registerI18nLoader` instead.\");\n};\n\nconst _hasLoader = (packageName, localeId) => {\n\tconst bundleKey = `${packageName}/${localeId}`;\n\treturn loaders.has(bundleKey);\n};\n\n// load bundle over the network once\nconst _loadMessageBundleOnce = (packageName, localeId) => {\n\tconst bundleKey = `${packageName}/${localeId}`;\n\tconst loadMessageBundle = loaders.get(bundleKey);\n\n\tif (!bundlePromises.get(bundleKey)) {\n\t\tbundlePromises.set(bundleKey, loadMessageBundle(localeId));\n\t}\n\n\treturn bundlePromises.get(bundleKey);\n};\n\nconst _showAssetsWarningOnce = packageName => {\n\tif (!warningShown.has(packageName)) {\n\t\tconsole.warn(`[${packageName}]: Message bundle assets are not configured. Falling back to English texts.`, /* eslint-disable-line */\n\t\t` Add \\`import \"${packageName}/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.`); /* eslint-disable-line */\n\t\twarningShown.add(packageName);\n\t}\n};\n\n/**\n * This method preforms the asynchronous task of fetching the actual text resources. It will fetch\n * each text resource over the network once (even for multiple calls to the same method).\n * It should be fully finished before the i18nBundle class is created in the webcomponents.\n * This method uses the bundle URLs that are populated by the <code>registerI18nBundle</code> method.\n * To simplify the usage, the synchronization of both methods happens internally for the same <code>bundleId</code>\n * @param {packageName} packageName the NPM package name\n * @public\n */\nconst fetchI18nBundle = async packageName => {\n\tconst language = getLocale().getLanguage();\n\tconst region = getLocale().getRegion();\n\tlet localeId = normalizeLocale(language + (region ? `-${region}` : ``));\n\n\twhile (localeId !== DEFAULT_LANGUAGE && !_hasLoader(packageName, localeId)) {\n\t\tlocaleId = nextFallbackLocale(localeId);\n\t}\n\n\t// use default language unless configured to always fetch it from the network\n\tconst fetchDefaultLanguage = getFetchDefaultLanguage();\n\tif (localeId === DEFAULT_LANGUAGE && !fetchDefaultLanguage) {\n\t\t_setI18nBundleData(packageName, null); // reset for the default language (if data was set for a previous language)\n\t\treturn;\n\t}\n\n\tif (!_hasLoader(packageName, localeId)) {\n\t\t_showAssetsWarningOnce(packageName);\n\t\treturn;\n\t}\n\n\ttry {\n\t\tconst data = await _loadMessageBundleOnce(packageName, localeId);\n\t\t_setI18nBundleData(packageName, data);\n\t} catch (e) {\n\t\tif (!reportedErrors.has(e.message)) {\n\t\t\treportedErrors.add(e.message);\n\t\t\tconsole.error(e.message); /* eslint-disable-line */\n\t\t}\n\t}\n};\n\n// When the language changes dynamically (the user calls setLanguage), re-fetch all previously fetched bundles\nattachLanguageChange(() => {\n\tconst allPackages = [...bundleData.keys()];\n\treturn Promise.all(allPackages.map(fetchI18nBundle));\n});\n\nexport {\n\tregisterI18nLoader,\n\tfetchI18nBundle,\n\tregisterI18nBundle,\n\tgetI18nBundleData,\n};\n","import { attachLanguageChange } from \"../locale/languageChange.js\";\nimport getLocale from \"../locale/getLocale.js\";\nimport { DEFAULT_LOCALE, SUPPORTED_LOCALES } from \"../generated/AssetParameters.js\";\nimport { getFeature } from \"../FeaturesRegistry.js\";\n\nconst localeDataMap = new Map();\nconst loaders = new Map();\nconst cldrPromises = new Map();\nconst reportedErrors = new Set();\nlet warningShown = false;\n\nconst M_ISO639_OLD_TO_NEW = {\n\t\"iw\": \"he\",\n\t\"ji\": \"yi\",\n\t\"in\": \"id\",\n};\n\nconst DEV_MODE = false;\n\nconst _showAssetsWarningOnce = localeId => {\n\tif (warningShown) {\n\t\treturn;\n\t}\n\n\tif (!DEV_MODE) {\n\t\tconsole.warn(`[LocaleData] Supported locale \"${localeId}\" not configured, import the \"Assets.js\" module from the webcomponents package you are using.`); /* eslint-disable-line */\n\t} else {\n\t\tconsole.warn(`[LocaleData] Note: in dev mode, CLDR assets might be disabled for performance reasons. Try running \"ENABLE_CLDR=1 yarn start\" to test CLDR assets.`); /* eslint-disable-line */\n\t}\n\n\twarningShown = true;\n};\n\nconst calcLocale = (language, region, script) => {\n\t// normalize language and handle special cases\n\tlanguage = (language && M_ISO639_OLD_TO_NEW[language]) || language;\n\t// Special case 1: in an SAP context, the inclusive language code \"no\" always means Norwegian Bokmal (\"nb\")\n\tif (language === \"no\") {\n\t\tlanguage = \"nb\";\n\t}\n\t// Special case 2: for Chinese, derive a default region from the script (this behavior is inherited from Java)\n\tif (language === \"zh\" && !region) {\n\t\tif (script === \"Hans\") {\n\t\t\tregion = \"CN\";\n\t\t} else if (script === \"Hant\") {\n\t\t\tregion = \"TW\";\n\t\t}\n\t}\n\n\t// Special case 3: for Serbian, there are cyrillic and latin scripts, \"sh\" and \"sr-latn\" map to \"latin\", \"sr\" maps to cyrillic.\n\tif (language === \"sh\" || (language === \"sr\" && script === \"Latn\")) {\n\t\tlanguage = \"sr\";\n\t\tregion = \"Latn\";\n\t}\n\n\t// try language + region\n\tlet localeId = `${language}_${region}`;\n\tif (SUPPORTED_LOCALES.includes(localeId)) {\n\t\tif (loaders.has(localeId)) {\n\t\t\t// supported and has loader\n\t\t\treturn localeId;\n\t\t}\n\n\t\t// supported, no loader - fallback to default and warn\n\t\t_showAssetsWarningOnce(localeId);\n\t\treturn DEFAULT_LOCALE;\n\t}\n\n\t// not supported, try language only\n\tlocaleId = language;\n\tif (SUPPORTED_LOCALES.includes(localeId)) {\n\t\tif (loaders.has(localeId)) {\n\t\t\t// supported and has loader\n\t\t\treturn localeId;\n\t\t}\n\n\t\t// supported, no loader - fallback to default and warn\n\t\t_showAssetsWarningOnce(localeId);\n\t\treturn DEFAULT_LOCALE;\n\t}\n\n\t// not supported - fallback to default locale\n\treturn DEFAULT_LOCALE;\n};\n\n// internal set data\nconst setLocaleData = (localeId, content) => {\n\tlocaleDataMap.set(localeId, content);\n};\n\n// external getSync\nconst getLocaleData = localeId => {\n\t// if there is no loader, the default fallback was fetched and a warning was given - use default locale instead\n\tif (!loaders.has(localeId)) {\n\t\tlocaleId = DEFAULT_LOCALE;\n\t}\n\n\tconst content = localeDataMap.get(localeId);\n\tif (!content) {\n\t\tthrow new Error(`CLDR data for locale ${localeId} is not loaded!`);\n\t}\n\n\treturn content;\n};\n\n// load bundle over the network once\nconst _loadCldrOnce = localeId => {\n\tconst loadCldr = loaders.get(localeId);\n\n\tif (!cldrPromises.get(localeId)) {\n\t\tcldrPromises.set(localeId, loadCldr(localeId));\n\t}\n\n\treturn cldrPromises.get(localeId);\n};\n\n// external getAsync\nconst fetchCldr = async (language, region, script) => {\n\tconst localeId = calcLocale(language, region, script);\n\n\t// reuse OpenUI5 CLDR if present\n\tconst OpenUI5Support = getFeature(\"OpenUI5Support\");\n\tif (OpenUI5Support) {\n\t\tconst cldrContent = OpenUI5Support.getLocaleDataObject();\n\t\tif (cldrContent) {\n\t\t\t// only if openui5 actually returned valid content\n\t\t\tsetLocaleData(localeId, cldrContent);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// fetch it\n\ttry {\n\t\tconst cldrContent = await _loadCldrOnce(localeId);\n\t\tsetLocaleData(localeId, cldrContent);\n\t} catch (e) {\n\t\tif (!reportedErrors.has(e.message)) {\n\t\t\treportedErrors.add(e.message);\n\t\t\tconsole.error(e.message); /* eslint-disable-line */\n\t\t}\n\t}\n};\n\nconst registerLocaleDataLoader = (localeId, loader) => {\n\tloaders.set(localeId, loader);\n};\n\n// register default loader for \"en\" from ui5 CDN (dev workflow without assets)\nregisterLocaleDataLoader(\"en\", async runtimeLocaleId => {\n\treturn (await fetch(`https://ui5.sap.com/1.60.2/resources/sap/ui/core/cldr/en.json`)).json();\n});\n\n// When the language changes dynamically (the user calls setLanguage),\n// re-fetch the required CDRD data.\nattachLanguageChange(() => {\n\tconst locale = getLocale();\n\treturn fetchCldr(locale.getLanguage(), locale.getRegion(), locale.getScript());\n});\n\nexport {\n\tregisterLocaleDataLoader,\n\tfetchCldr,\n\tgetLocaleData,\n};\n","import { DEFAULT_THEME } from \"../generated/AssetParameters.js\";\n\nconst themeStyles = new Map();\nconst loaders = new Map();\nconst registeredPackages = new Set();\nconst registeredThemes = new Set();\n\n/**\n * Used to provide CSS Vars for a specific theme for a specific package.\n * The CSS Vars can be passed directly as a string (containing them), as an object with a \"_\" property(containing them in the \"_\" property), or as a URL.\n * This URL must point to a JSON file, containing a \"_\" property.\n *\n * Example usage:\n * 1) Pass the CSS Vars as a string directly.\n * registerThemeProperties(\"my-package\", \"my_theme\", \":root{--var1: red;}\");\n *\n * @public\n * @param packageName - the NPM package for which CSS Vars are registered\n * @param themeName - the theme which the CSS Vars implement\n * @param style - the style content directly\n * @deprecated\n */\nconst registerThemeProperties = (_packageName, _themeName, _style) => {\n\tthrow new Error(\"`registerThemeProperties` has been depracated. Use `registerThemePropertiesLoader` instead.\");\n};\n\nconst registerThemePropertiesLoader = (packageName, themeName, loader) => {\n\tloaders.set(`${packageName}/${themeName}`, loader);\n\tregisteredPackages.add(packageName);\n\tregisteredThemes.add(themeName);\n};\n\nconst getThemeProperties = async (packageName, themeName) => {\n\tconst style = themeStyles.get(`${packageName}_${themeName}`);\n\tif (style !== undefined) { // it's valid for style to be an empty string\n\t\treturn style;\n\t}\n\n\tif (!registeredThemes.has(themeName)) {\n\t\tconst regThemesStr = [...registeredThemes.values()].join(\", \");\n\t\tconsole.warn(`You have requested a non-registered theme - falling back to ${DEFAULT_THEME}. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */\n\t\treturn themeStyles.get(`${packageName}_${DEFAULT_THEME}`);\n\t}\n\n\tconst loader = loaders.get(`${packageName}/${themeName}`);\n\tif (!loader) {\n\t\t// no themes for package\n\t\tconsole.error(`Theme [${themeName}] not registered for package [${packageName}]`); /* eslint-disable-line */\n\t\treturn;\n\t}\n\tlet data;\n\ttry {\n\t\tdata = await loader(themeName);\n\t} catch (e) {\n\t\tconsole.error(packageName, e.message); /* eslint-disable-line */\n\t\treturn;\n\t}\n\tconst themeProps = data._ || data;\n\n\tthemeStyles.set(`${packageName}_${themeName}`, themeProps);\n\treturn themeProps;\n};\n\nconst getRegisteredPackages = () => {\n\treturn registeredPackages;\n};\n\nconst isThemeRegistered = theme => {\n\treturn registeredThemes.has(theme);\n};\n\nexport {\n\tregisterThemePropertiesLoader,\n\tregisterThemeProperties,\n\tgetThemeProperties,\n\tgetRegisteredPackages,\n\tisThemeRegistered,\n};\n","/**\n * Supported icon collection names and aliases.\n *\n * Users might specify a collection, using both the key and the value in the following key-value pairs,\n * e.g the following pairs are completely exchangeable:\n * \"SAP-icons-TNT/actor\" and \"tnt/actor\", \"BusinessSuiteInAppSymbols/3d\" and \"business-suite/3d\",\n * \"SAP-icons-v5/accept\" and \"horizon/accept\".\n *\n * Note: technically, in the code we maintain the collections under the \"value\" name - \"tnt\", \"business-suite\",\n * SAP-icons-v5\" and \"SAP-icons\"(which does not have an alias).\n */\nconst IconCollectionsAlias = {\n\t\"SAP-icons-TNT\": \"tnt\",\n\t\"BusinessSuiteInAppSymbols\": \"business-suite\",\n\t\"horizon\": \"SAP-icons-v5\",\n};\n\nexport default IconCollectionsAlias;\n","import createStyleInHead from \"./util/createStyleInHead.js\";\nimport createLinkInHead from \"./util/createLinkInHead.js\";\nimport { shouldUseLinks, getUrl } from \"./CSP.js\";\n\nconst getStyleId = (name, value) => {\n\treturn value ? `${name}|${value}` : name;\n};\n\nconst createStyle = (data, name, value = \"\") => {\n\tconst content = typeof data === \"string\" ? data : data.content;\n\n\tif (shouldUseLinks()) {\n\t\tconst attributes = {};\n\t\tattributes[name] = value;\n\t\tconst href = getUrl(data.packageName, data.fileName);\n\t\tcreateLinkInHead(href, attributes);\n\t} else if (document.adoptedStyleSheets) {\n\t\tconst stylesheet = new CSSStyleSheet();\n\t\tstylesheet.replaceSync(content);\n\t\tstylesheet._ui5StyleId = getStyleId(name, value); // set an id so that we can find the style later\n\t\tdocument.adoptedStyleSheets = [...document.adoptedStyleSheets, stylesheet];\n\t} else {\n\t\tconst attributes = {};\n\t\tattributes[name] = value;\n\t\tcreateStyleInHead(content, attributes);\n\t}\n};\n\nconst updateStyle = (data, name, value = \"\") => {\n\tconst content = typeof data === \"string\" ? data : data.content;\n\n\tif (shouldUseLinks()) {\n\t\tdocument.querySelector(`head>link[${name}=\"${value}\"]`).href = getUrl(data.packageName, data.fileName);\n\t} else if (document.adoptedStyleSheets) {\n\t\tdocument.adoptedStyleSheets.find(sh => sh._ui5StyleId === getStyleId(name, value)).replaceSync(content || \"\");\n\t} else {\n\t\tdocument.querySelector(`head>style[${name}=\"${value}\"]`).textContent = content || \"\";\n\t}\n};\n\nconst hasStyle = (name, value = \"\") => {\n\tif (shouldUseLinks()) {\n\t\treturn !!document.querySelector(`head>link[${name}=\"${value}\"]`);\n\t}\n\n\tif (document.adoptedStyleSheets) {\n\t\treturn !!document.adoptedStyleSheets.find(sh => sh._ui5StyleId === getStyleId(name, value));\n\t}\n\n\treturn !!document.querySelector(`head>style[${name}=\"${value}\"]`);\n};\n\nconst removeStyle = (name, value = \"\") => {\n\tif (shouldUseLinks()) {\n\t\tconst linkElement = document.querySelector(`head>link[${name}=\"${value}\"]`);\n\t\tif (linkElement) {\n\t\t\tlinkElement.parentElement.removeChild(linkElement);\n\t\t}\n\t} else if (document.adoptedStyleSheets) {\n\t\tdocument.adoptedStyleSheets = document.adoptedStyleSheets.filter(sh => sh._ui5StyleId !== getStyleId(name, value));\n\t} else {\n\t\tconst styleElement = document.querySelector(`head > style[${name}=\"${value}\"]`);\n\t\tif (styleElement) {\n\t\t\tstyleElement.parentElement.removeChild(styleElement);\n\t\t}\n\t}\n};\n\nconst createOrUpdateStyle = (data, name, value = \"\") => {\n\tif (hasStyle(name, value)) {\n\t\tupdateStyle(data, name, value);\n\t} else {\n\t\tcreateStyle(data, name, value);\n\t}\n};\n\nexport {\n\tcreateStyle,\n\thasStyle,\n\tupdateStyle,\n\tremoveStyle,\n\tcreateOrUpdateStyle,\n};\n","/**\n * Creates a <style> tag in the <head> tag\n * @param cssText - the CSS\n * @param attributes - optional attributes to add to the tag\n * @returns {HTMLElement}\n */\nconst createStyleInHead = (cssText, attributes = {}) => {\n\tconst style = document.createElement(\"style\");\n\tstyle.type = \"text/css\";\n\n\tObject.entries(attributes).forEach(pair => style.setAttribute(...pair));\n\n\tstyle.textContent = cssText;\n\tdocument.head.appendChild(style);\n\treturn style;\n};\n\nexport default createStyleInHead;\n","const warnings = new Set();\n\nconst getThemeMetadata = () => {\n\t// Check if the class was already applied, most commonly to the link/style tag with the CSS Variables\n\tlet el = document.querySelector(\".sapThemeMetaData-Base-baseLib\") || document.querySelector(\".sapThemeMetaData-UI5-sap-ui-core\");\n\tif (el) {\n\t\treturn getComputedStyle(el).backgroundImage;\n\t}\n\n\tel = document.createElement(\"span\");\n\tel.style.display = \"none\";\n\n\t// Try with sapThemeMetaData-Base-baseLib first\n\tel.classList.add(\"sapThemeMetaData-Base-baseLib\");\n\tdocument.body.appendChild(el);\n\tlet metadata = getComputedStyle(el).backgroundImage;\n\n\t// Try with sapThemeMetaData-UI5-sap-ui-core only if the previous selector was not found\n\tif (metadata === \"none\") {\n\t\tel.classList.add(\"sapThemeMetaData-UI5-sap-ui-core\");\n\t\tmetadata = getComputedStyle(el).backgroundImage;\n\t}\n\n\tdocument.body.removeChild(el);\n\n\treturn metadata;\n};\n\nconst parseThemeMetadata = metadataString => {\n\tconst params = /\\([\"']?data:text\\/plain;utf-8,(.*?)['\"]?\\)$/i.exec(metadataString);\n\tif (params && params.length >= 2) {\n\t\tlet paramsString = params[1];\n\t\tparamsString = paramsString.replace(/\\\\\"/g, `\"`);\n\t\tif (paramsString.charAt(0) !== \"{\" && paramsString.charAt(paramsString.length - 1) !== \"}\") {\n\t\t\ttry {\n\t\t\t\tparamsString = decodeURIComponent(paramsString);\n\t\t\t} catch (ex) {\n\t\t\t\tif (!warnings.has(\"decode\")) {\n\t\t\t\t\tconsole.warn(\"Malformed theme metadata string, unable to decodeURIComponent\"); // eslint-disable-line\n\t\t\t\t\twarnings.add(\"decode\");\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\ttry {\n\t\t\treturn JSON.parse(paramsString);\n\t\t} catch (ex) {\n\t\t\tif (!warnings.has(\"parse\")) {\n\t\t\t\tconsole.warn(\"Malformed theme metadata string, unable to parse JSON\"); // eslint-disable-line\n\t\t\t\twarnings.add(\"parse\");\n\t\t\t}\n\t\t}\n\t}\n};\n\nconst processThemeMetadata = metadata => {\n\tlet themeName;\n\tlet baseThemeName;\n\n\ttry {\n\t\tthemeName = metadata.Path.match(/\\.([^.]+)\\.css_variables$/)[1];\n\t\tbaseThemeName = metadata.Extends[0];\n\t} catch (ex) {\n\t\tif (!warnings.has(\"object\")) {\n\t\t\tconsole.warn(\"Malformed theme metadata Object\", metadata); // eslint-disable-line\n\t\t\twarnings.add(\"object\");\n\t\t}\n\t\treturn;\n\t}\n\n\treturn {\n\t\tthemeName,\n\t\tbaseThemeName,\n\t};\n};\n\nconst getThemeDesignerTheme = () => {\n\tconst metadataString = getThemeMetadata();\n\tif (!metadataString || metadataString === \"none\") {\n\t\treturn;\n\t}\n\n\tconst metadata = parseThemeMetadata(metadataString);\n\treturn processThemeMetadata(metadata);\n};\n\nexport default getThemeDesignerTheme;\n","import EventProvider from \"../EventProvider.js\";\n\nconst eventProvider = new EventProvider();\nconst THEME_LOADED = \"themeLoaded\";\n\nconst attachThemeLoaded = listener => {\n\teventProvider.attachEvent(THEME_LOADED, listener);\n};\n\nconst detachThemeLoaded = listener => {\n\teventProvider.detachEvent(THEME_LOADED, listener);\n};\n\nconst fireThemeLoaded = theme => {\n\treturn eventProvider.fireEvent(THEME_LOADED, theme);\n};\n\nexport {\n\tattachThemeLoaded,\n\tdetachThemeLoaded,\n\tfireThemeLoaded,\n};\n","import { getThemeProperties, getRegisteredPackages, isThemeRegistered } from \"../asset-registries/Themes.js\";\nimport { removeStyle, createOrUpdateStyle } from \"../ManagedStyles.js\";\nimport getThemeDesignerTheme from \"./getThemeDesignerTheme.js\";\nimport { fireThemeLoaded } from \"./ThemeLoaded.js\";\nimport { getFeature } from \"../FeaturesRegistry.js\";\n\nconst BASE_THEME_PACKAGE = \"@ui5/webcomponents-theming\";\n\nconst isThemeBaseRegistered = () => {\n\tconst registeredPackages = getRegisteredPackages();\n\treturn registeredPackages.has(BASE_THEME_PACKAGE);\n};\n\nconst loadThemeBase = async theme => {\n\tif (!isThemeBaseRegistered()) {\n\t\treturn;\n\t}\n\n\tconst cssData = await getThemeProperties(BASE_THEME_PACKAGE, theme);\n\tif (cssData) {\n\t\tcreateOrUpdateStyle(cssData, \"data-ui5-theme-properties\", BASE_THEME_PACKAGE);\n\t}\n};\n\nconst deleteThemeBase = () => {\n\tremoveStyle(\"data-ui5-theme-properties\", BASE_THEME_PACKAGE);\n};\n\nconst loadComponentPackages = async theme => {\n\tconst registeredPackages = getRegisteredPackages();\n\tregisteredPackages.forEach(async packageName => {\n\t\tif (packageName === BASE_THEME_PACKAGE) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst cssData = await getThemeProperties(packageName, theme);\n\t\tif (cssData) {\n\t\t\tcreateOrUpdateStyle(cssData, \"data-ui5-theme-properties\", packageName);\n\t\t}\n\t});\n};\n\nconst detectExternalTheme = () => {\n\t// If theme designer theme is detected, use this\n\tconst extTheme = getThemeDesignerTheme();\n\tif (extTheme) {\n\t\treturn extTheme;\n\t}\n\n\t// If OpenUI5Support is enabled, try to find out if it loaded variables\n\tconst OpenUI5Support = getFeature(\"OpenUI5Support\");\n\tif (OpenUI5Support) {\n\t\tconst varsLoaded = OpenUI5Support.cssVariablesLoaded();\n\t\tif (varsLoaded) {\n\t\t\treturn {\n\t\t\t\tthemeName: OpenUI5Support.getConfigurationSettingsObject().theme, // just themeName, baseThemeName is only relevant for custom themes\n\t\t\t};\n\t\t}\n\t}\n};\n\nconst applyTheme = async theme => {\n\tconst extTheme = detectExternalTheme();\n\n\t// Only load theme_base properties if there is no externally loaded theme, or there is, but it is not being loaded\n\tif (!extTheme || theme !== extTheme.themeName) {\n\t\tawait loadThemeBase(theme);\n\t} else {\n\t\tdeleteThemeBase();\n\t}\n\n\t// Always load component packages properties. For non-registered themes, try with the base theme, if any\n\tconst packagesTheme = isThemeRegistered(theme) ? theme : extTheme && extTheme.baseThemeName;\n\tawait loadComponentPackages(packagesTheme);\n\n\tfireThemeLoaded(theme);\n};\n\nexport default applyTheme;\n","import { getTheme as getConfiguredTheme } from \"../InitialConfiguration.js\";\nimport { reRenderAllUI5Elements } from \"../Render.js\";\nimport applyTheme from \"../theming/applyTheme.js\";\n\nlet theme;\n\nconst getTheme = () => {\n\tif (theme === undefined) {\n\t\ttheme = getConfiguredTheme();\n\t}\n\n\treturn theme;\n};\n\nconst setTheme = async newTheme => {\n\tif (theme === newTheme) {\n\t\treturn;\n\t}\n\n\ttheme = newTheme;\n\n\t// Update CSS Custom Properties\n\tawait applyTheme(theme);\n\tawait reRenderAllUI5Elements({ themeAware: true });\n};\n\n/**\n * Returns if the given theme name is the one currently applied.\n * @private\n * @param {String}\n * @returns {boolean}\n */\nconst isTheme = _theme => {\n\tconst currentTheme = getTheme();\n\treturn currentTheme === _theme || currentTheme === `${_theme}_exp`;\n};\n\n/**\n * Returns if the current theme is part of given theme family\n * @private\n * @param {String} the theme family\n * @returns {boolean}\n */\nconst isThemeFamily = _theme => {\n\treturn getTheme().startsWith(_theme);\n};\n\nexport {\n\tgetTheme,\n\tsetTheme,\n\tisTheme,\n\tisThemeFamily,\n};\n","import { getTheme, isThemeFamily } from \"./Theme.js\";\n\nconst IconCollectionConfiguration = new Map();\n\n/**\n * Sets the default icon collection (v4 or v5) per theme,\n * which will be applied in case icon collection is not specified.\n *\n * Note: by default SAP-icons-v5 is used in SAP Horizon and SAP-icons-v4 for all the rest.\n * @param {String} theme\n * @param {String} collectionName\n */\nconst setDefaultIconCollection = (theme, collectionName) => {\n\tif (collectionName === \"horizon\") {\n\t\tcollectionName = \"SAP-icons-v5\";\n\t}\n\n\tIconCollectionConfiguration.set(theme, collectionName);\n};\n\n/**\n * Returns the default icon collection (v4 or v5) for given theme,\n * that is configured.\n *\n * @param {String} theme\n * @returns {String}\n */\nconst getDefaultIconCollection = theme => {\n\treturn IconCollectionConfiguration.get(theme);\n};\n\n/**\n * Returns the effective icon collection that will be applied for icon web components\n * whenever namespace is not specified.\n * @returns {String}\n */\nconst getEffectiveDefaultIconCollection = () => {\n\tconst currentTheme = getTheme();\n\tconst currentThemeConfiguration = IconCollectionConfiguration.get(currentTheme);\n\n\tif (currentThemeConfiguration) {\n\t\treturn currentThemeConfiguration;\n\t}\n\n\treturn isThemeFamily(\"sap_horizon\") ? \"SAP-icons-v5\" : \"SAP-icons\";\n};\n\nexport {\n\tsetDefaultIconCollection,\n\tgetDefaultIconCollection,\n\tgetEffectiveDefaultIconCollection,\n};\n","import getSharedResource from \"../getSharedResource.js\";\nimport IconCollectionsAlias from \"../assets-meta/IconCollectionsAlias.js\";\nimport { getEffectiveDefaultIconCollection } from \"../config/Icons.js\";\n\nconst loaders = new Map();\nconst registry = getSharedResource(\"SVGIcons.registry\", new Map());\nconst iconCollectionPromises = getSharedResource(\"SVGIcons.promises\", new Map());\n\nconst ICON_NOT_FOUND = \"ICON_NOT_FOUND\";\n\n/**\n * @deprecated\n */\nconst registerIconBundle = async (collectionName, bundleData) => {\n\tthrow new Error(\"This method has been removed. Use `registerIconLoader` instead.\");\n};\n\nconst registerIconLoader = async (collectionName, loader) => {\n\tloaders.set(collectionName, loader);\n};\n\nconst _loadIconCollectionOnce = async collectionName => {\n\tif (!iconCollectionPromises.has(collectionName)) {\n\t\tif (!loaders.has(collectionName)) {\n\t\t\tthrow new Error(`No loader registered for the ${collectionName} icons collection. Probably you forgot to import the \"AllIcons.js\" module for the respective package.`);\n\t\t}\n\t\tconst loadIcons = loaders.get(collectionName);\n\t\ticonCollectionPromises.set(collectionName, loadIcons(collectionName));\n\t}\n\n\treturn iconCollectionPromises.get(collectionName);\n};\n\nconst _fillRegistry = bundleData => {\n\tObject.keys(bundleData.data).forEach(iconName => {\n\t\tconst iconData = bundleData.data[iconName];\n\n\t\tregisterIcon(iconName, {\n\t\t\tpathData: iconData.path,\n\t\t\tltr: iconData.ltr,\n\t\t\taccData: iconData.acc,\n\t\t\tcollection: bundleData.collection,\n\t\t\tpackageName: bundleData.packageName,\n\t\t });\n\t});\n};\n\n// set\nconst registerIcon = (name, { pathData, ltr, accData, collection, packageName } = {}) => { // eslint-disable-line\n\tif (!collection) {\n\t\tcollection = getEffectiveDefaultIconCollection();\n\t}\n\n\tconst key = `${collection}/${name}`;\n\tregistry.set(key, {\n\t\tpathData,\n\t\tltr,\n\t\taccData,\n\t\tpackageName,\n\t});\n};\n\nconst _parseName = name => {\n\t// silently support ui5-compatible URIs\n\tif (name.startsWith(\"sap-icon://\")) {\n\t\tname = name.replace(\"sap-icon://\", \"\");\n\t}\n\n\tlet collection;\n\t[name, collection] = name.split(\"/\").reverse();\n\tcollection = collection || getEffectiveDefaultIconCollection();\n\n\t// Normalize collection name.\n\t// - resolve `SAP-icons-TNT` to `tnt`.\n\t// - resolve `BusinessSuiteInAppSymbols` to `business-suite`.\n\t// - resolve `horizon` to `SAP-icons-v5`,\n\t// Note: aliases can be made as a feature, if more collections need it or more aliases are needed.\n\tcollection = _normalizeCollection(collection);\n\tname = name.replace(\"icon-\", \"\");\n\n\tconst registryKey = `${collection}/${name}`;\n\treturn { name, collection, registryKey };\n};\n\nconst getIconDataSync = nameProp => {\n\tconst { registryKey } = _parseName(nameProp);\n\treturn registry.get(registryKey);\n};\n\nconst getIconData = async nameProp => {\n\tconst { collection, registryKey } = _parseName(nameProp);\n\n\tlet iconData = ICON_NOT_FOUND;\n\ttry {\n\t\ticonData = await _loadIconCollectionOnce(collection);\n\t} catch (e) {\n\t\tconsole.error(e.message); /* eslint-disable-line */\n\t}\n\n\tif (iconData === ICON_NOT_FOUND) {\n\t\treturn iconData;\n\t}\n\n\tif (!registry.has(registryKey)) {\n\t\t// not filled by another await. many getters will await on the same loader, but fill only once\n\t\t_fillRegistry(iconData);\n\t}\n\treturn registry.get(registryKey);\n};\n\n// test page usage only\nconst _getRegisteredNames = async () => {\n\t// fetch one icon of each collection to trigger the bundle load\n\tawait getIconData(\"edit\");\n\tawait getIconData(\"tnt/arrow\");\n\tawait getIconData(\"business-suite/3d\");\n\treturn Array.from(registry.keys());\n};\n\nconst _normalizeCollection = collectionName => {\n\tif (IconCollectionsAlias[collectionName]) {\n\t\treturn IconCollectionsAlias[collectionName];\n\t}\n\n\treturn collectionName;\n};\n\nexport {\n\tregisterIconBundle,\n\tregisterIconLoader,\n\tgetIconData,\n\tgetIconDataSync,\n\tregisterIcon,\n\t_getRegisteredNames,\n};\n","import getSharedResource from \"../getSharedResource.js\";\nimport { getFeature } from \"../FeaturesRegistry.js\";\nimport getActiveElement from \"./getActiveElement.js\";\n\nconst PopupUtilsData = getSharedResource(\"PopupUtilsData\", {});\nPopupUtilsData.currentZIndex = PopupUtilsData.currentZIndex || 100;\n\nconst getFocusedElement = () => {\n\tconst element = getActiveElement();\n\treturn (element && typeof element.focus === \"function\") ? element : null;\n};\n\nconst isFocusedElementWithinNode = node => {\n\tconst fe = getFocusedElement();\n\n\tif (fe) {\n\t\treturn isNodeContainedWithin(node, fe);\n\t}\n\n\treturn false;\n};\n\nconst isNodeContainedWithin = (parent, child) => {\n\tlet currentNode = parent;\n\n\tif (currentNode.shadowRoot) {\n\t\tcurrentNode = Array.from(currentNode.shadowRoot.children).find(n => n.localName !== \"style\");\n\t}\n\n\tif (currentNode === child) {\n\t\treturn true;\n\t}\n\n\tconst childNodes = currentNode.localName === \"slot\" ? currentNode.assignedNodes() : currentNode.children;\n\n\tif (childNodes) {\n\t\treturn Array.from(childNodes).some(n => isNodeContainedWithin(n, child));\n\t}\n};\n\nconst isPointInRect = (x, y, rect) => {\n\treturn x >= rect.left && x <= rect.right\n\t\t&& y >= rect.top && y <= rect.bottom;\n};\n\nconst isClickInRect = (event, rect) => {\n\tlet x;\n\tlet y;\n\n\tif (event.touches) {\n\t\tconst touch = event.touches[0];\n\t\tx = touch.clientX;\n\t\ty = touch.clientY;\n\t} else {\n\t\tx = event.clientX;\n\t\ty = event.clientY;\n\t}\n\n\treturn isPointInRect(x, y, rect);\n};\n\nconst getClosedPopupParent = el => {\n\tconst parent = el.parentElement || (el.getRootNode && el.getRootNode().host);\n\n\tif (parent && ((parent.showAt && parent.isUI5Element) || (parent.open && parent.isUI5Element) || parent === document.documentElement)) {\n\t\treturn parent;\n\t}\n\n\treturn getClosedPopupParent(parent);\n};\n\nconst getNextZIndex = () => {\n\tconst OpenUI5Support = getFeature(\"OpenUI5Support\");\n\tif (OpenUI5Support && OpenUI5Support.isLoaded()) { // use OpenUI5 for getting z-index values, if loaded\n\t\treturn OpenUI5Support.getNextZIndex();\n\t}\n\n\tPopupUtilsData.currentZIndex += 2;\n\treturn PopupUtilsData.currentZIndex;\n};\n\nconst getCurrentZIndex = () => {\n\treturn PopupUtilsData.currentZIndex;\n};\n\nexport {\n\tgetFocusedElement,\n\tisClickInRect,\n\tgetClosedPopupParent,\n\tgetNextZIndex,\n\tgetCurrentZIndex,\n\tisFocusedElementWithinNode,\n};\n","import { registerFeature } from \"../FeaturesRegistry.js\";\nimport { setTheme } from \"../config/Theme.js\";\nimport { getCurrentZIndex } from \"../util/PopupUtils.js\";\n\nconst getCore = () => {\n\tconst sap = window.sap;\n\tconst core = sap && sap.ui && typeof sap.ui.getCore === \"function\" && sap.ui.getCore();\n\treturn core;\n};\n\nconst isLoaded = () => {\n\treturn !!getCore();\n};\n\nconst init = () => {\n\tconst core = getCore();\n\tif (!core) {\n\t\treturn Promise.resolve();\n\t}\n\n\treturn new Promise(resolve => {\n\t\tcore.attachInit(() => {\n\t\t\twindow.sap.ui.require([\"sap/ui/core/LocaleData\", \"sap/ui/core/Popup\"], (LocaleData, Popup) => {\n\t\t\t\tPopup.setInitialZIndex(getCurrentZIndex());\n\t\t\t\tresolve();\n\t\t\t});\n\t\t});\n\t});\n};\n\nconst getConfigurationSettingsObject = () => {\n\tconst core = getCore();\n\tif (!core) {\n\t\treturn;\n\t}\n\n\tconst config = core.getConfiguration();\n\tconst LocaleData = window.sap.ui.require(\"sap/ui/core/LocaleData\");\n\n\treturn {\n\t\tanimationMode: config.getAnimationMode(),\n\t\tlanguage: config.getLanguage(),\n\t\ttheme: config.getTheme(),\n\t\trtl: config.getRTL(),\n\t\tcalendarType: config.getCalendarType(),\n\t\tformatSettings: {\n\t\t\tfirstDayOfWeek: LocaleData ? LocaleData.getInstance(config.getLocale()).getFirstDayOfWeek() : undefined,\n\t\t},\n\t};\n};\n\nconst getLocaleDataObject = () => {\n\tconst core = getCore();\n\tif (!core) {\n\t\treturn;\n\t}\n\n\tconst config = core.getConfiguration();\n\tconst LocaleData = window.sap.ui.require(\"sap/ui/core/LocaleData\");\n\treturn LocaleData.getInstance(config.getLocale())._get();\n};\n\nconst listenForThemeChange = () => {\n\tconst core = getCore();\n\tconst config = core.getConfiguration();\n\tcore.attachThemeChanged(async () => {\n\t\tawait setTheme(config.getTheme());\n\t});\n};\n\nconst attachListeners = () => {\n\tconst core = getCore();\n\tif (!core) {\n\t\treturn;\n\t}\n\n\tlistenForThemeChange();\n};\n\nconst cssVariablesLoaded = () => {\n\tconst core = getCore();\n\tif (!core) {\n\t\treturn;\n\t}\n\n\tconst link = [...document.head.children].find(el => el.id === \"sap-ui-theme-sap.ui.core\"); // more reliable than querySelector early\n\tif (!link) {\n\t\treturn;\n\t}\n\n\treturn !!link.href.match(/\\/css(-|_)variables\\.css/);\n};\n\nconst getNextZIndex = () => {\n\tconst core = getCore();\n\tif (!core) {\n\t\treturn;\n\t}\n\n\tconst Popup = window.sap.ui.require(\"sap/ui/core/Popup\");\n\treturn Popup.getNextZIndex();\n};\n\nconst setInitialZIndex = () => {\n\tconst core = getCore();\n\tif (!core) {\n\t\treturn;\n\t}\n\n\tconst Popup = window.sap.ui.require(\"sap/ui/core/Popup\");\n\tPopup.setInitialZIndex(getCurrentZIndex());\n};\n\nconst OpenUI5Support = {\n\tisLoaded,\n\tinit,\n\tgetConfigurationSettingsObject,\n\tgetLocaleDataObject,\n\tattachListeners,\n\tcssVariablesLoaded,\n\tgetNextZIndex,\n\tsetInitialZIndex,\n};\n\nregisterFeature(\"OpenUI5Support\", OpenUI5Support);\n","export default {\n\tpackageName: \"@ui5/webcomponents-base\",\n\tfileName: \"FontFace.css\",\n\tcontent: `@font-face{font-family:\"72\";font-style:normal;font-weight:400;src:local(\"72\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:\"72full\";font-style:normal;font-weight:400;src:local('72-full'),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular-full.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Regular-full.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:\"72\";font-style:normal;font-weight:700;src:local('72-Bold'),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:\"72full\";font-style:normal;font-weight:700;src:local('72-Bold-full'),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:'72-Bold';font-style:normal;src:local('72-Bold'),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:'72-Boldfull';font-style:normal;src:url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Bold-full.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:'72-Light';font-style:normal;src:local('72-Light'),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:'72-Lightfull';font-style:normal;src:url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light-full.woff2?ui5-webcomponents) format(\"woff2\"),url(https://ui5.sap.com/sdk/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light-full.woff?ui5-webcomponents) format(\"woff\")}@font-face{font-family:\"72Black\";font-style:bold;font-weight:900;src:local('72Black'),url(https://openui5nightly.hana.ondemand.com/resources/sap/ui/core/themes/sap_horizon/fonts/72-Black.woff2?ui5-webcomponents) format(\"woff2\"),url(https://openui5nightly.hana.ondemand.com/resources/sap/ui/core/themes/sap_horizon/fonts/72-Black.woff?ui5-webcomponents) format(\"woff\")}`\n};","export default {\n\tpackageName: \"@ui5/webcomponents-base\",\n\tfileName: \"OverrideFontFace.css\",\n\tcontent: `@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')}`\n};","import { hasStyle, createStyle } from \"./ManagedStyles.js\";\nimport { getFeature } from \"./FeaturesRegistry.js\";\nimport fontFaceCSS from \"./generated/css/FontFace.css.js\";\nimport overrideFontFaceCSS from \"./generated/css/OverrideFontFace.css.js\";\n\nconst insertFontFace = () => {\n\tconst OpenUI5Support = getFeature(\"OpenUI5Support\");\n\n\t// Only set the main font if there is no OpenUI5 support, or there is, but OpenUI5 is not loaded\n\tif (!OpenUI5Support || !OpenUI5Support.isLoaded()) {\n\t\tinsertMainFontFace();\n\t}\n\n\t// Always set the override font - OpenUI5 in CSS Vars mode does not set it, unlike the main font\n\tinsertOverrideFontFace();\n};\n\nconst insertMainFontFace = () => {\n\tif (!hasStyle(\"data-ui5-font-face\")) {\n\t\tcreateStyle(fontFaceCSS, \"data-ui5-font-face\");\n\t}\n};\n\nconst insertOverrideFontFace = () => {\n\tif (!hasStyle(\"data-ui5-font-face-override\")) {\n\t\tcreateStyle(overrideFontFaceCSS, \"data-ui5-font-face-override\");\n\t}\n};\n\nexport default insertFontFace;\n","export default {\n\tpackageName: \"@ui5/webcomponents-base\",\n\tfileName: \"SystemCSSVars.css\",\n\tcontent: `: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}`\n};","import whenDOMReady from \"./util/whenDOMReady.js\";\nimport insertFontFace from \"./FontFace.js\";\nimport insertSystemCSSVars from \"./SystemCSSVars.js\";\nimport { getTheme } from \"./config/Theme.js\";\nimport applyTheme from \"./theming/applyTheme.js\";\nimport { registerCurrentRuntime } from \"./Runtimes.js\";\nimport { getFeature } from \"./FeaturesRegistry.js\";\n\nlet bootPromise;\n\n/**\n * Attach a callback that will be executed on boot\n * @public\n * @param listener\n */\nconst attachBoot = async listener => {\n\tawait boot();\n\tlistener();\n};\n\nconst boot = async () => {\n\tif (bootPromise) {\n\t\treturn bootPromise;\n\t}\n\n\t/* eslint-disable no-alert, no-async-promise-executor */\n\t/*\n\t\tNote(since we disable eslint rule):\n\t\tIf an async executor function throws an error, the error will be lost and won't cause the newly-constructed Promise to reject.\n\t\tThis could make it difficult to debug and handle some errors.\n\t*/\n\tbootPromise = new Promise(async resolve => {\n\t\tregisterCurrentRuntime();\n\n\t\tconst OpenUI5Support = getFeature(\"OpenUI5Support\");\n\t\tconst F6Navigation = getFeature(\"F6Navigation\");\n\t\tif (OpenUI5Support) {\n\t\t\tawait OpenUI5Support.init();\n\t\t} else if (F6Navigation) {\n\t\t\tF6Navigation.init();\n\t\t}\n\n\t\tawait whenDOMReady();\n\t\tawait applyTheme(getTheme());\n\t\tOpenUI5Support && OpenUI5Support.attachListeners();\n\t\tinsertFontFace();\n\t\tinsertSystemCSSVars();\n\n\t\tresolve();\n\t});\n\t/* eslint-enable no-alert, no-async-promise-executor */\n\n\treturn bootPromise;\n};\n\nexport {\n\tboot,\n\tattachBoot,\n};\n","const whenDOMReady = () => {\n\treturn new Promise(resolve => {\n\t\tif (document.body) {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tdocument.addEventListener(\"DOMContentLoaded\", () => {\n\t\t\t\tresolve();\n\t\t\t});\n\t\t}\n\t});\n};\n\nexport default whenDOMReady;\n","import { hasStyle, createStyle } from \"./ManagedStyles.js\";\nimport systemCSSVars from \"./generated/css/SystemCSSVars.css.js\";\n\nconst insertSystemCSSVars = () => {\n\tif (!hasStyle(\"data-ui5-system-css-vars\")) {\n\t\tcreateStyle(systemCSSVars, \"data-ui5-system-css-vars\");\n\t}\n};\n\nexport default insertSystemCSSVars;\n","/**\n * Base class for all data types.\n *\n * @class\n * @constructor\n * @author SAP SE\n * @alias sap.ui.webcomponents.base.types.DataType\n * @public\n */\nclass DataType {\n\tstatic isValid(value) {\n\t}\n\n\tstatic attributeToProperty(attributeValue) {\n\t\treturn attributeValue;\n\t}\n\n\tstatic propertyToAttribute(propertyValue) {\n\t\treturn `${propertyValue}`;\n\t}\n\n\tstatic valuesAreEqual(value1, value2) {\n\t\treturn value1 === value2;\n\t}\n\n\tstatic generateTypeAccessors(types) {\n\t\tObject.keys(types).forEach(type => {\n\t\t\tObject.defineProperty(this, type, {\n\t\t\t\tget() {\n\t\t\t\t\treturn types[type];\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n}\n\nexport default DataType;\n","const isDescendantOf = (klass, baseKlass, inclusive = false) => {\n\tif (typeof klass !== \"function\" || typeof baseKlass !== \"function\") {\n\t\treturn false;\n\t}\n\tif (inclusive && klass === baseKlass) {\n\t\treturn true;\n\t}\n\tlet parent = klass;\n\tdo {\n\t\tparent = Object.getPrototypeOf(parent);\n\t} while (parent !== null && parent !== baseKlass);\n\treturn parent === baseKlass;\n};\n\nexport default isDescendantOf;\n","const kebabToCamelMap = new Map();\nconst camelToKebabMap = new Map();\n\nconst kebabToCamelCase = string => {\n\tif (!kebabToCamelMap.has(string)) {\n\t\tconst result = toCamelCase(string.split(\"-\"));\n\t\tkebabToCamelMap.set(string, result);\n\t}\n\treturn kebabToCamelMap.get(string);\n};\n\nconst camelToKebabCase = string => {\n\tif (!camelToKebabMap.has(string)) {\n\t\tconst result = string.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\t\tcamelToKebabMap.set(string, result);\n\t}\n\treturn camelToKebabMap.get(string);\n};\n\nconst toCamelCase = parts => {\n\treturn parts.map((string, index) => {\n\t\treturn index === 0 ? string.toLowerCase() : string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n\t}).join(\"\");\n};\n\nexport { kebabToCamelCase, camelToKebabCase };\n","/**\n * Determines the slot to which a node should be assigned\n * @param node Text node or HTML element\n * @returns {string}\n */\nconst getSlotName = node => {\n\t// Text nodes can only go to the default slot\n\tif (!(node instanceof HTMLElement)) {\n\t\treturn \"default\";\n\t}\n\n\t// Discover the slot based on the real slot name (f.e. footer => footer, or content-32 => content)\n\tconst slot = node.getAttribute(\"slot\");\n\tif (slot) {\n\t\tconst match = slot.match(/^(.+?)-\\d+$/);\n\t\treturn match ? match[1] : slot;\n\t}\n\n\t// Use default slot as a fallback\n\treturn \"default\";\n};\n\nconst isSlot = el => el && el instanceof HTMLElement && el.localName === \"slot\";\n\nconst getSlottedElements = el => {\n\tif (isSlot(el)) {\n\t\treturn el.assignedNodes({ flatten: true }).filter(item => item instanceof HTMLElement);\n\t}\n\n\treturn [el];\n};\n\nconst getSlottedElementsList = elList => {\n\tconst reducer = (acc, curr) => acc.concat(getSlottedElements(curr));\n\treturn elList.reduce(reducer, []);\n};\n\nexport {\n\tgetSlotName,\n\tisSlot,\n\tgetSlottedElements,\n\tgetSlottedElementsList,\n};\n","let suf;\nlet rulesObj = {\n\tinclude: [/^ui5-/],\n\texclude: [],\n};\nconst tagsCache = new Map(); // true/false means the tag should/should not be cached, undefined means not known yet.\n\n/**\n * Sets the suffix to be used for custom elements scoping, f.e. pass \"demo\" to get tags such as \"ui5-button-demo\".\n * Note: by default all tags starting with \"ui5-\" will be scoped, unless you change this by calling \"setCustomElementsScopingRules\"\n *\n * @public\n * @param suffix The scoping suffix\n */\nconst setCustomElementsScopingSuffix = suffix => {\n\tif (!suffix.match(/^[a-zA-Z0-9_-]+$/)) {\n\t\tthrow new Error(\"Only alphanumeric characters and dashes allowed for the scoping suffix\");\n\t}\n\n\tsuf = suffix;\n};\n\n/**\n * Returns the currently set scoping suffix, or undefined if not set.\n *\n * @public\n * @returns {String|undefined}\n */\nconst getCustomElementsScopingSuffix = () => {\n\treturn suf;\n};\n\n/**\n * Sets the rules, governing which custom element tags to scope and which not, f.e.\n * setCustomElementsScopingRules({include: [/^ui5-/]}, exclude: [/^ui5-mylib-/, /^ui5-carousel$/]);\n * will scope all elements starting with \"ui5-\" but not the ones starting with \"ui5-mylib-\" and not \"ui5-carousel\".\n *\n * @public\n * @param rules Object with \"include\" and \"exclude\" properties, both arrays of regular expressions. Note that \"include\"\n * rules are applied first and \"exclude\" rules second.\n */\nconst setCustomElementsScopingRules = rules => {\n\tif (!rules || !rules.include) {\n\t\tthrow new Error(`\"rules\" must be an object with at least an \"include\" property`);\n\t}\n\n\tif (!Array.isArray(rules.include) || rules.include.some(rule => !(rule instanceof RegExp))) {\n\t\tthrow new Error(`\"rules.include\" must be an array of regular expressions`);\n\t}\n\n\tif (rules.exclude && (!Array.isArray(rules.exclude) || rules.exclude.some(rule => !(rule instanceof RegExp)))) {\n\t\tthrow new Error(`\"rules.exclude\" must be an array of regular expressions`);\n\t}\n\n\trules.exclude = rules.exclude || [];\n\trulesObj = rules;\n\ttagsCache.clear(); // reset the cache upon setting new rules\n};\n\n/**\n * Returns the rules, governing which custom element tags to scope and which not. By default, all elements\n * starting with \"ui5-\" are scoped. The default rules are: {include: [/^ui5-/]}.\n *\n * @public\n * @returns {Object}\n */\nconst getCustomElementsScopingRules = () => {\n\treturn rulesObj;\n};\n\n/**\n * Determines whether custom elements with the given tag should be scoped or not.\n * The tag is first matched against the \"include\" rules and then against the \"exclude\" rules and the\n * result is cached until new rules are set.\n *\n * @public\n * @param tag\n */\nconst shouldScopeCustomElement = tag => {\n\tif (!tagsCache.has(tag)) {\n\t\tconst result = rulesObj.include.some(rule => tag.match(rule)) && !rulesObj.exclude.some(rule => tag.match(rule));\n\t\ttagsCache.set(tag, result);\n\t}\n\n\treturn tagsCache.get(tag);\n};\n\n/**\n * Returns the currently set scoping suffix, if any and if the tag should be scoped, or undefined otherwise.\n *\n * @public\n * @param tag\n * @returns {String}\n */\nconst getEffectiveScopingSuffixForTag = tag => {\n\tif (shouldScopeCustomElement(tag)) {\n\t\treturn getCustomElementsScopingSuffix();\n\t}\n};\n\nexport {\n\tsetCustomElementsScopingSuffix,\n\tgetCustomElementsScopingSuffix,\n\tsetCustomElementsScopingRules,\n\tgetCustomElementsScopingRules,\n\tshouldScopeCustomElement,\n\tgetEffectiveScopingSuffixForTag,\n};\n","import DataType from \"./types/DataType.js\";\nimport isDescendantOf from \"./util/isDescendantOf.js\";\nimport { camelToKebabCase } from \"./util/StringHelper.js\";\nimport { getSlottedElements } from \"./util/SlotsHelper.js\";\nimport { getEffectiveScopingSuffixForTag } from \"./CustomElementsScopeUtils.js\";\n\n/**\n *\n * @class\n * @public\n */\nclass UI5ElementMetadata {\n\tconstructor(metadata) {\n\t\tthis.metadata = metadata;\n\t}\n\n\tgetInitialState() {\n\t\tif (Object.prototype.hasOwnProperty.call(this, \"_initialState\")) {\n\t\t\treturn this._initialState;\n\t\t}\n\n\t\tconst initialState = {};\n\t\tconst slotsAreManaged = this.slotsAreManaged();\n\n\t\t// Initialize properties\n\t\tconst props = this.getProperties();\n\t\tfor (const propName in props) { // eslint-disable-line\n\t\t\tconst propType = props[propName].type;\n\t\t\tconst propDefaultValue = props[propName].defaultValue;\n\n\t\t\tif (propType === Boolean) {\n\t\t\t\tinitialState[propName] = false;\n\n\t\t\t\tif (propDefaultValue !== undefined) {\n\t\t\t\t\tconsole.warn(\"The 'defaultValue' metadata key is ignored for all booleans properties, they would be initialized with 'false' by default\"); // eslint-disable-line\n\t\t\t\t}\n\t\t\t} else if (props[propName].multiple) {\n\t\t\t\tinitialState[propName] = [];\n\t\t\t} else if (propType === Object) {\n\t\t\t\tinitialState[propName] = \"defaultValue\" in props[propName] ? props[propName].defaultValue : {};\n\t\t\t} else if (propType === String) {\n\t\t\t\tinitialState[propName] = \"defaultValue\" in props[propName] ? props[propName].defaultValue : \"\";\n\t\t\t} else {\n\t\t\t\tinitialState[propName] = propDefaultValue;\n\t\t\t}\n\t\t}\n\n\t\t// Initialize slots\n\t\tif (slotsAreManaged) {\n\t\t\tconst slots = this.getSlots();\n\t\t\tfor (const [slotName, slotData] of Object.entries(slots)) { // eslint-disable-line\n\t\t\t\tconst propertyName = slotData.propertyName || slotName;\n\t\t\t\tinitialState[propertyName] = [];\n\t\t\t}\n\t\t}\n\n\t\tthis._initialState = initialState;\n\t\treturn initialState;\n\t}\n\n\t/**\n\t * Only intended for use by UI5Element.js\n\t * @protected\n\t */\n\tstatic validatePropertyValue(value, propData) {\n\t\tconst isMultiple = propData.multiple;\n\t\tif (isMultiple) {\n\t\t\treturn value.map(propValue => validateSingleProperty(propValue, propData));\n\t\t}\n\t\treturn validateSingleProperty(value, propData);\n\t}\n\n\t/**\n\t * Only intended for use by UI5Element.js\n\t * @protected\n\t */\n\tstatic validateSlotValue(value, slotData) {\n\t\treturn validateSingleSlot(value, slotData);\n\t}\n\n\t/**\n\t * Returns the tag of the UI5 Element without the scope\n\t * @public\n\t */\n\tgetPureTag() {\n\t\treturn this.metadata.tag;\n\t}\n\n\t/**\n\t * Returns the tag of the UI5 Element\n\t * @public\n\t */\n\tgetTag() {\n\t\tconst pureTag = this.metadata.tag;\n\t\tconst suffix = getEffectiveScopingSuffixForTag(pureTag);\n\t\tif (!suffix) {\n\t\t\treturn pureTag;\n\t\t}\n\n\t\treturn `${pureTag}-${suffix}`;\n\t}\n\n\t/**\n\t * Used to get the tag we need to register for backwards compatibility\n\t * @public\n\t */\n\tgetAltTag() {\n\t\tconst pureAltTag = this.metadata.altTag;\n\t\tif (!pureAltTag) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst suffix = getEffectiveScopingSuffixForTag(pureAltTag);\n\t\tif (!suffix) {\n\t\t\treturn pureAltTag;\n\t\t}\n\n\t\treturn `${pureAltTag}-${suffix}`;\n\t}\n\n\t/**\n\t * Determines whether a property should have an attribute counterpart\n\t * @public\n\t * @param propName\n\t * @returns {boolean}\n\t */\n\thasAttribute(propName) {\n\t\tconst propData = this.getProperties()[propName];\n\t\treturn propData.type !== Object && !propData.noAttribute && !propData.multiple;\n\t}\n\n\t/**\n\t * Returns an array with the properties of the UI5 Element (in camelCase)\n\t * @public\n\t * @returns {string[]}\n\t */\n\tgetPropertiesList() {\n\t\treturn Object.keys(this.getProperties());\n\t}\n\n\t/**\n\t * Returns an array with the attributes of the UI5 Element (in kebab-case)\n\t * @public\n\t * @returns {string[]}\n\t */\n\tgetAttributesList() {\n\t\treturn this.getPropertiesList().filter(this.hasAttribute, this).map(camelToKebabCase);\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of slots and their metadata definitions\n\t * @public\n\t */\n\tgetSlots() {\n\t\treturn this.metadata.slots || {};\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has a default slot of type Node, therefore can slot text\n\t * @returns {boolean}\n\t */\n\tcanSlotText() {\n\t\tconst defaultSlot = this.getSlots().default;\n\t\treturn defaultSlot && defaultSlot.type === Node;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element supports any slots\n\t * @public\n\t */\n\thasSlots() {\n\t\treturn !!Object.entries(this.getSlots()).length;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element supports any slots with \"individualSlots: true\"\n\t * @public\n\t */\n\thasIndividualSlots() {\n\t\treturn this.slotsAreManaged() && Object.entries(this.getSlots()).some(([_slotName, slotData]) => slotData.individualSlots);\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element needs to invalidate if children are added/removed/changed\n\t * @public\n\t */\n\tslotsAreManaged() {\n\t\treturn !!this.metadata.managedSlots;\n\t}\n\n\t/**\n\t * Determines whether this control supports F6 fast navigation\n\t * @public\n\t */\n\tsupportsF6FastNavigation() {\n\t\treturn !!this.metadata.fastNavigation;\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of properties and their metadata definitions\n\t * @public\n\t */\n\tgetProperties() {\n\t\treturn this.metadata.properties || {};\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of events and their metadata definitions\n\t * @public\n\t */\n\tgetEvents() {\n\t\treturn this.metadata.events || {};\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has any translatable texts (needs to be invalidated upon language change)\n\t * @returns {boolean}\n\t */\n\tisLanguageAware() {\n\t\treturn !!this.metadata.languageAware;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has any theme dependant carachteristics.\n\t * @returns {boolean}\n\t */\n\t isThemeAware() {\n\t\treturn !!this.metadata.themeAware;\n\t}\n\n\t/**\n\t * Matches a changed entity (property/slot) with the given name against the \"invalidateOnChildChange\" configuration\n\t * and determines whether this should cause and invalidation\n\t *\n\t * @param slotName the name of the slot in which a child was changed\n\t * @param type the type of change in the child: \"property\" or \"slot\"\n\t * @param name the name of the property/slot that changed\n\t * @returns {boolean}\n\t */\n\tshouldInvalidateOnChildChange(slotName, type, name) {\n\t\tconst config = this.getSlots()[slotName].invalidateOnChildChange;\n\n\t\t// invalidateOnChildChange was not set in the slot metadata - by default child changes do not affect the component\n\t\tif (config === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// The simple format was used: invalidateOnChildChange: true/false;\n\t\tif (typeof config === \"boolean\") {\n\t\t\treturn config;\n\t\t}\n\n\t\t// The complex format was used: invalidateOnChildChange: { properties, slots }\n\t\tif (typeof config === \"object\") {\n\t\t\t// A property was changed\n\t\t\tif (type === \"property\") {\n\t\t\t\t// The config object does not have a properties field\n\t\t\t\tif (config.properties === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the short format: properties: true/false\n\t\t\t\tif (typeof config.properties === \"boolean\") {\n\t\t\t\t\treturn config.properties;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the complex format: properties: [...]\n\t\t\t\tif (Array.isArray(config.properties)) {\n\t\t\t\t\treturn config.properties.includes(name);\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"Wrong format for invalidateOnChildChange.properties: boolean or array is expected\");\n\t\t\t}\n\n\t\t\t// A slot was changed\n\t\t\tif (type === \"slot\") {\n\t\t\t\t// The config object does not have a slots field\n\t\t\t\tif (config.slots === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the short format: slots: true/false\n\t\t\t\tif (typeof config.slots === \"boolean\") {\n\t\t\t\t\treturn config.slots;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the complex format: slots: [...]\n\t\t\t\tif (Array.isArray(config.slots)) {\n\t\t\t\t\treturn config.slots.includes(name);\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"Wrong format for invalidateOnChildChange.slots: boolean or array is expected\");\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(\"Wrong format for invalidateOnChildChange: boolean or object is expected\");\n\t}\n}\n\nconst validateSingleProperty = (value, propData) => {\n\tconst propertyType = propData.type;\n\n\tif (propertyType === Boolean) {\n\t\treturn typeof value === \"boolean\" ? value : false;\n\t}\n\tif (propertyType === String) {\n\t\treturn (typeof value === \"string\" || typeof value === \"undefined\" || value === null) ? value : value.toString();\n\t}\n\tif (propertyType === Object) {\n\t\treturn typeof value === \"object\" ? value : propData.defaultValue;\n\t}\n\tif (isDescendantOf(propertyType, DataType)) {\n\t\treturn propertyType.isValid(value) ? value : propData.defaultValue;\n\t}\n};\n\nconst validateSingleSlot = (value, slotData) => {\n\tvalue && getSlottedElements(value).forEach(el => {\n\t\tif (!(el instanceof slotData.type)) {\n\t\t\tthrow new Error(`${el} is not of type ${slotData.type}`);\n\t\t}\n\t});\n\n\treturn value;\n};\n\nexport default UI5ElementMetadata;\n","if (!customElements.get(\"ui5-static-area\")) {\n\tcustomElements.define(\"ui5-static-area\", class extends HTMLElement {});\n}\n","import { getCustomElementsScopingSuffix, shouldScopeCustomElement } from \"../CustomElementsScopeUtils.js\";\n\n/**\n * Runs a component's template with the component's current state, while also scoping HTML\n *\n * @param template - the template to execute\n * @param component - the component\n * @public\n * @returns {*}\n */\nconst executeTemplate = (template, component) => {\n\tconst tagsToScope = getTagsToScope(component);\n\tconst scope = getCustomElementsScopingSuffix();\n\treturn template(component, tagsToScope, scope);\n};\n\n/**\n * Returns all tags, used inside component's template subject to scoping.\n * @param component - the component\n * @returns {Array[]}\n * @private\n */\nconst getTagsToScope = component => {\n\tconst componentTag = component.constructor.getMetadata().getPureTag();\n\tconst tagsToScope = component.constructor.getUniqueDependencies().map(dep => dep.getMetadata().getPureTag()).filter(shouldScopeCustomElement);\n\n\tif (shouldScopeCustomElement(componentTag)) {\n\t\ttagsToScope.push(componentTag);\n\t}\n\n\treturn tagsToScope;\n};\n\nexport default executeTemplate;\n","import { reRenderAllUI5Elements } from \"../Render.js\";\nimport getSharedResource from \"../getSharedResource.js\";\nimport EventProvider from \"../EventProvider.js\";\n\nconst eventProvider = getSharedResource(\"CustomStyle.eventProvider\", new EventProvider());\nconst CUSTOM_CSS_CHANGE = \"CustomCSSChange\";\n\nconst attachCustomCSSChange = listener => {\n\teventProvider.attachEvent(CUSTOM_CSS_CHANGE, listener);\n};\n\nconst detachCustomCSSChange = listener => {\n\teventProvider.detachEvent(CUSTOM_CSS_CHANGE, listener);\n};\n\nconst fireCustomCSSChange = tag => {\n\treturn eventProvider.fireEvent(CUSTOM_CSS_CHANGE, tag);\n};\n\nconst customCSSFor = getSharedResource(\"CustomStyle.customCSSFor\", {});\n\n// Listen to the eventProvider, in case other copies of this CustomStyle module fire this\n// event, and this copy would therefore need to reRender the ui5 webcomponents; but\n// don't reRender if it was this copy that fired the event to begin with.\nlet skipRerender;\nattachCustomCSSChange(tag => {\n\tif (!skipRerender) {\n\t\treRenderAllUI5Elements({ tag });\n\t}\n});\n\nconst addCustomCSS = (tag, css) => {\n\tif (!customCSSFor[tag]) {\n\t\tcustomCSSFor[tag] = [];\n\t}\n\tcustomCSSFor[tag].push(css);\n\n\tskipRerender = true;\n\ttry {\n\t\t// The event is fired and the attached event listeners are all called synchronously\n\t\t// The skipRerender flag will be used to avoid calling reRenderAllUI5Elements twice when it is this copy\n\t\t// of CustomStyle.js which is firing the `CustomCSSChange` event.\n\t\tfireCustomCSSChange(tag);\n\t} finally {\n\t\tskipRerender = false;\n\t}\n\n\treturn reRenderAllUI5Elements({ tag });\n};\n\nconst getCustomCSS = tag => {\n\treturn customCSSFor[tag] ? customCSSFor[tag].join(\"\") : \"\";\n};\n\nexport {\n\taddCustomCSS,\n\tgetCustomCSS,\n\tattachCustomCSSChange,\n\tdetachCustomCSSChange,\n};\n","const getStylesString = styles => {\n\tif (Array.isArray(styles)) {\n\t\treturn flatten(styles.filter(style => !!style)).map(style => {\n\t\t\treturn typeof style === \"string\" ? style : style.content;\n\t\t}).join(\" \");\n\t}\n\n\treturn typeof styles === \"string\" ? styles : styles.content;\n};\n\nconst flatten = arr => {\n\treturn arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatten(val) : val), []);\n};\n\nexport default getStylesString;\n","import { getCustomCSS, attachCustomCSSChange } from \"./CustomStyle.js\";\nimport getStylesString from \"./getStylesString.js\";\nimport { getFeature } from \"../FeaturesRegistry.js\";\n\nconst effectiveStyleMap = new Map();\n\nattachCustomCSSChange(tag => {\n\teffectiveStyleMap.delete(`${tag}_normal`); // there is custom CSS only for the component itself, not for its static area part\n});\n\nconst getEffectiveStyle = (ElementClass, forStaticArea = false) => {\n\tconst tag = ElementClass.getMetadata().getTag();\n\tconst key = `${tag}_${forStaticArea ? \"static\" : \"normal\"}`;\n\tconst OpenUI5Enablement = getFeature(\"OpenUI5Enablement\");\n\n\tif (!effectiveStyleMap.has(key)) {\n\t\tlet effectiveStyle;\n\t\tlet busyIndicatorStyles = \"\";\n\n\t\tif (OpenUI5Enablement) {\n\t\t\tbusyIndicatorStyles = getStylesString(OpenUI5Enablement.getBusyIndicatorStyles());\n\t\t}\n\n\t\tif (forStaticArea) {\n\t\t\teffectiveStyle = getStylesString(ElementClass.staticAreaStyles);\n\t\t} else {\n\t\t\tconst customStyle = getCustomCSS(tag) || \"\";\n\t\t\tconst builtInStyles = getStylesString(ElementClass.styles);\n\t\t\teffectiveStyle = `${builtInStyles} ${customStyle}`;\n\t\t}\n\n\t\teffectiveStyle = `${effectiveStyle} ${busyIndicatorStyles}`;\n\t\teffectiveStyleMap.set(key, effectiveStyle);\n\t}\n\n\treturn effectiveStyleMap.get(key);\n};\n\nexport default getEffectiveStyle;\n","import getEffectiveStyle from \"./getEffectiveStyle.js\";\nimport { attachCustomCSSChange } from \"./CustomStyle.js\";\n\nconst constructableStyleMap = new Map();\n\nattachCustomCSSChange(tag => {\n\tconstructableStyleMap.delete(`${tag}_normal`); // there is custom CSS only for the component itself, not for its static area part\n});\n\n/**\n * Returns (and caches) a constructable style sheet for a web component class\n * Note: Chrome\n * @param ElementClass\n * @returns {*}\n */\nconst getConstructableStyle = (ElementClass, forStaticArea = false) => {\n\tconst tag = ElementClass.getMetadata().getTag();\n\tconst key = `${tag}_${forStaticArea ? \"static\" : \"normal\"}`;\n\n\tif (!constructableStyleMap.has(key)) {\n\t\tconst styleContent = getEffectiveStyle(ElementClass, forStaticArea);\n\t\tconst style = new CSSStyleSheet();\n\t\tstyle.replaceSync(styleContent);\n\t\tconstructableStyleMap.set(key, [style]);\n\t}\n\n\treturn constructableStyleMap.get(key);\n};\n\nexport default getConstructableStyle;\n","import executeTemplate from \"./renderer/executeTemplate.js\";\nimport getConstructableStyle from \"./theming/getConstructableStyle.js\";\nimport getEffectiveStyle from \"./theming/getEffectiveStyle.js\";\nimport getEffectiveLinksHrefs from \"./theming/getEffectiveLinksHrefs.js\";\nimport isLegacyBrowser from \"./isLegacyBrowser.js\";\nimport { shouldUseLinks } from \"./CSP.js\";\n\n/**\n * Updates the shadow root of a UI5Element or its static area item\n * @param element\n * @param forStaticArea\n */\nconst updateShadowRoot = (element, forStaticArea = false) => {\n\tlet styleStrOrHrefsArr;\n\tconst template = forStaticArea ? \"staticAreaTemplate\" : \"template\";\n\tconst shadowRoot = forStaticArea ? element.staticAreaItem.shadowRoot : element.shadowRoot;\n\tconst renderResult = executeTemplate(element.constructor[template], element);\n\n\tif (shouldUseLinks()) {\n\t\tstyleStrOrHrefsArr = getEffectiveLinksHrefs(element.constructor, forStaticArea);\n\t} else if (document.adoptedStyleSheets) { // Chrome\n\t\tshadowRoot.adoptedStyleSheets = getConstructableStyle(element.constructor, forStaticArea);\n\t} else if (!isLegacyBrowser()) { // FF, Safari\n\t\tstyleStrOrHrefsArr = getEffectiveStyle(element.constructor, forStaticArea);\n\t}\n\n\telement.constructor.render(renderResult, shadowRoot, styleStrOrHrefsArr, forStaticArea, { host: element });\n};\n\nexport default updateShadowRoot;\n","const isLegacyBrowser = () => !!window.ShadyDOM;\n\nexport default isLegacyBrowser;\n","import { getRTL as getConfiguredRTL } from \"../InitialConfiguration.js\";\nimport { getLanguage } from \"./Language.js\";\nimport getDesigntimePropertyAsArray from \"../util/getDesigntimePropertyAsArray.js\";\nimport detectNavigatorLanguage from \"../util/detectNavigatorLanguage.js\";\n\nconst M_ISO639_OLD_TO_NEW = {\n\t\"iw\": \"he\",\n\t\"ji\": \"yi\",\n\t\"in\": \"id\",\n\t\"sh\": \"sr\",\n};\n\nconst A_RTL_LOCALES = getDesigntimePropertyAsArray(\"$cldr-rtl-locales:ar,fa,he$\") || [];\n\nconst impliesRTL = language => {\n\tlanguage = (language && M_ISO639_OLD_TO_NEW[language]) || language;\n\n\treturn A_RTL_LOCALES.indexOf(language) >= 0;\n};\n\nconst getRTL = () => {\n\tconst configurationRTL = getConfiguredRTL();\n\n\tif (configurationRTL !== null) {\n\t\treturn !!configurationRTL;\n\t}\n\n\treturn impliesRTL(getLanguage() || detectNavigatorLanguage());\n};\n\nexport { getRTL }; // eslint-disable-line\n","export default value => {\n\tconst m = /\\$([-a-z0-9A-Z._]+)(?::([^$]*))?\\$/.exec(value);\n\treturn m && m[2] ? m[2].split(/,/) : null;\n};\n","import { getRTL } from \"../config/RTL.js\";\n\nconst GLOBAL_DIR_CSS_VAR = \"--_ui5_dir\";\n\nconst getEffectiveDir = element => {\n\tconst doc = window.document;\n\tconst dirValues = [\"ltr\", \"rtl\"]; // exclude \"auto\" and \"\" from all calculations\n\tconst locallyAppliedDir = getComputedStyle(element).getPropertyValue(GLOBAL_DIR_CSS_VAR);\n\n\t// In that order, inspect the CSS Var (for modern browsers), the element itself, html and body (for IE fallback)\n\tif (dirValues.includes(locallyAppliedDir)) {\n\t\treturn locallyAppliedDir;\n\t}\n\tif (dirValues.includes(element.dir)) {\n\t\treturn element.dir;\n\t}\n\tif (dirValues.includes(doc.documentElement.dir)) {\n\t\treturn doc.documentElement.dir;\n\t}\n\tif (dirValues.includes(doc.body.dir)) {\n\t\treturn doc.body.dir;\n\t}\n\n\t// Finally, check the configuration for explicitly set RTL or language-implied RTL\n\treturn getRTL() ? \"rtl\" : undefined;\n};\n\nexport default getEffectiveDir;\n","import \"./StaticArea.js\";\nimport updateShadowRoot from \"./updateShadowRoot.js\";\nimport { renderFinished } from \"./Render.js\";\nimport getEffectiveContentDensity from \"./util/getEffectiveContentDensity.js\";\nimport { getEffectiveScopingSuffixForTag } from \"./CustomElementsScopeUtils.js\";\nimport getEffectiveDir from \"./locale/getEffectiveDir.js\";\n\n/**\n *\n * @class\n * @author SAP SE\n * @private\n */\nclass StaticAreaItem extends HTMLElement {\n\tconstructor() {\n\t\tsuper();\n\t\tthis._rendered = false;\n\t\tthis.attachShadow({ mode: \"open\" });\n\t}\n\n\t/**\n\t * @protected\n\t * @param ownerElement The UI5Element instance that owns this static area item\n\t */\n\tsetOwnerElement(ownerElement) {\n\t\tthis.ownerElement = ownerElement;\n\t\tthis.classList.add(this.ownerElement._id); // used for getting the popover in the tests\n\t\tif (this.ownerElement.hasAttribute(\"data-ui5-static-stable\")) {\n\t\t\tthis.setAttribute(\"data-ui5-stable\", this.ownerElement.getAttribute(\"data-ui5-static-stable\")); // stable selector\n\t\t}\n\t}\n\n\t/**\n\t * Updates the shadow root of the static area item with the latest state, if rendered\n\t * @protected\n\t */\n\tupdate() {\n\t\tif (this._rendered) {\n\t\t\tthis._updateContentDensity();\n\t\t\tthis._updateDirection();\n\t\t\tupdateShadowRoot(this.ownerElement, true);\n\t\t}\n\t}\n\n\t/**\n\t * Sets the correct content density based on the owner element's state\n\t * @private\n\t */\n\t_updateContentDensity() {\n\t\tif (getEffectiveContentDensity(this.ownerElement) === \"compact\") {\n\t\t\tthis.classList.add(\"sapUiSizeCompact\");\n\t\t\tthis.classList.add(\"ui5-content-density-compact\");\n\t\t} else {\n\t\t\tthis.classList.remove(\"sapUiSizeCompact\");\n\t\t\tthis.classList.remove(\"ui5-content-density-compact\");\n\t\t}\n\t}\n\n\t_updateDirection() {\n\t\tconst dir = getEffectiveDir(this.ownerElement);\n\t\tif (dir) {\n\t\t\tthis.setAttribute(\"dir\", dir);\n\t\t} else {\n\t\t\tthis.removeAttribute(\"dir\");\n\t\t}\n\t}\n\n\t/**\n\t * @protected\n\t * Returns reference to the DOM element where the current fragment is added.\n\t */\n\tasync getDomRef() {\n\t\tthis._updateContentDensity();\n\t\tif (!this._rendered) {\n\t\t\tthis._rendered = true;\n\t\t\tupdateShadowRoot(this.ownerElement, true);\n\t\t}\n\t\tawait renderFinished(); // Wait for the content of the ui5-static-area-item to be rendered\n\t\treturn this.shadowRoot;\n\t}\n\n\tstatic getTag() {\n\t\tconst pureTag = \"ui5-static-area-item\";\n\t\tconst suffix = getEffectiveScopingSuffixForTag(pureTag);\n\t\tif (!suffix) {\n\t\t\treturn pureTag;\n\t\t}\n\n\t\treturn `${pureTag}-${suffix}`;\n\t}\n\n\tstatic createInstance() {\n\t\tif (!customElements.get(StaticAreaItem.getTag())) {\n\t\t\tcustomElements.define(StaticAreaItem.getTag(), StaticAreaItem);\n\t\t}\n\n\t\treturn document.createElement(this.getTag());\n\t}\n}\n\nexport default StaticAreaItem;\n","const GLOBAL_CONTENT_DENSITY_CSS_VAR = \"--_ui5_content_density\";\n\nconst getEffectiveContentDensity = el => getComputedStyle(el).getPropertyValue(GLOBAL_CONTENT_DENSITY_CSS_VAR);\n\nexport default getEffectiveContentDensity;\n","const observers = new WeakMap(); // We want just one observer per node, store them here -> DOM nodes are keys\n\n/**\n * Default implementation with MutationObserver for browsers with native support\n */\nlet _createObserver = (node, callback, options) => {\n\tconst observer = new MutationObserver(callback);\n\tobserver.observe(node, options);\n\treturn observer;\n};\n\n/**\n * Default implementation with MutationObserver for browsers with native support\n */\nlet _destroyObserver = observer => {\n\tobserver.disconnect();\n};\n\n/**\n * Allows to create an alternative DOM observer implementation\n * @param createFn\n */\nconst setCreateObserverCallback = createFn => {\n\tif (typeof createFn === \"function\") {\n\t\t_createObserver = createFn;\n\t}\n};\n\n/**\n * Allows to create an alternative DOM observer implementation\n * @param destroyFn\n */\nconst setDestroyObserverCallback = destroyFn => {\n\tif (typeof destroyFn === \"function\") {\n\t\t_destroyObserver = destroyFn;\n\t}\n};\n\n/**\n * @param node\n * @param callback\n * @param options\n */\nconst observeDOMNode = (node, callback, options) => {\n\tconst observer = _createObserver(node, callback, options);\n\tobservers.set(node, observer);\n};\n\n/**\n * @param node\n */\nconst unobserveDOMNode = node => {\n\tconst observer = observers.get(node);\n\tif (observer) {\n\t\t_destroyObserver(observer);\n\t\tobservers.delete(node);\n\t}\n};\n\nexport {\n\tsetCreateObserverCallback,\n\tsetDestroyObserverCallback,\n\tobserveDOMNode,\n\tunobserveDOMNode,\n};\n","import { getNoConflict as getConfiguredNoConflict } from \"../InitialConfiguration.js\";\n\n// Fire these events even with noConflict: true\nconst excludeList = [\n\t\"value-changed\",\n];\n\nconst shouldFireOriginalEvent = eventName => {\n\treturn excludeList.includes(eventName);\n};\n\nlet noConflict;\n\nconst shouldNotFireOriginalEvent = eventName => {\n\tconst nc = getNoConflict();\n\treturn !(nc.events && nc.events.includes && nc.events.includes(eventName));\n};\n\nconst getNoConflict = () => {\n\tif (noConflict === undefined) {\n\t\tnoConflict = getConfiguredNoConflict();\n\t}\n\n\treturn noConflict;\n};\n\nconst skipOriginalEvent = eventName => {\n\tconst nc = getNoConflict();\n\n\t// Always fire these events\n\tif (shouldFireOriginalEvent(eventName)) {\n\t\treturn false;\n\t}\n\n\t// Read from the configuration\n\tif (nc === true) {\n\t\treturn true;\n\t}\n\n\treturn !shouldNotFireOriginalEvent(eventName);\n};\n\nconst setNoConflict = noConflictData => {\n\tnoConflict = noConflictData;\n};\n\nexport {\n\tgetNoConflict,\n\tsetNoConflict,\n\tskipOriginalEvent,\n};\n","// Note: disabled is present in IE so we explicitly allow it here.\n// Others, such as title/hidden, we explicitly override, so valid too\nconst allowList = [\n\t\"disabled\",\n\t\"title\",\n\t\"hidden\",\n\t\"role\",\n\t\"draggable\",\n];\n\n/**\n * Checks whether a property name is valid (does not collide with existing DOM API properties)\n *\n * @param name\n * @returns {boolean}\n */\nconst isValidPropertyName = name => {\n\tif (allowList.includes(name) || name.startsWith(\"aria\")) {\n\t\treturn true;\n\t}\n\tconst classes = [\n\t\tHTMLElement,\n\t\tElement,\n\t\tNode,\n\t];\n\treturn !classes.some(klass => klass.prototype.hasOwnProperty(name)); // eslint-disable-line\n};\n\nexport default isValidPropertyName;\n","const arraysAreEqual = (arr1, arr2) => {\n\tif (arr1.length !== arr2.length) {\n\t\treturn false;\n\t}\n\n\tfor (let i = 0; i < arr1.length; i++) {\n\t\tif (arr1[i] !== arr2[i]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n};\n\nexport default arraysAreEqual;\n","const getClassCopy = (klass, constructorCallback) => {\n\treturn class classCopy extends klass {\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tconstructorCallback && constructorCallback();\n\t\t}\n\t};\n};\n\nexport default getClassCopy;\n","import merge from \"./thirdparty/merge.js\";\nimport { boot } from \"./Boot.js\";\nimport UI5ElementMetadata from \"./UI5ElementMetadata.js\";\nimport EventProvider from \"./EventProvider.js\";\nimport getSingletonElementInstance from \"./util/getSingletonElementInstance.js\";\nimport StaticAreaItem from \"./StaticAreaItem.js\";\nimport updateShadowRoot from \"./updateShadowRoot.js\";\nimport { renderDeferred, renderImmediately, cancelRender } from \"./Render.js\";\nimport { registerTag, isTagRegistered, recordTagRegistrationFailure } from \"./CustomElementsRegistry.js\";\nimport { observeDOMNode, unobserveDOMNode } from \"./DOMObserver.js\";\nimport { skipOriginalEvent } from \"./config/NoConflict.js\";\nimport getEffectiveDir from \"./locale/getEffectiveDir.js\";\nimport DataType from \"./types/DataType.js\";\nimport { kebabToCamelCase, camelToKebabCase } from \"./util/StringHelper.js\";\nimport isValidPropertyName from \"./util/isValidPropertyName.js\";\nimport isDescendantOf from \"./util/isDescendantOf.js\";\nimport { isSlot, getSlotName, getSlottedElementsList } from \"./util/SlotsHelper.js\";\nimport arraysAreEqual from \"./util/arraysAreEqual.js\";\nimport getClassCopy from \"./util/getClassCopy.js\";\nimport { markAsRtlAware } from \"./locale/RTLAwareRegistry.js\";\nimport preloadLinks from \"./theming/preloadLinks.js\";\n\nlet autoId = 0;\n\nconst elementTimeouts = new Map();\nconst uniqueDependenciesCache = new Map();\n\n/**\n * Triggers re-rendering of a UI5Element instance due to state change.\n *\n * @param changeInfo An object with information about the change that caused invalidation.\n * @private\n */\nfunction _invalidate(changeInfo) {\n\t// Invalidation should be suppressed: 1) before the component is rendered for the first time 2) and during the execution of onBeforeRendering\n\t// This is necessary not only as an optimization, but also to avoid infinite loops on invalidation between children and parents (when invalidateOnChildChange is used)\n\tif (this._suppressInvalidation) {\n\t\treturn;\n\t}\n\n\t// Call the onInvalidation hook\n\tthis.onInvalidation(changeInfo);\n\n\tthis._changedState.push(changeInfo);\n\trenderDeferred(this);\n\tthis._eventProvider.fireEvent(\"invalidate\", { ...changeInfo, target: this });\n}\n\nlet metadata = {};\n\n/**\n * Base class for all UI5 Web Components\n *\n * @class\n * @constructor\n * @author SAP SE\n * @alias sap.ui.webcomponents.base.UI5Element\n * @extends HTMLElement\n * @public\n */\nclass UI5Element extends HTMLElement {\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._changedState = []; // Filled on each invalidation, cleared on re-render (used for debugging)\n\t\tthis._suppressInvalidation = true; // A flag telling whether all invalidations should be ignored. Initialized with \"true\" because a UI5Element can not be invalidated until it is rendered for the first time\n\t\tthis._inDOM = false; // A flag telling whether the UI5Element is currently in the DOM tree of the document or not\n\t\tthis._fullyConnected = false; // A flag telling whether the UI5Element's onEnterDOM hook was called (since it's possible to have the element removed from DOM before that)\n\t\tthis._childChangeListeners = new Map(); // used to store lazy listeners per slot for the child change event of every child inside that slot\n\t\tthis._slotChangeListeners = new Map(); // used to store lazy listeners per slot for the slotchange event of all slot children inside that slot\n\t\tthis._eventProvider = new EventProvider(); // used by parent components for listening to changes to child components\n\t\tlet deferredResolve;\n\t\tthis._domRefReadyPromise = new Promise(resolve => {\n\t\t\tdeferredResolve = resolve;\n\t\t});\n\t\tthis._domRefReadyPromise._deferredResolve = deferredResolve;\n\n\t\tthis._initializeState();\n\t\tthis._upgradeAllProperties();\n\n\t\tif (this.constructor._needsShadowDOM()) {\n\t\t\tthis.attachShadow({ mode: \"open\" });\n\t\t}\n\t}\n\n\t/**\n\t * Returns a unique ID for this UI5 Element\n\t *\n\t * @deprecated - This property is not guaranteed in future releases\n\t * @protected\n\t */\n\tget _id() {\n\t\tif (!this.__id) {\n\t\t\tthis.__id = `ui5wc_${++autoId}`;\n\t\t}\n\n\t\treturn this.__id;\n\t}\n\n\t/**\n\t * Do not call this method from derivatives of UI5Element, use \"onEnterDOM\" only\n\t * @private\n\t */\n\tasync connectedCallback() {\n\t\tthis.setAttribute(this.constructor.getMetadata().getPureTag(), \"\");\n\t\tif (this.constructor.getMetadata().supportsF6FastNavigation()) {\n\t\t\tthis.setAttribute(\"data-sap-ui-fastnavgroup\", \"true\");\n\t\t}\n\n\t\tconst slotsAreManaged = this.constructor.getMetadata().slotsAreManaged();\n\n\t\tthis._inDOM = true;\n\n\t\tif (slotsAreManaged) {\n\t\t\t// always register the observer before yielding control to the main thread (await)\n\t\t\tthis._startObservingDOMChildren();\n\t\t\tawait this._processChildren();\n\t\t}\n\n\t\tif (!this._inDOM) { // Component removed from DOM while _processChildren was running\n\t\t\treturn;\n\t\t}\n\n\t\trenderImmediately(this);\n\t\tthis._domRefReadyPromise._deferredResolve();\n\t\tthis._fullyConnected = true;\n\t\tif (typeof this.onEnterDOM === \"function\") {\n\t\t\tthis.onEnterDOM();\n\t\t}\n\t}\n\n\t/**\n\t * Do not call this method from derivatives of UI5Element, use \"onExitDOM\" only\n\t * @private\n\t */\n\tdisconnectedCallback() {\n\t\tconst slotsAreManaged = this.constructor.getMetadata().slotsAreManaged();\n\n\t\tthis._inDOM = false;\n\n\t\tif (slotsAreManaged) {\n\t\t\tthis._stopObservingDOMChildren();\n\t\t}\n\n\t\tif (this._fullyConnected) {\n\t\t\tif (typeof this.onExitDOM === \"function\") {\n\t\t\t\tthis.onExitDOM();\n\t\t\t}\n\t\t\tthis._fullyConnected = false;\n\t\t}\n\n\t\tif (this.staticAreaItem && this.staticAreaItem.parentElement) {\n\t\t\tthis.staticAreaItem.parentElement.removeChild(this.staticAreaItem);\n\t\t}\n\n\t\tcancelRender(this);\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_startObservingDOMChildren() {\n\t\tconst shouldObserveChildren = this.constructor.getMetadata().hasSlots();\n\t\tif (!shouldObserveChildren) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst canSlotText = this.constructor.getMetadata().canSlotText();\n\t\tconst mutationObserverOptions = {\n\t\t\tchildList: true,\n\t\t\tsubtree: canSlotText,\n\t\t\tcharacterData: canSlotText,\n\t\t};\n\t\tobserveDOMNode(this, this._processChildren.bind(this), mutationObserverOptions);\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_stopObservingDOMChildren() {\n\t\tunobserveDOMNode(this);\n\t}\n\n\t/**\n\t * Note: this method is also manually called by \"compatibility/patchNodeValue.js\"\n\t * @private\n\t */\n\tasync _processChildren() {\n\t\tconst hasSlots = this.constructor.getMetadata().hasSlots();\n\t\tif (hasSlots) {\n\t\t\tawait this._updateSlots();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tasync _updateSlots() {\n\t\tconst slotsMap = this.constructor.getMetadata().getSlots();\n\t\tconst canSlotText = this.constructor.getMetadata().canSlotText();\n\t\tconst domChildren = Array.from(canSlotText ? this.childNodes : this.children);\n\n\t\tconst slotsCachedContentMap = new Map(); // Store here the content of each slot before the mutation occurred\n\t\tconst propertyNameToSlotMap = new Map(); // Used for reverse lookup to determine to which slot the property name corresponds\n\n\t\t// Init the _state object based on the supported slots and store the previous values\n\t\tfor (const [slotName, slotData] of Object.entries(slotsMap)) { // eslint-disable-line\n\t\t\tconst propertyName = slotData.propertyName || slotName;\n\t\t\tpropertyNameToSlotMap.set(propertyName, slotName);\n\t\t\tslotsCachedContentMap.set(propertyName, [...this._state[propertyName]]);\n\t\t\tthis._clearSlot(slotName, slotData);\n\t\t}\n\n\t\tconst autoIncrementMap = new Map();\n\t\tconst slottedChildrenMap = new Map();\n\n\t\tconst allChildrenUpgraded = domChildren.map(async (child, idx) => {\n\t\t\t// Determine the type of the child (mainly by the slot attribute)\n\t\t\tconst slotName = getSlotName(child);\n\t\t\tconst slotData = slotsMap[slotName];\n\n\t\t\t// Check if the slotName is supported\n\t\t\tif (slotData === undefined) {\n\t\t\t\tconst validValues = Object.keys(slotsMap).join(\", \");\n\t\t\t\tconsole.warn(`Unknown slotName: ${slotName}, ignoring`, child, `Valid values are: ${validValues}`); // eslint-disable-line\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For children that need individual slots, calculate them\n\t\t\tif (slotData.individualSlots) {\n\t\t\t\tconst nextIndex = (autoIncrementMap.get(slotName) || 0) + 1;\n\t\t\t\tautoIncrementMap.set(slotName, nextIndex);\n\t\t\t\tchild._individualSlot = `${slotName}-${nextIndex}`;\n\t\t\t}\n\n\t\t\t// Await for not-yet-defined custom elements\n\t\t\tif (child instanceof HTMLElement) {\n\t\t\t\tconst localName = child.localName;\n\t\t\t\tconst isCustomElement = localName.includes(\"-\");\n\t\t\t\tif (isCustomElement) {\n\t\t\t\t\tconst isDefined = window.customElements.get(localName);\n\t\t\t\t\tif (!isDefined) {\n\t\t\t\t\t\tconst whenDefinedPromise = window.customElements.whenDefined(localName); // Class registered, but instances not upgraded yet\n\t\t\t\t\t\tlet timeoutPromise = elementTimeouts.get(localName);\n\t\t\t\t\t\tif (!timeoutPromise) {\n\t\t\t\t\t\t\ttimeoutPromise = new Promise(resolve => setTimeout(resolve, 1000));\n\t\t\t\t\t\t\telementTimeouts.set(localName, timeoutPromise);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tawait Promise.race([whenDefinedPromise, timeoutPromise]);\n\t\t\t\t\t}\n\t\t\t\t\twindow.customElements.upgrade(child);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchild = this.constructor.getMetadata().constructor.validateSlotValue(child, slotData);\n\n\t\t\t// Listen for any invalidation on the child if invalidateOnChildChange is true or an object (ignore when false or not set)\n\t\t\tif (child.isUI5Element && slotData.invalidateOnChildChange) {\n\t\t\t\tconst method = (child.attachInvalidate || child._attachChange).bind(child);\n\t\t\t\tmethod(this._getChildChangeListener(slotName));\n\t\t\t}\n\n\t\t\t// Listen for the slotchange event if the child is a slot itself\n\t\t\tif (isSlot(child)) {\n\t\t\t\tthis._attachSlotChange(child, slotName);\n\t\t\t}\n\n\t\t\tconst propertyName = slotData.propertyName || slotName;\n\n\t\t\tif (slottedChildrenMap.has(propertyName)) {\n\t\t\t\tslottedChildrenMap.get(propertyName).push({ child, idx });\n\t\t\t} else {\n\t\t\t\tslottedChildrenMap.set(propertyName, [{ child, idx }]);\n\t\t\t}\n\t\t});\n\n\t\tawait Promise.all(allChildrenUpgraded);\n\n\t\t// Distribute the child in the _state object, keeping the Light DOM order,\n\t\t// not the order elements are defined.\n\t\tslottedChildrenMap.forEach((children, propertyName) => {\n\t\t\tthis._state[propertyName] = children.sort((a, b) => a.idx - b.idx).map(_ => _.child);\n\t\t});\n\n\t\t// Compare the content of each slot with the cached values and invalidate for the ones that changed\n\t\tlet invalidated = false;\n\t\tfor (const [slotName, slotData] of Object.entries(slotsMap)) { // eslint-disable-line\n\t\t\tconst propertyName = slotData.propertyName || slotName;\n\t\t\tif (!arraysAreEqual(slotsCachedContentMap.get(propertyName), this._state[propertyName])) {\n\t\t\t\t_invalidate.call(this, {\n\t\t\t\t\ttype: \"slot\",\n\t\t\t\t\tname: propertyNameToSlotMap.get(propertyName),\n\t\t\t\t\treason: \"children\",\n\t\t\t\t});\n\t\t\t\tinvalidated = true;\n\t\t\t}\n\t\t}\n\n\t\t// If none of the slots had an invalidation due to changes to immediate children,\n\t\t// the change is considered to be text content of the default slot\n\t\tif (!invalidated) {\n\t\t\t_invalidate.call(this, {\n\t\t\t\ttype: \"slot\",\n\t\t\t\tname: \"default\",\n\t\t\t\treason: \"textcontent\",\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Removes all children from the slot and detaches listeners, if any\n\t * @private\n\t */\n\t_clearSlot(slotName, slotData) {\n\t\tconst propertyName = slotData.propertyName || slotName;\n\t\tconst children = this._state[propertyName];\n\n\t\tchildren.forEach(child => {\n\t\t\tif (child && child.isUI5Element) {\n\t\t\t\tconst method = (child.detachInvalidate || child._detachChange).bind(child);\n\t\t\t\tmethod(this._getChildChangeListener(slotName));\n\t\t\t}\n\n\t\t\tif (isSlot(child)) {\n\t\t\t\tthis._detachSlotChange(child, slotName);\n\t\t\t}\n\t\t});\n\n\t\tthis._state[propertyName] = [];\n\t}\n\n\t/**\n\t * Attach a callback that will be executed whenever the component is invalidated\n\t *\n\t * @param callback\n\t * @public\n\t */\n\tattachInvalidate(callback) {\n\t\tthis._eventProvider.attachEvent(\"invalidate\", callback);\n\t}\n\n\t/**\n\t * Detach the callback that is executed whenever the component is invalidated\n\t *\n\t * @param callback\n\t * @public\n\t */\n\tdetachInvalidate(callback) {\n\t\tthis._eventProvider.detachEvent(\"invalidate\", callback);\n\t}\n\n\t/**\n\t * Callback that is executed whenever a monitored child changes its state\n\t *\n\t * @param slotName the slot in which a child was invalidated\n\t * @param childChangeInfo the changeInfo object for the child in the given slot\n\t * @private\n\t */\n\t_onChildChange(slotName, childChangeInfo) {\n\t\tif (!this.constructor.getMetadata().shouldInvalidateOnChildChange(slotName, childChangeInfo.type, childChangeInfo.name)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// The component should be invalidated as this type of change on the child is listened for\n\t\t// However, no matter what changed on the child (property/slot), the invalidation is registered as \"type=slot\" for the component itself\n\t\t_invalidate.call(this, {\n\t\t\ttype: \"slot\",\n\t\t\tname: slotName,\n\t\t\treason: \"childchange\",\n\t\t\tchild: childChangeInfo.target,\n\t\t});\n\t}\n\n\t/**\n\t * Do not override this method in derivatives of UI5Element\n\t * @private\n\t */\n\tattributeChangedCallback(name, oldValue, newValue) {\n\t\tconst properties = this.constructor.getMetadata().getProperties();\n\t\tconst realName = name.replace(/^ui5-/, \"\");\n\t\tconst nameInCamelCase = kebabToCamelCase(realName);\n\t\tif (properties.hasOwnProperty(nameInCamelCase)) { // eslint-disable-line\n\t\t\tconst propertyTypeClass = properties[nameInCamelCase].type;\n\t\t\tif (propertyTypeClass === Boolean) {\n\t\t\t\tnewValue = newValue !== null;\n\t\t\t} else if (isDescendantOf(propertyTypeClass, DataType)) {\n\t\t\t\tnewValue = propertyTypeClass.attributeToProperty(newValue);\n\t\t\t}\n\t\t\tthis[nameInCamelCase] = newValue;\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_updateAttribute(name, newValue) {\n\t\tif (!this.constructor.getMetadata().hasAttribute(name)) {\n\t\t\treturn;\n\t\t}\n\t\tconst properties = this.constructor.getMetadata().getProperties();\n\t\tconst propertyTypeClass = properties[name].type;\n\t\tconst attrName = camelToKebabCase(name);\n\t\tconst attrValue = this.getAttribute(attrName);\n\n\t\tif (propertyTypeClass === Boolean) {\n\t\t\tif (newValue === true && attrValue === null) {\n\t\t\t\tthis.setAttribute(attrName, \"\");\n\t\t\t} else if (newValue === false && attrValue !== null) {\n\t\t\t\tthis.removeAttribute(attrName);\n\t\t\t}\n\t\t} else if (isDescendantOf(propertyTypeClass, DataType)) {\n\t\t\tthis.setAttribute(attrName, propertyTypeClass.propertyToAttribute(newValue));\n\t\t} else if (typeof newValue !== \"object\") {\n\t\t\tif (attrValue !== newValue) {\n\t\t\t\tthis.setAttribute(attrName, newValue);\n\t\t\t}\n\t\t} // else { return; } // old object handling\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_upgradeProperty(prop) {\n\t\tif (this.hasOwnProperty(prop)) { // eslint-disable-line\n\t\t\tconst value = this[prop];\n\t\t\tdelete this[prop];\n\t\t\tthis[prop] = value;\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_upgradeAllProperties() {\n\t\tconst allProps = this.constructor.getMetadata().getPropertiesList();\n\t\tallProps.forEach(this._upgradeProperty, this);\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_initializeState() {\n\t\tthis._state = { ...this.constructor.getMetadata().getInitialState() };\n\t}\n\n\t/**\n\t * Returns a singleton event listener for the \"change\" event of a child in a given slot\n\t *\n\t * @param slotName the name of the slot, where the child is\n\t * @returns {any}\n\t * @private\n\t */\n\t_getChildChangeListener(slotName) {\n\t\tif (!this._childChangeListeners.has(slotName)) {\n\t\t\tthis._childChangeListeners.set(slotName, this._onChildChange.bind(this, slotName));\n\t\t}\n\t\treturn this._childChangeListeners.get(slotName);\n\t}\n\n\t/**\n\t * Returns a singleton slotchange event listener that invalidates the component due to changes in the given slot\n\t *\n\t * @param slotName the name of the slot, where the slot element (whose slotchange event we're listening to) is\n\t * @returns {any}\n\t * @private\n\t */\n\t_getSlotChangeListener(slotName) {\n\t\tif (!this._slotChangeListeners.has(slotName)) {\n\t\t\tthis._slotChangeListeners.set(slotName, this._onSlotChange.bind(this, slotName));\n\t\t}\n\t\treturn this._slotChangeListeners.get(slotName);\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_attachSlotChange(child, slotName) {\n\t\tchild.addEventListener(\"slotchange\", this._getSlotChangeListener(slotName));\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_detachSlotChange(child, slotName) {\n\t\tchild.removeEventListener(\"slotchange\", this._getSlotChangeListener(slotName));\n\t}\n\n\t/**\n\t * Whenever a slot element is slotted inside a UI5 Web Component, its slotchange event invalidates the component\n\t *\n\t * @param slotName the name of the slot, where the slot element (whose slotchange event we're listening to) is\n\t * @private\n\t */\n\t_onSlotChange(slotName) {\n\t\t_invalidate.call(this, {\n\t\t\ttype: \"slot\",\n\t\t\tname: slotName,\n\t\t\treason: \"slotchange\",\n\t\t});\n\t}\n\n\t/**\n\t * A callback that is executed each time an already rendered component is invalidated (scheduled for re-rendering)\n\t *\n\t * @param changeInfo An object with information about the change that caused invalidation.\n\t * The object can have the following properties:\n\t * - type: (property|slot) tells what caused the invalidation\n\t * 1) property: a property value was changed either directly or as a result of changing the corresponding attribute\n\t * 2) slot: a slotted node(nodes) changed in one of several ways (see \"reason\")\n\t *\n\t * - name: the name of the property or slot that caused the invalidation\n\t *\n\t * - reason: (children|textcontent|childchange|slotchange) relevant only for type=\"slot\" only and tells exactly what changed in the slot\n\t * 1) children: immediate children (HTML elements or text nodes) were added, removed or reordered in the slot\n\t * 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\"\n\t * 3) slotchange: a slot element, slotted inside that slot had its \"slotchange\" event listener called. This practically means that transitively slotted children changed.\n\t * Can only trigger if the child of a slot is a slot element itself.\n\t * 4) childchange: indicates that a UI5Element child in that slot was invalidated and in turn invalidated the component.\n\t * Can only trigger for slots with \"invalidateOnChildChange\" metadata descriptor\n\t *\n\t * - newValue: the new value of the property (for type=\"property\" only)\n\t *\n\t * - oldValue: the old value of the property (for type=\"property\" only)\n\t *\n\t * - child the child that was changed (for type=\"slot\" and reason=\"childchange\" only)\n\t *\n\t * @public\n\t */\n\tonInvalidation(changeInfo) {}\n\n\t/**\n\t * Do not call this method directly, only intended to be called by js\n\t * @protected\n\t */\n\t_render() {\n\t\tconst hasIndividualSlots = this.constructor.getMetadata().hasIndividualSlots();\n\n\t\t// suppress invalidation to prevent state changes scheduling another rendering\n\t\tthis._suppressInvalidation = true;\n\n\t\tif (typeof this.onBeforeRendering === \"function\") {\n\t\t\tthis.onBeforeRendering();\n\t\t}\n\n\t\t// Intended for framework usage only. Currently ItemNavigation updates tab indexes after the component has updated its state but before the template is rendered\n\t\tif (this._onComponentStateFinalized) {\n\t\t\tthis._onComponentStateFinalized();\n\t\t}\n\n\t\t// resume normal invalidation handling\n\t\tthis._suppressInvalidation = false;\n\n\t\t// Update the shadow root with the render result\n\t\t/*\n\t\tif (this._changedState.length) {\n\t\t\tlet element = this.localName;\n\t\t\tif (this.id) {\n\t\t\t\telement = `${element}#${this.id}`;\n\t\t\t}\n\t\t\tconsole.log(\"Re-rendering:\", element, this._changedState.map(x => { // eslint-disable-line\n\t\t\t\tlet res = `${x.type}`;\n\t\t\t\tif (x.reason) {\n\t\t\t\t\tres = `${res}(${x.reason})`;\n\t\t\t\t}\n\t\t\t\tres = `${res}: ${x.name}`;\n\t\t\t\tif (x.type === \"property\") {\n\t\t\t\t\tres = `${res} ${x.oldValue} => ${x.newValue}`;\n\t\t\t\t}\n\n\t\t\t\treturn res;\n\t\t\t}));\n\t\t}\n\t\t*/\n\t\tthis._changedState = [];\n\n\t\t// Update shadow root and static area item\n\t\tif (this.constructor._needsShadowDOM()) {\n\t\t\tupdateShadowRoot(this);\n\t\t}\n\t\tif (this.staticAreaItem) {\n\t\t\tthis.staticAreaItem.update();\n\t\t}\n\n\t\t// Safari requires that children get the slot attribute only after the slot tags have been rendered in the shadow DOM\n\t\tif (hasIndividualSlots) {\n\t\t\tthis._assignIndividualSlotsToChildren();\n\t\t}\n\n\t\t// Call the onAfterRendering hook\n\t\tif (typeof this.onAfterRendering === \"function\") {\n\t\t\tthis.onAfterRendering();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_assignIndividualSlotsToChildren() {\n\t\tconst domChildren = Array.from(this.children);\n\n\t\tdomChildren.forEach(child => {\n\t\t\tif (child._individualSlot) {\n\t\t\t\tchild.setAttribute(\"slot\", child._individualSlot);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_waitForDomRef() {\n\t\treturn this._domRefReadyPromise;\n\t}\n\n\t/**\n\t * Returns the DOM Element inside the Shadow Root that corresponds to the opening tag in the UI5 Web Component's template\n\t * *Note:* For logical (abstract) elements (items, options, etc...), returns the part of the parent's DOM that represents this option\n\t * Use this method instead of \"this.shadowRoot\" to read the Shadow DOM, if ever necessary\n\t *\n\t * @public\n\t */\n\tgetDomRef() {\n\t\t// If a component set _getRealDomRef to its children, use the return value of this function\n\t\tif (typeof this._getRealDomRef === \"function\") {\n\t\t\treturn this._getRealDomRef();\n\t\t}\n\n\t\tif (!this.shadowRoot || this.shadowRoot.children.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst children = [...this.shadowRoot.children].filter(child => ![\"link\", \"style\"].includes(child.localName));\n\t\tif (children.length !== 1) {\n\t\t\tconsole.warn(`The shadow DOM for ${this.constructor.getMetadata().getTag()} does not have a top level element, the getDomRef() method might not work as expected`); // eslint-disable-line\n\t\t}\n\n\t\treturn children[0];\n\t}\n\n\t/**\n\t * Returns the DOM Element marked with \"data-sap-focus-ref\" inside the template.\n\t * This is the element that will receive the focus by default.\n\t * @public\n\t */\n\tgetFocusDomRef() {\n\t\tconst domRef = this.getDomRef();\n\t\tif (domRef) {\n\t\t\tconst focusRef = domRef.querySelector(\"[data-sap-focus-ref]\");\n\t\t\treturn focusRef || domRef;\n\t\t}\n\t}\n\n\t/**\n\t * Waits for dom ref and then returns the DOM Element marked with \"data-sap-focus-ref\" inside the template.\n\t * This is the element that will receive the focus by default.\n\t * @public\n\t */\n\tasync getFocusDomRefAsync() {\n\t\tawait this._waitForDomRef();\n\t\treturn this.getFocusDomRef();\n\t}\n\n\t/**\n\t * Set the focus to the element, returned by \"getFocusDomRef()\" (marked by \"data-sap-focus-ref\")\n\t * @public\n\t */\n\tasync focus() {\n\t\tawait this._waitForDomRef();\n\n\t\tconst focusDomRef = this.getFocusDomRef();\n\n\t\tif (focusDomRef && typeof focusDomRef.focus === \"function\") {\n\t\t\tfocusDomRef.focus();\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @public\n\t * @param name - name of the event\n\t * @param data - additional data for the event\n\t * @param cancelable - true, if the user can call preventDefault on the event object\n\t * @param bubbles - true, if the event bubbles\n\t * @returns {boolean} false, if the event was cancelled (preventDefault called), true otherwise\n\t */\n\tfireEvent(name, data, cancelable = false, bubbles = true) {\n\t\tconst eventResult = this._fireEvent(name, data, cancelable, bubbles);\n\t\tconst camelCaseEventName = kebabToCamelCase(name);\n\n\t\tif (camelCaseEventName !== name) {\n\t\t\treturn eventResult && this._fireEvent(camelCaseEventName, data, cancelable);\n\t\t}\n\n\t\treturn eventResult;\n\t}\n\n\t_fireEvent(name, data, cancelable = false, bubbles = true) {\n\t\tconst noConflictEvent = new CustomEvent(`ui5-${name}`, {\n\t\t\tdetail: data,\n\t\t\tcomposed: false,\n\t\t\tbubbles,\n\t\t\tcancelable,\n\t\t});\n\n\t\t// This will be false if the no-conflict event is prevented\n\t\tconst noConflictEventResult = this.dispatchEvent(noConflictEvent);\n\n\t\tif (skipOriginalEvent(name)) {\n\t\t\treturn noConflictEventResult;\n\t\t}\n\n\t\tconst normalEvent = new CustomEvent(name, {\n\t\t\tdetail: data,\n\t\t\tcomposed: false,\n\t\t\tbubbles,\n\t\t\tcancelable,\n\t\t});\n\n\t\t// This will be false if the normal event is prevented\n\t\tconst normalEventResult = this.dispatchEvent(normalEvent);\n\n\t\t// Return false if any of the two events was prevented (its result was false).\n\t\treturn normalEventResult && noConflictEventResult;\n\t}\n\n\t/**\n\t * Returns the actual children, associated with a slot.\n\t * 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.\n\t * @public\n\t */\n\tgetSlottedNodes(slotName) {\n\t\treturn getSlottedElementsList(this[slotName]);\n\t}\n\n\t/**\n\t * Determines whether the component should be rendered in RTL mode or not.\n\t * Returns: \"rtl\", \"ltr\" or undefined\n\t *\n\t * @public\n\t * @returns {String|undefined}\n\t */\n\tget effectiveDir() {\n\t\tmarkAsRtlAware(this.constructor); // if a UI5 Element calls this method, it's considered to be rtl-aware\n\t\treturn getEffectiveDir(this);\n\t}\n\n\t/**\n\t * Used to duck-type UI5 elements without using instanceof\n\t * @returns {boolean}\n\t * @public\n\t */\n\tget isUI5Element() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Do not override this method in derivatives of UI5Element, use metadata properties instead\n\t * @private\n\t */\n\tstatic get observedAttributes() {\n\t\treturn this.getMetadata().getAttributesList();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tstatic _needsShadowDOM() {\n\t\treturn !!this.template;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tstatic _needsStaticArea() {\n\t\treturn !!this.staticAreaTemplate;\n\t}\n\n\t/**\n\t * @public\n\t */\n\tgetStaticAreaItemDomRef() {\n\t\tif (!this.constructor._needsStaticArea()) {\n\t\t\tthrow new Error(\"This component does not use the static area\");\n\t\t}\n\n\t\tif (!this.staticAreaItem) {\n\t\t\tthis.staticAreaItem = StaticAreaItem.createInstance();\n\t\t\tthis.staticAreaItem.setOwnerElement(this);\n\t\t}\n\t\tif (!this.staticAreaItem.parentElement) {\n\t\t\tgetSingletonElementInstance(\"ui5-static-area\").appendChild(this.staticAreaItem);\n\t\t}\n\n\t\treturn this.staticAreaItem.getDomRef();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tstatic _generateAccessors() {\n\t\tconst proto = this.prototype;\n\t\tconst slotsAreManaged = this.getMetadata().slotsAreManaged();\n\n\t\t// Properties\n\t\tconst properties = this.getMetadata().getProperties();\n\t\tfor (const [prop, propData] of Object.entries(properties)) { // eslint-disable-line\n\t\t\tif (!isValidPropertyName(prop)) {\n\t\t\t\tconsole.warn(`\"${prop}\" is not a valid property name. Use a name that does not collide with DOM APIs`); /* eslint-disable-line */\n\t\t\t}\n\n\t\t\tif (propData.type === Boolean && propData.defaultValue) {\n\t\t\t\tthrow new Error(`Cannot set a default value for property \"${prop}\". All booleans are false by default.`);\n\t\t\t}\n\n\t\t\tif (propData.type === Array) {\n\t\t\t\tthrow new Error(`Wrong type for property \"${prop}\". Properties cannot be of type Array - use \"multiple: true\" and set \"type\" to the single value type, such as \"String\", \"Object\", etc...`);\n\t\t\t}\n\n\t\t\tif (propData.type === Object && propData.defaultValue) {\n\t\t\t\tthrow new Error(`Cannot set a default value for property \"${prop}\". All properties of type \"Object\" are empty objects by default.`);\n\t\t\t}\n\n\t\t\tif (propData.multiple && propData.defaultValue) {\n\t\t\t\tthrow new Error(`Cannot set a default value for property \"${prop}\". All multiple properties are empty arrays by default.`);\n\t\t\t}\n\n\t\t\tObject.defineProperty(proto, prop, {\n\t\t\t\tget() {\n\t\t\t\t\tif (this._state[prop] !== undefined) {\n\t\t\t\t\t\treturn this._state[prop];\n\t\t\t\t\t}\n\n\t\t\t\t\tconst propDefaultValue = propData.defaultValue;\n\n\t\t\t\t\tif (propData.type === Boolean) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (propData.type === String) { // eslint-disable-line\n\t\t\t\t\t\treturn propDefaultValue;\n\t\t\t\t\t} else if (propData.multiple) { // eslint-disable-line\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn propDefaultValue;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tset(value) {\n\t\t\t\t\tlet isDifferent;\n\t\t\t\t\tvalue = this.constructor.getMetadata().constructor.validatePropertyValue(value, propData);\n\n\t\t\t\t\tconst oldState = this._state[prop];\n\t\t\t\t\tif (propData.multiple && propData.compareValues) {\n\t\t\t\t\t\tisDifferent = !arraysAreEqual(oldState, value);\n\t\t\t\t\t} else if (isDescendantOf(propData.type, DataType)) {\n\t\t\t\t\t\tisDifferent = !propData.type.valuesAreEqual(oldState, value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tisDifferent = oldState !== value;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isDifferent) {\n\t\t\t\t\t\tthis._state[prop] = value;\n\t\t\t\t\t\t_invalidate.call(this, {\n\t\t\t\t\t\t\ttype: \"property\",\n\t\t\t\t\t\t\tname: prop,\n\t\t\t\t\t\t\tnewValue: value,\n\t\t\t\t\t\t\toldValue: oldState,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._updateAttribute(prop, value);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t// Slots\n\t\tif (slotsAreManaged) {\n\t\t\tconst slots = this.getMetadata().getSlots();\n\t\t\tfor (const [slotName, slotData] of Object.entries(slots)) { // eslint-disable-line\n\t\t\t\tif (!isValidPropertyName(slotName)) {\n\t\t\t\t\tconsole.warn(`\"${slotName}\" is not a valid property name. Use a name that does not collide with DOM APIs`); /* eslint-disable-line */\n\t\t\t\t}\n\n\t\t\t\tconst propertyName = slotData.propertyName || slotName;\n\t\t\t\tObject.defineProperty(proto, propertyName, {\n\t\t\t\t\tget() {\n\t\t\t\t\t\tif (this._state[propertyName] !== undefined) {\n\t\t\t\t\t\t\treturn this._state[propertyName];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t},\n\t\t\t\t\tset() {\n\t\t\t\t\t\tthrow new Error(\"Cannot set slot content directly, use the DOM APIs (appendChild, removeChild, etc...)\");\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns the metadata object for this UI5 Web Component Class\n\t * @protected\n\t */\n\tstatic get metadata() {\n\t\treturn metadata;\n\t}\n\n\t/**\n\t * Sets a new metadata object for this UI5 Web Component Class\n\t * @protected\n\t */\n\tstatic set metadata(newMetadata) {\n\t\tmetadata = newMetadata;\n\t}\n\n\t/**\n\t * Returns the CSS for this UI5 Web Component Class\n\t * @protected\n\t */\n\tstatic get styles() {\n\t\treturn \"\";\n\t}\n\n\t/**\n\t * Returns the Static Area CSS for this UI5 Web Component Class\n\t * @protected\n\t */\n\tstatic get staticAreaStyles() {\n\t\treturn \"\";\n\t}\n\n\t/**\n\t * Returns an array with the dependencies for this UI5 Web Component, which could be:\n\t * - composed components (used in its shadow root or static area item)\n\t * - slotted components that the component may need to communicate with\n\t *\n\t * @protected\n\t */\n\tstatic get dependencies() {\n\t\treturn [];\n\t}\n\n\t/**\n\t * Returns a list of the unique dependencies for this UI5 Web Component\n\t *\n\t * @public\n\t */\n\tstatic getUniqueDependencies() {\n\t\tif (!uniqueDependenciesCache.has(this)) {\n\t\t\tconst filtered = this.dependencies.filter((dep, index, deps) => deps.indexOf(dep) === index);\n\t\t\tuniqueDependenciesCache.set(this, filtered);\n\t\t}\n\n\t\treturn uniqueDependenciesCache.get(this);\n\t}\n\n\t/**\n\t * Returns a promise that resolves whenever all dependencies for this UI5 Web Component have resolved\n\t *\n\t * @returns {Promise<any[]>}\n\t */\n\tstatic whenDependenciesDefined() {\n\t\treturn Promise.all(this.getUniqueDependencies().map(dep => dep.define()));\n\t}\n\n\t/**\n\t * Hook that will be called upon custom element definition\n\t *\n\t * @protected\n\t * @returns {Promise<void>}\n\t */\n\tstatic async onDefine() {\n\t\treturn Promise.resolve();\n\t}\n\n\t/**\n\t * Registers a UI5 Web Component in the browser window object\n\t * @public\n\t * @returns {Promise<UI5Element>}\n\t */\n\tstatic async define() {\n\t\tawait boot();\n\n\t\tawait Promise.all([\n\t\t\tthis.whenDependenciesDefined(),\n\t\t\tthis.onDefine(),\n\t\t]);\n\n\t\tconst tag = this.getMetadata().getTag();\n\t\tconst altTag = this.getMetadata().getAltTag();\n\n\t\tconst definedLocally = isTagRegistered(tag);\n\t\tconst definedGlobally = customElements.get(tag);\n\n\t\tif (definedGlobally && !definedLocally) {\n\t\t\trecordTagRegistrationFailure(tag);\n\t\t} else if (!definedGlobally) {\n\t\t\tthis._generateAccessors();\n\t\t\tregisterTag(tag);\n\t\t\twindow.customElements.define(tag, this);\n\t\t\tpreloadLinks(this);\n\n\t\t\tif (altTag && !customElements.get(altTag)) {\n\t\t\t\tregisterTag(altTag);\n\t\t\t\twindow.customElements.define(altTag, getClassCopy(this, () => {\n\t\t\t\t\tconsole.log(`The ${altTag} tag is deprecated and will be removed in the next release, please use ${tag} instead.`); // eslint-disable-line\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns an instance of UI5ElementMetadata.js representing this UI5 Web Component's full metadata (its and its parents')\n\t * Note: not to be confused with the \"get metadata()\" method, which returns an object for this class's metadata only\n\t * @public\n\t * @returns {UI5ElementMetadata}\n\t */\n\tstatic getMetadata() {\n\t\tif (this.hasOwnProperty(\"_metadata\")) { // eslint-disable-line\n\t\t\treturn this._metadata;\n\t\t}\n\n\t\tconst metadataObjects = [this.metadata];\n\t\tlet klass = this; // eslint-disable-line\n\t\twhile (klass !== UI5Element) {\n\t\t\tklass = Object.getPrototypeOf(klass);\n\t\t\tmetadataObjects.unshift(klass.metadata);\n\t\t}\n\t\tconst mergedMetadata = merge({}, ...metadataObjects);\n\n\t\tthis._metadata = new UI5ElementMetadata(mergedMetadata);\n\t\treturn this._metadata;\n\t}\n}\n\nexport default UI5Element;\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar t;const i=globalThis.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=`lit$${(Math.random()+\"\").slice(9)}$`,o=\"?\"+e,n=`<${o}>`,l=document,h=(t=\"\")=>l.createComment(t),r=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,d=Array.isArray,u=t=>{var i;return d(t)||\"function\"==typeof(null===(i=t)||void 0===i?void 0:i[Symbol.iterator])},c=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,a=/>/g,f=/>|[ \t\\n\f\\r](?:([^\\s\"'>=/]+)([ \t\\n\f\\r]*=[ \t\\n\f\\r]*(?:[^ \t\\n\f\\r\"'`<>=]|(\"|')|))|$)/g,_=/'/g,m=/\"/g,g=/^(?:script|style|textarea)$/i,$=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),p=$(1),y=$(2),b=Symbol.for(\"lit-noChange\"),T=Symbol.for(\"lit-nothing\"),x=new WeakMap,w=(t,i,s)=>{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let l=n._$litPart$;if(void 0===l){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=l=new N(i.insertBefore(h(),t),t,void 0,null!=s?s:{})}return l._$AI(t),l},A=l.createTreeWalker(l,129,null,!1),C=(t,i)=>{const o=t.length-1,l=[];let h,r=2===i?\"<svg>\":\"\",d=c;for(let i=0;i<o;i++){const s=t[i];let o,u,$=-1,p=0;for(;p<s.length&&(d.lastIndex=p,u=d.exec(s),null!==u);)p=d.lastIndex,d===c?\"!--\"===u[1]?d=v:void 0!==u[1]?d=a:void 0!==u[2]?(g.test(u[2])&&(h=RegExp(\"</\"+u[2],\"g\")),d=f):void 0!==u[3]&&(d=f):d===f?\">\"===u[0]?(d=null!=h?h:c,$=-1):void 0===u[1]?$=-2:($=d.lastIndex-u[2].length,o=u[1],d=void 0===u[3]?f:'\"'===u[3]?m:_):d===m||d===_?d=f:d===v||d===a?d=c:(d=f,h=void 0);const y=d===f&&t[i+1].startsWith(\"/>\")?\" \":\"\";r+=d===c?s+n:$>=0?(l.push(o),s.slice(0,$)+\"$lit$\"+s.slice($)+e+y):s+e+(-2===$?(l.push(void 0),i):y)}const u=r+(t[o]||\"<?>\")+(2===i?\"</svg>\":\"\");return[void 0!==s?s.createHTML(u):u,l]};class P{constructor({strings:t,_$litType$:s},n){let l;this.parts=[];let r=0,d=0;const u=t.length-1,c=this.parts,[v,a]=C(t,s);if(this.el=P.createElement(v,n),A.currentNode=this.el.content,2===s){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(l=A.nextNode())&&c.length<u;){if(1===l.nodeType){if(l.hasAttributes()){const t=[];for(const i of l.getAttributeNames())if(i.endsWith(\"$lit$\")||i.startsWith(e)){const s=a[d++];if(t.push(i),void 0!==s){const t=l.getAttribute(s.toLowerCase()+\"$lit$\").split(e),i=/([.?@])?(.*)/.exec(s);c.push({type:1,index:r,name:i[2],strings:t,ctor:\".\"===i[1]?M:\"?\"===i[1]?k:\"@\"===i[1]?H:S})}else c.push({type:6,index:r})}for(const i of t)l.removeAttribute(i)}if(g.test(l.tagName)){const t=l.textContent.split(e),s=t.length-1;if(s>0){l.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)l.append(t[i],h()),A.nextNode(),c.push({type:2,index:++r});l.append(t[s],h())}}}else if(8===l.nodeType)if(l.data===o)c.push({type:2,index:r});else{let t=-1;for(;-1!==(t=l.data.indexOf(e,t+1));)c.push({type:7,index:r}),t+=e.length-1}r++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function V(t,i,s=t,e){var o,n,l,h;if(i===b)return i;let d=void 0!==e?null===(o=s._$Cl)||void 0===o?void 0:o[e]:s._$Cu;const u=r(i)?void 0:i._$litDirective$;return(null==d?void 0:d.constructor)!==u&&(null===(n=null==d?void 0:d._$AO)||void 0===n||n.call(d,!1),void 0===u?d=void 0:(d=new u(t),d._$AT(t,s,e)),void 0!==e?(null!==(l=(h=s)._$Cl)&&void 0!==l?l:h._$Cl=[])[e]=d:s._$Cu=d),void 0!==d&&(i=V(t,d._$AS(t,i.values),d,e)),i}class E{constructor(t,i){this.v=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(t){var i;const{el:{content:s},parts:e}=this._$AD,o=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:l).importNode(s,!0);A.currentNode=o;let n=A.nextNode(),h=0,r=0,d=e[0];for(;void 0!==d;){if(h===d.index){let i;2===d.type?i=new N(n,n.nextSibling,this,t):1===d.type?i=new d.ctor(n,d.name,d.strings,this,t):6===d.type&&(i=new I(n,this,t)),this.v.push(i),d=e[++r]}h!==(null==d?void 0:d.index)&&(n=A.nextNode(),h++)}return o}m(t){let i=0;for(const s of this.v)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class N{constructor(t,i,s,e){var o;this.type=2,this._$AH=T,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cg=null===(o=null==e?void 0:e.isConnected)||void 0===o||o}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cg}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=V(this,t,i),r(t)?t===T||null==t||\"\"===t?(this._$AH!==T&&this._$AR(),this._$AH=T):t!==this._$AH&&t!==b&&this.$(t):void 0!==t._$litType$?this.T(t):void 0!==t.nodeType?this.S(t):u(t)?this.M(t):this.$(t)}A(t,i=this._$AB){return this._$AA.parentNode.insertBefore(t,i)}S(t){this._$AH!==t&&(this._$AR(),this._$AH=this.A(t))}$(t){this._$AH!==T&&r(this._$AH)?this._$AA.nextSibling.data=t:this.S(l.createTextNode(t)),this._$AH=t}T(t){var i;const{values:s,_$litType$:e}=t,o=\"number\"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=P.createElement(e.h,this.options)),e);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===o)this._$AH.m(s);else{const t=new E(o,this),i=t.p(this.options);t.m(s),this.S(i),this._$AH=t}}_$AC(t){let i=x.get(t.strings);return void 0===i&&x.set(t.strings,i=new P(t)),i}M(t){d(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const o of t)e===i.length?i.push(s=new N(this.A(h()),this.A(h()),this,this.options)):s=i[e],s._$AI(o),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){var s;for(null===(s=this._$AP)||void 0===s||s.call(this,!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var i;void 0===this._$AM&&(this._$Cg=t,null===(i=this._$AP)||void 0===i||i.call(this,t))}}class S{constructor(t,i,s,e,o){this.type=1,this._$AH=T,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=o,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=T}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=V(this,t,i,0),n=!r(t)||t!==this._$AH&&t!==b,n&&(this._$AH=t);else{const e=t;let l,h;for(t=o[0],l=0;l<o.length-1;l++)h=V(this,e[s+l],i,l),h===b&&(h=this._$AH[l]),n||(n=!r(h)||h!==this._$AH[l]),h===T?t=T:t!==T&&(t+=(null!=h?h:\"\")+o[l+1]),this._$AH[l]=h}n&&!e&&this.k(t)}k(t){t===T?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:\"\")}}class M extends S{constructor(){super(...arguments),this.type=3}k(t){this.element[this.name]=t===T?void 0:t}}class k extends S{constructor(){super(...arguments),this.type=4}k(t){t&&t!==T?this.element.setAttribute(this.name,\"\"):this.element.removeAttribute(this.name)}}class H extends S{constructor(t,i,s,e,o){super(t,i,s,e,o),this.type=5}_$AI(t,i=this){var s;if((t=null!==(s=V(this,t,i,0))&&void 0!==s?s:T)===b)return;const e=this._$AH,o=t===T&&e!==T||t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive,n=t!==T&&(e===T||o);o&&this.element.removeEventListener(this.name,this,e),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var i,s;\"function\"==typeof this._$AH?this._$AH.call(null!==(s=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==s?s:this.element,t):this._$AH.handleEvent(t)}}class I{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){V(this,t)}}const L={P:\"$lit$\",V:e,L:o,I:1,N:C,R:E,D:u,j:V,H:N,O:S,F:k,B:H,W:M,Z:I},R=window.litHtmlPolyfillSupport;null==R||R(P,N),(null!==(t=globalThis.litHtmlVersions)&&void 0!==t?t:globalThis.litHtmlVersions=[]).push(\"2.0.1\");export{L as _$LH,p as html,b as noChange,T as nothing,w as render,y as svg};\n//# sourceMappingURL=lit-html.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{nothing as t,noChange as i}from\"../lit-html.js\";import{Directive as r,PartType as s,directive as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends r{constructor(i){if(super(i),this.it=t,i.type!==s.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this.vt=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this.vt;this.it=r;const s=[r];return s.raw=s,this.vt={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=n(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","import {\n\trender,\n\thtml,\n\tsvg,\n} from \"lit-html\";\nimport { getFeature } from \"../FeaturesRegistry.js\";\n\nconst effectiveHtml = (...args) => {\n\tconst LitStatic = getFeature(\"LitStatic\");\n\tconst fn = LitStatic ? LitStatic.html : html;\n\treturn fn(...args);\n};\n\nconst effectiveSvg = (...args) => {\n\tconst LitStatic = getFeature(\"LitStatic\");\n\tconst fn = LitStatic ? LitStatic.svg : svg;\n\treturn fn(...args);\n};\n\nconst litRender = (templateResult, domNode, styleStrOrHrefsArr, forStaticArea, { host } = {}) => {\n\tconst OpenUI5Enablement = getFeature(\"OpenUI5Enablement\");\n\tif (OpenUI5Enablement && !forStaticArea) {\n\t\ttemplateResult = OpenUI5Enablement.wrapTemplateResultInBusyMarkup(effectiveHtml, host, templateResult);\n\t}\n\n\tif (typeof styleStrOrHrefsArr === \"string\") {\n\t\ttemplateResult = effectiveHtml`<style>${styleStrOrHrefsArr}</style>${templateResult}`;\n\t} else if (Array.isArray(styleStrOrHrefsArr) && styleStrOrHrefsArr.length) {\n\t\ttemplateResult = effectiveHtml`${styleStrOrHrefsArr.map(href => effectiveHtml`<link type=\"text/css\" rel=\"stylesheet\" href=\"${href}\">`)}${templateResult}`;\n\t}\n\trender(templateResult, domNode, { host });\n};\n\nconst scopeTag = (tag, tags, suffix) => {\n\tconst LitStatic = getFeature(\"LitStatic\");\n\tif (LitStatic) {\n\t\treturn LitStatic.unsafeStatic((tags || []).includes(tag) ? `${tag}-${suffix}` : tag);\n\t}\n};\n\nexport {\n\teffectiveHtml as html,\n\teffectiveSvg as svg,\n};\nexport { scopeTag };\nexport { repeat } from \"lit-html/directives/repeat.js\";\nexport { classMap } from \"lit-html/directives/class-map.js\";\nexport { styleMap } from \"./directives/style-map.js\";\nexport { ifDefined } from \"lit-html/directives/if-defined.js\";\nexport { unsafeHTML } from \"lit-html/directives/unsafe-html.js\";\n\nexport default litRender;\n","import UI5Element from \"../../UI5Element.js\";\nimport litRender, { html } from \"../../renderer/LitRenderer.js\";\n\nconst metadata = {\n\ttag: \"ui5-test-generic\",\n\tproperties: {\n\t\tstrProp: {\n\t\t\ttype: String,\n\t\t},\n\t\tboolProp: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tobjectProp: {\n\t\t\ttype: Object,\n\t\t},\n\t\tnoAttributeProp: {\n\t\t\ttype: String,\n\t\t\tnoAttribute: true,\n\t\t},\n\t\tmultiProp: {\n\t\t\ttype: String,\n\t\t\tmultiple: true,\n\t\t},\n\t\tdefaultValueProp: {\n\t\t\ttype: String,\n\t\t\tdefaultValue: \"Hello\",\n\t\t}\n\t},\n\tmanagedSlots: true,\n\tslots: {\n\t\tdefault: {\n\t\t\ttype: Node,\n\t\t},\n\t\tother: {\n\t\t\ttype: HTMLElement,\n\t\t},\n\t\tindividual: {\n\t\t\ttype: HTMLElement,\n\t\t\tindividualSlots: true,\n\t\t},\n\t\tnamed: {\n\t\t\ttype: HTMLElement,\n\t\t\tpropertyName: \"items\",\n\t\t}\n\t}\n};\n\nclass Generic extends UI5Element {\n\tstatic get metadata() {\n\t\treturn metadata;\n\t}\n\n\tstatic get render() {\n\t\treturn litRender;\n\t}\n\n\tstatic get template() {\n\t\treturn element => {\n\t\t\treturn html`<div><p>\n\t\t\t\t<slot></slot>\n\t\t\t\t<slot name=\"other\"></slot>\n\t\t\t\t<slot name=\"individual-1\"></slot>\n\t\t\t\t<slot name=\"individual-2\"></slot>\n\t\t\t</p></div>`;\n\t\t};\n\t}\n\n\tstatic get styles() {\n\t\treturn `:host {\n display: inline-block;\n border: 1px solid black;\n color: var(--var1);\n }`;\n\t}\n\n\tonBeforeRendering() {}\n\tonAfterRendering() {}\n\tonEnterDOM() {}\n\tonExitDOM() {}\n}\n\nGeneric.define();\n\nexport default Generic;\n","import UI5Element from \"../../UI5Element.js\";\n\nconst metadata = {\n\ttag: \"ui5-test-no-shadow\",\n};\n\nclass NoShadow extends UI5Element {\n\tstatic get metadata() {\n\t\treturn metadata;\n\t}\n}\n\nNoShadow.define();\n","import UI5Element from \"../../UI5Element.js\";\nimport litRender, { html } from \"../../renderer/LitRenderer.js\";\n\nconst metadata = {\n\ttag: \"ui5-test-parent\",\n\tmanagedSlots: true,\n\tslots: {\n\t\tdefault: {\n\t\t\ttype: Node,\n\t\t\tinvalidateOnChildChange: {\n\t\t\t\tproperties: [\"prop1\"]\n\t\t\t},\n\t\t},\n\t\titems: {\n\t\t\ttype: HTMLElement,\n\t\t\tinvalidateOnChildChange: {\n\t\t\t\tproperties: true\n\t\t\t},\n\t\t}\n\t}\n};\n\nclass Parent extends UI5Element {\n\tstatic get metadata() {\n\t\treturn metadata;\n\t}\n\n\tstatic get render() {\n\t\treturn litRender;\n\t}\n\n\tstatic get template() {\n\t\treturn element => {\n\t\t\treturn html`<div>\n\t\t\t\t<slot></slot>\n\t\t\t</div>`;\n\t\t};\n\t}\n}\n\nParent.define();\n","import UI5Element from \"../../UI5Element.js\";\nimport litRender, { html } from \"../../renderer/LitRenderer.js\";\n\nconst metadata = {\n\ttag: \"ui5-test-child\",\n\tproperties: {\n\t\tprop1: {\n\t\t\ttype: String,\n\t\t},\n\t\tprop2: {\n\t\t\ttype: String,\n\t\t},\n\t\tprop3: {\n\t\t\ttype: String,\n\t\t},\n\t}\n};\n\nclass Child extends UI5Element {\n\tstatic get metadata() {\n\t\treturn metadata;\n\t}\n\n\tstatic get render() {\n\t\treturn litRender;\n\t}\n\n\tstatic get template() {\n\t\treturn element => {\n\t\t\treturn html`<div></div>`;\n\t\t};\n\t}\n}\n\nChild.define();\n","import UI5Element from \"../../UI5Element.js\";\nimport litRender, { html } from \"../../renderer/LitRenderer.js\";\n\nconst metadata = {\n\ttag: \"ui5-with-static-area\",\n\tproperties: {\n\t\t/**\n\t\t * Defines whether the static area item will be rendered\n\t\t */\n\t\tstaticContent: {\n\t\t\ttype: Boolean,\n\t\t}\n\t},\n\tslots: {\n\n\t}\n};\n\nclass WithStaticArea extends UI5Element {\n\tstatic get metadata() {\n\t\treturn metadata;\n\t}\n\n\tstatic get render() {\n\t\treturn litRender;\n\t}\n\n\tstatic get template() {\n\t\treturn element => {\n\t\t\t// access effectiveDir getter to mark control as RTL-aware (test changes dir attribute and expects rerender)\n\t\t\treturn html`\n\t\t\t\t<div dir=${element.effectiveDir}>\n\t\t\t\t\tWithStaticArea works!\n\t\t\t\t</div>`;\n\t\t};\n\t}\n\n\tstatic get staticAreaTemplate() {\n\t\treturn element => {\n\t\t\treturn html`\n\t\t\t\t<div class=\"ui5-with-static-area-content\">\n\t\t\t\t\tStatic area content.\n\t\t\t\t</div>`;\n\t\t};\n\t}\n\n\tstatic get styles() {\n\t\treturn `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tborder: 1px solid black;\n\t\t\t\tcolor: red;\n\t\t\t}`;\n\t}\n\n\tasync addStaticArea() {\n\t\tif (!this.staticContent) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Require static area item\n\t\tconst staticArea = await this.getStaticAreaItemDomRef();\n\t\tthis.responsivePopover = staticArea.querySelector(\".ui5-with-static-area-content\");\n\t\treturn this.responsivePopover;\n\t}\n\n\tonBeforeRendering() {\n\t\tthis.addStaticArea();\n\t}\n\tonAfterRendering() {}\n\tonEnterDOM() {}\n\tonExitDOM() {}\n}\n\nWithStaticArea.define();\n\nexport default WithStaticArea;\n","import Generic from \"./Generic.js\";\n\nconst metadata = {\n\ttag: \"ui5-test-generic-ext\",\n\tproperties: {\n\t\textProp: {\n\t\t\ttype: String,\n\t\t},\n\t\tstrProp: {\n\t\t\tdefaultValue: \"Ext\",\n\t\t}\n\t},\n\tslots: {\n\t\textSlot: {\n\t\t\ttype: HTMLElement,\n\t\t},\n\t}\n};\n\nclass GenericExt extends Generic {\n\tstatic get metadata() {\n\t\treturn metadata;\n\t}\n}\n\nGenericExt.define();\n","import { registerThemePropertiesLoader } from \"../../asset-registries/Themes.js\";\n\nconst fiori3 = `:root{ --var1: red; }`;\nconst fiori3Dark = `:root{ --var1: green; }`;\nconst belize = `:root{ --var1: blue; }`;\nconst belizeHcb = `:root{ --var1: orange; }`;\nconst belizeHcw = `:root{ --var1: orange; }`;\nconst fiori3Hcb = `:root{ --var1: yellow; }`;\nconst fiori3Hcw = `:root{ --var1: yellow; }`;\n\nregisterThemePropertiesLoader(\"@ui5/webcomponents-base-test\", \"sap_fiori_3\", () => fiori3);\nregisterThemePropertiesLoader(\"@ui5/webcomponents-base-test\", \"sap_fiori_3_dark\", () => fiori3Dark);\nregisterThemePropertiesLoader(\"@ui5/webcomponents-base-test\", \"sap_belize\", () => belize);\nregisterThemePropertiesLoader(\"@ui5/webcomponents-base-test\", \"sap_belize_hcb\", () => belizeHcb);\nregisterThemePropertiesLoader(\"@ui5/webcomponents-base-test\", \"sap_belize_hcw\", () => belizeHcw);\nregisterThemePropertiesLoader(\"@ui5/webcomponents-base-test\", \"sap_fiori_3_hcb\", () => fiori3Hcb);\nregisterThemePropertiesLoader(\"@ui5/webcomponents-base-test\", \"sap_fiori_3_hcw\", () => fiori3Hcw);\n","const ua = navigator.userAgent;\nconst touch = \"ontouchstart\" in window || navigator.maxTouchPoints > 0;\nconst ie = /(msie|trident)/i.test(ua);\nconst chrome = !ie && /(Chrome|CriOS)/.test(ua);\nconst safari = !ie && !chrome && /(Version|PhantomJS)\\/(\\d+\\.\\d+).*Safari/.test(ua);\nconst webkit = !ie && /webkit/.test(ua);\nconst windows = navigator.platform.indexOf(\"Win\") !== -1;\nconst iOS = navigator.platform.match(/iPhone|iPad|iPod/) || (navigator.userAgent.match(/Mac/) && \"ontouchend\" in document);\nconst android = !windows && /Android/.test(ua);\nconst androidPhone = android && /(?=android)(?=.*mobile)/i.test(ua);\nconst ipad = /ipad/i.test(ua) || (/Macintosh/i.test(ua) && \"ontouchend\" in document);\n// With iOS 13 the string 'iPad' was removed from the user agent string through a browser setting, which is applied on all sites by default:\n// \"Request Desktop Website -> All websites\" (for more infos see: https://forums.developer.apple.com/thread/119186).\n// Therefore the OS is detected as MACINTOSH instead of iOS and the device is a tablet if the Device.support.touch is true.\n\nlet windowsVersion;\nlet webkitVersion;\nlet tablet;\n\nconst isWindows8OrAbove = () => {\n\tif (!windows) {\n\t\treturn false;\n\t}\n\n\tif (windowsVersion === undefined) {\n\t\tconst matches = ua.match(/Windows NT (\\d+).(\\d)/);\n\t\twindowsVersion = matches ? parseFloat(matches[1]) : 0;\n\t}\n\n\treturn windowsVersion >= 8;\n};\n\nconst isWebkit537OrAbove = () => {\n\tif (!webkit) {\n\t\treturn false;\n\t}\n\n\tif (webkitVersion === undefined) {\n\t\tconst matches = ua.match(/(webkit)[ /]([\\w.]+)/);\n\t\twebkitVersion = matches ? parseFloat(matches[1]) : 0;\n\t}\n\n\treturn webkitVersion >= 537.10;\n};\n\nconst detectTablet = () => {\n\tif (tablet !== undefined) {\n\t\treturn;\n\t}\n\n\tif (ipad) {\n\t\ttablet = true;\n\t\treturn;\n\t}\n\n\tif (touch) {\n\t\tif (isWindows8OrAbove()) {\n\t\t\ttablet = true;\n\t\t\treturn;\n\t\t}\n\n\t\tif (chrome && android) {\n\t\t\ttablet = !/Mobile Safari\\/[.0-9]+/.test(ua);\n\t\t\treturn;\n\t\t}\n\n\t\tlet densityFactor = window.devicePixelRatio ? window.devicePixelRatio : 1; // may be undefined in Windows Phone devices\n\t\tif (android && isWebkit537OrAbove()) {\n\t\t\tdensityFactor = 1;\n\t\t}\n\n\t\ttablet = (Math.min(window.screen.width / densityFactor, window.screen.height / densityFactor) >= 600);\n\t\treturn;\n\t}\n\n\ttablet = (ie && ua.indexOf(\"Touch\") !== -1) || (android && !androidPhone);\n};\n\nconst supportsTouch = () => touch;\nconst isIE = () => ie;\nconst isSafari = () => safari;\nconst isChrome = () => chrome;\n\nconst isTablet = () => {\n\tdetectTablet();\n\treturn (touch || isWindows8OrAbove()) && tablet;\n};\n\nconst isPhone = () => {\n\tdetectTablet();\n\treturn touch && !tablet;\n};\n\nconst isDesktop = () => {\n\treturn (!isTablet() && !isPhone()) || isWindows8OrAbove();\n};\n\nconst isCombi = () => {\n\treturn isTablet() && isDesktop();\n};\n\nconst isIOS = () => {\n\treturn iOS;\n};\n\nconst isAndroid = () => {\n\treturn android || androidPhone;\n};\n\nexport {\n\tsupportsTouch,\n\tisIE,\n\tisSafari,\n\tisChrome,\n\tisPhone,\n\tisTablet,\n\tisDesktop,\n\tisCombi,\n\tisIOS,\n\tisAndroid,\n};\n","const messageFormatRegEX = /('')|'([^']+(?:''[^']*)*)(?:'|$)|\\{([0-9]+(?:\\s*,[^{}]*)?)\\}|[{}]/g;\n\nconst formatMessage = (text, values) => {\n\tvalues = values || [];\n\n\treturn text.replace(messageFormatRegEX, ($0, $1, $2, $3, offset) => {\n\t\tif ($1) {\n\t\t\treturn '\\''; /* eslint-disable-line */\n\t\t}\n\n\t\tif ($2) {\n\t\t\treturn $2.replace(/''/g, '\\''); /* eslint-disable-line */\n\t\t}\n\n\t\tif ($3) {\n\t\t\treturn String(values[parseInt($3)]);\n\t\t}\n\n\t\tthrow new Error(`[i18n]: pattern syntax error at pos ${offset}`);\n\t});\n};\n\nexport default formatMessage;\n","import { registerI18nLoader, fetchI18nBundle, getI18nBundleData } from \"./asset-registries/i18n.js\";\nimport formatMessage from \"./util/formatMessage.js\";\n\nconst I18nBundleInstances = new Map();\n\nlet customGetI18nBundle;\n\n/**\n * @class\n * @public\n */\nclass I18nBundle {\n\tconstructor(packageName) {\n\t\tthis.packageName = packageName;\n\t}\n\n\t/**\n\t * Returns a text in the currently loaded language\n\t *\n\t * @public\n\t * @param {Object|String} textObj key/defaultText pair or just the key\n\t * @param params Values for the placeholders\n\t * @returns {*}\n\t */\n\tgetText(textObj, ...params) {\n\t\tif (typeof textObj === \"string\") {\n\t\t\ttextObj = { key: textObj, defaultText: textObj };\n\t\t}\n\n\t\tif (!textObj || !textObj.key) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst bundle = getI18nBundleData(this.packageName);\n\t\tif (bundle && !bundle[textObj.key]) {\n\t\t\tconsole.warn(`Key ${textObj.key} not found in the i18n bundle, the default text will be used`); // eslint-disable-line\n\t\t}\n\t\tconst messageText = bundle && bundle[textObj.key] ? bundle[textObj.key] : (textObj.defaultText || textObj.key);\n\n\t\treturn formatMessage(messageText, params);\n\t}\n}\n\nconst getI18nBundleSync = packageName => {\n\tif (I18nBundleInstances.has(packageName)) {\n\t\treturn I18nBundleInstances.get(packageName);\n\t}\n\n\tconst i18nBundle = new I18nBundle(packageName);\n\tI18nBundleInstances.set(packageName, i18nBundle);\n\treturn i18nBundle;\n};\n\n/**\n * Allows developers to provide a custom getI18nBundle implementation\n * If this function is called, the custom implementation will be used for all components and will completely\n * replace the default implementation.\n *\n * @public\n * @param customGet the function to use instead of the standard getI18nBundle implementation\n */\nconst registerCustomI18nBundleGetter = customGet => {\n\tcustomGetI18nBundle = customGet;\n};\n\n/**\n * Fetches and returns the I18nBundle instance for the given package\n *\n * @public\n * @param packageName\n * @returns {Promise<I18nBundle>}\n */\nconst getI18nBundle = async packageName => {\n\tif (customGetI18nBundle) {\n\t\treturn customGetI18nBundle(packageName);\n\t}\n\n\tawait fetchI18nBundle(packageName);\n\treturn getI18nBundleSync(packageName);\n};\n\nexport {\n\tregisterI18nLoader,\n\tgetI18nBundle,\n\tregisterCustomI18nBundleGetter,\n};\n","import { getAnimationMode as getConfiguredAnimationMode } from \"../InitialConfiguration.js\";\nimport AnimationMode from \"../types/AnimationMode.js\";\n\nlet animationMode;\n\nconst getAnimationMode = () => {\n\tif (animationMode === undefined) {\n\t\tanimationMode = getConfiguredAnimationMode();\n\t}\n\n\treturn animationMode;\n};\n\nconst setAnimationMode = newAnimationMode => {\n\tif (Object.values(AnimationMode).includes(newAnimationMode)) {\n\t\tanimationMode = newAnimationMode;\n\t}\n};\n\nexport {\n\tgetAnimationMode,\n\tsetAnimationMode,\n};\n","import DataType from \"./DataType.js\";\n\n/**\n * Different calendar types.\n */\nconst CalendarTypes = {\n\tGregorian: \"Gregorian\",\n\tIslamic: \"Islamic\",\n\tJapanese: \"Japanese\",\n\tBuddhist: \"Buddhist\",\n\tPersian: \"Persian\",\n};\n\nclass CalendarType extends DataType {\n\tstatic isValid(value) {\n\t\treturn !!CalendarTypes[value];\n\t}\n}\n\nCalendarType.generateTypeAccessors(CalendarTypes);\n\nexport default CalendarType;\n","import CalendarType from \"../types/CalendarType.js\";\nimport { getCalendarType as getConfiguredCalendarType } from \"../InitialConfiguration.js\";\n\nlet calendarType;\n\nconst getCalendarType = () => {\n\tif (calendarType === undefined) {\n\t\tcalendarType = getConfiguredCalendarType();\n\t}\n\n\tif (CalendarType.isValid(calendarType)) {\n\t\treturn calendarType;\n\t}\n\n\treturn CalendarType.Gregorian;\n};\n\nexport { getCalendarType }; // eslint-disable-line\n","import { getFormatSettings } from \"../InitialConfiguration.js\";\n\nlet formatSettings;\n\nconst getFirstDayOfWeek = () => {\n\tif (formatSettings === undefined) {\n\t\tformatSettings = getFormatSettings();\n\t}\n\n\treturn formatSettings.firstDayOfWeek;\n};\n\nexport { getFirstDayOfWeek }; // eslint-disable-line\n","import EventProvider from \"../EventProvider.js\";\n\nconst eventProvider = new EventProvider();\nconst DIR_CHANGE = \"directionChange\";\n\n/**\n * Attach a callback that will be executed whenever the application calls the \"applyDirection\" function\n * @public\n * @param listener\n */\nconst attachDirectionChange = listener => {\n\teventProvider.attachEvent(DIR_CHANGE, listener);\n};\n\n/**\n * Detach a callback that was passed with \"attachDirectionChange\"\n * @public\n * @param listener\n */\nconst detachDirectionChange = listener => {\n\teventProvider.detachEvent(DIR_CHANGE, listener);\n};\n\nconst fireDirectionChange = () => {\n\treturn eventProvider.fireEvent(DIR_CHANGE);\n};\n\nexport {\n\tattachDirectionChange,\n\tdetachDirectionChange,\n\tfireDirectionChange,\n};\n","import { registerThemePropertiesLoader } from \"./dist/AssetRegistry.js\";\nimport EventProvider from \"./dist/EventProvider.js\";\n\n// ESM bundle targets browsers with native support\nimport \"./dist/features/OpenUI5Support.js\";\n\n// Test components\nimport \"./dist/test-resources/elements/Generic.js\";\nimport \"./dist/test-resources/elements/NoShadowDOM.js\";\nimport \"./dist/test-resources/elements/Parent.js\";\nimport \"./dist/test-resources/elements/Child.js\";\nimport \"./dist/test-resources/elements/WithStaticArea.js\";\nimport \"./dist/test-resources/elements/GenericExt.js\";\n\n// Test themes - CSS Vars for the sap_fiori_3, sap_fiori_3_dark, sap_belize and sap_belize_hcb themes\nimport \"./dist/test-resources/assets/Themes.js\";\n\n// used in test pages\nimport { renderFinished } from \"./dist/Render.js\";\nimport { isIE } from \"./dist/Device.js\";\nwindow.isIE = isIE; // attached to the window object for testing purposes\n\n// used for tests - to register a custom theme\nwindow.registerThemePropertiesLoader = registerThemePropertiesLoader;\n\n// i18n\nimport { registerI18nLoader, getI18nBundle } from \"./dist/i18nBundle.js\";\n\n// Note: keep in sync with rollup.config value for IIFE\nimport { getAnimationMode } from \"./dist/config/AnimationMode.js\";\nimport { getLanguage } from \"./dist/config/Language.js\";\nimport { getCalendarType } from \"./dist/config/CalendarType.js\";\nimport { getTheme, setTheme } from \"./dist/config/Theme.js\";\nimport { getNoConflict, setNoConflict } from \"./dist/config/NoConflict.js\";\nimport { getRTL } from \"./dist/config/RTL.js\";\nimport { getFirstDayOfWeek } from \"./dist/config/FormatSettings.js\";\nimport { _getRegisteredNames as getIconNames } from \"./dist/asset-registries/Icons.js\"\nimport applyDirection from \"./dist/locale/applyDirection.js\";\n\nwindow[\"sap-ui-webcomponents-bundle\"] = {\n\tconfiguration : {\n\t\tgetAnimationMode,\n\t\tgetLanguage,\n\t\tgetTheme,\n\t\tsetTheme,\n\t\tgetNoConflict,\n\t\tsetNoConflict,\n\t\tgetCalendarType,\n\t\tgetRTL,\n\t\tgetFirstDayOfWeek,\n\t},\n\tgetIconNames,\n\tregisterI18nLoader,\n\tgetI18nBundle,\n\trenderFinished,\n\tapplyDirection,\n\tEventProvider,\n};\n","import { reRenderAllUI5Elements } from \"../Render.js\";\nimport { fireDirectionChange } from \"./directionChange.js\";\n\n/**\n * Re-renders all RTL-aware UI5 Elements.\n * Call this method whenever you change the \"dir\" property anywhere in your HTML page\n * Example: document.body.dir = \"rtl\"; applyDirection();\n *\n * @returns {Promise<void>}\n */\nconst applyDirection = async () => {\n\tconst listenersResults = fireDirectionChange();\n\tawait Promise.all(listenersResults);\n\tawait reRenderAllUI5Elements({ rtlAware: true });\n};\n\nexport default applyDirection;\n"],"names":["assetParameters","default","all","DEFAULT_THEME","DEFAULT_LANGUAGE","DEFAULT_LOCALE","SUPPORTED_LOCALES","browserLanguages","navigator","languages","language","userLanguage","browserLanguage","class2type","hasOwn","hasOwnProperty","toString","fnToString","ObjectFunctionString","call","Object","fnIsPlainObject","obj","proto","Ctor","getPrototypeOf","constructor","oToken","create","fnMerge","src","copyIsArray","copy","name","options","clone","target","arguments","i","length","deep","skipToken","undefined","isPlainObject","Array","isArray","args","push","apply","_merge","features","Map","getFeature","get","initialized","initialConfig","animationMode","theme","rtl","calendarType","noConflict","formatSettings","fetchDefaultLanguage","booleanMapping","set","applyURLParam","key","value","paramType","lowerCaseValue","toLowerCase","param","split","has","includes","normalizeParamValue","initConfiguration","configScript","document","querySelector","configJSON","JSON","parse","innerHTML","err","console","warn","merge","parseConfigurationScript","params","URLSearchParams","window","location","search","forEach","parts","startsWith","parseURLParameters","OpenUI5Support","isLoaded","OpenUI5Config","getConfigurationSettingsObject","applyOpenUI5Configuration","EventProvider","this","_eventRegistry","attachEvent","eventName","fnFunction","eventRegistry","eventListeners","detachEvent","indexOfFnToDetach","indexOf","splice","delete","fireEvent","data","map","fn","fireEventAsync","Promise","isHandlerAttached","hasListeners","eventProvider","attachLanguageChange","listener","setToArray","s","arr","item","getSingletonElementInstance","tag","parentElement","body","el","createElement","insertBefore","firstChild","getSharedResource","namespace","initialValue","current","head","part","lastPart","prototype","VersionInfo","version","major","minor","patch","suffix","isNext","buildTime","currentRuntimeIndex","compareCache","Runtimes","getCurrentRuntimeIndex","Tags","Definitions","Set","failureTimeout","Failures","registerTag","add","displayFailedRegistrations","allRuntimes","currentRuntime","message","runtime","description","join","keys","otherRuntimeIndex","comparison","otherRuntime","compareWord","index1","index2","cacheIndex","runtime1","runtime2","Error","majorDiff","minorDiff","patchDiff","result","Intl","Collator","numeric","sensitivity","compare","compareRuntimes","size","sort","rtlAwareSet","registeredElements","invalidatedWebComponents","list","lookup","webComponent","remove","filter","shift","isEmpty","isAdded","process","callback","stats","timesProcessed","renderTaskPromise","renderTaskPromiseResolve","mutationObserverTimer","queuePromise","renderDeferred","async","scheduleRenderTask","renderImmediately","_render","resolve","requestAnimationFrame","setTimeout","_resolveTaskPromise","whenAllCustomElementsAreDefined","definedPromises","customElements","whenDefined","renderFinished","reRenderAllUI5Elements","element","getMetadata","getTag","rtlAware","klass","languageAware","isLanguageAware","themeAware","isThemeAware","filters","getLanguage","getFetchDefaultLanguage","fetchDefaultLang","rLocale","Locale","sLocaleId","aResult","exec","replace","sLanguage","sScript","sRegion","sVariant","slice","sExtension","sPrivateUse","toUpperCase","getScript","getRegion","getVariant","getVariantSubtags","getExtension","getExtensionSubtags","getPrivateUse","getPrivateUseSubtags","hasPrivateUseSubtag","sSubtag","r","cache","getLocaleInstance","lang","convertToLocaleOrNull","e","getLocale","getConfigLanguage","detectNavigatorLanguage","localeRegEX","SAPSupportabilityLocales","M_ISO639_NEW_TO_OLD","he","yi","id","sr","nextFallbackLocale","locale","p","lastIndexOf","warningShown","reportedErrors","bundleData","bundlePromises","loaders","_setI18nBundleData","packageName","_hasLoader","localeId","bundleKey","fetchI18nBundle","region","m","script","variants","isPrivate","normalizeLocale","loadMessageBundle","_loadMessageBundleOnce","error","_showAssetsWarningOnce","allPackages","localeDataMap","cldrPromises","M_ISO639_OLD_TO_NEW","iw","ji","in","setLocaleData","content","fetchCldr","calcLocale","cldrContent","getLocaleDataObject","loadCldr","_loadCldrOnce","loader","fetch","json","themeStyles","registeredPackages","registeredThemes","registerThemePropertiesLoader","themeName","getThemeProperties","style","regThemesStr","values","themeProps","_","getRegisteredPackages","IconCollectionsAlias","BusinessSuiteInAppSymbols","horizon","getStyleId","createStyle","adoptedStyleSheets","stylesheet","CSSStyleSheet","replaceSync","_ui5StyleId","attributes","cssText","type","entries","pair","setAttribute","textContent","appendChild","createStyleInHead","hasStyle","find","sh","createOrUpdateStyle","updateStyle","warnings","getThemeDesignerTheme","metadataString","getComputedStyle","backgroundImage","display","classList","metadata","removeChild","getThemeMetadata","paramsString","charAt","decodeURIComponent","ex","parseThemeMetadata","baseThemeName","Path","match","Extends","processThemeMetadata","BASE_THEME_PACKAGE","loadThemeBase","cssData","deleteThemeBase","styleElement","removeStyle","applyTheme","extTheme","cssVariablesLoaded","detectExternalTheme","packagesTheme","isThemeRegistered","loadComponentPackages","fireThemeLoaded","getTheme","setTheme","newTheme","IconCollectionConfiguration","getEffectiveDefaultIconCollection","currentTheme","currentThemeConfiguration","_theme","registry","iconCollectionPromises","registerIcon","pathData","ltr","accData","collection","getIconData","registryKey","reverse","_normalizeCollection","_parseName","nameProp","iconData","collectionName","loadIcons","_loadIconCollectionOnce","iconName","path","acc","_fillRegistry","PopupUtilsData","currentZIndex","getCurrentZIndex","getCore","sap","ui","feature","init","core","attachInit","require","LocaleData","Popup","setInitialZIndex","config","getConfiguration","getAnimationMode","getRTL","getCalendarType","firstDayOfWeek","getInstance","getFirstDayOfWeek","_get","attachListeners","attachThemeChanged","listenForThemeChange","link","children","href","getNextZIndex","fileName","insertMainFontFace","fontFaceCSS","insertOverrideFontFace","overrideFontFaceCSS","bootPromise","boot","alias","F6Navigation","addEventListener","insertFontFace","systemCSSVars","DataType","static","attributeValue","propertyValue","value1","value2","types","defineProperty","isDescendantOf","baseKlass","inclusive","parent","kebabToCamelMap","camelToKebabMap","kebabToCamelCase","string","toCamelCase","camelToKebabCase","index","isSlot","HTMLElement","localName","getSlottedElements","assignedNodes","flatten","rulesObj","include","exclude","tagsCache","shouldScopeCustomElement","some","rule","getEffectiveScopingSuffixForTag","UI5ElementMetadata","getInitialState","_initialState","initialState","slotsAreManaged","props","getProperties","propName","propType","propDefaultValue","defaultValue","Boolean","multiple","String","slots","getSlots","slotName","slotData","propertyName","propData","propValue","validateSingleProperty","validateSingleSlot","getPureTag","pureTag","getAltTag","pureAltTag","altTag","hasAttribute","noAttribute","getPropertiesList","getAttributesList","canSlotText","defaultSlot","Node","hasSlots","hasIndividualSlots","_slotName","individualSlots","managedSlots","supportsF6FastNavigation","fastNavigation","properties","getEvents","events","shouldInvalidateOnChildChange","invalidateOnChildChange","propertyType","isValid","define","getTagsToScope","component","componentTag","tagsToScope","getUniqueDependencies","dep","attachCustomCSSChange","customCSSFor","getStylesString","styles","reduce","val","concat","effectiveStyleMap","getEffectiveStyle","ElementClass","forStaticArea","OpenUI5Enablement","effectiveStyle","busyIndicatorStyles","getBusyIndicatorStyles","staticAreaStyles","customStyle","getCustomCSS","constructableStyleMap","updateShadowRoot","styleStrOrHrefsArr","template","shadowRoot","staticAreaItem","renderResult","getCustomElementsScopingSuffix","executeTemplate","styleContent","getConstructableStyle","ShadyDOM","render","host","A_RTL_LOCALES","getDesigntimePropertyAsArray","configurationRTL","impliesRTL","getEffectiveDir","doc","dirValues","locallyAppliedDir","getPropertyValue","dir","documentElement","StaticAreaItem","super","_rendered","attachShadow","mode","setOwnerElement","ownerElement","_id","getAttribute","update","_updateContentDensity","_updateDirection","removeAttribute","observers","WeakMap","observeDOMNode","node","observer","MutationObserver","observe","_createObserver","excludeList","getNoConflict","skipOriginalEvent","nc","shouldFireOriginalEvent","shouldNotFireOriginalEvent","allowList","isValidPropertyName","Element","arraysAreEqual","arr1","arr2","getClassCopy","constructorCallback","autoId","elementTimeouts","uniqueDependenciesCache","_invalidate","changeInfo","_suppressInvalidation","onInvalidation","_changedState","_eventProvider","UI5Element","deferredResolve","_inDOM","_fullyConnected","_childChangeListeners","_slotChangeListeners","_domRefReadyPromise","_deferredResolve","_initializeState","_upgradeAllProperties","_needsShadowDOM","__id","_startObservingDOMChildren","_processChildren","onEnterDOM","disconnectedCallback","_stopObservingDOMChildren","onExitDOM","mutationObserverOptions","childList","subtree","characterData","bind","disconnect","_destroyObserver","unobserveDOMNode","_updateSlots","slotsMap","domChildren","from","childNodes","slotsCachedContentMap","propertyNameToSlotMap","_state","_clearSlot","autoIncrementMap","slottedChildrenMap","allChildrenUpgraded","child","idx","slot","getSlotName","validValues","nextIndex","_individualSlot","whenDefinedPromise","timeoutPromise","race","upgrade","validateSlotValue","isUI5Element","attachInvalidate","_attachChange","method","_getChildChangeListener","_attachSlotChange","a","b","invalidated","reason","detachInvalidate","_detachChange","_detachSlotChange","_onChildChange","childChangeInfo","attributeChangedCallback","oldValue","newValue","realName","nameInCamelCase","propertyTypeClass","attributeToProperty","_updateAttribute","attrName","attrValue","propertyToAttribute","_upgradeProperty","prop","_getSlotChangeListener","_onSlotChange","removeEventListener","onBeforeRendering","_onComponentStateFinalized","_assignIndividualSlotsToChildren","onAfterRendering","_waitForDomRef","getDomRef","_getRealDomRef","getFocusDomRef","domRef","focusDomRef","focus","cancelable","bubbles","eventResult","_fireEvent","camelCaseEventName","noConflictEvent","CustomEvent","detail","composed","noConflictEventResult","dispatchEvent","normalEvent","getSlottedNodes","curr","effectiveDir","observedAttributes","staticAreaTemplate","getStaticAreaItemDomRef","_needsStaticArea","createInstance","isDifferent","validatePropertyValue","oldState","compareValues","valuesAreEqual","newMetadata","dependencies","filtered","deps","whenDependenciesDefined","onDefine","definedLocally","isTagRegistered","definedGlobally","tagRegRuntimeIndex","recordTagRegistrationFailure","_generateAccessors","log","_metadata","metadataObjects","unshift","mergedMetadata","t","globalThis","trustedTypes","createPolicy","createHTML","Math","random","o","n","l","h","createComment","d","c","v","f","g","_$litType$","strings","$","Symbol","for","T","x","A","createTreeWalker","C","u","lastIndex","test","RegExp","y","P","currentNode","append","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","ctor","M","k","H","S","tagName","emptyScript","V","_$Cl","_$Cu","_$litDirective$","_$AO","_$AT","_$AS","E","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","N","nextSibling","I","_$AI","_$AH","_$AA","_$AB","_$Cg","isConnected","startNode","endNode","_$AR","iterator","createTextNode","_$AC","_$AP","setConnected","fill","capture","once","passive","handleEvent","R","litHtmlPolyfillSupport","litHtmlVersions","_$Ct","_$Ci","it","directiveName","vt","raw","resultType","effectiveHtml","LitStatic","html","litRender","templateResult","domNode","wrapTemplateResultInBusyMarkup","renderBefore","_$litPart$","strProp","boolProp","objectProp","noAttributeProp","multiProp","defaultValueProp","other","individual","named","Generic","items","prop1","prop2","prop3","staticContent","staticArea","responsivePopover","addStaticArea","extProp","extSlot","ua","userAgent","ie","chrome","windows","platform","messageFormatRegEX","I18nBundleInstances","I18nBundle","getText","textObj","defaultText","bundle","messageText","$0","$1","$2","$3","offset","parseInt","CalendarTypes","Gregorian","Islamic","Japanese","Buddhist","Persian","CalendarType","generateTypeAccessors","isIE","configuration","setNoConflict","noConflictData","registerI18nLoader","getI18nBundle","i18nBundle","getI18nBundleSync","applyDirection","listenersResults"],"mappings":"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"}