@ui5/webcomponents-base 2.3.0-rc.2 → 2.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 (167) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/.tsbuildinfobuild +1 -1
  3. package/dist/Boot.js +2 -0
  4. package/dist/Boot.js.map +1 -1
  5. package/dist/CustomElementsRegistry.js.map +1 -1
  6. package/dist/CustomElementsScopeUtils.js.map +1 -1
  7. package/dist/DOMObserver.js.map +1 -1
  8. package/dist/Device.js.map +1 -1
  9. package/dist/EventProvider.js.map +1 -1
  10. package/dist/FeaturesRegistry.d.ts +3 -0
  11. package/dist/FeaturesRegistry.js.map +1 -1
  12. package/dist/FontFace.js.map +1 -1
  13. package/dist/IgnoreCustomElements.js.map +1 -1
  14. package/dist/InitialConfiguration.js +1 -1
  15. package/dist/InitialConfiguration.js.map +1 -1
  16. package/dist/Keys.js.map +1 -1
  17. package/dist/Location.js.map +1 -1
  18. package/dist/ManagedStyles.js.map +1 -1
  19. package/dist/MediaRange.js.map +1 -1
  20. package/dist/PropertiesFileFormat.js.map +1 -1
  21. package/dist/Render.js.map +1 -1
  22. package/dist/RenderQueue.js.map +1 -1
  23. package/dist/Runtimes.js.map +1 -1
  24. package/dist/SystemCSSVars.js.map +1 -1
  25. package/dist/UI5Element.d.ts +6 -3
  26. package/dist/UI5Element.js +28 -4
  27. package/dist/UI5Element.js.map +1 -1
  28. package/dist/UI5ElementMetadata.d.ts +13 -0
  29. package/dist/UI5ElementMetadata.js +12 -0
  30. package/dist/UI5ElementMetadata.js.map +1 -1
  31. package/dist/animations/AnimationQueue.js.map +1 -1
  32. package/dist/animations/animate.js.map +1 -1
  33. package/dist/animations/slideUp.js.map +1 -1
  34. package/dist/asset-registries/Icons.js.map +1 -1
  35. package/dist/asset-registries/Illustrations.js.map +1 -1
  36. package/dist/asset-registries/LocaleData.js.map +1 -1
  37. package/dist/asset-registries/Themes.js.map +1 -1
  38. package/dist/asset-registries/i18n.js.map +1 -1
  39. package/dist/asset-registries/util/IconCollectionsAlias.js.map +1 -1
  40. package/dist/asset-registries/util/IconCollectionsByTheme.js.map +1 -1
  41. package/dist/asset-registries/util/getIconCollectionByTheme.js.map +1 -1
  42. package/dist/config/AnimationMode.js.map +1 -1
  43. package/dist/config/CalendarType.js.map +1 -1
  44. package/dist/config/Fonts.js.map +1 -1
  45. package/dist/config/FormatSettings.js.map +1 -1
  46. package/dist/config/Language.js.map +1 -1
  47. package/dist/config/NoConflict.js.map +1 -1
  48. package/dist/config/Theme.js.map +1 -1
  49. package/dist/config/ThemeRoot.js.map +1 -1
  50. package/dist/config/Timezone.js.map +1 -1
  51. package/dist/config/Tooltips.js.map +1 -1
  52. package/dist/connectToComponent.js.map +1 -1
  53. package/dist/converters/DOMReference.js.map +1 -1
  54. package/dist/custom-elements-internal.json +31 -1
  55. package/dist/custom-elements.json +31 -1
  56. package/dist/decorators/customElement.d.ts +1 -0
  57. package/dist/decorators/customElement.js +4 -1
  58. package/dist/decorators/customElement.js.map +1 -1
  59. package/dist/decorators/event.d.ts +1 -1
  60. package/dist/decorators/event.js.map +1 -1
  61. package/dist/decorators/i18n.d.ts +17 -0
  62. package/dist/decorators/i18n.js +26 -0
  63. package/dist/decorators/i18n.js.map +1 -0
  64. package/dist/decorators/property.js.map +1 -1
  65. package/dist/decorators/query.d.ts +1 -1
  66. package/dist/decorators/query.js.map +1 -1
  67. package/dist/decorators/queryAll.d.ts +1 -1
  68. package/dist/decorators/queryAll.js.map +1 -1
  69. package/dist/decorators/slot.js.map +1 -1
  70. package/dist/delegate/ItemNavigation.js.map +1 -1
  71. package/dist/delegate/ResizeHandler.js.map +1 -1
  72. package/dist/delegate/ScrollEnablement.js.map +1 -1
  73. package/dist/features/F6Navigation.js.map +1 -1
  74. package/dist/features/InputElementsFormSupport.js.map +1 -1
  75. package/dist/features/LegacyDateFormats.js.map +1 -1
  76. package/dist/features/OpenUI5Enablement.js.map +1 -1
  77. package/dist/features/OpenUI5Support.js.map +1 -1
  78. package/dist/features/patchPatcher.js.map +1 -1
  79. package/dist/features/patchPopup.d.ts +2 -2
  80. package/dist/features/patchPopup.js +2 -2
  81. package/dist/features/patchPopup.js.map +1 -1
  82. package/dist/generated/VersionInfo.js +3 -3
  83. package/dist/generated/VersionInfo.js.map +1 -1
  84. package/dist/getSharedResource.js.map +1 -1
  85. package/dist/i18nBundle.js.map +1 -1
  86. package/dist/locale/Locale.js.map +1 -1
  87. package/dist/locale/getEffectiveDir.js.map +1 -1
  88. package/dist/locale/getLocale.js.map +1 -1
  89. package/dist/locale/nextFallbackLocale.js.map +1 -1
  90. package/dist/locale/normalizeLocale.js.map +1 -1
  91. package/dist/prod/Boot.js +1 -1
  92. package/dist/prod/Boot.js.map +3 -3
  93. package/dist/prod/FeaturesRegistry.js.map +2 -2
  94. package/dist/prod/UI5Element.js +1 -1
  95. package/dist/prod/UI5Element.js.map +3 -3
  96. package/dist/prod/UI5ElementMetadata.js +1 -1
  97. package/dist/prod/UI5ElementMetadata.js.map +2 -2
  98. package/dist/prod/decorators/customElement.js +1 -1
  99. package/dist/prod/decorators/customElement.js.map +3 -3
  100. package/dist/prod/decorators/i18n.js +2 -0
  101. package/dist/prod/decorators/i18n.js.map +7 -0
  102. package/dist/prod/decorators/query.js.map +1 -1
  103. package/dist/prod/decorators/queryAll.js.map +1 -1
  104. package/dist/prod/features/patchPopup.js +1 -1
  105. package/dist/prod/features/patchPopup.js.map +2 -2
  106. package/dist/prod/generated/VersionInfo.js +1 -1
  107. package/dist/prod/generated/VersionInfo.js.map +2 -2
  108. package/dist/prod/util/ColorConversion.js +1 -1
  109. package/dist/prod/util/ColorConversion.js.map +2 -2
  110. package/dist/prod/util/fixSafariActiveState.js +2 -0
  111. package/dist/prod/util/fixSafariActiveState.js.map +7 -0
  112. package/dist/renderer/LitRenderer.js.map +1 -1
  113. package/dist/renderer/directives/style-map.js.map +1 -1
  114. package/dist/renderer/executeTemplate.js.map +1 -1
  115. package/dist/ssr-dom.d.ts +1 -0
  116. package/dist/ssr-dom.js +3 -0
  117. package/dist/ssr-dom.js.map +1 -0
  118. package/dist/theming/CustomStyle.js.map +1 -1
  119. package/dist/theming/applyTheme.js +1 -1
  120. package/dist/theming/applyTheme.js.map +1 -1
  121. package/dist/theming/getConstructableStyle.js.map +1 -1
  122. package/dist/theming/getEffectiveStyle.js.map +1 -1
  123. package/dist/theming/getStylesString.js.map +1 -1
  124. package/dist/theming/getThemeDesignerTheme.js.map +1 -1
  125. package/dist/thirdparty/_merge.js.map +1 -1
  126. package/dist/thirdparty/isPlainObject.js.map +1 -1
  127. package/dist/updateShadowRoot.js.map +1 -1
  128. package/dist/util/AriaLabelHelper.js.map +1 -1
  129. package/dist/util/Caret.js.map +1 -1
  130. package/dist/util/ColorConversion.js +1 -1
  131. package/dist/util/ColorConversion.js.map +1 -1
  132. package/dist/util/FetchHelper.js.map +1 -1
  133. package/dist/util/FocusableElements.js.map +1 -1
  134. package/dist/util/InvisibleMessage.js.map +1 -1
  135. package/dist/util/PopupUtils.js.map +1 -1
  136. package/dist/util/SelectionAssistant.js.map +1 -1
  137. package/dist/util/SlotsHelper.js.map +1 -1
  138. package/dist/util/StringHelper.js.map +1 -1
  139. package/dist/util/TabbableElements.js.map +1 -1
  140. package/dist/util/arraysAreEqual.js.map +1 -1
  141. package/dist/util/createLinkInHead.js.map +1 -1
  142. package/dist/util/detectNavigatorLanguage.js.map +1 -1
  143. package/dist/util/dragAndDrop/DragRegistry.js.map +1 -1
  144. package/dist/util/dragAndDrop/findClosestPosition.js.map +1 -1
  145. package/dist/util/dragAndDrop/longDragOverHandler.js.map +1 -1
  146. package/dist/util/fixSafariActiveState.d.ts +2 -0
  147. package/dist/util/fixSafariActiveState.js +11 -0
  148. package/dist/util/fixSafariActiveState.js.map +1 -0
  149. package/dist/util/formatMessage.js.map +1 -1
  150. package/dist/util/generateHighlightedMarkup.js.map +1 -1
  151. package/dist/util/getActiveElement.js.map +1 -1
  152. package/dist/util/getClassCopy.d.ts +72 -63
  153. package/dist/util/getEffectiveScrollbarStyle.js.map +1 -1
  154. package/dist/util/getFastNavigationGroups.js.map +1 -1
  155. package/dist/util/getFileExtension.js.map +1 -1
  156. package/dist/util/getNormalizedTarget.js.map +1 -1
  157. package/dist/util/getSingletonElementInstance.js.map +1 -1
  158. package/dist/util/isElementClickable.js.map +1 -1
  159. package/dist/util/isElementHidden.js.map +1 -1
  160. package/dist/util/isElementTabbable.js.map +1 -1
  161. package/dist/util/isValidPropertyName.js.map +1 -1
  162. package/dist/util/whenDOMReady.js.map +1 -1
  163. package/dist/validateThemeRoot.js.map +1 -1
  164. package/dist/vscode.html-custom-data.json +1 -1
  165. package/package-scripts.cjs +2 -4
  166. package/package.json +4 -4
  167. package/tsconfig.json +3 -5
@@ -1 +1 @@
1
- {"version":3,"file":"OpenUI5Enablement.js","sourceRoot":"","sources":["../../src/features/OpenUI5Enablement.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TemplateResult } from \"lit-html\";\nimport { registerFeature } from \"../FeaturesRegistry.js\";\nimport BusyIndicatorStyles from \"../generated/css/BusyIndicator.css.js\";\nimport merge from \"../thirdparty/merge.js\";\nimport {\n\tisTabPrevious,\n} from \"../Keys.js\";\n\nimport type UI5Element from \"../UI5Element.js\";\nimport type OpenUI5Element from \"./OpenUI5Element.js\";\n\nconst busyIndicatorMetadata = {\n\tproperties: {\n\t\t__isBusy: {\n\t\t\ttype: Boolean,\n\t\t},\n\t},\n};\n\nclass OpenUI5Enablement {\n\tstatic wrapTemplateResultInBusyMarkup(html: (strings: TemplateStringsArray, ...values: Array<unknown>) => TemplateResult, host: OpenUI5Element, templateResult: TemplateResult) {\n\t\tif (host.isOpenUI5Component && host.__isBusy) {\n\t\t\ttemplateResult = html`\n\t\t\t<div class=\"busy-indicator-wrapper\">\n\t\t\t\t<span tabindex=\"0\" busy-indicator-before-span @focusin=${host.__suppressFocusIn}></span>\n\t\t\t\t${templateResult}\n\t\t\t\t<div class=\"busy-indicator-overlay\"></div>\n\t\t\t\t<div busy-indicator\n\t\t\t\t\tclass=\"busy-indicator-busy-area\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\trole=\"progressbar\"\n\t\t\t\t\t@keydown=${host.__suppressFocusBack}\n\t\t\t\t\taria-valuemin=\"0\"\n\t\t\t\t\taria-valuemax=\"100\"\n\t\t\t\t\taria-valuetext=\"Busy\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"busy-indicator-circle circle-animation-0\"></div>\n\t\t\t\t\t\t<div class=\"busy-indicator-circle circle-animation-1\"></div>\n\t\t\t\t\t\t<div class=\"busy-indicator-circle circle-animation-2\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>`;\n\t\t}\n\n\t\treturn templateResult;\n\t}\n\n\tstatic enrichBusyIndicatorSettings(klass: typeof UI5Element) {\n\t\tOpenUI5Enablement.enrichBusyIndicatorMetadata(klass);\n\t\tOpenUI5Enablement.enrichBusyIndicatorMethods(klass.prototype);\n\t}\n\n\tstatic enrichBusyIndicatorMetadata(klass: typeof UI5Element) {\n\t\tklass.metadata = merge(klass.metadata, busyIndicatorMetadata);\n\t}\n\n\tstatic enrichBusyIndicatorMethods(UI5ElementPrototype: typeof OpenUI5Element.prototype) {\n\t\tObject.defineProperties(UI5ElementPrototype, {\n\t\t\t\"__redirectFocus\": { value: true, writable: true },\n\t\t\t\"__suppressFocusBack\": {\n\t\t\t\tget() {\n\t\t\t\t\treturn {\n\t\t\t\t\t\thandleEvent: (e: KeyboardEvent) => {\n\t\t\t\t\t\t\tif (isTabPrevious(e)) {\n\t\t\t\t\t\t\t\tconst beforeElem = this.shadowRoot.querySelector(\"[busy-indicator-before-span]\");\n\t\t\t\t\t\t\t\tthis.__redirectFocus = false;\n\t\t\t\t\t\t\t\tbeforeElem.focus();\n\t\t\t\t\t\t\t\tthis.__redirectFocus = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcapture: true,\n\t\t\t\t\t\tpassive: false,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"isOpenUI5Component\": { get: () => { return true; } },\n\t\t});\n\n\t\tUI5ElementPrototype.__suppressFocusIn = function handleFocusIn() {\n\t\t\tconst busyIndicator = this.shadowRoot?.querySelector(\"[busy-indicator]\") as HTMLElement;\n\t\t\tif (busyIndicator && this.__redirectFocus) {\n\t\t\t\tbusyIndicator.focus();\n\t\t\t}\n\t\t};\n\n\t\tUI5ElementPrototype.getDomRef = function getDomRef() {\n\t\t\t// If a component set _getRealDomRef to its children, use the return value of this function\n\t\t\tif (typeof this._getRealDomRef === \"function\") {\n\t\t\t\treturn this._getRealDomRef();\n\t\t\t}\n\n\t\t\tif (!this.shadowRoot || this.shadowRoot.children.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst children = [...this.shadowRoot.children].filter(child => ![\"link\", \"style\"].includes(child.localName));\n\n\t\t\tif (children.length !== 1) {\n\t\t\t\tconsole.warn(`The shadow DOM for ${(this.constructor as typeof UI5Element).getMetadata().getTag()} does not have a top level element, the getDomRef() method might not work as expected`); // eslint-disable-line\n\t\t\t}\n\n\t\t\tif (this.__isBusy) {\n\t\t\t\treturn children[0].querySelector(\".busy-indicator-wrapper > :not([busy-indicator-before-span]):not(.busy-indicator-overlay):not(.busy-indicator-busy-area)\") as HTMLElement;\n\t\t\t}\n\n\t\t\treturn children[0] as HTMLElement;\n\t\t};\n\t}\n\n\tstatic getBusyIndicatorStyles() {\n\t\treturn BusyIndicatorStyles;\n\t}\n}\n\nregisterFeature(\"OpenUI5Enablement\", OpenUI5Enablement);\n\nexport default OpenUI5Enablement;\n"]}
1
+ {"version":3,"file":"OpenUI5Enablement.js","sourceRoot":"","sources":["../../src/features/OpenUI5Enablement.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TemplateResult } from \"lit-html\";\nimport { registerFeature } from \"../FeaturesRegistry.js\";\nimport BusyIndicatorStyles from \"../generated/css/BusyIndicator.css.js\";\nimport merge from \"../thirdparty/merge.js\";\nimport {\n\tisTabPrevious,\n} from \"../Keys.js\";\n\nimport type UI5Element from \"../UI5Element.js\";\nimport type OpenUI5Element from \"./OpenUI5Element.js\";\n\nconst busyIndicatorMetadata = {\n\tproperties: {\n\t\t__isBusy: {\n\t\t\ttype: Boolean,\n\t\t},\n\t},\n};\n\nclass OpenUI5Enablement {\n\tstatic wrapTemplateResultInBusyMarkup(html: (strings: TemplateStringsArray, ...values: Array<unknown>) => TemplateResult, host: OpenUI5Element, templateResult: TemplateResult) {\n\t\tif (host.isOpenUI5Component && host.__isBusy) {\n\t\t\ttemplateResult = html`\n\t\t\t<div class=\"busy-indicator-wrapper\">\n\t\t\t\t<span tabindex=\"0\" busy-indicator-before-span @focusin=${host.__suppressFocusIn}></span>\n\t\t\t\t${templateResult}\n\t\t\t\t<div class=\"busy-indicator-overlay\"></div>\n\t\t\t\t<div busy-indicator\n\t\t\t\t\tclass=\"busy-indicator-busy-area\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\trole=\"progressbar\"\n\t\t\t\t\t@keydown=${host.__suppressFocusBack}\n\t\t\t\t\taria-valuemin=\"0\"\n\t\t\t\t\taria-valuemax=\"100\"\n\t\t\t\t\taria-valuetext=\"Busy\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"busy-indicator-circle circle-animation-0\"></div>\n\t\t\t\t\t\t<div class=\"busy-indicator-circle circle-animation-1\"></div>\n\t\t\t\t\t\t<div class=\"busy-indicator-circle circle-animation-2\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>`;\n\t\t}\n\n\t\treturn templateResult;\n\t}\n\n\tstatic enrichBusyIndicatorSettings(klass: typeof UI5Element) {\n\t\tOpenUI5Enablement.enrichBusyIndicatorMetadata(klass);\n\t\tOpenUI5Enablement.enrichBusyIndicatorMethods(klass.prototype);\n\t}\n\n\tstatic enrichBusyIndicatorMetadata(klass: typeof UI5Element) {\n\t\tklass.metadata = merge(klass.metadata, busyIndicatorMetadata);\n\t}\n\n\tstatic enrichBusyIndicatorMethods(UI5ElementPrototype: typeof OpenUI5Element.prototype) {\n\t\tObject.defineProperties(UI5ElementPrototype, {\n\t\t\t\"__redirectFocus\": { value: true, writable: true },\n\t\t\t\"__suppressFocusBack\": {\n\t\t\t\tget() {\n\t\t\t\t\treturn {\n\t\t\t\t\t\thandleEvent: (e: KeyboardEvent) => {\n\t\t\t\t\t\t\tif (isTabPrevious(e)) {\n\t\t\t\t\t\t\t\tconst beforeElem = this.shadowRoot.querySelector(\"[busy-indicator-before-span]\");\n\t\t\t\t\t\t\t\tthis.__redirectFocus = false;\n\t\t\t\t\t\t\t\tbeforeElem.focus();\n\t\t\t\t\t\t\t\tthis.__redirectFocus = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcapture: true,\n\t\t\t\t\t\tpassive: false,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"isOpenUI5Component\": { get: () => { return true; } },\n\t\t});\n\n\t\tUI5ElementPrototype.__suppressFocusIn = function handleFocusIn() {\n\t\t\tconst busyIndicator = this.shadowRoot?.querySelector(\"[busy-indicator]\") as HTMLElement;\n\t\t\tif (busyIndicator && this.__redirectFocus) {\n\t\t\t\tbusyIndicator.focus();\n\t\t\t}\n\t\t};\n\n\t\tUI5ElementPrototype.getDomRef = function getDomRef() {\n\t\t\t// If a component set _getRealDomRef to its children, use the return value of this function\n\t\t\tif (typeof this._getRealDomRef === \"function\") {\n\t\t\t\treturn this._getRealDomRef();\n\t\t\t}\n\n\t\t\tif (!this.shadowRoot || this.shadowRoot.children.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst children = [...this.shadowRoot.children].filter(child => ![\"link\", \"style\"].includes(child.localName));\n\n\t\t\tif (children.length !== 1) {\n\t\t\t\tconsole.warn(`The shadow DOM for ${(this.constructor as typeof UI5Element).getMetadata().getTag()} does not have a top level element, the getDomRef() method might not work as expected`); // eslint-disable-line\n\t\t\t}\n\n\t\t\tif (this.__isBusy) {\n\t\t\t\treturn children[0].querySelector(\".busy-indicator-wrapper > :not([busy-indicator-before-span]):not(.busy-indicator-overlay):not(.busy-indicator-busy-area)\") as HTMLElement;\n\t\t\t}\n\n\t\t\treturn children[0] as HTMLElement;\n\t\t};\n\t}\n\n\tstatic getBusyIndicatorStyles() {\n\t\treturn BusyIndicatorStyles;\n\t}\n}\n\nregisterFeature(\"OpenUI5Enablement\", OpenUI5Enablement);\n\nexport default OpenUI5Enablement;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"OpenUI5Support.js","sourceRoot":"","sources":["../../src/features/OpenUI5Support.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,OAAO,UAAU,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA+D9C,MAAM,cAAc;IACnB,MAAM,CAAC,mBAAmB;QACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAG,CAAC,OAAO,EAAE;YAC5B,OAAO,IAAI,CAAC,CAAC,2DAA2D;SACxE;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,EAAG,CAAC,OAAiB,CAAC;QACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,OAAO,KAAK,CAAC;SACb;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,iBAAiB;QACvB,OAAO,OAAO,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,KAAK,UAAU,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,IAAI;QACV,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,EAAE;YACxC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SACzB;QAED,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YAClC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAiB,EAAE,EAAE;gBACvE,MAAM,QAAQ,GAAG,GAAG,EAAE;oBACrB,IAAI,IAAI,GAAkB,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,wBAAwB,CAAC,CAAC;oBACjG,IAAI,cAAc,CAAC,mBAAmB,EAAE,EAAE,EAAE,8DAA8D;wBACzG,IAAI,GAAG;4BACN,GAAG,IAAI;4BACP,0BAA0B;4BAC1B,4BAA4B;4BAC5B,6BAA6B;4BAC7B,qBAAqB;4BACrB,gCAAgC;yBAChC,CAAC;qBACF;oBACD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAmB,EAAE,OAAuB,EAAE,EAAE;wBAC5E,YAAY,CAAC,OAAO,CAAC,CAAC;wBACtB,UAAU,CAAC,KAAK,CAAC,CAAC;wBAClB,OAAO,EAAE,CAAC;oBACX,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC;gBACF,IAAI,cAAc,CAAC,mBAAmB,EAAE,EAAE;oBACzC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;oBACnB,QAAQ,EAAE,CAAC;iBACX;qBAAM;oBACN,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;iBAC1B;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,8BAA8B;QACpC,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,EAAE;YACxC,OAAO,EAAE,CAAC;SACV;QAED,IAAI,cAAc,CAAC,mBAAmB,EAAE,EAAE;YACzC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAoB,CAAC;YAChG,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,4BAA4B,CAAiB,CAAC;YACzF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAY,CAAC;YACxE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAe,CAAC;YACnF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAkB,CAAC;YAE/F,OAAO;gBACN,aAAa,EAAE,eAAe,CAAC,gBAAgB,EAAE;gBACjD,QAAQ,EAAE,YAAY,CAAC,WAAW,EAAE;gBACpC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE;gBACzB,SAAS,EAAE,OAAO,CAAC,YAAY,EAAE;gBACjC,GAAG,EAAE,YAAY,CAAC,MAAM,EAAE;gBAC1B,QAAQ,EAAE,YAAY,CAAC,WAAW,EAAE;gBACpC,YAAY,EAAE,UAAU,CAAC,eAAe,EAAE;gBAC1C,cAAc,EAAE;oBACf,cAAc,EAAE,aAAa,CAAC,0BAA0B,EAAE,CAAC,cAAc;oBACzE,6BAA6B,EAAE,UAAU,CAAC,4BAA4B,EAAE,EAAE;2BAChE,UAAU,CAAC,gCAAgC,EAAE,EAAE;iBACzD;aACD,CAAC;SACF;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAgB,CAAC;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAe,CAAC;QAEjF,OAAO;YACN,aAAa,EAAE,MAAM,CAAC,gBAAgB,EAAE;YACxC,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;YAC9B,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;YACxB,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE;YAChC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE;YACpB,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;YAC9B,YAAY,EAAE,MAAM,CAAC,eAAe,EAAE;YACtC,cAAc,EAAE;gBACf,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,SAAS;gBACvG,6BAA6B,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,gCAAgC,EAAE;aAC5F;SACD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,mBAAmB;QACzB,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,EAAE;YACxC,OAAO;SACP;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAe,CAAC;QAEjF,IAAI,cAAc,CAAC,mBAAmB,EAAE,EAAE;YACzC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,4BAA4B,CAAiB,CAAC;YACzF,OAAO,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SACpE;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAgB,CAAC;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,OAAO,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,qBAAqB;QAC3B,IAAI,cAAc,CAAC,mBAAmB,EAAE,EAAE;YACzC,MAAM,OAAO,GAAY,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YACtE,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE;gBAC1B,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;SACH;aAAM;YACN,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAgB,CAAC;YACtE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBAC5B,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;SACH;IACF,CAAC;IAED,MAAM,CAAC,eAAe;QACrB,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,EAAE;YACxC,OAAO;SACP;QAED,cAAc,CAAC,qBAAqB,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,kBAAkB;QACxB,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,EAAE;YACxC,OAAO;SACP;QAED,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,0BAA0B,CAAoB,CAAC,CAAC,yCAAyC;QACvJ,IAAI,CAAC,IAAI,EAAE;YACV,OAAO,KAAK,CAAC;SACb;QAED,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACtD,CAAC;CACD;AAED,eAAe,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;AAElD,eAAe,cAAc,CAAC","sourcesContent":["import patchPatcher from \"./patchPatcher.js\";\nimport type { OpenUI5Patcher } from \"./patchPatcher.js\";\nimport patchPopup from \"./patchPopup.js\";\nimport type { OpenUI5Popup } from \"./patchPopup.js\";\nimport { registerFeature } from \"../FeaturesRegistry.js\";\nimport { setTheme } from \"../config/Theme.js\";\nimport type { CLDRData } from \"../asset-registries/LocaleData.js\";\nimport type { LegacyDateCalendarCustomizing } from \"../features/LegacyDateFormats.js\";\n\ntype OpenUI5Core = {\n\tattachInit: (callback: () => void) => void,\n\tready: () => Promise<void>,\n\tattachThemeChanged: (callback: () => void) => void,\n\tgetConfiguration: () => OpenUI5CoreConfiguration,\n};\n\ntype OpenUI5CoreConfiguration = {\n\tgetAnimationMode: () => string,\n\tgetLanguage: () => string,\n\tgetTheme: () => string,\n\tgetThemeRoot: () => string,\n\tgetRTL: () => string,\n\tgetTimezone: () => string,\n\tgetCalendarType: () => string,\n\tgetLocale: () => string,\n\tgetFormatSettings: () => {\n\t\tgetLegacyDateCalendarCustomizing: () => LegacyDateCalendarCustomizing;\n\t}\n};\n\ntype ControlBehavior = {\n\tgetAnimationMode: () => string,\n}\n\ntype Localization = {\n\tgetLanguage: () => string,\n\tgetLanguageTag: () => string,\n\tgetRTL: () => string,\n\tgetTimezone: () => string,\n}\n\ntype LocaleData = {\n\tgetInstance: (locale: string) => Locale,\n}\n\ntype Theming = {\n\tgetThemeRoot: () => string,\n\tgetTheme: () => string,\n\tattachApplied: (callback: () => void) => void,\n}\n\ntype Formatting = {\n\tgetCalendarType: () => string,\n\tgetLegacyDateCalendarCustomizing: () => LegacyDateCalendarCustomizing,\n\tgetCustomIslamicCalendarData?: () => LegacyDateCalendarCustomizing,\n}\n\ntype CalendarUtils = {\n\tgetWeekConfigurationValues: () => {\n\t\tfirstDayOfWeek: number | undefined,\n\t},\n}\n\ntype Locale = {\n\tgetFirstDayOfWeek: () => number,\n\t_get: () => CLDRData,\n};\n\nclass OpenUI5Support {\n\tstatic isAtLeastVersion116() {\n\t\tif (!window.sap.ui!.version) {\n\t\t\treturn true; // sap.ui.version will be removed in newer OpenUI5 versions\n\t\t}\n\t\tconst version = window.sap.ui!.version as string;\n\t\tconst parts = version.split(\".\");\n\t\tif (!parts || parts.length < 2) {\n\t\t\treturn false;\n\t\t}\n\t\treturn parseInt(parts[0]) > 1 || parseInt(parts[1]) >= 116;\n\t}\n\n\tstatic isOpenUI5Detected() {\n\t\treturn typeof window.sap?.ui?.require === \"function\";\n\t}\n\n\tstatic init() {\n\t\tif (!OpenUI5Support.isOpenUI5Detected()) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\treturn new Promise<void>(resolve => {\n\t\t\twindow.sap.ui.require([\"sap/ui/core/Core\"], async (Core: OpenUI5Core) => {\n\t\t\t\tconst callback = () => {\n\t\t\t\t\tlet deps: Array<string> = [\"sap/ui/core/Popup\", \"sap/ui/core/Patcher\", \"sap/ui/core/LocaleData\"];\n\t\t\t\t\tif (OpenUI5Support.isAtLeastVersion116()) { // for versions since 1.116.0 and onward, use the modular core\n\t\t\t\t\t\tdeps = [\n\t\t\t\t\t\t\t...deps,\n\t\t\t\t\t\t\t\"sap/base/i18n/Formatting\",\n\t\t\t\t\t\t\t\"sap/base/i18n/Localization\",\n\t\t\t\t\t\t\t\"sap/ui/core/ControlBehavior\",\n\t\t\t\t\t\t\t\"sap/ui/core/Theming\",\n\t\t\t\t\t\t\t\"sap/ui/core/date/CalendarUtils\",\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\twindow.sap.ui.require(deps, (Popup: OpenUI5Popup, Patcher: OpenUI5Patcher) => {\n\t\t\t\t\t\tpatchPatcher(Patcher);\n\t\t\t\t\t\tpatchPopup(Popup);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tif (OpenUI5Support.isAtLeastVersion116()) {\n\t\t\t\t\tawait Core.ready();\n\t\t\t\t\tcallback();\n\t\t\t\t} else {\n\t\t\t\t\tCore.attachInit(callback);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tstatic getConfigurationSettingsObject() {\n\t\tif (!OpenUI5Support.isOpenUI5Detected()) {\n\t\t\treturn {};\n\t\t}\n\n\t\tif (OpenUI5Support.isAtLeastVersion116()) {\n\t\t\tconst ControlBehavior = window.sap.ui.require(\"sap/ui/core/ControlBehavior\") as ControlBehavior;\n\t\t\tconst Localization = window.sap.ui.require(\"sap/base/i18n/Localization\") as Localization;\n\t\t\tconst Theming = window.sap.ui.require(\"sap/ui/core/Theming\") as Theming;\n\t\t\tconst Formatting = window.sap.ui.require(\"sap/base/i18n/Formatting\") as Formatting;\n\t\t\tconst CalendarUtils = window.sap.ui.require(\"sap/ui/core/date/CalendarUtils\") as CalendarUtils;\n\n\t\t\treturn {\n\t\t\t\tanimationMode: ControlBehavior.getAnimationMode(),\n\t\t\t\tlanguage: Localization.getLanguage(),\n\t\t\t\ttheme: Theming.getTheme(),\n\t\t\t\tthemeRoot: Theming.getThemeRoot(),\n\t\t\t\trtl: Localization.getRTL(),\n\t\t\t\ttimezone: Localization.getTimezone(),\n\t\t\t\tcalendarType: Formatting.getCalendarType(),\n\t\t\t\tformatSettings: {\n\t\t\t\t\tfirstDayOfWeek: CalendarUtils.getWeekConfigurationValues().firstDayOfWeek,\n\t\t\t\t\tlegacyDateCalendarCustomizing: Formatting.getCustomIslamicCalendarData?.()\n\t\t\t\t\t\t\t\t\t\t\t\t?? Formatting.getLegacyDateCalendarCustomizing?.(),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tconst Core = window.sap.ui.require(\"sap/ui/core/Core\") as OpenUI5Core;\n\t\tconst config = Core.getConfiguration();\n\t\tconst LocaleData = window.sap.ui.require(\"sap/ui/core/LocaleData\") as LocaleData;\n\n\t\treturn {\n\t\t\tanimationMode: config.getAnimationMode(),\n\t\t\tlanguage: config.getLanguage(),\n\t\t\ttheme: config.getTheme(),\n\t\t\tthemeRoot: config.getThemeRoot(),\n\t\t\trtl: config.getRTL(),\n\t\t\ttimezone: config.getTimezone(),\n\t\t\tcalendarType: config.getCalendarType(),\n\t\t\tformatSettings: {\n\t\t\t\tfirstDayOfWeek: LocaleData ? LocaleData.getInstance(config.getLocale()).getFirstDayOfWeek() : undefined,\n\t\t\t\tlegacyDateCalendarCustomizing: config.getFormatSettings().getLegacyDateCalendarCustomizing(),\n\t\t\t},\n\t\t};\n\t}\n\n\tstatic getLocaleDataObject() {\n\t\tif (!OpenUI5Support.isOpenUI5Detected()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst LocaleData = window.sap.ui.require(\"sap/ui/core/LocaleData\") as LocaleData;\n\n\t\tif (OpenUI5Support.isAtLeastVersion116()) {\n\t\t\tconst Localization = window.sap.ui.require(\"sap/base/i18n/Localization\") as Localization;\n\t\t\treturn LocaleData.getInstance(Localization.getLanguageTag())._get();\n\t\t}\n\n\t\tconst Core = window.sap.ui.require(\"sap/ui/core/Core\") as OpenUI5Core;\n\t\tconst config = Core.getConfiguration();\n\t\treturn LocaleData.getInstance(config.getLocale())._get();\n\t}\n\n\tstatic _listenForThemeChange() {\n\t\tif (OpenUI5Support.isAtLeastVersion116()) {\n\t\t\tconst Theming: Theming = window.sap.ui.require(\"sap/ui/core/Theming\");\n\t\t\tTheming.attachApplied(() => {\n\t\t\t\tsetTheme(Theming.getTheme());\n\t\t\t});\n\t\t} else {\n\t\t\tconst Core = window.sap.ui.require(\"sap/ui/core/Core\") as OpenUI5Core;\n\t\t\tconst config = Core.getConfiguration();\n\t\t\tCore.attachThemeChanged(() => {\n\t\t\t\tsetTheme(config.getTheme());\n\t\t\t});\n\t\t}\n\t}\n\n\tstatic attachListeners() {\n\t\tif (!OpenUI5Support.isOpenUI5Detected()) {\n\t\t\treturn;\n\t\t}\n\n\t\tOpenUI5Support._listenForThemeChange();\n\t}\n\n\tstatic cssVariablesLoaded() {\n\t\tif (!OpenUI5Support.isOpenUI5Detected()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst link = [...document.head.children].find(el => el.id === \"sap-ui-theme-sap.ui.core\") as HTMLLinkElement; // more reliable than querySelector early\n\t\tif (!link) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !!link.href.match(/\\/css(-|_)variables\\.css/);\n\t}\n}\n\nregisterFeature(\"OpenUI5Support\", OpenUI5Support);\n\nexport default OpenUI5Support;\n"]}
1
+ {"version":3,"file":"OpenUI5Support.js","sourceRoot":"","sources":["../../src/features/OpenUI5Support.ts"],"names":[],"mappings":"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","sourcesContent":["import patchPatcher from \"./patchPatcher.js\";\nimport type { OpenUI5Patcher } from \"./patchPatcher.js\";\nimport patchPopup from \"./patchPopup.js\";\nimport type { OpenUI5Popup } from \"./patchPopup.js\";\nimport { registerFeature } from \"../FeaturesRegistry.js\";\nimport { setTheme } from \"../config/Theme.js\";\nimport type { CLDRData } from \"../asset-registries/LocaleData.js\";\nimport type { LegacyDateCalendarCustomizing } from \"../features/LegacyDateFormats.js\";\n\ntype OpenUI5Core = {\n\tattachInit: (callback: () => void) => void,\n\tready: () => Promise<void>,\n\tattachThemeChanged: (callback: () => void) => void,\n\tgetConfiguration: () => OpenUI5CoreConfiguration,\n};\n\ntype OpenUI5CoreConfiguration = {\n\tgetAnimationMode: () => string,\n\tgetLanguage: () => string,\n\tgetTheme: () => string,\n\tgetThemeRoot: () => string,\n\tgetRTL: () => string,\n\tgetTimezone: () => string,\n\tgetCalendarType: () => string,\n\tgetLocale: () => string,\n\tgetFormatSettings: () => {\n\t\tgetLegacyDateCalendarCustomizing: () => LegacyDateCalendarCustomizing;\n\t}\n};\n\ntype ControlBehavior = {\n\tgetAnimationMode: () => string,\n}\n\ntype Localization = {\n\tgetLanguage: () => string,\n\tgetLanguageTag: () => string,\n\tgetRTL: () => string,\n\tgetTimezone: () => string,\n}\n\ntype LocaleData = {\n\tgetInstance: (locale: string) => Locale,\n}\n\ntype Theming = {\n\tgetThemeRoot: () => string,\n\tgetTheme: () => string,\n\tattachApplied: (callback: () => void) => void,\n}\n\ntype Formatting = {\n\tgetCalendarType: () => string,\n\tgetLegacyDateCalendarCustomizing: () => LegacyDateCalendarCustomizing,\n\tgetCustomIslamicCalendarData?: () => LegacyDateCalendarCustomizing,\n}\n\ntype CalendarUtils = {\n\tgetWeekConfigurationValues: () => {\n\t\tfirstDayOfWeek: number | undefined,\n\t},\n}\n\ntype Locale = {\n\tgetFirstDayOfWeek: () => number,\n\t_get: () => CLDRData,\n};\n\nclass OpenUI5Support {\n\tstatic isAtLeastVersion116() {\n\t\tif (!window.sap.ui!.version) {\n\t\t\treturn true; // sap.ui.version will be removed in newer OpenUI5 versions\n\t\t}\n\t\tconst version = window.sap.ui!.version as string;\n\t\tconst parts = version.split(\".\");\n\t\tif (!parts || parts.length < 2) {\n\t\t\treturn false;\n\t\t}\n\t\treturn parseInt(parts[0]) > 1 || parseInt(parts[1]) >= 116;\n\t}\n\n\tstatic isOpenUI5Detected() {\n\t\treturn typeof window.sap?.ui?.require === \"function\";\n\t}\n\n\tstatic init() {\n\t\tif (!OpenUI5Support.isOpenUI5Detected()) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\treturn new Promise<void>(resolve => {\n\t\t\twindow.sap.ui.require([\"sap/ui/core/Core\"], async (Core: OpenUI5Core) => {\n\t\t\t\tconst callback = () => {\n\t\t\t\t\tlet deps: Array<string> = [\"sap/ui/core/Popup\", \"sap/ui/core/Patcher\", \"sap/ui/core/LocaleData\"];\n\t\t\t\t\tif (OpenUI5Support.isAtLeastVersion116()) { // for versions since 1.116.0 and onward, use the modular core\n\t\t\t\t\t\tdeps = [\n\t\t\t\t\t\t\t...deps,\n\t\t\t\t\t\t\t\"sap/base/i18n/Formatting\",\n\t\t\t\t\t\t\t\"sap/base/i18n/Localization\",\n\t\t\t\t\t\t\t\"sap/ui/core/ControlBehavior\",\n\t\t\t\t\t\t\t\"sap/ui/core/Theming\",\n\t\t\t\t\t\t\t\"sap/ui/core/date/CalendarUtils\",\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\twindow.sap.ui.require(deps, (Popup: OpenUI5Popup, Patcher: OpenUI5Patcher) => {\n\t\t\t\t\t\tpatchPatcher(Patcher);\n\t\t\t\t\t\tpatchPopup(Popup);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tif (OpenUI5Support.isAtLeastVersion116()) {\n\t\t\t\t\tawait Core.ready();\n\t\t\t\t\tcallback();\n\t\t\t\t} else {\n\t\t\t\t\tCore.attachInit(callback);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tstatic getConfigurationSettingsObject() {\n\t\tif (!OpenUI5Support.isOpenUI5Detected()) {\n\t\t\treturn {};\n\t\t}\n\n\t\tif (OpenUI5Support.isAtLeastVersion116()) {\n\t\t\tconst ControlBehavior = window.sap.ui.require(\"sap/ui/core/ControlBehavior\") as ControlBehavior;\n\t\t\tconst Localization = window.sap.ui.require(\"sap/base/i18n/Localization\") as Localization;\n\t\t\tconst Theming = window.sap.ui.require(\"sap/ui/core/Theming\") as Theming;\n\t\t\tconst Formatting = window.sap.ui.require(\"sap/base/i18n/Formatting\") as Formatting;\n\t\t\tconst CalendarUtils = window.sap.ui.require(\"sap/ui/core/date/CalendarUtils\") as CalendarUtils;\n\n\t\t\treturn {\n\t\t\t\tanimationMode: ControlBehavior.getAnimationMode(),\n\t\t\t\tlanguage: Localization.getLanguage(),\n\t\t\t\ttheme: Theming.getTheme(),\n\t\t\t\tthemeRoot: Theming.getThemeRoot(),\n\t\t\t\trtl: Localization.getRTL(),\n\t\t\t\ttimezone: Localization.getTimezone(),\n\t\t\t\tcalendarType: Formatting.getCalendarType(),\n\t\t\t\tformatSettings: {\n\t\t\t\t\tfirstDayOfWeek: CalendarUtils.getWeekConfigurationValues().firstDayOfWeek,\n\t\t\t\t\tlegacyDateCalendarCustomizing: Formatting.getCustomIslamicCalendarData?.()\n\t\t\t\t\t\t\t\t\t\t\t\t?? Formatting.getLegacyDateCalendarCustomizing?.(),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tconst Core = window.sap.ui.require(\"sap/ui/core/Core\") as OpenUI5Core;\n\t\tconst config = Core.getConfiguration();\n\t\tconst LocaleData = window.sap.ui.require(\"sap/ui/core/LocaleData\") as LocaleData;\n\n\t\treturn {\n\t\t\tanimationMode: config.getAnimationMode(),\n\t\t\tlanguage: config.getLanguage(),\n\t\t\ttheme: config.getTheme(),\n\t\t\tthemeRoot: config.getThemeRoot(),\n\t\t\trtl: config.getRTL(),\n\t\t\ttimezone: config.getTimezone(),\n\t\t\tcalendarType: config.getCalendarType(),\n\t\t\tformatSettings: {\n\t\t\t\tfirstDayOfWeek: LocaleData ? LocaleData.getInstance(config.getLocale()).getFirstDayOfWeek() : undefined,\n\t\t\t\tlegacyDateCalendarCustomizing: config.getFormatSettings().getLegacyDateCalendarCustomizing(),\n\t\t\t},\n\t\t};\n\t}\n\n\tstatic getLocaleDataObject() {\n\t\tif (!OpenUI5Support.isOpenUI5Detected()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst LocaleData = window.sap.ui.require(\"sap/ui/core/LocaleData\") as LocaleData;\n\n\t\tif (OpenUI5Support.isAtLeastVersion116()) {\n\t\t\tconst Localization = window.sap.ui.require(\"sap/base/i18n/Localization\") as Localization;\n\t\t\treturn LocaleData.getInstance(Localization.getLanguageTag())._get();\n\t\t}\n\n\t\tconst Core = window.sap.ui.require(\"sap/ui/core/Core\") as OpenUI5Core;\n\t\tconst config = Core.getConfiguration();\n\t\treturn LocaleData.getInstance(config.getLocale())._get();\n\t}\n\n\tstatic _listenForThemeChange() {\n\t\tif (OpenUI5Support.isAtLeastVersion116()) {\n\t\t\tconst Theming: Theming = window.sap.ui.require(\"sap/ui/core/Theming\");\n\t\t\tTheming.attachApplied(() => {\n\t\t\t\tsetTheme(Theming.getTheme());\n\t\t\t});\n\t\t} else {\n\t\t\tconst Core = window.sap.ui.require(\"sap/ui/core/Core\") as OpenUI5Core;\n\t\t\tconst config = Core.getConfiguration();\n\t\t\tCore.attachThemeChanged(() => {\n\t\t\t\tsetTheme(config.getTheme());\n\t\t\t});\n\t\t}\n\t}\n\n\tstatic attachListeners() {\n\t\tif (!OpenUI5Support.isOpenUI5Detected()) {\n\t\t\treturn;\n\t\t}\n\n\t\tOpenUI5Support._listenForThemeChange();\n\t}\n\n\tstatic cssVariablesLoaded() {\n\t\tif (!OpenUI5Support.isOpenUI5Detected()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst link = [...document.head.children].find(el => el.id === \"sap-ui-theme-sap.ui.core\") as HTMLLinkElement; // more reliable than querySelector early\n\t\tif (!link) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !!link.href.match(/\\/css(-|_)variables\\.css/);\n\t}\n}\n\nregisterFeature(\"OpenUI5Support\", OpenUI5Support);\n\nexport default OpenUI5Support;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"patchPatcher.js","sourceRoot":"","sources":["../../src/features/patchPatcher.ts"],"names":[],"mappings":"AAOA,MAAM,YAAY,GAAG,CAAC,OAAuB,EAAE,EAAE;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;IAC9C,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO;QAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;YAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,kFAAkF;SACpH;QACD,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["type OpenUI5Patcher = {\n\tprototype: {\n\t\t_mAttributes: { [key: string]: string },\n\t\topenEnd: () => OpenUI5Patcher,\n\t}\n};\n\nconst patchPatcher = (Patcher: OpenUI5Patcher) => {\n\tconst origOpenEnd = Patcher.prototype.openEnd;\n\tPatcher.prototype.openEnd = function openEnd() {\n\t\tif (this._mAttributes.popover) {\n\t\t\tdelete this._mAttributes.popover; // The \"popover\" attribute will be managed externally, don't let Patcher remove it\n\t\t}\n\t\treturn origOpenEnd.apply(this);\n\t};\n};\n\nexport default patchPatcher;\nexport type { OpenUI5Patcher };\n"]}
1
+ {"version":3,"file":"patchPatcher.js","sourceRoot":"","sources":["../../src/features/patchPatcher.ts"],"names":[],"mappings":"AAOA,MAAM,YAAY,GAAG,CAAC,OAAuB,EAAE,EAAE;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;IAC9C,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO;QAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,kFAAkF;QACrH,CAAC;QACD,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["type OpenUI5Patcher = {\n\tprototype: {\n\t\t_mAttributes: { [key: string]: string },\n\t\topenEnd: () => OpenUI5Patcher,\n\t}\n};\n\nconst patchPatcher = (Patcher: OpenUI5Patcher) => {\n\tconst origOpenEnd = Patcher.prototype.openEnd;\n\tPatcher.prototype.openEnd = function openEnd() {\n\t\tif (this._mAttributes.popover) {\n\t\t\tdelete this._mAttributes.popover; // The \"popover\" attribute will be managed externally, don't let Patcher remove it\n\t\t}\n\t\treturn origOpenEnd.apply(this);\n\t};\n};\n\nexport default patchPatcher;\nexport type { OpenUI5Patcher };\n"]}
@@ -1,4 +1,4 @@
1
- type Element = {
1
+ type Control = {
2
2
  getDomRef: () => HTMLElement | null;
3
3
  };
4
4
  type OpenUI5Popup = {
@@ -6,7 +6,7 @@ type OpenUI5Popup = {
6
6
  open: (...args: any[]) => void;
7
7
  _closed: (...args: any[]) => void;
8
8
  getOpenState: () => "CLOSED" | "CLOSING" | "OPEN" | "OPENING";
9
- getContent: () => Element;
9
+ getContent: () => Control | HTMLElement | null;
10
10
  onFocusEvent: (e: FocusEvent) => void;
11
11
  };
12
12
  };
@@ -17,7 +17,7 @@ const patchOpen = (Popup) => {
17
17
  if (openingInitiated && topLayerAlreadyInUse) {
18
18
  const element = this.getContent();
19
19
  if (element) {
20
- const domRef = element.getDomRef();
20
+ const domRef = element instanceof HTMLElement ? element : element?.getDomRef();
21
21
  if (domRef) {
22
22
  openNativePopover(domRef);
23
23
  }
@@ -29,7 +29,7 @@ const patchClosed = (Popup) => {
29
29
  const _origClosed = Popup.prototype._closed;
30
30
  Popup.prototype._closed = function _closed(...args) {
31
31
  const element = this.getContent();
32
- const domRef = element.getDomRef();
32
+ const domRef = element instanceof HTMLElement ? element : element?.getDomRef();
33
33
  _origClosed.apply(this, args); // only then call _close
34
34
  if (domRef) {
35
35
  closeNativePopover(domRef); // unset the popover attribute and close the native popover, but only if still in DOM
@@ -1 +1 @@
1
- {"version":3,"file":"patchPopup.js","sourceRoot":"","sources":["../../src/features/patchPopup.ts"],"names":[],"mappings":"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","sourcesContent":["// OpenUI5's Element.js subset\ntype Element = {\n\tgetDomRef: () => HTMLElement | null,\n}\n\n// The lifecycle of Popup.js is open -> _opened -> close -> _closed, we're interested in the first (open) and last (_closed)\ntype OpenUI5Popup = {\n\tprototype: {\n\t\topen: (...args: any[]) => void,\n\t\t_closed: (...args: any[]) => void,\n\t\tgetOpenState: () => \"CLOSED\" | \"CLOSING\" | \"OPEN\" | \"OPENING\",\n\t\tgetContent: () => Element, // this is the OpenUI5 Element/Control instance that opens the Popup (usually sap.m.Popover/sap.m.Dialog)\n\t\tonFocusEvent: (e: FocusEvent) => void,\n\t}\n};\n\nconst openNativePopover = (domRef: HTMLElement) => {\n\tdomRef.setAttribute(\"popover\", \"manual\");\n\tdomRef.showPopover();\n};\n\nconst closeNativePopover = (domRef: HTMLElement) => {\n\tif (domRef.hasAttribute(\"popover\")) {\n\t\tdomRef.hidePopover();\n\t\tdomRef.removeAttribute(\"popover\");\n\t}\n};\n\nconst patchOpen = (Popup: OpenUI5Popup) => {\n\tconst origOpen = Popup.prototype.open;\n\tPopup.prototype.open = function open(...args: any[]) {\n\t\torigOpen.apply(this, args); // call open first to initiate opening\n\t\tconst topLayerAlreadyInUse = !!document.body.querySelector(\":popover-open\"); // check if there is already something in the top layer\n\t\tconst openingInitiated = [\"OPENING\", \"OPEN\"].includes(this.getOpenState());\n\t\tif (openingInitiated && topLayerAlreadyInUse) {\n\t\t\tconst element = this.getContent();\n\t\t\tif (element) {\n\t\t\t\tconst domRef = element.getDomRef();\n\t\t\t\tif (domRef) {\n\t\t\t\t\topenNativePopover(domRef);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n};\n\nconst patchClosed = (Popup: OpenUI5Popup) => {\n\tconst _origClosed = Popup.prototype._closed;\n\tPopup.prototype._closed = function _closed(...args: any[]) {\n\t\tconst element = this.getContent();\n\t\tconst domRef = element.getDomRef();\n\t\t_origClosed.apply(this, args); // only then call _close\n\t\tif (domRef) {\n\t\t\tcloseNativePopover(domRef); // unset the popover attribute and close the native popover, but only if still in DOM\n\t\t}\n\t};\n};\n\nconst patchFocusEvent = (Popup: OpenUI5Popup) => {\n\tconst origFocusEvent = Popup.prototype.onFocusEvent;\n\tPopup.prototype.onFocusEvent = function onFocusEvent(e: FocusEvent) {\n\t\tconst isTypeFocus = e.type === \"focus\" || e.type === \"activate\";\n\t\tconst target = e.target as HTMLElement;\n\t\tif (!isTypeFocus || !target.closest(\"[ui5-popover],[ui5-responsive-popover],[ui5-dialog]\")) {\n\t\t\torigFocusEvent.call(this, e);\n\t\t}\n\t};\n};\n\nconst createGlobalStyles = () => {\n\tconst stylesheet = new CSSStyleSheet();\n\tstylesheet.replaceSync(`.sapMPopup-CTX:popover-open { inset: unset; }`);\n\tdocument.adoptedStyleSheets = [...document.adoptedStyleSheets, stylesheet];\n};\n\nconst patchPopup = (Popup: OpenUI5Popup) => {\n\tpatchOpen(Popup); // Popup.prototype.open\n\tpatchClosed(Popup); // Popup.prototype._closed\n\tcreateGlobalStyles(); // Ensures correct popover positioning by OpenUI5 (otherwise 0,0 is the center of the screen)\n\tpatchFocusEvent(Popup);// Popup.prototype.onFocusEvent\n};\n\nexport default patchPopup;\nexport type { OpenUI5Popup };\n"]}
1
+ {"version":3,"file":"patchPopup.js","sourceRoot":"","sources":["../../src/features/patchPopup.ts"],"names":[],"mappings":"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","sourcesContent":["// OpenUI5's Control.js subset\ntype Control = {\n\tgetDomRef: () => HTMLElement | null,\n}\n\n// The lifecycle of Popup.js is open -> _opened -> close -> _closed, we're interested in the first (open) and last (_closed)\ntype OpenUI5Popup = {\n\tprototype: {\n\t\topen: (...args: any[]) => void,\n\t\t_closed: (...args: any[]) => void,\n\t\tgetOpenState: () => \"CLOSED\" | \"CLOSING\" | \"OPEN\" | \"OPENING\",\n\t\tgetContent: () => Control | HTMLElement | null, // this is the OpenUI5 Element/Control instance that opens the Popup (usually sap.m.Popover/sap.m.Dialog)\n\t\tonFocusEvent: (e: FocusEvent) => void,\n\t}\n};\n\nconst openNativePopover = (domRef: HTMLElement) => {\n\tdomRef.setAttribute(\"popover\", \"manual\");\n\tdomRef.showPopover();\n};\n\nconst closeNativePopover = (domRef: HTMLElement) => {\n\tif (domRef.hasAttribute(\"popover\")) {\n\t\tdomRef.hidePopover();\n\t\tdomRef.removeAttribute(\"popover\");\n\t}\n};\n\nconst patchOpen = (Popup: OpenUI5Popup) => {\n\tconst origOpen = Popup.prototype.open;\n\tPopup.prototype.open = function open(...args: any[]) {\n\t\torigOpen.apply(this, args); // call open first to initiate opening\n\t\tconst topLayerAlreadyInUse = !!document.body.querySelector(\":popover-open\"); // check if there is already something in the top layer\n\t\tconst openingInitiated = [\"OPENING\", \"OPEN\"].includes(this.getOpenState());\n\t\tif (openingInitiated && topLayerAlreadyInUse) {\n\t\t\tconst element = this.getContent();\n\t\t\tif (element) {\n\t\t\t\tconst domRef = element instanceof HTMLElement ? element : element?.getDomRef();\n\t\t\t\tif (domRef) {\n\t\t\t\t\topenNativePopover(domRef);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n};\n\nconst patchClosed = (Popup: OpenUI5Popup) => {\n\tconst _origClosed = Popup.prototype._closed;\n\tPopup.prototype._closed = function _closed(...args: any[]) {\n\t\tconst element = this.getContent();\n\t\tconst domRef = element instanceof HTMLElement ? element : element?.getDomRef();\n\t\t_origClosed.apply(this, args); // only then call _close\n\t\tif (domRef) {\n\t\t\tcloseNativePopover(domRef); // unset the popover attribute and close the native popover, but only if still in DOM\n\t\t}\n\t};\n};\n\nconst patchFocusEvent = (Popup: OpenUI5Popup) => {\n\tconst origFocusEvent = Popup.prototype.onFocusEvent;\n\tPopup.prototype.onFocusEvent = function onFocusEvent(e: FocusEvent) {\n\t\tconst isTypeFocus = e.type === \"focus\" || e.type === \"activate\";\n\t\tconst target = e.target as HTMLElement;\n\t\tif (!isTypeFocus || !target.closest(\"[ui5-popover],[ui5-responsive-popover],[ui5-dialog]\")) {\n\t\t\torigFocusEvent.call(this, e);\n\t\t}\n\t};\n};\n\nconst createGlobalStyles = () => {\n\tconst stylesheet = new CSSStyleSheet();\n\tstylesheet.replaceSync(`.sapMPopup-CTX:popover-open { inset: unset; }`);\n\tdocument.adoptedStyleSheets = [...document.adoptedStyleSheets, stylesheet];\n};\n\nconst patchPopup = (Popup: OpenUI5Popup) => {\n\tpatchOpen(Popup); // Popup.prototype.open\n\tpatchClosed(Popup); // Popup.prototype._closed\n\tcreateGlobalStyles(); // Ensures correct popover positioning by OpenUI5 (otherwise 0,0 is the center of the screen)\n\tpatchFocusEvent(Popup);// Popup.prototype.onFocusEvent\n};\n\nexport default patchPopup;\nexport type { OpenUI5Popup };\n"]}
@@ -1,11 +1,11 @@
1
1
  const VersionInfo = {
2
- version: "2.3.0-rc.2",
2
+ version: "2.3.0",
3
3
  major: 2,
4
4
  minor: 3,
5
5
  patch: 0,
6
- suffix: "-rc.2",
6
+ suffix: "",
7
7
  isNext: false,
8
- buildTime: 1726733301,
8
+ buildTime: 1727888399,
9
9
  };
10
10
  export default VersionInfo;
11
11
  //# sourceMappingURL=VersionInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VersionInfo.js","sourceRoot":"","sources":["../../src/generated/VersionInfo.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IACnB,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,UAAU;CACrB,CAAC;AACF,eAAe,WAAW,CAAC","sourcesContent":["const VersionInfo = {\n\tversion: \"2.3.0-rc.2\",\n\tmajor: 2,\n\tminor: 3,\n\tpatch: 0,\n\tsuffix: \"-rc.2\",\n\tisNext: false,\n\tbuildTime: 1726733301,\n};\nexport default VersionInfo;"]}
1
+ {"version":3,"file":"VersionInfo.js","sourceRoot":"","sources":["../../src/generated/VersionInfo.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IACnB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,UAAU;CACrB,CAAC;AACF,eAAe,WAAW,CAAC","sourcesContent":["const VersionInfo = {\n\tversion: \"2.3.0\",\n\tmajor: 2,\n\tminor: 3,\n\tpatch: 0,\n\tsuffix: \"\",\n\tisNext: false,\n\tbuildTime: 1727888399,\n};\nexport default VersionInfo;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"getSharedResource.js","sourceRoot":"","sources":["../src/getSharedResource.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,MAAM,uCAAuC,CAAC;AAEhF,MAAM,YAAY,GAAG,GAAG,EAAE;IACzB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAChD,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,4DAA4D;IAC5F,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,GAAmB,EAAE;IACvD,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;QACpC,OAAO,IAAI,CAAC;KACZ;IACD,OAAO,2BAA2B,CAAC,mCAAmC,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AACtG,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAG,CAAI,SAAiB,EAAE,YAAe,EAAK,EAAE;IACtE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,OAAO,GAAG,0BAA0B,EAAyB,CAAC;IAElE,IAAI,CAAC,OAAO,EAAE;QACb,OAAO,YAAY,CAAC;KACpB;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YACzD,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C;QACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACxB;IAED,OAAO,OAAY,CAAC;AACrB,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["import getSingletonElementInstance from \"./util/getSingletonElementInstance.js\";\n\nconst getMetaDomEl = () => {\n\tconst el = document.createElement(\"meta\");\n\tel.setAttribute(\"name\", \"ui5-shared-resources\");\n\tel.setAttribute(\"content\", \"\"); // attribute \"content\" should be present when \"name\" is set.\n\treturn el;\n};\n\nconst getSharedResourcesInstance = (): Element | null => {\n\tif (typeof document === \"undefined\") {\n\t\treturn null;\n\t}\n\treturn getSingletonElementInstance(`meta[name=\"ui5-shared-resources\"]`, document.head, getMetaDomEl);\n};\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 \"body\" 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 = <T>(namespace: string, initialValue: T): T => {\n\tconst parts = namespace.split(\".\");\n\tlet current = getSharedResourcesInstance() as Record<string, any>;\n\n\tif (!current) {\n\t\treturn initialValue;\n\t}\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 as T;\n};\n\nexport default getSharedResource;\n"]}
1
+ {"version":3,"file":"getSharedResource.js","sourceRoot":"","sources":["../src/getSharedResource.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,MAAM,uCAAuC,CAAC;AAEhF,MAAM,YAAY,GAAG,GAAG,EAAE;IACzB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAChD,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,4DAA4D;IAC5F,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,GAAmB,EAAE;IACvD,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,2BAA2B,CAAC,mCAAmC,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AACtG,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAG,CAAI,SAAiB,EAAE,YAAe,EAAK,EAAE;IACtE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,OAAO,GAAG,0BAA0B,EAAyB,CAAC;IAElE,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,YAAY,CAAC;IACrB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,OAAY,CAAC;AACrB,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["import getSingletonElementInstance from \"./util/getSingletonElementInstance.js\";\n\nconst getMetaDomEl = () => {\n\tconst el = document.createElement(\"meta\");\n\tel.setAttribute(\"name\", \"ui5-shared-resources\");\n\tel.setAttribute(\"content\", \"\"); // attribute \"content\" should be present when \"name\" is set.\n\treturn el;\n};\n\nconst getSharedResourcesInstance = (): Element | null => {\n\tif (typeof document === \"undefined\") {\n\t\treturn null;\n\t}\n\treturn getSingletonElementInstance(`meta[name=\"ui5-shared-resources\"]`, document.head, getMetaDomEl);\n};\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 \"body\" 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 = <T>(namespace: string, initialValue: T): T => {\n\tconst parts = namespace.split(\".\");\n\tlet current = getSharedResourcesInstance() as Record<string, any>;\n\n\tif (!current) {\n\t\treturn initialValue;\n\t}\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 as T;\n};\n\nexport default getSharedResource;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"i18nBundle.js","sourceRoot":"","sources":["../src/i18nBundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,aAAa,MAAM,yBAAyB,CAAC;AAEpD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE1D,IAAI,mBAAqC,CAAC;AAS1C;;;GAGG;AACH,MAAM,UAAU;IAGf,YAAY,WAAmB;QAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,OAA0B,EAAE,GAAG,MAA8B;QACpE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAChC,OAAO,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;SACjD;QAED,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAC7B,OAAO,EAAE,CAAC;SACV;QAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACnC,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,GAAG,8DAA8D,CAAC,CAAC;SAC/F;QACD,MAAM,WAAW,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;QAE/G,OAAO,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;CACD;AAED;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,CAAC,WAAmB,EAAc,EAAE;IAC7D,IAAI,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QACzC,OAAO,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;KAC7C;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAC/C,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACjD,OAAO,UAAU,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,aAAa,GAAG,KAAK,EAAE,WAAmB,EAAuB,EAAE;IACxE,IAAI,mBAAmB,EAAE;QACxB,OAAO,mBAAmB,CAAC,WAAW,CAAC,CAAC;KACxC;IAED,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IACnC,OAAO,iBAAiB,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,8BAA8B,GAAG,CAAC,SAA2B,EAAQ,EAAE;IAC5E,mBAAmB,GAAG,SAAS,CAAC;AACjC,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC;AAE1B,OAAO,EACN,kBAAkB,EAClB,aAAa,EACb,8BAA8B,GAC9B,CAAC","sourcesContent":["import { registerI18nLoader, fetchI18nBundle, getI18nBundleData } from \"./asset-registries/i18n.js\";\nimport formatMessage from \"./util/formatMessage.js\";\n\nconst I18nBundleInstances = new Map<string, I18nBundle>();\n\nlet customGetI18nBundle: I18nBundleGetter;\n\ntype I18nText = {\n\tkey: string,\n\tdefaultText: string,\n};\n\ntype I18nBundleGetter = (packageName: string) => Promise<I18nBundle>;\n\n/**\n * @class\n * @public\n */\nclass I18nBundle {\n\tpackageName: string;\n\n\tconstructor(packageName: string) {\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 textObj key/defaultText pair or just the key\n\t * @param params Values for the placeholders\n\t */\n\tgetText(textObj: I18nText | string, ...params: Array<number | string>): string {\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\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(`Key ${textObj.key} not found in the i18n bundle, the default text will be used`);\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\n/**\n * Returns the I18nBundle instance for the given package synchronously.\n *\n * @public\n * @param packageName\n */\nconst getI18nBundleSync = (packageName: string): I18nBundle => {\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 * Fetches and returns the I18nBundle instance for the given package.\n *\n * @public\n * @param packageName\n */\nconst getI18nBundle = async (packageName: string): Promise<I18nBundle> => {\n\tif (customGetI18nBundle) {\n\t\treturn customGetI18nBundle(packageName);\n\t}\n\n\tawait fetchI18nBundle(packageName);\n\treturn getI18nBundleSync(packageName);\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: I18nBundleGetter): void => {\n\tcustomGetI18nBundle = customGet;\n};\n\nexport default I18nBundle;\n\nexport {\n\tregisterI18nLoader,\n\tgetI18nBundle,\n\tregisterCustomI18nBundleGetter,\n};\n\nexport type {\n\tI18nText,\n};\n"]}
1
+ {"version":3,"file":"i18nBundle.js","sourceRoot":"","sources":["../src/i18nBundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,aAAa,MAAM,yBAAyB,CAAC;AAEpD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE1D,IAAI,mBAAqC,CAAC;AAS1C;;;GAGG;AACH,MAAM,UAAU;IAGf,YAAY,WAAmB;QAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,OAA0B,EAAE,GAAG,MAA8B;QACpE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACX,CAAC;QAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,GAAG,8DAA8D,CAAC,CAAC;QAChG,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;QAE/G,OAAO,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;CACD;AAED;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,CAAC,WAAmB,EAAc,EAAE;IAC7D,IAAI,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1C,OAAO,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;IAC9C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAC/C,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACjD,OAAO,UAAU,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,aAAa,GAAG,KAAK,EAAE,WAAmB,EAAuB,EAAE;IACxE,IAAI,mBAAmB,EAAE,CAAC;QACzB,OAAO,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IACnC,OAAO,iBAAiB,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,8BAA8B,GAAG,CAAC,SAA2B,EAAQ,EAAE;IAC5E,mBAAmB,GAAG,SAAS,CAAC;AACjC,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC;AAE1B,OAAO,EACN,kBAAkB,EAClB,aAAa,EACb,8BAA8B,GAC9B,CAAC","sourcesContent":["import { registerI18nLoader, fetchI18nBundle, getI18nBundleData } from \"./asset-registries/i18n.js\";\nimport formatMessage from \"./util/formatMessage.js\";\n\nconst I18nBundleInstances = new Map<string, I18nBundle>();\n\nlet customGetI18nBundle: I18nBundleGetter;\n\ntype I18nText = {\n\tkey: string,\n\tdefaultText: string,\n};\n\ntype I18nBundleGetter = (packageName: string) => Promise<I18nBundle>;\n\n/**\n * @class\n * @public\n */\nclass I18nBundle {\n\tpackageName: string;\n\n\tconstructor(packageName: string) {\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 textObj key/defaultText pair or just the key\n\t * @param params Values for the placeholders\n\t */\n\tgetText(textObj: I18nText | string, ...params: Array<number | string>): string {\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\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(`Key ${textObj.key} not found in the i18n bundle, the default text will be used`);\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\n/**\n * Returns the I18nBundle instance for the given package synchronously.\n *\n * @public\n * @param packageName\n */\nconst getI18nBundleSync = (packageName: string): I18nBundle => {\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 * Fetches and returns the I18nBundle instance for the given package.\n *\n * @public\n * @param packageName\n */\nconst getI18nBundle = async (packageName: string): Promise<I18nBundle> => {\n\tif (customGetI18nBundle) {\n\t\treturn customGetI18nBundle(packageName);\n\t}\n\n\tawait fetchI18nBundle(packageName);\n\treturn getI18nBundleSync(packageName);\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: I18nBundleGetter): void => {\n\tcustomGetI18nBundle = customGet;\n};\n\nexport default I18nBundle;\n\nexport {\n\tregisterI18nLoader,\n\tgetI18nBundle,\n\tregisterCustomI18nBundleGetter,\n};\n\nexport type {\n\tI18nText,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Locale.js","sourceRoot":"","sources":["../../src/locale/Locale.ts"],"names":[],"mappings":"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","sourcesContent":["import { DEFAULT_LANGUAGE } from \"../generated/AssetParameters.js\";\n\nconst 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\tsLocaleId: string;\n\tsLanguage: string;\n\tsScript: string;\n\tsRegion: string;\n\tsVariant: string | null;\n\tsExtension: string | null;\n\tsPrivateUse: string | null;\n\n\tconstructor(sLocaleId: string) {\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] || DEFAULT_LANGUAGE;\n\t\tthis.sScript = aResult[2] || \"\";\n\t\tthis.sRegion = aResult[3] || \"\";\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: string) {\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"]}
1
+ {"version":3,"file":"Locale.js","sourceRoot":"","sources":["../../src/locale/Locale.ts"],"names":[],"mappings":"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","sourcesContent":["import { DEFAULT_LANGUAGE } from \"../generated/AssetParameters.js\";\n\nconst 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\tsLocaleId: string;\n\tsLanguage: string;\n\tsScript: string;\n\tsRegion: string;\n\tsVariant: string | null;\n\tsExtension: string | null;\n\tsPrivateUse: string | null;\n\n\tconstructor(sLocaleId: string) {\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] || DEFAULT_LANGUAGE;\n\t\tthis.sScript = aResult[2] || \"\";\n\t\tthis.sRegion = aResult[3] || \"\";\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: string) {\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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"getEffectiveDir.js","sourceRoot":"","sources":["../../src/locale/getEffectiveDir.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,CAAC,OAAoB,EAAiB,EAAE;IAC/D,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QACjC,OAAO,KAAK,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["const getEffectiveDir = (element: HTMLElement): \"rtl\" | \"ltr\" => {\n\tif (element.matches(\":dir(rtl)\")) {\n\t\treturn \"rtl\";\n\t}\n\n\treturn \"ltr\";\n};\n\nexport default getEffectiveDir;\n"]}
1
+ {"version":3,"file":"getEffectiveDir.js","sourceRoot":"","sources":["../../src/locale/getEffectiveDir.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,CAAC,OAAoB,EAAiB,EAAE;IAC/D,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["const getEffectiveDir = (element: HTMLElement): \"rtl\" | \"ltr\" => {\n\tif (element.matches(\":dir(rtl)\")) {\n\t\treturn \"rtl\";\n\t}\n\n\treturn \"ltr\";\n};\n\nexport default getEffectiveDir;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"getLocale.js","sourceRoot":"","sources":["../../src/locale/getLocale.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;AAExC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE;IAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACrB,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;KAClC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,EAAE;IAC9C,IAAI;QACH,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACrC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;SAC/B;KACD;IAAC,OAAO,CAAC,EAAE;QACX,SAAS;KACT;IAED,OAAO,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,SAAS,GAAG,CAAC,IAAa,EAAU,EAAE;IAC3C,IAAI,IAAI,EAAE;QACT,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;KACnC;IAED,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,IAAI,cAAc,EAAE;QACnB,OAAO,iBAAiB,CAAC,cAAc,CAAC,CAAC;KACzC;IAED,OAAO,qBAAqB,CAAC,uBAAuB,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["import detectNavigatorLanguage from \"../util/detectNavigatorLanguage.js\";\nimport { getLanguage as getConfigLanguage } from \"../config/Language.js\";\nimport Locale from \"./Locale.js\";\nimport { DEFAULT_LOCALE } from \"../generated/AssetParameters.js\";\n\nconst cache = new Map<string, Locale>();\n\nconst getLocaleInstance = (lang: string) => {\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: string) => {\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\treturn new Locale(DEFAULT_LOCALE);\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?: string): Locale => {\n\tif (lang) {\n\t\treturn convertToLocaleOrNull(lang);\n\t}\n\n\tconst configLanguage = getConfigLanguage();\n\n\tif (configLanguage) {\n\t\treturn getLocaleInstance(configLanguage);\n\t}\n\n\treturn convertToLocaleOrNull(detectNavigatorLanguage());\n};\n\nexport default getLocale;\n"]}
1
+ {"version":3,"file":"getLocale.js","sourceRoot":"","sources":["../../src/locale/getLocale.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;AAExC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE;IAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,EAAE;IAC9C,IAAI,CAAC;QACJ,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,SAAS;IACV,CAAC;IAED,OAAO,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,SAAS,GAAG,CAAC,IAAa,EAAU,EAAE;IAC3C,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,IAAI,cAAc,EAAE,CAAC;QACpB,OAAO,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,qBAAqB,CAAC,uBAAuB,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["import detectNavigatorLanguage from \"../util/detectNavigatorLanguage.js\";\nimport { getLanguage as getConfigLanguage } from \"../config/Language.js\";\nimport Locale from \"./Locale.js\";\nimport { DEFAULT_LOCALE } from \"../generated/AssetParameters.js\";\n\nconst cache = new Map<string, Locale>();\n\nconst getLocaleInstance = (lang: string) => {\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: string) => {\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\treturn new Locale(DEFAULT_LOCALE);\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?: string): Locale => {\n\tif (lang) {\n\t\treturn convertToLocaleOrNull(lang);\n\t}\n\n\tconst configLanguage = getConfigLanguage();\n\n\tif (configLanguage) {\n\t\treturn getLocaleInstance(configLanguage);\n\t}\n\n\treturn convertToLocaleOrNull(detectNavigatorLanguage());\n};\n\nexport default getLocale;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"nextFallbackLocale.js","sourceRoot":"","sources":["../../src/locale/nextFallbackLocale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,EAAE;IAC7C,IAAI,CAAC,MAAM,EAAE;QACZ,OAAO,cAAc,CAAC;KACtB;IAED,IAAI,MAAM,KAAK,OAAO,EAAE;QACvB,OAAO,OAAO,CAAC;KACf;IAED,iFAAiF;IACjF,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,EAAE;QACX,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC1B;IAED,2HAA2H;IAC3H,OAAO,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["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: string) => {\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"]}
1
+ {"version":3,"file":"nextFallbackLocale.js","sourceRoot":"","sources":["../../src/locale/nextFallbackLocale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,EAAE;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,iFAAiF;IACjF,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,2HAA2H;IAC3H,OAAO,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["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: string) => {\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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"normalizeLocale.js","sourceRoot":"","sources":["../../src/locale/normalizeLocale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,WAAW,GAAG,4MAA4M,CAAC;AACjO,MAAM,wBAAwB,GAAG,gCAAgC,CAAC;AAElE,wDAAwD;AACxD,MAAM,mBAAmB,GAAG;IAC3B,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACV,CAAC;AAEF;;;;GAIG;AACH,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,EAAE;IAC1C,IAAI,CAAC,CAAC;IAEN,IAAI,CAAC,MAAM,EAAE;QACZ,OAAO,cAAc,CAAC;KACtB;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAC,yBAAyB;QAC9G,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACnD,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACrD,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvB,QAAQ,GAAG,mBAAmB,CAAC,QAA4C,CAAC,IAAI,QAAQ,CAAC;QAEzF,6EAA6E;QAC7E,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,yBAAyB;YAC1F,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAC,yBAAyB;YACvF,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,8CAA8C;SACpF;QAED,wFAAwF;QACxF,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YACjC,IAAI,MAAM,KAAK,MAAM,EAAE;gBACtB,MAAM,GAAG,IAAI,CAAC;aACd;iBAAM,IAAI,MAAM,KAAK,MAAM,EAAE;gBAC7B,MAAM,GAAG,IAAI,CAAC;aACd;SACD;QAED,OAAO,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB;KAC9H;IAED,OAAO,cAAc,CAAC;AACvB,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["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\"nb\": \"no\",\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: string) => {\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 as keyof typeof M_ISO639_NEW_TO_OLD] || 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\treturn DEFAULT_LOCALE;\n};\n\nexport default normalizeLocale;\n"]}
1
+ {"version":3,"file":"normalizeLocale.js","sourceRoot":"","sources":["../../src/locale/normalizeLocale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,WAAW,GAAG,4MAA4M,CAAC;AACjO,MAAM,wBAAwB,GAAG,gCAAgC,CAAC;AAElE,wDAAwD;AACxD,MAAM,mBAAmB,GAAG;IAC3B,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACV,CAAC;AAEF;;;;GAIG;AACH,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,EAAE;IAC1C,IAAI,CAAC,CAAC;IAEN,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA,yBAAyB;QAC9G,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACnD,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACrD,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvB,QAAQ,GAAG,mBAAmB,CAAC,QAA4C,CAAC,IAAI,QAAQ,CAAC;QAEzF,6EAA6E;QAC7E,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,yBAAyB;YAC1F,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA,yBAAyB;YACvF,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,8CAA8C;QACrF,CAAC;QAED,wFAAwF;QACxF,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACvB,MAAM,GAAG,IAAI,CAAC;YACf,CAAC;iBAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9B,MAAM,GAAG,IAAI,CAAC;YACf,CAAC;QACF,CAAC;QAED,OAAO,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB;IAC/H,CAAC;IAED,OAAO,cAAc,CAAC;AACvB,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["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\"nb\": \"no\",\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: string) => {\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 as keyof typeof M_ISO639_NEW_TO_OLD] || 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\treturn DEFAULT_LOCALE;\n};\n\nexport default normalizeLocale;\n"]}
package/dist/prod/Boot.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";import d from"./util/whenDOMReady.js";import u from"./EventProvider.js";import v from"./FontFace.js";import c from"./SystemCSSVars.js";import{getTheme as i}from"./config/Theme.js";import p from"./theming/applyTheme.js";import{registerCurrentRuntime as y}from"./Runtimes.js";import{getFeature as a}from"./FeaturesRegistry.js";import{attachThemeRegistered as g}from"./theming/ThemeRegistered.js";let o=!1,r;const m=new u,h=()=>o,P=e=>{if(!o){m.attachEvent("boot",e);return}e()},l=async()=>{if(r!==void 0)return r;const e=async n=>{if(y(),typeof document>"u"){n();return}g(S);const t=a("OpenUI5Support"),f=t?t.isOpenUI5Detected():!1,s=a("F6Navigation");t&&await t.init(),s&&!f&&s.init(),await d(),await p(i()),t&&t.attachListeners(),v(),c(),n(),o=!0,m.fireEvent("boot")};return r=new Promise(e),r},S=e=>{o&&e===i()&&p(i())};export{l as boot,P as attachBoot,h as isBooted};
1
+ "use strict";import d from"./util/whenDOMReady.js";import v from"./EventProvider.js";import c from"./FontFace.js";import u from"./SystemCSSVars.js";import{getTheme as i}from"./config/Theme.js";import a from"./theming/applyTheme.js";import{registerCurrentRuntime as y}from"./Runtimes.js";import{getFeature as m}from"./FeaturesRegistry.js";import{attachThemeRegistered as g}from"./theming/ThemeRegistered.js";import S from"./util/fixSafariActiveState.js";let o=!1,r;const p=new v,h=()=>o,P=e=>{if(!o){p.attachEvent("boot",e);return}e()},l=async()=>{if(r!==void 0)return r;const e=async n=>{if(y(),typeof document>"u"){n();return}g(b);const t=m("OpenUI5Support"),f=t?t.isOpenUI5Detected():!1,s=m("F6Navigation");t&&await t.init(),s&&!f&&s.init(),await d(),await a(i()),t&&t.attachListeners(),c(),u(),S(),n(),o=!0,p.fireEvent("boot")};return r=new Promise(e),r},b=e=>{o&&e===i()&&a(i())};export{l as boot,P as attachBoot,h as isBooted};
2
2
  //# sourceMappingURL=Boot.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/Boot.ts"],
4
- "sourcesContent": ["import whenDOMReady from \"./util/whenDOMReady.js\";\nimport EventProvider from \"./EventProvider.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\";\nimport type OpenUI5Support from \"./features/OpenUI5Support.js\";\nimport type F6Navigation from \"./features/F6Navigation.js\";\nimport type { PromiseResolve } from \"./types.js\";\nimport { attachThemeRegistered } from \"./theming/ThemeRegistered.js\";\n\nlet booted = false;\nlet bootPromise: Promise<void>;\nconst eventProvider = new EventProvider<void, void>();\n\nconst isBooted = (): boolean => {\n\treturn booted;\n};\n\n/**\n * Attaches a callback that will be executed after boot finishes.\n * **Note:** If the framework already booted, the callback will be immediately executed.\n * @public\n * @param { Function } listener\n */\nconst attachBoot = (listener: () => void) => {\n\tif (!booted) {\n\t\teventProvider.attachEvent(\"boot\", listener);\n\t\treturn;\n\t}\n\n\tlistener();\n};\n\nconst boot = async (): Promise<void> => {\n\tif (bootPromise !== undefined) {\n\t\treturn bootPromise;\n\t}\n\n\tconst bootExecutor = async (resolve: PromiseResolve) => {\n\t\tregisterCurrentRuntime();\n\n\t\tif (typeof document === \"undefined\") {\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\n\t\tattachThemeRegistered(onThemeRegistered);\n\n\t\tconst openUI5Support = getFeature<typeof OpenUI5Support>(\"OpenUI5Support\");\n\t\tconst isOpenUI5Loaded = openUI5Support ? openUI5Support.isOpenUI5Detected() : false;\n\t\tconst f6Navigation = getFeature<typeof F6Navigation>(\"F6Navigation\");\n\n\t\tif (openUI5Support) {\n\t\t\tawait openUI5Support.init();\n\t\t}\n\n\t\tif (f6Navigation && !isOpenUI5Loaded) {\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\n\t\tbooted = true;\n\t\teventProvider.fireEvent(\"boot\");\n\t};\n\n\tbootPromise = new Promise(bootExecutor as (resolve: PromiseResolve) => void);\n\treturn bootPromise;\n};\n\n/**\n * Callback, executed after theme properties registration\n * to apply the newly registered theme.\n * @private\n * @param { string } theme\n */\nconst onThemeRegistered = (theme: string) => {\n\tif (booted && theme === getTheme()) { // getTheme should only be called if \"booted\" is true\n\t\tapplyTheme(getTheme());\n\t}\n};\n\nexport {\n\tboot,\n\tattachBoot,\n\tisBooted,\n};\n"],
5
- "mappings": "aAAA,OAAOA,MAAkB,yBACzB,OAAOC,MAAmB,qBAC1B,OAAOC,MAAoB,gBAC3B,OAAOC,MAAyB,qBAChC,OAAS,YAAAC,MAAgB,oBACzB,OAAOC,MAAgB,0BACvB,OAAS,0BAAAC,MAA8B,gBACvC,OAAS,cAAAC,MAAkB,wBAI3B,OAAS,yBAAAC,MAA6B,+BAEtC,IAAIC,EAAS,GACTC,EACJ,MAAMC,EAAgB,IAAIV,EAEpBW,EAAW,IACTH,EASFI,EAAcC,GAAyB,CAC5C,GAAI,CAACL,EAAQ,CACZE,EAAc,YAAY,OAAQG,CAAQ,EAC1C,MACD,CAEAA,EAAS,CACV,EAEMC,EAAO,SAA2B,CACvC,GAAIL,IAAgB,OACnB,OAAOA,EAGR,MAAMM,EAAe,MAAOC,GAA4B,CAGvD,GAFAX,EAAuB,EAEnB,OAAO,SAAa,IAAa,CACpCW,EAAQ,EACR,MACD,CAEAT,EAAsBU,CAAiB,EAEvC,MAAMC,EAAiBZ,EAAkC,gBAAgB,EACnEa,EAAkBD,EAAiBA,EAAe,kBAAkB,EAAI,GACxEE,EAAed,EAAgC,cAAc,EAE/DY,GACH,MAAMA,EAAe,KAAK,EAGvBE,GAAgB,CAACD,GACpBC,EAAa,KAAK,EAGnB,MAAMrB,EAAa,EACnB,MAAMK,EAAWD,EAAS,CAAC,EAC3Be,GAAkBA,EAAe,gBAAgB,EACjDjB,EAAe,EACfC,EAAoB,EAEpBc,EAAQ,EAERR,EAAS,GACTE,EAAc,UAAU,MAAM,CAC/B,EAEA,OAAAD,EAAc,IAAI,QAAQM,CAAiD,EACpEN,CACR,EAQMQ,EAAqBI,GAAkB,CACxCb,GAAUa,IAAUlB,EAAS,GAChCC,EAAWD,EAAS,CAAC,CAEvB,EAEA,OACCW,KAAA,KACAF,KAAA,WACAD,KAAA",
6
- "names": ["whenDOMReady", "EventProvider", "insertFontFace", "insertSystemCSSVars", "getTheme", "applyTheme", "registerCurrentRuntime", "getFeature", "attachThemeRegistered", "booted", "bootPromise", "eventProvider", "isBooted", "attachBoot", "listener", "boot", "bootExecutor", "resolve", "onThemeRegistered", "openUI5Support", "isOpenUI5Loaded", "f6Navigation", "theme"]
4
+ "sourcesContent": ["import whenDOMReady from \"./util/whenDOMReady.js\";\nimport EventProvider from \"./EventProvider.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\";\nimport type OpenUI5Support from \"./features/OpenUI5Support.js\";\nimport type F6Navigation from \"./features/F6Navigation.js\";\nimport type { PromiseResolve } from \"./types.js\";\nimport { attachThemeRegistered } from \"./theming/ThemeRegistered.js\";\nimport fixSafariActiveState from \"./util/fixSafariActiveState.js\";\n\nlet booted = false;\nlet bootPromise: Promise<void>;\nconst eventProvider = new EventProvider<void, void>();\n\nconst isBooted = (): boolean => {\n\treturn booted;\n};\n\n/**\n * Attaches a callback that will be executed after boot finishes.\n * **Note:** If the framework already booted, the callback will be immediately executed.\n * @public\n * @param { Function } listener\n */\nconst attachBoot = (listener: () => void) => {\n\tif (!booted) {\n\t\teventProvider.attachEvent(\"boot\", listener);\n\t\treturn;\n\t}\n\n\tlistener();\n};\n\nconst boot = async (): Promise<void> => {\n\tif (bootPromise !== undefined) {\n\t\treturn bootPromise;\n\t}\n\n\tconst bootExecutor = async (resolve: PromiseResolve) => {\n\t\tregisterCurrentRuntime();\n\n\t\tif (typeof document === \"undefined\") {\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\n\t\tattachThemeRegistered(onThemeRegistered);\n\n\t\tconst openUI5Support = getFeature<typeof OpenUI5Support>(\"OpenUI5Support\");\n\t\tconst isOpenUI5Loaded = openUI5Support ? openUI5Support.isOpenUI5Detected() : false;\n\t\tconst f6Navigation = getFeature<typeof F6Navigation>(\"F6Navigation\");\n\n\t\tif (openUI5Support) {\n\t\t\tawait openUI5Support.init();\n\t\t}\n\n\t\tif (f6Navigation && !isOpenUI5Loaded) {\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\t\tfixSafariActiveState();\n\n\t\tresolve();\n\n\t\tbooted = true;\n\t\teventProvider.fireEvent(\"boot\");\n\t};\n\n\tbootPromise = new Promise(bootExecutor as (resolve: PromiseResolve) => void);\n\treturn bootPromise;\n};\n\n/**\n * Callback, executed after theme properties registration\n * to apply the newly registered theme.\n * @private\n * @param { string } theme\n */\nconst onThemeRegistered = (theme: string) => {\n\tif (booted && theme === getTheme()) { // getTheme should only be called if \"booted\" is true\n\t\tapplyTheme(getTheme());\n\t}\n};\n\nexport {\n\tboot,\n\tattachBoot,\n\tisBooted,\n};\n"],
5
+ "mappings": "aAAA,OAAOA,MAAkB,yBACzB,OAAOC,MAAmB,qBAC1B,OAAOC,MAAoB,gBAC3B,OAAOC,MAAyB,qBAChC,OAAS,YAAAC,MAAgB,oBACzB,OAAOC,MAAgB,0BACvB,OAAS,0BAAAC,MAA8B,gBACvC,OAAS,cAAAC,MAAkB,wBAI3B,OAAS,yBAAAC,MAA6B,+BACtC,OAAOC,MAA0B,iCAEjC,IAAIC,EAAS,GACTC,EACJ,MAAMC,EAAgB,IAAIX,EAEpBY,EAAW,IACTH,EASFI,EAAcC,GAAyB,CAC5C,GAAI,CAACL,EAAQ,CACZE,EAAc,YAAY,OAAQG,CAAQ,EAC1C,MACD,CAEAA,EAAS,CACV,EAEMC,EAAO,SAA2B,CACvC,GAAIL,IAAgB,OACnB,OAAOA,EAGR,MAAMM,EAAe,MAAOC,GAA4B,CAGvD,GAFAZ,EAAuB,EAEnB,OAAO,SAAa,IAAa,CACpCY,EAAQ,EACR,MACD,CAEAV,EAAsBW,CAAiB,EAEvC,MAAMC,EAAiBb,EAAkC,gBAAgB,EACnEc,EAAkBD,EAAiBA,EAAe,kBAAkB,EAAI,GACxEE,EAAef,EAAgC,cAAc,EAE/Da,GACH,MAAMA,EAAe,KAAK,EAGvBE,GAAgB,CAACD,GACpBC,EAAa,KAAK,EAGnB,MAAMtB,EAAa,EACnB,MAAMK,EAAWD,EAAS,CAAC,EAC3BgB,GAAkBA,EAAe,gBAAgB,EACjDlB,EAAe,EACfC,EAAoB,EACpBM,EAAqB,EAErBS,EAAQ,EAERR,EAAS,GACTE,EAAc,UAAU,MAAM,CAC/B,EAEA,OAAAD,EAAc,IAAI,QAAQM,CAAiD,EACpEN,CACR,EAQMQ,EAAqBI,GAAkB,CACxCb,GAAUa,IAAUnB,EAAS,GAChCC,EAAWD,EAAS,CAAC,CAEvB,EAEA,OACCY,KAAA,KACAF,KAAA,WACAD,KAAA",
6
+ "names": ["whenDOMReady", "EventProvider", "insertFontFace", "insertSystemCSSVars", "getTheme", "applyTheme", "registerCurrentRuntime", "getFeature", "attachThemeRegistered", "fixSafariActiveState", "booted", "bootPromise", "eventProvider", "isBooted", "attachBoot", "listener", "boot", "bootExecutor", "resolve", "onThemeRegistered", "openUI5Support", "isOpenUI5Loaded", "f6Navigation", "theme"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/FeaturesRegistry.ts"],
4
- "sourcesContent": ["import EventProvider from \"./EventProvider.js\";\nimport type UI5Element from \"./UI5Element.js\";\n\nabstract class ComponentFeature {\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars, no-empty-function\n\tconstructor(...args: any[]) {}\n\tstatic define?: () => Promise<void>;\n\tstatic dependencies?: Array<typeof UI5Element>\n}\n\nconst features = new Map<string, any>();\nconst componentFeatures = new Map<string, ComponentFeature>();\nconst subscribers = new Map<typeof UI5Element, Array<string>>();\n\nconst EVENT_NAME = \"componentFeatureLoad\";\nconst eventProvider = new EventProvider<undefined, void>();\n\nconst featureLoadEventName = (name: string) => `${EVENT_NAME}_${name}`;\n\nconst registerFeature = (name: string, feature: object) => {\n\tfeatures.set(name, feature);\n};\n\nconst getFeature = <T>(name: string): T => {\n\treturn features.get(name) as T;\n};\n\nconst registerComponentFeature = async (name: string, feature: typeof ComponentFeature) => {\n\tawait Promise.all(feature.dependencies?.map(dep => dep.define()) || []);\n\tawait feature.define?.();\n\n\tcomponentFeatures.set(name, feature);\n\tnotifyForFeatureLoad(name);\n};\n\nconst getComponentFeature = <T>(name: string): T => {\n\treturn componentFeatures.get(name) as T;\n};\n\nconst subscribeForFeatureLoad = (name: string, klass: typeof UI5Element, callback: () => void) => {\n\tconst subscriber = subscribers.get(klass);\n\tconst isSubscribed = subscriber?.includes(name);\n\n\tif (isSubscribed) {\n\t\treturn;\n\t}\n\n\tif (!subscriber) {\n\t\tsubscribers.set(klass, [name]);\n\t} else {\n\t\tsubscriber.push(name);\n\t}\n\n\teventProvider.attachEvent(featureLoadEventName(name), callback);\n};\n\nconst notifyForFeatureLoad = (name: string) => {\n\teventProvider.fireEvent(featureLoadEventName(name), undefined);\n};\n\nexport {\n\tregisterFeature,\n\tgetFeature,\n\tregisterComponentFeature,\n\tgetComponentFeature,\n\tsubscribeForFeatureLoad,\n\tComponentFeature,\n};\n"],
5
- "mappings": "aAAA,OAAOA,MAAmB,qBAG1B,MAAeC,CAAiB,CAE/B,eAAeC,EAAa,CAAC,CAG9B,CAEA,MAAMC,EAAW,IAAI,IACfC,EAAoB,IAAI,IACxBC,EAAc,IAAI,IAElBC,EAAa,uBACbC,EAAgB,IAAIP,EAEpBQ,EAAwBC,GAAiB,GAAGH,CAAU,IAAIG,CAAI,GAE9DC,EAAkB,CAACD,EAAcE,IAAoB,CAC1DR,EAAS,IAAIM,EAAME,CAAO,CAC3B,EAEMC,EAAiBH,GACfN,EAAS,IAAIM,CAAI,EAGnBI,EAA2B,MAAOJ,EAAcE,IAAqC,CAC1F,MAAM,QAAQ,IAAIA,EAAQ,cAAc,IAAIG,GAAOA,EAAI,OAAO,CAAC,GAAK,CAAC,CAAC,EACtE,MAAMH,EAAQ,SAAS,EAEvBP,EAAkB,IAAIK,EAAME,CAAO,EACnCI,EAAqBN,CAAI,CAC1B,EAEMO,EAA0BP,GACxBL,EAAkB,IAAIK,CAAI,EAG5BQ,EAA0B,CAACR,EAAcS,EAA0BC,IAAyB,CACjG,MAAMC,EAAaf,EAAY,IAAIa,CAAK,EACnBE,GAAY,SAASX,CAAI,IAMzCW,EAGJA,EAAW,KAAKX,CAAI,EAFpBJ,EAAY,IAAIa,EAAO,CAACT,CAAI,CAAC,EAK9BF,EAAc,YAAYC,EAAqBC,CAAI,EAAGU,CAAQ,EAC/D,EAEMJ,EAAwBN,GAAiB,CAC9CF,EAAc,UAAUC,EAAqBC,CAAI,EAAG,MAAS,CAC9D,EAEA,OACCC,KAAA,gBACAE,KAAA,WACAC,KAAA,yBACAG,KAAA,oBACAC,KAAA,wBACAhB,KAAA",
4
+ "sourcesContent": ["import EventProvider from \"./EventProvider.js\";\nimport type UI5Element from \"./UI5Element.js\";\n\nabstract class ComponentFeature {\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars, no-empty-function\n\tconstructor(...args: any[]) {}\n\n\t/**\n\t * @deprecated assign the feature's \"i18nBundle\" static member directly from the component that uses the feature\n\t */\n\tstatic define?: () => Promise<void>;\n\tstatic dependencies?: Array<typeof UI5Element>\n}\n\nconst features = new Map<string, any>();\nconst componentFeatures = new Map<string, ComponentFeature>();\nconst subscribers = new Map<typeof UI5Element, Array<string>>();\n\nconst EVENT_NAME = \"componentFeatureLoad\";\nconst eventProvider = new EventProvider<undefined, void>();\n\nconst featureLoadEventName = (name: string) => `${EVENT_NAME}_${name}`;\n\nconst registerFeature = (name: string, feature: object) => {\n\tfeatures.set(name, feature);\n};\n\nconst getFeature = <T>(name: string): T => {\n\treturn features.get(name) as T;\n};\n\nconst registerComponentFeature = async (name: string, feature: typeof ComponentFeature) => {\n\tawait Promise.all(feature.dependencies?.map(dep => dep.define()) || []);\n\tawait feature.define?.();\n\n\tcomponentFeatures.set(name, feature);\n\tnotifyForFeatureLoad(name);\n};\n\nconst getComponentFeature = <T>(name: string): T => {\n\treturn componentFeatures.get(name) as T;\n};\n\nconst subscribeForFeatureLoad = (name: string, klass: typeof UI5Element, callback: () => void) => {\n\tconst subscriber = subscribers.get(klass);\n\tconst isSubscribed = subscriber?.includes(name);\n\n\tif (isSubscribed) {\n\t\treturn;\n\t}\n\n\tif (!subscriber) {\n\t\tsubscribers.set(klass, [name]);\n\t} else {\n\t\tsubscriber.push(name);\n\t}\n\n\teventProvider.attachEvent(featureLoadEventName(name), callback);\n};\n\nconst notifyForFeatureLoad = (name: string) => {\n\teventProvider.fireEvent(featureLoadEventName(name), undefined);\n};\n\nexport {\n\tregisterFeature,\n\tgetFeature,\n\tregisterComponentFeature,\n\tgetComponentFeature,\n\tsubscribeForFeatureLoad,\n\tComponentFeature,\n};\n"],
5
+ "mappings": "aAAA,OAAOA,MAAmB,qBAG1B,MAAeC,CAAiB,CAE/B,eAAeC,EAAa,CAAC,CAO9B,CAEA,MAAMC,EAAW,IAAI,IACfC,EAAoB,IAAI,IACxBC,EAAc,IAAI,IAElBC,EAAa,uBACbC,EAAgB,IAAIP,EAEpBQ,EAAwBC,GAAiB,GAAGH,CAAU,IAAIG,CAAI,GAE9DC,EAAkB,CAACD,EAAcE,IAAoB,CAC1DR,EAAS,IAAIM,EAAME,CAAO,CAC3B,EAEMC,EAAiBH,GACfN,EAAS,IAAIM,CAAI,EAGnBI,EAA2B,MAAOJ,EAAcE,IAAqC,CAC1F,MAAM,QAAQ,IAAIA,EAAQ,cAAc,IAAIG,GAAOA,EAAI,OAAO,CAAC,GAAK,CAAC,CAAC,EACtE,MAAMH,EAAQ,SAAS,EAEvBP,EAAkB,IAAIK,EAAME,CAAO,EACnCI,EAAqBN,CAAI,CAC1B,EAEMO,EAA0BP,GACxBL,EAAkB,IAAIK,CAAI,EAG5BQ,EAA0B,CAACR,EAAcS,EAA0BC,IAAyB,CACjG,MAAMC,EAAaf,EAAY,IAAIa,CAAK,EACnBE,GAAY,SAASX,CAAI,IAMzCW,EAGJA,EAAW,KAAKX,CAAI,EAFpBJ,EAAY,IAAIa,EAAO,CAACT,CAAI,CAAC,EAK9BF,EAAc,YAAYC,EAAqBC,CAAI,EAAGU,CAAQ,EAC/D,EAEMJ,EAAwBN,GAAiB,CAC9CF,EAAc,UAAUC,EAAqBC,CAAI,EAAG,MAAS,CAC9D,EAEA,OACCC,KAAA,gBACAE,KAAA,WACAC,KAAA,yBACAG,KAAA,oBACAC,KAAA,wBACAhB,KAAA",
6
6
  "names": ["EventProvider", "ComponentFeature", "args", "features", "componentFeatures", "subscribers", "EVENT_NAME", "eventProvider", "featureLoadEventName", "name", "registerFeature", "feature", "getFeature", "registerComponentFeature", "dep", "notifyForFeatureLoad", "getComponentFeature", "subscribeForFeatureLoad", "klass", "callback", "subscriber"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";import"@ui5/webcomponents-base/dist/ssr-dom.js";import U from"./thirdparty/merge.js";import{boot as T}from"./Boot.js";import L from"./UI5ElementMetadata.js";import S from"./EventProvider.js";import F from"./updateShadowRoot.js";import{shouldIgnoreCustomElement as N}from"./IgnoreCustomElements.js";import{renderDeferred as V,renderImmediately as k,cancelRender as j}from"./Render.js";import{registerTag as $,isTagRegistered as x,recordTagRegistrationFailure as z}from"./CustomElementsRegistry.js";import{observeDOMNode as H,unobserveDOMNode as W}from"./DOMObserver.js";import{skipOriginalEvent as q}from"./config/NoConflict.js";import K from"./locale/getEffectiveDir.js";import{kebabToCamelCase as g,camelToKebabCase as B,kebabToPascalCase as G}from"./util/StringHelper.js";import w from"./util/isValidPropertyName.js";import{getSlotName as J,getSlottedNodesList as b}from"./util/SlotsHelper.js";import Q from"./util/arraysAreEqual.js";import{markAsRtlAware as X}from"./locale/RTLAwareRegistry.js";import Y from"./renderer/executeTemplate.js";import{updateFormValue as Z,setFormValue as P}from"./features/InputElementsFormSupport.js";import{getComponentFeature as tt,subscribeForFeatureLoad as et}from"./FeaturesRegistry.js";let nt=0;const R=new Map,M=new Map,D={fromAttribute(d,u){return u===Boolean?d!==null:u===Number?d===null?void 0:parseFloat(d):d},toAttribute(d,u){return u===Boolean?d?"":null:u===Object||u===Array||d==null?null:String(d)}};function y(d){this._suppressInvalidation||(this.onInvalidation(d),this._changedState.push(d),V(this),this._invalidationEventProvider.fireEvent("invalidate",{...d,target:this}))}function st(d,u){do{const t=Object.getOwnPropertyDescriptor(d,u);if(t)return t;d=Object.getPrototypeOf(d)}while(d&&d!==HTMLElement.prototype)}class I extends HTMLElement{constructor(){super();this._rendered=!1;const t=this.constructor;this._changedState=[],this._suppressInvalidation=!0,this._inDOM=!1,this._fullyConnected=!1,this._childChangeListeners=new Map,this._slotChangeListeners=new Map,this._invalidationEventProvider=new S,this._componentStateFinalizedEventProvider=new S;let e;this._domRefReadyPromise=new Promise(n=>{e=n}),this._domRefReadyPromise._deferredResolve=e,this._doNotSyncAttributes=new Set,this._slotsAssignedNodes=new WeakMap,this._state={...t.getMetadata().getInitialState()},this.initializedProperties=new Map,this.constructor.getMetadata().getPropertiesList().forEach(n=>{if(this.hasOwnProperty(n)){const o=this[n];this.initializedProperties.set(n,o)}}),this._internals=this.attachInternals(),this._initShadowRoot()}_initShadowRoot(){const t=this.constructor;if(t._needsShadowDOM()){const e={mode:"open"};this.attachShadow({...e,...t.getMetadata().getShadowRootOptions()}),t.getMetadata().slotsAreManaged()&&this.shadowRoot.addEventListener("slotchange",this._onShadowRootSlotChange.bind(this))}}_onShadowRootSlotChange(t){t.target?.getRootNode()===this.shadowRoot&&this._processChildren()}get _id(){return this.__id||(this.__id=`ui5wc_${++nt}`),this.__id}render(){const t=this.constructor.template;return Y(t,this)}async connectedCallback(){const t=this.constructor;this.setAttribute(t.getMetadata().getPureTag(),""),t.getMetadata().supportsF6FastNavigation()&&this.setAttribute("data-sap-ui-fastnavgroup","true");const e=t.getMetadata().slotsAreManaged();this._inDOM=!0,e&&(this._startObservingDOMChildren(),await this._processChildren()),this._inDOM&&(t.asyncFinished||await t.definePromise,k(this),this._domRefReadyPromise._deferredResolve(),this._fullyConnected=!0,this.onEnterDOM())}disconnectedCallback(){const e=this.constructor.getMetadata().slotsAreManaged();this._inDOM=!1,e&&this._stopObservingDOMChildren(),this._fullyConnected&&(this.onExitDOM(),this._fullyConnected=!1),this._domRefReadyPromise._deferredResolve(),j(this)}onBeforeRendering(){}onAfterRendering(){}onEnterDOM(){}onExitDOM(){}_startObservingDOMChildren(){const e=this.constructor.getMetadata();if(!e.hasSlots())return;const n=e.canSlotText(),o={childList:!0,subtree:n,characterData:n};H(this,this._processChildren.bind(this),o)}_stopObservingDOMChildren(){W(this)}async _processChildren(){this.constructor.getMetadata().hasSlots()&&await this._updateSlots()}async _updateSlots(){const t=this.constructor,e=t.getMetadata().getSlots(),s=t.getMetadata().canSlotText(),n=Array.from(s?this.childNodes:this.children),o=new Map,a=new Map;for(const[r,f]of Object.entries(e)){const c=f.propertyName||r;a.set(c,r),o.set(c,[...this._state[c]]),this._clearSlot(r,f)}const l=new Map,i=new Map,h=n.map(async(r,f)=>{const c=J(r),m=e[c];if(m===void 0){if(c!=="default"){const p=Object.keys(e).join(", ");console.warn(`Unknown slotName: ${c}, ignoring`,r,`Valid values are: ${p}`)}return}if(m.individualSlots){const p=(l.get(c)||0)+1;l.set(c,p),r._individualSlot=`${c}-${p}`}if(r instanceof HTMLElement){const p=r.localName;if(p.includes("-")&&!N(p)){if(!customElements.get(p)){const A=customElements.whenDefined(p);let E=R.get(p);E||(E=new Promise(O=>setTimeout(O,1e3)),R.set(p,E)),await Promise.race([A,E])}customElements.upgrade(r)}}if(r=t.getMetadata().constructor.validateSlotValue(r,m),v(r)&&m.invalidateOnChildChange){const p=this._getChildChangeListener(c);r.attachInvalidate.call(r,p)}r instanceof HTMLSlotElement&&this._attachSlotChange(r,c,!!m.invalidateOnChildChange);const C=m.propertyName||c;i.has(C)?i.get(C).push({child:r,idx:f}):i.set(C,[{child:r,idx:f}])});await Promise.all(h),i.forEach((r,f)=>{this._state[f]=r.sort((c,m)=>c.idx-m.idx).map(c=>c.child),this._state[g(f)]=this._state[f]});let _=!1;for(const[r,f]of Object.entries(e)){const c=f.propertyName||r;Q(o.get(c),this._state[c])||(y.call(this,{type:"slot",name:a.get(c),reason:"children"}),_=!0,t.getMetadata().isFormAssociated()&&P(this))}_||y.call(this,{type:"slot",name:"default",reason:"textcontent"})}_clearSlot(t,e){const s=e.propertyName||t;this._state[s].forEach(o=>{if(v(o)){const a=this._getChildChangeListener(t);o.detachInvalidate.call(o,a)}o instanceof HTMLSlotElement&&this._detachSlotChange(o,t)}),this._state[s]=[],this._state[g(s)]=this._state[s]}attachInvalidate(t){this._invalidationEventProvider.attachEvent("invalidate",t)}detachInvalidate(t){this._invalidationEventProvider.detachEvent("invalidate",t)}_onChildChange(t,e){this.constructor.getMetadata().shouldInvalidateOnChildChange(t,e.type,e.name)&&y.call(this,{type:"slot",name:t,reason:"childchange",child:e.target})}attributeChangedCallback(t,e,s){let n;if(this._doNotSyncAttributes.has(t))return;const o=this.constructor.getMetadata().getProperties(),a=t.replace(/^ui5-/,""),l=g(a);if(o.hasOwnProperty(l)){const i=o[l];n=(i.converter??D).fromAttribute(s,i.type),this[l]=n}}formAssociatedCallback(){this.constructor.getMetadata().isFormAssociated()&&Z(this)}static get formAssociated(){return this.getMetadata().isFormAssociated()}_updateAttribute(t,e){const s=this.constructor;if(!s.getMetadata().hasAttribute(t))return;const o=s.getMetadata().getProperties()[t],a=B(t),i=(o.converter||D).toAttribute(e,o.type);this._doNotSyncAttributes.add(a),i==null?this.removeAttribute(a):this.setAttribute(a,i),this._doNotSyncAttributes.delete(a)}_getChildChangeListener(t){return this._childChangeListeners.has(t)||this._childChangeListeners.set(t,this._onChildChange.bind(this,t)),this._childChangeListeners.get(t)}_getSlotChangeListener(t){return this._slotChangeListeners.has(t)||this._slotChangeListeners.set(t,this._onSlotChange.bind(this,t)),this._slotChangeListeners.get(t)}_attachSlotChange(t,e,s){const n=this._getSlotChangeListener(e);t.addEventListener("slotchange",o=>{if(n.call(t,o),s){const a=this._slotsAssignedNodes.get(t);a&&a.forEach(i=>{if(v(i)){const h=this._getChildChangeListener(e);i.detachInvalidate.call(i,h)}});const l=b([t]);this._slotsAssignedNodes.set(t,l),l.forEach(i=>{if(v(i)){const h=this._getChildChangeListener(e);i.attachInvalidate.call(i,h)}})}})}_detachSlotChange(t,e){t.removeEventListener("slotchange",this._getSlotChangeListener(e))}_onSlotChange(t){y.call(this,{type:"slot",name:t,reason:"slotchange"})}onInvalidation(t){}updateAttributes(){const e=this.constructor.getMetadata().getProperties();for(const[s,n]of Object.entries(e))this._updateAttribute(s,this[s])}_render(){const t=this.constructor,e=t.getMetadata().hasIndividualSlots();this.initializedProperties.size>0&&(Array.from(this.initializedProperties.entries()).forEach(([s,n])=>{delete this[s],this[s]=n}),this.initializedProperties.clear()),this._suppressInvalidation=!0;try{this.onBeforeRendering(),this._rendered||this.updateAttributes(),this._componentStateFinalizedEventProvider.fireEvent("componentStateFinalized")}finally{this._suppressInvalidation=!1}this._changedState=[],t._needsShadowDOM()&&F(this),this._rendered=!0,e&&this._assignIndividualSlotsToChildren(),this.onAfterRendering()}_assignIndividualSlotsToChildren(){Array.from(this.children).forEach(e=>{e._individualSlot&&e.setAttribute("slot",e._individualSlot)})}_waitForDomRef(){return this._domRefReadyPromise}getDomRef(){if(typeof this._getRealDomRef=="function")return this._getRealDomRef();if(!(!this.shadowRoot||this.shadowRoot.children.length===0))return this.shadowRoot.children[0]}getFocusDomRef(){const t=this.getDomRef();if(t)return t.querySelector("[data-sap-focus-ref]")||t}async getFocusDomRefAsync(){return await this._waitForDomRef(),this.getFocusDomRef()}async focus(t){await this._waitForDomRef();const e=this.getFocusDomRef();e===this?HTMLElement.prototype.focus.call(this,t):e&&typeof e.focus=="function"&&e.focus(t)}fireEvent(t,e,s=!1,n=!0){const o=this._fireEvent(t,e,s,n),a=G(t);return a!==t?o&&this._fireEvent(a,e,s,n):o}_fireEvent(t,e,s=!1,n=!0){const o=new CustomEvent(`ui5-${t}`,{detail:e,composed:!1,bubbles:n,cancelable:s}),a=this.dispatchEvent(o);if(q(t))return a;const l=new CustomEvent(t,{detail:e,composed:!1,bubbles:n,cancelable:s});return this.dispatchEvent(l)&&a}getSlottedNodes(t){return b(this[t])}attachComponentStateFinalized(t){this._componentStateFinalizedEventProvider.attachEvent("componentStateFinalized",t)}detachComponentStateFinalized(t){this._componentStateFinalizedEventProvider.detachEvent("componentStateFinalized",t)}get effectiveDir(){return X(this.constructor),K(this)}get isUI5Element(){return!0}get classes(){return{}}get accessibilityInfo(){return{}}static get observedAttributes(){return this.getMetadata().getAttributesList()}static _needsShadowDOM(){return!!this.template||Object.prototype.hasOwnProperty.call(this.prototype,"render")}static _generateAccessors(){const t=this.prototype,e=this.getMetadata().slotsAreManaged(),s=this.getMetadata().getProperties();for(const[n,o]of Object.entries(s)){w(n)||console.warn(`"${n}" is not a valid property name. Use a name that does not collide with DOM APIs`);const a=st(t,n);let l;a?.set&&(l=a.set);let i;a?.get&&(i=a.get),Object.defineProperty(t,n,{get(){return i?i.call(this):this._state[n]},set(h){const _=this.constructor,r=i?i.call(this):this._state[n];r!==h&&(l?l.call(this,h):this._state[n]=h,y.call(this,{type:"property",name:n,newValue:h,oldValue:r}),this._rendered&&this._updateAttribute(n,h),_.getMetadata().isFormAssociated()&&P(this))}})}if(e){const n=this.getMetadata().getSlots();for(const[o,a]of Object.entries(n)){w(o)||console.warn(`"${o}" is not a valid property name. Use a name that does not collide with DOM APIs`);const l=a.propertyName||o,i={get(){return this._state[l]!==void 0?this._state[l]:[]},set(){throw new Error("Cannot set slot content directly, use the DOM APIs (appendChild, removeChild, etc...)")}};Object.defineProperty(t,l,i),l!==g(l)&&Object.defineProperty(t,g(l),i)}}}static{this.metadata={}}static{this.styles=""}static get dependencies(){return[]}static cacheUniqueDependencies(){const t=this.dependencies.filter((e,s,n)=>n.indexOf(e)===s);M.set(this,t)}static getUniqueDependencies(){return M.has(this)||this.cacheUniqueDependencies(),M.get(this)||[]}static async onDefine(){return Promise.resolve()}static async define(){this.definePromise=Promise.all([T(),this.onDefine()]);const t=this.getMetadata().getTag();this.getMetadata().getFeatures().forEach(o=>{tt(o)&&this.cacheUniqueDependencies(),et(o,this,this.cacheUniqueDependencies.bind(this))});const s=x(t),n=customElements.get(t);return n&&!s?z(t):n||(this._generateAccessors(),$(t),customElements.define(t,this)),await this.definePromise,this.asyncFinished=!0,this}static getMetadata(){if(this.hasOwnProperty("_metadata"))return this._metadata;const t=[this.metadata];let e=this;for(;e!==I;)e=Object.getPrototypeOf(e),t.unshift(e.metadata);const s=U({},...t);return this._metadata=new L(s),this._metadata}get validity(){return this._internals.validity}get validationMessage(){return this._internals.validationMessage}checkValidity(){return this._internals.checkValidity()}reportValidity(){return this._internals.reportValidity()}}const v=d=>"isUI5Element"in d;export default I;export{v as instanceOfUI5Element};
1
+ "use strict";import"@ui5/webcomponents-base/dist/ssr-dom.js";import L from"./thirdparty/merge.js";import{boot as T}from"./Boot.js";import F from"./UI5ElementMetadata.js";import w from"./EventProvider.js";import N from"./updateShadowRoot.js";import{shouldIgnoreCustomElement as V}from"./IgnoreCustomElements.js";import{renderDeferred as k,renderImmediately as j,cancelRender as $}from"./Render.js";import{registerTag as x,isTagRegistered as z,recordTagRegistrationFailure as H}from"./CustomElementsRegistry.js";import{observeDOMNode as B,unobserveDOMNode as W}from"./DOMObserver.js";import{skipOriginalEvent as q}from"./config/NoConflict.js";import K from"./locale/getEffectiveDir.js";import{kebabToCamelCase as y,camelToKebabCase as G,kebabToPascalCase as J}from"./util/StringHelper.js";import b from"./util/isValidPropertyName.js";import{getSlotName as Q,getSlottedNodesList as R}from"./util/SlotsHelper.js";import X from"./util/arraysAreEqual.js";import{markAsRtlAware as Y}from"./locale/RTLAwareRegistry.js";import Z from"./renderer/executeTemplate.js";import{updateFormValue as tt,setFormValue as P}from"./features/InputElementsFormSupport.js";import{getComponentFeature as et,subscribeForFeatureLoad as nt}from"./FeaturesRegistry.js";import{getI18nBundle as st}from"./i18nBundle.js";import{fetchCldr as ot}from"./asset-registries/LocaleData.js";import M from"./locale/getLocale.js";let it=0;const D=new Map,I=new Map,A={fromAttribute(d,u){return u===Boolean?d!==null:u===Number?d===null?void 0:parseFloat(d):d},toAttribute(d,u){return u===Boolean?d?"":null:u===Object||u===Array||d==null?null:String(d)}};function v(d){this._suppressInvalidation||(this.onInvalidation(d),this._changedState.push(d),k(this),this._invalidationEventProvider.fireEvent("invalidate",{...d,target:this}))}function at(d,u){do{const t=Object.getOwnPropertyDescriptor(d,u);if(t)return t;d=Object.getPrototypeOf(d)}while(d&&d!==HTMLElement.prototype)}class S extends HTMLElement{constructor(){super();this._rendered=!1;const t=this.constructor;this._changedState=[],this._suppressInvalidation=!0,this._inDOM=!1,this._fullyConnected=!1,this._childChangeListeners=new Map,this._slotChangeListeners=new Map,this._invalidationEventProvider=new w,this._componentStateFinalizedEventProvider=new w;let e;this._domRefReadyPromise=new Promise(n=>{e=n}),this._domRefReadyPromise._deferredResolve=e,this._doNotSyncAttributes=new Set,this._slotsAssignedNodes=new WeakMap,this._state={...t.getMetadata().getInitialState()},this.initializedProperties=new Map,this.constructor.getMetadata().getPropertiesList().forEach(n=>{if(this.hasOwnProperty(n)){const o=this[n];this.initializedProperties.set(n,o)}}),this._internals=this.attachInternals(),this._initShadowRoot()}_initShadowRoot(){const t=this.constructor;if(t._needsShadowDOM()){const e={mode:"open"};this.attachShadow({...e,...t.getMetadata().getShadowRootOptions()}),t.getMetadata().slotsAreManaged()&&this.shadowRoot.addEventListener("slotchange",this._onShadowRootSlotChange.bind(this))}}_onShadowRootSlotChange(t){t.target?.getRootNode()===this.shadowRoot&&this._processChildren()}get _id(){return this.__id||(this.__id=`ui5wc_${++it}`),this.__id}render(){const t=this.constructor.template;return Z(t,this)}async connectedCallback(){const t=this.constructor;this.setAttribute(t.getMetadata().getPureTag(),""),t.getMetadata().supportsF6FastNavigation()&&this.setAttribute("data-sap-ui-fastnavgroup","true");const e=t.getMetadata().slotsAreManaged();this._inDOM=!0,e&&(this._startObservingDOMChildren(),await this._processChildren()),this._inDOM&&(t.asyncFinished||await t.definePromise,j(this),this._domRefReadyPromise._deferredResolve(),this._fullyConnected=!0,this.onEnterDOM())}disconnectedCallback(){const e=this.constructor.getMetadata().slotsAreManaged();this._inDOM=!1,e&&this._stopObservingDOMChildren(),this._fullyConnected&&(this.onExitDOM(),this._fullyConnected=!1),this._domRefReadyPromise._deferredResolve(),$(this)}onBeforeRendering(){}onAfterRendering(){}onEnterDOM(){}onExitDOM(){}_startObservingDOMChildren(){const e=this.constructor.getMetadata();if(!e.hasSlots())return;const n=e.canSlotText(),o={childList:!0,subtree:n,characterData:n};B(this,this._processChildren.bind(this),o)}_stopObservingDOMChildren(){W(this)}async _processChildren(){this.constructor.getMetadata().hasSlots()&&await this._updateSlots()}async _updateSlots(){const t=this.constructor,e=t.getMetadata().getSlots(),s=t.getMetadata().canSlotText(),n=Array.from(s?this.childNodes:this.children),o=new Map,a=new Map;for(const[l,f]of Object.entries(e)){const c=f.propertyName||l;a.set(c,l),o.set(c,[...this._state[c]]),this._clearSlot(l,f)}const r=new Map,i=new Map,h=n.map(async(l,f)=>{const c=Q(l),m=e[c];if(m===void 0){if(c!=="default"){const p=Object.keys(e).join(", ");console.warn(`Unknown slotName: ${c}, ignoring`,l,`Valid values are: ${p}`)}return}if(m.individualSlots){const p=(r.get(c)||0)+1;r.set(c,p),l._individualSlot=`${c}-${p}`}if(l instanceof HTMLElement){const p=l.localName;if(p.includes("-")&&!V(p)){if(!customElements.get(p)){const O=customElements.whenDefined(p);let E=D.get(p);E||(E=new Promise(U=>setTimeout(U,1e3)),D.set(p,E)),await Promise.race([O,E])}customElements.upgrade(l)}}if(l=t.getMetadata().constructor.validateSlotValue(l,m),_(l)&&m.invalidateOnChildChange){const p=this._getChildChangeListener(c);l.attachInvalidate.call(l,p)}l instanceof HTMLSlotElement&&this._attachSlotChange(l,c,!!m.invalidateOnChildChange);const C=m.propertyName||c;i.has(C)?i.get(C).push({child:l,idx:f}):i.set(C,[{child:l,idx:f}])});await Promise.all(h),i.forEach((l,f)=>{this._state[f]=l.sort((c,m)=>c.idx-m.idx).map(c=>c.child),this._state[y(f)]=this._state[f]});let g=!1;for(const[l,f]of Object.entries(e)){const c=f.propertyName||l;X(o.get(c),this._state[c])||(v.call(this,{type:"slot",name:a.get(c),reason:"children"}),g=!0,t.getMetadata().isFormAssociated()&&P(this))}g||v.call(this,{type:"slot",name:"default",reason:"textcontent"})}_clearSlot(t,e){const s=e.propertyName||t;this._state[s].forEach(o=>{if(_(o)){const a=this._getChildChangeListener(t);o.detachInvalidate.call(o,a)}o instanceof HTMLSlotElement&&this._detachSlotChange(o,t)}),this._state[s]=[],this._state[y(s)]=this._state[s]}attachInvalidate(t){this._invalidationEventProvider.attachEvent("invalidate",t)}detachInvalidate(t){this._invalidationEventProvider.detachEvent("invalidate",t)}_onChildChange(t,e){this.constructor.getMetadata().shouldInvalidateOnChildChange(t,e.type,e.name)&&v.call(this,{type:"slot",name:t,reason:"childchange",child:e.target})}attributeChangedCallback(t,e,s){let n;if(this._doNotSyncAttributes.has(t))return;const o=this.constructor.getMetadata().getProperties(),a=t.replace(/^ui5-/,""),r=y(a);if(o.hasOwnProperty(r)){const i=o[r];n=(i.converter??A).fromAttribute(s,i.type),this[r]=n}}formAssociatedCallback(){this.constructor.getMetadata().isFormAssociated()&&tt(this)}static get formAssociated(){return this.getMetadata().isFormAssociated()}_updateAttribute(t,e){const s=this.constructor;if(!s.getMetadata().hasAttribute(t))return;const o=s.getMetadata().getProperties()[t],a=G(t),i=(o.converter||A).toAttribute(e,o.type);this._doNotSyncAttributes.add(a),i==null?this.removeAttribute(a):this.setAttribute(a,i),this._doNotSyncAttributes.delete(a)}_getChildChangeListener(t){return this._childChangeListeners.has(t)||this._childChangeListeners.set(t,this._onChildChange.bind(this,t)),this._childChangeListeners.get(t)}_getSlotChangeListener(t){return this._slotChangeListeners.has(t)||this._slotChangeListeners.set(t,this._onSlotChange.bind(this,t)),this._slotChangeListeners.get(t)}_attachSlotChange(t,e,s){const n=this._getSlotChangeListener(e);t.addEventListener("slotchange",o=>{if(n.call(t,o),s){const a=this._slotsAssignedNodes.get(t);a&&a.forEach(i=>{if(_(i)){const h=this._getChildChangeListener(e);i.detachInvalidate.call(i,h)}});const r=R([t]);this._slotsAssignedNodes.set(t,r),r.forEach(i=>{if(_(i)){const h=this._getChildChangeListener(e);i.attachInvalidate.call(i,h)}})}})}_detachSlotChange(t,e){t.removeEventListener("slotchange",this._getSlotChangeListener(e))}_onSlotChange(t){v.call(this,{type:"slot",name:t,reason:"slotchange"})}onInvalidation(t){}updateAttributes(){const e=this.constructor.getMetadata().getProperties();for(const[s,n]of Object.entries(e))this._updateAttribute(s,this[s])}_render(){const t=this.constructor,e=t.getMetadata().hasIndividualSlots();this.initializedProperties.size>0&&(Array.from(this.initializedProperties.entries()).forEach(([s,n])=>{delete this[s],this[s]=n}),this.initializedProperties.clear()),this._suppressInvalidation=!0;try{this.onBeforeRendering(),this._rendered||this.updateAttributes(),this._componentStateFinalizedEventProvider.fireEvent("componentStateFinalized")}finally{this._suppressInvalidation=!1}this._changedState=[],t._needsShadowDOM()&&N(this),this._rendered=!0,e&&this._assignIndividualSlotsToChildren(),this.onAfterRendering()}_assignIndividualSlotsToChildren(){Array.from(this.children).forEach(e=>{e._individualSlot&&e.setAttribute("slot",e._individualSlot)})}_waitForDomRef(){return this._domRefReadyPromise}getDomRef(){if(typeof this._getRealDomRef=="function")return this._getRealDomRef();if(!(!this.shadowRoot||this.shadowRoot.children.length===0))return this.shadowRoot.children[0]}getFocusDomRef(){const t=this.getDomRef();if(t)return t.querySelector("[data-sap-focus-ref]")||t}async getFocusDomRefAsync(){return await this._waitForDomRef(),this.getFocusDomRef()}async focus(t){await this._waitForDomRef();const e=this.getFocusDomRef();e===this?HTMLElement.prototype.focus.call(this,t):e&&typeof e.focus=="function"&&e.focus(t)}fireEvent(t,e,s=!1,n=!0){const o=this._fireEvent(t,e,s,n),a=J(t);return a!==t?o&&this._fireEvent(a,e,s,n):o}_fireEvent(t,e,s=!1,n=!0){const o=new CustomEvent(`ui5-${t}`,{detail:e,composed:!1,bubbles:n,cancelable:s}),a=this.dispatchEvent(o);if(q(t))return a;const r=new CustomEvent(t,{detail:e,composed:!1,bubbles:n,cancelable:s});return this.dispatchEvent(r)&&a}getSlottedNodes(t){return R(this[t])}attachComponentStateFinalized(t){this._componentStateFinalizedEventProvider.attachEvent("componentStateFinalized",t)}detachComponentStateFinalized(t){this._componentStateFinalizedEventProvider.detachEvent("componentStateFinalized",t)}get effectiveDir(){return Y(this.constructor),K(this)}get isUI5Element(){return!0}get classes(){return{}}get accessibilityInfo(){return{}}static get observedAttributes(){return this.getMetadata().getAttributesList()}static _needsShadowDOM(){return!!this.template||Object.prototype.hasOwnProperty.call(this.prototype,"render")}static _generateAccessors(){const t=this.prototype,e=this.getMetadata().slotsAreManaged(),s=this.getMetadata().getProperties();for(const[n,o]of Object.entries(s)){b(n)||console.warn(`"${n}" is not a valid property name. Use a name that does not collide with DOM APIs`);const a=at(t,n);let r;a?.set&&(r=a.set);let i;a?.get&&(i=a.get),Object.defineProperty(t,n,{get(){return i?i.call(this):this._state[n]},set(h){const g=this.constructor,l=i?i.call(this):this._state[n];l!==h&&(r?r.call(this,h):this._state[n]=h,v.call(this,{type:"property",name:n,newValue:h,oldValue:l}),this._rendered&&this._updateAttribute(n,h),g.getMetadata().isFormAssociated()&&P(this))}})}if(e){const n=this.getMetadata().getSlots();for(const[o,a]of Object.entries(n)){b(o)||console.warn(`"${o}" is not a valid property name. Use a name that does not collide with DOM APIs`);const r=a.propertyName||o,i={get(){return this._state[r]!==void 0?this._state[r]:[]},set(){throw new Error("Cannot set slot content directly, use the DOM APIs (appendChild, removeChild, etc...)")}};Object.defineProperty(t,r,i),r!==y(r)&&Object.defineProperty(t,y(r),i)}}}static{this.metadata={}}static{this.styles=""}static get dependencies(){return[]}static cacheUniqueDependencies(){const t=this.dependencies.filter((e,s,n)=>n.indexOf(e)===s);I.set(this,t)}static getUniqueDependencies(){return I.has(this)||this.cacheUniqueDependencies(),I.get(this)||[]}static async onDefine(){return Promise.resolve()}static fetchI18nBundles(){return Promise.all(Object.entries(this.getMetadata().getI18n()).map(t=>{const{bundleName:e}=t[1];return st(e)}))}static fetchCLDR(){return this.getMetadata().needsCLDR()?ot(M().getLanguage(),M().getRegion(),M().getScript()):Promise.resolve()}static define(){this.definePromise=Promise.all([this.fetchI18nBundles(),this.fetchCLDR(),T(),this.onDefine()]).then(o=>{const[a]=o;Object.entries(this.getMetadata().getI18n()).forEach((r,i)=>{const h=r[0],g=r[1].target;g[h]=a[i]}),this.asyncFinished=!0});const t=this.getMetadata().getTag();this.getMetadata().getFeatures().forEach(o=>{et(o)&&this.cacheUniqueDependencies(),nt(o,this,this.cacheUniqueDependencies.bind(this))});const s=z(t),n=customElements.get(t);return n&&!s?H(t):n||(this._generateAccessors(),x(t),customElements.define(t,this)),this}static getMetadata(){if(this.hasOwnProperty("_metadata"))return this._metadata;const t=[this.metadata];let e=this;for(;e!==S;)e=Object.getPrototypeOf(e),t.unshift(e.metadata);const s=L({},...t);return this._metadata=new F(s),this._metadata}get validity(){return this._internals.validity}get validationMessage(){return this._internals.validationMessage}checkValidity(){return this._internals.checkValidity()}reportValidity(){return this._internals.reportValidity()}}const _=d=>"isUI5Element"in d;export default S;export{_ as instanceOfUI5Element};
2
2
  //# sourceMappingURL=UI5Element.js.map