@ui5/webcomponents-base 0.0.0-cc312800a → 0.0.0-ce98ce2bb
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/.eslintignore +8 -4
- package/.npsrc.json +3 -0
- package/CHANGELOG.md +787 -0
- package/README.md +57 -7
- package/bundle.esm.js +26 -13
- package/config/wdio.conf.cjs +400 -0
- package/{src/AssetRegistry.js → dist/AssetRegistry.d.ts} +1 -7
- package/dist/AssetRegistry.js +2 -7
- package/dist/AssetRegistry.js.map +1 -0
- package/dist/Boot.d.ts +9 -0
- package/dist/Boot.js +56 -28
- package/dist/Boot.js.map +1 -0
- package/dist/CSP.d.ts +30 -0
- package/dist/CSP.js +51 -0
- package/dist/CSP.js.map +1 -0
- package/dist/CustomElementsRegistry.d.ts +5 -0
- package/dist/CustomElementsRegistry.js +69 -30
- package/dist/CustomElementsRegistry.js.map +1 -0
- package/dist/CustomElementsScope.d.ts +7 -0
- package/dist/CustomElementsScope.js +11 -108
- 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 +12 -54
- package/dist/DOMObserver.js.map +1 -0
- package/dist/Device.d.ts +13 -0
- package/dist/Device.js +159 -84
- package/dist/Device.js.map +1 -0
- package/dist/EventProvider.d.ts +25 -0
- package/dist/EventProvider.js +67 -88
- package/dist/EventProvider.js.map +1 -0
- package/dist/FeaturesRegistry.d.ts +3 -0
- package/dist/FeaturesRegistry.js +5 -7
- package/dist/FeaturesRegistry.js.map +1 -0
- package/dist/FontFace.d.ts +2 -0
- package/dist/FontFace.js +17 -110
- package/dist/FontFace.js.map +1 -0
- package/dist/IgnoreCustomElements.d.ts +27 -0
- package/dist/IgnoreCustomElements.js +39 -0
- package/dist/IgnoreCustomElements.js.map +1 -0
- package/dist/InitialConfiguration.d.ts +27 -0
- package/dist/InitialConfiguration.js +121 -114
- package/dist/InitialConfiguration.js.map +1 -0
- package/dist/Keys.d.ts +61 -0
- package/dist/Keys.js +178 -229
- package/dist/Keys.js.map +1 -0
- package/dist/ManagedStyles.d.ts +8 -0
- package/dist/ManagedStyles.js +78 -0
- package/dist/ManagedStyles.js.map +1 -0
- package/dist/MarkedEvents.d.ts +9 -0
- package/dist/MarkedEvents.js +15 -0
- package/dist/MarkedEvents.js.map +1 -0
- package/dist/MediaRange.d.ts +37 -0
- package/dist/MediaRange.js +54 -65
- package/dist/MediaRange.js.map +1 -0
- package/dist/PropertiesFileFormat.d.ts +8 -0
- package/dist/PropertiesFileFormat.js +72 -82
- package/dist/PropertiesFileFormat.js.map +1 -0
- package/dist/Render.d.ts +47 -0
- package/dist/Render.js +82 -112
- package/dist/Render.js.map +1 -0
- package/dist/RenderQueue.d.ts +19 -0
- package/dist/RenderQueue.js +52 -62
- package/dist/RenderQueue.js.map +1 -0
- package/dist/Runtimes.d.ts +27 -0
- package/dist/Runtimes.js +86 -0
- package/dist/Runtimes.js.map +1 -0
- package/dist/StaticArea.d.ts +3 -0
- package/dist/StaticArea.js +5 -1
- package/dist/StaticArea.js.map +1 -0
- package/dist/StaticAreaItem.d.ts +37 -0
- package/dist/StaticAreaItem.js +89 -83
- package/dist/StaticAreaItem.js.map +1 -0
- package/dist/SystemCSSVars.d.ts +2 -0
- package/dist/SystemCSSVars.js +6 -28
- package/dist/SystemCSSVars.js.map +1 -0
- package/{src/Theming.js → dist/Theming.d.ts} +0 -1
- package/dist/Theming.js +1 -1
- package/dist/Theming.js.map +1 -0
- package/dist/UI5Element.d.ts +380 -0
- package/dist/UI5Element.js +928 -997
- package/dist/UI5Element.js.map +1 -0
- package/dist/UI5ElementMetadata.d.ts +150 -0
- package/dist/UI5ElementMetadata.js +278 -298
- 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/api.json +1 -0
- package/dist/asset-registries/Icons.d.ts +39 -0
- package/dist/asset-registries/Icons.js +120 -102
- package/dist/asset-registries/Icons.js.map +1 -0
- package/dist/asset-registries/Illustrations.d.ts +18 -0
- package/dist/asset-registries/Illustrations.js +85 -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 +104 -118
- package/dist/asset-registries/LocaleData.js.map +1 -0
- package/dist/asset-registries/Themes.d.ts +11 -0
- package/dist/asset-registries/Themes.js +40 -66
- package/dist/asset-registries/Themes.js.map +1 -0
- package/dist/asset-registries/i18n.d.ts +23 -0
- package/dist/asset-registries/i18n.js +61 -81
- 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/assets/Boot.34b7cea0.css +1 -0
- package/dist/assets/Boot.52ac4401.js +9 -0
- package/dist/assets/bundle.esm.6d93df7e.js +50 -0
- package/dist/config/AnimationMode.d.ts +14 -0
- package/dist/config/AnimationMode.js +21 -18
- package/dist/config/AnimationMode.js.map +1 -0
- package/dist/config/CalendarType.d.ts +8 -0
- package/dist/config/CalendarType.js +13 -12
- package/dist/config/CalendarType.js.map +1 -0
- package/dist/config/FormatSettings.d.ts +15 -0
- package/dist/config/FormatSettings.js +15 -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 +43 -43
- package/dist/config/Language.js.map +1 -0
- package/dist/config/NoConflict.d.ts +20 -0
- package/dist/config/NoConflict.js +41 -41
- package/dist/config/NoConflict.js.map +1 -0
- package/dist/config/RTL.d.ts +7 -0
- package/dist/config/RTL.js +26 -20
- package/dist/config/RTL.js.map +1 -0
- package/dist/config/Theme.d.ts +38 -0
- package/dist/config/Theme.js +64 -22
- package/dist/config/Theme.js.map +1 -0
- package/dist/config/ThemeRoot.d.ts +29 -0
- package/dist/config/ThemeRoot.js +59 -0
- package/dist/config/ThemeRoot.js.map +1 -0
- package/dist/config/Timezone.d.ts +17 -0
- package/dist/config/Timezone.js +30 -0
- package/dist/config/Timezone.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/css/BusyIndicator.css +80 -0
- package/dist/css/FontFace.css +84 -0
- package/dist/css/OverrideFontFace.css +32 -0
- package/dist/css/SystemCSSVars.css +17 -0
- package/dist/decorators/customElement.d.ts +23 -0
- package/dist/decorators/customElement.js +37 -0
- package/dist/decorators/customElement.js.map +1 -0
- package/dist/decorators/event.d.ts +10 -0
- package/dist/decorators/event.js +24 -0
- package/dist/decorators/event.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/slot.d.ts +9 -0
- package/dist/decorators/slot.js +37 -0
- package/dist/decorators/slot.js.map +1 -0
- package/dist/delegate/ItemNavigation.d.ts +113 -0
- package/dist/delegate/ItemNavigation.js +277 -246
- package/dist/delegate/ItemNavigation.js.map +1 -0
- package/dist/delegate/ResizeHandler.d.ts +25 -0
- package/dist/delegate/ResizeHandler.js +72 -91
- package/dist/delegate/ResizeHandler.js.map +1 -0
- package/dist/delegate/ScrollEnablement.d.ts +49 -0
- package/dist/delegate/ScrollEnablement.js +157 -174
- package/dist/delegate/ScrollEnablement.js.map +1 -0
- package/dist/features/F6Navigation.d.ts +19 -0
- package/dist/features/F6Navigation.js +151 -0
- package/dist/features/F6Navigation.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 +36 -0
- package/dist/features/OpenUI5Support.js +150 -121
- package/dist/features/OpenUI5Support.js.map +1 -0
- package/dist/generated/AssetParameters.js +3 -1
- package/dist/generated/VersionInfo.js +10 -0
- package/dist/generated/css/BusyIndicator.css.d.ts +3 -0
- package/dist/generated/css/BusyIndicator.css.js +7 -0
- package/dist/generated/css/BusyIndicator.css.js.map +1 -0
- package/dist/generated/css/FontFace.css.d.ts +3 -0
- package/dist/generated/css/FontFace.css.js +7 -0
- package/dist/generated/css/FontFace.css.js.map +1 -0
- package/dist/generated/css/OverrideFontFace.css.d.ts +3 -0
- package/dist/generated/css/OverrideFontFace.css.js +7 -0
- package/dist/generated/css/OverrideFontFace.css.js.map +1 -0
- package/dist/generated/css/SystemCSSVars.css.d.ts +3 -0
- package/dist/generated/css/SystemCSSVars.css.js +7 -0
- package/dist/generated/css/SystemCSSVars.css.js.map +1 -0
- package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.d.ts +4 -0
- package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js +9 -0
- package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.js.map +1 -0
- package/dist/getSharedResource.d.ts +11 -0
- package/dist/getSharedResource.js +28 -18
- package/dist/getSharedResource.js.map +1 -0
- package/dist/global.d.ts +40 -0
- package/dist/i18nBundle.d.ts +43 -0
- package/dist/i18nBundle.js +68 -44
- package/dist/i18nBundle.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 +6 -11
- package/dist/locale/RTLAwareRegistry.js.map +1 -0
- package/dist/locale/applyDirection.d.ts +10 -0
- package/dist/locale/applyDirection.js +7 -7
- package/dist/locale/applyDirection.js.map +1 -0
- package/dist/locale/directionChange.d.ts +15 -0
- package/dist/locale/directionChange.js +7 -15
- package/dist/locale/directionChange.js.map +1 -0
- package/dist/locale/getEffectiveDir.d.ts +2 -0
- package/dist/locale/getEffectiveDir.js +20 -24
- package/dist/locale/getEffectiveDir.js.map +1 -0
- package/dist/locale/getLocale.d.ts +7 -0
- package/dist/locale/getLocale.js +26 -29
- package/dist/locale/getLocale.js.map +1 -0
- package/dist/locale/languageChange.d.ts +5 -0
- package/dist/locale/languageChange.js +8 -16
- 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/LitRenderer.d.ts +14 -0
- package/dist/renderer/LitRenderer.js +34 -24
- package/dist/renderer/LitRenderer.js.map +1 -0
- package/dist/renderer/directives/style-map.js +72 -0
- package/dist/renderer/executeTemplate.d.ts +13 -0
- package/dist/renderer/executeTemplate.js +20 -7
- package/dist/renderer/executeTemplate.js.map +1 -0
- package/dist/sap/base/Log.js +240 -0
- package/dist/sap/base/assert.js +7 -0
- package/dist/sap/base/security/URLListValidator.js +159 -0
- package/dist/sap/base/security/encodeCSS.js +14 -0
- package/dist/sap/base/security/encodeXML.js +23 -0
- package/dist/sap/base/security/sanitizeHTML.js +16 -0
- package/dist/sap/base/strings/toHex.js +8 -0
- package/dist/sap/base/util/now.js +7 -0
- package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +3600 -0
- package/dist/theming/CustomStyle.d.ts +6 -0
- package/dist/theming/CustomStyle.js +39 -31
- package/dist/theming/CustomStyle.js.map +1 -0
- package/dist/theming/ThemeLoaded.d.ts +5 -0
- package/dist/theming/ThemeLoaded.js +8 -16
- 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 +63 -65
- package/dist/theming/applyTheme.js.map +1 -0
- package/dist/theming/getConstructableStyle.d.ts +9 -0
- package/dist/theming/getConstructableStyle.js +12 -17
- package/dist/theming/getConstructableStyle.js.map +1 -0
- package/dist/theming/getEffectiveLinksHrefs.d.ts +3 -0
- package/dist/theming/getEffectiveLinksHrefs.js +17 -0
- package/dist/theming/getEffectiveLinksHrefs.js.map +1 -0
- package/dist/theming/getEffectiveStyle.d.ts +3 -0
- package/dist/theming/getEffectiveStyle.js +25 -23
- package/dist/theming/getEffectiveStyle.js.map +1 -0
- package/dist/theming/getStylesString.d.ts +3 -0
- package/dist/theming/getStylesString.js +9 -11
- package/dist/theming/getStylesString.js.map +1 -0
- package/dist/theming/getThemeDesignerTheme.d.ts +7 -0
- package/dist/theming/getThemeDesignerTheme.js +73 -60
- package/dist/theming/getThemeDesignerTheme.js.map +1 -0
- package/dist/theming/preloadLinks.d.ts +3 -0
- package/dist/theming/preloadLinks.js +19 -0
- package/dist/theming/preloadLinks.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/types/AnimationMode.d.ts +32 -0
- package/dist/types/AnimationMode.js +33 -6
- package/dist/types/AnimationMode.js.map +1 -0
- package/dist/types/CSSColor.d.ts +15 -0
- package/dist/types/CSSColor.js +14 -5
- package/dist/types/CSSColor.js.map +1 -0
- package/dist/types/CSSSize.d.ts +15 -0
- package/dist/types/CSSSize.js +14 -5
- package/dist/types/CSSSize.js.map +1 -0
- package/dist/types/CalendarType.d.ts +37 -0
- package/dist/types/CalendarType.js +35 -18
- package/dist/types/CalendarType.js.map +1 -0
- package/dist/types/DOMReference.d.ts +17 -0
- package/dist/types/DOMReference.js +25 -0
- package/dist/types/DOMReference.js.map +1 -0
- package/dist/types/DataType.d.ts +25 -0
- package/dist/types/DataType.js +33 -14
- package/dist/types/DataType.js.map +1 -0
- package/dist/types/Float.d.ts +17 -0
- package/dist/types/Float.js +17 -6
- package/dist/types/Float.js.map +1 -0
- package/dist/types/Integer.d.ts +17 -0
- package/dist/types/Integer.js +17 -5
- package/dist/types/Integer.js.map +1 -0
- package/dist/types/InvisibleMessageMode.d.ts +25 -0
- package/dist/types/InvisibleMessageMode.js +27 -0
- package/dist/types/InvisibleMessageMode.js.map +1 -0
- package/dist/types/ItemNavigationBehavior.d.ts +24 -0
- package/dist/types/ItemNavigationBehavior.js +22 -12
- package/dist/types/ItemNavigationBehavior.js.map +1 -0
- package/dist/types/NavigationMode.d.ts +32 -0
- package/dist/types/NavigationMode.js +33 -6
- package/dist/types/NavigationMode.js.map +1 -0
- package/dist/types/ValueState.d.ts +42 -0
- package/dist/types/ValueState.js +41 -19
- package/dist/types/ValueState.js.map +1 -0
- package/dist/types.d.ts +18 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/updateShadowRoot.d.ts +8 -0
- package/dist/updateShadowRoot.js +32 -16
- package/dist/updateShadowRoot.js.map +1 -0
- package/dist/util/AriaLabelHelper.d.ts +15 -0
- package/dist/util/AriaLabelHelper.js +166 -36
- package/dist/util/AriaLabelHelper.js.map +1 -0
- package/dist/util/Caret.d.ts +7 -0
- package/dist/util/Caret.js +16 -38
- package/dist/util/Caret.js.map +1 -0
- package/dist/util/ColorConversion.d.ts +30 -0
- package/dist/util/ColorConversion.js +315 -348
- 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 +67 -68
- 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 +7 -0
- package/dist/util/PopupUtils.js +58 -77
- package/dist/util/PopupUtils.js.map +1 -0
- package/dist/util/SlotsHelper.d.ts +9 -0
- package/dist/util/SlotsHelper.js +22 -35
- package/dist/util/SlotsHelper.js.map +1 -0
- package/dist/util/StringHelper.d.ts +3 -0
- package/dist/util/StringHelper.js +17 -20
- package/dist/util/StringHelper.js.map +1 -0
- package/dist/util/TabbableElements.d.ts +17 -0
- package/dist/util/TabbableElements.js +53 -43
- package/dist/util/TabbableElements.js.map +1 -0
- package/dist/util/arraysAreEqual.d.ts +2 -0
- package/dist/util/arraysAreEqual.js +10 -12
- package/dist/util/arraysAreEqual.js.map +1 -0
- package/{src/util/clamp.js → dist/util/clamp.d.ts} +1 -4
- package/dist/util/clamp.js +2 -2
- 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/createStyleInHead.d.ts +8 -0
- package/dist/util/createStyleInHead.js +10 -10
- package/dist/util/createStyleInHead.js.map +1 -0
- package/dist/util/debounce.d.ts +2 -0
- package/dist/util/debounce.js +6 -8
- package/dist/util/debounce.js.map +1 -0
- package/dist/util/detectNavigatorLanguage.d.ts +2 -0
- package/dist/util/detectNavigatorLanguage.js +7 -10
- package/dist/util/detectNavigatorLanguage.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/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 +6 -8
- package/dist/util/getActiveElement.js.map +1 -0
- package/dist/util/getClassCopy.d.ts +400 -0
- package/dist/util/getClassCopy.js +7 -7
- package/dist/util/getClassCopy.js.map +1 -0
- package/dist/util/getDesigntimePropertyAsArray.d.ts +2 -0
- package/dist/util/getDesigntimePropertyAsArray.js +4 -3
- package/dist/util/getDesigntimePropertyAsArray.js.map +1 -0
- package/dist/util/getEffectiveContentDensity.d.ts +2 -0
- package/dist/util/getEffectiveContentDensity.js +2 -3
- package/dist/util/getEffectiveContentDensity.js.map +1 -0
- package/dist/util/getEffectiveScrollbarStyle.d.ts +2 -0
- package/dist/util/getEffectiveScrollbarStyle.js +4 -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 +17 -11
- package/dist/util/getSingletonElementInstance.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 +6 -9
- 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 +16 -17
- package/dist/util/isValidPropertyName.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 +48 -0
- package/dist/validateThemeRoot.js.map +1 -0
- package/index.js +228 -2
- package/lib/generate-asset-parameters/index.js +11 -6
- package/lib/generate-styles/index.js +31 -0
- package/lib/generate-version-info/index.js +32 -0
- package/package-scripts.cjs +71 -0
- package/package.json +19 -9
- package/src/css/BusyIndicator.css +80 -0
- package/src/css/FontFace.css +84 -0
- package/src/css/OverrideFontFace.css +32 -0
- package/src/css/SystemCSSVars.css +17 -0
- package/src/renderer/directives/style-map.js +72 -0
- package/tsconfig.json +14 -0
- package/used-modules.txt +10 -0
- package/config/rollup.config.js +0 -1
- package/config/wdio.conf.js +0 -1
- package/dist/RenderScheduler.js +0 -44
- package/dist/animations/config.js +0 -5
- package/dist/config/AssetsPath.js +0 -17
- package/dist/isLegacyBrowser.js +0 -3
- package/dist/renderer/ifDefined.js +0 -21
- package/dist/renderer/scopeHTML.js +0 -32
- package/dist/resources/bundle.esm.js +0 -121
- package/dist/resources/bundle.esm.js.map +0 -1
- package/dist/test-resources/assets/Themes.js +0 -17
- 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 -41
- package/dist/test-resources/elements/WithStaticArea.js +0 -76
- package/dist/test-resources/pages/AllTestElements.html +0 -39
- package/dist/test-resources/pages/Configuration.html +0 -18
- package/dist/test-resources/pages/ConfigurationScript.html +0 -34
- package/dist/test-resources/pages/assets/messagebundle_de.properties +0 -1
- package/dist/test-resources/pages/assets/messagebundle_en.properties +0 -1
- package/dist/test-resources/pages/assets/messagebundle_es.properties +0 -1
- package/dist/test-resources/pages/assets/messagebundle_fr.properties +0 -1
- package/dist/test-resources/pages/i18n.html +0 -35
- package/dist/test-resources/specs/ConfigurationChange.spec.js +0 -27
- package/dist/test-resources/specs/ConfigurationScript.spec.js +0 -63
- package/dist/test-resources/specs/ConfigurationURL.spec.js +0 -47
- package/dist/test-resources/specs/CustomTheme.spec.js +0 -27
- package/dist/test-resources/specs/StaticArea.spec.js +0 -36
- package/dist/test-resources/specs/Theming.spec.js +0 -33
- package/dist/test-resources/specs/UI5ElementInvalidation.js +0 -242
- package/dist/test-resources/specs/UI5ElementLifecycle.js +0 -98
- package/dist/test-resources/specs/UI5ElementListenForChildPropChanges.spec.js +0 -75
- package/dist/test-resources/specs/UI5ElementMetadataExt.js +0 -42
- package/dist/test-resources/specs/UI5ElementPropertyValidation.js +0 -14
- package/dist/test-resources/specs/UI5ElementPropsAndAttrs.spec.js +0 -67
- package/dist/test-resources/specs/UI5ElementShadowDOM.js +0 -24
- package/dist/test-resources/specs/UI5ElementSlots.js +0 -36
- package/dist/theming/createThemePropertiesStyleTag.js +0 -20
- package/dist/types/PopupState.js +0 -37
- package/dist/util/encodeCSS.js +0 -24
- 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 -9
- package/dist/util/isNodeTabbable.js +0 -28
- package/dist/util/setToArray.js +0 -10
- package/hash.txt +0 -1
- package/package-scripts.js +0 -43
- package/src/Boot.js +0 -43
- package/src/CustomElementsRegistry.js +0 -39
- package/src/CustomElementsScope.js +0 -108
- package/src/DOMObserver.js +0 -65
- package/src/Device.js +0 -100
- package/src/EventProvider.js +0 -91
- package/src/FeaturesRegistry.js +0 -11
- package/src/FontFace.js +0 -118
- package/src/InitialConfiguration.js +0 -149
- package/src/Keys.js +0 -233
- package/src/MediaRange.js +0 -109
- package/src/PropertiesFileFormat.js +0 -95
- package/src/Render.js +0 -173
- package/src/RenderQueue.js +0 -66
- package/src/RenderScheduler.js +0 -44
- package/src/StaticArea.js +0 -3
- package/src/StaticAreaItem.js +0 -96
- package/src/SystemCSSVars.js +0 -31
- package/src/UI5Element.js +0 -1034
- package/src/UI5ElementMetadata.js +0 -311
- 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 -118
- package/src/asset-registries/LocaleData.js +0 -150
- package/src/asset-registries/Themes.js +0 -78
- package/src/asset-registries/i18n.js +0 -121
- package/src/config/AnimationMode.js +0 -23
- package/src/config/AssetsPath.js +0 -17
- package/src/config/CalendarType.js +0 -18
- package/src/config/FormatSettings.js +0 -13
- package/src/config/Language.js +0 -68
- package/src/config/NoConflict.js +0 -51
- package/src/config/RTL.js +0 -31
- package/src/config/Theme.js +0 -28
- package/src/delegate/ItemNavigation.js +0 -285
- package/src/delegate/ResizeHandler.js +0 -106
- package/src/delegate/ScrollEnablement.js +0 -182
- package/src/features/OpenUI5Support.js +0 -125
- package/src/getSharedResource.js +0 -30
- package/src/i18nBundle.js +0 -55
- package/src/isLegacyBrowser.js +0 -3
- package/src/locale/Locale.js +0 -91
- package/src/locale/RTLAwareRegistry.js +0 -14
- package/src/locale/applyDirection.js +0 -17
- package/src/locale/directionChange.js +0 -32
- package/src/locale/getEffectiveDir.js +0 -28
- package/src/locale/getLocale.js +0 -41
- package/src/locale/languageChange.js +0 -22
- package/src/locale/nextFallbackLocale.js +0 -28
- package/src/locale/normalizeLocale.js +0 -54
- package/src/renderer/LitRenderer.js +0 -31
- package/src/renderer/executeTemplate.js +0 -17
- package/src/renderer/ifDefined.js +0 -21
- package/src/renderer/scopeHTML.js +0 -32
- package/src/theming/CustomStyle.js +0 -40
- package/src/theming/ThemeLoaded.js +0 -22
- package/src/theming/applyTheme.js +0 -78
- package/src/theming/createThemePropertiesStyleTag.js +0 -20
- package/src/theming/getConstructableStyle.js +0 -30
- package/src/theming/getEffectiveStyle.js +0 -30
- package/src/theming/getStylesString.js +0 -13
- package/src/theming/getThemeDesignerTheme.js +0 -67
- package/src/thirdparty/_merge.js +0 -32
- package/src/thirdparty/isPlainObject.js +0 -18
- package/src/thirdparty/merge.js +0 -10
- package/src/types/AnimationMode.js +0 -7
- package/src/types/CSSColor.js +0 -9
- package/src/types/CSSSize.js +0 -9
- package/src/types/CalendarType.js +0 -22
- package/src/types/DataType.js +0 -25
- package/src/types/Float.js +0 -10
- package/src/types/Integer.js +0 -9
- package/src/types/ItemNavigationBehavior.js +0 -16
- package/src/types/NavigationMode.js +0 -7
- package/src/types/PopupState.js +0 -37
- package/src/types/ValueState.js +0 -22
- package/src/updateShadowRoot.js +0 -26
- package/src/util/AriaLabelHelper.js +0 -41
- package/src/util/Caret.js +0 -45
- package/src/util/ColorConversion.js +0 -370
- package/src/util/FetchHelper.js +0 -31
- package/src/util/FocusableElements.js +0 -73
- package/src/util/PopupUtils.js +0 -93
- package/src/util/SlotsHelper.js +0 -43
- package/src/util/StringHelper.js +0 -26
- package/src/util/TabbableElements.js +0 -47
- package/src/util/arraysAreEqual.js +0 -15
- package/src/util/createStyleInHead.js +0 -18
- package/src/util/debounce.js +0 -17
- package/src/util/detectNavigatorLanguage.js +0 -13
- package/src/util/encodeCSS.js +0 -24
- package/src/util/findNodeOwner.js +0 -35
- package/src/util/formatMessage.js +0 -23
- package/src/util/getActiveElement.js +0 -11
- package/src/util/getClassCopy.js +0 -10
- package/src/util/getDesigntimePropertyAsArray.js +0 -4
- package/src/util/getEffectiveContentDensity.js +0 -5
- package/src/util/getSingletonElementInstance.js +0 -13
- package/src/util/isDescendantOf.js +0 -15
- package/src/util/isElementInView.js +0 -15
- package/src/util/isNodeClickable.js +0 -19
- package/src/util/isNodeHidden.js +0 -9
- package/src/util/isNodeTabbable.js +0 -28
- package/src/util/isValidPropertyName.js +0 -29
- package/src/util/setToArray.js +0 -10
- package/src/util/whenDOMReady.js +0 -13
- /package/{config/.eslintrc.js → .eslintrc.cjs} +0 -0
|
@@ -1,311 +1,291 @@
|
|
|
1
|
-
import DataType from "./types/DataType.js";
|
|
2
|
-
import isDescendantOf from "./util/isDescendantOf.js";
|
|
3
1
|
import { camelToKebabCase } from "./util/StringHelper.js";
|
|
4
|
-
import {
|
|
5
|
-
import { getEffectiveScopingSuffixForTag } from "./
|
|
6
|
-
|
|
2
|
+
import { getSlottedNodes } from "./util/SlotsHelper.js";
|
|
3
|
+
import { getEffectiveScopingSuffixForTag } from "./CustomElementsScopeUtils.js";
|
|
7
4
|
/**
|
|
8
5
|
*
|
|
9
6
|
* @class
|
|
10
7
|
* @public
|
|
11
8
|
*/
|
|
12
9
|
class UI5ElementMetadata {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
return false;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
// The config object has the short format: slots: true/false
|
|
267
|
-
if (typeof config.slots === "boolean") {
|
|
268
|
-
return config.slots;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
// The config object has the complex format: slots: [...]
|
|
272
|
-
if (Array.isArray(config.slots)) {
|
|
273
|
-
return config.slots.includes(name);
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
throw new Error("Wrong format for invalidateOnChildChange.slots: boolean or array is expected");
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
throw new Error("Wrong format for invalidateOnChildChange: boolean or object is expected");
|
|
281
|
-
}
|
|
10
|
+
constructor(metadata) {
|
|
11
|
+
this.metadata = metadata;
|
|
12
|
+
}
|
|
13
|
+
getInitialState() {
|
|
14
|
+
if (Object.prototype.hasOwnProperty.call(this, "_initialState")) {
|
|
15
|
+
return this._initialState;
|
|
16
|
+
}
|
|
17
|
+
const initialState = {};
|
|
18
|
+
const slotsAreManaged = this.slotsAreManaged();
|
|
19
|
+
// Initialize properties
|
|
20
|
+
const props = this.getProperties();
|
|
21
|
+
for (const propName in props) { // eslint-disable-line
|
|
22
|
+
const propType = props[propName].type;
|
|
23
|
+
const propDefaultValue = props[propName].defaultValue;
|
|
24
|
+
if (propType === Boolean) {
|
|
25
|
+
initialState[propName] = false;
|
|
26
|
+
if (propDefaultValue !== undefined) {
|
|
27
|
+
console.warn("The 'defaultValue' metadata key is ignored for all booleans properties, they would be initialized with 'false' by default"); // eslint-disable-line
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else if (props[propName].multiple) {
|
|
31
|
+
initialState[propName] = [];
|
|
32
|
+
}
|
|
33
|
+
else if (propType === Object) {
|
|
34
|
+
initialState[propName] = "defaultValue" in props[propName] ? props[propName].defaultValue : {};
|
|
35
|
+
}
|
|
36
|
+
else if (propType === String) {
|
|
37
|
+
initialState[propName] = "defaultValue" in props[propName] ? props[propName].defaultValue : "";
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
initialState[propName] = propDefaultValue;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Initialize slots
|
|
44
|
+
if (slotsAreManaged) {
|
|
45
|
+
const slots = this.getSlots();
|
|
46
|
+
for (const [slotName, slotData] of Object.entries(slots)) { // eslint-disable-line
|
|
47
|
+
const propertyName = slotData.propertyName || slotName;
|
|
48
|
+
initialState[propertyName] = [];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
this._initialState = initialState;
|
|
52
|
+
return initialState;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Validates the property's value and returns it if correct
|
|
56
|
+
* or returns the default value if not.
|
|
57
|
+
* <b>Note:</b> Only intended for use by UI5Element.js
|
|
58
|
+
* @public
|
|
59
|
+
*/
|
|
60
|
+
static validatePropertyValue(value, propData) {
|
|
61
|
+
const isMultiple = propData.multiple;
|
|
62
|
+
if (isMultiple && value) {
|
|
63
|
+
return value.map((propValue) => validateSingleProperty(propValue, propData));
|
|
64
|
+
}
|
|
65
|
+
return validateSingleProperty(value, propData);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Validates the slot's value and returns it if correct
|
|
69
|
+
* or throws an exception if not.
|
|
70
|
+
* <b>Note:</b> Only intended for use by UI5Element.js
|
|
71
|
+
* @pubic
|
|
72
|
+
*/
|
|
73
|
+
static validateSlotValue(value, slotData) {
|
|
74
|
+
return validateSingleSlot(value, slotData);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Returns the tag of the UI5 Element without the scope
|
|
78
|
+
* @public
|
|
79
|
+
*/
|
|
80
|
+
getPureTag() {
|
|
81
|
+
return this.metadata.tag || "";
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Returns the tag of the UI5 Element
|
|
85
|
+
* @public
|
|
86
|
+
*/
|
|
87
|
+
getTag() {
|
|
88
|
+
const pureTag = this.metadata.tag;
|
|
89
|
+
if (!pureTag) {
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
92
|
+
const suffix = getEffectiveScopingSuffixForTag(pureTag);
|
|
93
|
+
if (!suffix) {
|
|
94
|
+
return pureTag;
|
|
95
|
+
}
|
|
96
|
+
return `${pureTag}-${suffix}`;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Determines whether a property should have an attribute counterpart
|
|
100
|
+
* @public
|
|
101
|
+
* @param propName
|
|
102
|
+
* @returns {boolean}
|
|
103
|
+
*/
|
|
104
|
+
hasAttribute(propName) {
|
|
105
|
+
const propData = this.getProperties()[propName];
|
|
106
|
+
return propData.type !== Object && !propData.noAttribute && !propData.multiple;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Returns an array with the properties of the UI5 Element (in camelCase)
|
|
110
|
+
* @public
|
|
111
|
+
* @returns {string[]}
|
|
112
|
+
*/
|
|
113
|
+
getPropertiesList() {
|
|
114
|
+
return Object.keys(this.getProperties());
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Returns an array with the attributes of the UI5 Element (in kebab-case)
|
|
118
|
+
* @public
|
|
119
|
+
* @returns {string[]}
|
|
120
|
+
*/
|
|
121
|
+
getAttributesList() {
|
|
122
|
+
return this.getPropertiesList().filter(this.hasAttribute.bind(this)).map(camelToKebabCase);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Determines whether this UI5 Element has a default slot of type Node, therefore can slot text
|
|
126
|
+
* @returns {boolean}
|
|
127
|
+
*/
|
|
128
|
+
canSlotText() {
|
|
129
|
+
const defaultSlot = this.getSlots().default;
|
|
130
|
+
return defaultSlot && defaultSlot.type === Node;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Determines whether this UI5 Element supports any slots
|
|
134
|
+
* @public
|
|
135
|
+
*/
|
|
136
|
+
hasSlots() {
|
|
137
|
+
return !!Object.entries(this.getSlots()).length;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Determines whether this UI5 Element supports any slots with "individualSlots: true"
|
|
141
|
+
* @public
|
|
142
|
+
*/
|
|
143
|
+
hasIndividualSlots() {
|
|
144
|
+
return this.slotsAreManaged() && Object.values(this.getSlots()).some(slotData => slotData.individualSlots);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Determines whether this UI5 Element needs to invalidate if children are added/removed/changed
|
|
148
|
+
* @public
|
|
149
|
+
*/
|
|
150
|
+
slotsAreManaged() {
|
|
151
|
+
return !!this.metadata.managedSlots;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Determines whether this control supports F6 fast navigation
|
|
155
|
+
* @public
|
|
156
|
+
*/
|
|
157
|
+
supportsF6FastNavigation() {
|
|
158
|
+
return !!this.metadata.fastNavigation;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Returns an object with key-value pairs of properties and their metadata definitions
|
|
162
|
+
* @public
|
|
163
|
+
*/
|
|
164
|
+
getProperties() {
|
|
165
|
+
if (!this.metadata.properties) {
|
|
166
|
+
this.metadata.properties = {};
|
|
167
|
+
}
|
|
168
|
+
return this.metadata.properties;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Returns an object with key-value pairs of events and their metadata definitions
|
|
172
|
+
* @public
|
|
173
|
+
*/
|
|
174
|
+
getEvents() {
|
|
175
|
+
if (!this.metadata.events) {
|
|
176
|
+
this.metadata.events = {};
|
|
177
|
+
}
|
|
178
|
+
return this.metadata.events;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Returns an object with key-value pairs of slots and their metadata definitions
|
|
182
|
+
* @public
|
|
183
|
+
*/
|
|
184
|
+
getSlots() {
|
|
185
|
+
if (!this.metadata.slots) {
|
|
186
|
+
this.metadata.slots = {};
|
|
187
|
+
}
|
|
188
|
+
return this.metadata.slots;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Determines whether this UI5 Element has any translatable texts (needs to be invalidated upon language change)
|
|
192
|
+
* @returns {boolean}
|
|
193
|
+
*/
|
|
194
|
+
isLanguageAware() {
|
|
195
|
+
return !!this.metadata.languageAware;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Determines whether this UI5 Element has any theme dependant carachteristics.
|
|
199
|
+
* @returns {boolean}
|
|
200
|
+
*/
|
|
201
|
+
isThemeAware() {
|
|
202
|
+
return !!this.metadata.themeAware;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Matches a changed entity (property/slot) with the given name against the "invalidateOnChildChange" configuration
|
|
206
|
+
* and determines whether this should cause and invalidation
|
|
207
|
+
*
|
|
208
|
+
* @param slotName the name of the slot in which a child was changed
|
|
209
|
+
* @param type the type of change in the child: "property" or "slot"
|
|
210
|
+
* @param name the name of the property/slot that changed
|
|
211
|
+
* @returns {boolean}
|
|
212
|
+
*/
|
|
213
|
+
shouldInvalidateOnChildChange(slotName, type, name) {
|
|
214
|
+
const config = this.getSlots()[slotName].invalidateOnChildChange;
|
|
215
|
+
// invalidateOnChildChange was not set in the slot metadata - by default child changes do not affect the component
|
|
216
|
+
if (config === undefined) {
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
// The simple format was used: invalidateOnChildChange: true/false;
|
|
220
|
+
if (typeof config === "boolean") {
|
|
221
|
+
return config;
|
|
222
|
+
}
|
|
223
|
+
// The complex format was used: invalidateOnChildChange: { properties, slots }
|
|
224
|
+
if (typeof config === "object") {
|
|
225
|
+
// A property was changed
|
|
226
|
+
if (type === "property") {
|
|
227
|
+
// The config object does not have a properties field
|
|
228
|
+
if (config.properties === undefined) {
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
// The config object has the short format: properties: true/false
|
|
232
|
+
if (typeof config.properties === "boolean") {
|
|
233
|
+
return config.properties;
|
|
234
|
+
}
|
|
235
|
+
// The config object has the complex format: properties: [...]
|
|
236
|
+
if (Array.isArray(config.properties)) {
|
|
237
|
+
return config.properties.includes(name);
|
|
238
|
+
}
|
|
239
|
+
throw new Error("Wrong format for invalidateOnChildChange.properties: boolean or array is expected");
|
|
240
|
+
}
|
|
241
|
+
// A slot was changed
|
|
242
|
+
if (type === "slot") {
|
|
243
|
+
// The config object does not have a slots field
|
|
244
|
+
if (config.slots === undefined) {
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
// The config object has the short format: slots: true/false
|
|
248
|
+
if (typeof config.slots === "boolean") {
|
|
249
|
+
return config.slots;
|
|
250
|
+
}
|
|
251
|
+
// The config object has the complex format: slots: [...]
|
|
252
|
+
if (Array.isArray(config.slots)) {
|
|
253
|
+
return config.slots.includes(name);
|
|
254
|
+
}
|
|
255
|
+
throw new Error("Wrong format for invalidateOnChildChange.slots: boolean or array is expected");
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
throw new Error("Wrong format for invalidateOnChildChange: boolean or object is expected");
|
|
259
|
+
}
|
|
282
260
|
}
|
|
283
|
-
|
|
284
261
|
const validateSingleProperty = (value, propData) => {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
262
|
+
const propertyType = propData.type;
|
|
263
|
+
let propertyValidator = propData.validator;
|
|
264
|
+
if (propertyType && propertyType.isDataTypeClass) {
|
|
265
|
+
propertyValidator = propertyType;
|
|
266
|
+
}
|
|
267
|
+
if (propertyValidator) {
|
|
268
|
+
return propertyValidator.isValid(value) ? value : propData.defaultValue;
|
|
269
|
+
}
|
|
270
|
+
if (!propertyType || propertyType === String) {
|
|
271
|
+
return (typeof value === "string" || typeof value === "undefined" || value === null) ? value : value.toString();
|
|
272
|
+
}
|
|
273
|
+
if (propertyType === Boolean) {
|
|
274
|
+
return typeof value === "boolean" ? value : false;
|
|
275
|
+
}
|
|
276
|
+
if (propertyType === Object) {
|
|
277
|
+
return typeof value === "object" ? value : propData.defaultValue;
|
|
278
|
+
}
|
|
279
|
+
// Check if "value" is part of the enum (propertyType) values and return the defaultValue if not found.
|
|
280
|
+
return value in propertyType ? value : propData.defaultValue;
|
|
299
281
|
};
|
|
300
|
-
|
|
301
282
|
const validateSingleSlot = (value, slotData) => {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
return value;
|
|
283
|
+
value && getSlottedNodes(value).forEach(el => {
|
|
284
|
+
if (!(el instanceof slotData.type)) {
|
|
285
|
+
throw new Error(`The element is not of type ${slotData.type.toString()}`);
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
return value;
|
|
309
289
|
};
|
|
310
|
-
|
|
311
290
|
export default UI5ElementMetadata;
|
|
291
|
+
//# sourceMappingURL=UI5ElementMetadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UI5ElementMetadata.js","sourceRoot":"","sources":["../src/UI5ElementMetadata.ts"],"names":[],"mappings":"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","sourcesContent":["import DataType from \"./types/DataType.js\";\nimport { camelToKebabCase } from \"./util/StringHelper.js\";\nimport { getSlottedNodes } from \"./util/SlotsHelper.js\";\nimport { getEffectiveScopingSuffixForTag } from \"./CustomElementsScopeUtils.js\";\n\ntype SlotInvalidation = {\n\tproperties: boolean | Array<string>,\n\tslots: boolean | Array<string>,\n}\n\ntype Slot = {\n\ttype: typeof Node | typeof HTMLElement,\n\tdefault?: boolean,\n\tpropertyName?: string,\n\tindividualSlots?: boolean,\n\tinvalidateOnChildChange?: boolean | SlotInvalidation,\n};\n\ntype SlotValue = Node;\n\ntype Property = {\n\ttype?: BooleanConstructor | StringConstructor | ObjectConstructor | DataType\n\tvalidator?: DataType,\n\tdefaultValue?: PropertyValue,\n\tnoAttribute?: boolean,\n\tmultiple?: boolean,\n\tcompareValues?: boolean,\n}\n\ntype PropertyValue = boolean | number | string | object | undefined | null | DataType;\n\ntype EventData = Record<string, object>;\n\ntype Metadata = {\n\ttag?: string,\n\tmanagedSlots?: boolean,\n\tproperties?: Record<string, Property>,\n\tslots?: Record<string, Slot>,\n\tevents?: EventData,\n\tfastNavigation?: boolean,\n\tthemeAware?: boolean,\n\tlanguageAware?: boolean,\n};\n\ntype State = Record<string, PropertyValue | Array<SlotValue>>;\n\n/**\n *\n * @class\n * @public\n */\nclass UI5ElementMetadata {\n\tmetadata: Metadata;\n\t_initialState: State | undefined;\n\n\tconstructor(metadata: Metadata) {\n\t\tthis.metadata = metadata;\n\t}\n\n\tgetInitialState() {\n\t\tif (Object.prototype.hasOwnProperty.call(this, \"_initialState\")) {\n\t\t\treturn this._initialState!;\n\t\t}\n\t\tconst initialState: State = {};\n\t\tconst slotsAreManaged = this.slotsAreManaged();\n\n\t\t// Initialize properties\n\t\tconst props = this.getProperties();\n\t\tfor (const propName in props) { // eslint-disable-line\n\t\t\tconst propType = props[propName].type;\n\t\t\tconst propDefaultValue = props[propName].defaultValue;\n\n\t\t\tif (propType === Boolean) {\n\t\t\t\tinitialState[propName] = false;\n\n\t\t\t\tif (propDefaultValue !== undefined) {\n\t\t\t\t\tconsole.warn(\"The 'defaultValue' metadata key is ignored for all booleans properties, they would be initialized with 'false' by default\"); // eslint-disable-line\n\t\t\t\t}\n\t\t\t} else if (props[propName].multiple) {\n\t\t\t\tinitialState[propName] = [];\n\t\t\t} else if (propType === Object) {\n\t\t\t\tinitialState[propName] = \"defaultValue\" in props[propName] ? props[propName].defaultValue : {};\n\t\t\t} else if (propType === String) {\n\t\t\t\tinitialState[propName] = \"defaultValue\" in props[propName] ? props[propName].defaultValue : \"\";\n\t\t\t} else {\n\t\t\t\tinitialState[propName] = propDefaultValue;\n\t\t\t}\n\t\t}\n\n\t\t// Initialize slots\n\t\tif (slotsAreManaged) {\n\t\t\tconst slots = this.getSlots();\n\t\t\tfor (const [slotName, slotData] of Object.entries<Slot>(slots)) { // eslint-disable-line\n\t\t\t\tconst propertyName = slotData.propertyName || slotName;\n\t\t\t\tinitialState[propertyName] = [];\n\t\t\t}\n\t\t}\n\n\t\tthis._initialState = initialState;\n\t\treturn initialState;\n\t}\n\n\t/**\n\t * Validates the property's value and returns it if correct\n\t * or returns the default value if not.\n\t * <b>Note:</b> Only intended for use by UI5Element.js\n\t * @public\n\t */\n\tstatic validatePropertyValue(value: PropertyValue, propData: Property) {\n\t\tconst isMultiple = propData.multiple;\n\t\tif (isMultiple && value) {\n\t\t\treturn (value as Array<PropertyValue>).map((propValue: PropertyValue) => validateSingleProperty(propValue, propData));\n\t\t}\n\t\treturn validateSingleProperty(value, propData);\n\t}\n\n\t/**\n\t * Validates the slot's value and returns it if correct\n\t * or throws an exception if not.\n\t * <b>Note:</b> Only intended for use by UI5Element.js\n\t * @pubic\n\t */\n\tstatic validateSlotValue(value: Node, slotData: Slot) {\n\t\treturn validateSingleSlot(value, slotData);\n\t}\n\n\t/**\n\t * Returns the tag of the UI5 Element without the scope\n\t * @public\n\t */\n\tgetPureTag() {\n\t\treturn this.metadata.tag || \"\";\n\t}\n\n\t/**\n\t * Returns the tag of the UI5 Element\n\t * @public\n\t */\n\tgetTag() {\n\t\tconst pureTag = this.metadata.tag;\n\n\t\tif (!pureTag) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst suffix = getEffectiveScopingSuffixForTag(pureTag);\n\t\tif (!suffix) {\n\t\t\treturn pureTag;\n\t\t}\n\n\t\treturn `${pureTag}-${suffix}`;\n\t}\n\n\t/**\n\t * Determines whether a property should have an attribute counterpart\n\t * @public\n\t * @param propName\n\t * @returns {boolean}\n\t */\n\thasAttribute(propName: string) {\n\t\tconst propData = this.getProperties()[propName];\n\t\treturn propData.type !== Object && !propData.noAttribute && !propData.multiple;\n\t}\n\n\t/**\n\t * Returns an array with the properties of the UI5 Element (in camelCase)\n\t * @public\n\t * @returns {string[]}\n\t */\n\tgetPropertiesList() {\n\t\treturn Object.keys(this.getProperties());\n\t}\n\n\t/**\n\t * Returns an array with the attributes of the UI5 Element (in kebab-case)\n\t * @public\n\t * @returns {string[]}\n\t */\n\tgetAttributesList() {\n\t\treturn this.getPropertiesList().filter(this.hasAttribute.bind(this)).map(camelToKebabCase);\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has a default slot of type Node, therefore can slot text\n\t * @returns {boolean}\n\t */\n\tcanSlotText() {\n\t\tconst defaultSlot = this.getSlots().default;\n\t\treturn defaultSlot && defaultSlot.type === Node;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element supports any slots\n\t * @public\n\t */\n\thasSlots() {\n\t\treturn !!Object.entries(this.getSlots()).length;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element supports any slots with \"individualSlots: true\"\n\t * @public\n\t */\n\thasIndividualSlots() {\n\t\treturn this.slotsAreManaged() && Object.values(this.getSlots()).some(slotData => slotData.individualSlots);\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element needs to invalidate if children are added/removed/changed\n\t * @public\n\t */\n\tslotsAreManaged() {\n\t\treturn !!this.metadata.managedSlots;\n\t}\n\n\t/**\n\t * Determines whether this control supports F6 fast navigation\n\t * @public\n\t */\n\tsupportsF6FastNavigation() {\n\t\treturn !!this.metadata.fastNavigation;\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of properties and their metadata definitions\n\t * @public\n\t */\n\tgetProperties() {\n\t\tif (!this.metadata.properties) {\n\t\t\tthis.metadata.properties = {};\n\t\t}\n\t\treturn this.metadata.properties;\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of events and their metadata definitions\n\t * @public\n\t */\n\tgetEvents() {\n\t\tif (!this.metadata.events) {\n\t\t\tthis.metadata.events = {};\n\t\t}\n\t\treturn this.metadata.events;\n\t}\n\n\t/**\n\t * Returns an object with key-value pairs of slots and their metadata definitions\n\t * @public\n\t */\n\t getSlots() {\n\t\tif (!this.metadata.slots) {\n\t\t\tthis.metadata.slots = {};\n\t\t}\n\t\treturn this.metadata.slots;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has any translatable texts (needs to be invalidated upon language change)\n\t * @returns {boolean}\n\t */\n\tisLanguageAware() {\n\t\treturn !!this.metadata.languageAware;\n\t}\n\n\t/**\n\t * Determines whether this UI5 Element has any theme dependant carachteristics.\n\t * @returns {boolean}\n\t */\n\t isThemeAware() {\n\t\treturn !!this.metadata.themeAware;\n\t}\n\n\t/**\n\t * Matches a changed entity (property/slot) with the given name against the \"invalidateOnChildChange\" configuration\n\t * and determines whether this should cause and invalidation\n\t *\n\t * @param slotName the name of the slot in which a child was changed\n\t * @param type the type of change in the child: \"property\" or \"slot\"\n\t * @param name the name of the property/slot that changed\n\t * @returns {boolean}\n\t */\n\tshouldInvalidateOnChildChange(slotName: string, type: \"property\" | \"slot\", name: string) {\n\t\tconst config = this.getSlots()[slotName].invalidateOnChildChange;\n\n\t\t// invalidateOnChildChange was not set in the slot metadata - by default child changes do not affect the component\n\t\tif (config === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// The simple format was used: invalidateOnChildChange: true/false;\n\t\tif (typeof config === \"boolean\") {\n\t\t\treturn config;\n\t\t}\n\n\t\t// The complex format was used: invalidateOnChildChange: { properties, slots }\n\t\tif (typeof config === \"object\") {\n\t\t\t// A property was changed\n\t\t\tif (type === \"property\") {\n\t\t\t\t// The config object does not have a properties field\n\t\t\t\tif (config.properties === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the short format: properties: true/false\n\t\t\t\tif (typeof config.properties === \"boolean\") {\n\t\t\t\t\treturn config.properties;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the complex format: properties: [...]\n\t\t\t\tif (Array.isArray(config.properties)) {\n\t\t\t\t\treturn config.properties.includes(name);\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"Wrong format for invalidateOnChildChange.properties: boolean or array is expected\");\n\t\t\t}\n\n\t\t\t// A slot was changed\n\t\t\tif (type === \"slot\") {\n\t\t\t\t// The config object does not have a slots field\n\t\t\t\tif (config.slots === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the short format: slots: true/false\n\t\t\t\tif (typeof config.slots === \"boolean\") {\n\t\t\t\t\treturn config.slots;\n\t\t\t\t}\n\n\t\t\t\t// The config object has the complex format: slots: [...]\n\t\t\t\tif (Array.isArray(config.slots)) {\n\t\t\t\t\treturn config.slots.includes(name);\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"Wrong format for invalidateOnChildChange.slots: boolean or array is expected\");\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(\"Wrong format for invalidateOnChildChange: boolean or object is expected\");\n\t}\n}\n\nconst validateSingleProperty = (value: PropertyValue, propData: Property) => {\n\tconst propertyType = propData.type;\n\tlet propertyValidator = propData.validator;\n\n\tif (propertyType && (propertyType as typeof DataType).isDataTypeClass) {\n\t\tpropertyValidator = propertyType as typeof DataType;\n\t}\n\n\tif (propertyValidator) {\n\t\treturn (propertyValidator as typeof DataType).isValid(value) ? value : propData.defaultValue;\n\t}\n\n\tif (!propertyType || propertyType === String) {\n\t\treturn (typeof value === \"string\" || typeof value === \"undefined\" || value === null) ? value : value.toString();\n\t}\n\n\tif (propertyType === Boolean) {\n\t\treturn typeof value === \"boolean\" ? value : false;\n\t}\n\n\tif (propertyType === Object) {\n\t\treturn typeof value === \"object\" ? value : propData.defaultValue;\n\t}\n\n\t// Check if \"value\" is part of the enum (propertyType) values and return the defaultValue if not found.\n\treturn value as string in propertyType ? value : propData.defaultValue;\n};\n\nconst validateSingleSlot = (value: Node, slotData: Slot) => {\n\tvalue && getSlottedNodes(value).forEach(el => {\n\t\tif (!(el instanceof slotData.type)) {\n\t\t\tthrow new Error(`The element is not of type ${slotData.type.toString()}`);\n\t\t}\n\t});\n\n\treturn value;\n};\n\nexport default UI5ElementMetadata;\nexport type {\n\tProperty,\n\tPropertyValue,\n\tSlot,\n\tSlotValue,\n\tEventData,\n\tState,\n\tMetadata,\n};\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type TaskType = () => Promise<void>;
|
|
2
|
+
declare class AnimationQueue {
|
|
3
|
+
static get tasks(): WeakMap<HTMLElement, TaskType[]>;
|
|
4
|
+
static enqueue(element: HTMLElement, task: TaskType): void;
|
|
5
|
+
static run(element: HTMLElement, task: TaskType): Promise<void>;
|
|
6
|
+
static push(element: HTMLElement, task: TaskType): void;
|
|
7
|
+
}
|
|
8
|
+
export default AnimationQueue;
|