@ui5/webcomponents-base 0.0.0-4e00e5559 → 0.0.0-4e88b8243
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.
- package/.npsrc.json +3 -0
- package/CHANGELOG.md +2286 -0
- package/README.md +50 -10
- package/cypress/specs/Accessor.cy.ts +79 -0
- package/cypress/specs/Boot.cy.ts +19 -0
- package/cypress/specs/ConfigurationChange.cy.ts +41 -0
- package/cypress/specs/ConfigurationScript.cy.ts +116 -0
- package/cypress/specs/ConfigurationURL.cy.ts +182 -0
- package/cypress/specs/CustomMount.cy.ts +34 -0
- package/cypress/specs/CustomTheme.cy.ts +36 -0
- package/cypress/specs/EventProvider.cy.ts +59 -0
- package/cypress/specs/SystemDOMElements.cy.ts +8 -0
- package/cypress/specs/Theming.cy.ts +74 -0
- package/cypress/specs/UI5ElementInvalidation.cy.ts +207 -0
- package/cypress/specs/UI5ElementLifecycle.cy.ts +82 -0
- package/cypress/specs/UI5ElementListenForChildPropChanges.cy.ts +62 -0
- package/cypress/specs/UI5ElementMetadataExt.cy.ts +42 -0
- package/cypress/specs/UI5ElementPropertyValidation.cy.ts +16 -0
- package/cypress/specs/UI5ElementPropsAndAttrs.cy.ts +113 -0
- package/cypress/specs/UI5ElementShadowDOM.cy.ts +30 -0
- package/cypress/specs/UI5ElementSlots.cy.ts +116 -0
- package/cypress/specs/WithComplexTemplate.cy.ts +32 -0
- package/cypress/tsconfig.json +20 -0
- package/cypress.config.js +3 -0
- package/dist/.tsbuildinfobuild +1 -0
- package/dist/AssetRegistry.d.ts +5 -0
- package/dist/AssetRegistry.js +6 -9
- package/dist/AssetRegistry.js.map +1 -0
- package/dist/Boot.d.ts +10 -0
- package/dist/Boot.js +75 -0
- package/dist/Boot.js.map +1 -0
- package/dist/CustomElementsRegistry.d.ts +5 -0
- package/dist/CustomElementsRegistry.js +78 -0
- package/dist/CustomElementsRegistry.js.map +1 -0
- package/dist/CustomElementsScope.d.ts +7 -0
- package/dist/CustomElementsScope.js +11 -0
- package/dist/CustomElementsScope.js.map +1 -0
- package/dist/CustomElementsScopeUtils.d.ts +62 -0
- package/dist/CustomElementsScopeUtils.js +102 -0
- package/dist/CustomElementsScopeUtils.js.map +1 -0
- package/dist/DOMObserver.d.ts +11 -0
- package/dist/DOMObserver.js +23 -0
- package/dist/DOMObserver.js.map +1 -0
- package/dist/Device.d.ts +27 -0
- package/dist/Device.js +163 -815
- package/dist/Device.js.map +1 -0
- package/dist/EventProvider.d.ts +25 -0
- package/dist/EventProvider.js +67 -70
- package/dist/EventProvider.js.map +1 -0
- package/dist/FeaturesRegistry.d.ts +18 -0
- package/dist/FeaturesRegistry.js +41 -7
- package/dist/FeaturesRegistry.js.map +1 -0
- package/dist/FontFace.d.ts +2 -0
- package/dist/FontFace.js +26 -69
- package/dist/FontFace.js.map +1 -0
- package/dist/IgnoreCustomElements.d.ts +25 -0
- package/dist/IgnoreCustomElements.js +37 -0
- package/dist/IgnoreCustomElements.js.map +1 -0
- package/dist/InitialConfiguration.d.ts +34 -0
- package/dist/InitialConfiguration.js +152 -104
- package/dist/InitialConfiguration.js.map +1 -0
- package/dist/Keys.d.ts +64 -0
- package/dist/Keys.js +182 -157
- package/dist/Keys.js.map +1 -0
- package/dist/Location.d.ts +11 -0
- package/dist/Location.js +49 -0
- package/dist/Location.js.map +1 -0
- package/dist/ManagedStyles.d.ts +7 -0
- package/dist/ManagedStyles.js +69 -0
- package/dist/ManagedStyles.js.map +1 -0
- package/dist/MediaRange.d.ts +31 -0
- package/dist/MediaRange.js +88 -0
- package/dist/MediaRange.js.map +1 -0
- package/dist/PropertiesFileFormat.d.ts +8 -0
- package/dist/PropertiesFileFormat.js +85 -0
- package/dist/PropertiesFileFormat.js.map +1 -0
- package/dist/Render.d.ts +47 -0
- package/dist/Render.js +143 -0
- package/dist/Render.js.map +1 -0
- package/dist/RenderQueue.d.ts +19 -0
- package/dist/RenderQueue.js +53 -39
- package/dist/RenderQueue.js.map +1 -0
- package/dist/Runtimes.d.ts +27 -0
- package/dist/Runtimes.js +97 -0
- package/dist/Runtimes.js.map +1 -0
- package/dist/SystemCSSVars.d.ts +2 -0
- package/dist/SystemCSSVars.js +9 -0
- package/dist/SystemCSSVars.js.map +1 -0
- package/dist/Theming.d.ts +3 -0
- package/dist/Theming.js +3 -2
- package/dist/Theming.js.map +1 -0
- package/dist/UI5Element.d.ts +414 -0
- package/dist/UI5Element.js +1105 -883
- package/dist/UI5Element.js.map +1 -0
- package/dist/UI5ElementMetadata.d.ts +164 -0
- package/dist/UI5ElementMetadata.js +244 -164
- package/dist/UI5ElementMetadata.js.map +1 -0
- package/dist/animations/AnimationQueue.d.ts +8 -0
- package/dist/animations/AnimationQueue.js +31 -38
- package/dist/animations/AnimationQueue.js.map +1 -0
- package/dist/animations/animate.d.ts +14 -0
- package/dist/animations/animate.js +46 -51
- package/dist/animations/animate.js.map +1 -0
- package/dist/animations/scroll.d.ts +5 -0
- package/dist/animations/scroll.js +18 -27
- package/dist/animations/scroll.js.map +1 -0
- package/dist/animations/slideDown.d.ts +5 -0
- package/dist/animations/slideDown.js +53 -78
- package/dist/animations/slideDown.js.map +1 -0
- package/dist/animations/slideUp.d.ts +5 -0
- package/dist/animations/slideUp.js +49 -70
- package/dist/animations/slideUp.js.map +1 -0
- package/dist/asset-registries/Icons.d.ts +39 -0
- package/dist/asset-registries/Icons.js +136 -24
- package/dist/asset-registries/Icons.js.map +1 -0
- package/dist/asset-registries/Illustrations.d.ts +19 -0
- package/dist/asset-registries/Illustrations.js +77 -0
- package/dist/asset-registries/Illustrations.js.map +1 -0
- package/dist/asset-registries/LocaleData.d.ts +7 -0
- package/dist/asset-registries/LocaleData.js +125 -114
- package/dist/asset-registries/LocaleData.js.map +1 -0
- package/dist/asset-registries/Themes.d.ts +9 -0
- package/dist/asset-registries/Themes.js +57 -77
- package/dist/asset-registries/Themes.js.map +1 -0
- package/dist/asset-registries/i18n.d.ts +23 -0
- package/dist/asset-registries/i18n.js +83 -60
- package/dist/asset-registries/i18n.js.map +1 -0
- package/dist/asset-registries/util/IconCollectionsAlias.d.ts +30 -0
- package/dist/asset-registries/util/IconCollectionsAlias.js +37 -0
- package/dist/asset-registries/util/IconCollectionsAlias.js.map +1 -0
- package/dist/asset-registries/util/IconCollectionsByTheme.d.ts +20 -0
- package/dist/asset-registries/util/IconCollectionsByTheme.js +42 -0
- package/dist/asset-registries/util/IconCollectionsByTheme.js.map +1 -0
- package/dist/asset-registries/util/getIconCollectionByTheme.d.ts +13 -0
- package/dist/asset-registries/util/getIconCollectionByTheme.js +29 -0
- package/dist/asset-registries/util/getIconCollectionByTheme.js.map +1 -0
- package/dist/config/AnimationMode.d.ts +14 -0
- package/dist/config/AnimationMode.js +28 -10
- package/dist/config/AnimationMode.js.map +1 -0
- package/dist/config/CalendarType.d.ts +15 -0
- package/dist/config/CalendarType.js +36 -14
- package/dist/config/CalendarType.js.map +1 -0
- package/dist/config/ConfigurationReset.d.ts +4 -0
- package/dist/config/ConfigurationReset.js +11 -0
- package/dist/config/ConfigurationReset.js.map +1 -0
- package/dist/config/Fonts.d.ts +16 -0
- package/dist/config/Fonts.js +30 -0
- package/dist/config/Fonts.js.map +1 -0
- package/dist/config/FormatSettings.d.ts +15 -0
- package/dist/config/FormatSettings.js +19 -9
- package/dist/config/FormatSettings.js.map +1 -0
- package/dist/config/Icons.d.ts +40 -0
- package/dist/config/Icons.js +44 -0
- package/dist/config/Icons.js.map +1 -0
- package/dist/config/Language.d.ts +40 -0
- package/dist/config/Language.js +74 -10
- package/dist/config/Language.js.map +1 -0
- package/dist/config/NoConflict.d.ts +20 -0
- package/dist/config/NoConflict.js +45 -41
- package/dist/config/NoConflict.js.map +1 -0
- package/dist/config/Theme.d.ts +39 -0
- package/dist/config/Theme.js +75 -22
- package/dist/config/Theme.js.map +1 -0
- package/dist/config/ThemeRoot.d.ts +27 -0
- package/dist/config/ThemeRoot.js +61 -0
- package/dist/config/ThemeRoot.js.map +1 -0
- package/dist/config/Timezone.d.ts +17 -0
- package/dist/config/Timezone.js +34 -0
- package/dist/config/Timezone.js.map +1 -0
- package/dist/config/Tooltips.d.ts +19 -0
- package/dist/config/Tooltips.js +29 -0
- package/dist/config/Tooltips.js.map +1 -0
- package/dist/connectToComponent.d.ts +9 -0
- package/dist/connectToComponent.js +59 -0
- package/dist/connectToComponent.js.map +1 -0
- package/dist/converters/DOMReference.d.ts +5 -0
- package/dist/converters/DOMReference.js +13 -0
- package/dist/converters/DOMReference.js.map +1 -0
- package/dist/css/BusyIndicator.css +80 -0
- package/dist/css/FontFace.css +96 -0
- package/dist/css/OverrideFontFace.css +32 -0
- package/dist/css/SystemCSSVars.css +9 -0
- package/dist/decorators/bound.d.ts +1 -0
- package/dist/decorators/bound.js +34 -0
- package/dist/decorators/bound.js.map +1 -0
- package/dist/decorators/customElement.d.ts +62 -0
- package/dist/decorators/customElement.js +48 -0
- package/dist/decorators/customElement.js.map +1 -0
- package/dist/decorators/event-strict.d.ts +15 -0
- package/dist/decorators/event-strict.js +26 -0
- package/dist/decorators/event-strict.js.map +1 -0
- package/dist/decorators/event.d.ts +16 -0
- package/dist/decorators/event.js +27 -0
- package/dist/decorators/event.js.map +1 -0
- package/dist/decorators/i18n.d.ts +17 -0
- package/dist/decorators/i18n.js +26 -0
- package/dist/decorators/i18n.js.map +1 -0
- package/dist/decorators/property.d.ts +9 -0
- package/dist/decorators/property.js +24 -0
- package/dist/decorators/property.js.map +1 -0
- package/dist/decorators/query.d.ts +25 -0
- package/dist/decorators/query.js +32 -0
- package/dist/decorators/query.js.map +1 -0
- package/dist/decorators/queryAll.d.ts +27 -0
- package/dist/decorators/queryAll.js +34 -0
- package/dist/decorators/queryAll.js.map +1 -0
- package/dist/decorators/slot.d.ts +9 -0
- package/dist/decorators/slot.js +37 -0
- package/dist/decorators/slot.js.map +1 -0
- package/dist/decorators.d.ts +8 -0
- package/dist/decorators.js +9 -0
- package/dist/decorators.js.map +1 -0
- package/dist/delegate/ItemNavigation.d.ts +114 -0
- package/dist/delegate/ItemNavigation.js +311 -274
- package/dist/delegate/ItemNavigation.js.map +1 -0
- package/dist/delegate/ResizeHandler.d.ts +23 -0
- package/dist/delegate/ResizeHandler.js +82 -63
- package/dist/delegate/ResizeHandler.js.map +1 -0
- package/dist/delegate/ScrollEnablement.d.ts +49 -0
- package/dist/delegate/ScrollEnablement.js +159 -120
- package/dist/delegate/ScrollEnablement.js.map +1 -0
- package/dist/features/F6Navigation.d.ts +19 -0
- package/dist/features/F6Navigation.js +170 -0
- package/dist/features/F6Navigation.js.map +1 -0
- package/dist/features/InputElementsFormSupport.d.ts +15 -0
- package/dist/features/InputElementsFormSupport.js +39 -0
- package/dist/features/InputElementsFormSupport.js.map +1 -0
- package/dist/features/LegacyDateFormats.d.ts +18 -0
- package/dist/features/LegacyDateFormats.js +20 -0
- package/dist/features/LegacyDateFormats.js.map +1 -0
- package/dist/features/OpenUI5Element.d.ts +9 -0
- package/dist/features/OpenUI5Element.js +5 -0
- package/dist/features/OpenUI5Element.js.map +1 -0
- package/dist/features/OpenUI5Enablement.d.ts +11 -0
- package/dist/features/OpenUI5Enablement.js +96 -0
- package/dist/features/OpenUI5Enablement.js.map +1 -0
- package/dist/features/OpenUI5Support.d.ts +34 -0
- package/dist/features/OpenUI5Support.js +140 -87
- package/dist/features/OpenUI5Support.js.map +1 -0
- package/dist/features/patchPatcher.d.ts +11 -0
- package/dist/features/patchPatcher.js +11 -0
- package/dist/features/patchPatcher.js.map +1 -0
- package/dist/features/patchPopup.d.ts +15 -0
- package/dist/features/patchPopup.js +61 -0
- package/dist/features/patchPopup.js.map +1 -0
- package/dist/generated/AssetParameters.d.ts +6 -0
- package/dist/generated/AssetParameters.js +4 -9
- package/dist/generated/AssetParameters.js.map +1 -0
- package/dist/generated/VersionInfo.d.ts +10 -0
- package/dist/generated/VersionInfo.js +11 -0
- package/dist/generated/VersionInfo.js.map +1 -0
- package/dist/generated/css/BusyIndicator.css.d.ts +2 -0
- package/dist/generated/css/BusyIndicator.css.js +2 -0
- package/dist/generated/css/BusyIndicator.css.js.map +1 -0
- package/dist/generated/css/FontFace.css.d.ts +2 -0
- package/dist/generated/css/FontFace.css.js +2 -0
- package/dist/generated/css/FontFace.css.js.map +1 -0
- package/dist/generated/css/OverrideFontFace.css.d.ts +2 -0
- package/dist/generated/css/OverrideFontFace.css.js +2 -0
- package/dist/generated/css/OverrideFontFace.css.js.map +1 -0
- package/dist/generated/css/SystemCSSVars.css.d.ts +2 -0
- package/dist/generated/css/SystemCSSVars.css.js +2 -0
- package/dist/generated/css/SystemCSSVars.css.js.map +1 -0
- package/dist/getSharedResource.d.ts +11 -0
- package/dist/getSharedResource.js +40 -0
- package/dist/getSharedResource.js.map +1 -0
- package/dist/global.d.ts +40 -0
- package/dist/i18nBundle.d.ts +41 -0
- package/dist/i18nBundle.js +71 -28
- package/dist/i18nBundle.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/jsx-dev-runtime.d.ts +4 -0
- package/dist/jsx-dev-runtime.js +43 -0
- package/dist/jsx-dev-runtime.js.map +1 -0
- package/dist/jsx-runtime.d.ts +50 -0
- package/dist/jsx-runtime.js +27 -0
- package/dist/jsx-runtime.js.map +1 -0
- package/dist/jsx-utils.d.ts +3 -0
- package/dist/jsx-utils.js +39 -0
- package/dist/jsx-utils.js.map +1 -0
- package/dist/locale/Locale.d.ts +22 -0
- package/dist/locale/Locale.js +75 -87
- package/dist/locale/Locale.js.map +1 -0
- package/dist/locale/RTLAwareRegistry.d.ts +4 -0
- package/dist/locale/RTLAwareRegistry.js +9 -0
- package/dist/locale/RTLAwareRegistry.js.map +1 -0
- package/dist/locale/applyDirection.d.ts +11 -0
- package/dist/locale/applyDirection.js +18 -0
- package/dist/locale/applyDirection.js.map +1 -0
- package/dist/locale/directionChange.d.ts +15 -0
- package/dist/locale/directionChange.js +24 -0
- package/dist/locale/directionChange.js.map +1 -0
- package/dist/locale/getEffectiveDir.d.ts +2 -0
- package/dist/locale/getEffectiveDir.js +8 -0
- package/dist/locale/getEffectiveDir.js.map +1 -0
- package/dist/locale/getLocale.d.ts +7 -0
- package/dist/locale/getLocale.js +28 -21
- package/dist/locale/getLocale.js.map +1 -0
- package/dist/locale/languageChange.d.ts +5 -0
- package/dist/locale/languageChange.js +14 -0
- package/dist/locale/languageChange.js.map +1 -0
- package/dist/locale/nextFallbackLocale.d.ts +8 -0
- package/dist/locale/nextFallbackLocale.js +15 -19
- package/dist/locale/nextFallbackLocale.js.map +1 -0
- package/dist/locale/normalizeLocale.d.ts +7 -0
- package/dist/locale/normalizeLocale.js +34 -41
- package/dist/locale/normalizeLocale.js.map +1 -0
- package/dist/renderer/JsxRenderer.d.ts +3 -0
- package/dist/renderer/JsxRenderer.js +16 -0
- package/dist/renderer/JsxRenderer.js.map +1 -0
- package/dist/renderer/LitRenderer.d.ts +14 -0
- package/dist/renderer/LitRenderer.js +33 -12
- package/dist/renderer/LitRenderer.js.map +1 -0
- package/dist/renderer/directives/style-map.d.ts +13 -0
- package/dist/renderer/directives/style-map.js +72 -0
- package/dist/renderer/directives/style-map.js.map +1 -0
- package/dist/renderer/executeTemplate.d.ts +12 -0
- package/dist/renderer/executeTemplate.js +12 -0
- package/dist/renderer/executeTemplate.js.map +1 -0
- package/dist/sap/base/Log.js +750 -0
- package/dist/sap/base/assert.js +34 -0
- package/dist/sap/base/config/MemoryConfigurationProvider.js +20 -0
- package/dist/sap/base/security/URLListValidator.js +406 -0
- package/dist/sap/base/security/encodeCSS.js +40 -0
- package/dist/sap/base/security/encodeXML.js +53 -0
- package/dist/sap/base/security/sanitizeHTML.js +38 -0
- package/dist/sap/base/strings/toHex.js +33 -0
- package/dist/sap/base/util/now.js +28 -0
- package/dist/sap/base/util/uid.js +27 -0
- package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3600 -0
- package/dist/ssr-dom-shim.d.ts +1 -0
- package/dist/ssr-dom-shim.js +12 -0
- package/dist/ssr-dom-shim.js.map +1 -0
- package/dist/ssr-dom.d.ts +1 -0
- package/dist/ssr-dom.js +3 -0
- package/dist/ssr-dom.js.map +1 -0
- package/dist/theming/CustomStyle.d.ts +6 -0
- package/dist/theming/CustomStyle.js +46 -17
- package/dist/theming/CustomStyle.js.map +1 -0
- package/dist/theming/ThemeLoaded.d.ts +5 -0
- package/dist/theming/ThemeLoaded.js +14 -0
- package/dist/theming/ThemeLoaded.js.map +1 -0
- package/dist/theming/ThemeRegistered.d.ts +4 -0
- package/dist/theming/ThemeRegistered.js +11 -0
- package/dist/theming/ThemeRegistered.js.map +1 -0
- package/dist/theming/applyTheme.d.ts +2 -0
- package/dist/theming/applyTheme.js +64 -69
- package/dist/theming/applyTheme.js.map +1 -0
- package/dist/theming/getConstructableStyle.d.ts +9 -0
- package/dist/theming/getConstructableStyle.js +15 -15
- package/dist/theming/getConstructableStyle.js.map +1 -0
- package/dist/theming/getEffectiveStyle.d.ts +3 -0
- package/dist/theming/getEffectiveStyle.js +23 -13
- package/dist/theming/getEffectiveStyle.js.map +1 -0
- package/dist/theming/getStylesString.d.ts +3 -0
- package/dist/theming/getStylesString.js +9 -0
- package/dist/theming/getStylesString.js.map +1 -0
- package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
- package/dist/theming/getThemeDesignerTheme.js +74 -60
- package/dist/theming/getThemeDesignerTheme.js.map +1 -0
- package/dist/thirdparty/_merge.d.ts +2 -0
- package/dist/thirdparty/_merge.js +7 -4
- package/dist/thirdparty/_merge.js.map +1 -0
- package/dist/thirdparty/isPlainObject.d.ts +2 -0
- package/dist/thirdparty/isPlainObject.js +11 -10
- package/dist/thirdparty/isPlainObject.js.map +1 -0
- package/dist/thirdparty/merge.d.ts +2 -0
- package/dist/thirdparty/merge.js +4 -8
- package/dist/thirdparty/merge.js.map +1 -0
- package/dist/thirdparty/preact/jsx.d.ts +2616 -0
- package/dist/thirdparty/preact/jsxRuntime.module.d.ts +62 -0
- package/dist/thirdparty/preact/jsxRuntime.module.js +2 -0
- package/dist/thirdparty/preact/preact.module.d.ts +398 -0
- package/dist/thirdparty/preact/preact.module.js +2 -0
- package/dist/types/AnimationMode.d.ts +24 -0
- package/dist/types/AnimationMode.js +25 -6
- package/dist/types/AnimationMode.js.map +1 -0
- package/dist/types/CalendarType.d.ts +28 -0
- package/dist/types/CalendarType.js +26 -18
- package/dist/types/CalendarType.js.map +1 -0
- package/dist/types/InvisibleMessageMode.d.ts +20 -0
- package/dist/types/InvisibleMessageMode.js +20 -0
- package/dist/types/InvisibleMessageMode.js.map +1 -0
- package/dist/types/ItemNavigationBehavior.d.ts +18 -0
- package/dist/types/ItemNavigationBehavior.js +16 -17
- package/dist/types/ItemNavigationBehavior.js.map +1 -0
- package/dist/types/MovePlacement.d.ts +20 -0
- package/dist/types/MovePlacement.js +22 -0
- package/dist/types/MovePlacement.js.map +1 -0
- package/dist/types/NavigationMode.d.ts +24 -0
- package/dist/types/NavigationMode.js +25 -5
- package/dist/types/NavigationMode.js.map +1 -0
- package/dist/types/Orientation.d.ts +16 -0
- package/dist/types/Orientation.js +18 -0
- package/dist/types/Orientation.js.map +1 -0
- package/dist/types/ValueState.d.ts +28 -0
- package/dist/types/ValueState.js +27 -19
- package/dist/types/ValueState.js.map +1 -0
- package/dist/types.d.ts +41 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/updateShadowRoot.d.ts +7 -0
- package/dist/updateShadowRoot.js +17 -0
- package/dist/updateShadowRoot.js.map +1 -0
- package/dist/util/AccessibilityTextsHelper.d.ts +17 -0
- package/dist/util/AccessibilityTextsHelper.js +199 -0
- package/dist/util/AccessibilityTextsHelper.js.map +1 -0
- package/dist/util/Caret.d.ts +7 -0
- package/dist/util/Caret.js +23 -0
- package/dist/util/Caret.js.map +1 -0
- package/dist/util/ColorConversion.d.ts +31 -0
- package/dist/util/ColorConversion.js +352 -0
- package/dist/util/ColorConversion.js.map +1 -0
- package/dist/util/FetchHelper.d.ts +3 -0
- package/dist/util/FetchHelper.js +19 -25
- package/dist/util/FetchHelper.js.map +1 -0
- package/dist/util/FocusableElements.d.ts +4 -0
- package/dist/util/FocusableElements.js +70 -56
- package/dist/util/FocusableElements.js.map +1 -0
- package/dist/util/HTMLSanitizer.d.ts +3 -0
- package/dist/util/HTMLSanitizer.js +6 -0
- package/dist/util/HTMLSanitizer.js.map +1 -0
- package/dist/util/InvisibleMessage.d.ts +10 -0
- package/dist/util/InvisibleMessage.js +56 -0
- package/dist/util/InvisibleMessage.js.map +1 -0
- package/dist/util/PopupUtils.d.ts +5 -0
- package/dist/util/PopupUtils.js +60 -0
- package/dist/util/PopupUtils.js.map +1 -0
- package/dist/util/SelectionAssistant.d.ts +12 -0
- package/dist/util/SelectionAssistant.js +79 -0
- package/dist/util/SelectionAssistant.js.map +1 -0
- package/dist/util/SlotsHelper.d.ts +9 -0
- package/dist/util/SlotsHelper.js +30 -0
- package/dist/util/SlotsHelper.js.map +1 -0
- package/dist/util/StringHelper.d.ts +5 -0
- package/dist/util/StringHelper.js +32 -21
- package/dist/util/StringHelper.js.map +1 -0
- package/dist/util/TabbableElements.d.ts +17 -0
- package/dist/util/TabbableElements.js +46 -39
- package/dist/util/TabbableElements.js.map +1 -0
- package/dist/util/arraysAreEqual.d.ts +2 -0
- package/dist/util/arraysAreEqual.js +13 -0
- package/dist/util/arraysAreEqual.js.map +1 -0
- package/dist/util/clamp.d.ts +9 -0
- package/dist/util/clamp.js +13 -0
- package/dist/util/clamp.js.map +1 -0
- package/dist/util/createLinkInHead.d.ts +7 -0
- package/dist/util/createLinkInHead.js +21 -0
- package/dist/util/createLinkInHead.js.map +1 -0
- package/dist/util/debounce.d.ts +2 -0
- package/dist/util/debounce.js +15 -0
- package/dist/util/debounce.js.map +1 -0
- package/dist/util/detectNavigatorLanguage.d.ts +2 -0
- package/dist/util/detectNavigatorLanguage.js +13 -11
- package/dist/util/detectNavigatorLanguage.js.map +1 -0
- package/dist/util/dragAndDrop/DragRegistry.d.ts +33 -0
- package/dist/util/dragAndDrop/DragRegistry.js +66 -0
- package/dist/util/dragAndDrop/DragRegistry.js.map +1 -0
- package/dist/util/dragAndDrop/findClosestPosition.d.ts +11 -0
- package/dist/util/dragAndDrop/findClosestPosition.js +102 -0
- package/dist/util/dragAndDrop/findClosestPosition.js.map +1 -0
- package/dist/util/dragAndDrop/handleDragOver.d.ts +16 -0
- package/dist/util/dragAndDrop/handleDragOver.js +42 -0
- package/dist/util/dragAndDrop/handleDragOver.js.map +1 -0
- package/dist/util/dragAndDrop/handleDrop.d.ts +5 -0
- package/dist/util/dragAndDrop/handleDrop.js +22 -0
- package/dist/util/dragAndDrop/handleDrop.js.map +1 -0
- package/dist/util/dragAndDrop/longDragOverHandler.d.ts +2 -0
- package/dist/util/dragAndDrop/longDragOverHandler.js +25 -0
- package/dist/util/dragAndDrop/longDragOverHandler.js.map +1 -0
- package/dist/util/escapeRegex.d.ts +8 -0
- package/dist/util/escapeRegex.js +11 -0
- package/dist/util/escapeRegex.js.map +1 -0
- package/dist/util/fixSafariActiveState.d.ts +2 -0
- package/dist/util/fixSafariActiveState.js +11 -0
- package/dist/util/fixSafariActiveState.js.map +1 -0
- package/dist/util/formatMessage.d.ts +2 -0
- package/dist/util/formatMessage.js +15 -19
- package/dist/util/formatMessage.js.map +1 -0
- package/dist/util/generateHighlightedMarkup.d.ts +9 -0
- package/dist/util/generateHighlightedMarkup.js +41 -0
- package/dist/util/generateHighlightedMarkup.js.map +1 -0
- package/dist/util/getActiveElement.d.ts +2 -0
- package/dist/util/getActiveElement.js +9 -0
- package/dist/util/getActiveElement.js.map +1 -0
- package/dist/util/getClassCopy.d.ts +438 -0
- package/dist/util/getClassCopy.js +10 -0
- package/dist/util/getClassCopy.js.map +1 -0
- package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
- package/dist/util/getDesigntimePropertyAsArray.js +5 -3
- package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
- package/dist/util/getEffectiveContentDensity.d.ts +2 -0
- package/dist/util/getEffectiveContentDensity.js +4 -0
- package/dist/util/getEffectiveContentDensity.js.map +1 -0
- package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
- package/dist/util/getEffectiveScrollbarStyle.js +34 -0
- package/dist/util/getEffectiveScrollbarStyle.js.map +1 -0
- package/dist/util/getFastNavigationGroups.d.ts +2 -0
- package/dist/util/getFastNavigationGroups.js +51 -0
- package/dist/util/getFastNavigationGroups.js.map +1 -0
- package/{src/util/getFileExtension.js → dist/util/getFileExtension.d.ts} +3 -12
- package/dist/util/getFileExtension.js +9 -11
- package/dist/util/getFileExtension.js.map +1 -0
- package/dist/util/getNormalizedTarget.d.ts +7 -0
- package/dist/util/getNormalizedTarget.js +14 -0
- package/dist/util/getNormalizedTarget.js.map +1 -0
- package/dist/util/getSingletonElementInstance.d.ts +11 -0
- package/dist/util/getSingletonElementInstance.js +19 -0
- package/dist/util/getSingletonElementInstance.js.map +1 -0
- package/dist/util/hash2str.d.ts +1 -0
- package/dist/util/hash2str.js +14 -0
- package/dist/util/hash2str.js.map +1 -0
- package/dist/util/isElementClickable.d.ts +2 -0
- package/dist/util/isElementClickable.js +16 -0
- package/dist/util/isElementClickable.js.map +1 -0
- package/dist/util/isElementHidden.d.ts +2 -0
- package/dist/util/isElementHidden.js +8 -0
- package/dist/util/isElementHidden.js.map +1 -0
- package/dist/util/isElementInView.d.ts +6 -0
- package/dist/util/isElementInView.js +12 -0
- package/dist/util/isElementInView.js.map +1 -0
- package/dist/util/isElementTabbable.d.ts +9 -0
- package/dist/util/isElementTabbable.js +30 -0
- package/dist/util/isElementTabbable.js.map +1 -0
- package/dist/util/isValidPropertyName.d.ts +8 -0
- package/dist/util/isValidPropertyName.js +20 -12
- package/dist/util/isValidPropertyName.js.map +1 -0
- package/dist/util/toLowercaseEnumValue.d.ts +3 -0
- package/dist/util/toLowercaseEnumValue.js +4 -0
- package/dist/util/toLowercaseEnumValue.js.map +1 -0
- package/dist/util/whenDOMReady.d.ts +2 -0
- package/dist/util/whenDOMReady.js +11 -10
- package/dist/util/whenDOMReady.js.map +1 -0
- package/dist/util/willShowContent.d.ts +2 -0
- package/dist/util/willShowContent.js +7 -0
- package/dist/util/willShowContent.js.map +1 -0
- package/dist/validateThemeRoot.d.ts +2 -0
- package/dist/validateThemeRoot.js +49 -0
- package/dist/validateThemeRoot.js.map +1 -0
- package/index.js +206 -2
- package/package-scripts.cjs +74 -0
- package/package.json +43 -13
- package/src/css/BusyIndicator.css +80 -0
- package/src/css/FontFace.css +96 -0
- package/src/css/OverrideFontFace.css +32 -0
- package/src/css/SystemCSSVars.css +9 -0
- package/src/thirdparty/preact/jsxRuntime.module.js +2 -0
- package/src/thirdparty/preact/preact.module.js +2 -0
- package/src/thirdparty/preact/version.txt +1 -0
- package/tsconfig.json +20 -0
- package/.eslintignore +0 -11
- package/bundle.es5.js +0 -28
- package/bundle.esm.js +0 -49
- package/config/.eslintrc.js +0 -3
- package/config/rollup.config.js +0 -1
- package/config/wdio.conf.js +0 -1
- package/dist/RenderScheduler.js +0 -165
- package/dist/SVGIconRegistry.js +0 -60
- package/dist/StaticArea.js +0 -41
- package/dist/StaticAreaItem.js +0 -105
- package/dist/animations/config.js +0 -5
- package/dist/boot.js +0 -32
- package/dist/compatibility/DOMObserver.js +0 -62
- package/dist/compatibility/patchNodeValue.js +0 -24
- package/dist/compatibility/whenPolyfillLoaded.js +0 -26
- package/dist/config/RTL.js +0 -31
- package/dist/delegate/CustomResize.js +0 -78
- package/dist/delegate/NativeResize.js +0 -44
- package/dist/features/browsersupport/Edge.js +0 -6
- package/dist/features/browsersupport/IE11.js +0 -41
- package/dist/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
- package/dist/renderer/ifDefined.js +0 -21
- package/dist/resources/bundle.es5.js +0 -212
- package/dist/resources/bundle.es5.js.map +0 -1
- package/dist/resources/bundle.esm.js +0 -129
- package/dist/resources/bundle.esm.js.map +0 -1
- package/dist/test-resources/assets/Themes.js +0 -13
- package/dist/test-resources/elements/Child.js +0 -35
- package/dist/test-resources/elements/Generic.js +0 -84
- package/dist/test-resources/elements/GenericExt.js +0 -26
- package/dist/test-resources/elements/NoShadowDOM.js +0 -13
- package/dist/test-resources/elements/Parent.js +0 -37
- package/dist/test-resources/elements/WithStaticArea.js +0 -76
- package/dist/test-resources/pages/AllTestElements.html +0 -42
- package/dist/test-resources/pages/Configuration.html +0 -20
- package/dist/test-resources/pages/ConfigurationScript.html +0 -36
- package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -25
- package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -61
- package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -45
- package/dist/test-resources/specs/CustomTheme.spec.js +0 -25
- package/dist/test-resources/specs/StaticArea.spec.js +0 -34
- package/dist/test-resources/specs/Theming.spec.js +0 -31
- package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -258
- package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -93
- package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -101
- package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -40
- package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -12
- package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -65
- package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -22
- package/dist/test-resources/specs/UI5ElementSlots.js +0 -34
- package/dist/theming/CSSVarsPonyfill.js +0 -24
- package/dist/theming/adaptCSSForIE.js +0 -90
- package/dist/theming/createComponentStyleTag.js +0 -49
- package/dist/theming/createThemePropertiesStyleTag.js +0 -20
- package/dist/thirdparty/Array.from.js +0 -16
- package/dist/thirdparty/Array.prototype.fill.js +0 -44
- package/dist/thirdparty/Array.prototype.find.js +0 -46
- package/dist/thirdparty/Array.prototype.includes.js +0 -51
- package/dist/thirdparty/Element.prototype.closest.js +0 -11
- package/dist/thirdparty/Element.prototype.matches.js +0 -6
- package/dist/thirdparty/Map.prototype.keys.js +0 -9
- package/dist/thirdparty/Number.isInteger.js +0 -5
- package/dist/thirdparty/Number.isNaN.js +0 -1
- package/dist/thirdparty/Number.parseInt.js +0 -1
- package/dist/thirdparty/Object.assign.js +0 -31
- package/dist/thirdparty/Object.entries.js +0 -11
- package/dist/thirdparty/Symbol.js +0 -2
- package/dist/thirdparty/WeakSet.js +0 -27
- package/dist/thirdparty/es6-string-methods.js +0 -182
- package/dist/thirdparty/events-polyfills.js +0 -89
- package/dist/thirdparty/fetch.js +0 -1
- package/dist/thirdparty/template.js +0 -600
- package/dist/thirdparty/webcomponents-sd-ce-pf.js +0 -318
- package/dist/types/CSSSize.js +0 -9
- package/dist/types/DataType.js +0 -25
- package/dist/types/Integer.js +0 -9
- package/dist/types/PopupState.js +0 -37
- package/dist/util/createStyleInHead.js +0 -18
- package/dist/util/findNodeOwner.js +0 -35
- package/dist/util/isDescendantOf.js +0 -15
- package/dist/util/isNodeClickable.js +0 -19
- package/dist/util/isNodeHidden.js +0 -13
- package/dist/util/isNodeTabbable.js +0 -28
- package/dist/webcomponentsjs/LICENSE.md +0 -19
- package/dist/webcomponentsjs/README.md +0 -229
- package/dist/webcomponentsjs/bundles/webcomponents-ce.js +0 -63
- package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +0 -1
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +0 -297
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +0 -1
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +0 -208
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +0 -1
- package/dist/webcomponentsjs/bundles/webcomponents-sd.js +0 -166
- package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +0 -1
- package/dist/webcomponentsjs/custom-elements-es5-adapter.js +0 -15
- package/dist/webcomponentsjs/package.json +0 -46
- package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
- package/dist/webcomponentsjs/webcomponents-bundle.js +0 -298
- package/dist/webcomponentsjs/webcomponents-bundle.js.map +0 -1
- package/dist/webcomponentsjs/webcomponents-loader.js +0 -185
- package/lib/generate-asset-parameters/index.js +0 -22
- package/package-scripts.js +0 -47
- package/src/AssetRegistry.js +0 -9
- package/src/Device.js +0 -823
- package/src/EventProvider.js +0 -73
- package/src/FeaturesRegistry.js +0 -11
- package/src/FontFace.js +0 -73
- package/src/InitialConfiguration.js +0 -131
- package/src/Keys.js +0 -161
- package/src/RenderQueue.js +0 -42
- package/src/RenderScheduler.js +0 -165
- package/src/SVGIconRegistry.js +0 -60
- package/src/StaticArea.js +0 -41
- package/src/StaticAreaItem.js +0 -105
- package/src/Theming.js +0 -3
- package/src/UI5Element.js +0 -898
- package/src/UI5ElementMetadata.js +0 -173
- package/src/animations/AnimationQueue.js +0 -42
- package/src/animations/animate.js +0 -53
- package/src/animations/config.js +0 -5
- package/src/animations/scroll.js +0 -28
- package/src/animations/slideDown.js +0 -79
- package/src/animations/slideUp.js +0 -71
- package/src/asset-registries/Icons.js +0 -24
- package/src/asset-registries/LocaleData.js +0 -125
- package/src/asset-registries/Themes.js +0 -87
- package/src/asset-registries/i18n.js +0 -79
- package/src/boot.js +0 -32
- package/src/compatibility/DOMObserver.js +0 -62
- package/src/compatibility/patchNodeValue.js +0 -24
- package/src/compatibility/whenPolyfillLoaded.js +0 -26
- package/src/config/AnimationMode.js +0 -13
- package/src/config/CalendarType.js +0 -18
- package/src/config/FormatSettings.js +0 -13
- package/src/config/Language.js +0 -12
- package/src/config/NoConflict.js +0 -51
- package/src/config/RTL.js +0 -31
- package/src/config/Theme.js +0 -28
- package/src/delegate/CustomResize.js +0 -78
- package/src/delegate/ItemNavigation.js +0 -278
- package/src/delegate/NativeResize.js +0 -44
- package/src/delegate/ResizeHandler.js +0 -66
- package/src/delegate/ScrollEnablement.js +0 -126
- package/src/features/OpenUI5Support.js +0 -90
- package/src/features/browsersupport/Edge.js +0 -6
- package/src/features/browsersupport/IE11.js +0 -41
- package/src/features/browsersupport/IE11WithWebComponentsPolyfill.js +0 -5
- package/src/i18nBundle.js +0 -33
- package/src/locale/Locale.js +0 -91
- package/src/locale/getLocale.js +0 -31
- package/src/locale/nextFallbackLocale.js +0 -28
- package/src/locale/normalizeLocale.js +0 -54
- package/src/renderer/LitRenderer.js +0 -15
- package/src/renderer/ifDefined.js +0 -21
- package/src/theming/CSSVarsPonyfill.js +0 -24
- package/src/theming/CustomStyle.js +0 -19
- package/src/theming/adaptCSSForIE.js +0 -90
- package/src/theming/applyTheme.js +0 -81
- package/src/theming/createComponentStyleTag.js +0 -49
- package/src/theming/createThemePropertiesStyleTag.js +0 -20
- package/src/theming/getConstructableStyle.js +0 -25
- package/src/theming/getEffectiveStyle.js +0 -15
- package/src/theming/getThemeDesignerTheme.js +0 -67
- package/src/thirdparty/Array.from.js +0 -16
- package/src/thirdparty/Array.prototype.fill.js +0 -44
- package/src/thirdparty/Array.prototype.find.js +0 -46
- package/src/thirdparty/Array.prototype.includes.js +0 -51
- package/src/thirdparty/Element.prototype.closest.js +0 -11
- package/src/thirdparty/Element.prototype.matches.js +0 -6
- package/src/thirdparty/Map.prototype.keys.js +0 -9
- package/src/thirdparty/Number.isInteger.js +0 -5
- package/src/thirdparty/Number.isNaN.js +0 -1
- package/src/thirdparty/Number.parseInt.js +0 -1
- package/src/thirdparty/Object.assign.js +0 -31
- package/src/thirdparty/Object.entries.js +0 -11
- package/src/thirdparty/Symbol.js +0 -2
- package/src/thirdparty/WeakSet.js +0 -27
- package/src/thirdparty/_merge.js +0 -32
- package/src/thirdparty/es6-string-methods.js +0 -182
- package/src/thirdparty/events-polyfills.js +0 -89
- package/src/thirdparty/fetch.js +0 -1
- package/src/thirdparty/isPlainObject.js +0 -18
- package/src/thirdparty/merge.js +0 -10
- package/src/thirdparty/template.js +0 -600
- package/src/thirdparty/webcomponents-sd-ce-pf.js +0 -318
- package/src/types/AnimationMode.js +0 -7
- package/src/types/CSSSize.js +0 -9
- package/src/types/CalendarType.js +0 -22
- package/src/types/DataType.js +0 -25
- package/src/types/Integer.js +0 -9
- package/src/types/ItemNavigationBehavior.js +0 -21
- package/src/types/NavigationMode.js +0 -6
- package/src/types/PopupState.js +0 -37
- package/src/types/ValueState.js +0 -22
- package/src/util/FetchHelper.js +0 -31
- package/src/util/FocusableElements.js +0 -60
- package/src/util/StringHelper.js +0 -26
- package/src/util/TabbableElements.js +0 -43
- package/src/util/createStyleInHead.js +0 -18
- package/src/util/detectNavigatorLanguage.js +0 -13
- package/src/util/findNodeOwner.js +0 -35
- package/src/util/formatMessage.js +0 -23
- package/src/util/getDesigntimePropertyAsArray.js +0 -4
- package/src/util/isDescendantOf.js +0 -15
- package/src/util/isNodeClickable.js +0 -19
- package/src/util/isNodeHidden.js +0 -13
- package/src/util/isNodeTabbable.js +0 -28
- package/src/util/isValidPropertyName.js +0 -20
- package/src/util/whenDOMReady.js +0 -13
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import getSharedResource from "../getSharedResource.js";
|
|
2
|
+
import { getTheme } from "../config/Theme.js";
|
|
3
|
+
const IllustrationCollections = new Map([
|
|
4
|
+
["sap_horizon", "V5"],
|
|
5
|
+
["sap_horizon_dark", "V5"],
|
|
6
|
+
["sap_horizon_hcb", "V5/HC"],
|
|
7
|
+
["sap_horizon_hcw", "V5/HC"],
|
|
8
|
+
]);
|
|
9
|
+
const FALLBACK_COLLECTION = "V4";
|
|
10
|
+
const loaders = new Map();
|
|
11
|
+
const registry = getSharedResource("SVGIllustration.registry", new Map());
|
|
12
|
+
const illustrationPromises = getSharedResource("SVGIllustration.promises", new Map());
|
|
13
|
+
const getCollection = () => {
|
|
14
|
+
const theme = getTheme();
|
|
15
|
+
if (IllustrationCollections.has(theme)) {
|
|
16
|
+
return IllustrationCollections.get(theme);
|
|
17
|
+
}
|
|
18
|
+
return FALLBACK_COLLECTION;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Processes the name of the illustration
|
|
22
|
+
* The name is used to generate the registry key and the loader key
|
|
23
|
+
* The registry key is used to store and get the illustration data from the registry
|
|
24
|
+
* The loader key is used to store and get the illustration loader from the loaders map
|
|
25
|
+
* The function generates the correct registry key and loader key based on whether an loader exists for the illustration
|
|
26
|
+
* If there is no loader registered for the collection, it falls back to the default collection
|
|
27
|
+
*/
|
|
28
|
+
const processName = (name) => {
|
|
29
|
+
let collection = getCollection();
|
|
30
|
+
const [set, illustrationName] = name.split("/");
|
|
31
|
+
let registryKey = `${set}/${collection}/${illustrationName}`;
|
|
32
|
+
if (!loaders.has(registryKey) && collection !== FALLBACK_COLLECTION) {
|
|
33
|
+
collection = FALLBACK_COLLECTION;
|
|
34
|
+
registryKey = `${set}/${collection}/${illustrationName}`;
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
registryKey,
|
|
38
|
+
collection,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
const registerIllustration = (name, data) => {
|
|
42
|
+
const collection = data.collection || FALLBACK_COLLECTION;
|
|
43
|
+
registry.set(`${data.set}/${collection}/${name}`, {
|
|
44
|
+
dialogSvg: data.dialogSvg,
|
|
45
|
+
sceneSvg: data.sceneSvg,
|
|
46
|
+
spotSvg: data.spotSvg,
|
|
47
|
+
dotSvg: data.dotSvg,
|
|
48
|
+
title: data.title,
|
|
49
|
+
subtitle: data.subtitle,
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
const registerIllustrationLoader = (illustrationName, loader) => {
|
|
53
|
+
loaders.set(illustrationName, loader);
|
|
54
|
+
};
|
|
55
|
+
const _loadIllustrationOnce = (illustrationName) => {
|
|
56
|
+
const { registryKey } = processName(illustrationName);
|
|
57
|
+
if (!illustrationPromises.has(registryKey)) {
|
|
58
|
+
if (!loaders.has(registryKey)) {
|
|
59
|
+
const illustrationPath = illustrationName.startsWith("fiori/") ? illustrationName.replace("fiori/", "") : illustrationName;
|
|
60
|
+
throw new Error(`No loader registered for the ${illustrationName} illustration. Probably you forgot to import the "@ui5/webcomponents-fiori/dist/illustrations/${illustrationPath}.js" module. Or you can import the "@ui5/webcomponents-fiori/dist/illustrations/AllIllustrations.js" module that will make all illustrations available, but fetch only the ones used.`);
|
|
61
|
+
}
|
|
62
|
+
const loadIllustrations = loaders.get(registryKey);
|
|
63
|
+
illustrationPromises.set(registryKey, loadIllustrations(registryKey));
|
|
64
|
+
}
|
|
65
|
+
return illustrationPromises.get(registryKey);
|
|
66
|
+
};
|
|
67
|
+
const getIllustrationDataSync = (illustrationName) => {
|
|
68
|
+
const { registryKey } = processName(illustrationName);
|
|
69
|
+
return registry.get(registryKey);
|
|
70
|
+
};
|
|
71
|
+
const getIllustrationData = async (illustrationName) => {
|
|
72
|
+
const { registryKey } = processName(illustrationName);
|
|
73
|
+
await _loadIllustrationOnce(illustrationName);
|
|
74
|
+
return registry.get(registryKey);
|
|
75
|
+
};
|
|
76
|
+
export { getIllustrationDataSync, registerIllustration, registerIllustrationLoader, getIllustrationData, };
|
|
77
|
+
//# sourceMappingURL=Illustrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Illustrations.js","sourceRoot":"","sources":["../../src/asset-registries/Illustrations.ts"],"names":[],"mappings":"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","sourcesContent":["import getSharedResource from \"../getSharedResource.js\";\nimport type { I18nText } from \"../i18nBundle.js\";\nimport { getTheme } from \"../config/Theme.js\";\n\ntype IllustrationLoader = (illustrationName: string) => Promise<IllustrationData>;\n\ntype IllustrationProperties = {\n\tdialogSvg: string,\n\tsceneSvg: string,\n\tspotSvg: string,\n\tdotSvg: string,\n\ttitle: I18nText,\n\tsubtitle: I18nText,\n};\n\ntype IllustrationData = IllustrationProperties & {\n\tset: string,\n\tcollection: string,\n};\n\nconst IllustrationCollections = new Map([\n\t[\"sap_horizon\", \"V5\"],\n\t[\"sap_horizon_dark\", \"V5\"],\n\t[\"sap_horizon_hcb\", \"V5/HC\"],\n\t[\"sap_horizon_hcw\", \"V5/HC\"],\n]);\n\nconst FALLBACK_COLLECTION = \"V4\";\n\nconst loaders = new Map<string, IllustrationLoader>();\nconst registry = getSharedResource<Map<string, IllustrationProperties>>(\"SVGIllustration.registry\", new Map());\nconst illustrationPromises = getSharedResource<Map<string, Promise<IllustrationData>>>(\"SVGIllustration.promises\", new Map());\n\nconst getCollection = () => {\n\tconst theme = getTheme();\n\n\tif (IllustrationCollections.has(theme)) {\n\t\treturn IllustrationCollections.get(theme);\n\t}\n\n\treturn FALLBACK_COLLECTION;\n};\n\n/**\n * Processes the name of the illustration\n * The name is used to generate the registry key and the loader key\n * The registry key is used to store and get the illustration data from the registry\n * The loader key is used to store and get the illustration loader from the loaders map\n * The function generates the correct registry key and loader key based on whether an loader exists for the illustration\n * If there is no loader registered for the collection, it falls back to the default collection\n */\nconst processName = (name: string) => {\n\tlet collection = getCollection();\n\tconst [set, illustrationName] = name.split(\"/\");\n\tlet registryKey = `${set}/${collection}/${illustrationName}`;\n\n\tif (!loaders.has(registryKey) && collection !== FALLBACK_COLLECTION) {\n\t\tcollection = FALLBACK_COLLECTION;\n\t\tregistryKey = `${set}/${collection}/${illustrationName}`;\n\t}\n\n\treturn {\n\t\tregistryKey,\n\t\tcollection,\n\t};\n};\n\nconst registerIllustration = (name: string, data: IllustrationData) => {\n\tconst collection = data.collection || FALLBACK_COLLECTION;\n\tregistry.set(`${data.set}/${collection}/${name}`, {\n\t\tdialogSvg: data.dialogSvg,\n\t\tsceneSvg: data.sceneSvg,\n\t\tspotSvg: data.spotSvg,\n\t\tdotSvg: data.dotSvg,\n\t\ttitle: data.title,\n\t\tsubtitle: data.subtitle,\n\t});\n};\n\nconst registerIllustrationLoader = (illustrationName: string, loader: IllustrationLoader) => {\n\tloaders.set(illustrationName, loader);\n};\n\nconst _loadIllustrationOnce = (illustrationName: string) => {\n\tconst { registryKey } = processName(illustrationName);\n\tif (!illustrationPromises.has(registryKey)) {\n\t\tif (!loaders.has(registryKey)) {\n\t\t\tconst illustrationPath = illustrationName.startsWith(\"fiori/\") ? illustrationName.replace(\"fiori/\", \"\") : illustrationName;\n\t\t\tthrow new Error(`No loader registered for the ${illustrationName} illustration. Probably you forgot to import the \"@ui5/webcomponents-fiori/dist/illustrations/${illustrationPath}.js\" module. Or you can import the \"@ui5/webcomponents-fiori/dist/illustrations/AllIllustrations.js\" module that will make all illustrations available, but fetch only the ones used.`);\n\t\t}\n\n\t\tconst loadIllustrations = loaders.get(registryKey)!;\n\t\tillustrationPromises.set(registryKey, loadIllustrations(registryKey));\n\t}\n\treturn illustrationPromises.get(registryKey);\n};\n\nconst getIllustrationDataSync = (illustrationName: string) => {\n\tconst { registryKey } = processName(illustrationName);\n\treturn registry.get(registryKey);\n};\n\nconst getIllustrationData = async (illustrationName: string) => {\n\tconst { registryKey } = processName(illustrationName);\n\n\tawait _loadIllustrationOnce(illustrationName);\n\treturn registry.get(registryKey);\n};\n\nexport {\n\tgetIllustrationDataSync,\n\tregisterIllustration,\n\tregisterIllustrationLoader,\n\tgetIllustrationData,\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type LocaleDataLoader = (locale: string) => Promise<CLDRData>;
|
|
2
|
+
type CLDRData = Record<string, object | boolean | string>;
|
|
3
|
+
declare const getLocaleData: (localeId: string) => CLDRData;
|
|
4
|
+
declare const fetchCldr: (language: string, region: string, script: string) => Promise<void>;
|
|
5
|
+
declare const registerLocaleDataLoader: (localeId: string, loader: LocaleDataLoader) => void;
|
|
6
|
+
export { registerLocaleDataLoader, fetchCldr, getLocaleData, };
|
|
7
|
+
export type { CLDRData, };
|
|
@@ -1,125 +1,136 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { attachLanguageChange } from "../locale/languageChange.js";
|
|
2
|
+
import getLocale from "../locale/getLocale.js";
|
|
3
3
|
import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from "../generated/AssetParameters.js";
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// default implementation - ui5 CDN
|
|
11
|
-
let cldrMappingFn = locale => `https://ui5.sap.com/1.60.2/resources/sap/ui/core/cldr/${locale}.json`;
|
|
12
|
-
|
|
4
|
+
import { getFeature } from "../FeaturesRegistry.js";
|
|
5
|
+
const localeDataMap = new Map();
|
|
6
|
+
const loaders = new Map();
|
|
7
|
+
const cldrPromises = new Map();
|
|
8
|
+
const reportedErrors = new Set();
|
|
9
|
+
let warningShown = false;
|
|
13
10
|
const M_ISO639_OLD_TO_NEW = {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
"iw": "he",
|
|
12
|
+
"ji": "yi",
|
|
13
|
+
"in": "id",
|
|
14
|
+
};
|
|
15
|
+
const _showAssetsWarningOnce = (localeId) => {
|
|
16
|
+
if (warningShown) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
console.warn(`[LocaleData] Supported locale "${localeId}" not configured, import the "Assets.js" module from the webcomponents package you are using.`); /* eslint-disable-line */
|
|
20
|
+
warningShown = true;
|
|
18
21
|
};
|
|
19
|
-
|
|
20
22
|
const calcLocale = (language, region, script) => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
23
|
+
// normalize language and handle special cases
|
|
24
|
+
language = (language && M_ISO639_OLD_TO_NEW[language]) || language;
|
|
25
|
+
// Special case 1: in an SAP context, the inclusive language code "no" always means Norwegian Bokmal ("nb")
|
|
26
|
+
if (language === "no") {
|
|
27
|
+
language = "nb";
|
|
28
|
+
}
|
|
29
|
+
// Special case 2: for Chinese, derive a default region from the script (this behavior is inherited from Java)
|
|
30
|
+
if (language === "zh" && !region) {
|
|
31
|
+
if (script === "Hans") {
|
|
32
|
+
region = "CN";
|
|
33
|
+
}
|
|
34
|
+
else if (script === "Hant") {
|
|
35
|
+
region = "TW";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Special case 3: for Serbian, there are cyrillic and latin scripts, "sh" and "sr-latn" map to "latin", "sr" maps to cyrillic.
|
|
39
|
+
if (language === "sh" || (language === "sr" && script === "Latn")) {
|
|
40
|
+
language = "sr";
|
|
41
|
+
region = "Latn";
|
|
42
|
+
}
|
|
43
|
+
// try language + region
|
|
44
|
+
let localeId = `${language}_${region}`;
|
|
45
|
+
if (SUPPORTED_LOCALES.includes(localeId)) {
|
|
46
|
+
if (loaders.has(localeId)) {
|
|
47
|
+
// supported and has loader
|
|
48
|
+
return localeId;
|
|
49
|
+
}
|
|
50
|
+
// supported, no loader - fallback to default and warn
|
|
51
|
+
_showAssetsWarningOnce(localeId);
|
|
52
|
+
return DEFAULT_LOCALE;
|
|
53
|
+
}
|
|
54
|
+
// not supported, try language only
|
|
55
|
+
localeId = language;
|
|
56
|
+
if (SUPPORTED_LOCALES.includes(localeId)) {
|
|
57
|
+
if (loaders.has(localeId)) {
|
|
58
|
+
// supported and has loader
|
|
59
|
+
return localeId;
|
|
60
|
+
}
|
|
61
|
+
// supported, no loader - fallback to default and warn
|
|
62
|
+
_showAssetsWarningOnce(localeId);
|
|
63
|
+
return DEFAULT_LOCALE;
|
|
64
|
+
}
|
|
65
|
+
// not supported - fallback to default locale
|
|
66
|
+
return DEFAULT_LOCALE;
|
|
48
67
|
};
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (!cldrMappingFn) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const missingLocales = SUPPORTED_LOCALES.filter(locale => !cldrData[locale] && !cldrUrls[locale]);
|
|
57
|
-
missingLocales.forEach(locale => {
|
|
58
|
-
cldrUrls[locale] = cldrMappingFn(locale);
|
|
59
|
-
});
|
|
68
|
+
// internal set data
|
|
69
|
+
const setLocaleData = (localeId, content) => {
|
|
70
|
+
localeDataMap.set(localeId, content);
|
|
60
71
|
};
|
|
61
|
-
|
|
62
|
-
const
|
|
63
|
-
|
|
72
|
+
// external getSync
|
|
73
|
+
const getLocaleData = (localeId) => {
|
|
74
|
+
// if there is no loader, the default fallback was fetched and a warning was given - use default locale instead
|
|
75
|
+
if (!loaders.has(localeId)) {
|
|
76
|
+
localeId = DEFAULT_LOCALE;
|
|
77
|
+
}
|
|
78
|
+
const content = localeDataMap.get(localeId);
|
|
79
|
+
if (!content) {
|
|
80
|
+
throw new Error(`CLDR data for locale ${localeId} is not loaded!`);
|
|
81
|
+
}
|
|
82
|
+
return content;
|
|
64
83
|
};
|
|
65
|
-
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
throw new Error(`Unknown module ${moduleName}`);
|
|
84
|
+
// load bundle over the network once
|
|
85
|
+
const _loadCldrOnce = (localeId) => {
|
|
86
|
+
if (!cldrPromises.get(localeId)) {
|
|
87
|
+
const loadCldr = loaders.get(localeId);
|
|
88
|
+
if (!loadCldr) {
|
|
89
|
+
throw new Error(`CLDR data for locale ${localeId} is not loaded!`);
|
|
90
|
+
}
|
|
91
|
+
cldrPromises.set(localeId, loadCldr(localeId));
|
|
92
|
+
}
|
|
93
|
+
return cldrPromises.get(localeId);
|
|
78
94
|
};
|
|
79
|
-
|
|
95
|
+
// external getAsync
|
|
80
96
|
const fetchCldr = async (language, region, script) => {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
const setCldrData = (locale, data) => {
|
|
107
|
-
cldrData[locale] = data;
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
const getCldrData = locale => {
|
|
111
|
-
return cldrData[locale];
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
const _registerMappingFunction = mappingFn => {
|
|
115
|
-
cldrMappingFn = mappingFn;
|
|
97
|
+
const localeId = calcLocale(language, region, script);
|
|
98
|
+
// reuse OpenUI5 CLDR if present
|
|
99
|
+
const openUI5Support = getFeature("OpenUI5Support");
|
|
100
|
+
if (openUI5Support) {
|
|
101
|
+
const cldrContent = openUI5Support.getLocaleDataObject();
|
|
102
|
+
if (cldrContent) {
|
|
103
|
+
// only if openui5 actually returned valid content
|
|
104
|
+
setLocaleData(localeId, cldrContent);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// fetch it
|
|
109
|
+
try {
|
|
110
|
+
const cldrContent = await _loadCldrOnce(localeId);
|
|
111
|
+
setLocaleData(localeId, cldrContent);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
const e = error;
|
|
115
|
+
if (!reportedErrors.has(e.message)) {
|
|
116
|
+
reportedErrors.add(e.message);
|
|
117
|
+
console.error(e.message); /* eslint-disable-line */
|
|
118
|
+
}
|
|
119
|
+
}
|
|
116
120
|
};
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
fetchCldr,
|
|
120
|
-
registerCldr,
|
|
121
|
-
setCldrData,
|
|
122
|
-
getCldrData,
|
|
123
|
-
getModuleContent,
|
|
124
|
-
_registerMappingFunction,
|
|
121
|
+
const registerLocaleDataLoader = (localeId, loader) => {
|
|
122
|
+
loaders.set(localeId, loader);
|
|
125
123
|
};
|
|
124
|
+
// register default loader for "en" from ui5 CDN (dev workflow without assets)
|
|
125
|
+
registerLocaleDataLoader("en", async () => {
|
|
126
|
+
const cldrContent = await fetch(`https://sdk.openui5.org/1.120.17/resources/sap/ui/core/cldr/en.json`);
|
|
127
|
+
return cldrContent.json();
|
|
128
|
+
});
|
|
129
|
+
// When the language changes dynamically (the user calls setLanguage),
|
|
130
|
+
// re-fetch the required CDRD data.
|
|
131
|
+
attachLanguageChange(() => {
|
|
132
|
+
const locale = getLocale();
|
|
133
|
+
return fetchCldr(locale.getLanguage(), locale.getRegion(), locale.getScript());
|
|
134
|
+
});
|
|
135
|
+
export { registerLocaleDataLoader, fetchCldr, getLocaleData, };
|
|
136
|
+
//# sourceMappingURL=LocaleData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocaleData.js","sourceRoot":"","sources":["../../src/asset-registries/LocaleData.ts"],"names":[],"mappings":"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","sourcesContent":["import { attachLanguageChange } from \"../locale/languageChange.js\";\nimport getLocale from \"../locale/getLocale.js\";\nimport { DEFAULT_LOCALE, SUPPORTED_LOCALES } from \"../generated/AssetParameters.js\";\nimport { getFeature } from \"../FeaturesRegistry.js\";\nimport type OpenUI5Support from \"../features/OpenUI5Support.js\";\n\ntype LocaleDataLoader = (locale: string) => Promise<CLDRData>;\ntype CLDRData = Record<string, object | boolean | string>;\n\nconst localeDataMap = new Map<string, CLDRData>();\nconst loaders = new Map<string, LocaleDataLoader>();\nconst cldrPromises = new Map<string, Promise<CLDRData>>();\nconst reportedErrors = new Set<string>();\nlet warningShown = false;\n\nconst M_ISO639_OLD_TO_NEW = {\n\t\"iw\": \"he\",\n\t\"ji\": \"yi\",\n\t\"in\": \"id\",\n};\n\nconst _showAssetsWarningOnce = (localeId: string) => {\n\tif (warningShown) {\n\t\treturn;\n\t}\n\n\tconsole.warn(`[LocaleData] Supported locale \"${localeId}\" not configured, import the \"Assets.js\" module from the webcomponents package you are using.`); /* eslint-disable-line */\n\n\twarningShown = true;\n};\n\nconst calcLocale = (language: string, region: string, script: string) => {\n\t// normalize language and handle special cases\n\tlanguage = (language && M_ISO639_OLD_TO_NEW[language as keyof typeof M_ISO639_OLD_TO_NEW]) || language;\n\t// Special case 1: in an SAP context, the inclusive language code \"no\" always means Norwegian Bokmal (\"nb\")\n\tif (language === \"no\") {\n\t\tlanguage = \"nb\";\n\t}\n\t// Special case 2: for Chinese, derive a default region from the script (this behavior is inherited from Java)\n\tif (language === \"zh\" && !region) {\n\t\tif (script === \"Hans\") {\n\t\t\tregion = \"CN\";\n\t\t} else if (script === \"Hant\") {\n\t\t\tregion = \"TW\";\n\t\t}\n\t}\n\n\t// Special case 3: for Serbian, there are cyrillic and latin scripts, \"sh\" and \"sr-latn\" map to \"latin\", \"sr\" maps to cyrillic.\n\tif (language === \"sh\" || (language === \"sr\" && script === \"Latn\")) {\n\t\tlanguage = \"sr\";\n\t\tregion = \"Latn\";\n\t}\n\n\t// try language + region\n\tlet localeId = `${language}_${region}`;\n\tif (SUPPORTED_LOCALES.includes(localeId)) {\n\t\tif (loaders.has(localeId)) {\n\t\t\t// supported and has loader\n\t\t\treturn localeId;\n\t\t}\n\n\t\t// supported, no loader - fallback to default and warn\n\t\t_showAssetsWarningOnce(localeId);\n\t\treturn DEFAULT_LOCALE;\n\t}\n\n\t// not supported, try language only\n\tlocaleId = language;\n\tif (SUPPORTED_LOCALES.includes(localeId)) {\n\t\tif (loaders.has(localeId)) {\n\t\t\t// supported and has loader\n\t\t\treturn localeId;\n\t\t}\n\n\t\t// supported, no loader - fallback to default and warn\n\t\t_showAssetsWarningOnce(localeId);\n\t\treturn DEFAULT_LOCALE;\n\t}\n\n\t// not supported - fallback to default locale\n\treturn DEFAULT_LOCALE;\n};\n\n// internal set data\nconst setLocaleData = (localeId: string, content: CLDRData) => {\n\tlocaleDataMap.set(localeId, content);\n};\n\n// external getSync\nconst getLocaleData = (localeId: string) => {\n\t// if there is no loader, the default fallback was fetched and a warning was given - use default locale instead\n\tif (!loaders.has(localeId)) {\n\t\tlocaleId = DEFAULT_LOCALE;\n\t}\n\n\tconst content = localeDataMap.get(localeId);\n\tif (!content) {\n\t\tthrow new Error(`CLDR data for locale ${localeId} is not loaded!`);\n\t}\n\n\treturn content;\n};\n\n// load bundle over the network once\nconst _loadCldrOnce = (localeId: string) => {\n\tif (!cldrPromises.get(localeId)) {\n\t\tconst loadCldr = loaders.get(localeId);\n\n\t\tif (!loadCldr) {\n\t\t\tthrow new Error(`CLDR data for locale ${localeId} is not loaded!`);\n\t\t}\n\n\t\tcldrPromises.set(localeId, loadCldr(localeId));\n\t}\n\n\treturn cldrPromises.get(localeId);\n};\n\n// external getAsync\nconst fetchCldr = async (language: string, region: string, script: string) => {\n\tconst localeId = calcLocale(language, region, script);\n\n\t// reuse OpenUI5 CLDR if present\n\tconst openUI5Support = getFeature<typeof OpenUI5Support>(\"OpenUI5Support\");\n\tif (openUI5Support) {\n\t\tconst cldrContent = openUI5Support.getLocaleDataObject();\n\t\tif (cldrContent) {\n\t\t\t// only if openui5 actually returned valid content\n\t\t\tsetLocaleData(localeId, cldrContent);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// fetch it\n\ttry {\n\t\tconst cldrContent = await _loadCldrOnce(localeId);\n\t\tsetLocaleData(localeId, cldrContent as CLDRData);\n\t} catch (error: unknown) {\n\t\tconst e = error as Error;\n\t\tif (!reportedErrors.has(e.message)) {\n\t\t\treportedErrors.add(e.message);\n\t\t\tconsole.error(e.message); /* eslint-disable-line */\n\t\t}\n\t}\n};\n\nconst registerLocaleDataLoader = (localeId: string, loader: LocaleDataLoader) => {\n\tloaders.set(localeId, loader);\n};\n\n// register default loader for \"en\" from ui5 CDN (dev workflow without assets)\nregisterLocaleDataLoader(\"en\", async () => {\n\tconst cldrContent = await fetch(`https://sdk.openui5.org/1.120.17/resources/sap/ui/core/cldr/en.json`);\n\treturn cldrContent.json() as Promise<CLDRData>;\n});\n\n// When the language changes dynamically (the user calls setLanguage),\n// re-fetch the required CDRD data.\nattachLanguageChange(() => {\n\tconst locale = getLocale();\n\treturn fetchCldr(locale.getLanguage(), locale.getRegion(), locale.getScript());\n});\n\nexport {\n\tregisterLocaleDataLoader,\n\tfetchCldr,\n\tgetLocaleData,\n};\n\nexport type {\n\tCLDRData,\n};\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type ThemeData = string;
|
|
2
|
+
type ThemeLoader = (themeName: string) => Promise<string>;
|
|
3
|
+
declare const registerThemePropertiesLoader: (packageName: string, themeName: string, loader: ThemeLoader) => void;
|
|
4
|
+
declare const registerCustomThemePropertiesLoader: (packageName: string, themeName: string, loader: ThemeLoader) => void;
|
|
5
|
+
declare const getThemeProperties: (packageName: string, themeName: string, externalThemeName?: string) => Promise<string | undefined>;
|
|
6
|
+
declare const getRegisteredPackages: () => Set<string>;
|
|
7
|
+
declare const isThemeRegistered: (theme: string) => boolean;
|
|
8
|
+
export { registerThemePropertiesLoader, registerCustomThemePropertiesLoader, getThemeProperties, getRegisteredPackages, isThemeRegistered, };
|
|
9
|
+
export type { ThemeData, ThemeLoader, };
|
|
@@ -1,87 +1,67 @@
|
|
|
1
|
-
import { fetchJsonOnce, fetchTextOnce } from "../util/FetchHelper.js";
|
|
2
1
|
import { DEFAULT_THEME } from "../generated/AssetParameters.js";
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
const themeURLs = new Map();
|
|
2
|
+
import { mergeStyles } from "../ManagedStyles.js";
|
|
3
|
+
import { fireThemeRegistered } from "../theming/ThemeRegistered.js";
|
|
6
4
|
const themeStyles = new Map();
|
|
5
|
+
const loaders = new Map();
|
|
6
|
+
const customLoaders = new Map();
|
|
7
7
|
const registeredPackages = new Set();
|
|
8
8
|
const registeredThemes = new Set();
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
*
|
|
15
|
-
* Example usage:
|
|
16
|
-
* 1) Pass the CSS Vars as a string directly.
|
|
17
|
-
* registerThemeProperties("my-package", "my_theme", ":root{--var1: red;}");
|
|
18
|
-
* 2) Pass the CSS Vars as an object directly
|
|
19
|
-
* registerThemeProperties("my-package", "my_theme", {"_": ":root{--var1: red;}"});
|
|
20
|
-
* 3) Pass a URL to a CSS file, containing the CSS Vars. Will be fetched on demand, not upon registration.
|
|
21
|
-
* registerThemeProperties("my-package", "my_theme", "http://url/to/my/theme.css");
|
|
22
|
-
* 4) Pass a URL to a JSON file, containing the CSS Vars in its "_" property. Will be fetched on demand, not upon registration.
|
|
23
|
-
* registerThemeProperties("my-package", "my_theme", "http://url/to/my/theme.json");
|
|
24
|
-
*
|
|
25
|
-
* @public
|
|
26
|
-
* @param packageName - the NPM package for which CSS Vars are registered
|
|
27
|
-
* @param themeName - the theme which the CSS Vars implement
|
|
28
|
-
* @param style - can be one of four options: a string, an object with a "_" property, URL to a CSS file, or URL to a JSON file with a "_" property
|
|
29
|
-
*/
|
|
30
|
-
const registerThemeProperties = (packageName, themeName, style) => {
|
|
31
|
-
if (style._) {
|
|
32
|
-
// JSON object like ({"_": ":root"})
|
|
33
|
-
themeStyles.set(`${packageName}_${themeName}`, style._);
|
|
34
|
-
} else if (style.includes(":root")) {
|
|
35
|
-
// pure string
|
|
36
|
-
themeStyles.set(`${packageName}_${themeName}`, style);
|
|
37
|
-
} else {
|
|
38
|
-
// url for fetching
|
|
39
|
-
themeURLs.set(`${packageName}_${themeName}`, style);
|
|
40
|
-
}
|
|
41
|
-
registeredPackages.add(packageName);
|
|
42
|
-
registeredThemes.add(themeName);
|
|
9
|
+
const registerThemePropertiesLoader = (packageName, themeName, loader) => {
|
|
10
|
+
loaders.set(`${packageName}/${themeName}`, loader);
|
|
11
|
+
registeredPackages.add(packageName);
|
|
12
|
+
registeredThemes.add(themeName);
|
|
13
|
+
fireThemeRegistered(themeName);
|
|
43
14
|
};
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const style = themeStyles.get(`${packageName}_${themeName}`);
|
|
47
|
-
if (style) {
|
|
48
|
-
return style;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (!registeredThemes.has(themeName)) {
|
|
52
|
-
const regThemesStr = [...registeredThemes.values()].join(", ");
|
|
53
|
-
console.warn(`You have requested a non-registered theme - falling back to ${DEFAULT_THEME}. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */
|
|
54
|
-
return themeStyles.get(`${packageName}_${DEFAULT_THEME}`);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const data = await fetchThemeProperties(packageName, themeName);
|
|
58
|
-
const themeProps = data._ || data;
|
|
59
|
-
|
|
60
|
-
themeStyles.set(`${packageName}_${themeName}`, themeProps);
|
|
61
|
-
return themeProps;
|
|
15
|
+
const registerCustomThemePropertiesLoader = (packageName, themeName, loader) => {
|
|
16
|
+
customLoaders.set(`${packageName}/${themeName}`, loader);
|
|
62
17
|
};
|
|
63
|
-
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
18
|
+
const getThemeProperties = async (packageName, themeName, externalThemeName) => {
|
|
19
|
+
const cacheKey = `${packageName}_${themeName}_${externalThemeName || ""}`;
|
|
20
|
+
const cachedStyleData = themeStyles.get(cacheKey);
|
|
21
|
+
if (cachedStyleData !== undefined) { // it's valid for style to be an empty string
|
|
22
|
+
return cachedStyleData;
|
|
23
|
+
}
|
|
24
|
+
if (!registeredThemes.has(themeName)) {
|
|
25
|
+
const regThemesStr = [...registeredThemes.values()].join(", ");
|
|
26
|
+
console.warn(`You have requested a non-registered theme ${themeName} - falling back to ${DEFAULT_THEME}. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */
|
|
27
|
+
return _getThemeProperties(packageName, DEFAULT_THEME);
|
|
28
|
+
}
|
|
29
|
+
const [style, customStyle] = await Promise.all([
|
|
30
|
+
_getThemeProperties(packageName, themeName),
|
|
31
|
+
externalThemeName ? _getThemeProperties(packageName, externalThemeName, true) : undefined,
|
|
32
|
+
]);
|
|
33
|
+
const styleData = mergeStyles(style, customStyle);
|
|
34
|
+
if (styleData) {
|
|
35
|
+
themeStyles.set(cacheKey, styleData);
|
|
36
|
+
}
|
|
37
|
+
return styleData;
|
|
72
38
|
};
|
|
73
|
-
|
|
74
|
-
const
|
|
75
|
-
|
|
39
|
+
const _getThemeProperties = async (packageName, themeName, forCustomTheme = false) => {
|
|
40
|
+
const loadersMap = forCustomTheme ? customLoaders : loaders;
|
|
41
|
+
const loader = loadersMap.get(`${packageName}/${themeName}`);
|
|
42
|
+
if (!loader) {
|
|
43
|
+
// no themes for package
|
|
44
|
+
if (!forCustomTheme) {
|
|
45
|
+
console.error(`Theme [${themeName}] not registered for package [${packageName}]`); /* eslint-disable-line */
|
|
46
|
+
}
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
let data;
|
|
50
|
+
try {
|
|
51
|
+
data = await loader(themeName);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
const e = error;
|
|
55
|
+
console.error(packageName, e.message); /* eslint-disable-line */
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
return data;
|
|
76
59
|
};
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return registeredThemes.has(theme);
|
|
60
|
+
const getRegisteredPackages = () => {
|
|
61
|
+
return registeredPackages;
|
|
80
62
|
};
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
registerThemeProperties,
|
|
84
|
-
getThemeProperties,
|
|
85
|
-
getRegisteredPackages,
|
|
86
|
-
isThemeRegistered,
|
|
63
|
+
const isThemeRegistered = (theme) => {
|
|
64
|
+
return registeredThemes.has(theme);
|
|
87
65
|
};
|
|
66
|
+
export { registerThemePropertiesLoader, registerCustomThemePropertiesLoader, getThemeProperties, getRegisteredPackages, isThemeRegistered, };
|
|
67
|
+
//# sourceMappingURL=Themes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Themes.js","sourceRoot":"","sources":["../../src/asset-registries/Themes.ts"],"names":[],"mappings":"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","sourcesContent":["import { DEFAULT_THEME } from \"../generated/AssetParameters.js\";\nimport { mergeStyles } from \"../ManagedStyles.js\";\nimport { fireThemeRegistered } from \"../theming/ThemeRegistered.js\";\n\ntype ThemeData = string;\ntype ThemeLoader = (themeName: string) => Promise<string>;\n\nconst themeStyles = new Map<string, string>();\nconst loaders = new Map<string, ThemeLoader>();\nconst customLoaders = new Map<string, ThemeLoader>();\nconst registeredPackages = new Set<string>();\nconst registeredThemes = new Set<string>();\n\nconst registerThemePropertiesLoader = (packageName: string, themeName: string, loader: ThemeLoader) => {\n\tloaders.set(`${packageName}/${themeName}`, loader);\n\tregisteredPackages.add(packageName);\n\tregisteredThemes.add(themeName);\n\tfireThemeRegistered(themeName);\n};\n\nconst registerCustomThemePropertiesLoader = (packageName: string, themeName: string, loader: ThemeLoader) => {\n\tcustomLoaders.set(`${packageName}/${themeName}`, loader);\n};\n\nconst getThemeProperties = async (packageName: string, themeName: string, externalThemeName?: string) => {\n\tconst cacheKey = `${packageName}_${themeName}_${externalThemeName || \"\"}`;\n\tconst cachedStyleData = themeStyles.get(cacheKey);\n\tif (cachedStyleData !== undefined) { // it's valid for style to be an empty string\n\t\treturn cachedStyleData;\n\t}\n\n\tif (!registeredThemes.has(themeName)) {\n\t\tconst regThemesStr = [...registeredThemes.values()].join(\", \");\n\t\tconsole.warn(`You have requested a non-registered theme ${themeName} - falling back to ${DEFAULT_THEME}. Registered themes are: ${regThemesStr}`); /* eslint-disable-line */\n\t\treturn _getThemeProperties(packageName, DEFAULT_THEME);\n\t}\n\n\tconst [style, customStyle] = await Promise.all([\n\t\t_getThemeProperties(packageName, themeName),\n\t\texternalThemeName ? _getThemeProperties(packageName, externalThemeName, true) : undefined,\n\t]);\n\n\tconst styleData = mergeStyles(style, customStyle);\n\tif (styleData) {\n\t\tthemeStyles.set(cacheKey, styleData);\n\t}\n\n\treturn styleData;\n};\n\nconst _getThemeProperties = async (packageName: string, themeName: string, forCustomTheme = false) => {\n\tconst loadersMap = forCustomTheme ? customLoaders : loaders;\n\tconst loader = loadersMap.get(`${packageName}/${themeName}`);\n\tif (!loader) {\n\t\t// no themes for package\n\t\tif (!forCustomTheme) {\n\t\t\tconsole.error(`Theme [${themeName}] not registered for package [${packageName}]`); /* eslint-disable-line */\n\t\t}\n\t\treturn;\n\t}\n\tlet data;\n\ttry {\n\t\tdata = await loader(themeName);\n\t} catch (error: unknown) {\n\t\tconst e = error as Error;\n\t\tconsole.error(packageName, e.message); /* eslint-disable-line */\n\t\treturn;\n\t}\n\n\treturn data;\n};\n\nconst getRegisteredPackages = () => {\n\treturn registeredPackages;\n};\n\nconst isThemeRegistered = (theme: string) => {\n\treturn registeredThemes.has(theme);\n};\n\nexport {\n\tregisterThemePropertiesLoader,\n\tregisterCustomThemePropertiesLoader,\n\tgetThemeProperties,\n\tgetRegisteredPackages,\n\tisThemeRegistered,\n};\n\nexport type {\n\tThemeData,\n\tThemeLoader,\n};\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
type I18nLoader = (localeId: string) => Promise<I18nData>;
|
|
2
|
+
type I18nData = Record<string, string>;
|
|
3
|
+
/**
|
|
4
|
+
* Registers i18n loader function for given package and locale.
|
|
5
|
+
*
|
|
6
|
+
* @public
|
|
7
|
+
* @param {string} packageName for which package this loader can fetch data
|
|
8
|
+
* @param {string} localeId locale that this loader can handle
|
|
9
|
+
* @param {function} loader async function that will be passed a localeId and should return a JSON object
|
|
10
|
+
*/
|
|
11
|
+
declare const registerI18nLoader: (packageName: string, localeId: string, loader: I18nLoader) => void;
|
|
12
|
+
declare const getI18nBundleData: (packageName: string) => I18nData | null | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* This method preforms the asynchronous task of fetching the actual text resources. It will fetch
|
|
15
|
+
* each text resource over the network once (even for multiple calls to the same method).
|
|
16
|
+
* It should be fully finished before the i18nBundle class is created in the webcomponents.
|
|
17
|
+
* This method uses the bundle URLs that are populated by the `registerI18nBundle` method.
|
|
18
|
+
* To simplify the usage, the synchronization of both methods happens internally for the same `bundleId`
|
|
19
|
+
* @param {packageName} packageName the NPM package name
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
declare const fetchI18nBundle: (packageName: string) => Promise<void>;
|
|
23
|
+
export { registerI18nLoader, fetchI18nBundle, getI18nBundleData, };
|