@sapui5/sap.ushell 1.141.3 → 1.143.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/main/js/sap/ushell/.library +1 -7
- package/src/main/js/sap/ushell/ApplicationType/UrlPostProcessing.js +7 -11
- package/src/main/js/sap/ushell/ApplicationType/utils.js +9 -9
- package/src/main/js/sap/ushell/ApplicationType/wdaResolution.js +18 -0
- package/src/main/js/sap/ushell/Fiori20Adapter.js +1 -1
- package/src/main/js/sap/ushell/Fiori20AdapterTest.js +1 -1
- package/src/main/js/sap/ushell/NWBCInterface.js +1 -1
- package/src/main/js/sap/ushell/TechnicalParameters.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/DefinitionParameterSetBuilder.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/DependencyGraph.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/Functions.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/Resolvers.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/TemplateParameterParser.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/utils.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor.js +1 -1
- package/src/main/js/sap/ushell/Ui5NativeServiceFactory.js +1 -1
- package/src/main/js/sap/ushell/Ui5ServiceFactory.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/ClientSideTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/CommonDataModelAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/ConfigurationDefaultsAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/ContainerAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/LaunchPageAdapter.js +1 -3
- package/src/main/js/sap/ushell/adapters/cdm/PagesCommonDataModelAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/PersonalizationAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/PersonalizationV2Adapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/Settings/UserLanguageAndRegion/UserLanguageAndRegion.view.xml +5 -12
- package/src/main/js/sap/ushell/adapters/cdm/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/modifyHome.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readCatalogs.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readHome.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/uri.transform.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/util/AppForInbound.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/util/cdmSiteUtils.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/AdapterBase.js +1 -2
- package/src/main/js/sap/ushell/adapters/cdm/v3/FlpLaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/LaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/StaticGroupsAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readApplications.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readCatalogs.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readHome.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readPages.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readUtils.js +2 -3
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readVisualizations.js +1 -1
- package/src/main/js/sap/ushell/adapters/cep/MenuAdapter.js +41 -24
- package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionInternalAdapter.js +3 -2
- package/src/main/js/sap/ushell/adapters/cep/SearchCEPAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cflp/UserDefaultParameterPersistenceAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/AdapterContainer.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/AppStateAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/ClientSideTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/ContainerAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/FlpLaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/LaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionInternalAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/PageBuildingAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/PagePersistenceAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/PersonalizationAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/PersonalizationV2Adapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/SearchAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/SearchCEPAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/SupportTicketAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/UserDefaultParameterPersistenceAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/UserInfoAdapter.js +1 -1
- package/src/main/js/sap/ushell/appIntegration/AppLifeCycle.js +94 -114
- package/src/main/js/sap/ushell/appIntegration/ApplicationContainer.js +43 -20
- package/src/main/js/sap/ushell/appIntegration/ApplicationContainerRenderer.js +0 -11
- package/src/main/js/sap/ushell/appIntegration/IframeApplicationContainer.js +89 -32
- package/src/main/js/sap/ushell/appIntegration/IframeApplicationContainerRenderer.js +53 -52
- package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/LifecycleHandler.js +1 -3
- package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/NWBCHandler.js +1 -1
- package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/NavigationHandler.js +4 -4
- package/src/main/js/sap/ushell/appIntegration/PostMessageManager.js +58 -17
- package/src/main/js/sap/ushell/appIntegration/PostMessagePluginInterface.js +4 -0
- package/src/main/js/sap/ushell/appIntegration/UI5ApplicationContainer.js +15 -28
- package/src/main/js/sap/ushell/appIntegration/contracts/EmbeddedUI5Handler.js +16 -27
- package/src/main/js/sap/ushell/appIntegration/contracts/StatefulContainerV2Handler.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntime.js +6 -5
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/CheckConditions.js +0 -12
- package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/RendererExtensions.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppConfiguration.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycle.js +20 -3
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycleAgent.js +17 -6
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppState.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Bookmark.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/BookmarkV2.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/CommonDataModel.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Container.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/CrossApplicationNavigation.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension/Item.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/FlpLaunchPage.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/FrameBoundExtension.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/LaunchPage.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/MessageBroker.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolution.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolutionInternal.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Navigation.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ReferenceResolver.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigation.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigationInternal.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellUIService.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/UserInfo.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/LoadingConfiguration.json +4 -0
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/StepConfiguration.json +35 -17
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/logger.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/state.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/cdm/cdm.constants.js +0 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5datetimeformat.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.create.configcontract.core.js +29 -5
- package/src/main/js/sap/ushell/bootstrap/sandbox2.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/Component.js +2 -2
- package/src/main/js/sap/ushell/components/appfinder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/CatalogService.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/Component.js +5 -5
- package/src/main/js/sap/ushell/components/contentFinder/controller/AppSearch.controller.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/controller/ContentFinderDialog.controller.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/dialog/Component.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/dialog/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/contentFinderStandalone/Component.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinderStandalone/controller/ContentFinderStandalone.controller.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinderStandalone/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/factsheet/Component.js +1 -1
- package/src/main/js/sap/ushell/components/factsheet/factory/ThingInspector.js +2 -2
- package/src/main/js/sap/ushell/components/homepage/ActionMode.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/DashboardContent.view.js +3 -3
- package/src/main/js/sap/ushell/components/homepage/DashboardGroupsBox.js +10 -10
- package/src/main/js/sap/ushell/components/homepage/DashboardUIActions.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/pages/ActionMode.js +1 -1
- package/src/main/js/sap/ushell/components/pages/Component.js +1 -1
- package/src/main/js/sap/ushell/components/pages/MyHomeImport.js +1 -1
- package/src/main/js/sap/ushell/components/pages/controller/PageRuntime.controller.js +3 -3
- package/src/main/js/sap/ushell/components/pages/controller/PagesAndSpaceId.js +4 -4
- package/src/main/js/sap/ushell/components/pages/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/runtimeSwitcher/controller/RuntimeSwitcher.controller.js +1 -1
- package/src/main/js/sap/ushell/components/runtimeSwitcher/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/FloatingContainer/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/MenuBar/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenu.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenuButton.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/Notifications/Component.js +25 -50
- package/src/main/js/sap/ushell/components/shell/Notifications/NotificationsList.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Notifications/NotificationsListPopoverContent.view.xml +2 -2
- package/src/main/js/sap/ushell/components/shell/Notifications/NotificationsListPopoverHeader.fragment.xml +1 -1
- package/src/main/js/sap/ushell/components/shell/Notifications/NotificationsModule.js +169 -0
- package/src/main/js/sap/ushell/components/shell/PostLoadingHeaderEnhancement/Component.js +4 -4
- package/src/main/js/sap/ushell/components/shell/ProductSwitch/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Search/Component.js +6 -2
- package/src/main/js/sap/ushell/components/shell/Search/SearchModule.js +58 -0
- package/src/main/js/sap/ushell/components/shell/Search/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/FrequentActivityProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/RecentSearchProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchServiceProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/Component.js +33 -22
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/SearchProviders/FrequentActivityProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/SearchProviders/RecentSearchProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/SearchProviders/SearchProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/SearchProviders/SearchServiceProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/Component.js +2 -2
- package/src/main/js/sap/ushell/components/shell/Settings/UserSettings.view.xml +0 -1
- package/src/main/js/sap/ushell/components/shell/Settings/appearance/Appearance.controller.js +35 -7
- package/src/main/js/sap/ushell/components/shell/Settings/appearance/Appearance.view.xml +1 -1
- package/src/main/js/sap/ushell/components/shell/ShellBar/Component.js +14 -9
- package/src/main/js/sap/ushell/components/shell/ShellBar/controller/ShellBar.controller.js +15 -21
- package/src/main/js/sap/ushell/components/shell/ShellBar/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/ShellBar/view/ShellBar.view.xml +23 -18
- package/src/main/js/sap/ushell/components/shell/SideNavigation/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/UserActionsMenu/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/UserActionsMenu/UserActionsMenu.controller.js +5 -5
- package/src/main/js/sap/ushell/components/shell/UserActionsMenu/UserActionsMenu.fragment.xml +2 -2
- package/src/main/js/sap/ushell/components/shell/UserImage/Component.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/applauncher/StaticTile.controller.js +6 -6
- package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/DynamicTile.controller.js +6 -6
- package/src/main/js/sap/ushell/components/tiles/cdm/applauncher/StaticTile.controller.js +6 -6
- package/src/main/js/sap/ushell/components/tiles/cdm/applauncherdynamic/DynamicTile.controller.js +6 -6
- package/src/main/js/sap/ushell/components/visualizationOrganizer/Component.js +1 -1
- package/src/main/js/sap/ushell/designtime/ApplicationContainer.designtime.js +1 -1
- package/src/main/js/sap/ushell/library.js +1 -8
- package/src/main/js/sap/ushell/modules/Assistant/AssistantAPI.js +94 -0
- package/src/main/js/sap/ushell/modules/Assistant/AssistantProvider.js +50 -0
- package/src/main/js/sap/ushell/modules/Assistant/VisualConfiguration.js +41 -0
- package/src/main/js/sap/ushell/modules/Assistant.js +56 -0
- package/src/main/js/sap/ushell/modules/BaseAPI.js +107 -0
- package/src/main/js/sap/ushell/modules/BaseProvider.js +43 -0
- package/src/main/js/sap/ushell/modules/Notifications/NotificationsAPI.js +253 -0
- package/src/main/js/sap/ushell/modules/Notifications/NotificationsProvider.js +50 -0
- package/src/main/js/sap/ushell/modules/Notifications.js +53 -0
- package/src/main/js/sap/ushell/modules/Search/SearchAPI.js +271 -0
- package/src/main/js/sap/ushell/modules/Search/SearchProvider.js +50 -0
- package/src/main/js/sap/ushell/modules/Search.js +56 -0
- package/src/main/js/sap/ushell/modules/loader/AbstractLoader.js +95 -0
- package/src/main/js/sap/ushell/modules/loader/AssistantLoader.js +156 -0
- package/src/main/js/sap/ushell/modules/loader/NotificationsLoader.js +148 -0
- package/src/main/js/sap/ushell/modules/loader/SearchLoader.js +153 -0
- package/src/main/js/sap/ushell/navigationMode.js +1 -1
- package/src/main/js/sap/ushell/performance/FesrEnhancer.js +136 -40
- package/src/main/js/sap/ushell/performance/ShellAnalytics.js +1 -1
- package/src/main/js/sap/ushell/performance/StatisticalRecord.js +26 -1
- package/src/main/js/sap/ushell/plugins/appwarmup/Component.js +1 -1
- package/src/main/js/sap/ushell/plugins/ghostapp/FakeModel.js +19 -14
- package/src/main/js/sap/ushell/renderer/Renderer.js +6 -7
- package/src/main/js/sap/ushell/renderer/Shell.controller.js +204 -102
- package/src/main/js/sap/ushell/renderer/Shell.view.js +1 -1
- package/src/main/js/sap/ushell/renderer/resources/resources.properties +7 -9
- package/src/main/js/sap/ushell/renderer/resources/resources_ar.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_bg.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_ca.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_cnr.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_cs.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_cy.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_da.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_de.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_el.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_en.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_en_GB.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_en_US_saprigi.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_es.properties +4 -5
- package/src/main/js/sap/ushell/renderer/resources/resources_es_MX.properties +5 -6
- package/src/main/js/sap/ushell/renderer/resources/resources_et.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_fi.properties +4 -5
- package/src/main/js/sap/ushell/renderer/resources/resources_fr.properties +5 -6
- package/src/main/js/sap/ushell/renderer/resources/resources_fr_CA.properties +1 -2
- package/src/main/js/sap/ushell/renderer/resources/resources_hi.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_hr.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_hu.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_id.properties +5 -6
- package/src/main/js/sap/ushell/renderer/resources/resources_it.properties +4 -5
- package/src/main/js/sap/ushell/renderer/resources/resources_iw.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_ja.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_kk.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_ko.properties +5 -6
- package/src/main/js/sap/ushell/renderer/resources/resources_lt.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_lv.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_mk.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_ms.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_nl.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_no.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_pl.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_pt.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_pt_PT.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_ro.properties +5 -6
- package/src/main/js/sap/ushell/renderer/resources/resources_ru.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_sh.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_sk.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_sl.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_sr.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_sv.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_th.properties +6 -7
- package/src/main/js/sap/ushell/renderer/resources/resources_tr.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_uk.properties +13 -14
- package/src/main/js/sap/ushell/renderer/resources/resources_vi.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_zh_CN.properties +3 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_zh_TW.properties +3 -4
- package/src/main/js/sap/ushell/renderer/search/searchComponent/manifest.json +1 -1
- package/src/main/js/sap/ushell/renderer/shellHeader/ShellHeader.controller.js +0 -14
- package/src/main/js/sap/ushell/renderer/shellHeader/ShellHeader.fragment.xml +0 -1
- package/src/main/js/sap/ushell/services/AppConfiguration.js +5 -63
- package/src/main/js/sap/ushell/services/AppLifeCycle.js +45 -37
- package/src/main/js/sap/ushell/services/AppState.js +1 -1
- package/src/main/js/sap/ushell/services/Bookmark.js +1 -1
- package/src/main/js/sap/ushell/services/BookmarkV2.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Formatter.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundIndex.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundProvider.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/PrelaunchOperations.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Search.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/StagedLogger.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/SystemContext.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Utils.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/VirtualInbounds.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/XAppStateProcessing.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution.js +6 -5
- package/src/main/js/sap/ushell/services/CommonDataModel/SiteConverter.js +1 -1
- package/src/main/js/sap/ushell/services/CommonDataModel/vizTypeDefaults/VizTypeDefaults.js +1 -1
- package/src/main/js/sap/ushell/services/CommonDataModel.js +1 -1
- package/src/main/js/sap/ushell/services/Configuration.js +1 -1
- package/src/main/js/sap/ushell/services/ConfigurationDefaults.js +1 -1
- package/src/main/js/sap/ushell/services/ContentExtensionAdapterFactory.js +1 -1
- package/src/main/js/sap/ushell/services/CrossApplicationNavigation.js +13 -13
- package/src/main/js/sap/ushell/services/DarkModeSupport.js +1 -1
- package/src/main/js/sap/ushell/services/Extension/Item.js +1 -1
- package/src/main/js/sap/ushell/services/Extension.js +15 -3
- package/src/main/js/sap/ushell/services/FlpLaunchPage.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/FloatingContainer.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/Footer.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/Item.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/SidePane.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/ToolArea.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/UserSettingsEntry.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension.js +21 -8
- package/src/main/js/sap/ushell/services/LaunchPage.js +1 -1
- package/src/main/js/sap/ushell/services/Menu.js +1 -181
- package/src/main/js/sap/ushell/services/Message.js +1 -1
- package/src/main/js/sap/ushell/services/MessageBroker/MessageBrokerEngine.js +3 -3
- package/src/main/js/sap/ushell/services/MessageBroker.js +3 -3
- package/src/main/js/sap/ushell/services/MessageInternal.js +1 -1
- package/src/main/js/sap/ushell/services/NavTargetResolutionInternal.js +3 -3
- package/src/main/js/sap/ushell/services/Navigation/compatibility.js +1 -1
- package/src/main/js/sap/ushell/services/Navigation/utils.js +1 -1
- package/src/main/js/sap/ushell/services/Navigation.js +20 -20
- package/src/main/js/sap/ushell/services/NavigationDataProvider.js +1 -1
- package/src/main/js/sap/ushell/services/PageBuilding.js +1 -1
- package/src/main/js/sap/ushell/services/PagePersistence.js +1 -1
- package/src/main/js/sap/ushell/services/PageReferencing.js +1 -1
- package/src/main/js/sap/ushell/services/Pages.js +1 -1
- package/src/main/js/sap/ushell/services/Personalization.js +1 -1
- package/src/main/js/sap/ushell/services/PersonalizationV2.js +1 -1
- package/src/main/js/sap/ushell/services/PluginManager/SimpleExpression.js +1 -1
- package/src/main/js/sap/ushell/services/PluginManager.js +2 -6
- package/src/main/js/sap/ushell/services/ReferenceResolver.js +1 -1
- package/src/main/js/sap/ushell/services/Search.js +1 -1
- package/src/main/js/sap/ushell/services/SearchCEP.js +6 -7
- package/src/main/js/sap/ushell/services/SearchableContent.js +3 -5
- package/src/main/js/sap/ushell/services/ShellNavigation.js +1 -1
- package/src/main/js/sap/ushell/services/ShellNavigationHashChanger.js +52 -73
- package/src/main/js/sap/ushell/services/SmartNavigation.js +1 -1
- package/src/main/js/sap/ushell/services/SpaceContent.js +1 -1
- package/src/main/js/sap/ushell/services/UITracer.js +1 -1
- package/src/main/js/sap/ushell/services/URLParsing.js +65 -47
- package/src/main/js/sap/ushell/services/URLShortening.js +1 -1
- package/src/main/js/sap/ushell/services/URLTemplate.js +1 -1
- package/src/main/js/sap/ushell/services/Ui5ComponentLoader.js +6 -44
- package/src/main/js/sap/ushell/services/UserDefaultParameterPersistence.js +1 -1
- package/src/main/js/sap/ushell/services/UserDefaultParameters.js +1 -1
- package/src/main/js/sap/ushell/services/UserInfo.js +1 -1
- package/src/main/js/sap/ushell/services/UserRecents/RecentActivity.js +2 -2
- package/src/main/js/sap/ushell/services/UserRecents/RecentsList.js +1 -1
- package/src/main/js/sap/ushell/services/UserRecents.js +5 -5
- package/src/main/js/sap/ushell/services/VisualizationDataProvider.js +1 -1
- package/src/main/js/sap/ushell/services/VisualizationInstantiation.js +1 -1
- package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/ContentExtensionAdapterConfig.js +1 -1
- package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/FeaturedGroupConfig.js +1 -1
- package/src/main/js/sap/ushell/services/_CrossApplicationNavigation/utils.js +1 -1
- package/src/main/js/sap/ushell/services/_PageReferencing/PageReferencer.js +1 -1
- package/src/main/js/sap/ushell/state/StateManager.js +14 -5
- package/src/main/js/sap/ushell/state/StateRules.js +10 -1
- package/src/main/js/sap/ushell/state/modules/BackNavigation.js +1 -1
- package/src/main/js/sap/ushell/state/modules/ContentDensity.js +1 -1
- package/src/main/js/sap/ushell/state/modules/Favicon.js +1 -1
- package/src/main/js/sap/ushell/state/modules/HeaderLogo.js +1 -1
- package/src/main/js/sap/ushell/support/plugins/flpConfig/FlpConfigurationPlugin.js +1 -1
- package/src/main/js/sap/ushell/themes/base/ApplicationContainer.less +0 -9
- package/src/main/js/sap/ushell/themes/base/ShellHeader.less +0 -14
- package/src/main/js/sap/ushell/themes/sap_belize_base/ApplicationContainer.less +0 -9
- package/src/main/js/sap/ushell/themes/sap_belize_base/ShellHeader.less +0 -14
- package/src/main/js/sap/ushell/themes/sap_bluecrystal_base/ApplicationContainer.less +0 -9
- package/src/main/js/sap/ushell/themes/sap_bluecrystal_base/ShellHeader.less +0 -14
- package/src/main/js/sap/ushell/themes/sap_hcb/base_ApplicationContainer.less +0 -9
- package/src/main/js/sap/ushell/themes/sap_hcb/base_ShellHeader.less +0 -14
- package/src/main/js/sap/ushell/ui/ShellHeader.js +4 -29
- package/src/main/js/sap/ushell/ui/ShellHeaderRenderer.js +0 -14
- package/src/main/js/sap/ushell/ui/cards/FrequentActivitiesExtension.js +11 -11
- package/src/main/js/sap/ushell/ui/cards/RecentActivitiesExtension.js +12 -12
- package/src/main/js/sap/ushell/ui/launchpad/ExtendedChangeDetection.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/Section.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/VizInstance.js +113 -22
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceCdm.js +0 -2
- package/src/main/js/sap/ushell/ui/launchpad/section/CompactArea.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/ShellAppTitle.js +0 -8
- package/src/main/js/sap/ushell/ui/shell/ToolAreaItem.js +1 -1
- package/src/main/js/sap/ushell/ui/utils.js +1 -1
- package/src/main/js/sap/ushell/ui5service/ShellUIServiceFactory.js +1 -1
- package/src/main/js/sap/ushell/ui5service/UserStatus.js +1 -1
- package/src/main/js/sap/ushell/utils/SmartBusiness.js +139 -0
- package/src/main/js/sap/ushell/utils/UrlParsing.js +335 -208
- package/src/main/js/sap/ushell/utils/UrlShortening.js +1 -1
- package/src/main/js/sap/ushell/utils/workpage/WorkPageHost.js +1 -1
- package/src/main/js/sap/ushell/utils/workpage/WorkPageService.js +1 -1
- package/src/main/js/sap/ushell/utils/workpage/WorkPageVizInstantiation.js +1 -1
- package/src/main/js/sap/ushell/utils.js +36 -56
- package/src/test/js/sap/ushell/bootstrap/sandbox.js +1 -1
- package/ui5.yaml +19 -34
- package/src/main/js/sap/ushell/components/workPageBuilder/Component.js +0 -228
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.accessibility.js +0 -277
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.controller.js +0 -2128
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.layout.js +0 -462
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPage.js +0 -182
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageButton.js +0 -135
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageCell.js +0 -400
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumn.js +0 -345
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnRenderer.js +0 -103
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnResizer.js +0 -147
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRenderer.js +0 -60
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRow.js +0 -277
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRowRenderer.js +0 -96
- package/src/main/js/sap/ushell/components/workPageBuilder/manifest.json +0 -59
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources.properties +0 -177
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ar.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_bg.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ca.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_cnr.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_cs.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_cy.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_da.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_de.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_el.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_en_GB.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_en_US_sappsd.properties +0 -79
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_en_US_saprigi.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_en_US_saptrc.properties +0 -90
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_es.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_es_MX.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_et.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_fi.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_fr.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_fr_CA.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_hi.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_hr.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_hu.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_id.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_it.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_iw.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ja.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_kk.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ko.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_lt.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_lv.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_mk.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ms.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_nl.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_no.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_pl.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_pt.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_pt_PT.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ro.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ru.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sh.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sk.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sl.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sr.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sv.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_th.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_tr.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_uk.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_vi.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_zh_CN.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_zh_TW.properties +0 -93
- package/src/main/js/sap/ushell/components/workPageBuilder/view/WorkPageBuilder.view.xml +0 -248
- package/src/main/js/sap/ushell/components/workPageBuilder/view/WorkPageCellDeleteDialog.fragment.xml +0 -25
- package/src/main/js/sap/ushell/components/workPageBuilder/view/WorkPageRowDeleteDialog.fragment.xml +0 -25
- package/src/main/js/sap/ushell/components/workPageRuntime/Component.js +0 -67
- package/src/main/js/sap/ushell/components/workPageRuntime/controller/WorkPageRuntime.controller.js +0 -176
- package/src/main/js/sap/ushell/components/workPageRuntime/manifest.json +0 -50
- package/src/main/js/sap/ushell/components/workPageRuntime/view/WorkPageRuntime.view.xml +0 -37
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/Avatar.js +0 -119
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/Button.js +0 -219
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/Label.js +0 -75
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/ListItem.js +0 -76
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/ListItemBase.js +0 -39
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/ListItemGroup.js +0 -153
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/Menu.js +0 -185
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/MenuItem.js +0 -198
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-base.js +0 -576
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/IllustratedMessage.js +0 -98
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/NotificationList.js +0 -135
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/NotificationListGroupItem.js +0 -91
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/NotificationListItem.js +0 -134
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/NotificationListItemBase.js +0 -55
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/Search.js +0 -163
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/SearchItem.js +0 -83
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/SearchItemGroup.js +0 -36
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/SearchMessageArea.js +0 -53
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/SearchScope.js +0 -55
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBar.js +0 -380
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBarBranding.js +0 -78
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBarItem.js +0 -88
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBarSearch.js +0 -157
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBarSpacer.js +0 -49
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/UserMenu.js +0 -197
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/UserMenuAccount.js +0 -83
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/UserMenuItem.js +0 -42
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori.js +0 -1652
- package/src/main/js/sap/ushell/gen/ui5/webcomponents.js +0 -2823
- package/src/main/js/sap/ushell/services/PluginManager/Extensions.js +0 -58
- package/src/main/js/sap/ushell/services/PluginManager/HeaderExtensions.js +0 -35
- package/src/main/js/sap/ushell/services/PluginManager/MenuExtensions.js +0 -65
- package/src/main/js/sap/ushell/thirdparty/AccessibilityTextsHelper.js +0 -13
- package/src/main/js/sap/ushell/thirdparty/Avatar.js +0 -453
- package/src/main/js/sap/ushell/thirdparty/BusyIndicator.js +0 -233
- package/src/main/js/sap/ushell/thirdparty/Button.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/Button2.js +0 -656
- package/src/main/js/sap/ushell/thirdparty/FocusableElements.js +0 -10
- package/src/main/js/sap/ushell/thirdparty/Icon.js +0 -313
- package/src/main/js/sap/ushell/thirdparty/Icons.js +0 -234
- package/src/main/js/sap/ushell/thirdparty/IllustratedMessage.js +0 -1297
- package/src/main/js/sap/ushell/thirdparty/Label.js +0 -115
- package/src/main/js/sap/ushell/thirdparty/Link.js +0 -316
- package/src/main/js/sap/ushell/thirdparty/List.js +0 -1253
- package/src/main/js/sap/ushell/thirdparty/ListBoxItemGroupTemplate.js +0 -14
- package/src/main/js/sap/ushell/thirdparty/ListItemAdditionalText.css.js +0 -10
- package/src/main/js/sap/ushell/thirdparty/ListItemBase.js +0 -251
- package/src/main/js/sap/ushell/thirdparty/ListItemCustom.js +0 -1689
- package/src/main/js/sap/ushell/thirdparty/ListItemGroup.js +0 -637
- package/src/main/js/sap/ushell/thirdparty/Menu.js +0 -389
- package/src/main/js/sap/ushell/thirdparty/MenuItem.js +0 -10
- package/src/main/js/sap/ushell/thirdparty/MenuItem2.js +0 -762
- package/src/main/js/sap/ushell/thirdparty/NotificationList.js +0 -291
- package/src/main/js/sap/ushell/thirdparty/NotificationListGroupItem.js +0 -310
- package/src/main/js/sap/ushell/thirdparty/NotificationListItem.js +0 -534
- package/src/main/js/sap/ushell/thirdparty/NotificationListItemBase.js +0 -98
- package/src/main/js/sap/ushell/thirdparty/ResponsivePopover.js +0 -2312
- package/src/main/js/sap/ushell/thirdparty/SearchItem.js +0 -157
- package/src/main/js/sap/ushell/thirdparty/SearchItemGroup.js +0 -44
- package/src/main/js/sap/ushell/thirdparty/SearchMessageArea.js +0 -49
- package/src/main/js/sap/ushell/thirdparty/SearchScope.js +0 -39
- package/src/main/js/sap/ushell/thirdparty/ShellBar.js +0 -1809
- package/src/main/js/sap/ushell/thirdparty/ShellBarBranding.js +0 -119
- package/src/main/js/sap/ushell/thirdparty/ShellBarItem.js +0 -89
- package/src/main/js/sap/ushell/thirdparty/ShellBarSearch.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/ShellBarSearch2.js +0 -3453
- package/src/main/js/sap/ushell/thirdparty/ShellBarSpacer.js +0 -40
- package/src/main/js/sap/ushell/thirdparty/Tag.js +0 -302
- package/src/main/js/sap/ushell/thirdparty/Text.js +0 -127
- package/src/main/js/sap/ushell/thirdparty/Title.js +0 -167
- package/src/main/js/sap/ushell/thirdparty/UserMenu.js +0 -950
- package/src/main/js/sap/ushell/thirdparty/UserMenuAccount.js +0 -114
- package/src/main/js/sap/ushell/thirdparty/UserMenuItem.js +0 -61
- package/src/main/js/sap/ushell/thirdparty/ValueState.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/WrappingType.js +0 -24
- package/src/main/js/sap/ushell/thirdparty/_dynamics/InputComposition.js +0 -35
- package/src/main/js/sap/ushell/thirdparty/_dynamics/InputSuggestions.js +0 -397
- package/src/main/js/sap/ushell/thirdparty/_dynamics/ListItemStandardExpandableTextTemplate.js +0 -193
- package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons-TNT.js +0 -585
- package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons-TNT2.js +0 -585
- package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons-business-suite.js +0 -1194
- package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons-business-suite2.js +0 -1194
- package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons.js +0 -2509
- package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons2.js +0 -2509
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_id.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_id2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW.js +0 -866
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW2.js +0 -611
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css10.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css11.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css12.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css13.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css14.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css15.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css16.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css17.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css18.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css19.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css20.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css21.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css22.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css23.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css24.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css25.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css26.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css27.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css4.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css5.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css6.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css7.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css8.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css9.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/encodeXML.js +0 -87
- package/src/main/js/sap/ushell/thirdparty/event-strict.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/generateHighlightedMarkup.js +0 -9
- package/src/main/js/sap/ushell/thirdparty/i18n-defaults.js +0 -115
- package/src/main/js/sap/ushell/thirdparty/i18n-defaults2.js +0 -159
- package/src/main/js/sap/ushell/thirdparty/information.js +0 -100
- package/src/main/js/sap/ushell/thirdparty/information2.js +0 -13
- package/src/main/js/sap/ushell/thirdparty/overflow.js +0 -25
- package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css.js +0 -11
- package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css2.js +0 -44
- package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css3.js +0 -8
- package/src/main/js/sap/ushell/thirdparty/query.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/slim-arrow-down.js +0 -44
- package/src/main/js/sap/ushell/thirdparty/sys-enter-2.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/toLowercaseEnumValue.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-icons/AllIcons.js +0 -26
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-icons-business-suite/AllIcons.js +0 -26
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-icons-tnt/AllIcons.js +0 -26
- package/src/main/js/sap/ushell/thirdparty/webcomponents-base.js +0 -4301
- package/src/main/js/sap/ushell/thirdparty/webcomponents-base2.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/webcomponents-fiori.js +0 -146
- package/src/main/js/sap/ushell/thirdparty/webcomponents.js +0 -170
- package/src/main/js/sap/ushell/thirdparty/willShowContent.js +0 -7
|
@@ -1,4301 +0,0 @@
|
|
|
1
|
-
sap.ui.define(['exports', 'sap/ushell/thirdparty/Icons'], (function (exports, Icons) { 'use strict';
|
|
2
|
-
|
|
3
|
-
const p$5=t=>{const e=t.prototype.openEnd;t.prototype.openEnd=function(){return this._mAttributes.popover&&delete this._mAttributes.popover,e.apply(this)};};
|
|
4
|
-
|
|
5
|
-
var e$a = "[data-sap-ui-popup][popover]{border:none;overflow:visible;margin:0}";
|
|
6
|
-
|
|
7
|
-
const o$9=()=>{Icons.S("data-ui5-popup-styles")||Icons.c$1(e$a,"data-ui5-popup-styles");};
|
|
8
|
-
|
|
9
|
-
const n$g=Icons.m("AllOpenedPopupsRegistry",{openedRegistry:[]}),l$a=e=>{n$g.openedRegistry.push(e);},u$6=e=>{const t=n$g.openedRegistry.findIndex(o=>o.instance===e);t>-1&&n$g.openedRegistry.splice(t,1);},g$4=()=>n$g.openedRegistry[n$g.openedRegistry.length-1].instance,f$6=e=>{for(let t=n$g.openedRegistry.length-1;t>=0;t--){const o=n$g.openedRegistry[t];if(o.type!=="OpenUI5")return false;if(o.instance===e)break}return true},h$2=e=>{e.setAttribute("popover","manual"),e.showPopover();},v$4=e=>{e.hasAttribute("popover")&&(e.hidePopover(),e.removeAttribute("popover"));},a$b=(e=document)=>e.querySelector(":popover-open")?true:Array.from(e.querySelectorAll("*")).some(t=>{const o=t.shadowRoot;return o&&a$b(o)}),O$3=e=>{const t=e.prototype.open;e.prototype.open=function(...p){t.apply(this,p);const s=a$b();if(["OPENING","OPEN"].includes(this.getOpenState())&&s){const r=this.getContent();if(r){const i=r instanceof HTMLElement?r:r?.getDomRef();i&&h$2(i);}}l$a({type:"OpenUI5",instance:this});};},m$8=e=>{const t=e.prototype._closed;e.prototype._closed=function(...p){const s=this.getContent(),c=s instanceof HTMLElement?s:s?.getDomRef();t.apply(this,p),c&&v$4(c),u$6(this);};},I$3=e=>{const t=e.prototype.onFocusEvent;e.prototype.onFocusEvent=function(p){f$6(this)&&t.call(this,p);};},P$2=()=>{const e=new CSSStyleSheet;e.replaceSync(".sapMPopup-CTX:popover-open { inset: unset; }"),document.adoptedStyleSheets=[...document.adoptedStyleSheets,e];},E$1=e=>{o$9(),O$3(e),m$8(e),P$2(),I$3(e);};
|
|
10
|
-
|
|
11
|
-
let a$a = class a{static isAtLeastVersion116(){if(!window.sap.ui.version)return true;const e=window.sap.ui.version.split(".");return !e||e.length<2?false:parseInt(e[0])>1||parseInt(e[1])>=116}static isOpenUI5Detected(){return typeof window.sap?.ui?.require=="function"}static init(){return a.isOpenUI5Detected()?(a.initPromise||(a.initPromise=new Promise(t=>{window.sap.ui.require(["sap/ui/core/Core"],async e=>{const i=()=>{let n=["sap/ui/core/Popup","sap/ui/core/Patcher","sap/ui/core/LocaleData"];a.isAtLeastVersion116()&&(n=[...n,"sap/base/i18n/Formatting","sap/base/i18n/Localization","sap/ui/core/ControlBehavior","sap/ui/core/Theming","sap/ui/core/date/CalendarUtils"]),window.sap.ui.require(n,(o,r)=>{p$5(r),E$1(o),t();});};a.isAtLeastVersion116()?(await e.ready(),i()):e.attachInit(i);});})),a.initPromise):Promise.resolve()}static getConfigurationSettingsObject(){if(!a.isOpenUI5Detected())return {};if(a.isAtLeastVersion116()){const n=window.sap.ui.require("sap/ui/core/ControlBehavior"),o=window.sap.ui.require("sap/base/i18n/Localization"),r=window.sap.ui.require("sap/ui/core/Theming"),s=window.sap.ui.require("sap/base/i18n/Formatting"),c=window.sap.ui.require("sap/ui/core/date/CalendarUtils");return {animationMode:n.getAnimationMode(),language:o.getLanguage(),theme:r.getTheme(),themeRoot:r.getThemeRoot(),rtl:o.getRTL(),timezone:o.getTimezone(),calendarType:s.getCalendarType(),formatSettings:{firstDayOfWeek:c.getWeekConfigurationValues().firstDayOfWeek,legacyDateCalendarCustomizing:s.getCustomIslamicCalendarData?.()??s.getLegacyDateCalendarCustomizing?.()}}}const e=window.sap.ui.require("sap/ui/core/Core").getConfiguration(),i=window.sap.ui.require("sap/ui/core/LocaleData");return {animationMode:e.getAnimationMode(),language:e.getLanguage(),theme:e.getTheme(),themeRoot:e.getThemeRoot(),rtl:e.getRTL(),timezone:e.getTimezone(),calendarType:e.getCalendarType(),formatSettings:{firstDayOfWeek:i?i.getInstance(e.getLocale()).getFirstDayOfWeek():void 0,legacyDateCalendarCustomizing:e.getFormatSettings().getLegacyDateCalendarCustomizing()}}}static getLocaleDataObject(){if(!a.isOpenUI5Detected())return;const t=window.sap.ui.require("sap/ui/core/LocaleData");if(a.isAtLeastVersion116()){const n=window.sap.ui.require("sap/base/i18n/Localization");return t.getInstance(n.getLanguageTag())._get()}const i=window.sap.ui.require("sap/ui/core/Core").getConfiguration();return t.getInstance(i.getLocale())._get()}static _listenForThemeChange(){if(a.isAtLeastVersion116()){const t=window.sap.ui.require("sap/ui/core/Theming");t.attachApplied(()=>{Icons.u$1(t.getTheme());});}else {const t=window.sap.ui.require("sap/ui/core/Core"),e=t.getConfiguration();t.attachThemeChanged(()=>{Icons.u$1(e.getTheme());});}}static attachListeners(){a.isOpenUI5Detected()&&a._listenForThemeChange();}static cssVariablesLoaded(){if(!a.isOpenUI5Detected())return;const t=[...document.head.children].find(e=>e.id==="sap-ui-theme-sap.ui.core");return t?!!t.href.match(/\/css(-|_)variables\.css/)||!!t.href.match(/\/library\.css/):false}static addOpenedPopup(t){l$a(t);}static removeOpenedPopup(t){u$6(t);}static getTopmostPopup(){return g$4()}};Icons.s("OpenUI5Support",a$a);
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @license
|
|
15
|
-
* Copyright 2017 Google LLC
|
|
16
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
17
|
-
*/
|
|
18
|
-
var t$7;const i$8=window,s$e=i$8.trustedTypes,e$9=s$e?s$e.createPolicy("lit-html",{createHTML:t=>t}):void 0,o$8="$lit$",n$f=`lit$${(Math.random()+"").slice(9)}$`,l$9="?"+n$f,h$1=`<${l$9}>`,r$5=document,u$5=()=>r$5.createComment(""),d$4=t=>null===t||"object"!=typeof t&&"function"!=typeof t,c$6=Array.isArray,v$3=t=>c$6(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]),a$9="[ \t\n\f\r]",f$5=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,_$2=/-->/g,m$7=/>/g,p$4=RegExp(`>|${a$9}(?:([^\\s"'>=/]+)(${a$9}*=${a$9}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),g$3=/'/g,$=/"/g,y$3=/^(?:script|style|textarea|title)$/i,w=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x$1=w(1),b$7=w(2),T=Symbol.for("lit-noChange"),A$1=Symbol.for("lit-nothing"),E=new WeakMap,C$3=r$5.createTreeWalker(r$5,129,null,false);function P$1(t,i){if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==e$9?e$9.createHTML(i):i}const V$1=(t,i)=>{const s=t.length-1,e=[];let l,r=2===i?"<svg>":"",u=f$5;for(let i=0;i<s;i++){const s=t[i];let d,c,v=-1,a=0;for(;a<s.length&&(u.lastIndex=a,c=u.exec(s),null!==c);)a=u.lastIndex,u===f$5?"!--"===c[1]?u=_$2:void 0!==c[1]?u=m$7:void 0!==c[2]?(y$3.test(c[2])&&(l=RegExp("</"+c[2],"g")),u=p$4):void 0!==c[3]&&(u=p$4):u===p$4?">"===c[0]?(u=null!=l?l:f$5,v=-1):void 0===c[1]?v=-2:(v=u.lastIndex-c[2].length,d=c[1],u=void 0===c[3]?p$4:'"'===c[3]?$:g$3):u===$||u===g$3?u=p$4:u===_$2||u===m$7?u=f$5:(u=p$4,l=void 0);const w=u===p$4&&t[i+1].startsWith("/>")?" ":"";r+=u===f$5?s+h$1:v>=0?(e.push(d),s.slice(0,v)+o$8+s.slice(v)+n$f+w):s+n$f+(-2===v?(e.push(void 0),i):w);}return [P$1(t,r+(t[s]||"<?>")+(2===i?"</svg>":"")),e]};let N$1 = class N{constructor({strings:t,_$litType$:i},e){let h;this.parts=[];let r=0,d=0;const c=t.length-1,v=this.parts,[a,f]=V$1(t,i);if(this.el=N.createElement(a,e),C$3.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes);}for(;null!==(h=C$3.nextNode())&&v.length<c;){if(1===h.nodeType){if(h.hasAttributes()){const t=[];for(const i of h.getAttributeNames())if(i.endsWith(o$8)||i.startsWith(n$f)){const s=f[d++];if(t.push(i),void 0!==s){const t=h.getAttribute(s.toLowerCase()+o$8).split(n$f),i=/([.?@])?(.*)/.exec(s);v.push({type:1,index:r,name:i[2],strings:t,ctor:"."===i[1]?H:"?"===i[1]?L:"@"===i[1]?z:k$1});}else v.push({type:6,index:r});}for(const i of t)h.removeAttribute(i);}if(y$3.test(h.tagName)){const t=h.textContent.split(n$f),i=t.length-1;if(i>0){h.textContent=s$e?s$e.emptyScript:"";for(let s=0;s<i;s++)h.append(t[s],u$5()),C$3.nextNode(),v.push({type:2,index:++r});h.append(t[i],u$5());}}}else if(8===h.nodeType)if(h.data===l$9)v.push({type:2,index:r});else {let t=-1;for(;-1!==(t=h.data.indexOf(n$f,t+1));)v.push({type:7,index:r}),t+=n$f.length-1;}r++;}}static createElement(t,i){const s=r$5.createElement("template");return s.innerHTML=t,s}};function S$1(t,i,s=t,e){var o,n,l,h;if(i===T)return i;let r=void 0!==e?null===(o=s._$Co)||void 0===o?void 0:o[e]:s._$Cl;const u=d$4(i)?void 0:i._$litDirective$;return (null==r?void 0:r.constructor)!==u&&(null===(n=null==r?void 0:r._$AO)||void 0===n||n.call(r,false),void 0===u?r=void 0:(r=new u(t),r._$AT(t,s,e)),void 0!==e?(null!==(l=(h=s)._$Co)&&void 0!==l?l:h._$Co=[])[e]=r:s._$Cl=r),void 0!==r&&(i=S$1(t,r._$AS(t,i.values),r,e)),i}let M$1 = class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i;}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){var i;const{el:{content:s},parts:e}=this._$AD,o=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:r$5).importNode(s,true);C$3.currentNode=o;let n=C$3.nextNode(),l=0,h=0,u=e[0];for(;void 0!==u;){if(l===u.index){let i;2===u.type?i=new R$3(n,n.nextSibling,this,t):1===u.type?i=new u.ctor(n,u.name,u.strings,this,t):6===u.type&&(i=new Z(n,this,t)),this._$AV.push(i),u=e[++h];}l!==(null==u?void 0:u.index)&&(n=C$3.nextNode(),l++);}return C$3.currentNode=r$5,o}v(t){let i=0;for(const s of this._$AV) void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++;}};let R$3 = class R{constructor(t,i,s,e){var o;this.type=2,this._$AH=A$1,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cp=null===(o=null==e?void 0:e.isConnected)||void 0===o||o;}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cp}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===(null==t?void 0:t.nodeType)&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S$1(this,t,i),d$4(t)?t===A$1||null==t||""===t?(this._$AH!==A$1&&this._$AR(),this._$AH=A$1):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.g(t):void 0!==t.nodeType?this.$(t):v$3(t)?this.T(t):this._(t);}k(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}$(t){this._$AH!==t&&(this._$AR(),this._$AH=this.k(t));}_(t){this._$AH!==A$1&&d$4(this._$AH)?this._$AA.nextSibling.data=t:this.$(r$5.createTextNode(t)),this._$AH=t;}g(t){var i;const{values:s,_$litType$:e}=t,o="number"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=N$1.createElement(P$1(e.h,e.h[0]),this.options)),e);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===o)this._$AH.v(s);else {const t=new M$1(o,this),i=t.u(this.options);t.v(s),this.$(i),this._$AH=t;}}_$AC(t){let i=E.get(t.strings);return void 0===i&&E.set(t.strings,i=new N$1(t)),i}T(t){c$6(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const o of t)e===i.length?i.push(s=new R(this.k(u$5()),this.k(u$5()),this,this.options)):s=i[e],s._$AI(o),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e);}_$AR(t=this._$AA.nextSibling,i){var s;for(null===(s=this._$AP)||void 0===s||s.call(this,false,true,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i;}}setConnected(t){var i;void 0===this._$AM&&(this._$Cp=t,null===(i=this._$AP)||void 0===i||i.call(this,t));}};let k$1 = class k{constructor(t,i,s,e,o){this.type=1,this._$AH=A$1,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=o,s.length>2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A$1;}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=false;if(void 0===o)t=S$1(this,t,i,0),n=!d$4(t)||t!==this._$AH&&t!==T,n&&(this._$AH=t);else {const e=t;let l,h;for(t=o[0],l=0;l<o.length-1;l++)h=S$1(this,e[s+l],i,l),h===T&&(h=this._$AH[l]),n||(n=!d$4(h)||h!==this._$AH[l]),h===A$1?t=A$1:t!==A$1&&(t+=(null!=h?h:"")+o[l+1]),this._$AH[l]=h;}n&&!e&&this.j(t);}j(t){t===A$1?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:"");}};class H extends k$1{constructor(){super(...arguments),this.type=3;}j(t){this.element[this.name]=t===A$1?void 0:t;}}const I$2=s$e?s$e.emptyScript:"";class L extends k$1{constructor(){super(...arguments),this.type=4;}j(t){t&&t!==A$1?this.element.setAttribute(this.name,I$2):this.element.removeAttribute(this.name);}}class z extends k$1{constructor(t,i,s,e,o){super(t,i,s,e,o),this.type=5;}_$AI(t,i=this){var s;if((t=null!==(s=S$1(this,t,i,0))&&void 0!==s?s:A$1)===T)return;const e=this._$AH,o=t===A$1&&e!==A$1||t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive,n=t!==A$1&&(e===A$1||o);o&&this.element.removeEventListener(this.name,this,e),n&&this.element.addEventListener(this.name,this,t),this._$AH=t;}handleEvent(t){var i,s;"function"==typeof this._$AH?this._$AH.call(null!==(s=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==s?s:this.element,t):this._$AH.handleEvent(t);}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s;}get _$AU(){return this._$AM._$AU}_$AI(t){S$1(this,t);}}const B=i$8.litHtmlPolyfillSupport;null==B||B(N$1,R$3),(null!==(t$7=i$8.litHtmlVersions)&&void 0!==t$7?t$7:i$8.litHtmlVersions=[]).push("2.8.0");
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* @license
|
|
22
|
-
* Copyright 2020 Google LLC
|
|
23
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
24
|
-
*/const e$8=Symbol.for(""),l$8=t=>{if((null==t?void 0:t.r)===e$8)return null==t?void 0:t._$litStatic$},o$7=t=>({_$litStatic$:t,r:e$8}),s$d=new Map,a$8=t=>(r,...e)=>{const o=e.length;let i,a;const n=[],u=[];let c,$=0,f=false;for(;$<o;){for(c=r[$];$<o&&void 0!==(a=e[$],i=l$8(a));)c+=i+r[++$],f=true;$!==o&&u.push(a),n.push(c),$++;}if($===o&&n.push(r[o]),f){const t=n.join("$$lit$$");void 0===(r=s$d.get(t))&&(n.raw=n,s$d.set(t,r=n)),e=u;}return t(r,...e)},n$e=a$8(x$1),u$4=a$8(b$7);
|
|
25
|
-
|
|
26
|
-
let t$6 = class t{static{this.html=n$e;}static{this.svg=u$4;}static{this.unsafeStatic=o$7;}};Icons.s("LitStatic",t$6);
|
|
27
|
-
|
|
28
|
-
const t$5=new WeakMap;let a$7 = class a{static get tasks(){return t$5}static enqueue(s,e){t$5.has(s)||t$5.set(s,[]),t$5.get(s).push(e);}static run(s,e){return t$5.has(s)||t$5.set(s,[]),e().then(()=>{const T=t$5.get(s);if(T.length>0)return a.run(s,T.shift());t$5.delete(s);})}static push(s,e){t$5.get(s)?a.enqueue(s,e):a.run(s,e);}};
|
|
29
|
-
|
|
30
|
-
const f$4=e=>{let n=null,a=false,i,o,r;const m=new Promise((t,c)=>{r=u=>{n=n||u;const d=u-n,l=e.duration-d;if(d<=e.duration){const s=1-l/e.duration;e.advance(s),a||(i=requestAnimationFrame(r));}else e.advance(1),t();},o=()=>{a=true,cancelAnimationFrame(i),c(new Error("animation stopped"));};}).catch(t=>t);return a$7.push(e.element,()=>(typeof e.beforeStart=="function"&&e.beforeStart(),requestAnimationFrame(r),new Promise(t=>{m.then(()=>t());}))),{promise:()=>m,stop:()=>o}},v$2=400;
|
|
31
|
-
|
|
32
|
-
const n$d=(r,c,a)=>{let o,l;return f$4({beforeStart:()=>{o=r.scrollLeft,l=r.scrollTop;},duration:v$2,element:r,advance:t=>{r.scrollLeft=o+t*c,r.scrollTop=l+t*a;}})};
|
|
33
|
-
|
|
34
|
-
const b$6=t=>{let o,a,d,r,s,p,g,y,n,l,h,T;const B=f$4({beforeStart:()=>{t.style.display="block",o=getComputedStyle(t),a=parseFloat(o.paddingTop),d=parseFloat(o.paddingBottom),r=parseFloat(o.marginTop),s=parseFloat(o.marginBottom),p=parseFloat(o.height),g=t.style.overflow,y=t.style.paddingTop,n=t.style.paddingBottom,l=t.style.marginTop,h=t.style.marginBottom,T=t.style.height,t.style.overflow="hidden",t.style.paddingTop="0",t.style.paddingBottom="0",t.style.marginTop="0",t.style.marginBottom="0",t.style.height="0";},duration:v$2,element:t,advance:i=>{t.style.display="block",t.style.paddingTop=`${a*i}px`,t.style.paddingBottom=`${d*i}px`,t.style.marginTop=`${r*i}px`,t.style.marginBottom=`${s*i}px`,t.style.height=`${p*i}px`;}});return B.promise().then(()=>{t.style.overflow=g,t.style.paddingTop=y,t.style.paddingBottom=n,t.style.marginTop=l,t.style.marginBottom=h,t.style.height=T;}),B};
|
|
35
|
-
|
|
36
|
-
const u$3=o=>{let i,a,r,d,n,s,p,g,e,l,y,m;const h=f$4({beforeStart:()=>{const t=o;i=getComputedStyle(t),a=parseFloat(i.paddingTop),r=parseFloat(i.paddingBottom),d=parseFloat(i.marginTop),n=parseFloat(i.marginBottom),s=parseFloat(i.height),p=t.style.overflow,g=t.style.paddingTop,e=t.style.paddingBottom,l=t.style.marginTop,y=t.style.marginBottom,m=t.style.height,t.style.overflow="hidden";},duration:v$2,element:o,advance:t=>{o.style.paddingTop=`${a-a*t}px`,o.style.paddingBottom=`${r-r*t}px`,o.style.marginTop=`${d-d*t}px`,o.style.marginBottom=`${n-n*t}px`,o.style.height=`${s-s*t}px`;}});return h.promise().then(t=>{t instanceof Error||(o.style.overflow=p,o.style.paddingTop=g,o.style.paddingBottom=e,o.style.marginTop=l,o.style.marginBottom=y,o.style.height=m,o.style.display="none");}),h};
|
|
37
|
-
|
|
38
|
-
let n$c;Icons.i$1(()=>{n$c=void 0;});const d$3=()=>(n$c===void 0&&(n$c=Icons.C$1()),n$c),m$6=o=>{Object.values(Icons.u).includes(o)&&(n$c=o);};
|
|
39
|
-
|
|
40
|
-
var s$c=(i=>(i.Gregorian="Gregorian",i.Islamic="Islamic",i.Japanese="Japanese",i.Buddhist="Buddhist",i.Persian="Persian",i))(s$c||{});
|
|
41
|
-
|
|
42
|
-
let n$b;Icons.i$1(()=>{n$b=void 0;});const i$7=()=>(n$b===void 0&&(n$b=Icons.D$1()),n$b&&n$b in s$c?n$b:s$c.Gregorian);
|
|
43
|
-
|
|
44
|
-
let t$4;let a$6 = class a{static getLegacyDateCalendarCustomizing(){return t$4===void 0&&(t$4=Icons.M()),t$4.legacyDateCalendarCustomizing||[]}};Icons.s("LegacyDateFormats",a$6);
|
|
45
|
-
|
|
46
|
-
let e$7;Icons.i$1(()=>{e$7=void 0;});const n$a=()=>(e$7===void 0&&(e$7=Icons.M()),e$7.firstDayOfWeek),i$6=Icons.n$1("LegacyDateFormats"),m$5=i$6?a$6.getLegacyDateCalendarCustomizing:()=>[];
|
|
47
|
-
|
|
48
|
-
var s$b = ":host{justify-content:center;align-items:center;display:flex;color:var(--sapList_TextColor);background-color:var(--sapList_Background);font-family:var(--sapFontFamily);height:var(--sapElement_LineHeight);border-bottom:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);opacity:.8;position:absolute;padding:0 1rem;top:-1000px;left:-1000px}";
|
|
49
|
-
|
|
50
|
-
const e$6={key:"DRAG_DROP_MULTIPLE_TEXT",defaultText:"{0} items"};
|
|
51
|
-
|
|
52
|
-
const l$7=2;let a$5=null;const g$2=e=>{a$5=e;},d$2=()=>{a$5=null;},p$3=()=>a$5,u$2=async e=>{const t=document.createElement("div"),n=await Icons.f$2("sap/ushell/gen/ui5/webcomponents-base"),r=t.attachShadow({mode:"open"}),o=new CSSStyleSheet;return o.replaceSync(s$b),r.adoptedStyleSheets=[o],r.textContent=n.getText(e$6,e),t},m$4=async(e,t)=>{if(e<l$7){console.warn(`Cannot start multiple drag with count ${e}. Minimum is ${l$7}.`);return}if(!t.dataTransfer)return;const n=await u$2(e);document.body.appendChild(n),t.dataTransfer.setDragImage(n,0,0),requestAnimationFrame(()=>{n.remove();});},D$2={setDraggedElement:g$2,clearDraggedElement:d$2,getDraggedElement:p$3,startMultipleDrag:m$4};
|
|
53
|
-
|
|
54
|
-
const c$5=["value-changed","click"];let e$5;Icons.i$1(()=>{e$5=void 0;});const s$a=t=>c$5.includes(t),l$6=t=>{const n=o$6();return !(typeof n!="boolean"&&n.events&&n.events.includes&&n.events.includes(t))},o$6=()=>(e$5===void 0&&(e$5=Icons.F()),e$5),f$3=t=>{e$5=t;},a$4=t=>{const n=o$6();return s$a(t)?false:n===true?true:!l$6(t)};
|
|
55
|
-
|
|
56
|
-
const m$3=(a={})=>e=>{if(Object.prototype.hasOwnProperty.call(e,"metadata")||(e.metadata={}),typeof a=="string"){e.metadata.tag=a;return}const{tag:i,languageAware:o,themeAware:r,cldr:s,fastNavigation:l,formAssociated:n,shadowRootOptions:d}=a;e.metadata.tag=i,o&&(e.metadata.languageAware=o),s&&(e.metadata.cldr=s),r&&(e.metadata.themeAware=r),l&&(e.metadata.fastNavigation=l),n&&(e.metadata.formAssociated=n),d&&(e.metadata.shadowRootOptions=d),["renderer","template","styles","dependencies"].forEach(t=>{a[t]&&Object.defineProperty(e,t,{get:()=>a[t]});});};
|
|
57
|
-
|
|
58
|
-
const b$5=(n,e={})=>t=>{Object.prototype.hasOwnProperty.call(t,"metadata")||(t.metadata={});const a=t.metadata;a.events||(a.events={});const l=a.events;l[n]||(e.bubbles=!!e.bubbles,e.cancelable=!!e.cancelable,l[n]=e);};
|
|
59
|
-
|
|
60
|
-
const s$9=o=>(p,r)=>{const t=p.constructor;Object.prototype.hasOwnProperty.call(t,"metadata")||(t.metadata={});const e=t.metadata;e.properties||(e.properties={});const a=e.properties;a[r]||(a[r]=o??{});};
|
|
61
|
-
|
|
62
|
-
const d$1=e=>(l,a)=>{const r=l.constructor;Object.prototype.hasOwnProperty.call(r,"metadata")||(r.metadata={});const o=r.metadata;o.slots||(o.slots={});const t=o.slots;if(e&&e.default&&t.default)throw new Error("Only one slot can be the default slot.");const n=e&&e.default?"default":a;e=e||{type:HTMLElement},e.type||(e.type=HTMLElement),t[n]||(t[n]=e),e.default&&(delete t.default.default,t.default.propertyName=a),r.metadata.managedSlots=true;};
|
|
63
|
-
|
|
64
|
-
const y$2={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,ARROW_LEFT:37,ARROW_UP:38,ARROW_RIGHT:39,ARROW_DOWN:40,DELETE:46,NUMPAD_PLUS:107,NUMPAD_MINUS:109,F4:115,F8:119,F10:121,PLUS:187,MINUS:219},b$4=o=>(o.key?o.key==="Enter":o.keyCode===y$2.ENTER)&&!a$3(o),i$5=o=>(o.key?o.key==="Enter":o.keyCode===y$2.ENTER)&&e$4(o,false,false,true),C$2=o=>e$4(o,true,false,false),A=o=>(o.key?o.key==="Spacebar"||o.key===" ":o.keyCode===y$2.SPACE)&&!a$3(o),K=o=>(o.key?o.key==="Spacebar"||o.key===" ":o.keyCode===y$2.SPACE)&&e$4(o,false,false,true),D$1=o=>(o.key?o.key==="ArrowLeft"||o.key==="Left":o.keyCode===y$2.ARROW_LEFT)&&!a$3(o),R$2=o=>(o.key?o.key==="ArrowRight"||o.key==="Right":o.keyCode===y$2.ARROW_RIGHT)&&!a$3(o),P=o=>(o.key?o.key==="ArrowUp"||o.key==="Up":o.keyCode===y$2.ARROW_UP)&&!a$3(o),_$1=o=>(o.key?o.key==="ArrowDown"||o.key==="Down":o.keyCode===y$2.ARROW_DOWN)&&!a$3(o),O$2=o=>(o.key?o.key==="ArrowUp"||o.key==="Up":o.keyCode===y$2.ARROW_UP)&&e$4(o,false,false,true),N=o=>(o.key?o.key==="ArrowDown"||o.key==="Down":o.keyCode===y$2.ARROW_DOWN)&&e$4(o,false,false,true),h=o=>(o.key?o.key==="ArrowLeft"||o.key==="Left":o.keyCode===y$2.ARROW_LEFT)&&e$4(o,false,false,true),I$1=o=>(o.key?o.key==="ArrowRight"||o.key==="Right":o.keyCode===y$2.ARROW_RIGHT)&&e$4(o,false,false,true),M=o=>(o.key?o.key==="Home":o.keyCode===y$2.HOME)&&!a$3(o),n$9=o=>(o.key?o.key==="End":o.keyCode===y$2.END)&&!a$3(o),m$2=o=>(o.key?o.key==="Escape"||o.key==="Esc":o.keyCode===y$2.ESCAPE)&&!a$3(o),x=o=>(o.key?o.key==="Tab":o.keyCode===y$2.TAB)&&!a$3(o),V=o=>(o.key?o.key==="Tab":o.keyCode===y$2.TAB)&&e$4(o,false,false,true),Q=o=>(o.key?o.key==="Backspace":o.keyCode===y$2.BACKSPACE)&&!a$3(o),X=o=>(o.key?o.key==="Delete":o.keyCode===y$2.DELETE)&&!a$3(o),j=o=>(o.key?o.key==="PageUp":o.keyCode===y$2.PAGE_UP)&&!a$3(o),q=o=>(o.key?o.key==="PageDown":o.keyCode===y$2.PAGE_DOWN)&&!a$3(o),ao=o=>(o.key?o.key==="+":o.keyCode===y$2.PLUS)||o.keyCode===y$2.NUMPAD_PLUS&&!a$3(o),so=o=>(o.key?o.key==="-":o.keyCode===y$2.MINUS)||o.keyCode===y$2.NUMPAD_MINUS&&!a$3(o),ko=o=>o.key?s$8(o)||Ao(o):o.keyCode===y$2.F4&&!a$3(o)||o.keyCode===y$2.ARROW_DOWN&&e$4(o,false,true,false),ro=o=>o.key==="F2"&&!a$3(o),s$8=o=>o.key==="F4"&&!a$3(o),Eo=o=>(o.key?o.key==="F10":o.keyCode===y$2.F10)&&e$4(o,false,false,true),Co=o=>(o.key?o.key==="F8":o.keyCode===y$2.F8)&&e$4(o,true,true,false),Ao=o=>(o.key==="ArrowDown"||o.key==="Down"||o.key==="ArrowUp"||o.key==="Up")&&e$4(o,false,true,false),Ko=o=>o.key==="Shift"||o.keyCode===y$2.SHIFT,a$3=o=>o.shiftKey||o.altKey||k(o),k=o=>!!(o.metaKey||o.ctrlKey),e$4=(o,r,l,E)=>o.shiftKey===E&&o.altKey===l&&k(o)===r;
|
|
65
|
-
|
|
66
|
-
const t$3=()=>{let e=document.activeElement;for(;e&&e.shadowRoot&&e.shadowRoot.activeElement;)e=e.shadowRoot.activeElement;return e};
|
|
67
|
-
|
|
68
|
-
var r$4=(l=>(l.Auto="Auto",l.Vertical="Vertical",l.Horizontal="Horizontal",l.Paging="Paging",l))(r$4||{});
|
|
69
|
-
|
|
70
|
-
var l$5=(c=>(c.Static="Static",c.Cyclic="Cyclic",c))(l$5||{});
|
|
71
|
-
|
|
72
|
-
const s$7=new Map,o$5=new Map,n$8=new Map,c$4=e=>{if(!s$7.has(e)){const a=b$3(e.split("-"));s$7.set(e,a);}return s$7.get(e)},l$4=e=>{if(!o$5.has(e)){const a=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();o$5.set(e,a);}return o$5.get(e)},p$2=e=>l$4(e),b$3=e=>e.map((a,t)=>t===0?a.toLowerCase():a.charAt(0).toUpperCase()+a.slice(1).toLowerCase()).join(""),C$1=e=>{const a=n$8.get(e);if(a)return a;const t=c$4(e),r=t.charAt(0).toUpperCase()+t.slice(1);return n$8.set(e,r),r};
|
|
73
|
-
|
|
74
|
-
const o$4=t=>{if(!(t instanceof HTMLElement))return "default";const e=t.getAttribute("slot");if(e){const r=e.match(/^(.+?)-\d+$/);return r?r[1]:e}return "default"},n$7=t=>t instanceof HTMLSlotElement?t.assignedNodes({flatten:true}).filter(e=>e instanceof HTMLElement):[t],s$6=t=>t.reduce((e,r)=>e.concat(n$7(r)),[]);
|
|
75
|
-
|
|
76
|
-
let p$1 = class p{constructor(t){this.metadata=t;}getInitialState(){if(Object.prototype.hasOwnProperty.call(this,"_initialState"))return this._initialState;const t={};if(this.slotsAreManaged()){const o=this.getSlots();for(const[e,s]of Object.entries(o)){const n=s.propertyName||e;t[n]=[],t[c$4(n)]=t[n];}}return this._initialState=t,t}static validateSlotValue(t,a){return g$1(t,a)}getPureTag(){return this.metadata.tag||""}getTag(){const t=this.metadata.tag;if(!t)return "";const a=Icons.g$1(t);return a?`${t}-${a}`:t}hasAttribute(t){const a=this.getProperties()[t];return a.type!==Object&&a.type!==Array&&!a.noAttribute}getPropertiesList(){return Object.keys(this.getProperties())}getAttributesList(){return this.getPropertiesList().filter(this.hasAttribute.bind(this)).map(l$4)}canSlotText(){return this.getSlots().default?.type===Node}hasSlots(){return !!Object.entries(this.getSlots()).length}hasIndividualSlots(){return this.slotsAreManaged()&&Object.values(this.getSlots()).some(t=>t.individualSlots)}slotsAreManaged(){return !!this.metadata.managedSlots}supportsF6FastNavigation(){return !!this.metadata.fastNavigation}getProperties(){return this.metadata.properties||(this.metadata.properties={}),this.metadata.properties}getEvents(){return this.metadata.events||(this.metadata.events={}),this.metadata.events}getSlots(){return this.metadata.slots||(this.metadata.slots={}),this.metadata.slots}isLanguageAware(){return !!this.metadata.languageAware}isThemeAware(){return !!this.metadata.themeAware}needsCLDR(){return !!this.metadata.cldr}getShadowRootOptions(){return this.metadata.shadowRootOptions||{}}isFormAssociated(){return !!this.metadata.formAssociated}shouldInvalidateOnChildChange(t,a,o){const e=this.getSlots()[t].invalidateOnChildChange;if(e===void 0)return false;if(typeof e=="boolean")return e;if(typeof e=="object"){if(a==="property"){if(e.properties===void 0)return false;if(typeof e.properties=="boolean")return e.properties;if(Array.isArray(e.properties))return e.properties.includes(o);throw new Error("Wrong format for invalidateOnChildChange.properties: boolean or array is expected")}if(a==="slot"){if(e.slots===void 0)return false;if(typeof e.slots=="boolean")return e.slots;if(Array.isArray(e.slots))return e.slots.includes(o);throw new Error("Wrong format for invalidateOnChildChange.slots: boolean or array is expected")}}throw new Error("Wrong format for invalidateOnChildChange: boolean or object is expected")}getI18n(){return this.metadata.i18n||(this.metadata.i18n={}),this.metadata.i18n}};const g$1=(r,t)=>(r&&n$7(r).forEach(a=>{if(!(a instanceof t.type))throw new Error(`The element is not of type ${t.type.toString()}`)}),r);
|
|
77
|
-
|
|
78
|
-
const r$3=()=>Icons.m("CustomStyle.eventProvider",new Icons.i$2),n$6="CustomCSSChange",i$4=t=>{r$3().attachEvent(n$6,t);},u$1=t=>r$3().fireEvent(n$6,t),c$3=()=>Icons.m("CustomStyle.customCSSFor",{});let s$5;i$4(t=>{s$5||Icons.C$2({tag:t});});const g=(t,e)=>{const o=c$3();o[t]||(o[t]=[]),o[t].push(e),s$5=true;try{u$1(t);}finally{s$5=false;}return Icons.C$2({tag:t})},l$3=t=>{const e=c$3();return e[t]?e[t].join(""):""};
|
|
79
|
-
|
|
80
|
-
const e$3=t=>Array.isArray(t)?t.filter(r=>!!r).flat(10).join(" "):t;
|
|
81
|
-
|
|
82
|
-
const e$2=new Map;i$4(t=>{e$2.delete(`${t}_normal`);});const y$1=t=>{const o=t.getMetadata().getTag(),n=`${o}_normal`,s=Icons.n$1("OpenUI5Enablement");if(!e$2.has(n)){let l="";s&&(l=e$3(s.getBusyIndicatorStyles()));const a=l$3(o)||"",m=`${e$3(t.styles)} ${a} ${l}`;e$2.set(n,m);}return e$2.get(n)};
|
|
83
|
-
|
|
84
|
-
const e$1=new Map;i$4(t=>{e$1.delete(`${t}_normal`);});const s$4=t=>{const n=`${t.getMetadata().getTag()}_normal`;if(!e$1.has(n)){const a=y$1(t),o=new CSSStyleSheet;o.replaceSync(a),e$1.set(n,[o]);}return e$1.get(n)};
|
|
85
|
-
|
|
86
|
-
const s$3=o=>{const e=o.constructor,t=o.shadowRoot;if(!t){console.warn("There is no shadow root to update");return}t.adoptedStyleSheets=s$4(e),e.renderer(o,t);};
|
|
87
|
-
|
|
88
|
-
const r$2=[],o$3=t=>r$2.some(s=>t.startsWith(s));
|
|
89
|
-
|
|
90
|
-
const t$2=new WeakMap,n$5=(e,o,r)=>{const s=new MutationObserver(o);t$2.set(e,s),s.observe(e,r);},b$2=e=>{const o=t$2.get(e);o&&(o.disconnect(),t$2.delete(e));};
|
|
91
|
-
|
|
92
|
-
const r$1=t=>t.matches(":dir(rtl)")?"rtl":"ltr";
|
|
93
|
-
|
|
94
|
-
const s$2=["disabled","title","hidden","role","draggable"],r=e=>s$2.includes(e)||e.startsWith("aria")?true:![HTMLElement,Element,Node].some(t=>t.prototype.hasOwnProperty(e));
|
|
95
|
-
|
|
96
|
-
const n$4=(t,r)=>{if(t.length!==r.length)return false;for(let e=0;e<t.length;e++)if(t[e]!==r[e])return false;return true};
|
|
97
|
-
|
|
98
|
-
const n$3=(e,t)=>e.call(t);
|
|
99
|
-
|
|
100
|
-
const o$2=t=>{s$1(t)&&e(t);},e=t=>{if(t._internals?.form){if(n$2(t),!t.name){t._internals?.setFormValue(null);return}t._internals.setFormValue(t.formFormattedValue);}},n$2=async t=>{if(t._internals?.form)if(t.formValidity&&Object.keys(t.formValidity).some(r=>r)){const r=await t.formElementAnchor?.();t._internals.setValidity(t.formValidity,t.formValidityMessage,r);}else t._internals.setValidity({});},i$3=t=>{t._internals?.form?.requestSubmit();},m$1=t=>{t._internals?.form?.reset();},s$1=t=>"formFormattedValue"in t&&"name"in t;
|
|
101
|
-
|
|
102
|
-
const f$2=new Map,s=new Map,i$2=new Map,D=new Set;let d=false;const O$1={iw:"he",ji:"yi",in:"id"},l$2=t=>{d||(console.warn(`[LocaleData] Supported locale "${t}" not configured, import the "Assets.js" module from the webcomponents package you are using.`),d=true);},R$1=(t,e,n)=>{t=t&&O$1[t]||t,t==="no"&&(t="nb"),t==="zh"&&!e&&(n==="Hans"?e="CN":n==="Hant"&&(e="TW")),(t==="sh"||t==="sr"&&n==="Latn")&&(t="sr",e="Latn");let r=`${t}_${e}`;return Icons.l.includes(r)?s.has(r)?r:(l$2(r),Icons.r$1):(r=t,Icons.l.includes(r)?s.has(r)?r:(l$2(r),Icons.r$1):Icons.r$1)},m=(t,e)=>{f$2.set(t,e);},_=t=>{if(!i$2.get(t)){const e=s.get(t);if(!e)throw new Error(`CLDR data for locale ${t} is not loaded!`);i$2.set(t,e(t));}return i$2.get(t)},u=async(t,e,n)=>{const r=R$1(t,e,n),p=Icons.n$1("OpenUI5Support");if(p){const o=p.getLocaleDataObject();if(o){m(r,o);return}}try{const o=await _(r);m(r,o);}catch(o){const c=o;D.has(c.message)||(D.add(c.message),console.error(c.message));}},C=(t,e)=>{s.set(t,e);};C("en",async()=>(await fetch("https://sdk.openui5.org/1.120.17/resources/sap/ui/core/cldr/en.json")).json()),Icons.t(()=>{const t=Icons.s$1();return u(t.getLanguage(),t.getRegion(),t.getScript())});
|
|
103
|
-
|
|
104
|
-
let it=0;const R=new Map,I=new Map,O={fromAttribute(c,f){return f===Boolean?c!==null:f===Number?c===null?void 0:parseFloat(c):c},toAttribute(c,f){return f===Boolean?c?"":null:f===Object||f===Array||c==null?null:String(c)}};function y(c){this._suppressInvalidation||this.constructor.getMetadata().isLanguageAware()&&Icons.s$2()||(this.onInvalidation(c),this._changedState.push(c),Icons.l$1(this),this._invalidationEventProvider.fireEvent("invalidate",{...c,target:this}));}function at(c,f){do{const t=Object.getOwnPropertyDescriptor(c,f);if(t)return t;c=Object.getPrototypeOf(c);}while(c&&c!==HTMLElement.prototype)}let b$1 = class b extends HTMLElement{constructor(){super();this.__shouldHydrate=false;this._rendered=false;const t=this.constructor;this._changedState=[],this._suppressInvalidation=true,this._inDOM=false,this._fullyConnected=false,this._childChangeListeners=new Map,this._slotChangeListeners=new Map,this._invalidationEventProvider=new Icons.i$2,this._componentStateFinalizedEventProvider=new Icons.i$2;let e;this._domRefReadyPromise=new Promise(n=>{e=n;}),this._domRefReadyPromise._deferredResolve=e,this._doNotSyncAttributes=new Set,this._slotsAssignedNodes=new WeakMap,this._state={...t.getMetadata().getInitialState()},this.initializedProperties=new Map,this.constructor.getMetadata().getPropertiesList().forEach(n=>{if(this.hasOwnProperty(n)){const o=this[n];this.initializedProperties.set(n,o);}}),this._internals=this.attachInternals(),this._initShadowRoot();}_initShadowRoot(){const t=this.constructor;if(t._needsShadowDOM()){const e={mode:"open"};this.shadowRoot?this.__shouldHydrate=true:this.attachShadow({...e,...t.getMetadata().getShadowRootOptions()}),t.getMetadata().slotsAreManaged()&&this.shadowRoot.addEventListener("slotchange",this._onShadowRootSlotChange.bind(this));}}_onShadowRootSlotChange(t){t.target?.getRootNode()===this.shadowRoot&&this._processChildren();}get _id(){return this.__id||(this.__id=`ui5wc_${++it}`),this.__id}render(){const t=this.constructor.template;return n$3(t,this)}async connectedCallback(){const t=this.constructor;this.setAttribute(t.getMetadata().getPureTag(),""),t.getMetadata().supportsF6FastNavigation()&&!this.hasAttribute("data-sap-ui-fastnavgroup")&&this.setAttribute("data-sap-ui-fastnavgroup","true");const e=t.getMetadata().slotsAreManaged();this._inDOM=true,e&&(this._startObservingDOMChildren(),await this._processChildren()),t.asyncFinished||await t.definePromise,this._inDOM&&(Icons.c$2(this),this._domRefReadyPromise._deferredResolve(),this._fullyConnected=true,this.onEnterDOM());}disconnectedCallback(){const e=this.constructor.getMetadata().slotsAreManaged();this._inDOM=false,e&&this._stopObservingDOMChildren(),this._fullyConnected&&(this.onExitDOM(),this._fullyConnected=false),this._domRefReadyPromise._deferredResolve(),Icons.h$1(this);}onBeforeRendering(){}onAfterRendering(){}onEnterDOM(){}onExitDOM(){}_startObservingDOMChildren(){const e=this.constructor.getMetadata();if(!e.hasSlots())return;const n=e.canSlotText(),o={childList:true,subtree:n,characterData:n};n$5(this,this._processChildren.bind(this),o);}_stopObservingDOMChildren(){b$2(this);}async _processChildren(){this.constructor.getMetadata().hasSlots()&&await this._updateSlots();}async _updateSlots(){const t=this.constructor,e$1=t.getMetadata().getSlots(),s=t.getMetadata().canSlotText(),n=Array.from(s?this.childNodes:this.children),o=new Map,a=new Map;for(const[l,u]of Object.entries(e$1)){const d=u.propertyName||l;a.set(d,l),o.set(d,[...this._state[d]]),this._clearSlot(l,u);}const r=new Map,i=new Map,h=n.map(async(l,u)=>{const d=o$4(l),g=e$1[d];if(g===void 0){if(d!=="default"){const p=Object.keys(e$1).join(", ");console.warn(`Unknown slotName: ${d}, ignoring`,l,`Valid values are: ${p}`);}return}if(g.individualSlots){const p=(r.get(d)||0)+1;r.set(d,p),l._individualSlot=`${d}-${p}`;}if(l instanceof HTMLElement){const p=l.localName;if(p.includes("-")&&!o$3(p)){if(!customElements.get(p)){const L=customElements.whenDefined(p);let E=R.get(p);E||(E=new Promise(U=>setTimeout(U,1e3)),R.set(p,E)),await Promise.race([L,E]);}customElements.upgrade(l);}}if(l=t.getMetadata().constructor.validateSlotValue(l,g),v$1(l)&&g.invalidateOnChildChange){const p=this._getChildChangeListener(d);l.attachInvalidate.call(l,p);}l instanceof HTMLSlotElement&&this._attachSlotChange(l,d,!!g.invalidateOnChildChange);const C=g.propertyName||d;i.has(C)?i.get(C).push({child:l,idx:u}):i.set(C,[{child:l,idx:u}]);});await Promise.all(h),i.forEach((l,u)=>{this._state[u]=l.sort((d,g)=>d.idx-g.idx).map(d=>d.child),this._state[c$4(u)]=this._state[u];});let _=false;for(const[l,u]of Object.entries(e$1)){const d=u.propertyName||l;n$4(o.get(d),this._state[d])||(y.call(this,{type:"slot",name:a.get(d),reason:"children"}),_=true,t.getMetadata().isFormAssociated()&&e(this));}_||y.call(this,{type:"slot",name:"default",reason:"textcontent"});}_clearSlot(t,e){const s=e.propertyName||t;this._state[s].forEach(o=>{if(v$1(o)){const a=this._getChildChangeListener(t);o.detachInvalidate.call(o,a);}o instanceof HTMLSlotElement&&this._detachSlotChange(o,t);}),this._state[s]=[],this._state[c$4(s)]=this._state[s];}attachInvalidate(t){this._invalidationEventProvider.attachEvent("invalidate",t);}detachInvalidate(t){this._invalidationEventProvider.detachEvent("invalidate",t);}_onChildChange(t,e){this.constructor.getMetadata().shouldInvalidateOnChildChange(t,e.type,e.name)&&y.call(this,{type:"slot",name:t,reason:"childchange",child:e.target});}attributeChangedCallback(t,e,s){let n;if(this._doNotSyncAttributes.has(t))return;const o=this.constructor.getMetadata().getProperties(),a=t.replace(/^ui5-/,""),r=c$4(a);if(o.hasOwnProperty(r)){const i=o[r];n=(i.converter??O).fromAttribute(s,i.type),this[r]=n;}}formAssociatedCallback(){this.constructor.getMetadata().isFormAssociated()&&o$2(this);}static get formAssociated(){return this.getMetadata().isFormAssociated()}_updateAttribute(t,e){const s=this.constructor;if(!s.getMetadata().hasAttribute(t))return;const o=s.getMetadata().getProperties()[t],a=l$4(t),i=(o.converter||O).toAttribute(e,o.type);this._doNotSyncAttributes.add(a),i==null?this.removeAttribute(a):this.setAttribute(a,i),this._doNotSyncAttributes.delete(a);}_getChildChangeListener(t){return this._childChangeListeners.has(t)||this._childChangeListeners.set(t,this._onChildChange.bind(this,t)),this._childChangeListeners.get(t)}_getSlotChangeListener(t){return this._slotChangeListeners.has(t)||this._slotChangeListeners.set(t,this._onSlotChange.bind(this,t)),this._slotChangeListeners.get(t)}_attachSlotChange(t,e,s){const n=this._getSlotChangeListener(e);t.addEventListener("slotchange",o=>{if(n.call(t,o),s){const a=this._slotsAssignedNodes.get(t);a&&a.forEach(i=>{if(v$1(i)){const h=this._getChildChangeListener(e);i.detachInvalidate.call(i,h);}});const r=s$6([t]);this._slotsAssignedNodes.set(t,r),r.forEach(i=>{if(v$1(i)){const h=this._getChildChangeListener(e);i.attachInvalidate.call(i,h);}});}});}_detachSlotChange(t,e){t.removeEventListener("slotchange",this._getSlotChangeListener(e));}_onSlotChange(t){y.call(this,{type:"slot",name:t,reason:"slotchange"});}onInvalidation(t){}updateAttributes(){const e=this.constructor.getMetadata().getProperties();for(const[s,n]of Object.entries(e))this._updateAttribute(s,this[s]);}_render(){const t=this.constructor,e=t.getMetadata().hasIndividualSlots();this.initializedProperties.size>0&&(Array.from(this.initializedProperties.entries()).forEach(([s,n])=>{delete this[s],this[s]=n;}),this.initializedProperties.clear()),this._suppressInvalidation=true;try{this.onBeforeRendering(),this._rendered||this.updateAttributes(),this._componentStateFinalizedEventProvider.fireEvent("componentStateFinalized");}finally{this._suppressInvalidation=false;}this._changedState=[],t._needsShadowDOM()&&s$3(this),this._rendered=true,e&&this._assignIndividualSlotsToChildren(),this.onAfterRendering();}_assignIndividualSlotsToChildren(){Array.from(this.children).forEach(e=>{e._individualSlot&&e.setAttribute("slot",e._individualSlot);});}_waitForDomRef(){return this._domRefReadyPromise}getDomRef(){if(typeof this._getRealDomRef=="function")return this._getRealDomRef();if(!(!this.shadowRoot||this.shadowRoot.children.length===0))return this.shadowRoot.children[0]}getFocusDomRef(){const t=this.getDomRef();if(t)return t.querySelector("[data-sap-focus-ref]")||t}async getFocusDomRefAsync(){return await this._waitForDomRef(),this.getFocusDomRef()}async focus(t){await this._waitForDomRef();const e=this.getFocusDomRef();e===this||!this.isConnected?HTMLElement.prototype.focus.call(this,t):e&&typeof e.focus=="function"&&e.focus(t);}fireEvent(t,e,s=false,n=true){const o=this._fireEvent(t,e,s,n),a=C$1(t);return a!==t?o&&this._fireEvent(a,e,s,n):o}fireDecoratorEvent(t,e){const s=this.getEventData(t),n=s?s.cancelable:false,o=s?s.bubbles:false,a=this._fireEvent(t,e,n,o),r=C$1(t);return r!==t?a&&this._fireEvent(r,e,n,o):a}_fireEvent(t,e,s=false,n=true){const o=new CustomEvent(`ui5-${t}`,{detail:e,composed:false,bubbles:n,cancelable:s}),a=this.dispatchEvent(o);if(a$4(t))return a;const r=new CustomEvent(t,{detail:e,composed:false,bubbles:n,cancelable:s});return this.dispatchEvent(r)&&a}getEventData(t){return this.constructor.getMetadata().getEvents()[t]}getSlottedNodes(t){return s$6(this[t])}attachComponentStateFinalized(t){this._componentStateFinalizedEventProvider.attachEvent("componentStateFinalized",t);}detachComponentStateFinalized(t){this._componentStateFinalizedEventProvider.detachEvent("componentStateFinalized",t);}get effectiveDir(){return Icons.n$2(this.constructor),r$1(this)}get isUI5Element(){return true}get isUI5AbstractElement(){return !this.constructor._needsShadowDOM()}get classes(){return {}}get accessibilityInfo(){}static get observedAttributes(){return this.getMetadata().getAttributesList()}static get tagsToScope(){const t=this.getMetadata().getPureTag(),e=this.getUniqueDependencies().map(s=>s.getMetadata().getPureTag()).filter(Icons.i$3);return Icons.i$3(t)&&e.push(t),e}static _needsShadowDOM(){return !!this.template||Object.prototype.hasOwnProperty.call(this.prototype,"render")}static _generateAccessors(){const t=this.prototype,e$1=this.getMetadata().slotsAreManaged(),s=this.getMetadata().getProperties();for(const[n,o]of Object.entries(s)){r(n)||console.warn(`"${n}" is not a valid property name. Use a name that does not collide with DOM APIs`);const a=at(t,n);let r$1;a?.set&&(r$1=a.set);let i;a?.get&&(i=a.get),Object.defineProperty(t,n,{get(){return i?i.call(this):this._state[n]},set(h){const _=this.constructor,l=i?i.call(this):this._state[n];if(l!==h){if(r$1?r$1.call(this,h):this._state[n]=h,y.call(this,{type:"property",name:n,newValue:h,oldValue:l}),this._rendered){const d=i?i.call(this):this._state[n];this._updateAttribute(n,d);}_.getMetadata().isFormAssociated()&&e(this);}}});}if(e$1){const n=this.getMetadata().getSlots();for(const[o,a]of Object.entries(n)){r(o)||console.warn(`"${o}" is not a valid property name. Use a name that does not collide with DOM APIs`);const r$1=a.propertyName||o,i={get(){return this._state[r$1]!==void 0?this._state[r$1]:[]},set(){throw new Error("Cannot set slot content directly, use the DOM APIs (appendChild, removeChild, etc...)")}};Object.defineProperty(t,r$1,i),r$1!==c$4(r$1)&&Object.defineProperty(t,c$4(r$1),i);}}}static{this.metadata={};}static{this.styles="";}static get dependencies(){return []}static cacheUniqueDependencies(){const t=this.dependencies.filter((e,s,n)=>n.indexOf(e)===s);I.set(this,t);}static getUniqueDependencies(){return I.has(this)||this.cacheUniqueDependencies(),I.get(this)||[]}static async onDefine(){return Promise.resolve()}static fetchI18nBundles(){return Promise.all(Object.entries(this.getMetadata().getI18n()).map(t=>{const{bundleName:e}=t[1];return Icons.f$2(e)}))}static fetchCLDR(){return this.getMetadata().needsCLDR()?u(Icons.s$1().getLanguage(),Icons.s$1().getRegion(),Icons.s$1().getScript()):Promise.resolve()}static{this.i18nBundleStorage={};}static get i18nBundles(){return this.i18nBundleStorage}static define(){const t=async()=>{await Icons.b$1();const o=await Promise.all([this.fetchI18nBundles(),this.fetchCLDR(),this.onDefine()]),[a]=o;Object.entries(this.getMetadata().getI18n()).forEach((r,i)=>{const h=r[1].bundleName;this.i18nBundleStorage[h]=a[i];}),this.asyncFinished=true;};this.definePromise=t();const e=this.getMetadata().getTag(),s=Icons.w$1(e),n=customElements.get(e);return n&&!s?Icons.$(e):n||(this._generateAccessors(),Icons.h$2(e),customElements.define(e,this)),this}static getMetadata(){if(this.hasOwnProperty("_metadata"))return this._metadata;const t=[this.metadata];let e=this;for(;e!==b;)e=Object.getPrototypeOf(e),t.unshift(e.metadata);const s=Icons.e({},...t);return this._metadata=new p$1(s),this._metadata}get validity(){return this._internals.validity}get validationMessage(){return this._internals.validationMessage}checkValidity(){return this._internals.checkValidity()}reportValidity(){return this._internals.reportValidity()}};const v$1=c=>"isUI5Element"in c;
|
|
105
|
-
|
|
106
|
-
let f$1 = class f{constructor(e,t){if(!e.isUI5Element)throw new Error("The root web component must be a UI5 Element instance");if(this.rootWebComponent=e,this.rootWebComponent.addEventListener("keydown",this._onkeydown.bind(this)),this._initBound=this._init.bind(this),this.rootWebComponent.attachComponentStateFinalized(this._initBound),typeof t.getItemsCallback!="function")throw new Error("getItemsCallback is required");this._getItems=t.getItemsCallback,this._currentIndex=t.currentIndex||0,this._rowSize=t.rowSize||1,this._behavior=t.behavior||l$5.Static,this._navigationMode=t.navigationMode||r$4.Auto,this._affectedPropertiesNames=t.affectedPropertiesNames||[],this._skipItemsSize=t.skipItemsSize||null;}setCurrentItem(e){const t=this._getItems().indexOf(e);if(t===-1){console.warn("The provided item is not managed by ItemNavigation",e);return}this._currentIndex=t,this._applyTabIndex();}setRowSize(e){this._rowSize=e;}_init(){this._getItems().forEach((e,t)=>{e.forcedTabIndex=t===this._currentIndex?"0":"-1";});}_onkeydown(e){if(!this._canNavigate())return;const t=this._navigationMode===r$4.Horizontal||this._navigationMode===r$4.Auto,i=this._navigationMode===r$4.Vertical||this._navigationMode===r$4.Auto,s=this.rootWebComponent.effectiveDir==="rtl";if(s&&D$1(e)&&t)this._handleRight();else if(s&&R$2(e)&&t)this._handleLeft();else if(D$1(e)&&t)this._handleLeft();else if(R$2(e)&&t)this._handleRight();else if(P(e)&&i)this._handleUp();else if(_$1(e)&&i)this._handleDown();else if(M(e))this._handleHome();else if(n$9(e))this._handleEnd();else if(j(e))this._handlePageUp();else if(q(e))this._handlePageDown();else return;e.preventDefault(),this._applyTabIndex(),this._focusCurrentItem();}_handleUp(){const e=this._getItems().length;if(this._currentIndex-this._rowSize>=0){this._currentIndex-=this._rowSize;return}if(this._behavior===l$5.Cyclic){const t=this._currentIndex%this._rowSize,i=t===0?this._rowSize-1:t-1,s=Math.ceil(e/this._rowSize);let o=i+(s-1)*this._rowSize;o>e-1&&(o-=this._rowSize),this._currentIndex=o;}else this._currentIndex=0;}_handleDown(){const e=this._getItems().length;if(this._currentIndex+this._rowSize<e){this._currentIndex+=this._rowSize;return}if(this._behavior===l$5.Cyclic){const i=(this._currentIndex%this._rowSize+1)%this._rowSize;this._currentIndex=i;}else this._currentIndex=e-1;}_handleLeft(){const e=this._getItems().length;if(this._currentIndex>0){this._currentIndex-=1;return}this._behavior===l$5.Cyclic&&(this._currentIndex=e-1);}_handleRight(){const e=this._getItems().length;if(this._currentIndex<e-1){this._currentIndex+=1;return}this._behavior===l$5.Cyclic&&(this._currentIndex=0);}_handleHome(){const e=this._rowSize>1?this._rowSize:this._getItems().length;this._currentIndex-=this._currentIndex%e;}_handleEnd(){const e=this._rowSize>1?this._rowSize:this._getItems().length;this._currentIndex+=e-1-this._currentIndex%e;}_handlePageUp(){this._rowSize>1||this._handlePageUpFlat();}_handlePageDown(){this._rowSize>1||this._handlePageDownFlat();}_handlePageUpFlat(){if(this._skipItemsSize===null){this._currentIndex-=this._currentIndex;return}this._currentIndex+1>this._skipItemsSize?this._currentIndex-=this._skipItemsSize:this._currentIndex-=this._currentIndex;}_handlePageDownFlat(){if(this._skipItemsSize===null){this._currentIndex=this._getItems().length-1;return}this._getItems().length-this._currentIndex-1>this._skipItemsSize?this._currentIndex+=this._skipItemsSize:this._currentIndex=this._getItems().length-1;}_applyTabIndex(){const e=this._getItems();for(let t=0;t<e.length;t++)e[t].forcedTabIndex=t===this._currentIndex?"0":"-1";this._affectedPropertiesNames.forEach(t=>{const i=this.rootWebComponent[t];this.rootWebComponent[t]=Array.isArray(i)?[...i]:{...i};});}_focusCurrentItem(){const e=this._getCurrentItem();e&&e.focus();}_canNavigate(){const e=this._getCurrentItem(),t=t$3();return e&&e===t}_getCurrentItem(){const e=this._getItems();if(!e.length)return;for(;this._currentIndex>=e.length;)this._currentIndex-=this._rowSize;this._currentIndex<0&&(this._currentIndex=0);const t=e[this._currentIndex];if(!t)return;if(v$1(t))return t.getFocusDomRef();const i=this.rootWebComponent.getDomRef();if(i&&t.id)return i.querySelector(`[id="${t.id}"]`)}};
|
|
107
|
-
|
|
108
|
-
let n$1;const l$1=new Map,a$2=()=>(n$1||(n$1=new window.ResizeObserver(r=>{window.requestAnimationFrame(()=>{r.forEach(t=>{const s=l$1.get(t.target);s&&Promise.all(s.map(e=>e()));});});})),n$1),c$2=(r,t)=>{const s=l$1.get(r)||[];s.length||a$2().observe(r),l$1.set(r,[...s,t]);},b=(r,t)=>{const s=l$1.get(r)||[];if(s.length===0)return;const e=s.filter(o=>o!==t);e.length===0?(a$2().unobserve(r),l$1.delete(r)):l$1.set(r,e);};class f{static register(t,s){let e=t;v$1(e)&&(e=e.getDomRef()),e instanceof HTMLElement?c$2(e,s):console.warn("Cannot register ResizeHandler for element",t);}static deregister(t,s){let e=t;v$1(e)&&(e=e.getDomRef()),e instanceof HTMLElement?b(e,s):console.warn("Cannot deregister ResizeHandler for element",t);}}
|
|
109
|
-
|
|
110
|
-
const l="scroll",p=Icons.l$2()?"touchend":"mouseup";class v extends Icons.i$2{constructor(t){super();this.supportsTouch=Icons.l$2();this.containerComponent=t,this.mouseMove=this.ontouchmove.bind(this),this.mouseUp=this.ontouchend.bind(this),this.touchStart=this.ontouchstart.bind(this),this.supportsTouch=Icons.l$2(),this.cachedValue={dragX:0,dragY:0},this.startX=0,this.startY=0,this.supportsTouch?(t.addEventListener("touchstart",this.touchStart,{passive:true}),t.addEventListener("touchmove",this.mouseMove,{passive:true}),t.addEventListener("touchend",this.mouseUp,{passive:true})):t.addEventListener("mousedown",this.touchStart,{passive:true});}set scrollContainer(t){this._container=t;}get scrollContainer(){return this._container}async scrollTo(t,e,s=0,o=0){let r=this.scrollContainer.clientHeight>0&&this.scrollContainer.clientWidth>0;for(;!r&&s>0;)await new Promise(n=>{setTimeout(()=>{r=this.scrollContainer.clientHeight>0&&this.scrollContainer.clientWidth>0,s--,n();},o);});this._container.scrollLeft=t,this._container.scrollTop=e;}move(t,e,s){if(s){this._container.scrollLeft+=t,this._container.scrollTop+=e;return}if(this._container)return n$d(this._container,t,e)}getScrollLeft(){return this._container.scrollLeft}getScrollTop(){return this._container.scrollTop}_isTouchInside(t){let e=null;this.supportsTouch&&t instanceof TouchEvent&&(e=t.touches[0]);const s=this._container.getBoundingClientRect(),o=this.supportsTouch?e.clientX:t.x,r=this.supportsTouch?e.clientY:t.y;return o>=s.left&&o<=s.right&&r>=s.top&&r<=s.bottom}ontouchstart(t){let e=null;this.supportsTouch&&t instanceof TouchEvent&&(e=t.touches[0]),e?(this.startX=e.pageX,this.startY=e.pageY):(document.addEventListener("mouseup",this.mouseUp,{passive:true}),document.addEventListener("mousemove",this.mouseMove,{passive:true})),e&&(this._prevDragX=e.pageX,this._prevDragY=e.pageY),t instanceof MouseEvent&&(this._prevDragX=t.x,this._prevDragY=t.y),this._canScroll=this._isTouchInside(t);}ontouchmove(t){if(!this._canScroll)return;const e=this._container,s=this.supportsTouch?t.touches[0]:null,o=this.supportsTouch?s.pageX:t.x,r=this.supportsTouch?s.pageY:t.y;e.scrollLeft+=this._prevDragX-o,e.scrollTop+=this._prevDragY-r,this.fireEvent(l,{isLeft:o>this._prevDragX,isRight:o<this._prevDragX}),this.cachedValue.dragX=this._prevDragX,this.cachedValue.dragY=this._prevDragY,this._prevDragX=o,this._prevDragY=r;}ontouchend(t){if(this.supportsTouch){const h=Math.abs(t.changedTouches[0].pageX-this.startX),c=Math.abs(t.changedTouches[0].pageY-this.startY);if(h<10&&c<10)return}if(!this._canScroll)return;const e=this._container,s=this.supportsTouch?t.changedTouches[0].pageX:t.x,o=this.supportsTouch?t.changedTouches[0].pageY:t.y;e.scrollLeft+=this._prevDragX-s,e.scrollTop+=this._prevDragY-o;const n=s===this._prevDragX?this.cachedValue.dragX:s;this.fireEvent(p,{isLeft:n<this._prevDragX,isRight:n>this._prevDragX}),this._prevDragX=s,this._prevDragY=o,this.supportsTouch||(document.removeEventListener("mousemove",this.mouseMove),document.removeEventListener("mouseup",this.mouseUp));}}
|
|
111
|
-
|
|
112
|
-
const n=new Icons.i$2,t$1="directionChange",a$1=e=>{n.attachEvent(t$1,e);},c$1=e=>{n.detachEvent(t$1,e);},o$1=()=>n.fireEvent(t$1,void 0);
|
|
113
|
-
|
|
114
|
-
const i$1=async()=>{const e=o$1();await Promise.all(e),await Icons.C$2({rtlAware:true});};
|
|
115
|
-
|
|
116
|
-
// TODO-evo:assert on node throws an error if the assertion is violated
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* A simple assertion mechanism that logs a message when a given condition is not met.
|
|
120
|
-
*
|
|
121
|
-
* <b>Note:</b> Calls to this method might be removed when the JavaScript code
|
|
122
|
-
* is optimized during build. Therefore, callers should not rely on any side effects
|
|
123
|
-
* of this method.
|
|
124
|
-
*
|
|
125
|
-
* @function
|
|
126
|
-
* @since 1.58
|
|
127
|
-
* @alias module:sap/base/assert
|
|
128
|
-
* @param {boolean} bResult Result of the checked assertion
|
|
129
|
-
* @param {string|function():any} vMessage Message that will be logged when the result is <code>false</code>.
|
|
130
|
-
* In case this is a function, the return value of the function will be displayed. This can be used to execute
|
|
131
|
-
* complex code only if the assertion fails.
|
|
132
|
-
* @public
|
|
133
|
-
* @SecSink {1|SECRET} Could expose secret data in logs
|
|
134
|
-
*
|
|
135
|
-
*/ /*!
|
|
136
|
-
* OpenUI5
|
|
137
|
-
* (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
|
|
138
|
-
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
139
|
-
*/
|
|
140
|
-
|
|
141
|
-
var fnAssert = function (bResult, vMessage) {
|
|
142
|
-
if (!bResult) {
|
|
143
|
-
var sMessage = vMessage;
|
|
144
|
-
/*eslint-disable no-console */
|
|
145
|
-
console.assert(bResult, sMessage);
|
|
146
|
-
/*eslint-enable no-console */
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
// validation regexes
|
|
151
|
-
/*!
|
|
152
|
-
* OpenUI5
|
|
153
|
-
* (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
|
|
154
|
-
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
155
|
-
*/
|
|
156
|
-
|
|
157
|
-
var rBasicUrl = /^(?:([^:\/?#]+):)?((?:[\/\\]{2,}((?:\[[^\]]+\]|[^\/?#:]+))(?::([0-9]+))?)?([^?#]*))(?:\?([^#]*))?(?:#(.*))?$/;
|
|
158
|
-
var rCheckPath = /^([a-z0-9-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*$/i;
|
|
159
|
-
var rCheckQuery = /^([a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*$/i;
|
|
160
|
-
var rCheckFragment = rCheckQuery;
|
|
161
|
-
var rCheckMail = /^([a-z0-9!$'*+:^_`{|}~-]|%[0-9a-f]{2})+(?:\.([a-z0-9!$'*+:^_`{|}~-]|%[0-9a-f]{2})+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;
|
|
162
|
-
var rCheckIPv4 = /^([0-9]{1,3}\.){3}[0-9]{1,3}$/;
|
|
163
|
-
var rCheckValidIPv4 = /^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$/;
|
|
164
|
-
var rCheckIPv6 = /^\[[^\]]+\]$/;
|
|
165
|
-
var rCheckValidIPv6 = /^\[(((([0-9a-f]{1,4}:){6}|(::([0-9a-f]{1,4}:){5})|(([0-9a-f]{1,4})?::([0-9a-f]{1,4}:){4})|((([0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::([0-9a-f]{1,4}:){3})|((([0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::([0-9a-f]{1,4}:){2})|((([0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:)|((([0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::))(([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))|((([0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4})|((([0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::))\]$/i;
|
|
166
|
-
var rCheckHostName = /^([a-z0-9]([a-z0-9\-]*[a-z0-9])?\.)*[a-z0-9]([a-z0-9\-]*[a-z0-9])?$/i;
|
|
167
|
-
var rSpecialSchemeURLs = /^((?:ftp|https?|wss?):)([\s\S]+)$/;
|
|
168
|
-
|
|
169
|
-
/* eslint-disable no-control-regex */
|
|
170
|
-
var rCheckWhitespaces = /[\u0009\u000A\u000D]/;
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Registry to manage allowed URLs and validate against them.
|
|
174
|
-
*
|
|
175
|
-
* @namespace
|
|
176
|
-
* @since 1.85
|
|
177
|
-
* @alias module:sap/base/security/URLListValidator
|
|
178
|
-
* @public
|
|
179
|
-
*/
|
|
180
|
-
var oURLListValidator = {};
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* Creates a new URLListValidator.Entry object
|
|
184
|
-
*
|
|
185
|
-
* @param {string} [protocol] The protocol of the URL, can be falsy to allow all protocols for an entry e.g. "", "http", "mailto"
|
|
186
|
-
* @param {string} [host] The host of the URL, can be falsy to allow all hosts. A wildcard asterisk can be set at the beginning, e.g. "examples.com", "*.example.com"
|
|
187
|
-
* @param {string} [port] The port of the URL, can be falsy to allow all ports, e.g. "", "8080"
|
|
188
|
-
* @param {string} [path] the path of the URL, path of the url, can be falsy to allow all paths. A wildcard asterisk can be set at the end, e.g. "/my-example*", "/my-news"
|
|
189
|
-
* @returns {module:sap/base/security/URLListValidator.Entry|object}
|
|
190
|
-
* @private
|
|
191
|
-
*/
|
|
192
|
-
oURLListValidator._createEntry = function (protocol, host, port, path) {
|
|
193
|
-
return new URLListValidatorEntry(protocol, host, port, path);
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Entry object of the URLListValidator.
|
|
198
|
-
*
|
|
199
|
-
* @public
|
|
200
|
-
* @typedef {object} module:sap/base/security/URLListValidator.Entry
|
|
201
|
-
* @property {string} [protocol] The protocol of the URL, can be falsy to allow all protocols for an entry e.g. "", "http", "mailto"
|
|
202
|
-
* @property {string} [host] The host of the URL, can be falsy to allow all hosts. A wildcard asterisk can be set at the beginning, e.g. "examples.com", "*.example.com"
|
|
203
|
-
* @property {string} [port] The port of the URL, can be falsy to allow all ports, e.g. "", "8080"
|
|
204
|
-
* @property {string} [path] the path of the URL, path of the url, can be falsy to allow all paths. A wildcard asterisk can be set at the end, e.g. "/my-example*", "/my-news"
|
|
205
|
-
*/
|
|
206
|
-
function URLListValidatorEntry(protocol, host, port, path) {
|
|
207
|
-
Object.defineProperties(this, {
|
|
208
|
-
protocol: {
|
|
209
|
-
value: protocol && protocol.toUpperCase(),
|
|
210
|
-
enumerable: true
|
|
211
|
-
},
|
|
212
|
-
host: {
|
|
213
|
-
value: host && host.toUpperCase(),
|
|
214
|
-
enumerable: true
|
|
215
|
-
},
|
|
216
|
-
port: {
|
|
217
|
-
value: port,
|
|
218
|
-
enumerable: true
|
|
219
|
-
},
|
|
220
|
-
path: {
|
|
221
|
-
value: path,
|
|
222
|
-
enumerable: true
|
|
223
|
-
}
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* The internally managed allowed entries.
|
|
229
|
-
* @private
|
|
230
|
-
*/
|
|
231
|
-
var aAllowedEntries = [];
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* Clears the allowed entries for URL validation.
|
|
235
|
-
* This makes all URLs allowed.
|
|
236
|
-
*
|
|
237
|
-
* @public
|
|
238
|
-
*/
|
|
239
|
-
oURLListValidator.clear = function () {
|
|
240
|
-
aAllowedEntries = [];
|
|
241
|
-
};
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* Adds an allowed entry.
|
|
245
|
-
*
|
|
246
|
-
* Note:
|
|
247
|
-
* Adding the first entry to the list of allowed entries will disallow all URLs but the ones matching the newly added entry.
|
|
248
|
-
*
|
|
249
|
-
* <b>Note</b>:
|
|
250
|
-
* It is strongly recommended to set a path only in combination with an origin (never set a path alone).
|
|
251
|
-
* There's almost no case where checking only the path of a URL would allow to ensure its validity.
|
|
252
|
-
*
|
|
253
|
-
* @param {string} [protocol] The protocol of the URL, can be falsy to allow all protocols for an entry e.g. "", "http", "mailto"
|
|
254
|
-
* @param {string} [host] The host of the URL, can be falsy to allow all hosts. A wildcard asterisk can be set at the beginning, e.g. "examples.com", "*.example.com"
|
|
255
|
-
* @param {string} [port] The port of the URL, can be falsy to allow all ports, e.g. "", "8080"
|
|
256
|
-
* @param {string} [path] the path of the URL, path of the url, can be falsy to allow all paths. A wildcard asterisk can be set at the end, e.g. "/my-example*", "/my-news"
|
|
257
|
-
* @public
|
|
258
|
-
*/
|
|
259
|
-
oURLListValidator.add = function (protocol, host, port, path) {
|
|
260
|
-
var oEntry = this._createEntry(protocol, host, port, path);
|
|
261
|
-
aAllowedEntries.push(oEntry);
|
|
262
|
-
};
|
|
263
|
-
|
|
264
|
-
/**
|
|
265
|
-
* Deletes an entry from the allowed entries.
|
|
266
|
-
*
|
|
267
|
-
* Note:
|
|
268
|
-
* Deleting the last entry from the list of allowed entries will allow all URLs.
|
|
269
|
-
*
|
|
270
|
-
* @param {module:sap/base/security/URLListValidator.Entry} oEntry The entry to be deleted
|
|
271
|
-
* @private
|
|
272
|
-
*/
|
|
273
|
-
oURLListValidator._delete = function (oEntry) {
|
|
274
|
-
aAllowedEntries.splice(aAllowedEntries.indexOf(oEntry), 1);
|
|
275
|
-
};
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* Gets the list of allowed entries.
|
|
279
|
-
*
|
|
280
|
-
* @returns {module:sap/base/security/URLListValidator.Entry[]} The allowed entries
|
|
281
|
-
* @public
|
|
282
|
-
*/
|
|
283
|
-
oURLListValidator.entries = function () {
|
|
284
|
-
return aAllowedEntries.slice();
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* Validates a URL. Check if it's not a script or other security issue.
|
|
289
|
-
*
|
|
290
|
-
* <b>Note</b>:
|
|
291
|
-
* It is strongly recommended to validate only absolute URLs. There's almost no case
|
|
292
|
-
* where checking only the path of a URL would allow to ensure its validity.
|
|
293
|
-
* For compatibility reasons, this API cannot automatically resolve URLs relative to
|
|
294
|
-
* <code>document.baseURI</code>, but callers should do so. In that case, and when the
|
|
295
|
-
* allow list is not empty, an entry for the origin of <code>document.baseURI</code>
|
|
296
|
-
* must be added to the allow list.
|
|
297
|
-
*
|
|
298
|
-
* <h3>Details</h3>
|
|
299
|
-
* Splits the given URL into components and checks for allowed characters according to RFC 3986:
|
|
300
|
-
*
|
|
301
|
-
* <pre>
|
|
302
|
-
* authority = [ userinfo "@" ] host [ ":" port ]
|
|
303
|
-
* userinfo = *( unreserved / pct-encoded / sub-delims / ":" )
|
|
304
|
-
* host = IP-literal / IPv4address / reg-name
|
|
305
|
-
*
|
|
306
|
-
* IP-literal = "[" ( IPv6address / IPvFuture ) "]"
|
|
307
|
-
* IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )
|
|
308
|
-
* IPv6address = 6( h16 ":" ) ls32
|
|
309
|
-
* / "::" 5( h16 ":" ) ls32
|
|
310
|
-
* / [ h16 ] "::" 4( h16 ":" ) ls32
|
|
311
|
-
* / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32
|
|
312
|
-
* / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32
|
|
313
|
-
* / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32
|
|
314
|
-
* / [ *4( h16 ":" ) h16 ] "::" ls32
|
|
315
|
-
* / [ *5( h16 ":" ) h16 ] "::" h16
|
|
316
|
-
* / [ *6( h16 ":" ) h16 ] "::"
|
|
317
|
-
* ls32 = ( h16 ":" h16 ) / IPv4address
|
|
318
|
-
* ; least-significant 32 bits of address
|
|
319
|
-
* h16 = 1*4HEXDIG
|
|
320
|
-
* ; 16 bits of address represented in hexadecimal
|
|
321
|
-
*
|
|
322
|
-
* IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet
|
|
323
|
-
* dec-octet = DIGIT ; 0-9
|
|
324
|
-
* / %x31-39 DIGIT ; 10-99
|
|
325
|
-
* / "1" 2DIGIT ; 100-199
|
|
326
|
-
* / "2" %x30-34 DIGIT ; 200-249
|
|
327
|
-
* / "25" %x30-35 ; 250-255
|
|
328
|
-
*
|
|
329
|
-
* reg-name = *( unreserved / pct-encoded / sub-delims )
|
|
330
|
-
*
|
|
331
|
-
* pct-encoded = "%" HEXDIG HEXDIG
|
|
332
|
-
* reserved = gen-delims / sub-delims
|
|
333
|
-
* gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
|
|
334
|
-
* sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
|
|
335
|
-
* / "*" / "+" / "," / ";" / "="
|
|
336
|
-
* unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
|
|
337
|
-
* pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
|
|
338
|
-
*
|
|
339
|
-
* path = path-abempty ; begins with "/" or is empty
|
|
340
|
-
* / path-absolute ; begins with "/" but not "//"
|
|
341
|
-
* / path-noscheme ; begins with a non-colon segment
|
|
342
|
-
* / path-rootless ; begins with a segment
|
|
343
|
-
* / path-empty ; zero characters
|
|
344
|
-
*
|
|
345
|
-
* path-abempty = *( "/" segment )
|
|
346
|
-
* path-absolute = "/" [ segment-nz *( "/" segment ) ]
|
|
347
|
-
* path-noscheme = segment-nz-nc *( "/" segment )
|
|
348
|
-
* path-rootless = segment-nz *( "/" segment )
|
|
349
|
-
* path-empty = 0<pchar>
|
|
350
|
-
* segment = *pchar
|
|
351
|
-
* segment-nz = 1*pchar
|
|
352
|
-
* segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
|
|
353
|
-
* ; non-zero-length segment without any colon ":"
|
|
354
|
-
*
|
|
355
|
-
* query = *( pchar / "/" / "?" )
|
|
356
|
-
*
|
|
357
|
-
* fragment = *( pchar / "/" / "?" )
|
|
358
|
-
* </pre>
|
|
359
|
-
*
|
|
360
|
-
* For the hostname component, we are checking for valid DNS hostnames according to RFC 952 / RFC 1123:
|
|
361
|
-
*
|
|
362
|
-
* <pre>
|
|
363
|
-
* hname = name *("." name)
|
|
364
|
-
* name = let-or-digit ( *( let-or-digit-or-hyphen ) let-or-digit )
|
|
365
|
-
* </pre>
|
|
366
|
-
*
|
|
367
|
-
*
|
|
368
|
-
* When the URI uses the protocol 'mailto:', the address part is additionally checked
|
|
369
|
-
* against the most commonly used parts of RFC 6068:
|
|
370
|
-
*
|
|
371
|
-
* <pre>
|
|
372
|
-
* mailtoURI = "mailto:" [ to ] [ hfields ]
|
|
373
|
-
* to = addr-spec *("," addr-spec )
|
|
374
|
-
* hfields = "?" hfield *( "&" hfield )
|
|
375
|
-
* hfield = hfname "=" hfvalue
|
|
376
|
-
* hfname = *qchar
|
|
377
|
-
* hfvalue = *qchar
|
|
378
|
-
* addr-spec = local-part "@" domain
|
|
379
|
-
* local-part = dot-atom-text // not accepted: quoted-string
|
|
380
|
-
* domain = dot-atom-text // not accepted: "[" *dtext-no-obs "]"
|
|
381
|
-
* dtext-no-obs = %d33-90 / ; Printable US-ASCII
|
|
382
|
-
* %d94-126 ; characters not including
|
|
383
|
-
* ; "[", "]", or "\"
|
|
384
|
-
* qchar = unreserved / pct-encoded / some-delims
|
|
385
|
-
* some-delims = "!" / "$" / "'" / "(" / ")" / "*"
|
|
386
|
-
* / "+" / "," / ";" / ":" / "@"
|
|
387
|
-
*
|
|
388
|
-
* Note:
|
|
389
|
-
* A number of characters that can appear in <addr-spec> MUST be
|
|
390
|
-
* percent-encoded. These are the characters that cannot appear in
|
|
391
|
-
* a URI according to [STD66] as well as "%" (because it is used for
|
|
392
|
-
* percent-encoding) and all the characters in gen-delims except "@"
|
|
393
|
-
* and ":" (i.e., "/", "?", "#", "[", and "]"). Of the characters
|
|
394
|
-
* in sub-delims, at least the following also have to be percent-
|
|
395
|
-
* encoded: "&", ";", and "=". Care has to be taken both when
|
|
396
|
-
* encoding as well as when decoding to make sure these operations
|
|
397
|
-
* are applied only once.
|
|
398
|
-
*
|
|
399
|
-
* </pre>
|
|
400
|
-
*
|
|
401
|
-
* When a list of allowed entries has been configured using {@link #add},
|
|
402
|
-
* any URL that passes the syntactic checks above, additionally will be tested against
|
|
403
|
-
* the content of this list.
|
|
404
|
-
*
|
|
405
|
-
* @param {string} sUrl URL to be validated
|
|
406
|
-
* @return {boolean} true if valid, false if not valid
|
|
407
|
-
* @public
|
|
408
|
-
*/
|
|
409
|
-
oURLListValidator.validate = function (sUrl) {
|
|
410
|
-
// Test for not allowed whitespaces
|
|
411
|
-
if (typeof sUrl === "string") {
|
|
412
|
-
if (rCheckWhitespaces.test(sUrl)) {
|
|
413
|
-
return false;
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
// for 'special' URLs without a given base URL, the whatwg spec allows any number of slashes.
|
|
418
|
-
// As the rBasicUrl regular expression cannot handle 'special' URLs, the URL is modified upfront,
|
|
419
|
-
// if it wouldn't be recognized by the regex.
|
|
420
|
-
// See https://url.spec.whatwg.org/#scheme-state (case 2.6.)
|
|
421
|
-
var result = rSpecialSchemeURLs.exec(sUrl);
|
|
422
|
-
if (result && !/^[\/\\]{2}/.test(result[2])) {
|
|
423
|
-
sUrl = result[1] + "//" + result[2];
|
|
424
|
-
}
|
|
425
|
-
result = rBasicUrl.exec(sUrl);
|
|
426
|
-
if (!result) {
|
|
427
|
-
return false;
|
|
428
|
-
}
|
|
429
|
-
var sProtocol = result[1],
|
|
430
|
-
sBody = result[2],
|
|
431
|
-
sHost = result[3],
|
|
432
|
-
sPort = result[4],
|
|
433
|
-
sPath = result[5],
|
|
434
|
-
sQuery = result[6],
|
|
435
|
-
sHash = result[7];
|
|
436
|
-
|
|
437
|
-
// protocol
|
|
438
|
-
if (sProtocol) {
|
|
439
|
-
sProtocol = sProtocol.toUpperCase();
|
|
440
|
-
if (aAllowedEntries.length <= 0) {
|
|
441
|
-
// no allowed entries -> check for default protocols
|
|
442
|
-
if (!/^(https?|ftp)/i.test(sProtocol)) {
|
|
443
|
-
return false;
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
// Host -> validity check for IP address or hostname
|
|
449
|
-
if (sHost) {
|
|
450
|
-
if (rCheckIPv4.test(sHost)) {
|
|
451
|
-
if (!rCheckValidIPv4.test(sHost)) {
|
|
452
|
-
//invalid ipv4 address
|
|
453
|
-
return false;
|
|
454
|
-
}
|
|
455
|
-
} else if (rCheckIPv6.test(sHost)) {
|
|
456
|
-
if (!rCheckValidIPv6.test(sHost)) {
|
|
457
|
-
//invalid ipv6 address
|
|
458
|
-
return false;
|
|
459
|
-
}
|
|
460
|
-
} else if (!rCheckHostName.test(sHost)) {
|
|
461
|
-
// invalid host name
|
|
462
|
-
return false;
|
|
463
|
-
}
|
|
464
|
-
sHost = sHost.toUpperCase();
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
// Path -> split for "/" and check if forbidden characters exist
|
|
468
|
-
if (sPath) {
|
|
469
|
-
if (sProtocol === "MAILTO") {
|
|
470
|
-
var aAddresses = sBody.split(",");
|
|
471
|
-
for (var i = 0; i < aAddresses.length; i++) {
|
|
472
|
-
if (!rCheckMail.test(aAddresses[i])) {
|
|
473
|
-
// forbidden character found
|
|
474
|
-
return false;
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
} else {
|
|
478
|
-
var aComponents = sPath.split("/");
|
|
479
|
-
for (var i = 0; i < aComponents.length; i++) {
|
|
480
|
-
if (!rCheckPath.test(aComponents[i])) {
|
|
481
|
-
// forbidden character found
|
|
482
|
-
return false;
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
// query
|
|
489
|
-
if (sQuery) {
|
|
490
|
-
if (!rCheckQuery.test(sQuery)) {
|
|
491
|
-
// forbidden character found
|
|
492
|
-
return false;
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
// hash
|
|
497
|
-
if (sHash) {
|
|
498
|
-
if (!rCheckFragment.test(sHash)) {
|
|
499
|
-
// forbidden character found
|
|
500
|
-
return false;
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
//filter allowed entries
|
|
505
|
-
if (aAllowedEntries.length > 0) {
|
|
506
|
-
var bFound = false;
|
|
507
|
-
for (var i = 0; i < aAllowedEntries.length; i++) {
|
|
508
|
-
if (!sProtocol || !aAllowedEntries[i].protocol || sProtocol == aAllowedEntries[i].protocol) {
|
|
509
|
-
// protocol OK
|
|
510
|
-
var bOk = false;
|
|
511
|
-
if (sHost && aAllowedEntries[i].host && /^\*/.test(aAllowedEntries[i].host)) {
|
|
512
|
-
// check for wildcard search at begin
|
|
513
|
-
if (!aAllowedEntries[i]._hostRegexp) {
|
|
514
|
-
var sHostEscaped = aAllowedEntries[i].host.slice(1).replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
|
515
|
-
aAllowedEntries[i]._hostRegexp = RegExp(sHostEscaped + "$");
|
|
516
|
-
}
|
|
517
|
-
var rFilter = aAllowedEntries[i]._hostRegexp;
|
|
518
|
-
if (rFilter.test(sHost)) {
|
|
519
|
-
bOk = true;
|
|
520
|
-
}
|
|
521
|
-
} else if (!sHost || !aAllowedEntries[i].host || sHost == aAllowedEntries[i].host) {
|
|
522
|
-
bOk = true;
|
|
523
|
-
}
|
|
524
|
-
if (bOk) {
|
|
525
|
-
// host OK
|
|
526
|
-
if (!sHost && !sPort || !aAllowedEntries[i].port || sPort == aAllowedEntries[i].port) {
|
|
527
|
-
// port OK
|
|
528
|
-
if (aAllowedEntries[i].path && /\*$/.test(aAllowedEntries[i].path)) {
|
|
529
|
-
// check for wildcard search at end
|
|
530
|
-
if (!aAllowedEntries[i]._pathRegexp) {
|
|
531
|
-
var sPathEscaped = aAllowedEntries[i].path.slice(0, -1).replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
|
532
|
-
aAllowedEntries[i]._pathRegexp = RegExp("^" + sPathEscaped);
|
|
533
|
-
}
|
|
534
|
-
var rFilter = aAllowedEntries[i]._pathRegexp;
|
|
535
|
-
if (rFilter.test(sPath)) {
|
|
536
|
-
bFound = true;
|
|
537
|
-
}
|
|
538
|
-
} else if (!aAllowedEntries[i].path || sPath == aAllowedEntries[i].path) {
|
|
539
|
-
// path OK
|
|
540
|
-
bFound = true;
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
if (bFound) {
|
|
546
|
-
break;
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
if (!bFound) {
|
|
550
|
-
return false;
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
return true;
|
|
554
|
-
};
|
|
555
|
-
|
|
556
|
-
var cajaHtmlSanitizer = {};
|
|
557
|
-
|
|
558
|
-
var hasRequiredCajaHtmlSanitizer;
|
|
559
|
-
|
|
560
|
-
function requireCajaHtmlSanitizer () {
|
|
561
|
-
if (hasRequiredCajaHtmlSanitizer) return cajaHtmlSanitizer;
|
|
562
|
-
hasRequiredCajaHtmlSanitizer = 1;
|
|
563
|
-
(function() {
|
|
564
|
-
/* Copyright Google Inc.
|
|
565
|
-
* Licensed under the Apache Licence Version 2.0
|
|
566
|
-
* Autogenerated at Tue May 22 10:18:21 PDT 2012
|
|
567
|
-
* \@overrides window
|
|
568
|
-
* \@provides cssSchema, CSS_PROP_BIT_QUANTITY, CSS_PROP_BIT_HASH_VALUE, CSS_PROP_BIT_NEGATIVE_QUANTITY, CSS_PROP_BIT_QSTRING_CONTENT, CSS_PROP_BIT_QSTRING_URL, CSS_PROP_BIT_HISTORY_INSENSITIVE, CSS_PROP_BIT_Z_INDEX, CSS_PROP_BIT_ALLOWED_IN_LINK */
|
|
569
|
-
/**
|
|
570
|
-
* @const
|
|
571
|
-
* @type {number}
|
|
572
|
-
*/
|
|
573
|
-
var CSS_PROP_BIT_QUANTITY = 1;
|
|
574
|
-
/**
|
|
575
|
-
* @const
|
|
576
|
-
* @type {number}
|
|
577
|
-
*/
|
|
578
|
-
var CSS_PROP_BIT_HASH_VALUE = 2;
|
|
579
|
-
/**
|
|
580
|
-
* @const
|
|
581
|
-
* @type {number}
|
|
582
|
-
*/
|
|
583
|
-
var CSS_PROP_BIT_NEGATIVE_QUANTITY = 4;
|
|
584
|
-
/**
|
|
585
|
-
* @const
|
|
586
|
-
* @type {number}
|
|
587
|
-
*/
|
|
588
|
-
var CSS_PROP_BIT_QSTRING_CONTENT = 8;
|
|
589
|
-
/**
|
|
590
|
-
* @const
|
|
591
|
-
* @type {number}
|
|
592
|
-
*/
|
|
593
|
-
var CSS_PROP_BIT_QSTRING_URL = 16;
|
|
594
|
-
/**
|
|
595
|
-
* @const
|
|
596
|
-
* @type {number}
|
|
597
|
-
*/
|
|
598
|
-
var CSS_PROP_BIT_Z_INDEX = 64;
|
|
599
|
-
/**
|
|
600
|
-
* @const
|
|
601
|
-
* @type {number}
|
|
602
|
-
*/
|
|
603
|
-
var CSS_PROP_BIT_ALLOWED_IN_LINK = 128;
|
|
604
|
-
var cssSchema = (function () {
|
|
605
|
-
var s = [
|
|
606
|
-
'rgb(?:\\(\\s*(?:\\d+|0|\\d+(?:\\.\\d+)?%)\\s*,\\s*(?:\\d+|0|\\d+(?:\\.\\d+)?%)\\s*,\\s*(?:\\d+|0|\\d+(?:\\.\\d+)?%)|a\\(\\s*(?:\\d+|0|\\d+(?:\\.\\d+)?%)\\s*,\\s*(?:\\d+|0|\\d+(?:\\.\\d+)?%)\\s*,\\s*(?:\\d+|0|\\d+(?:\\.\\d+)?%)\\s*,\\s*(?:\\d+|0(?:\\.\\d+)?|\\.\\d+|1(?:\\.0+)?|0|\\d+(?:\\.\\d+)?%)) *\\)'
|
|
607
|
-
], c = [ /^ *$/i, RegExp('^ *(?:\\s*' + s[ 0 ] + '|(?:\\s*' + s[ 0 ] +
|
|
608
|
-
')?)+ *$', 'i'), RegExp('^ *\\s*' + s[ 0 ] + ' *$', 'i'),
|
|
609
|
-
RegExp('^ *\\s*' + s[ 0 ] + '\\s*' + s[ 0 ] + ' *$', 'i') ], L = [ [
|
|
610
|
-
'aliceblue', 'antiquewhite', 'aqua', 'aquamarine', 'azure', 'beige',
|
|
611
|
-
'bisque', 'black', 'blanchedalmond', 'blue', 'blueviolet', 'brown',
|
|
612
|
-
'burlywood', 'cadetblue', 'chartreuse', 'chocolate', 'coral',
|
|
613
|
-
'cornflowerblue', 'cornsilk', 'crimson', 'cyan', 'darkblue',
|
|
614
|
-
'darkcyan', 'darkgoldenrod', 'darkgray', 'darkgreen', 'darkkhaki',
|
|
615
|
-
'darkmagenta', 'darkolivegreen', 'darkorange', 'darkorchid', 'darkred',
|
|
616
|
-
'darksalmon', 'darkseagreen', 'darkslateblue', 'darkslategray',
|
|
617
|
-
'darkturquoise', 'darkviolet', 'deeppink', 'deepskyblue', 'dimgray',
|
|
618
|
-
'dodgerblue', 'firebrick', 'floralwhite', 'forestgreen', 'fuchsia',
|
|
619
|
-
'gainsboro', 'ghostwhite', 'gold', 'goldenrod', 'gray', 'green',
|
|
620
|
-
'greenyellow', 'honeydew', 'hotpink', 'indianred', 'indigo', 'ivory',
|
|
621
|
-
'khaki', 'lavender', 'lavenderblush', 'lawngreen', 'lemonchiffon',
|
|
622
|
-
'lightblue', 'lightcoral', 'lightcyan', 'lightgoldenrodyellow',
|
|
623
|
-
'lightgreen', 'lightgrey', 'lightpink', 'lightsalmon', 'lightseagreen',
|
|
624
|
-
'lightskyblue', 'lightslategray', 'lightsteelblue', 'lightyellow',
|
|
625
|
-
'lime', 'limegreen', 'linen', 'magenta', 'maroon', 'mediumaquamarine',
|
|
626
|
-
'mediumblue', 'mediumorchid', 'mediumpurple', 'mediumseagreen',
|
|
627
|
-
'mediumslateblue', 'mediumspringgreen', 'mediumturquoise',
|
|
628
|
-
'mediumvioletred', 'midnightblue', 'mintcream', 'mistyrose',
|
|
629
|
-
'moccasin', 'navajowhite', 'navy', 'oldlace', 'olive', 'olivedrab',
|
|
630
|
-
'orange', 'orangered', 'orchid', 'palegoldenrod', 'palegreen',
|
|
631
|
-
'paleturquoise', 'palevioletred', 'papayawhip', 'peachpuff', 'peru',
|
|
632
|
-
'pink', 'plum', 'powderblue', 'purple', 'red', 'rosybrown',
|
|
633
|
-
'royalblue', 'saddlebrown', 'salmon', 'sandybrown', 'seagreen',
|
|
634
|
-
'seashell', 'sienna', 'silver', 'skyblue', 'slateblue', 'slategray',
|
|
635
|
-
'snow', 'springgreen', 'steelblue', 'tan', 'teal', 'thistle', 'tomato',
|
|
636
|
-
'turquoise', 'violet', 'wheat', 'white', 'whitesmoke', 'yellow',
|
|
637
|
-
'yellowgreen' ], [ 'all-scroll', 'col-resize', 'crosshair', 'default',
|
|
638
|
-
'e-resize', 'hand', 'help', 'move', 'n-resize', 'ne-resize', 'no-drop',
|
|
639
|
-
'not-allowed', 'nw-resize', 'pointer', 'progress', 'row-resize',
|
|
640
|
-
's-resize', 'se-resize', 'sw-resize', 'text', 'vertical-text',
|
|
641
|
-
'w-resize', 'wait' ], [ '-moz-inline-box', '-moz-inline-stack',
|
|
642
|
-
'block', 'inline', 'inline-block', 'inline-table', 'list-item',
|
|
643
|
-
'run-in', 'table', 'table-caption', 'table-cell', 'table-column',
|
|
644
|
-
'table-column-group', 'table-footer-group', 'table-header-group',
|
|
645
|
-
'table-row', 'table-row-group' ], [ 'armenian', 'circle', 'decimal',
|
|
646
|
-
'decimal-leading-zero', 'disc', 'georgian', 'lower-alpha',
|
|
647
|
-
'lower-greek', 'lower-latin', 'lower-roman', 'square', 'upper-alpha',
|
|
648
|
-
'upper-latin', 'upper-roman' ], [ '100', '200', '300', '400', '500',
|
|
649
|
-
'600', '700', '800', '900', 'bold', 'bolder', 'lighter' ], [
|
|
650
|
-
'condensed', 'expanded', 'extra-condensed', 'extra-expanded',
|
|
651
|
-
'narrower', 'semi-condensed', 'semi-expanded', 'ultra-condensed',
|
|
652
|
-
'ultra-expanded', 'wider' ], [ 'behind', 'center-left', 'center-right',
|
|
653
|
-
'far-left', 'far-right', 'left-side', 'leftwards', 'right-side',
|
|
654
|
-
'rightwards' ], [ 'large', 'larger', 'small', 'smaller', 'x-large',
|
|
655
|
-
'x-small', 'xx-large', 'xx-small' ], [ '-moz-pre-wrap', '-o-pre-wrap',
|
|
656
|
-
'-pre-wrap', 'nowrap', 'pre', 'pre-line', 'pre-wrap' ], [ 'dashed',
|
|
657
|
-
'dotted', 'double', 'groove', 'outset', 'ridge', 'solid' ], [
|
|
658
|
-
'baseline', 'middle', 'sub', 'super', 'text-bottom', 'text-top' ], [
|
|
659
|
-
'caption', 'icon', 'menu', 'message-box', 'small-caption', 'status-bar'
|
|
660
|
-
], [ 'fast', 'faster', 'slow', 'slower', 'x-fast', 'x-slow' ], [ 'above',
|
|
661
|
-
'below', 'higher', 'level', 'lower' ], [ 'border-box', 'contain',
|
|
662
|
-
'content-box', 'cover', 'padding-box' ], [ 'cursive', 'fantasy',
|
|
663
|
-
'monospace', 'sans-serif', 'serif' ], [ 'loud', 'silent', 'soft',
|
|
664
|
-
'x-loud', 'x-soft' ], [ 'no-repeat', 'repeat-x', 'repeat-y', 'round',
|
|
665
|
-
'space' ], [ 'blink', 'line-through', 'overline', 'underline' ], [
|
|
666
|
-
'high', 'low', 'x-high', 'x-low' ], [ 'absolute', 'relative', 'static'
|
|
667
|
-
], [ 'capitalize', 'lowercase', 'uppercase' ], [ 'child', 'female',
|
|
668
|
-
'male' ], [ 'bidi-override', 'embed' ], [ 'bottom', 'top' ], [ 'clip',
|
|
669
|
-
'ellipsis' ], [ 'continuous', 'digits' ], [ 'hide', 'show' ], [
|
|
670
|
-
'inside', 'outside' ], [ 'italic', 'oblique' ], [ 'left', 'right' ], [
|
|
671
|
-
'ltr', 'rtl' ], [ 'no-content', 'no-display' ], [ 'suppress',
|
|
672
|
-
'unrestricted' ], [ 'thick', 'thin' ], [ ',' ], [ '/' ], [ 'always' ],
|
|
673
|
-
[ 'auto' ], [ 'avoid' ], [ 'both' ], [ 'break-word' ], [ 'center' ], [
|
|
674
|
-
'code' ], [ 'collapse' ], [ 'fixed' ], [ 'hidden' ], [ 'inherit' ], [
|
|
675
|
-
'inset' ], [ 'invert' ], [ 'justify' ], [ 'local' ], [ 'medium' ], [
|
|
676
|
-
'mix' ], [ 'none' ], [ 'normal' ], [ 'once' ], [ 'repeat' ], [ 'scroll'
|
|
677
|
-
], [ 'separate' ], [ 'small-caps' ], [ 'spell-out' ], [ 'transparent' ],
|
|
678
|
-
[ 'visible' ] ];
|
|
679
|
-
return {
|
|
680
|
-
'-moz-border-radius': {
|
|
681
|
-
'cssExtra': c[ 0 ],
|
|
682
|
-
'cssPropBits': 5,
|
|
683
|
-
'cssLitGroup': [ L[ 36 ] ]
|
|
684
|
-
},
|
|
685
|
-
'-moz-border-radius-bottomleft': {
|
|
686
|
-
'cssExtra': c[ 0 ],
|
|
687
|
-
'cssPropBits': 5
|
|
688
|
-
},
|
|
689
|
-
'-moz-border-radius-bottomright': {
|
|
690
|
-
'cssExtra': c[ 0 ],
|
|
691
|
-
'cssPropBits': 5
|
|
692
|
-
},
|
|
693
|
-
'-moz-border-radius-topleft': {
|
|
694
|
-
'cssExtra': c[ 0 ],
|
|
695
|
-
'cssPropBits': 5
|
|
696
|
-
},
|
|
697
|
-
'-moz-border-radius-topright': {
|
|
698
|
-
'cssExtra': c[ 0 ],
|
|
699
|
-
'cssPropBits': 5
|
|
700
|
-
},
|
|
701
|
-
'-moz-box-shadow': {
|
|
702
|
-
'cssExtra': c[ 1 ],
|
|
703
|
-
'cssAlternates': [ 'boxShadow' ],
|
|
704
|
-
'cssPropBits': 7,
|
|
705
|
-
'cssLitGroup': [ L[ 0 ], L[ 35 ], L[ 48 ], L[ 54 ] ]
|
|
706
|
-
},
|
|
707
|
-
'-moz-opacity': {
|
|
708
|
-
'cssPropBits': 1,
|
|
709
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
710
|
-
},
|
|
711
|
-
'-moz-outline': {
|
|
712
|
-
'cssExtra': c[ 3 ],
|
|
713
|
-
'cssPropBits': 7,
|
|
714
|
-
'cssLitGroup': [ L[ 0 ], L[ 9 ], L[ 34 ], L[ 46 ], L[ 47 ], L[ 48 ], L[
|
|
715
|
-
49 ], L[ 52 ], L[ 54 ] ]
|
|
716
|
-
},
|
|
717
|
-
'-moz-outline-color': {
|
|
718
|
-
'cssExtra': c[ 2 ],
|
|
719
|
-
'cssPropBits': 2,
|
|
720
|
-
'cssLitGroup': [ L[ 0 ], L[ 47 ], L[ 49 ] ]
|
|
721
|
-
},
|
|
722
|
-
'-moz-outline-style': {
|
|
723
|
-
'cssPropBits': 0,
|
|
724
|
-
'cssLitGroup': [ L[ 9 ], L[ 46 ], L[ 47 ], L[ 48 ], L[ 54 ] ]
|
|
725
|
-
},
|
|
726
|
-
'-moz-outline-width': {
|
|
727
|
-
'cssPropBits': 5,
|
|
728
|
-
'cssLitGroup': [ L[ 34 ], L[ 47 ], L[ 52 ] ]
|
|
729
|
-
},
|
|
730
|
-
'-o-text-overflow': {
|
|
731
|
-
'cssPropBits': 0,
|
|
732
|
-
'cssLitGroup': [ L[ 25 ] ]
|
|
733
|
-
},
|
|
734
|
-
'-webkit-border-bottom-left-radius': {
|
|
735
|
-
'cssExtra': c[ 0 ],
|
|
736
|
-
'cssPropBits': 5
|
|
737
|
-
},
|
|
738
|
-
'-webkit-border-bottom-right-radius': {
|
|
739
|
-
'cssExtra': c[ 0 ],
|
|
740
|
-
'cssPropBits': 5
|
|
741
|
-
},
|
|
742
|
-
'-webkit-border-radius': {
|
|
743
|
-
'cssExtra': c[ 0 ],
|
|
744
|
-
'cssPropBits': 5,
|
|
745
|
-
'cssLitGroup': [ L[ 36 ] ]
|
|
746
|
-
},
|
|
747
|
-
'-webkit-border-radius-bottom-left': {
|
|
748
|
-
'cssExtra': c[ 0 ],
|
|
749
|
-
'cssPropBits': 5
|
|
750
|
-
},
|
|
751
|
-
'-webkit-border-radius-bottom-right': {
|
|
752
|
-
'cssExtra': c[ 0 ],
|
|
753
|
-
'cssPropBits': 5
|
|
754
|
-
},
|
|
755
|
-
'-webkit-border-radius-top-left': {
|
|
756
|
-
'cssExtra': c[ 0 ],
|
|
757
|
-
'cssPropBits': 5
|
|
758
|
-
},
|
|
759
|
-
'-webkit-border-radius-top-right': {
|
|
760
|
-
'cssExtra': c[ 0 ],
|
|
761
|
-
'cssPropBits': 5
|
|
762
|
-
},
|
|
763
|
-
'-webkit-border-top-left-radius': {
|
|
764
|
-
'cssExtra': c[ 0 ],
|
|
765
|
-
'cssPropBits': 5
|
|
766
|
-
},
|
|
767
|
-
'-webkit-border-top-right-radius': {
|
|
768
|
-
'cssExtra': c[ 0 ],
|
|
769
|
-
'cssPropBits': 5
|
|
770
|
-
},
|
|
771
|
-
'-webkit-box-shadow': {
|
|
772
|
-
'cssExtra': c[ 1 ],
|
|
773
|
-
'cssAlternates': [ 'boxShadow' ],
|
|
774
|
-
'cssPropBits': 7,
|
|
775
|
-
'cssLitGroup': [ L[ 0 ], L[ 35 ], L[ 48 ], L[ 54 ] ]
|
|
776
|
-
},
|
|
777
|
-
'azimuth': {
|
|
778
|
-
'cssPropBits': 5,
|
|
779
|
-
'cssLitGroup': [ L[ 6 ], L[ 30 ], L[ 42 ], L[ 47 ] ]
|
|
780
|
-
},
|
|
781
|
-
'background': {
|
|
782
|
-
'cssExtra': RegExp('^ *(?:\\s*' + s[ 0 ] + '){0,2} *$', 'i'),
|
|
783
|
-
'cssPropBits': 23,
|
|
784
|
-
'cssLitGroup': [ L[ 0 ], L[ 14 ], L[ 17 ], L[ 24 ], L[ 30 ], L[ 35 ],
|
|
785
|
-
L[ 36 ], L[ 38 ], L[ 42 ], L[ 45 ], L[ 47 ], L[ 51 ], L[ 54 ], L[ 57
|
|
786
|
-
], L[ 58 ], L[ 62 ] ]
|
|
787
|
-
},
|
|
788
|
-
'background-attachment': {
|
|
789
|
-
'cssExtra': c[ 0 ],
|
|
790
|
-
'cssPropBits': 0,
|
|
791
|
-
'cssLitGroup': [ L[ 35 ], L[ 45 ], L[ 51 ], L[ 58 ] ]
|
|
792
|
-
},
|
|
793
|
-
'background-color': {
|
|
794
|
-
'cssExtra': c[ 2 ],
|
|
795
|
-
'cssPropBits': 130,
|
|
796
|
-
'cssLitGroup': [ L[ 0 ], L[ 47 ], L[ 62 ] ]
|
|
797
|
-
},
|
|
798
|
-
'background-image': {
|
|
799
|
-
'cssExtra': c[ 0 ],
|
|
800
|
-
'cssPropBits': 16,
|
|
801
|
-
'cssLitGroup': [ L[ 35 ], L[ 54 ] ]
|
|
802
|
-
},
|
|
803
|
-
'background-position': {
|
|
804
|
-
'cssExtra': c[ 0 ],
|
|
805
|
-
'cssPropBits': 5,
|
|
806
|
-
'cssLitGroup': [ L[ 24 ], L[ 30 ], L[ 35 ], L[ 42 ] ]
|
|
807
|
-
},
|
|
808
|
-
'background-repeat': {
|
|
809
|
-
'cssExtra': c[ 0 ],
|
|
810
|
-
'cssPropBits': 0,
|
|
811
|
-
'cssLitGroup': [ L[ 17 ], L[ 35 ], L[ 57 ] ]
|
|
812
|
-
},
|
|
813
|
-
'border': {
|
|
814
|
-
'cssExtra': c[ 3 ],
|
|
815
|
-
'cssPropBits': 7,
|
|
816
|
-
'cssLitGroup': [ L[ 0 ], L[ 9 ], L[ 34 ], L[ 46 ], L[ 47 ], L[ 48 ], L[
|
|
817
|
-
52 ], L[ 54 ], L[ 62 ] ]
|
|
818
|
-
},
|
|
819
|
-
'border-bottom': {
|
|
820
|
-
'cssExtra': c[ 3 ],
|
|
821
|
-
'cssPropBits': 7,
|
|
822
|
-
'cssLitGroup': [ L[ 0 ], L[ 9 ], L[ 34 ], L[ 46 ], L[ 47 ], L[ 48 ], L[
|
|
823
|
-
52 ], L[ 54 ], L[ 62 ] ]
|
|
824
|
-
},
|
|
825
|
-
'border-bottom-color': {
|
|
826
|
-
'cssExtra': c[ 2 ],
|
|
827
|
-
'cssPropBits': 2,
|
|
828
|
-
'cssLitGroup': [ L[ 0 ], L[ 47 ], L[ 62 ] ]
|
|
829
|
-
},
|
|
830
|
-
'border-bottom-left-radius': {
|
|
831
|
-
'cssExtra': c[ 0 ],
|
|
832
|
-
'cssPropBits': 5
|
|
833
|
-
},
|
|
834
|
-
'border-bottom-right-radius': {
|
|
835
|
-
'cssExtra': c[ 0 ],
|
|
836
|
-
'cssPropBits': 5
|
|
837
|
-
},
|
|
838
|
-
'border-bottom-style': {
|
|
839
|
-
'cssPropBits': 0,
|
|
840
|
-
'cssLitGroup': [ L[ 9 ], L[ 46 ], L[ 47 ], L[ 48 ], L[ 54 ] ]
|
|
841
|
-
},
|
|
842
|
-
'border-bottom-width': {
|
|
843
|
-
'cssPropBits': 5,
|
|
844
|
-
'cssLitGroup': [ L[ 34 ], L[ 47 ], L[ 52 ] ]
|
|
845
|
-
},
|
|
846
|
-
'border-collapse': {
|
|
847
|
-
'cssPropBits': 0,
|
|
848
|
-
'cssLitGroup': [ L[ 44 ], L[ 47 ], L[ 59 ] ]
|
|
849
|
-
},
|
|
850
|
-
'border-color': {
|
|
851
|
-
'cssExtra': RegExp('^ *(?:\\s*' + s[ 0 ] + '){1,4} *$', 'i'),
|
|
852
|
-
'cssPropBits': 2,
|
|
853
|
-
'cssLitGroup': [ L[ 0 ], L[ 47 ], L[ 62 ] ]
|
|
854
|
-
},
|
|
855
|
-
'border-left': {
|
|
856
|
-
'cssExtra': c[ 3 ],
|
|
857
|
-
'cssPropBits': 7,
|
|
858
|
-
'cssLitGroup': [ L[ 0 ], L[ 9 ], L[ 34 ], L[ 46 ], L[ 47 ], L[ 48 ], L[
|
|
859
|
-
52 ], L[ 54 ], L[ 62 ] ]
|
|
860
|
-
},
|
|
861
|
-
'border-left-color': {
|
|
862
|
-
'cssExtra': c[ 2 ],
|
|
863
|
-
'cssPropBits': 2,
|
|
864
|
-
'cssLitGroup': [ L[ 0 ], L[ 47 ], L[ 62 ] ]
|
|
865
|
-
},
|
|
866
|
-
'border-left-style': {
|
|
867
|
-
'cssPropBits': 0,
|
|
868
|
-
'cssLitGroup': [ L[ 9 ], L[ 46 ], L[ 47 ], L[ 48 ], L[ 54 ] ]
|
|
869
|
-
},
|
|
870
|
-
'border-left-width': {
|
|
871
|
-
'cssPropBits': 5,
|
|
872
|
-
'cssLitGroup': [ L[ 34 ], L[ 47 ], L[ 52 ] ]
|
|
873
|
-
},
|
|
874
|
-
'border-radius': {
|
|
875
|
-
'cssExtra': c[ 0 ],
|
|
876
|
-
'cssPropBits': 5,
|
|
877
|
-
'cssLitGroup': [ L[ 36 ] ]
|
|
878
|
-
},
|
|
879
|
-
'border-right': {
|
|
880
|
-
'cssExtra': c[ 3 ],
|
|
881
|
-
'cssPropBits': 7,
|
|
882
|
-
'cssLitGroup': [ L[ 0 ], L[ 9 ], L[ 34 ], L[ 46 ], L[ 47 ], L[ 48 ], L[
|
|
883
|
-
52 ], L[ 54 ], L[ 62 ] ]
|
|
884
|
-
},
|
|
885
|
-
'border-right-color': {
|
|
886
|
-
'cssExtra': c[ 2 ],
|
|
887
|
-
'cssPropBits': 2,
|
|
888
|
-
'cssLitGroup': [ L[ 0 ], L[ 47 ], L[ 62 ] ]
|
|
889
|
-
},
|
|
890
|
-
'border-right-style': {
|
|
891
|
-
'cssPropBits': 0,
|
|
892
|
-
'cssLitGroup': [ L[ 9 ], L[ 46 ], L[ 47 ], L[ 48 ], L[ 54 ] ]
|
|
893
|
-
},
|
|
894
|
-
'border-right-width': {
|
|
895
|
-
'cssPropBits': 5,
|
|
896
|
-
'cssLitGroup': [ L[ 34 ], L[ 47 ], L[ 52 ] ]
|
|
897
|
-
},
|
|
898
|
-
'border-spacing': {
|
|
899
|
-
'cssExtra': c[ 0 ],
|
|
900
|
-
'cssPropBits': 5,
|
|
901
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
902
|
-
},
|
|
903
|
-
'border-style': {
|
|
904
|
-
'cssPropBits': 0,
|
|
905
|
-
'cssLitGroup': [ L[ 9 ], L[ 46 ], L[ 47 ], L[ 48 ], L[ 54 ] ]
|
|
906
|
-
},
|
|
907
|
-
'border-top': {
|
|
908
|
-
'cssExtra': c[ 3 ],
|
|
909
|
-
'cssPropBits': 7,
|
|
910
|
-
'cssLitGroup': [ L[ 0 ], L[ 9 ], L[ 34 ], L[ 46 ], L[ 47 ], L[ 48 ], L[
|
|
911
|
-
52 ], L[ 54 ], L[ 62 ] ]
|
|
912
|
-
},
|
|
913
|
-
'border-top-color': {
|
|
914
|
-
'cssExtra': c[ 2 ],
|
|
915
|
-
'cssPropBits': 2,
|
|
916
|
-
'cssLitGroup': [ L[ 0 ], L[ 47 ], L[ 62 ] ]
|
|
917
|
-
},
|
|
918
|
-
'border-top-left-radius': {
|
|
919
|
-
'cssExtra': c[ 0 ],
|
|
920
|
-
'cssPropBits': 5
|
|
921
|
-
},
|
|
922
|
-
'border-top-right-radius': {
|
|
923
|
-
'cssExtra': c[ 0 ],
|
|
924
|
-
'cssPropBits': 5
|
|
925
|
-
},
|
|
926
|
-
'border-top-style': {
|
|
927
|
-
'cssPropBits': 0,
|
|
928
|
-
'cssLitGroup': [ L[ 9 ], L[ 46 ], L[ 47 ], L[ 48 ], L[ 54 ] ]
|
|
929
|
-
},
|
|
930
|
-
'border-top-width': {
|
|
931
|
-
'cssPropBits': 5,
|
|
932
|
-
'cssLitGroup': [ L[ 34 ], L[ 47 ], L[ 52 ] ]
|
|
933
|
-
},
|
|
934
|
-
'border-width': {
|
|
935
|
-
'cssPropBits': 5,
|
|
936
|
-
'cssLitGroup': [ L[ 34 ], L[ 47 ], L[ 52 ] ]
|
|
937
|
-
},
|
|
938
|
-
'bottom': {
|
|
939
|
-
'cssPropBits': 5,
|
|
940
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
941
|
-
},
|
|
942
|
-
'box-shadow': {
|
|
943
|
-
'cssExtra': c[ 1 ],
|
|
944
|
-
'cssPropBits': 7,
|
|
945
|
-
'cssLitGroup': [ L[ 0 ], L[ 35 ], L[ 48 ], L[ 54 ] ]
|
|
946
|
-
},
|
|
947
|
-
'caption-side': {
|
|
948
|
-
'cssPropBits': 0,
|
|
949
|
-
'cssLitGroup': [ L[ 24 ], L[ 47 ] ]
|
|
950
|
-
},
|
|
951
|
-
'clear': {
|
|
952
|
-
'cssPropBits': 0,
|
|
953
|
-
'cssLitGroup': [ L[ 30 ], L[ 40 ], L[ 47 ], L[ 54 ] ]
|
|
954
|
-
},
|
|
955
|
-
'clip': {
|
|
956
|
-
'cssExtra':
|
|
957
|
-
/^ *\s*rect\(\s*(?:0|[+\-]?\d+(?:\.\d+)?(?:[cem]m|ex|in|p[ctx])|auto)\s*,\s*(?:0|[+\-]?\d+(?:\.\d+)?(?:[cem]m|ex|in|p[ctx])|auto)\s*,\s*(?:0|[+\-]?\d+(?:\.\d+)?(?:[cem]m|ex|in|p[ctx])|auto)\s*,\s*(?:0|[+\-]?\d+(?:\.\d+)?(?:[cem]m|ex|in|p[ctx])|auto) *\) *$/i,
|
|
958
|
-
'cssPropBits': 0,
|
|
959
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
960
|
-
},
|
|
961
|
-
'color': {
|
|
962
|
-
'cssExtra': c[ 2 ],
|
|
963
|
-
'cssPropBits': 130,
|
|
964
|
-
'cssLitGroup': [ L[ 0 ], L[ 47 ] ]
|
|
965
|
-
},
|
|
966
|
-
'content': { 'cssPropBits': 0 },
|
|
967
|
-
'counter-increment': {
|
|
968
|
-
'cssExtra': c[ 0 ],
|
|
969
|
-
'cssPropBits': 5,
|
|
970
|
-
'cssLitGroup': [ L[ 47 ], L[ 54 ] ]
|
|
971
|
-
},
|
|
972
|
-
'counter-reset': {
|
|
973
|
-
'cssExtra': c[ 0 ],
|
|
974
|
-
'cssPropBits': 5,
|
|
975
|
-
'cssLitGroup': [ L[ 47 ], L[ 54 ] ]
|
|
976
|
-
},
|
|
977
|
-
'cue': {
|
|
978
|
-
'cssPropBits': 16,
|
|
979
|
-
'cssLitGroup': [ L[ 47 ], L[ 54 ] ]
|
|
980
|
-
},
|
|
981
|
-
'cue-after': {
|
|
982
|
-
'cssPropBits': 16,
|
|
983
|
-
'cssLitGroup': [ L[ 47 ], L[ 54 ] ]
|
|
984
|
-
},
|
|
985
|
-
'cue-before': {
|
|
986
|
-
'cssPropBits': 16,
|
|
987
|
-
'cssLitGroup': [ L[ 47 ], L[ 54 ] ]
|
|
988
|
-
},
|
|
989
|
-
'cursor': {
|
|
990
|
-
'cssExtra': c[ 0 ],
|
|
991
|
-
'cssPropBits': 144,
|
|
992
|
-
'cssLitGroup': [ L[ 1 ], L[ 35 ], L[ 38 ], L[ 47 ] ]
|
|
993
|
-
},
|
|
994
|
-
'direction': {
|
|
995
|
-
'cssPropBits': 0,
|
|
996
|
-
'cssLitGroup': [ L[ 31 ], L[ 47 ] ]
|
|
997
|
-
},
|
|
998
|
-
'display': {
|
|
999
|
-
'cssPropBits': 32,
|
|
1000
|
-
'cssLitGroup': [ L[ 2 ], L[ 47 ], L[ 54 ] ]
|
|
1001
|
-
},
|
|
1002
|
-
'elevation': {
|
|
1003
|
-
'cssPropBits': 5,
|
|
1004
|
-
'cssLitGroup': [ L[ 13 ], L[ 47 ] ]
|
|
1005
|
-
},
|
|
1006
|
-
'empty-cells': {
|
|
1007
|
-
'cssPropBits': 0,
|
|
1008
|
-
'cssLitGroup': [ L[ 27 ], L[ 47 ] ]
|
|
1009
|
-
},
|
|
1010
|
-
'filter': {
|
|
1011
|
-
'cssExtra':
|
|
1012
|
-
/^ *(?:\s*alpha\(\s*opacity\s*=\s*(?:0|\d+(?:\.\d+)?%|[+\-]?\d+(?:\.\d+)?) *\))+ *$/i,
|
|
1013
|
-
'cssPropBits': 32
|
|
1014
|
-
},
|
|
1015
|
-
'float': {
|
|
1016
|
-
'cssAlternates': [ 'cssFloat', 'styleFloat' ],
|
|
1017
|
-
'cssPropBits': 32,
|
|
1018
|
-
'cssLitGroup': [ L[ 30 ], L[ 47 ], L[ 54 ] ]
|
|
1019
|
-
},
|
|
1020
|
-
'font': {
|
|
1021
|
-
'cssExtra': c[ 0 ],
|
|
1022
|
-
'cssPropBits': 9,
|
|
1023
|
-
'cssLitGroup': [ L[ 4 ], L[ 7 ], L[ 11 ], L[ 15 ], L[ 29 ], L[ 35 ], L[
|
|
1024
|
-
36 ], L[ 47 ], L[ 52 ], L[ 55 ], L[ 60 ] ]
|
|
1025
|
-
},
|
|
1026
|
-
'font-family': {
|
|
1027
|
-
'cssExtra': c[ 0 ],
|
|
1028
|
-
'cssPropBits': 8,
|
|
1029
|
-
'cssLitGroup': [ L[ 15 ], L[ 35 ], L[ 47 ] ]
|
|
1030
|
-
},
|
|
1031
|
-
'font-size': {
|
|
1032
|
-
'cssPropBits': 1,
|
|
1033
|
-
'cssLitGroup': [ L[ 7 ], L[ 47 ], L[ 52 ] ]
|
|
1034
|
-
},
|
|
1035
|
-
'font-stretch': {
|
|
1036
|
-
'cssPropBits': 0,
|
|
1037
|
-
'cssLitGroup': [ L[ 5 ], L[ 55 ] ]
|
|
1038
|
-
},
|
|
1039
|
-
'font-style': {
|
|
1040
|
-
'cssPropBits': 0,
|
|
1041
|
-
'cssLitGroup': [ L[ 29 ], L[ 47 ], L[ 55 ] ]
|
|
1042
|
-
},
|
|
1043
|
-
'font-variant': {
|
|
1044
|
-
'cssPropBits': 0,
|
|
1045
|
-
'cssLitGroup': [ L[ 47 ], L[ 55 ], L[ 60 ] ]
|
|
1046
|
-
},
|
|
1047
|
-
'font-weight': {
|
|
1048
|
-
'cssPropBits': 0,
|
|
1049
|
-
'cssLitGroup': [ L[ 4 ], L[ 47 ], L[ 55 ] ],
|
|
1050
|
-
// ##### BEGIN: MODIFIED BY SAP
|
|
1051
|
-
'cssLitNumeric': true
|
|
1052
|
-
// ##### END: MODIFIED BY SAP
|
|
1053
|
-
},
|
|
1054
|
-
'height': {
|
|
1055
|
-
'cssPropBits': 37,
|
|
1056
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
1057
|
-
},
|
|
1058
|
-
'left': {
|
|
1059
|
-
'cssPropBits': 37,
|
|
1060
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
1061
|
-
},
|
|
1062
|
-
'letter-spacing': {
|
|
1063
|
-
'cssPropBits': 5,
|
|
1064
|
-
'cssLitGroup': [ L[ 47 ], L[ 55 ] ]
|
|
1065
|
-
},
|
|
1066
|
-
'line-height': {
|
|
1067
|
-
'cssPropBits': 1,
|
|
1068
|
-
'cssLitGroup': [ L[ 47 ], L[ 55 ] ]
|
|
1069
|
-
},
|
|
1070
|
-
'list-style': {
|
|
1071
|
-
'cssPropBits': 16,
|
|
1072
|
-
'cssLitGroup': [ L[ 3 ], L[ 28 ], L[ 47 ], L[ 54 ] ]
|
|
1073
|
-
},
|
|
1074
|
-
'list-style-image': {
|
|
1075
|
-
'cssPropBits': 16,
|
|
1076
|
-
'cssLitGroup': [ L[ 47 ], L[ 54 ] ]
|
|
1077
|
-
},
|
|
1078
|
-
'list-style-position': {
|
|
1079
|
-
'cssPropBits': 0,
|
|
1080
|
-
'cssLitGroup': [ L[ 28 ], L[ 47 ] ]
|
|
1081
|
-
},
|
|
1082
|
-
'list-style-type': {
|
|
1083
|
-
'cssPropBits': 0,
|
|
1084
|
-
'cssLitGroup': [ L[ 3 ], L[ 47 ], L[ 54 ] ]
|
|
1085
|
-
},
|
|
1086
|
-
'margin': {
|
|
1087
|
-
'cssPropBits': 5,
|
|
1088
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
1089
|
-
},
|
|
1090
|
-
'margin-bottom': {
|
|
1091
|
-
'cssPropBits': 5,
|
|
1092
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
1093
|
-
},
|
|
1094
|
-
'margin-left': {
|
|
1095
|
-
'cssPropBits': 5,
|
|
1096
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
1097
|
-
},
|
|
1098
|
-
'margin-right': {
|
|
1099
|
-
'cssPropBits': 5,
|
|
1100
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
1101
|
-
},
|
|
1102
|
-
'margin-top': {
|
|
1103
|
-
'cssPropBits': 5,
|
|
1104
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
1105
|
-
},
|
|
1106
|
-
'max-height': {
|
|
1107
|
-
'cssPropBits': 1,
|
|
1108
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ], L[ 54 ] ]
|
|
1109
|
-
},
|
|
1110
|
-
'max-width': {
|
|
1111
|
-
'cssPropBits': 1,
|
|
1112
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ], L[ 54 ] ]
|
|
1113
|
-
},
|
|
1114
|
-
'min-height': {
|
|
1115
|
-
'cssPropBits': 1,
|
|
1116
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
1117
|
-
},
|
|
1118
|
-
'min-width': {
|
|
1119
|
-
'cssPropBits': 1,
|
|
1120
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
1121
|
-
},
|
|
1122
|
-
'opacity': {
|
|
1123
|
-
'cssPropBits': 33,
|
|
1124
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
1125
|
-
},
|
|
1126
|
-
'outline': {
|
|
1127
|
-
'cssExtra': c[ 3 ],
|
|
1128
|
-
'cssPropBits': 7,
|
|
1129
|
-
'cssLitGroup': [ L[ 0 ], L[ 9 ], L[ 34 ], L[ 46 ], L[ 47 ], L[ 48 ], L[
|
|
1130
|
-
49 ], L[ 52 ], L[ 54 ] ]
|
|
1131
|
-
},
|
|
1132
|
-
'outline-color': {
|
|
1133
|
-
'cssExtra': c[ 2 ],
|
|
1134
|
-
'cssPropBits': 2,
|
|
1135
|
-
'cssLitGroup': [ L[ 0 ], L[ 47 ], L[ 49 ] ]
|
|
1136
|
-
},
|
|
1137
|
-
'outline-style': {
|
|
1138
|
-
'cssPropBits': 0,
|
|
1139
|
-
'cssLitGroup': [ L[ 9 ], L[ 46 ], L[ 47 ], L[ 48 ], L[ 54 ] ]
|
|
1140
|
-
},
|
|
1141
|
-
'outline-width': {
|
|
1142
|
-
'cssPropBits': 5,
|
|
1143
|
-
'cssLitGroup': [ L[ 34 ], L[ 47 ], L[ 52 ] ]
|
|
1144
|
-
},
|
|
1145
|
-
'overflow': {
|
|
1146
|
-
'cssPropBits': 32,
|
|
1147
|
-
'cssLitGroup': [ L[ 38 ], L[ 46 ], L[ 47 ], L[ 58 ], L[ 63 ] ]
|
|
1148
|
-
},
|
|
1149
|
-
'overflow-x': {
|
|
1150
|
-
'cssPropBits': 0,
|
|
1151
|
-
'cssLitGroup': [ L[ 32 ], L[ 38 ], L[ 46 ], L[ 58 ], L[ 63 ] ]
|
|
1152
|
-
},
|
|
1153
|
-
'overflow-y': {
|
|
1154
|
-
'cssPropBits': 0,
|
|
1155
|
-
'cssLitGroup': [ L[ 32 ], L[ 38 ], L[ 46 ], L[ 58 ], L[ 63 ] ]
|
|
1156
|
-
},
|
|
1157
|
-
'padding': {
|
|
1158
|
-
'cssPropBits': 1,
|
|
1159
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
1160
|
-
},
|
|
1161
|
-
'padding-bottom': {
|
|
1162
|
-
'cssPropBits': 33,
|
|
1163
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
1164
|
-
},
|
|
1165
|
-
'padding-left': {
|
|
1166
|
-
'cssPropBits': 33,
|
|
1167
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
1168
|
-
},
|
|
1169
|
-
'padding-right': {
|
|
1170
|
-
'cssPropBits': 33,
|
|
1171
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
1172
|
-
},
|
|
1173
|
-
'padding-top': {
|
|
1174
|
-
'cssPropBits': 33,
|
|
1175
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
1176
|
-
},
|
|
1177
|
-
'page-break-after': {
|
|
1178
|
-
'cssPropBits': 0,
|
|
1179
|
-
'cssLitGroup': [ L[ 30 ], L[ 37 ], L[ 38 ], L[ 39 ], L[ 47 ] ]
|
|
1180
|
-
},
|
|
1181
|
-
'page-break-before': {
|
|
1182
|
-
'cssPropBits': 0,
|
|
1183
|
-
'cssLitGroup': [ L[ 30 ], L[ 37 ], L[ 38 ], L[ 39 ], L[ 47 ] ]
|
|
1184
|
-
},
|
|
1185
|
-
'page-break-inside': {
|
|
1186
|
-
'cssPropBits': 0,
|
|
1187
|
-
'cssLitGroup': [ L[ 38 ], L[ 39 ], L[ 47 ] ]
|
|
1188
|
-
},
|
|
1189
|
-
'pause': {
|
|
1190
|
-
'cssPropBits': 5,
|
|
1191
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
1192
|
-
},
|
|
1193
|
-
'pause-after': {
|
|
1194
|
-
'cssPropBits': 5,
|
|
1195
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
1196
|
-
},
|
|
1197
|
-
'pause-before': {
|
|
1198
|
-
'cssPropBits': 5,
|
|
1199
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
1200
|
-
},
|
|
1201
|
-
'pitch': {
|
|
1202
|
-
'cssPropBits': 5,
|
|
1203
|
-
'cssLitGroup': [ L[ 19 ], L[ 47 ], L[ 52 ] ]
|
|
1204
|
-
},
|
|
1205
|
-
'pitch-range': {
|
|
1206
|
-
'cssPropBits': 5,
|
|
1207
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
1208
|
-
},
|
|
1209
|
-
'play-during': {
|
|
1210
|
-
'cssExtra': c[ 0 ],
|
|
1211
|
-
'cssPropBits': 16,
|
|
1212
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ], L[ 53 ], L[ 54 ], L[ 57 ] ]
|
|
1213
|
-
},
|
|
1214
|
-
'position': {
|
|
1215
|
-
'cssPropBits': 32,
|
|
1216
|
-
'cssLitGroup': [ L[ 20 ], L[ 47 ] ]
|
|
1217
|
-
},
|
|
1218
|
-
'quotes': {
|
|
1219
|
-
'cssExtra': c[ 0 ],
|
|
1220
|
-
'cssPropBits': 0,
|
|
1221
|
-
'cssLitGroup': [ L[ 47 ], L[ 54 ] ]
|
|
1222
|
-
},
|
|
1223
|
-
'richness': {
|
|
1224
|
-
'cssPropBits': 5,
|
|
1225
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
1226
|
-
},
|
|
1227
|
-
'right': {
|
|
1228
|
-
'cssPropBits': 37,
|
|
1229
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
1230
|
-
},
|
|
1231
|
-
'speak': {
|
|
1232
|
-
'cssPropBits': 0,
|
|
1233
|
-
'cssLitGroup': [ L[ 47 ], L[ 54 ], L[ 55 ], L[ 61 ] ]
|
|
1234
|
-
},
|
|
1235
|
-
'speak-header': {
|
|
1236
|
-
'cssPropBits': 0,
|
|
1237
|
-
'cssLitGroup': [ L[ 37 ], L[ 47 ], L[ 56 ] ]
|
|
1238
|
-
},
|
|
1239
|
-
'speak-numeral': {
|
|
1240
|
-
'cssPropBits': 0,
|
|
1241
|
-
'cssLitGroup': [ L[ 26 ], L[ 47 ] ]
|
|
1242
|
-
},
|
|
1243
|
-
'speak-punctuation': {
|
|
1244
|
-
'cssPropBits': 0,
|
|
1245
|
-
'cssLitGroup': [ L[ 43 ], L[ 47 ], L[ 54 ] ]
|
|
1246
|
-
},
|
|
1247
|
-
'speech-rate': {
|
|
1248
|
-
'cssPropBits': 5,
|
|
1249
|
-
'cssLitGroup': [ L[ 12 ], L[ 47 ], L[ 52 ] ]
|
|
1250
|
-
},
|
|
1251
|
-
'stress': {
|
|
1252
|
-
'cssPropBits': 5,
|
|
1253
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
1254
|
-
},
|
|
1255
|
-
'table-layout': {
|
|
1256
|
-
'cssPropBits': 0,
|
|
1257
|
-
'cssLitGroup': [ L[ 38 ], L[ 45 ], L[ 47 ] ]
|
|
1258
|
-
},
|
|
1259
|
-
'text-align': {
|
|
1260
|
-
'cssPropBits': 0,
|
|
1261
|
-
'cssLitGroup': [ L[ 30 ], L[ 42 ], L[ 47 ], L[ 50 ] ]
|
|
1262
|
-
},
|
|
1263
|
-
'text-decoration': {
|
|
1264
|
-
'cssPropBits': 0,
|
|
1265
|
-
'cssLitGroup': [ L[ 18 ], L[ 47 ], L[ 54 ] ]
|
|
1266
|
-
},
|
|
1267
|
-
'text-indent': {
|
|
1268
|
-
'cssPropBits': 5,
|
|
1269
|
-
'cssLitGroup': [ L[ 47 ] ]
|
|
1270
|
-
},
|
|
1271
|
-
'text-overflow': {
|
|
1272
|
-
'cssPropBits': 0,
|
|
1273
|
-
'cssLitGroup': [ L[ 25 ] ]
|
|
1274
|
-
},
|
|
1275
|
-
'text-shadow': {
|
|
1276
|
-
'cssExtra': c[ 1 ],
|
|
1277
|
-
'cssPropBits': 7,
|
|
1278
|
-
'cssLitGroup': [ L[ 0 ], L[ 35 ], L[ 48 ], L[ 54 ] ]
|
|
1279
|
-
},
|
|
1280
|
-
'text-transform': {
|
|
1281
|
-
'cssPropBits': 0,
|
|
1282
|
-
'cssLitGroup': [ L[ 21 ], L[ 47 ], L[ 54 ] ]
|
|
1283
|
-
},
|
|
1284
|
-
'text-wrap': {
|
|
1285
|
-
'cssPropBits': 0,
|
|
1286
|
-
'cssLitGroup': [ L[ 33 ], L[ 54 ], L[ 55 ] ]
|
|
1287
|
-
},
|
|
1288
|
-
'top': {
|
|
1289
|
-
'cssPropBits': 37,
|
|
1290
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
1291
|
-
},
|
|
1292
|
-
'unicode-bidi': {
|
|
1293
|
-
'cssPropBits': 0,
|
|
1294
|
-
'cssLitGroup': [ L[ 23 ], L[ 47 ], L[ 55 ] ]
|
|
1295
|
-
},
|
|
1296
|
-
'vertical-align': {
|
|
1297
|
-
'cssPropBits': 5,
|
|
1298
|
-
'cssLitGroup': [ L[ 10 ], L[ 24 ], L[ 47 ] ]
|
|
1299
|
-
},
|
|
1300
|
-
'visibility': {
|
|
1301
|
-
'cssPropBits': 32,
|
|
1302
|
-
'cssLitGroup': [ L[ 44 ], L[ 46 ], L[ 47 ], L[ 63 ] ]
|
|
1303
|
-
},
|
|
1304
|
-
'voice-family': {
|
|
1305
|
-
'cssExtra': c[ 0 ],
|
|
1306
|
-
'cssPropBits': 8,
|
|
1307
|
-
'cssLitGroup': [ L[ 22 ], L[ 35 ], L[ 47 ] ]
|
|
1308
|
-
},
|
|
1309
|
-
'volume': {
|
|
1310
|
-
'cssPropBits': 1,
|
|
1311
|
-
'cssLitGroup': [ L[ 16 ], L[ 47 ], L[ 52 ] ]
|
|
1312
|
-
},
|
|
1313
|
-
'white-space': {
|
|
1314
|
-
'cssPropBits': 0,
|
|
1315
|
-
'cssLitGroup': [ L[ 8 ], L[ 47 ], L[ 55 ] ]
|
|
1316
|
-
},
|
|
1317
|
-
'width': {
|
|
1318
|
-
'cssPropBits': 33,
|
|
1319
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
1320
|
-
},
|
|
1321
|
-
'word-spacing': {
|
|
1322
|
-
'cssPropBits': 5,
|
|
1323
|
-
'cssLitGroup': [ L[ 47 ], L[ 55 ] ]
|
|
1324
|
-
},
|
|
1325
|
-
'word-wrap': {
|
|
1326
|
-
'cssPropBits': 0,
|
|
1327
|
-
'cssLitGroup': [ L[ 41 ], L[ 55 ] ]
|
|
1328
|
-
},
|
|
1329
|
-
'z-index': {
|
|
1330
|
-
'cssPropBits': 69,
|
|
1331
|
-
'cssLitGroup': [ L[ 38 ], L[ 47 ] ]
|
|
1332
|
-
},
|
|
1333
|
-
'zoom': {
|
|
1334
|
-
'cssPropBits': 1,
|
|
1335
|
-
'cssLitGroup': [ L[ 55 ] ]
|
|
1336
|
-
}
|
|
1337
|
-
};
|
|
1338
|
-
})();
|
|
1339
|
-
if (typeof window !== 'undefined') {
|
|
1340
|
-
window['cssSchema'] = cssSchema;
|
|
1341
|
-
}
|
|
1342
|
-
// Copyright (C) 2011 Google Inc.
|
|
1343
|
-
//
|
|
1344
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
1345
|
-
// you may not use this file except in compliance with the License.
|
|
1346
|
-
// You may obtain a copy of the License at
|
|
1347
|
-
//
|
|
1348
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
1349
|
-
//
|
|
1350
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
1351
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
1352
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1353
|
-
// See the License for the specific language governing permissions and
|
|
1354
|
-
// limitations under the License.
|
|
1355
|
-
|
|
1356
|
-
/**
|
|
1357
|
-
* A lexical scannar for CSS3 as defined at http://www.w3.org/TR/css3-syntax .
|
|
1358
|
-
*
|
|
1359
|
-
* @author Mike Samuel <mikesamuel@gmail.com>
|
|
1360
|
-
* \@provides lexCss, decodeCss
|
|
1361
|
-
* \@overrides window
|
|
1362
|
-
*/
|
|
1363
|
-
|
|
1364
|
-
var lexCss;
|
|
1365
|
-
var decodeCss;
|
|
1366
|
-
|
|
1367
|
-
(function () {
|
|
1368
|
-
|
|
1369
|
-
/**
|
|
1370
|
-
* Decodes an escape sequence as specified in CSS3 section 4.1.
|
|
1371
|
-
* http://www.w3.org/TR/css3-syntax/#characters
|
|
1372
|
-
* @private
|
|
1373
|
-
*/
|
|
1374
|
-
function decodeCssEscape(s) {
|
|
1375
|
-
var i = parseInt(s.substring(1), 16);
|
|
1376
|
-
// If parseInt didn't find a hex diigt, it returns NaN so return the
|
|
1377
|
-
// escaped character.
|
|
1378
|
-
// Otherwise, parseInt will stop at the first non-hex digit so there's no
|
|
1379
|
-
// need to worry about trailing whitespace.
|
|
1380
|
-
if (i > 0xffff) {
|
|
1381
|
-
// A supplemental codepoint.
|
|
1382
|
-
return i -= 0x10000,
|
|
1383
|
-
String.fromCharCode(
|
|
1384
|
-
0xd800 + (i >> 10),
|
|
1385
|
-
0xdc00 + (i & 0x3FF));
|
|
1386
|
-
} else if (i == i) {
|
|
1387
|
-
return String.fromCharCode(i);
|
|
1388
|
-
} else if (s[1] < ' ') {
|
|
1389
|
-
// "a backslash followed by a newline is ignored".
|
|
1390
|
-
return '';
|
|
1391
|
-
} else {
|
|
1392
|
-
return s[1];
|
|
1393
|
-
}
|
|
1394
|
-
}
|
|
1395
|
-
|
|
1396
|
-
/**
|
|
1397
|
-
* Returns an equivalent CSS string literal given plain text: foo -> "foo".
|
|
1398
|
-
* @private
|
|
1399
|
-
*/
|
|
1400
|
-
function escapeCssString(s, replacer) {
|
|
1401
|
-
return '"' + s.replace(/[\u0000-\u001f\\\"<>]/g, replacer) + '"';
|
|
1402
|
-
}
|
|
1403
|
-
|
|
1404
|
-
/**
|
|
1405
|
-
* Maps chars to CSS escaped equivalents: "\n" -> "\\a ".
|
|
1406
|
-
* @private
|
|
1407
|
-
*/
|
|
1408
|
-
function escapeCssStrChar(ch) {
|
|
1409
|
-
return cssStrChars[ch]
|
|
1410
|
-
|| (cssStrChars[ch] = '\\' + ch.charCodeAt(0).toString(16) + ' ');
|
|
1411
|
-
}
|
|
1412
|
-
|
|
1413
|
-
/**
|
|
1414
|
-
* Maps chars to URI escaped equivalents: "\n" -> "%0a".
|
|
1415
|
-
* @private
|
|
1416
|
-
*/
|
|
1417
|
-
function escapeCssUrlChar(ch) {
|
|
1418
|
-
return cssUrlChars[ch]
|
|
1419
|
-
|| (cssUrlChars[ch] = (ch < '\x10' ? '%0' : '%')
|
|
1420
|
-
+ ch.charCodeAt(0).toString(16));
|
|
1421
|
-
}
|
|
1422
|
-
|
|
1423
|
-
/**
|
|
1424
|
-
* Mapping of CSS special characters to escaped equivalents.
|
|
1425
|
-
* @private
|
|
1426
|
-
*/
|
|
1427
|
-
var cssStrChars = {
|
|
1428
|
-
'\\': '\\\\'
|
|
1429
|
-
};
|
|
1430
|
-
|
|
1431
|
-
/**
|
|
1432
|
-
* Mapping of CSS special characters to URL-escaped equivalents.
|
|
1433
|
-
* @private
|
|
1434
|
-
*/
|
|
1435
|
-
var cssUrlChars = {
|
|
1436
|
-
'\\': '%5c'
|
|
1437
|
-
};
|
|
1438
|
-
|
|
1439
|
-
// The comments below are copied from the CSS3 module syntax at
|
|
1440
|
-
// http://www.w3.org/TR/css3-syntax .
|
|
1441
|
-
// These string constants minify out when this is run-through closure
|
|
1442
|
-
// compiler.
|
|
1443
|
-
// Rules that have been adapted have comments prefixed with "Diff:", and
|
|
1444
|
-
// where rules have been combined to avoid back-tracking in the regex engine
|
|
1445
|
-
// or to work around limitations, there is a comment prefixed with
|
|
1446
|
-
// "NewRule:".
|
|
1447
|
-
|
|
1448
|
-
// In the below, we assume CRLF and CR have been normalize to CR.
|
|
1449
|
-
|
|
1450
|
-
// wc ::= #x9 | #xA | #xC | #xD | #x20
|
|
1451
|
-
var WC = '[\\t\\n\\f ]';
|
|
1452
|
-
// w ::= wc*
|
|
1453
|
-
var W = WC + '*';
|
|
1454
|
-
// nl ::= #xA | #xD #xA | #xD | #xC
|
|
1455
|
-
var NL = '[\\n\\f]';
|
|
1456
|
-
// nonascii ::= [#x80-#xD7FF#xE000-#xFFFD#x10000-#x10FFFF]
|
|
1457
|
-
// NewRule: Supplemental codepoints are represented as surrogate pairs in JS.
|
|
1458
|
-
var SURROGATE_PAIR = '[\\ud800-\\udbff][\\udc00-\\udfff]';
|
|
1459
|
-
var NONASCII = '[\\u0080-\\ud7ff\\ue000-\\ufffd]|' + SURROGATE_PAIR;
|
|
1460
|
-
// unicode ::= '\' [0-9a-fA-F]{1,6} wc?
|
|
1461
|
-
// NewRule: No point in having ESCAPE do (\\x|\\y)
|
|
1462
|
-
var UNICODE_TAIL = '[0-9a-fA-F]{1,6}' + WC + '?';
|
|
1463
|
-
// escape ::= unicode
|
|
1464
|
-
// | '\' [#x20-#x7E#x80-#xD7FF#xE000-#xFFFD#x10000-#x10FFFF]
|
|
1465
|
-
// NewRule: Below we use escape tail to efficiently match an escape or a
|
|
1466
|
-
// line continuation so we can decode string content.
|
|
1467
|
-
var ESCAPE_TAIL = '(?:' + UNICODE_TAIL
|
|
1468
|
-
+ '|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|'
|
|
1469
|
-
+ SURROGATE_PAIR + ')';
|
|
1470
|
-
var ESCAPE = '\\\\' + ESCAPE_TAIL;
|
|
1471
|
-
// urlchar ::= [#x9#x21#x23-#x26#x28-#x7E] | nonascii | escape
|
|
1472
|
-
var URLCHAR = '(?:[\\t\\x21\\x23-\\x26\\x28-\\x5b\\x5d-\\x7e]|'
|
|
1473
|
-
+ NONASCII + '|' + ESCAPE + ')';
|
|
1474
|
-
// stringchar ::= urlchar | #x20 | '\' nl
|
|
1475
|
-
// We ignore mismatched surrogate pairs inside strings, so stringchar
|
|
1476
|
-
// simplifies to a non-(quote|newline|backslash) or backslash any.
|
|
1477
|
-
// Since we normalize CRLF to a single code-unit, there is no special
|
|
1478
|
-
// handling needed for '\\' + CRLF.
|
|
1479
|
-
var STRINGCHAR = '[^\'"\\n\\f\\\\]|\\\\[\\s\\S]';
|
|
1480
|
-
// string ::= '"' (stringchar | "'")* '"' | "'" (stringchar | '"')* "'"
|
|
1481
|
-
var STRING = '"(?:\'|' + STRINGCHAR + ')*"'
|
|
1482
|
-
+ '|\'(?:\"|' + STRINGCHAR + ')*\'';
|
|
1483
|
-
// num ::= [0-9]+ | [0-9]* '.' [0-9]+
|
|
1484
|
-
// Diff: We attach signs to num tokens.
|
|
1485
|
-
var NUM = '[-+]?(?:[0-9]+(?:[.][0-9]+)?|[.][0-9]+)';
|
|
1486
|
-
// nmstart ::= [a-zA-Z] | '_' | nonascii | escape
|
|
1487
|
-
var NMSTART = '(?:[a-zA-Z_]|' + NONASCII + '|' + ESCAPE + ')';
|
|
1488
|
-
// nmchar ::= [a-zA-Z0-9] | '-' | '_' | nonascii | escape
|
|
1489
|
-
var NMCHAR = '(?:[a-zA-Z0-9_-]|' + NONASCII + '|' + ESCAPE + ')';
|
|
1490
|
-
// ident ::= '-'? nmstart nmchar*
|
|
1491
|
-
var IDENT = '-?' + NMSTART + NMCHAR + '*';
|
|
1492
|
-
|
|
1493
|
-
// NewRule: union of IDENT, ATKEYWORD, HASH, but excluding #[0-9].
|
|
1494
|
-
var WORD_TERM = '(?:@?-?' + NMSTART + '|#)' + NMCHAR + '*';
|
|
1495
|
-
var NUMERIC_VALUE = NUM + '(?:%|' + IDENT + ')?';
|
|
1496
|
-
// URI ::= "url(" w (string | urlchar* ) w ")"
|
|
1497
|
-
var URI = 'url[(]' + W + '(?:' + STRING + '|' + URLCHAR + '*)' + W + '[)]';
|
|
1498
|
-
// UNICODE-RANGE ::= "U+" [0-9A-F?]{1,6} ('-' [0-9A-F]{1,6})?
|
|
1499
|
-
var UNICODE_RANGE = 'U[+][0-9A-F?]{1,6}(?:-[0-9A-F]{1,6})?';
|
|
1500
|
-
// CDO ::= "<\!--"
|
|
1501
|
-
var CDO = '<\!--';
|
|
1502
|
-
// CDC ::= "-->"
|
|
1503
|
-
var CDC = '-->';
|
|
1504
|
-
// S ::= wc+
|
|
1505
|
-
var S = WC + '+';
|
|
1506
|
-
// COMMENT ::= "/*" [^*]* '*'+ ([^/] [^*]* '*'+)* "/"
|
|
1507
|
-
// Diff: recognizes // comments.
|
|
1508
|
-
var COMMENT = '/(?:[*][^*]*[*]+(?:[^/][^*]*[*]+)*/|/[^\\n\\f]*)';
|
|
1509
|
-
// FUNCTION ::= ident '('
|
|
1510
|
-
// Diff: We exclude url explicitly.
|
|
1511
|
-
// TODO: should we be tolerant of "fn ("?
|
|
1512
|
-
// ##### BEGIN: MODIFIED BY SAP
|
|
1513
|
-
// Avoid risk of 'catastrophic backtracking' when unicode escapes are used
|
|
1514
|
-
// var FUNCTION = '(?!url[(])' + IDENT + '[(]';
|
|
1515
|
-
var FUNCTION = '(?!url[(])(?=(' + IDENT + '))\\1[(]';
|
|
1516
|
-
// NewRule: one rule for all the comparison operators.
|
|
1517
|
-
var CMP_OPS = '[~|^$*]=';
|
|
1518
|
-
// CHAR ::= any character not matched by the above rules, except for " or '
|
|
1519
|
-
// Diff: We exclude / and \ since they are handled above to prevent
|
|
1520
|
-
// /* without a following */ from combining when comments are concatenated.
|
|
1521
|
-
var CHAR = '[^"\'\\\\/]|/(?![/*])';
|
|
1522
|
-
// BOM ::= #xFEFF
|
|
1523
|
-
var BOM = '\\uFEFF';
|
|
1524
|
-
|
|
1525
|
-
var CSS_TOKEN = new RegExp([
|
|
1526
|
-
BOM, UNICODE_RANGE, URI, FUNCTION, WORD_TERM, STRING, NUMERIC_VALUE,
|
|
1527
|
-
CDO, CDC, S, COMMENT, CMP_OPS, CHAR].join("|"), 'gi');
|
|
1528
|
-
|
|
1529
|
-
/**
|
|
1530
|
-
* Decodes CSS escape sequences in a CSS string body.
|
|
1531
|
-
*/
|
|
1532
|
-
decodeCss = function (css) {
|
|
1533
|
-
return css.replace(
|
|
1534
|
-
new RegExp('\\\\(?:' + ESCAPE_TAIL + '|' + NL + ')', 'g'),
|
|
1535
|
-
decodeCssEscape);
|
|
1536
|
-
};
|
|
1537
|
-
|
|
1538
|
-
/**
|
|
1539
|
-
* Given CSS Text, returns an array of normalized tokens.
|
|
1540
|
-
* @param {string} cssText
|
|
1541
|
-
* @return {Array.<string>} tokens where all ignorable token sequences have
|
|
1542
|
-
* been reduced to a single {@code " "} and all strings and
|
|
1543
|
-
* {@code url(...)} tokens have been normalized to use double quotes as
|
|
1544
|
-
* delimiters and to not otherwise contain double quotes.
|
|
1545
|
-
*/
|
|
1546
|
-
lexCss = function (cssText) {
|
|
1547
|
-
cssText = '' + cssText;
|
|
1548
|
-
var tokens = cssText.replace(/\r\n?/g, '\n') // Normalize CRLF & CR to LF.
|
|
1549
|
-
.match(CSS_TOKEN) || [];
|
|
1550
|
-
var j = 0;
|
|
1551
|
-
var last = ' ';
|
|
1552
|
-
for (var i = 0, n = tokens.length; i < n; ++i) {
|
|
1553
|
-
// Normalize all escape sequences. We will have to re-escape some
|
|
1554
|
-
// codepoints in string and url(...) bodies but we already know the
|
|
1555
|
-
// boundaries.
|
|
1556
|
-
// We might mistakenly treat a malformed identifier like \22\20\22 as a
|
|
1557
|
-
// string, but that will not break any valid stylesheets since we requote
|
|
1558
|
-
// and re-escape in string below.
|
|
1559
|
-
var tok = decodeCss(tokens[i]);
|
|
1560
|
-
var len = tok.length;
|
|
1561
|
-
var cc = tok.charCodeAt(0);
|
|
1562
|
-
tok =
|
|
1563
|
-
// All strings should be double quoted, and the body should never
|
|
1564
|
-
// contain a double quote.
|
|
1565
|
-
(cc == '"'.charCodeAt(0) || cc == '\''.charCodeAt(0))
|
|
1566
|
-
? escapeCssString(tok.substring(1, len - 1), escapeCssStrChar)
|
|
1567
|
-
// A breaking ignorable token should is replaced with a single space.
|
|
1568
|
-
: (cc == '/'.charCodeAt(0) && len > 1 // Comment.
|
|
1569
|
-
|| tok == '\\' || tok == CDC || tok == CDO || tok == '\ufeff'
|
|
1570
|
-
// Characters in W.
|
|
1571
|
-
|| cc <= ' '.charCodeAt(0))
|
|
1572
|
-
? ' '
|
|
1573
|
-
// Make sure that all url(...)s are double quoted.
|
|
1574
|
-
: /url\(/i.test(tok)
|
|
1575
|
-
? 'url(' + escapeCssString(
|
|
1576
|
-
tok.replace(
|
|
1577
|
-
new RegExp('^url\\(' + W + '["\']?|["\']?' + W + '\\)$', 'gi'),
|
|
1578
|
-
''),
|
|
1579
|
-
escapeCssUrlChar)
|
|
1580
|
-
+ ')'
|
|
1581
|
-
// Escapes in identifier like tokens will have been normalized above.
|
|
1582
|
-
: tok;
|
|
1583
|
-
// Merge adjacent space tokens.
|
|
1584
|
-
if (last != tok || tok != ' ') {
|
|
1585
|
-
tokens[j++] = last = tok;
|
|
1586
|
-
}
|
|
1587
|
-
}
|
|
1588
|
-
tokens.length = j;
|
|
1589
|
-
return tokens;
|
|
1590
|
-
};
|
|
1591
|
-
})();
|
|
1592
|
-
|
|
1593
|
-
// Exports for closure compiler.
|
|
1594
|
-
if (typeof window !== 'undefined') {
|
|
1595
|
-
window['lexCss'] = lexCss;
|
|
1596
|
-
window['decodeCss'] = decodeCss;
|
|
1597
|
-
}
|
|
1598
|
-
// Copyright (C) 2011 Google Inc.
|
|
1599
|
-
//
|
|
1600
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
1601
|
-
// you may not use this file except in compliance with the License.
|
|
1602
|
-
// You may obtain a copy of the License at
|
|
1603
|
-
//
|
|
1604
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
1605
|
-
//
|
|
1606
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
1607
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
1608
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1609
|
-
// See the License for the specific language governing permissions and
|
|
1610
|
-
// limitations under the License.
|
|
1611
|
-
|
|
1612
|
-
/**
|
|
1613
|
-
* @fileoverview
|
|
1614
|
-
* JavaScript support for client-side CSS sanitization.
|
|
1615
|
-
* The CSS property schema API is defined in CssPropertyPatterns.java which
|
|
1616
|
-
* is used to generate css-defs.js.
|
|
1617
|
-
*
|
|
1618
|
-
* @author mikesamuel@gmail.com
|
|
1619
|
-
* \@requires CSS_PROP_BIT_ALLOWED_IN_LINK
|
|
1620
|
-
* \@requires CSS_PROP_BIT_HASH_VALUE
|
|
1621
|
-
* \@requires CSS_PROP_BIT_NEGATIVE_QUANTITY
|
|
1622
|
-
* \@requires CSS_PROP_BIT_QSTRING_CONTENT
|
|
1623
|
-
* \@requires CSS_PROP_BIT_QSTRING_URL
|
|
1624
|
-
* \@requires CSS_PROP_BIT_QUANTITY
|
|
1625
|
-
* \@requires CSS_PROP_BIT_Z_INDEX
|
|
1626
|
-
* \@requires cssSchema
|
|
1627
|
-
* \@requires decodeCss
|
|
1628
|
-
* \@requires html4
|
|
1629
|
-
* \@overrides window
|
|
1630
|
-
* \@requires parseCssStylesheet
|
|
1631
|
-
* \@provides sanitizeCssProperty
|
|
1632
|
-
* \@provides sanitizeCssSelectors
|
|
1633
|
-
* \@provides sanitizeStylesheet
|
|
1634
|
-
*/
|
|
1635
|
-
|
|
1636
|
-
/**
|
|
1637
|
-
* Given a series of normalized CSS tokens, applies a property schema, as
|
|
1638
|
-
* defined in CssPropertyPatterns.java, and sanitizes the tokens in place.
|
|
1639
|
-
* @param property a property name.
|
|
1640
|
-
* @param propertySchema a property of cssSchema as defined by
|
|
1641
|
-
* CssPropertyPatterns.java
|
|
1642
|
-
* @param tokens as parsed by lexCss. Modified in place.
|
|
1643
|
-
* @param opt_naiveUriRewriter a URI rewriter; an object with a "rewrite"
|
|
1644
|
-
* function that takes a URL and returns a safe URL.
|
|
1645
|
-
*/
|
|
1646
|
-
var sanitizeCssProperty = (function () {
|
|
1647
|
-
var NOEFFECT_URL = 'url("about:blank")';
|
|
1648
|
-
/**
|
|
1649
|
-
* The set of characters that need to be normalized inside url("...").
|
|
1650
|
-
* We normalize newlines because they are not allowed inside quoted strings,
|
|
1651
|
-
* normalize quote characters, angle-brackets, and asterisks because they
|
|
1652
|
-
* could be used to break out of the URL or introduce targets for CSS
|
|
1653
|
-
* error recovery. We normalize parentheses since they delimit unquoted
|
|
1654
|
-
* URLs and calls and could be a target for error recovery.
|
|
1655
|
-
*/
|
|
1656
|
-
var NORM_URL_REGEXP = /[\n\f\r\"\'()*<>]/g;
|
|
1657
|
-
/** The replacements for NORM_URL_REGEXP. */
|
|
1658
|
-
var NORM_URL_REPLACEMENTS = {
|
|
1659
|
-
'\n': '%0a',
|
|
1660
|
-
'\f': '%0c',
|
|
1661
|
-
'\r': '%0d',
|
|
1662
|
-
'"': '%22',
|
|
1663
|
-
'\'': '%27',
|
|
1664
|
-
'(': '%28',
|
|
1665
|
-
')': '%29',
|
|
1666
|
-
'*': '%2a',
|
|
1667
|
-
'<': '%3c',
|
|
1668
|
-
'>': '%3e'
|
|
1669
|
-
};
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
function normalizeUrl(s) {
|
|
1673
|
-
if ('string' === typeof s) {
|
|
1674
|
-
return 'url("' + s.replace(NORM_URL_REGEXP, normalizeUrlChar) + '")';
|
|
1675
|
-
} else {
|
|
1676
|
-
return NOEFFECT_URL;
|
|
1677
|
-
}
|
|
1678
|
-
}
|
|
1679
|
-
function normalizeUrlChar(ch) {
|
|
1680
|
-
return NORM_URL_REPLACEMENTS[ch];
|
|
1681
|
-
}
|
|
1682
|
-
|
|
1683
|
-
// From RFC3986
|
|
1684
|
-
var URI_SCHEME_RE = new RegExp(
|
|
1685
|
-
'^' +
|
|
1686
|
-
'(?:' +
|
|
1687
|
-
'([^:\/?# ]+)' + // scheme
|
|
1688
|
-
':)?'
|
|
1689
|
-
);
|
|
1690
|
-
|
|
1691
|
-
var ALLOWED_URI_SCHEMES = /^(?:https?|mailto)$/i;
|
|
1692
|
-
|
|
1693
|
-
function safeUri(uri, prop, naiveUriRewriter) {
|
|
1694
|
-
if (!naiveUriRewriter) { return null; }
|
|
1695
|
-
var parsed = ('' + uri).match(URI_SCHEME_RE);
|
|
1696
|
-
if (parsed && (!parsed[1] || ALLOWED_URI_SCHEMES.test(parsed[1]))) {
|
|
1697
|
-
return naiveUriRewriter(uri, prop);
|
|
1698
|
-
} else {
|
|
1699
|
-
return null;
|
|
1700
|
-
}
|
|
1701
|
-
}
|
|
1702
|
-
|
|
1703
|
-
function unionArrays(arrs) {
|
|
1704
|
-
var map = {};
|
|
1705
|
-
for (var i = arrs.length; --i >= 0;) {
|
|
1706
|
-
var arr = arrs[i];
|
|
1707
|
-
for (var j = arr.length; --j >= 0;) {
|
|
1708
|
-
map[arr[j]] = ALLOWED_LITERAL;
|
|
1709
|
-
}
|
|
1710
|
-
}
|
|
1711
|
-
return map;
|
|
1712
|
-
}
|
|
1713
|
-
|
|
1714
|
-
/**
|
|
1715
|
-
* Normalize tokens within a function call they can match against
|
|
1716
|
-
* cssSchema[propName].cssExtra.
|
|
1717
|
-
* @return the exclusive end in tokens of the function call.
|
|
1718
|
-
*/
|
|
1719
|
-
function normalizeFunctionCall(tokens, start) {
|
|
1720
|
-
var parenDepth = 1, end = start + 1, n = tokens.length;
|
|
1721
|
-
while (end < n && parenDepth) {
|
|
1722
|
-
// TODO: Can URLs appear in functions?
|
|
1723
|
-
var token = tokens[end++];
|
|
1724
|
-
parenDepth += (token === '(' ? 1 : token === ')' ? -1 : 0);
|
|
1725
|
-
}
|
|
1726
|
-
return end;
|
|
1727
|
-
}
|
|
1728
|
-
|
|
1729
|
-
// Used as map value to avoid hasOwnProperty checks.
|
|
1730
|
-
var ALLOWED_LITERAL = {};
|
|
1731
|
-
|
|
1732
|
-
return function (property, propertySchema, tokens, opt_naiveUriRewriter) {
|
|
1733
|
-
var propBits = propertySchema.cssPropBits;
|
|
1734
|
-
// Used to determine whether to treat quoted strings as URLs or
|
|
1735
|
-
// plain text content, and whether unrecognized keywords can be quoted
|
|
1736
|
-
// to treate ['Arial', 'Black'] equivalently to ['"Arial Black"'].
|
|
1737
|
-
var qstringBits = propBits & (
|
|
1738
|
-
CSS_PROP_BIT_QSTRING_CONTENT | CSS_PROP_BIT_QSTRING_URL);
|
|
1739
|
-
// TODO(mikesamuel): Figure out what to do with props like
|
|
1740
|
-
// content that admit both URLs and strings.
|
|
1741
|
-
|
|
1742
|
-
// Used to join unquoted keywords into a single quoted string.
|
|
1743
|
-
var lastQuoted = NaN;
|
|
1744
|
-
var i = 0, k = 0;
|
|
1745
|
-
for (;i < tokens.length; ++i) {
|
|
1746
|
-
// Has the effect of normalizing hex digits, keywords,
|
|
1747
|
-
// and function names.
|
|
1748
|
-
var token = tokens[i].toLowerCase();
|
|
1749
|
-
var cc = token.charCodeAt(0), cc1, cc2, isnum1, isnum2, end;
|
|
1750
|
-
var litGroup, litMap;
|
|
1751
|
-
token = (
|
|
1752
|
-
// Strip out spaces. Normally cssparser.js dumps these, but we
|
|
1753
|
-
// strip them out in case the content doesn't come via cssparser.js.
|
|
1754
|
-
(cc === ' '.charCodeAt(0))
|
|
1755
|
-
? ''
|
|
1756
|
-
: (cc === '"'.charCodeAt(0))
|
|
1757
|
-
? ( // Quoted string.
|
|
1758
|
-
(qstringBits === CSS_PROP_BIT_QSTRING_URL && opt_naiveUriRewriter)
|
|
1759
|
-
// Sanitize and convert to url("...") syntax.
|
|
1760
|
-
// Treat url content as case-sensitive.
|
|
1761
|
-
? (normalizeUrl(
|
|
1762
|
-
safeUri(
|
|
1763
|
-
decodeCss(tokens[i].substring(1, token.length - 1)),
|
|
1764
|
-
property,
|
|
1765
|
-
opt_naiveUriRewriter
|
|
1766
|
-
)
|
|
1767
|
-
))
|
|
1768
|
-
// Drop if plain text content strings not allowed.
|
|
1769
|
-
: (qstringBits === CSS_PROP_BIT_QSTRING_CONTENT) ? token : '')
|
|
1770
|
-
// Preserve hash color literals if allowed.
|
|
1771
|
-
: (cc === '#'.charCodeAt(0) && /^#(?:[0-9a-f]{3}){1,2}$/.test(token))
|
|
1772
|
-
? (propBits & CSS_PROP_BIT_HASH_VALUE ? token : '')
|
|
1773
|
-
// ##### BEGIN: MODIFIED BY SAP
|
|
1774
|
-
// : ('0'.charCodeAt(0) <= cc && cc <= '9'.charCodeAt(0))
|
|
1775
|
-
: ('0'.charCodeAt(0) <= cc && cc <= '9'.charCodeAt(0) && !propertySchema.cssLitNumeric)
|
|
1776
|
-
// ##### END: MODIFIED BY SAP
|
|
1777
|
-
// A number starting with a digit.
|
|
1778
|
-
? ((propBits & CSS_PROP_BIT_QUANTITY)
|
|
1779
|
-
? ((propBits & CSS_PROP_BIT_Z_INDEX)
|
|
1780
|
-
? (token.match(/^\d{1,7}$/) ? token : '')
|
|
1781
|
-
: token)
|
|
1782
|
-
: '')
|
|
1783
|
-
// Normalize quantities so they don't start with a '.' or '+' sign and
|
|
1784
|
-
// make sure they all have an integer component so can't be confused
|
|
1785
|
-
// with a dotted identifier.
|
|
1786
|
-
// This can't be done in the lexer since ".4" is a valid rule part.
|
|
1787
|
-
: (cc1 = token.charCodeAt(1),
|
|
1788
|
-
cc2 = token.charCodeAt(2),
|
|
1789
|
-
isnum1 = '0'.charCodeAt(0) <= cc1 && cc1 <= '9'.charCodeAt(0),
|
|
1790
|
-
isnum2 = '0'.charCodeAt(0) <= cc2 && cc2 <= '9'.charCodeAt(0),
|
|
1791
|
-
// +.5 -> 0.5 if allowed.
|
|
1792
|
-
(cc === '+'.charCodeAt(0)
|
|
1793
|
-
&& (isnum1 || (cc1 === '.'.charCodeAt(0) && isnum2))))
|
|
1794
|
-
? ((propBits & CSS_PROP_BIT_QUANTITY)
|
|
1795
|
-
? ((propBits & CSS_PROP_BIT_Z_INDEX)
|
|
1796
|
-
? (token.match(/^\+\d{1,7}$/) ? token : '')
|
|
1797
|
-
: ((isnum1 ? '' : '0') + token.substring(1)))
|
|
1798
|
-
: '')
|
|
1799
|
-
// -.5 -> -0.5 if allowed otherwise -> 0 if quantities allowed.
|
|
1800
|
-
: (cc === '-'.charCodeAt(0)
|
|
1801
|
-
&& (isnum1 || (cc1 === '.'.charCodeAt(0) && isnum2)))
|
|
1802
|
-
? ((propBits & CSS_PROP_BIT_NEGATIVE_QUANTITY)
|
|
1803
|
-
? ((propBits & CSS_PROP_BIT_Z_INDEX)
|
|
1804
|
-
? (token.match(/^\-\d{1,7}$/) ? token : '')
|
|
1805
|
-
: ((isnum1 ? '-' : '-0') + token.substring(1)))
|
|
1806
|
-
: ((propBits & CSS_PROP_BIT_QUANTITY) ? '0' : ''))
|
|
1807
|
-
// .5 -> 0.5 if allowed.
|
|
1808
|
-
: (cc === '.'.charCodeAt(0) && isnum1)
|
|
1809
|
-
? ((propBits & CSS_PROP_BIT_QUANTITY) ? '0' + token : '')
|
|
1810
|
-
// Handle url("...") by rewriting the body.
|
|
1811
|
-
: ('url(' === token.substring(0, 4))
|
|
1812
|
-
? ((opt_naiveUriRewriter && (qstringBits & CSS_PROP_BIT_QSTRING_URL))
|
|
1813
|
-
? normalizeUrl(
|
|
1814
|
-
safeUri(
|
|
1815
|
-
tokens[i].substring(5, token.length - 2),
|
|
1816
|
-
property,
|
|
1817
|
-
opt_naiveUriRewriter
|
|
1818
|
-
)
|
|
1819
|
-
)
|
|
1820
|
-
: '')
|
|
1821
|
-
// Handle func(...) and literal tokens
|
|
1822
|
-
// such as keywords and punctuation.
|
|
1823
|
-
: (
|
|
1824
|
-
// Step 1. Combine func(...) into something that can be compared
|
|
1825
|
-
// against propertySchema.cssExtra.
|
|
1826
|
-
(token.charAt(token.length-1) === '(')
|
|
1827
|
-
&& (end = normalizeFunctionCall(tokens, i),
|
|
1828
|
-
// When tokens is
|
|
1829
|
-
// ['x', ' ', 'rgb(', '255', ',', '0', ',', '0', ')', ' ', 'y']
|
|
1830
|
-
// and i is the index of 'rgb(' and end is the index of ')'
|
|
1831
|
-
// splices tokens to where i now is the index of the whole call:
|
|
1832
|
-
// ['x', ' ', 'rgb( 255 , 0 , 0 )', ' ', 'y']
|
|
1833
|
-
tokens.splice(i, end - i,
|
|
1834
|
-
token = tokens.slice(i, end).join(' '))),
|
|
1835
|
-
litGroup = propertySchema.cssLitGroup,
|
|
1836
|
-
litMap = (
|
|
1837
|
-
litGroup
|
|
1838
|
-
? (propertySchema.cssLitMap
|
|
1839
|
-
// Lazily compute the union from litGroup.
|
|
1840
|
-
|| (propertySchema.cssLitMap = unionArrays(litGroup)))
|
|
1841
|
-
: ALLOWED_LITERAL), // A convenient empty object.
|
|
1842
|
-
(litMap[token] === ALLOWED_LITERAL
|
|
1843
|
-
|| propertySchema.cssExtra && propertySchema.cssExtra.test(token)))
|
|
1844
|
-
// Token is in the literal map or matches extra.
|
|
1845
|
-
? token
|
|
1846
|
-
: (/^\w+$/.test(token)
|
|
1847
|
-
&& (qstringBits === CSS_PROP_BIT_QSTRING_CONTENT))
|
|
1848
|
-
// Quote unrecognized keywords so font names like
|
|
1849
|
-
// Arial Bold
|
|
1850
|
-
// ->
|
|
1851
|
-
// "Arial Bold"
|
|
1852
|
-
? (lastQuoted+1 === k
|
|
1853
|
-
// If the last token was also a keyword that was quoted, then
|
|
1854
|
-
// combine this token into that.
|
|
1855
|
-
? (tokens[lastQuoted] = tokens[lastQuoted]
|
|
1856
|
-
.substring(0, tokens[lastQuoted].length-1) + ' ' + token + '"',
|
|
1857
|
-
token = '')
|
|
1858
|
-
: (lastQuoted = k, '"' + token + '"'))
|
|
1859
|
-
// Disallowed.
|
|
1860
|
-
: '');
|
|
1861
|
-
if (token) {
|
|
1862
|
-
tokens[k++] = token;
|
|
1863
|
-
}
|
|
1864
|
-
}
|
|
1865
|
-
// For single URL properties, if the URL failed to pass the sanitizer,
|
|
1866
|
-
// then just drop it.
|
|
1867
|
-
if (k === 1 && tokens[0] === NOEFFECT_URL) { k = 0; }
|
|
1868
|
-
tokens.length = k;
|
|
1869
|
-
};
|
|
1870
|
-
})();
|
|
1871
|
-
|
|
1872
|
-
/**
|
|
1873
|
-
* Given a series of tokens, returns two lists of sanitized selectors.
|
|
1874
|
-
* @param {Array.<string>} selectors In the form produces by csslexer.js.
|
|
1875
|
-
* @param {string} suffix a suffix that is added to all IDs and which is
|
|
1876
|
-
* used as a CLASS names so that the returned selectors will only match
|
|
1877
|
-
* nodes under one with suffix as a class name.
|
|
1878
|
-
* If suffix is {@code "sfx"}, the selector
|
|
1879
|
-
* {@code ["a", "#foo", " ", "b", ".bar"]} will be namespaced to
|
|
1880
|
-
* {@code [".sfx", " ", "a", "#foo-sfx", " ", "b", ".bar"]}.
|
|
1881
|
-
* @return {Array.<Array.<string>>} an array of length 2 where the zeroeth
|
|
1882
|
-
* element contains history-insensitive selectors and the first element
|
|
1883
|
-
* contains history-sensitive selectors.
|
|
1884
|
-
*/
|
|
1885
|
-
function sanitizeCssSelectors(selectors, suffix) {
|
|
1886
|
-
// Produce two distinct lists of selectors to sequester selectors that are
|
|
1887
|
-
// history sensitive (:visited), so that we can disallow properties in the
|
|
1888
|
-
// property groups for the history sensitive ones.
|
|
1889
|
-
var historySensitiveSelectors = [];
|
|
1890
|
-
var historyInsensitiveSelectors = [];
|
|
1891
|
-
|
|
1892
|
-
// Remove any spaces that are not operators.
|
|
1893
|
-
var k = 0, i;
|
|
1894
|
-
for (i = 0; i < selectors.length; ++i) {
|
|
1895
|
-
if (!(selectors[i] == ' '
|
|
1896
|
-
&& (selectors[i-1] == '>' || selectors[i+1] == '>'))) {
|
|
1897
|
-
selectors[k++] = selectors[i];
|
|
1898
|
-
}
|
|
1899
|
-
}
|
|
1900
|
-
selectors.length = k;
|
|
1901
|
-
|
|
1902
|
-
// Split around commas. If there is an error in one of the comma separated
|
|
1903
|
-
// bits, we throw the whole away, but the failure of one selector does not
|
|
1904
|
-
// affect others.
|
|
1905
|
-
var n = selectors.length, start = 0;
|
|
1906
|
-
for (i = 0; i < n; ++i) {
|
|
1907
|
-
if (selectors[i] == ',') {
|
|
1908
|
-
processSelector(start, i);
|
|
1909
|
-
start = i+1;
|
|
1910
|
-
}
|
|
1911
|
-
}
|
|
1912
|
-
processSelector(start, n);
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
function processSelector(start, end) {
|
|
1916
|
-
var historySensitive = false;
|
|
1917
|
-
|
|
1918
|
-
// Space around commas is not an operator.
|
|
1919
|
-
if (selectors[start] === ' ') { ++start; }
|
|
1920
|
-
if (end-1 !== start && selectors[end] === ' ') { --end; }
|
|
1921
|
-
|
|
1922
|
-
// Split the selector into element selectors, content around
|
|
1923
|
-
// space (ancestor operator) and '>' (descendant operator).
|
|
1924
|
-
var out = [];
|
|
1925
|
-
var lastOperator = start;
|
|
1926
|
-
var elSelector = '';
|
|
1927
|
-
for (var i = start; i < end; ++i) {
|
|
1928
|
-
var tok = selectors[i];
|
|
1929
|
-
var isChild = (tok === '>');
|
|
1930
|
-
if (isChild || tok === ' ') {
|
|
1931
|
-
// We've found the end of a single link in the selector chain.
|
|
1932
|
-
// We disallow absolute positions relative to html.
|
|
1933
|
-
elSelector = processElementSelector(lastOperator, i, false);
|
|
1934
|
-
if (!elSelector || (isChild && /^html/i.test(elSelector))) {
|
|
1935
|
-
return;
|
|
1936
|
-
}
|
|
1937
|
-
lastOperator = i+1;
|
|
1938
|
-
out.push(elSelector, isChild ? ' > ' : ' ');
|
|
1939
|
-
}
|
|
1940
|
-
}
|
|
1941
|
-
elSelector = processElementSelector(lastOperator, end, true);
|
|
1942
|
-
if (!elSelector) { return; }
|
|
1943
|
-
out.push(elSelector);
|
|
1944
|
-
|
|
1945
|
-
function processElementSelector(start, end, last) {
|
|
1946
|
-
|
|
1947
|
-
// Split the element selector into three parts.
|
|
1948
|
-
// DIV.foo#bar:hover
|
|
1949
|
-
// ^ ^
|
|
1950
|
-
// el classes pseudo
|
|
1951
|
-
var element, classId, pseudoSelector, tok, elType;
|
|
1952
|
-
element = '';
|
|
1953
|
-
if (start < end) {
|
|
1954
|
-
tok = selectors[start].toLowerCase();
|
|
1955
|
-
if (tok === '*'
|
|
1956
|
-
|| (tok === 'body' && start+1 !== end && !last)
|
|
1957
|
-
|| ('number' === typeof (elType = html4.ELEMENTS[tok])
|
|
1958
|
-
&& !(elType & html4.eflags.UNSAFE))) {
|
|
1959
|
-
++start;
|
|
1960
|
-
element = tok;
|
|
1961
|
-
}
|
|
1962
|
-
}
|
|
1963
|
-
classId = '';
|
|
1964
|
-
while (start < end) {
|
|
1965
|
-
tok = selectors[start];
|
|
1966
|
-
if (tok.charAt(0) === '#') {
|
|
1967
|
-
if (/^#_|__$|[^#0-9A-Za-z:_\-]/.test(tok)) { return null; }
|
|
1968
|
-
// Rewrite ID elements to include the suffix.
|
|
1969
|
-
classId += tok + '-' + suffix;
|
|
1970
|
-
} else if (tok === '.') {
|
|
1971
|
-
if (++start < end
|
|
1972
|
-
&& /^[0-9A-Za-z:_\-]+$/.test(tok = selectors[start])
|
|
1973
|
-
&& !/^_|__$/.test(tok)) {
|
|
1974
|
-
classId += '.' + tok;
|
|
1975
|
-
} else {
|
|
1976
|
-
return null;
|
|
1977
|
-
}
|
|
1978
|
-
} else {
|
|
1979
|
-
break;
|
|
1980
|
-
}
|
|
1981
|
-
++start;
|
|
1982
|
-
}
|
|
1983
|
-
pseudoSelector = '';
|
|
1984
|
-
if (start < end && selectors[start] === ':') {
|
|
1985
|
-
tok = selectors[++start];
|
|
1986
|
-
if (tok === 'visited' || tok === 'link') {
|
|
1987
|
-
if (!/^[a*]?$/.test(element)) {
|
|
1988
|
-
return null;
|
|
1989
|
-
}
|
|
1990
|
-
historySensitive = true;
|
|
1991
|
-
pseudoSelector = ':' + tok;
|
|
1992
|
-
element = 'a';
|
|
1993
|
-
++start;
|
|
1994
|
-
}
|
|
1995
|
-
}
|
|
1996
|
-
if (start === end) {
|
|
1997
|
-
return element + classId + pseudoSelector;
|
|
1998
|
-
}
|
|
1999
|
-
return null;
|
|
2000
|
-
}
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
var safeSelector = out.join('');
|
|
2004
|
-
if (/^body\b/.test(safeSelector)) {
|
|
2005
|
-
// Substitute the class that is attached to pseudo body elements for
|
|
2006
|
-
// the body element.
|
|
2007
|
-
safeSelector = '.vdoc-body___.' + suffix + safeSelector.substring(4);
|
|
2008
|
-
} else {
|
|
2009
|
-
// Namespace the selector so that it only matches under
|
|
2010
|
-
// a node with suffix in its CLASS attribute.
|
|
2011
|
-
safeSelector = '.' + suffix + ' ' + safeSelector;
|
|
2012
|
-
}
|
|
2013
|
-
|
|
2014
|
-
(historySensitive
|
|
2015
|
-
? historySensitiveSelectors
|
|
2016
|
-
: historyInsensitiveSelectors).push(safeSelector);
|
|
2017
|
-
}
|
|
2018
|
-
|
|
2019
|
-
return [historyInsensitiveSelectors, historySensitiveSelectors];
|
|
2020
|
-
}
|
|
2021
|
-
|
|
2022
|
-
var sanitizeStylesheet = (function () {
|
|
2023
|
-
var allowed = {};
|
|
2024
|
-
var cssMediaTypeWhitelist = {
|
|
2025
|
-
'braille': allowed,
|
|
2026
|
-
'embossed': allowed,
|
|
2027
|
-
'handheld': allowed,
|
|
2028
|
-
'print': allowed,
|
|
2029
|
-
'projection': allowed,
|
|
2030
|
-
'screen': allowed,
|
|
2031
|
-
'speech': allowed,
|
|
2032
|
-
'tty': allowed,
|
|
2033
|
-
'tv': allowed
|
|
2034
|
-
};
|
|
2035
|
-
|
|
2036
|
-
/**
|
|
2037
|
-
* Given a series of sanitized tokens, removes any properties that would
|
|
2038
|
-
* leak user history if allowed to style links differently depending on
|
|
2039
|
-
* whether the linked URL is in the user's browser history.
|
|
2040
|
-
* @param {Array.<string>} blockOfProperties
|
|
2041
|
-
*/
|
|
2042
|
-
function sanitizeHistorySensitive(blockOfProperties) {
|
|
2043
|
-
var elide = false;
|
|
2044
|
-
for (var i = 0, n = blockOfProperties.length; i < n-1; ++i) {
|
|
2045
|
-
var token = blockOfProperties[i];
|
|
2046
|
-
if (':' === blockOfProperties[i+1]) {
|
|
2047
|
-
elide = !(cssSchema[token].cssPropBits & CSS_PROP_BIT_ALLOWED_IN_LINK);
|
|
2048
|
-
}
|
|
2049
|
-
if (elide) { blockOfProperties[i] = ''; }
|
|
2050
|
-
if (';' === token) { elide = false; }
|
|
2051
|
-
}
|
|
2052
|
-
return blockOfProperties.join('');
|
|
2053
|
-
}
|
|
2054
|
-
|
|
2055
|
-
/**
|
|
2056
|
-
* @param {string} cssText a string containing a CSS stylesheet.
|
|
2057
|
-
* @param {string} suffix a suffix that is added to all IDs and which is
|
|
2058
|
-
* used as a CLASS names so that the returned selectors will only match
|
|
2059
|
-
* nodes under one with suffix as a class name.
|
|
2060
|
-
* If suffix is {@code "sfx"}, the selector
|
|
2061
|
-
* {@code ["a", "#foo", " ", "b", ".bar"]} will be namespaced to
|
|
2062
|
-
* {@code [".sfx", " ", "a", "#foo-sfx", " ", "b", ".bar"]}.
|
|
2063
|
-
* @param {function(string, string)} opt_naiveUriRewriter maps URLs of media
|
|
2064
|
-
* (images, sounds) that appear as CSS property values to sanitized
|
|
2065
|
-
* URLs or null if the URL should not be allowed as an external media
|
|
2066
|
-
* file in sanitized CSS.
|
|
2067
|
-
*/
|
|
2068
|
-
return function /*sanitizeStylesheet*/(
|
|
2069
|
-
cssText, suffix, opt_naiveUriRewriter) {
|
|
2070
|
-
var safeCss = void 0;
|
|
2071
|
-
// A stack describing the { ... } regions.
|
|
2072
|
-
// Null elements indicate blocks that should not be emitted.
|
|
2073
|
-
var blockStack = [];
|
|
2074
|
-
// True when the content of the current block should be left off safeCss.
|
|
2075
|
-
var elide = false;
|
|
2076
|
-
parseCssStylesheet(
|
|
2077
|
-
cssText,
|
|
2078
|
-
{
|
|
2079
|
-
startStylesheet: function () {
|
|
2080
|
-
safeCss = [];
|
|
2081
|
-
},
|
|
2082
|
-
endStylesheet: function () {
|
|
2083
|
-
},
|
|
2084
|
-
startAtrule: function (atIdent, headerArray) {
|
|
2085
|
-
if (elide) {
|
|
2086
|
-
atIdent = null;
|
|
2087
|
-
} else if (atIdent === '@media') {
|
|
2088
|
-
headerArray = headerArray.filter(
|
|
2089
|
-
function (mediaType) {
|
|
2090
|
-
return cssMediaTypeWhitelist[mediaType] == allowed;
|
|
2091
|
-
});
|
|
2092
|
-
if (headerArray.length) {
|
|
2093
|
-
safeCss.push(atIdent, headerArray.join(','), '{');
|
|
2094
|
-
} else {
|
|
2095
|
-
atIdent = null;
|
|
2096
|
-
}
|
|
2097
|
-
} else {
|
|
2098
|
-
if (atIdent === '@import') {
|
|
2099
|
-
// TODO: Use a logger instead.
|
|
2100
|
-
if (window.console) {
|
|
2101
|
-
window.console.log(
|
|
2102
|
-
'@import ' + headerArray.join(' ') + ' elided');
|
|
2103
|
-
}
|
|
2104
|
-
}
|
|
2105
|
-
atIdent = null; // Elide the block.
|
|
2106
|
-
}
|
|
2107
|
-
elide = !atIdent;
|
|
2108
|
-
blockStack.push(atIdent);
|
|
2109
|
-
},
|
|
2110
|
-
endAtrule: function () {
|
|
2111
|
-
blockStack.pop();
|
|
2112
|
-
if (!elide) {
|
|
2113
|
-
safeCss.push(';');
|
|
2114
|
-
}
|
|
2115
|
-
checkElide();
|
|
2116
|
-
},
|
|
2117
|
-
startBlock: function () {
|
|
2118
|
-
// There are no bare blocks in CSS, so we do not change the
|
|
2119
|
-
// block stack here, but instead in the events that bracket
|
|
2120
|
-
// blocks.
|
|
2121
|
-
if (!elide) {
|
|
2122
|
-
safeCss.push('{');
|
|
2123
|
-
}
|
|
2124
|
-
},
|
|
2125
|
-
endBlock: function () {
|
|
2126
|
-
if (!elide) {
|
|
2127
|
-
safeCss.push('}');
|
|
2128
|
-
elide = true; // skip any semicolon from endAtRule.
|
|
2129
|
-
}
|
|
2130
|
-
},
|
|
2131
|
-
startRuleset: function (selectorArray) {
|
|
2132
|
-
var historySensitiveSelectors = void 0;
|
|
2133
|
-
var removeHistoryInsensitiveSelectors = false;
|
|
2134
|
-
if (!elide) {
|
|
2135
|
-
var selectors = sanitizeCssSelectors(selectorArray, suffix);
|
|
2136
|
-
var historyInsensitiveSelectors = selectors[0];
|
|
2137
|
-
historySensitiveSelectors = selectors[1];
|
|
2138
|
-
if (!historyInsensitiveSelectors.length
|
|
2139
|
-
&& !historySensitiveSelectors.length) {
|
|
2140
|
-
elide = true;
|
|
2141
|
-
} else {
|
|
2142
|
-
var selector = historyInsensitiveSelectors.join(', ');
|
|
2143
|
-
if (!selector) {
|
|
2144
|
-
// If we have only history sensitive selectors,
|
|
2145
|
-
// use an impossible rule so that we can capture the content
|
|
2146
|
-
// for later processing by
|
|
2147
|
-
// history insenstive content for use below.
|
|
2148
|
-
selector = 'head > html';
|
|
2149
|
-
removeHistoryInsensitiveSelectors = true;
|
|
2150
|
-
}
|
|
2151
|
-
safeCss.push(selector, '{');
|
|
2152
|
-
}
|
|
2153
|
-
}
|
|
2154
|
-
blockStack.push(
|
|
2155
|
-
elide
|
|
2156
|
-
? null
|
|
2157
|
-
// Sometimes a single list of selectors is split in two,
|
|
2158
|
-
// div, a:visited
|
|
2159
|
-
// because we want to allow some properties for DIV that
|
|
2160
|
-
// we don't want to allow for A:VISITED to avoid leaking
|
|
2161
|
-
// user history.
|
|
2162
|
-
// Store the history sensitive selectors and the position
|
|
2163
|
-
// where the block starts so we can later create a copy
|
|
2164
|
-
// of the permissive tokens, and filter it to handle the
|
|
2165
|
-
// history sensitive case.
|
|
2166
|
-
: {
|
|
2167
|
-
historySensitiveSelectors: historySensitiveSelectors,
|
|
2168
|
-
endOfSelectors: safeCss.length - 1, // 1 is open curly
|
|
2169
|
-
removeHistoryInsensitiveSelectors:
|
|
2170
|
-
removeHistoryInsensitiveSelectors
|
|
2171
|
-
});
|
|
2172
|
-
},
|
|
2173
|
-
endRuleset: function () {
|
|
2174
|
-
var rules = blockStack.pop();
|
|
2175
|
-
var propertiesEnd = safeCss.length;
|
|
2176
|
-
if (!elide) {
|
|
2177
|
-
safeCss.push('}');
|
|
2178
|
-
if (rules) {
|
|
2179
|
-
var extraSelectors = rules.historySensitiveSelectors;
|
|
2180
|
-
if (extraSelectors.length) {
|
|
2181
|
-
var propertyGroupTokens = safeCss.slice(rules.endOfSelectors);
|
|
2182
|
-
safeCss.push(extraSelectors.join(', '),
|
|
2183
|
-
sanitizeHistorySensitive(propertyGroupTokens));
|
|
2184
|
-
}
|
|
2185
|
-
}
|
|
2186
|
-
}
|
|
2187
|
-
if (rules && rules.removeHistoryInsensitiveSelectors) {
|
|
2188
|
-
safeCss.splice(
|
|
2189
|
-
// -1 and +1 account for curly braces.
|
|
2190
|
-
rules.endOfSelectors - 1, propertiesEnd + 1);
|
|
2191
|
-
}
|
|
2192
|
-
checkElide();
|
|
2193
|
-
},
|
|
2194
|
-
declaration: function (property, valueArray) {
|
|
2195
|
-
if (!elide) {
|
|
2196
|
-
var schema = cssSchema[property];
|
|
2197
|
-
if (schema) {
|
|
2198
|
-
sanitizeCssProperty(property, schema, valueArray, opt_naiveUriRewriter);
|
|
2199
|
-
if (valueArray.length) {
|
|
2200
|
-
safeCss.push(property, ':', valueArray.join(' '), ';');
|
|
2201
|
-
}
|
|
2202
|
-
}
|
|
2203
|
-
}
|
|
2204
|
-
}
|
|
2205
|
-
});
|
|
2206
|
-
function checkElide() {
|
|
2207
|
-
elide = blockStack.length !== 0
|
|
2208
|
-
&& blockStack[blockStack.length-1] !== null;
|
|
2209
|
-
}
|
|
2210
|
-
return safeCss.join('');
|
|
2211
|
-
};
|
|
2212
|
-
})();
|
|
2213
|
-
|
|
2214
|
-
// Exports for closure compiler.
|
|
2215
|
-
if (typeof window !== 'undefined') {
|
|
2216
|
-
window['sanitizeCssProperty'] = sanitizeCssProperty;
|
|
2217
|
-
window['sanitizeCssSelectors'] = sanitizeCssSelectors;
|
|
2218
|
-
window['sanitizeStylesheet'] = sanitizeStylesheet;
|
|
2219
|
-
}
|
|
2220
|
-
// Copyright (C) 2010 Google Inc.
|
|
2221
|
-
//
|
|
2222
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
2223
|
-
// you may not use this file except in compliance with the License.
|
|
2224
|
-
// You may obtain a copy of the License at
|
|
2225
|
-
//
|
|
2226
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
2227
|
-
//
|
|
2228
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
2229
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
2230
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2231
|
-
// See the License for the specific language governing permissions and
|
|
2232
|
-
// limitations under the License.
|
|
2233
|
-
|
|
2234
|
-
/**
|
|
2235
|
-
* @fileoverview
|
|
2236
|
-
* Utilities for dealing with CSS source code.
|
|
2237
|
-
*
|
|
2238
|
-
* @author mikesamuel@gmail.com
|
|
2239
|
-
* \@requires lexCss
|
|
2240
|
-
* \@overrides window
|
|
2241
|
-
* \@provides parseCssStylesheet, parseCssDeclarations
|
|
2242
|
-
*/
|
|
2243
|
-
|
|
2244
|
-
/**
|
|
2245
|
-
* parseCssStylesheet takes a chunk of CSS text and a handler object with
|
|
2246
|
-
* methods that it calls as below:
|
|
2247
|
-
* <pre>
|
|
2248
|
-
* // At the beginning of a stylesheet.
|
|
2249
|
-
* handler.startStylesheet();
|
|
2250
|
-
*
|
|
2251
|
-
* // For an @foo rule ended by a semicolon: @import "foo.css";
|
|
2252
|
-
* handler.startAtrule('@import', ['"foo.css"']);
|
|
2253
|
-
* handler.endAtrule();
|
|
2254
|
-
*
|
|
2255
|
-
* // For an @foo rule ended with a block. @media print { ... }
|
|
2256
|
-
* handler.startAtrule('@media', ['print']);
|
|
2257
|
-
* handler.startBlock();
|
|
2258
|
-
* // Calls to contents elided. Probably selectors and declarations as below.
|
|
2259
|
-
* handler.endBlock();
|
|
2260
|
-
* handler.endAtrule();
|
|
2261
|
-
*
|
|
2262
|
-
* // For a ruleset: p.clazz q, s { color: blue; }
|
|
2263
|
-
* handler.startRuleset(['p', '.', 'clazz', ' ', 'q', ',', ' ', 's']);
|
|
2264
|
-
* handler.declaration('color', ['blue']);
|
|
2265
|
-
* handler.endRuleset();
|
|
2266
|
-
*
|
|
2267
|
-
* // At the end of a stylesheet.
|
|
2268
|
-
* handler.endStylesheet();
|
|
2269
|
-
* </pre>
|
|
2270
|
-
* When errors are encountered, the parser drops the useless tokens and
|
|
2271
|
-
* attempts to resume parsing.
|
|
2272
|
-
*
|
|
2273
|
-
* @param {string} cssText CSS3 content to parse as a stylesheet.
|
|
2274
|
-
* @param {Object} handler An object like <pre>{
|
|
2275
|
-
* startStylesheet: function () { ... },
|
|
2276
|
-
* endStylesheet: function () { ... },
|
|
2277
|
-
* startAtrule: function (atIdent, headerArray) { ... },
|
|
2278
|
-
* endAtrule: function () { ... },
|
|
2279
|
-
* startBlock: function () { ... },
|
|
2280
|
-
* endBlock: function () { ... },
|
|
2281
|
-
* startRuleset: function (selectorArray) { ... },
|
|
2282
|
-
* endRuleset: function () { ... },
|
|
2283
|
-
* declaration: function (property, valueArray) { ... },
|
|
2284
|
-
* }</pre>
|
|
2285
|
-
*/
|
|
2286
|
-
var parseCssStylesheet;
|
|
2287
|
-
|
|
2288
|
-
/**
|
|
2289
|
-
* parseCssDeclarations parses a run of declaration productions as seen in the
|
|
2290
|
-
* body of the HTML5 {@code style} attribute.
|
|
2291
|
-
*
|
|
2292
|
-
* @param {string} cssText CSS3 content to parse as a run of declarations.
|
|
2293
|
-
* @param {Object} handler An object like <pre>{
|
|
2294
|
-
* declaration: function (property, valueArray) { ... },
|
|
2295
|
-
* }</pre>
|
|
2296
|
-
*/
|
|
2297
|
-
var parseCssDeclarations;
|
|
2298
|
-
|
|
2299
|
-
(function () {
|
|
2300
|
-
// stylesheet : [ CDO | CDC | S | statement ]*;
|
|
2301
|
-
parseCssStylesheet = function(cssText, handler) {
|
|
2302
|
-
var toks = lexCss(cssText);
|
|
2303
|
-
if (handler.startStylesheet) { handler.startStylesheet(); }
|
|
2304
|
-
for (var i = 0, n = toks.length; i < n;) {
|
|
2305
|
-
// CDO and CDC ("<!--" and "-->") are converted to space by the lexer.
|
|
2306
|
-
i = toks[i] === ' ' ? i+1 : statement(toks, i, n, handler);
|
|
2307
|
-
}
|
|
2308
|
-
if (handler.endStylesheet) { handler.endStylesheet(); }
|
|
2309
|
-
};
|
|
2310
|
-
|
|
2311
|
-
// statement : ruleset | at-rule;
|
|
2312
|
-
function statement(toks, i, n, handler) {
|
|
2313
|
-
if (i < n) {
|
|
2314
|
-
var tok = toks[i];
|
|
2315
|
-
if (tok.charAt(0) === '@') {
|
|
2316
|
-
return atrule(toks, i, n, handler, true);
|
|
2317
|
-
} else {
|
|
2318
|
-
return ruleset(toks, i, n, handler);
|
|
2319
|
-
}
|
|
2320
|
-
} else {
|
|
2321
|
-
return i;
|
|
2322
|
-
}
|
|
2323
|
-
}
|
|
2324
|
-
|
|
2325
|
-
// at-rule : ATKEYWORD S* any* [ block | ';' S* ];
|
|
2326
|
-
function atrule(toks, i, n, handler, blockok) {
|
|
2327
|
-
var start = i++;
|
|
2328
|
-
while (i < n && toks[i] !== '{' && toks[i] !== ';') {
|
|
2329
|
-
++i;
|
|
2330
|
-
}
|
|
2331
|
-
if (i < n && (blockok || toks[i] === ';')) {
|
|
2332
|
-
var s = start+1, e = i;
|
|
2333
|
-
if (s < n && toks[s] === ' ') { ++s; }
|
|
2334
|
-
if (e > s && toks[e-1] === ' ') { --e; }
|
|
2335
|
-
if (handler.startAtrule) {
|
|
2336
|
-
handler.startAtrule(toks[start].toLowerCase(), toks.slice(s, e));
|
|
2337
|
-
}
|
|
2338
|
-
i = (toks[i] === '{')
|
|
2339
|
-
? block(toks, i, n, handler)
|
|
2340
|
-
: i+1; // Skip over ';'
|
|
2341
|
-
if (handler.endAtrule) {
|
|
2342
|
-
handler.endAtrule();
|
|
2343
|
-
}
|
|
2344
|
-
}
|
|
2345
|
-
// Else we reached end of input or are missing a semicolon.
|
|
2346
|
-
// Drop the rule on the floor.
|
|
2347
|
-
return i;
|
|
2348
|
-
}
|
|
2349
|
-
|
|
2350
|
-
// block : '{' S* [ any | block | ATKEYWORD S* | ';' S* ]* '}' S*;
|
|
2351
|
-
// Assumes the leading '{' has been verified by callers.
|
|
2352
|
-
function block(toks, i, n, handler) {
|
|
2353
|
-
++i; // skip over '{'
|
|
2354
|
-
if (handler.startBlock) { handler.startBlock(); }
|
|
2355
|
-
while (i < n) {
|
|
2356
|
-
var ch = toks[i].charAt(0);
|
|
2357
|
-
if (ch == '}') {
|
|
2358
|
-
++i;
|
|
2359
|
-
break;
|
|
2360
|
-
}
|
|
2361
|
-
if (ch === ' ' || ch === ';') {
|
|
2362
|
-
i = i+1;
|
|
2363
|
-
} else if (ch === '@') {
|
|
2364
|
-
i = atrule(toks, i, n, handler, false);
|
|
2365
|
-
} else if (ch === '{') {
|
|
2366
|
-
i = block(toks, i, n, handler);
|
|
2367
|
-
} else {
|
|
2368
|
-
// Instead of using (any* block) to subsume ruleset we allow either
|
|
2369
|
-
// blocks or rulesets with a non-blank selector.
|
|
2370
|
-
// This is more restrictive but does not require atrule specific
|
|
2371
|
-
// parse tree fixup to realize that the contents of the block in
|
|
2372
|
-
// @media print { ... }
|
|
2373
|
-
// is a ruleset. We just don't care about any block carrying at-rules
|
|
2374
|
-
// whose body content is not ruleset content.
|
|
2375
|
-
i = ruleset(toks, i, n, handler);
|
|
2376
|
-
}
|
|
2377
|
-
}
|
|
2378
|
-
if (handler.endBlock) { handler.endBlock(); }
|
|
2379
|
-
return i;
|
|
2380
|
-
}
|
|
2381
|
-
|
|
2382
|
-
// ruleset : selector? '{' S* declaration? [ ';' S* declaration? ]* '}' S*;
|
|
2383
|
-
function ruleset(toks, i, n, handler) {
|
|
2384
|
-
// toks[s:e] are the selector tokens including internal whitespace.
|
|
2385
|
-
var s = i, e = selector(toks, i, n, true);
|
|
2386
|
-
if (e < 0) {
|
|
2387
|
-
// Skip malformed content per selector calling convention.
|
|
2388
|
-
e = ~e;
|
|
2389
|
-
// Make sure we skip at least one token.
|
|
2390
|
-
return i === e ? e+1 : e;
|
|
2391
|
-
}
|
|
2392
|
-
i = e;
|
|
2393
|
-
// Don't include any trailing space in the selector slice.
|
|
2394
|
-
if (e > s && toks[e-1] === ' ') { --e; }
|
|
2395
|
-
var tok = toks[i];
|
|
2396
|
-
++i; // Skip over '{'
|
|
2397
|
-
if (tok !== '{') {
|
|
2398
|
-
// Skips past the '{' when there is a malformed input.
|
|
2399
|
-
return i;
|
|
2400
|
-
}
|
|
2401
|
-
if (handler.startRuleset) {
|
|
2402
|
-
handler.startRuleset(toks.slice(s, e));
|
|
2403
|
-
}
|
|
2404
|
-
while (i < n) {
|
|
2405
|
-
tok = toks[i];
|
|
2406
|
-
if (tok === '}') {
|
|
2407
|
-
++i;
|
|
2408
|
-
break;
|
|
2409
|
-
}
|
|
2410
|
-
if (tok === ' ') {
|
|
2411
|
-
i = i+1;
|
|
2412
|
-
} else {
|
|
2413
|
-
i = declaration(toks, i, n, handler);
|
|
2414
|
-
}
|
|
2415
|
-
}
|
|
2416
|
-
if (handler.endRuleset) {
|
|
2417
|
-
handler.endRuleset();
|
|
2418
|
-
}
|
|
2419
|
-
return i < n ? i+1 : i;
|
|
2420
|
-
}
|
|
2421
|
-
|
|
2422
|
-
// selector : any+;
|
|
2423
|
-
// any : [ IDENT | NUMBER | PERCENTAGE | DIMENSION | STRING
|
|
2424
|
-
// | DELIM | URI | HASH | UNICODE-RANGE | INCLUDES
|
|
2425
|
-
// | FUNCTION S* any* ')' | DASHMATCH | '(' S* any* ')'
|
|
2426
|
-
// | '[' S* any* ']' ] S*;
|
|
2427
|
-
// A negative return value, rv, indicates the selector was malformed and
|
|
2428
|
-
// the index at which we stopped is ~rv.
|
|
2429
|
-
function selector(toks, i, n, allowSemi) {
|
|
2430
|
-
// The definition of any above can be summed up as
|
|
2431
|
-
// "any run of token except ('[', ']', '(', ')', ':', ';', '{', '}')
|
|
2432
|
-
// or nested runs of parenthesized tokens or square bracketed tokens".
|
|
2433
|
-
// Spaces are significant in the selector.
|
|
2434
|
-
// Selector is used as (selector?) so the below looks for (any*) for
|
|
2435
|
-
// simplicity.
|
|
2436
|
-
var tok;
|
|
2437
|
-
// Keeping a stack pointer actually causes this to minify better since
|
|
2438
|
-
// ".length" and ".push" are a lo of chars.
|
|
2439
|
-
var brackets = [], stackLast = -1;
|
|
2440
|
-
for (;i < n; ++i) {
|
|
2441
|
-
tok = toks[i].charAt(0);
|
|
2442
|
-
if (tok === '[' || tok === '(') {
|
|
2443
|
-
brackets[++stackLast] = tok;
|
|
2444
|
-
} else if ((tok === ']' && brackets[stackLast] === '[') ||
|
|
2445
|
-
(tok === ')' && brackets[stackLast] === '(')) {
|
|
2446
|
-
--stackLast;
|
|
2447
|
-
} else if (tok === '{' || tok === '}' || tok === ';' || tok === '@'
|
|
2448
|
-
|| (tok === ':' && !allowSemi)) {
|
|
2449
|
-
break;
|
|
2450
|
-
}
|
|
2451
|
-
}
|
|
2452
|
-
if (stackLast >= 0) {
|
|
2453
|
-
// Returns the bitwise inverse of i+1 to indicate an error in the
|
|
2454
|
-
// token stream so that clients can ignore it.
|
|
2455
|
-
i = ~(i+1);
|
|
2456
|
-
}
|
|
2457
|
-
return i;
|
|
2458
|
-
}
|
|
2459
|
-
|
|
2460
|
-
var ident = /^-?[a-z]/i;
|
|
2461
|
-
|
|
2462
|
-
// declaration : property ':' S* value;
|
|
2463
|
-
// property : IDENT S*;
|
|
2464
|
-
// value : [ any | block | ATKEYWORD S* ]+;
|
|
2465
|
-
function declaration(toks, i, n, handler) {
|
|
2466
|
-
var property = toks[i++];
|
|
2467
|
-
if (!ident.test(property)) {
|
|
2468
|
-
return i+1; // skip one token.
|
|
2469
|
-
}
|
|
2470
|
-
var tok;
|
|
2471
|
-
if (i < n && toks[i] === ' ') { ++i; }
|
|
2472
|
-
if (i == n || toks[i] !== ':') {
|
|
2473
|
-
// skip tokens to next semi or close bracket.
|
|
2474
|
-
while (i < n && (tok = toks[i]) !== ';' && tok !== '}') { ++i; }
|
|
2475
|
-
return i;
|
|
2476
|
-
}
|
|
2477
|
-
++i;
|
|
2478
|
-
if (i < n && toks[i] === ' ') { ++i; }
|
|
2479
|
-
|
|
2480
|
-
// None of the rules we care about want atrules or blocks in value, so
|
|
2481
|
-
// we look for any+ but that is the same as selector but not zero-length.
|
|
2482
|
-
// This gets us the benefit of not emitting any value with mismatched
|
|
2483
|
-
// brackets.
|
|
2484
|
-
var s = i, e = selector(toks, i, n, false);
|
|
2485
|
-
if (e < 0) {
|
|
2486
|
-
// Skip malformed content per selector calling convention.
|
|
2487
|
-
e = ~e;
|
|
2488
|
-
} else {
|
|
2489
|
-
var value = [], valuelen = 0;
|
|
2490
|
-
for (var j = s; j < e; ++j) {
|
|
2491
|
-
tok = toks[j];
|
|
2492
|
-
if (tok !== ' ') {
|
|
2493
|
-
value[valuelen++] = tok;
|
|
2494
|
-
}
|
|
2495
|
-
}
|
|
2496
|
-
// One of the following is now true:
|
|
2497
|
-
// (1) e is flush with the end of the tokens as in <... style="x:y">.
|
|
2498
|
-
// (2) tok[e] points to a ';' in which case we need to consume the semi.
|
|
2499
|
-
// (3) tok[e] points to a '}' in which case we don't consume it.
|
|
2500
|
-
// (4) else there is bogus unparsed value content at toks[e:].
|
|
2501
|
-
// Allow declaration flush with end for style attr body.
|
|
2502
|
-
if (e < n) { // 2, 3, or 4
|
|
2503
|
-
do {
|
|
2504
|
-
tok = toks[e];
|
|
2505
|
-
if (tok === ';' || tok === '}') { break; }
|
|
2506
|
-
// Don't emit the property if there is questionable trailing content.
|
|
2507
|
-
valuelen = 0;
|
|
2508
|
-
} while (++e < n);
|
|
2509
|
-
if (tok === ';') {
|
|
2510
|
-
++e;
|
|
2511
|
-
}
|
|
2512
|
-
}
|
|
2513
|
-
if (valuelen && handler.declaration) {
|
|
2514
|
-
// TODO: coerce non-keyword ident tokens to quoted strings.
|
|
2515
|
-
handler.declaration(property.toLowerCase(), value);
|
|
2516
|
-
}
|
|
2517
|
-
}
|
|
2518
|
-
return e;
|
|
2519
|
-
}
|
|
2520
|
-
|
|
2521
|
-
parseCssDeclarations = function(cssText, handler) {
|
|
2522
|
-
var toks = lexCss(cssText);
|
|
2523
|
-
for (var i = 0, n = toks.length; i < n;) {
|
|
2524
|
-
i = toks[i] !== ' ' ? declaration(toks, i, n, handler) : i+1;
|
|
2525
|
-
}
|
|
2526
|
-
};
|
|
2527
|
-
})();
|
|
2528
|
-
|
|
2529
|
-
// Exports for closure compiler.
|
|
2530
|
-
if (typeof window !== 'undefined') {
|
|
2531
|
-
window['parseCssStylesheet'] = parseCssStylesheet;
|
|
2532
|
-
window['parseCssDeclarations'] = parseCssDeclarations;
|
|
2533
|
-
}
|
|
2534
|
-
/*!
|
|
2535
|
-
* OpenUI5
|
|
2536
|
-
* (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
|
|
2537
|
-
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
2538
|
-
*/
|
|
2539
|
-
// Based on coding from the HTML4 Sanitizer by Google Inc.
|
|
2540
|
-
// The HTML Attributes and ELements were reorganized according to the actual HTML5 specification
|
|
2541
|
-
// from the W3C. All types and flags were reviewed again as accurately as possible with HTML4 only
|
|
2542
|
-
// elements removed, you can still see them as comments. All rules which are new or changed from the
|
|
2543
|
-
// old HTML4 file are also marked "new" within the comment. The comments also state which attributes
|
|
2544
|
-
// and elements are assigned to respective types and flags. All rules which were not 100% clear were
|
|
2545
|
-
// analyzed in a way of similarity, so for example "audio" and "video" content behaves like images etc.
|
|
2546
|
-
// URIEFFECTS state if a URL is loaded inplace within a tag where the actual document is in control
|
|
2547
|
-
// of what type of content is loaded like "image" or if a new document is loaded like with "a href".
|
|
2548
|
-
// LOADERTYPES state if content is loaded as sandboxed which means it is loaded within a specific
|
|
2549
|
-
// surroundig player like with video content for example or if it is loaded freely without restrictions.
|
|
2550
|
-
// @overrides window
|
|
2551
|
-
// @provides html4
|
|
2552
|
-
|
|
2553
|
-
var html4 = {};
|
|
2554
|
-
html4.atype = {
|
|
2555
|
-
NONE: 0,
|
|
2556
|
-
URI: 1, //action, cite, data, href, icon, manifest, poster, src
|
|
2557
|
-
URI_FRAGMENT: 11, //usemap
|
|
2558
|
-
SCRIPT: 2, //all event handlers
|
|
2559
|
-
STYLE: 3, //style
|
|
2560
|
-
ID: 4, //id
|
|
2561
|
-
IDREF: 5, //for
|
|
2562
|
-
IDREFS: 6, //headers
|
|
2563
|
-
GLOBAL_NAME: 7, //name of form, iframe, img, map, meta
|
|
2564
|
-
LOCAL_NAME: 8, //name of button, fieldset, input, keygen, object, output, param, select, textarea
|
|
2565
|
-
CLASSES: 9, //class
|
|
2566
|
-
FRAME_TARGET: 10 //formtarget, srcdoc, target
|
|
2567
|
-
};
|
|
2568
|
-
|
|
2569
|
-
html4.ATTRIBS = {
|
|
2570
|
-
'*::accesskey': 0, //NONE
|
|
2571
|
-
'*::class': 9, //CLASSES
|
|
2572
|
-
'*::contenteditable': 0, //NONE new
|
|
2573
|
-
'*::contextmenu': 0, //NONE new
|
|
2574
|
-
'*::dir': 0, //NONE
|
|
2575
|
-
'*::draggable': 0, //NONE new
|
|
2576
|
-
'*::dropzone': 0, //NONE new
|
|
2577
|
-
'*::hidden': 0, //NONE new
|
|
2578
|
-
'*::id': 4, //ID
|
|
2579
|
-
'*::lang': 0, //NONE
|
|
2580
|
-
'*::onabort': 2, //SCRIPT new
|
|
2581
|
-
'*::onblur': 2, //SCRIPT new
|
|
2582
|
-
'*::oncanplay': 2, //SCRIPT new
|
|
2583
|
-
'*::oncanplaythrough': 2, //SCRIPT new
|
|
2584
|
-
'*::onchange': 2, //SCRIPT new
|
|
2585
|
-
'*::onclick': 2, //SCRIPT
|
|
2586
|
-
'*::oncontextmenu': 2, //SCRIPT new
|
|
2587
|
-
'*::oncuechange': 2, //SCRIPT new
|
|
2588
|
-
'*::ondblclick': 2, //SCRIPT
|
|
2589
|
-
'*::ondrag': 2, //SCRIPT new
|
|
2590
|
-
'*::ondragend': 2, //SCRIPT new
|
|
2591
|
-
'*::ondragenter': 2, //SCRIPT new
|
|
2592
|
-
'*::ondragleave': 2, //SCRIPT new
|
|
2593
|
-
'*::ondragover': 2, //SCRIPT new
|
|
2594
|
-
'*::ondragstart': 2, //SCRIPT new
|
|
2595
|
-
'*::ondrop': 2, //SCRIPT new
|
|
2596
|
-
'*::ondurationchange': 2, //SCRIPT new
|
|
2597
|
-
'*::onemptied': 2, //SCRIPT new
|
|
2598
|
-
'*::onended': 2, //SCRIPT new
|
|
2599
|
-
'*::onerror': 2, //SCRIPT new
|
|
2600
|
-
'*::onfocus': 2, //SCRIPT new
|
|
2601
|
-
'*::oninput': 2, //SCRIPT new
|
|
2602
|
-
'*::oninvalid': 2, //SCRIPT new
|
|
2603
|
-
'*::onkeydown': 2, //SCRIPT
|
|
2604
|
-
'*::onkeypress': 2, //SCRIPT
|
|
2605
|
-
'*::onkeyup': 2, //SCRIPT
|
|
2606
|
-
'*::onload': 2, //SCRIPT
|
|
2607
|
-
'*::onloadeddata': 2, //SCRIPT new
|
|
2608
|
-
'*::onloadedmetadata': 2, //SCRIPT new
|
|
2609
|
-
'*::onloadstart': 2, //SCRIPT new
|
|
2610
|
-
'*::onmousedown': 2, //SCRIPT
|
|
2611
|
-
'*::onmousemove': 2, //SCRIPT
|
|
2612
|
-
'*::onmouseout': 2, //SCRIPT
|
|
2613
|
-
'*::onmouseover': 2, //SCRIPT
|
|
2614
|
-
'*::onmouseup': 2, //SCRIPT
|
|
2615
|
-
'*::onmousewheel': 2, //SCRIPT new
|
|
2616
|
-
'*::onpause': 2, //SCRIPT new
|
|
2617
|
-
'*::onplay': 2, //SCRIPT new
|
|
2618
|
-
'*::onplaying': 2, //SCRIPT new
|
|
2619
|
-
'*::onprogress': 2, //SCRIPT new
|
|
2620
|
-
'*::onratechange': 2, //SCRIPT new
|
|
2621
|
-
'*::onreadystatechange': 2, //SCRIPT new
|
|
2622
|
-
'*::onreset': 2, //SCRIPT new
|
|
2623
|
-
'*::onscroll': 2, //SCRIPT new
|
|
2624
|
-
'*::onseeked': 2, //SCRIPT new
|
|
2625
|
-
'*::onseeking': 2, //SCRIPT new
|
|
2626
|
-
'*::onselect': 2, //SCRIPT new
|
|
2627
|
-
'*::onshow': 2, //SCRIPT new
|
|
2628
|
-
'*::onstalled': 2, //SCRIPT new
|
|
2629
|
-
'*::onsubmit': 2, //SCRIPT new
|
|
2630
|
-
'*::onsuspend': 2, //SCRIPT new
|
|
2631
|
-
'*::ontimeupdate': 2, //SCRIPT new
|
|
2632
|
-
'*::onvolumechange': 2, //SCRIPT new
|
|
2633
|
-
'*::onwaiting': 2, //SCRIPT new
|
|
2634
|
-
'*::spellcheck': 0, //NONE new
|
|
2635
|
-
'*::style': 3, //STYLE
|
|
2636
|
-
'*::tabindex': 0, //NONE
|
|
2637
|
-
'*::title': 0, //NONE
|
|
2638
|
-
//--------------------- 'a::accesskey': 0, moved to global
|
|
2639
|
-
//--------------------- 'a::coords': 0,
|
|
2640
|
-
'a::href': 1, //URI
|
|
2641
|
-
'a::hreflang': 0, //NONE
|
|
2642
|
-
'a::media': 0, //NONE new
|
|
2643
|
-
//--------------------- 'a::name': 7,
|
|
2644
|
-
//--------------------- 'a::onblur': 2, moved to global
|
|
2645
|
-
//--------------------- 'a::onfocus': 2, moved to global
|
|
2646
|
-
'a::rel': 0, //NONE
|
|
2647
|
-
//--------------------- 'a::rev': 0,
|
|
2648
|
-
//--------------------- 'a::shape': 0,
|
|
2649
|
-
//--------------------- 'a::tabindex': 0, moved to global
|
|
2650
|
-
'a::target': 0, //changed to "0" because of CSN 1918585 2013, original value was 10 FRAME_TARGET but it seems uncritical
|
|
2651
|
-
'a::type': 0, //NONE
|
|
2652
|
-
//--------------------- 'area::accesskey': 0, moved to global
|
|
2653
|
-
'area::alt': 0, //NONE
|
|
2654
|
-
'area::coords': 0, //NONE
|
|
2655
|
-
'area::href': 1, //URI
|
|
2656
|
-
'area::hreflang': 0, //NONE new
|
|
2657
|
-
'area::media': 0, //NONE new
|
|
2658
|
-
//--------------------- 'area::nohref': 0,
|
|
2659
|
-
//--------------------- 'area::onblur': 2, moved to global
|
|
2660
|
-
//--------------------- 'area::onfocus': 2, moved to global
|
|
2661
|
-
'area::rel': 0, //NONE new
|
|
2662
|
-
'area::shape': 0, //NONE
|
|
2663
|
-
//--------------------- 'area::tabindex': 0, moved to global
|
|
2664
|
-
'area::target': 10, //FRAME_TARGET
|
|
2665
|
-
'area::type': 0, //NONE
|
|
2666
|
-
'audio::autoplay': 0, //NONE new
|
|
2667
|
-
'audio::controls': 0, //NONE new
|
|
2668
|
-
'audio::loop': 0, //NONE new
|
|
2669
|
-
'audio::mediagroup': 0, //NONE new
|
|
2670
|
-
'audio::preload': 0, //NONE new
|
|
2671
|
-
'audio::src': 1, //URI
|
|
2672
|
-
'base::href': 1, //URI
|
|
2673
|
-
'base::target': 10, //FRAME_TARGET
|
|
2674
|
-
//--------------------- 'bdo::dir': 0,
|
|
2675
|
-
'blockquote::cite': 1, //URI
|
|
2676
|
-
'body::onafterprint': 2, //SCRIPT new
|
|
2677
|
-
'body::onbeforeprint': 2, //SCRIPT new
|
|
2678
|
-
'body::onbeforeunload': 2, //SCRIPT new
|
|
2679
|
-
'body::onblur': 2, //SCRIPT new
|
|
2680
|
-
'body::onerror': 2, //SCRIPT new
|
|
2681
|
-
'body::onfocus': 2, //SCRIPT new
|
|
2682
|
-
'body::onhashchange': 2, //SCRIPT new
|
|
2683
|
-
'body::onload': 2, //SCRIPT new
|
|
2684
|
-
'body::onmessage': 2, //SCRIPT new
|
|
2685
|
-
'body::onoffline': 2, //SCRIPT new
|
|
2686
|
-
'body::ononline': 2, //SCRIPT new
|
|
2687
|
-
'body::onpagehide': 2, //SCRIPT new
|
|
2688
|
-
'body::onpageshow': 2, //SCRIPT new
|
|
2689
|
-
'body::onpopstate': 2, //SCRIPT new
|
|
2690
|
-
'body::onredo': 2, //SCRIPT new
|
|
2691
|
-
'body::onresize': 2, //SCRIPT new
|
|
2692
|
-
'body::onscroll': 2, //SCRIPT new
|
|
2693
|
-
'body::onstorage': 2, //SCRIPT new
|
|
2694
|
-
'body::onundo': 2, //SCRIPT new
|
|
2695
|
-
'body::onunload': 2, //SCRIPT new
|
|
2696
|
-
//--------------------- 'br::clear': 0,
|
|
2697
|
-
//--------------------- 'button::accesskey': 0, moved to global
|
|
2698
|
-
'button::autofocus': 0, //NONE new
|
|
2699
|
-
'button::disabled': 0, //NONE
|
|
2700
|
-
'button::form': 0, //NONE new
|
|
2701
|
-
'button::formaction': 1, //URI new
|
|
2702
|
-
'button::formenctype': 0, //NONE new
|
|
2703
|
-
'button::formmethod': 0, //NONE new
|
|
2704
|
-
'button::formnovalidate': 0, //NONE new
|
|
2705
|
-
'button::formtarget': 10, //FRAME_TARGET new
|
|
2706
|
-
'button::name': 8, //LOCAL_NAME
|
|
2707
|
-
//--------------------- 'button::onblur': 2,
|
|
2708
|
-
//--------------------- 'button::onfocus': 2,
|
|
2709
|
-
//--------------------- 'button::tabindex': 0, moved to global
|
|
2710
|
-
'button::type': 0, //NONE
|
|
2711
|
-
'button::value': 0, //NONE
|
|
2712
|
-
'canvas::height': 0, //NONE
|
|
2713
|
-
'canvas::width': 0, //NONE
|
|
2714
|
-
//--------------------- 'caption::align': 0,
|
|
2715
|
-
//--------------------- 'col::align': 0,
|
|
2716
|
-
//--------------------- 'col::char': 0,
|
|
2717
|
-
//--------------------- 'col::charoff': 0,
|
|
2718
|
-
'col::span': 0, //NONE
|
|
2719
|
-
//--------------------- 'col::valign': 0,
|
|
2720
|
-
//--------------------- 'col::width': 0,
|
|
2721
|
-
//--------------------- 'colgroup::align': 0,
|
|
2722
|
-
//--------------------- 'colgroup::char': 0,
|
|
2723
|
-
//--------------------- 'colgroup::charoff': 0,
|
|
2724
|
-
'colgroup::span': 0, //NONE
|
|
2725
|
-
//--------------------- 'colgroup::valign': 0,
|
|
2726
|
-
//--------------------- 'colgroup::width': 0,
|
|
2727
|
-
'command::checked': 0, //NONE new
|
|
2728
|
-
'command::disabled': 0, //NONE new
|
|
2729
|
-
'command::icon': 1, //URI new
|
|
2730
|
-
'command::label': 0, //NONE new
|
|
2731
|
-
'command::radiogroup': 0, //NONE new
|
|
2732
|
-
'command::type': 0, //NONE new
|
|
2733
|
-
'del::cite': 1, //URI
|
|
2734
|
-
'del::datetime': 0, //NONE
|
|
2735
|
-
'details::open': 0, //NONE new
|
|
2736
|
-
//--------------------- 'dir::compact': 0,
|
|
2737
|
-
//--------------------- 'div::align': 0,
|
|
2738
|
-
//--------------------- 'dl::compact': 0,
|
|
2739
|
-
'embed::height': 0, //NONE new
|
|
2740
|
-
'embed::src': 1, //URI new
|
|
2741
|
-
'embed::type': 0, //NONE new
|
|
2742
|
-
'embed::width': 0, //NONE new
|
|
2743
|
-
'fieldset::disabled': 0, //NONE new
|
|
2744
|
-
'fieldset::form': 0, //NONE new
|
|
2745
|
-
'fieldset::name': 8, //LOCAL_NAME new
|
|
2746
|
-
//--------------------- 'font::color': 0,
|
|
2747
|
-
//--------------------- 'font::face': 0,
|
|
2748
|
-
//--------------------- 'font::size': 0,
|
|
2749
|
-
//--------------------- 'form::accept': 0,
|
|
2750
|
-
'form::accept-charset': 0, //NONE
|
|
2751
|
-
'form::action': 1, //URI
|
|
2752
|
-
'form::autocomplete': 0, //NONE
|
|
2753
|
-
'form::enctype': 0, //NONE
|
|
2754
|
-
'form::method': 0, //NONE
|
|
2755
|
-
'form::name': 7, //GLOBAL_NAME
|
|
2756
|
-
'form::novalidate': 0, //NONE new
|
|
2757
|
-
//--------------------- 'form::onreset': 2,
|
|
2758
|
-
//--------------------- 'form::onsubmit': 2,
|
|
2759
|
-
'form::target': 10, //FRAME_TARGET
|
|
2760
|
-
//--------------------- 'h1::align': 0,
|
|
2761
|
-
//--------------------- 'h2::align': 0,
|
|
2762
|
-
//--------------------- 'h3::align': 0,
|
|
2763
|
-
//--------------------- 'h4::align': 0,
|
|
2764
|
-
//--------------------- 'h5::align': 0,
|
|
2765
|
-
//--------------------- 'h6::align': 0,
|
|
2766
|
-
//--------------------- 'hr::align': 0,
|
|
2767
|
-
//--------------------- 'hr::noshade': 0,
|
|
2768
|
-
//--------------------- 'hr::size': 0,
|
|
2769
|
-
//--------------------- 'hr::width': 0,
|
|
2770
|
-
'html:: manifest': 1, //URI new
|
|
2771
|
-
//--------------------- 'iframe::align': 0,
|
|
2772
|
-
//--------------------- 'iframe::frameborder': 0,
|
|
2773
|
-
'iframe::height': 0, //NONE
|
|
2774
|
-
//--------------------- 'iframe::marginheight': 0,
|
|
2775
|
-
//--------------------- 'iframe::marginwidth': 0,
|
|
2776
|
-
'iframe::name': 7, //GLOBAL_NAME new
|
|
2777
|
-
'iframe::sandbox': 0, //NONE new
|
|
2778
|
-
'iframe::seamless': 0, //NONE new
|
|
2779
|
-
'iframe::src': 1, //URI new
|
|
2780
|
-
'iframe::srcdoc': 10, //FRAME_TARGET new
|
|
2781
|
-
'iframe::width': 0, //NONE
|
|
2782
|
-
//--------------------- 'img::align': 0,
|
|
2783
|
-
'img::alt': 0, //NONE
|
|
2784
|
-
//--------------------- 'img::border': 0,
|
|
2785
|
-
'img::height': 0, //NONE
|
|
2786
|
-
//--------------------- 'img::hspace': 0,
|
|
2787
|
-
'img::ismap': 0, //NONE
|
|
2788
|
-
'img::name': 7, //GLOBAL_NAME
|
|
2789
|
-
'img::src': 1, //URI
|
|
2790
|
-
'img::usemap': 11, //URI_FRAGMENT
|
|
2791
|
-
//--------------------- 'img::vspace': 0,
|
|
2792
|
-
'img::width': 0, //NONE
|
|
2793
|
-
'input::accept': 0, //NONE
|
|
2794
|
-
//--------------------- 'input::accesskey': 0, moved to global
|
|
2795
|
-
//--------------------- 'input::align': 0,
|
|
2796
|
-
'input::alt': 0, //NONE
|
|
2797
|
-
'input::autocomplete': 0, //NONE
|
|
2798
|
-
'input::autofocus': 0, //NONE new
|
|
2799
|
-
'input::checked': 0, //NONE
|
|
2800
|
-
'input::dirname': 0, //NONE new
|
|
2801
|
-
'input::disabled': 0, //NONE
|
|
2802
|
-
'input::form': 0, //NONE new
|
|
2803
|
-
'input::formaction': 1, //URI new
|
|
2804
|
-
'input::formenctype': 0, //NONE new
|
|
2805
|
-
'input::formmethod': 0, //NONE new
|
|
2806
|
-
'input::formnovalidate': 0, //NONE new
|
|
2807
|
-
'input::formtarget': 10, //FRAME_TARGET new
|
|
2808
|
-
'input::height': 0, //NONE new
|
|
2809
|
-
//--------------------- 'input::ismap': 0,
|
|
2810
|
-
'input::list': 0, //NONE new
|
|
2811
|
-
'input::max': 0, //NONE new
|
|
2812
|
-
'input::maxlength': 0, //NONE
|
|
2813
|
-
'input::min': 0, //NONE new
|
|
2814
|
-
'input::multiple': 0, //NONE new
|
|
2815
|
-
'input::name': 8, //LOCAL_NAME
|
|
2816
|
-
//--------------------- 'input::onblur': 2,
|
|
2817
|
-
//--------------------- 'input::onchange': 2,
|
|
2818
|
-
//--------------------- 'input::onfocus': 2,
|
|
2819
|
-
//--------------------- 'input::onselect': 2,
|
|
2820
|
-
'input::pattern': 0, //NONE new
|
|
2821
|
-
'input::placeholder': 0, //NONE new
|
|
2822
|
-
'input::readonly': 0, //NONE
|
|
2823
|
-
'input::required': 0, //NONE new
|
|
2824
|
-
'input::step': 0, //NONE new
|
|
2825
|
-
'input::size': 0, //NONE
|
|
2826
|
-
'input::src': 1, //URI
|
|
2827
|
-
//--------------------- 'input::tabindex': 0, moved to global
|
|
2828
|
-
'input::type': 0, //NONE
|
|
2829
|
-
//--------------------- 'input::usemap': 11,
|
|
2830
|
-
'input::value': 0, //NONE
|
|
2831
|
-
'input::width': 0, //NONE new
|
|
2832
|
-
'ins::cite': 1, //URI
|
|
2833
|
-
'ins::datetime': 0, //NONE
|
|
2834
|
-
//--------------------- 'label::accesskey': 0, moved to global
|
|
2835
|
-
'keygen::autofocus': 0, //NONE new
|
|
2836
|
-
'keygen::challenge': 0, //NONE new
|
|
2837
|
-
'keygen::disabled': 0, //NONE new
|
|
2838
|
-
'keygen::form': 0, //NONE new
|
|
2839
|
-
'keygen::keytype': 0, //NONE new
|
|
2840
|
-
'keygen::name': 8, //LOCAL_NAME new
|
|
2841
|
-
'label::for': 5, //IDREF
|
|
2842
|
-
'label::form': 0, //NONE new
|
|
2843
|
-
//--------------------- 'label::onblur': 2,
|
|
2844
|
-
//--------------------- 'label::onfocus': 2,
|
|
2845
|
-
//--------------------- 'legend::accesskey': 0, moved to global
|
|
2846
|
-
//--------------------- 'legend::align': 0,
|
|
2847
|
-
//--------------------- 'li::type': 0,
|
|
2848
|
-
'link::href': 1, //URI new
|
|
2849
|
-
'link::hreflang': 0, //NONE new
|
|
2850
|
-
'link::media': 0, //NONE new
|
|
2851
|
-
'link::rel': 0, //NONE new
|
|
2852
|
-
'link::sizes': 0, //NONE new
|
|
2853
|
-
'link::type': 0, //NONE new
|
|
2854
|
-
'li::value': 0, //NONE new
|
|
2855
|
-
'map::name': 7, //GLOBAL_NAME
|
|
2856
|
-
//--------------------- 'menu::compact': 0,
|
|
2857
|
-
'menu::label': 0, //NONE new
|
|
2858
|
-
'menu::type': 0, //NONE new
|
|
2859
|
-
'meta::charset': 0, //NONE new
|
|
2860
|
-
'meta::content': 0, //NONE new
|
|
2861
|
-
'meta::http-equiv': 0, //NONE new
|
|
2862
|
-
'meta::name': 7, //GLOBAL_NAME new
|
|
2863
|
-
'meter::form': 0, //NONE new
|
|
2864
|
-
'meter::high': 0, //NONE new
|
|
2865
|
-
'meter::low': 0, //NONE new
|
|
2866
|
-
'meter::max': 0, //NONE new
|
|
2867
|
-
'meter::min': 0, //NONE new
|
|
2868
|
-
'meter::optimum': 0, //NONE new
|
|
2869
|
-
'meter::value': 0, //NONE new
|
|
2870
|
-
'object::data': 1, //URI new
|
|
2871
|
-
'object::form': 0, //NONE new
|
|
2872
|
-
'object::height': 0, //NONE new
|
|
2873
|
-
'object::name': 8, //LOCAL_NAME new
|
|
2874
|
-
'object::type': 0, //NONE new
|
|
2875
|
-
'object::usemap': 11, //URI_FRAGMENT new
|
|
2876
|
-
'object::width': 0, //NONE new
|
|
2877
|
-
//--------------------- 'ol::compact': 0,
|
|
2878
|
-
'ol::reversed': 0, //NONE new
|
|
2879
|
-
'ol::start': 0, //NONE
|
|
2880
|
-
//--------------------- 'ol::type': 0,
|
|
2881
|
-
'optgroup::disabled': 0, //NONE
|
|
2882
|
-
'optgroup::label': 0, //NONE
|
|
2883
|
-
'option::disabled': 0, //NONE
|
|
2884
|
-
'option::label': 0, //NONE
|
|
2885
|
-
'option::selected': 0, //NONE
|
|
2886
|
-
'option::value': 0, //NONE
|
|
2887
|
-
'output::for': 5, //IDREF new
|
|
2888
|
-
'output::form': 0, //NONE new
|
|
2889
|
-
'output::name': 8, //LOCAL_NAME new
|
|
2890
|
-
//--------------------- 'p::align': 0,
|
|
2891
|
-
'param::name': 8, //LOCAL_NAME new
|
|
2892
|
-
'param::value': 0, //NONE new
|
|
2893
|
-
'progress::form': 0, //NONE new
|
|
2894
|
-
'progress::max': 0, //NONE new
|
|
2895
|
-
'progress::value': 0, //NONE new
|
|
2896
|
-
//--------------------- 'pre::width': 0,
|
|
2897
|
-
'q::cite': 1, //URI
|
|
2898
|
-
'script::async': 0, //NONE new
|
|
2899
|
-
'script::charset': 0, //NONE new
|
|
2900
|
-
'script::defer': 0, //NONE new
|
|
2901
|
-
'script::src': 1, //URI new
|
|
2902
|
-
'script::type': 0, //NONE new
|
|
2903
|
-
'select::autofocus': 0, //NONE new
|
|
2904
|
-
'select::disabled': 0, //NONE
|
|
2905
|
-
'select::form': 0, //NONE new
|
|
2906
|
-
'select::multiple': 0, //NONE
|
|
2907
|
-
'select::name': 8, //LOCAL_NAME
|
|
2908
|
-
//--------------------- 'select::onblur': 2,
|
|
2909
|
-
//--------------------- 'select::onchange': 2,
|
|
2910
|
-
//--------------------- 'select::onfocus': 2,
|
|
2911
|
-
'select::required': 0, //NONE new
|
|
2912
|
-
'select::size': 0, //NONE
|
|
2913
|
-
//--------------------- 'select::tabindex': 0, moved to global
|
|
2914
|
-
'source::media': 0, //NONE new
|
|
2915
|
-
'source::src': 1, //URI new
|
|
2916
|
-
'source::type': 0, //NONE new
|
|
2917
|
-
'style::media': 0, //NONE new
|
|
2918
|
-
'style::scoped': 0, //NONE new
|
|
2919
|
-
'style::type': 0, //NONE new
|
|
2920
|
-
//--------------------- 'table::align': 0,
|
|
2921
|
-
//--------------------- 'table::bgcolor': 0,
|
|
2922
|
-
'table::border': 0, //NONE
|
|
2923
|
-
//--------------------- 'table::cellpadding': 0,
|
|
2924
|
-
//--------------------- 'table::cellspacing': 0,
|
|
2925
|
-
//--------------------- 'table::frame': 0,
|
|
2926
|
-
//--------------------- 'table::rules': 0,
|
|
2927
|
-
//--------------------- 'table::summary': 0,
|
|
2928
|
-
//--------------------- 'table::width': 0,
|
|
2929
|
-
//--------------------- 'tbody::align': 0,
|
|
2930
|
-
//--------------------- 'tbody::char': 0,
|
|
2931
|
-
//--------------------- 'tbody::charoff': 0,
|
|
2932
|
-
//--------------------- 'tbody::valign': 0,
|
|
2933
|
-
//--------------------- 'td::abbr': 0,
|
|
2934
|
-
//--------------------- 'td::align': 0,
|
|
2935
|
-
//--------------------- 'td::axis': 0,
|
|
2936
|
-
//--------------------- 'td::bgcolor': 0,
|
|
2937
|
-
//--------------------- 'td::char': 0,
|
|
2938
|
-
//--------------------- 'td::charoff': 0,
|
|
2939
|
-
'td::colspan': 0, //NONE
|
|
2940
|
-
'td::headers': 6, //IDREFS
|
|
2941
|
-
//--------------------- 'td::height': 0,
|
|
2942
|
-
//--------------------- 'td::nowrap': 0,
|
|
2943
|
-
'td::rowspan': 0, //NONE
|
|
2944
|
-
//--------------------- 'td::scope': 0,
|
|
2945
|
-
//--------------------- 'td::valign': 0,
|
|
2946
|
-
//--------------------- 'td::width': 0,
|
|
2947
|
-
//--------------------- 'textarea::accesskey': 0, moved to global
|
|
2948
|
-
'textarea::autofocus': 0, //NONE new
|
|
2949
|
-
'textarea::cols': 0, //NONE
|
|
2950
|
-
'textarea::disabled': 0, //NONE
|
|
2951
|
-
'textarea::form': 0, //NONE new
|
|
2952
|
-
'textarea::maxlength': 0, //NONE new
|
|
2953
|
-
'textarea::name': 8, //LOCAL_NAME
|
|
2954
|
-
//--------------------- 'textarea::onblur': 2,
|
|
2955
|
-
//--------------------- 'textarea::onchange': 2,
|
|
2956
|
-
//--------------------- 'textarea::onfocus': 2,
|
|
2957
|
-
//--------------------- 'textarea::onselect': 2,
|
|
2958
|
-
'textarea::placeholder': 0, //NONE new
|
|
2959
|
-
'textarea::readonly': 0, //NONE
|
|
2960
|
-
'textarea::required': 0, //NONE new
|
|
2961
|
-
'textarea::rows': 0, //NONE
|
|
2962
|
-
'textarea::wrap': 0, //NONE new
|
|
2963
|
-
//--------------------- 'textarea::tabindex': 0, moved to global
|
|
2964
|
-
//--------------------- 'tfoot::align': 0,
|
|
2965
|
-
//--------------------- 'tfoot::char': 0,
|
|
2966
|
-
//--------------------- 'tfoot::charoff': 0,
|
|
2967
|
-
//--------------------- 'tfoot::valign': 0,
|
|
2968
|
-
//--------------------- 'th::abbr': 0,
|
|
2969
|
-
//--------------------- 'th::align': 0,
|
|
2970
|
-
//--------------------- 'th::axis': 0,
|
|
2971
|
-
//--------------------- 'th::bgcolor': 0,
|
|
2972
|
-
//--------------------- 'th::char': 0,
|
|
2973
|
-
//--------------------- 'th::charoff': 0,
|
|
2974
|
-
'th::colspan': 0, //NONE
|
|
2975
|
-
'th::headers': 6, //IDREFS
|
|
2976
|
-
//--------------------- 'th::height': 0,
|
|
2977
|
-
//--------------------- 'th::nowrap': 0,
|
|
2978
|
-
'th::rowspan': 0, //NONE
|
|
2979
|
-
'th::scope': 0, //NONE
|
|
2980
|
-
//--------------------- 'th::valign': 0,
|
|
2981
|
-
//--------------------- 'th::width': 0,
|
|
2982
|
-
//--------------------- 'thead::align': 0,
|
|
2983
|
-
//--------------------- 'thead::char': 0,
|
|
2984
|
-
//--------------------- 'thead::charoff': 0,
|
|
2985
|
-
//--------------------- 'thead::valign': 0,
|
|
2986
|
-
'time::datetime': 0, //NONE new
|
|
2987
|
-
'time::pubdate': 0, //NONE new
|
|
2988
|
-
//--------------------- 'tr::align': 0,
|
|
2989
|
-
//--------------------- 'tr::bgcolor': 0,
|
|
2990
|
-
//--------------------- 'tr::char': 0,
|
|
2991
|
-
//--------------------- 'tr::charoff': 0,
|
|
2992
|
-
//--------------------- 'tr::valign': 0,
|
|
2993
|
-
'track::default': 0, //NONE new
|
|
2994
|
-
'track::kind': 0, //NONE new
|
|
2995
|
-
'track::label': 0, //NONE new
|
|
2996
|
-
'track::src': 1, //URI new
|
|
2997
|
-
'track::srclang': 0, //NONE new
|
|
2998
|
-
//--------------------- 'ul::compact': 0,
|
|
2999
|
-
//--------------------- 'ul::type': 0
|
|
3000
|
-
'video::autoplay': 0, //NONE new
|
|
3001
|
-
'video::controls': 0, //NONE new
|
|
3002
|
-
'video::height': 0, //NONE new
|
|
3003
|
-
'video::loop': 0, //NONE new
|
|
3004
|
-
'video::mediagroup': 0, //NONE new
|
|
3005
|
-
'video::poster': 1, //URI new
|
|
3006
|
-
'video::preload': 0, //NONE new
|
|
3007
|
-
'video::src': 1, //URI new
|
|
3008
|
-
'video::width': 0 //NONE new
|
|
3009
|
-
};
|
|
3010
|
-
html4.eflags = {
|
|
3011
|
-
OPTIONAL_ENDTAG: 1,
|
|
3012
|
-
EMPTY: 2,
|
|
3013
|
-
CDATA: 4,
|
|
3014
|
-
RCDATA: 8,
|
|
3015
|
-
UNSAFE: 16,
|
|
3016
|
-
FOLDABLE: 32,
|
|
3017
|
-
SCRIPT: 64,
|
|
3018
|
-
STYLE: 128
|
|
3019
|
-
};
|
|
3020
|
-
html4.ELEMENTS = {
|
|
3021
|
-
'a': 0,
|
|
3022
|
-
'abbr': 0,
|
|
3023
|
-
//--------------------- 'acronym': 0,
|
|
3024
|
-
'address': 0,
|
|
3025
|
-
//--------------------- 'applet': 16,
|
|
3026
|
-
'area': 2, //EMPTY
|
|
3027
|
-
'article': 0, //new
|
|
3028
|
-
'aside': 0, //new
|
|
3029
|
-
'audio': 0, //new
|
|
3030
|
-
'b': 0,
|
|
3031
|
-
'base': 18, //EMPTY, UNSAFE
|
|
3032
|
-
//--------------------- 'basefont': 18,
|
|
3033
|
-
'bdi': 0, //new
|
|
3034
|
-
'bdo': 0,
|
|
3035
|
-
//--------------------- 'big': 0,
|
|
3036
|
-
'blockquote': 0,
|
|
3037
|
-
'body': 49, //OPTIONAL_ENDTAG, UNSAFE, FOLDABLE
|
|
3038
|
-
'br': 2, //EMPTY
|
|
3039
|
-
'button': 0,
|
|
3040
|
-
'canvas': 0,
|
|
3041
|
-
'caption': 0,
|
|
3042
|
-
//--------------------- 'center': 0,
|
|
3043
|
-
'cite': 0,
|
|
3044
|
-
'code': 0,
|
|
3045
|
-
'col': 2, //EMPTY
|
|
3046
|
-
'colgroup': 1, //OPTIONAL_ENDTAG
|
|
3047
|
-
'command': 2, //EMPTY new
|
|
3048
|
-
'datalist': 0, //new
|
|
3049
|
-
'dd': 1, //OPTIONAL_ENDTAG
|
|
3050
|
-
'del': 0,
|
|
3051
|
-
'details': 0, //new
|
|
3052
|
-
'dfn': 0,
|
|
3053
|
-
//--------------------- 'dir': 0,
|
|
3054
|
-
'div': 0,
|
|
3055
|
-
'dl': 0,
|
|
3056
|
-
'dt': 1, //OPTIONAL_ENDTAG
|
|
3057
|
-
'em': 0,
|
|
3058
|
-
'embed': 18, //EMPTY, UNSAFE new
|
|
3059
|
-
'fieldset': 0,
|
|
3060
|
-
'figcaption': 0, //new
|
|
3061
|
-
'figure': 0, //new
|
|
3062
|
-
//--------------------- 'font': 0,
|
|
3063
|
-
'footer': 0, //new
|
|
3064
|
-
'form': 0,
|
|
3065
|
-
//--------------------- 'frame': 18,
|
|
3066
|
-
//--------------------- 'frameset': 16,
|
|
3067
|
-
'h1': 0,
|
|
3068
|
-
'h2': 0,
|
|
3069
|
-
'h3': 0,
|
|
3070
|
-
'h4': 0,
|
|
3071
|
-
'h5': 0,
|
|
3072
|
-
'h6': 0,
|
|
3073
|
-
'head': 49, //OPTIONAL_ENDTAG, UNSAFE, FOLDABLE
|
|
3074
|
-
'header': 0, //new
|
|
3075
|
-
'hgroup': 0, //new
|
|
3076
|
-
'hr': 2, //EMPTY
|
|
3077
|
-
'html': 49, //OPTIONAL_ENDTAG, UNSAFE, FOLDABLE
|
|
3078
|
-
'i': 0,
|
|
3079
|
-
'iframe': 0, //new
|
|
3080
|
-
'img': 2,//EMPTY
|
|
3081
|
-
'input': 2, //EMPTY
|
|
3082
|
-
'ins': 0,
|
|
3083
|
-
//--------------------- 'isindex': 18,
|
|
3084
|
-
'kbd': 0,
|
|
3085
|
-
'keygen': 2, //EMPTY new
|
|
3086
|
-
'label': 0,
|
|
3087
|
-
'legend': 0,
|
|
3088
|
-
'li': 1, //OPTIONAL_ENDTAG
|
|
3089
|
-
'link': 18, //EMPTY, UNSAFE
|
|
3090
|
-
'map': 0,
|
|
3091
|
-
'mark': 0, //new
|
|
3092
|
-
'menu': 0,
|
|
3093
|
-
'meta': 18, //EMPTY, UNSAFE
|
|
3094
|
-
'meter': 0, //new
|
|
3095
|
-
'nav': 0,
|
|
3096
|
-
//--------------------- 'nobr': 0,
|
|
3097
|
-
//--------------------- 'noembed': 4,
|
|
3098
|
-
//--------------------- 'noframes': 20,
|
|
3099
|
-
'noscript': 20, //CDATA, UNSAFE
|
|
3100
|
-
'object': 16, //UNSAFE
|
|
3101
|
-
'ol': 0,
|
|
3102
|
-
'optgroup': 1, //OPTIONAL_ENDTAG new !!!!vorher 0
|
|
3103
|
-
'option': 1, //OPTIONAL_ENDTAG
|
|
3104
|
-
'output': 0, //new
|
|
3105
|
-
'p': 1, //OPTIONAL_ENDTAG
|
|
3106
|
-
'param': 18, //EMPTY, UNSAFE
|
|
3107
|
-
'pre': 0,
|
|
3108
|
-
'progress': 0, //new
|
|
3109
|
-
'q': 0,
|
|
3110
|
-
'rp': 1, //OPTIONAL_ENDTAG new
|
|
3111
|
-
'rt': 1, //OPTIONAL_ENDTAG new
|
|
3112
|
-
'ruby': 0, //new
|
|
3113
|
-
's': 0,
|
|
3114
|
-
'samp': 0,
|
|
3115
|
-
'script': 84, //CDATA, UNSAFE, SCRIPT
|
|
3116
|
-
'section': 0, //new
|
|
3117
|
-
'select': 0,
|
|
3118
|
-
'small': 0,
|
|
3119
|
-
'source': 2, //EMPTY new
|
|
3120
|
-
'span': 0,
|
|
3121
|
-
//--------------------- 'strike': 0,
|
|
3122
|
-
'strong': 0,
|
|
3123
|
-
'style': 148, //CDATA, UNSAFE, STYLE
|
|
3124
|
-
'sub': 0,
|
|
3125
|
-
'summary': 0, //new
|
|
3126
|
-
'sup': 0,
|
|
3127
|
-
'table': 0,
|
|
3128
|
-
'tbody': 1, //OPTIONAL_ENDTAG
|
|
3129
|
-
'td': 1, //OPTIONAL_ENDTAG
|
|
3130
|
-
'textarea': 8, //RCDATA
|
|
3131
|
-
'tfoot': 1, //OPTIONAL_ENDTAG
|
|
3132
|
-
'th': 1, //OPTIONAL_ENDTAG
|
|
3133
|
-
'thead': 1, //OPTIONAL_ENDTAG
|
|
3134
|
-
'time': 0, //new
|
|
3135
|
-
'title': 24, //RCDATA, UNSAFE
|
|
3136
|
-
'tr': 1, //OPTIONAL_ENDTAG
|
|
3137
|
-
'track': 2, //EMPTY new
|
|
3138
|
-
//--------------------- 'tt': 0,
|
|
3139
|
-
'u': 0,
|
|
3140
|
-
'ul': 0,
|
|
3141
|
-
'var': 0,
|
|
3142
|
-
'video': 0, //new
|
|
3143
|
-
'wbr': 2 //EMPTY new
|
|
3144
|
-
};
|
|
3145
|
-
html4.ueffects = {
|
|
3146
|
-
NOT_LOADED: 0,
|
|
3147
|
-
SAME_DOCUMENT: 1,
|
|
3148
|
-
NEW_DOCUMENT: 2
|
|
3149
|
-
};
|
|
3150
|
-
html4.URIEFFECTS = {
|
|
3151
|
-
'a::href': 2, //NEW_DOCUMENT
|
|
3152
|
-
'area::href': 2, //NEW_DOCUMENT
|
|
3153
|
-
'audio::src': 1, //SAME_DOCUMENT new
|
|
3154
|
-
'base::href':2, //NEW_DOCUMENT new
|
|
3155
|
-
'blockquote::cite': 0, //NOT_LOADED
|
|
3156
|
-
//--------------------- 'body::background': 1,
|
|
3157
|
-
'button::formaction': 2, //NEW_DOCUMENT new
|
|
3158
|
-
'command::icon': 1, //SAME_DOCUMENT new
|
|
3159
|
-
'del::cite': 0, //NOT_LOADED
|
|
3160
|
-
'embed::src': 1, //SAME_DOCUMENT new
|
|
3161
|
-
'form::action': 2, //NEW_DOCUMENT
|
|
3162
|
-
'html:: manifest': 1, //SAME_DOCUMENT new
|
|
3163
|
-
'iframe::src': 1, //SAME_DOCUMENT new
|
|
3164
|
-
'img::src': 1, //SAME_DOCUMENT
|
|
3165
|
-
'input::formaction': 2, //NEW_DOCUMENT new
|
|
3166
|
-
'input::src': 1, //SAME_DOCUMENT
|
|
3167
|
-
'ins::cite': 0, //NOT_LOADED
|
|
3168
|
-
'link::href': 2, //NEW_DOCUMENT new
|
|
3169
|
-
'object::data': 1, //SAME_DOCUMENT new
|
|
3170
|
-
'q::cite': 0, //NOT_LOADED
|
|
3171
|
-
'script::src': 1, //SAME_DOCUMENT new
|
|
3172
|
-
'source::src': 1, //SAME_DOCUMENT new
|
|
3173
|
-
'track::src': 1, //SAME_DOCUMENT new
|
|
3174
|
-
'video::poster': 1, //SAME_DOCUMENT new
|
|
3175
|
-
'video::src': 1 //SAME_DOCUMENT new
|
|
3176
|
-
};
|
|
3177
|
-
html4.ltypes = {
|
|
3178
|
-
UNSANDBOXED: 2,
|
|
3179
|
-
SANDBOXED: 1,
|
|
3180
|
-
DATA: 0
|
|
3181
|
-
};
|
|
3182
|
-
html4.LOADERTYPES = {
|
|
3183
|
-
'a::href': 2, //UNSANDBOXED
|
|
3184
|
-
'area::href': 2, //UNSANDBOXED
|
|
3185
|
-
'audio::src': 1, //SANDBOXED new
|
|
3186
|
-
'base::href': 2, //UNSANDBOXED new
|
|
3187
|
-
'blockquote::cite': 2, //UNSANDBOXED
|
|
3188
|
-
//--------------------- 'body::background': 1,
|
|
3189
|
-
'button::formaction': 2, //UNSANDBOXED new
|
|
3190
|
-
'command::icon': 1, //SANDBOXED new
|
|
3191
|
-
'del::cite': 2, //UNSANDBOXED
|
|
3192
|
-
'embed::src': 1, //SANDBOXED new
|
|
3193
|
-
'form::action': 2, //UNSANDBOXED
|
|
3194
|
-
'html:: manifest': 1, //SANDBOXED new
|
|
3195
|
-
'iframe::src': 1, //SANDBOXED new
|
|
3196
|
-
'img::src': 1, //SANDBOXED
|
|
3197
|
-
'input::formaction': 2, //UNSANDBOXED new
|
|
3198
|
-
'input::src': 1, //SANDBOXED
|
|
3199
|
-
'ins::cite': 2, //UNSANDBOXED
|
|
3200
|
-
'link::href': 2, //UNSANDBOXED new
|
|
3201
|
-
'object::data': 0, //DATA new
|
|
3202
|
-
'q::cite': 2, //UNSANDBOXED
|
|
3203
|
-
'script::src': 1, //SANDBOXED new
|
|
3204
|
-
'source::src': 1, //SANDBOXED new
|
|
3205
|
-
'track::src': 1, //SANDBOXED new
|
|
3206
|
-
'video::poster': 1, //SANDBOXED new
|
|
3207
|
-
'video::src': 1 //SANDBOXED new
|
|
3208
|
-
};if (typeof window !== 'undefined') {
|
|
3209
|
-
window['html4'] = html4;
|
|
3210
|
-
}// Copyright (C) 2006 Google Inc.
|
|
3211
|
-
//
|
|
3212
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
3213
|
-
// you may not use this file except in compliance with the License.
|
|
3214
|
-
// You may obtain a copy of the License at
|
|
3215
|
-
//
|
|
3216
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
3217
|
-
//
|
|
3218
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
3219
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
3220
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3221
|
-
// See the License for the specific language governing permissions and
|
|
3222
|
-
// limitations under the License.
|
|
3223
|
-
|
|
3224
|
-
/**
|
|
3225
|
-
* @fileoverview
|
|
3226
|
-
* An HTML sanitizer that can satisfy a variety of security policies.
|
|
3227
|
-
*
|
|
3228
|
-
* <p>
|
|
3229
|
-
* The HTML sanitizer is built around a SAX parser and HTML element and
|
|
3230
|
-
* attributes schemas.
|
|
3231
|
-
*
|
|
3232
|
-
* If the cssparser is loaded, inline styles are sanitized using the
|
|
3233
|
-
* css property and value schemas. Else they are remove during
|
|
3234
|
-
* sanitization.
|
|
3235
|
-
*
|
|
3236
|
-
* If it exists, uses parseCssDeclarations, sanitizeCssProperty, cssSchema
|
|
3237
|
-
*
|
|
3238
|
-
* @author mikesamuel@gmail.com
|
|
3239
|
-
* @author jasvir@gmail.com
|
|
3240
|
-
* \@requires html4
|
|
3241
|
-
* \@overrides window
|
|
3242
|
-
* \@provides html, html_sanitize
|
|
3243
|
-
*/
|
|
3244
|
-
|
|
3245
|
-
/**
|
|
3246
|
-
* \@namespace
|
|
3247
|
-
*/
|
|
3248
|
-
var html = (function(html4) {
|
|
3249
|
-
|
|
3250
|
-
// For closure compiler
|
|
3251
|
-
var parseCssDeclarations, sanitizeCssProperty, cssSchema;
|
|
3252
|
-
if ('undefined' !== typeof window) {
|
|
3253
|
-
parseCssDeclarations = window['parseCssDeclarations'];
|
|
3254
|
-
sanitizeCssProperty = window['sanitizeCssProperty'];
|
|
3255
|
-
cssSchema = window['cssSchema'];
|
|
3256
|
-
}
|
|
3257
|
-
|
|
3258
|
-
var lcase;
|
|
3259
|
-
// The below may not be true on browsers in the Turkish locale.
|
|
3260
|
-
if ('script' === 'SCRIPT'.toLowerCase()) {
|
|
3261
|
-
lcase = function(s) { return s.toLowerCase(); };
|
|
3262
|
-
} else {
|
|
3263
|
-
/**
|
|
3264
|
-
* {\@updoc
|
|
3265
|
-
* $ lcase('SCRIPT')
|
|
3266
|
-
* # 'script'
|
|
3267
|
-
* $ lcase('script')
|
|
3268
|
-
* # 'script'
|
|
3269
|
-
* }
|
|
3270
|
-
*/
|
|
3271
|
-
lcase = function(s) {
|
|
3272
|
-
return s.replace(
|
|
3273
|
-
/[A-Z]/g,
|
|
3274
|
-
function(ch) {
|
|
3275
|
-
return String.fromCharCode(ch.charCodeAt(0) | 32);
|
|
3276
|
-
});
|
|
3277
|
-
};
|
|
3278
|
-
}
|
|
3279
|
-
|
|
3280
|
-
// The keys of this object must be 'quoted' or JSCompiler will mangle them!
|
|
3281
|
-
var ENTITIES = {
|
|
3282
|
-
'lt': '<',
|
|
3283
|
-
'gt': '>',
|
|
3284
|
-
'amp': '&',
|
|
3285
|
-
'nbsp': '\xA0',
|
|
3286
|
-
'quot': '"',
|
|
3287
|
-
'apos': '\''
|
|
3288
|
-
};
|
|
3289
|
-
|
|
3290
|
-
var decimalEscapeRe = /^#(\d+)$/;
|
|
3291
|
-
var hexEscapeRe = /^#x([0-9A-Fa-f]+)$/;
|
|
3292
|
-
/**
|
|
3293
|
-
* Decodes an HTML entity.
|
|
3294
|
-
*
|
|
3295
|
-
* {\@updoc
|
|
3296
|
-
* $ lookupEntity('lt')
|
|
3297
|
-
* # '<'
|
|
3298
|
-
* $ lookupEntity('GT')
|
|
3299
|
-
* # '>'
|
|
3300
|
-
* $ lookupEntity('amp')
|
|
3301
|
-
* # '&'
|
|
3302
|
-
* $ lookupEntity('nbsp')
|
|
3303
|
-
* # '\xA0'
|
|
3304
|
-
* $ lookupEntity('apos')
|
|
3305
|
-
* # "'"
|
|
3306
|
-
* $ lookupEntity('quot')
|
|
3307
|
-
* # '"'
|
|
3308
|
-
* $ lookupEntity('#xa')
|
|
3309
|
-
* # '\n'
|
|
3310
|
-
* $ lookupEntity('#10')
|
|
3311
|
-
* # '\n'
|
|
3312
|
-
* $ lookupEntity('#x0a')
|
|
3313
|
-
* # '\n'
|
|
3314
|
-
* $ lookupEntity('#010')
|
|
3315
|
-
* # '\n'
|
|
3316
|
-
* $ lookupEntity('#x00A')
|
|
3317
|
-
* # '\n'
|
|
3318
|
-
* $ lookupEntity('Pi') // Known failure
|
|
3319
|
-
* # '\u03A0'
|
|
3320
|
-
* $ lookupEntity('pi') // Known failure
|
|
3321
|
-
* # '\u03C0'
|
|
3322
|
-
* }
|
|
3323
|
-
*
|
|
3324
|
-
* @param {string} name the content between the '&' and the ';'.
|
|
3325
|
-
* @return {string} a single unicode code-point as a string.
|
|
3326
|
-
*/
|
|
3327
|
-
function lookupEntity(name) {
|
|
3328
|
-
name = lcase(name); // TODO: π is different from Π
|
|
3329
|
-
if (ENTITIES.hasOwnProperty(name)) { return ENTITIES[name]; }
|
|
3330
|
-
var m = name.match(decimalEscapeRe);
|
|
3331
|
-
if (m) {
|
|
3332
|
-
return String.fromCharCode(parseInt(m[1], 10));
|
|
3333
|
-
} else if (!!(m = name.match(hexEscapeRe))) {
|
|
3334
|
-
return String.fromCharCode(parseInt(m[1], 16));
|
|
3335
|
-
}
|
|
3336
|
-
return '';
|
|
3337
|
-
}
|
|
3338
|
-
|
|
3339
|
-
function decodeOneEntity(_, name) {
|
|
3340
|
-
return lookupEntity(name);
|
|
3341
|
-
}
|
|
3342
|
-
|
|
3343
|
-
var nulRe = /\0/g;
|
|
3344
|
-
function stripNULs(s) {
|
|
3345
|
-
return s.replace(nulRe, '');
|
|
3346
|
-
}
|
|
3347
|
-
|
|
3348
|
-
var entityRe = /&(#\d+|#x[0-9A-Fa-f]+|\w+);/g;
|
|
3349
|
-
/**
|
|
3350
|
-
* The plain text of a chunk of HTML CDATA which possibly containing.
|
|
3351
|
-
*
|
|
3352
|
-
* {\@updoc
|
|
3353
|
-
* $ unescapeEntities('')
|
|
3354
|
-
* # ''
|
|
3355
|
-
* $ unescapeEntities('hello World!')
|
|
3356
|
-
* # 'hello World!'
|
|
3357
|
-
* $ unescapeEntities('1 < 2 && 4 > 3 ')
|
|
3358
|
-
* # '1 < 2 && 4 > 3\n'
|
|
3359
|
-
* $ unescapeEntities('<< <- unfinished entity>')
|
|
3360
|
-
* # '<< <- unfinished entity>'
|
|
3361
|
-
* $ unescapeEntities('/foo?bar=baz©=true') // & often unescaped in URLS
|
|
3362
|
-
* # '/foo?bar=baz©=true'
|
|
3363
|
-
* $ unescapeEntities('pi=ππ, Pi=Π\u03A0') // FIXME: known failure
|
|
3364
|
-
* # 'pi=\u03C0\u03c0, Pi=\u03A0\u03A0'
|
|
3365
|
-
* }
|
|
3366
|
-
*
|
|
3367
|
-
* @param {string} s a chunk of HTML CDATA. It must not start or end inside
|
|
3368
|
-
* an HTML entity.
|
|
3369
|
-
*/
|
|
3370
|
-
function unescapeEntities(s) {
|
|
3371
|
-
return s.replace(entityRe, decodeOneEntity);
|
|
3372
|
-
}
|
|
3373
|
-
|
|
3374
|
-
var ampRe = /&/g;
|
|
3375
|
-
var looseAmpRe = /&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi;
|
|
3376
|
-
var ltRe = /[<]/g;
|
|
3377
|
-
var gtRe = />/g;
|
|
3378
|
-
var quotRe = /\"/g;
|
|
3379
|
-
|
|
3380
|
-
/**
|
|
3381
|
-
* Escapes HTML special characters in attribute values.
|
|
3382
|
-
*
|
|
3383
|
-
* {\@updoc
|
|
3384
|
-
* $ escapeAttrib('')
|
|
3385
|
-
* # ''
|
|
3386
|
-
* $ escapeAttrib('"<<&==&>>"') // Do not just escape the first occurrence.
|
|
3387
|
-
* # '"<<&==&>>"'
|
|
3388
|
-
* $ escapeAttrib('Hello <World>!')
|
|
3389
|
-
* # 'Hello <World>!'
|
|
3390
|
-
* }
|
|
3391
|
-
*/
|
|
3392
|
-
function escapeAttrib(s) {
|
|
3393
|
-
return ('' + s).replace(ampRe, '&').replace(ltRe, '<')
|
|
3394
|
-
.replace(gtRe, '>').replace(quotRe, '"');
|
|
3395
|
-
}
|
|
3396
|
-
|
|
3397
|
-
/**
|
|
3398
|
-
* Escape entities in RCDATA that can be escaped without changing the meaning.
|
|
3399
|
-
* {\@updoc
|
|
3400
|
-
* $ normalizeRCData('1 < 2 && 3 > 4 && 5 < 7&8')
|
|
3401
|
-
* # '1 < 2 && 3 > 4 && 5 < 7&8'
|
|
3402
|
-
* }
|
|
3403
|
-
*/
|
|
3404
|
-
function normalizeRCData(rcdata) {
|
|
3405
|
-
return rcdata
|
|
3406
|
-
.replace(looseAmpRe, '&$1')
|
|
3407
|
-
.replace(ltRe, '<')
|
|
3408
|
-
.replace(gtRe, '>');
|
|
3409
|
-
}
|
|
3410
|
-
|
|
3411
|
-
// TODO(mikesamuel): validate sanitizer regexs against the HTML5 grammar at
|
|
3412
|
-
// http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html
|
|
3413
|
-
// http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html
|
|
3414
|
-
// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html
|
|
3415
|
-
// http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html
|
|
3416
|
-
|
|
3417
|
-
// We initially split input so that potentially meaningful characters
|
|
3418
|
-
// like '<' and '>' are separate tokens, using a fast dumb process that
|
|
3419
|
-
// ignores quoting. Then we walk that token stream, and when we see a
|
|
3420
|
-
// '<' that's the start of a tag, we use ATTR_RE to extract tag
|
|
3421
|
-
// attributes from the next token. That token will never have a '>'
|
|
3422
|
-
// character. However, it might have an unbalanced quote character, and
|
|
3423
|
-
// when we see that, we combine additional tokens to balance the quote.
|
|
3424
|
-
|
|
3425
|
-
var ATTR_RE = new RegExp(
|
|
3426
|
-
'^\\s*' +
|
|
3427
|
-
'([a-z][a-z-]*)' + // 1 = Attribute name
|
|
3428
|
-
'(?:' + (
|
|
3429
|
-
'\\s*(=)\\s*' + // 2 = Is there a value?
|
|
3430
|
-
'(' + ( // 3 = Attribute value
|
|
3431
|
-
// TODO(felix8a): maybe use backref to match quotes
|
|
3432
|
-
'(\")[^\"]*(\"|$)' + // 4, 5 = Double-quoted string
|
|
3433
|
-
'|' +
|
|
3434
|
-
'(\')[^\']*(\'|$)' + // 6, 7 = Single-quoted string
|
|
3435
|
-
'|' +
|
|
3436
|
-
// Positive lookahead to prevent interpretation of
|
|
3437
|
-
// <foo a= b=c> as <foo a='b=c'>
|
|
3438
|
-
// TODO(felix8a): might be able to drop this case
|
|
3439
|
-
'(?=[a-z][a-z-]*\\s*=)' +
|
|
3440
|
-
'|' +
|
|
3441
|
-
// Unquoted value that isn't an attribute name
|
|
3442
|
-
// (since we didn't match the positive lookahead above)
|
|
3443
|
-
'[^\"\'\\s]*' ) +
|
|
3444
|
-
')' ) +
|
|
3445
|
-
')?',
|
|
3446
|
-
'i');
|
|
3447
|
-
|
|
3448
|
-
var ENTITY_RE = /^(#[0-9]+|#x[0-9a-f]+|\w+);/i;
|
|
3449
|
-
|
|
3450
|
-
// false on IE<=8, true on most other browsers
|
|
3451
|
-
var splitWillCapture = ('a,b'.split(/(,)/).length === 3);
|
|
3452
|
-
|
|
3453
|
-
// bitmask for tags with special parsing, like <script> and <textarea>
|
|
3454
|
-
var EFLAGS_TEXT = html4.eflags.CDATA | html4.eflags.RCDATA;
|
|
3455
|
-
|
|
3456
|
-
/**
|
|
3457
|
-
* Given a SAX-like event handler, produce a function that feeds those
|
|
3458
|
-
* events and a parameter to the event handler.
|
|
3459
|
-
*
|
|
3460
|
-
* The event handler has the form:{@code
|
|
3461
|
-
* {
|
|
3462
|
-
* // Name is an upper-case HTML tag name. Attribs is an array of
|
|
3463
|
-
* // alternating upper-case attribute names, and attribute values. The
|
|
3464
|
-
* // attribs array is reused by the parser. Param is the value passed to
|
|
3465
|
-
* // the saxParser.
|
|
3466
|
-
* startTag: function (name, attribs, param) { ... },
|
|
3467
|
-
* endTag: function (name, param) { ... },
|
|
3468
|
-
* pcdata: function (text, param) { ... },
|
|
3469
|
-
* rcdata: function (text, param) { ... },
|
|
3470
|
-
* cdata: function (text, param) { ... },
|
|
3471
|
-
* startDoc: function (param) { ... },
|
|
3472
|
-
* endDoc: function (param) { ... }
|
|
3473
|
-
* }}
|
|
3474
|
-
*
|
|
3475
|
-
* @param {Object} handler a record containing event handlers.
|
|
3476
|
-
* @return {function(string, Object)} A function that takes a chunk of HTML
|
|
3477
|
-
* and a parameter. The parameter is passed on to the handler methods.
|
|
3478
|
-
*/
|
|
3479
|
-
function makeSaxParser(handler) {
|
|
3480
|
-
return function(htmlText, param) {
|
|
3481
|
-
return parse(htmlText, handler, param);
|
|
3482
|
-
};
|
|
3483
|
-
}
|
|
3484
|
-
|
|
3485
|
-
// Parsing strategy is to split input into parts that might be lexically
|
|
3486
|
-
// meaningful (every ">" becomes a separate part), and then recombine
|
|
3487
|
-
// parts if we discover they're in a different context.
|
|
3488
|
-
|
|
3489
|
-
// Note, html-sanitizer filters unknown tags here, even though they also
|
|
3490
|
-
// get filtered out by the sanitizer's handler. This is back-compat
|
|
3491
|
-
// behavior; makeSaxParser is public.
|
|
3492
|
-
|
|
3493
|
-
// TODO(felix8a): Significant performance regressions from -legacy,
|
|
3494
|
-
// tested on
|
|
3495
|
-
// Chrome 18.0
|
|
3496
|
-
// Firefox 11.0
|
|
3497
|
-
// IE 6, 7, 8, 9
|
|
3498
|
-
// Opera 11.61
|
|
3499
|
-
// Safari 5.1.3
|
|
3500
|
-
// Many of these are unusual patterns that are linearly slower and still
|
|
3501
|
-
// pretty fast (eg 1ms to 5ms), so not necessarily worth fixing.
|
|
3502
|
-
|
|
3503
|
-
// TODO(felix8a): "<script> && && && ... <\/script>" is slower on all
|
|
3504
|
-
// browsers. The hotspot is htmlSplit.
|
|
3505
|
-
|
|
3506
|
-
// TODO(felix8a): "<p title='>>>>...'><\/p>" is slower on all browsers.
|
|
3507
|
-
// This is partly htmlSplit, but the hotspot is parseTagAndAttrs.
|
|
3508
|
-
|
|
3509
|
-
// TODO(felix8a): "<a><\/a><a><\/a>..." is slower on IE9.
|
|
3510
|
-
// "<a>1<\/a><a>1<\/a>..." is faster, "<a><\/a>2<a><\/a>2..." is faster.
|
|
3511
|
-
|
|
3512
|
-
// TODO(felix8a): "<p<p<p..." is slower on IE[6-8]
|
|
3513
|
-
|
|
3514
|
-
var continuationMarker = {};
|
|
3515
|
-
function parse(htmlText, handler, param) {
|
|
3516
|
-
var parts = htmlSplit(htmlText);
|
|
3517
|
-
var state = {
|
|
3518
|
-
noMoreGT: false,
|
|
3519
|
-
noMoreEndComments: false
|
|
3520
|
-
};
|
|
3521
|
-
parseCPS(handler, parts, 0, state, param);
|
|
3522
|
-
}
|
|
3523
|
-
|
|
3524
|
-
function continuationMaker(h, parts, initial, state, param) {
|
|
3525
|
-
return function () {
|
|
3526
|
-
parseCPS(h, parts, initial, state, param);
|
|
3527
|
-
};
|
|
3528
|
-
}
|
|
3529
|
-
|
|
3530
|
-
function parseCPS(h, parts, initial, state, param) {
|
|
3531
|
-
try {
|
|
3532
|
-
if (h.startDoc && initial == 0) { h.startDoc(param); }
|
|
3533
|
-
var m, p, tagName;
|
|
3534
|
-
for (var pos = initial, end = parts.length; pos < end;) {
|
|
3535
|
-
var current = parts[pos++];
|
|
3536
|
-
var next = parts[pos];
|
|
3537
|
-
switch (current) {
|
|
3538
|
-
case '&':
|
|
3539
|
-
if (ENTITY_RE.test(next)) {
|
|
3540
|
-
if (h.pcdata) {
|
|
3541
|
-
h.pcdata('&' + next, param, continuationMarker,
|
|
3542
|
-
continuationMaker(h, parts, pos, state, param));
|
|
3543
|
-
}
|
|
3544
|
-
pos++;
|
|
3545
|
-
} else {
|
|
3546
|
-
if (h.pcdata) { h.pcdata("&", param, continuationMarker,
|
|
3547
|
-
continuationMaker(h, parts, pos, state, param));
|
|
3548
|
-
}
|
|
3549
|
-
}
|
|
3550
|
-
break;
|
|
3551
|
-
case '<\/':
|
|
3552
|
-
if (m = /^(\w+)[^\'\"]*/.exec(next)) {
|
|
3553
|
-
if (m[0].length === next.length && parts[pos + 1] === '>') {
|
|
3554
|
-
// fast case, no attribute parsing needed
|
|
3555
|
-
pos += 2;
|
|
3556
|
-
tagName = lcase(m[1]);
|
|
3557
|
-
if (html4.ELEMENTS.hasOwnProperty(tagName)) {
|
|
3558
|
-
if (h.endTag) {
|
|
3559
|
-
h.endTag(tagName, param, continuationMarker,
|
|
3560
|
-
continuationMaker(h, parts, pos, state, param));
|
|
3561
|
-
}
|
|
3562
|
-
}
|
|
3563
|
-
} else {
|
|
3564
|
-
// slow case, need to parse attributes
|
|
3565
|
-
// TODO(felix8a): do we really care about misparsing this?
|
|
3566
|
-
pos = parseEndTag(
|
|
3567
|
-
parts, pos, h, param, continuationMarker, state);
|
|
3568
|
-
}
|
|
3569
|
-
} else {
|
|
3570
|
-
if (h.pcdata) {
|
|
3571
|
-
h.pcdata('</', param, continuationMarker,
|
|
3572
|
-
continuationMaker(h, parts, pos, state, param));
|
|
3573
|
-
}
|
|
3574
|
-
}
|
|
3575
|
-
break;
|
|
3576
|
-
case '<':
|
|
3577
|
-
if (m = /^(\w+)\s*\/?/.exec(next)) {
|
|
3578
|
-
if (m[0].length === next.length && parts[pos + 1] === '>') {
|
|
3579
|
-
// fast case, no attribute parsing needed
|
|
3580
|
-
pos += 2;
|
|
3581
|
-
tagName = lcase(m[1]);
|
|
3582
|
-
if (html4.ELEMENTS.hasOwnProperty(tagName)) {
|
|
3583
|
-
if (h.startTag) {
|
|
3584
|
-
h.startTag(tagName, [], param, continuationMarker,
|
|
3585
|
-
continuationMaker(h, parts, pos, state, param));
|
|
3586
|
-
}
|
|
3587
|
-
// tags like <script> and <textarea> have special parsing
|
|
3588
|
-
var eflags = html4.ELEMENTS[tagName];
|
|
3589
|
-
if (eflags & EFLAGS_TEXT) {
|
|
3590
|
-
var tag = { name: tagName, next: pos, eflags: eflags };
|
|
3591
|
-
pos = parseText(
|
|
3592
|
-
parts, tag, h, param, continuationMarker, state);
|
|
3593
|
-
}
|
|
3594
|
-
}
|
|
3595
|
-
} else {
|
|
3596
|
-
// slow case, need to parse attributes
|
|
3597
|
-
pos = parseStartTag(
|
|
3598
|
-
parts, pos, h, param, continuationMarker, state);
|
|
3599
|
-
}
|
|
3600
|
-
} else {
|
|
3601
|
-
if (h.pcdata) {
|
|
3602
|
-
h.pcdata('<', param, continuationMarker,
|
|
3603
|
-
continuationMaker(h, parts, pos, state, param));
|
|
3604
|
-
}
|
|
3605
|
-
}
|
|
3606
|
-
break;
|
|
3607
|
-
case '<\!--':
|
|
3608
|
-
// The pathological case is n copies of '<\!--' without '-->', and
|
|
3609
|
-
// repeated failure to find '-->' is quadratic. We avoid that by
|
|
3610
|
-
// remembering when search for '-->' fails.
|
|
3611
|
-
if (!state.noMoreEndComments) {
|
|
3612
|
-
// A comment <\!--x--> is split into three tokens:
|
|
3613
|
-
// '<\!--', 'x--', '>'
|
|
3614
|
-
// We want to find the next '>' token that has a preceding '--'.
|
|
3615
|
-
// pos is at the 'x--'.
|
|
3616
|
-
for (p = pos + 1; p < end; p++) {
|
|
3617
|
-
if (parts[p] === '>' && /--$/.test(parts[p - 1])) { break; }
|
|
3618
|
-
}
|
|
3619
|
-
if (p < end) {
|
|
3620
|
-
pos = p + 1;
|
|
3621
|
-
} else {
|
|
3622
|
-
state.noMoreEndComments = true;
|
|
3623
|
-
}
|
|
3624
|
-
}
|
|
3625
|
-
if (state.noMoreEndComments) {
|
|
3626
|
-
if (h.pcdata) {
|
|
3627
|
-
h.pcdata('<!--', param, continuationMarker,
|
|
3628
|
-
continuationMaker(h, parts, pos, state, param));
|
|
3629
|
-
}
|
|
3630
|
-
}
|
|
3631
|
-
break;
|
|
3632
|
-
case '<\!':
|
|
3633
|
-
if (!/^\w/.test(next)) {
|
|
3634
|
-
if (h.pcdata) {
|
|
3635
|
-
h.pcdata('<!', param, continuationMarker,
|
|
3636
|
-
continuationMaker(h, parts, pos, state, param));
|
|
3637
|
-
}
|
|
3638
|
-
} else {
|
|
3639
|
-
// similar to noMoreEndComment logic
|
|
3640
|
-
if (!state.noMoreGT) {
|
|
3641
|
-
for (p = pos + 1; p < end; p++) {
|
|
3642
|
-
if (parts[p] === '>') { break; }
|
|
3643
|
-
}
|
|
3644
|
-
if (p < end) {
|
|
3645
|
-
pos = p + 1;
|
|
3646
|
-
} else {
|
|
3647
|
-
state.noMoreGT = true;
|
|
3648
|
-
}
|
|
3649
|
-
}
|
|
3650
|
-
if (state.noMoreGT) {
|
|
3651
|
-
if (h.pcdata) {
|
|
3652
|
-
h.pcdata('<!', param, continuationMarker,
|
|
3653
|
-
continuationMaker(h, parts, pos, state, param));
|
|
3654
|
-
}
|
|
3655
|
-
}
|
|
3656
|
-
}
|
|
3657
|
-
break;
|
|
3658
|
-
case '<?':
|
|
3659
|
-
// similar to noMoreEndComment logic
|
|
3660
|
-
if (!state.noMoreGT) {
|
|
3661
|
-
for (p = pos + 1; p < end; p++) {
|
|
3662
|
-
if (parts[p] === '>') { break; }
|
|
3663
|
-
}
|
|
3664
|
-
if (p < end) {
|
|
3665
|
-
pos = p + 1;
|
|
3666
|
-
} else {
|
|
3667
|
-
state.noMoreGT = true;
|
|
3668
|
-
}
|
|
3669
|
-
}
|
|
3670
|
-
if (state.noMoreGT) {
|
|
3671
|
-
if (h.pcdata) {
|
|
3672
|
-
h.pcdata('<?', param, continuationMarker,
|
|
3673
|
-
continuationMaker(h, parts, pos, state, param));
|
|
3674
|
-
}
|
|
3675
|
-
}
|
|
3676
|
-
break;
|
|
3677
|
-
case '>':
|
|
3678
|
-
if (h.pcdata) {
|
|
3679
|
-
h.pcdata(">", param, continuationMarker,
|
|
3680
|
-
continuationMaker(h, parts, pos, state, param));
|
|
3681
|
-
}
|
|
3682
|
-
break;
|
|
3683
|
-
case '':
|
|
3684
|
-
break;
|
|
3685
|
-
default:
|
|
3686
|
-
if (h.pcdata) {
|
|
3687
|
-
h.pcdata(current, param, continuationMarker,
|
|
3688
|
-
continuationMaker(h, parts, pos, state, param));
|
|
3689
|
-
}
|
|
3690
|
-
break;
|
|
3691
|
-
}
|
|
3692
|
-
}
|
|
3693
|
-
if (h.endDoc) { h.endDoc(param); }
|
|
3694
|
-
} catch (e) {
|
|
3695
|
-
if (e !== continuationMarker) { throw e; }
|
|
3696
|
-
}
|
|
3697
|
-
}
|
|
3698
|
-
|
|
3699
|
-
// Split str into parts for the html parser.
|
|
3700
|
-
function htmlSplit(str) {
|
|
3701
|
-
// can't hoist this out of the function because of the re.exec loop.
|
|
3702
|
-
var re = /(<\/|<\!--|<[!?]|[&<>])/g;
|
|
3703
|
-
str += '';
|
|
3704
|
-
if (splitWillCapture) {
|
|
3705
|
-
return str.split(re);
|
|
3706
|
-
} else {
|
|
3707
|
-
var parts = [];
|
|
3708
|
-
var lastPos = 0;
|
|
3709
|
-
var m;
|
|
3710
|
-
while ((m = re.exec(str)) !== null) {
|
|
3711
|
-
parts.push(str.substring(lastPos, m.index));
|
|
3712
|
-
parts.push(m[0]);
|
|
3713
|
-
lastPos = m.index + m[0].length;
|
|
3714
|
-
}
|
|
3715
|
-
parts.push(str.substring(lastPos));
|
|
3716
|
-
return parts;
|
|
3717
|
-
}
|
|
3718
|
-
}
|
|
3719
|
-
|
|
3720
|
-
function parseEndTag(parts, pos, h, param, continuationMarker, state) {
|
|
3721
|
-
var tag = parseTagAndAttrs(parts, pos);
|
|
3722
|
-
// drop unclosed tags
|
|
3723
|
-
if (!tag) { return parts.length; }
|
|
3724
|
-
if (tag.eflags !== void 0) {
|
|
3725
|
-
if (h.endTag) {
|
|
3726
|
-
h.endTag(tag.name, param, continuationMarker,
|
|
3727
|
-
continuationMaker(h, parts, pos, state, param));
|
|
3728
|
-
}
|
|
3729
|
-
}
|
|
3730
|
-
return tag.next;
|
|
3731
|
-
}
|
|
3732
|
-
|
|
3733
|
-
function parseStartTag(parts, pos, h, param, continuationMarker, state) {
|
|
3734
|
-
var tag = parseTagAndAttrs(parts, pos);
|
|
3735
|
-
// drop unclosed tags
|
|
3736
|
-
if (!tag) { return parts.length; }
|
|
3737
|
-
if (tag.eflags !== void 0) {
|
|
3738
|
-
if (h.startTag) {
|
|
3739
|
-
h.startTag(tag.name, tag.attrs, param, continuationMarker,
|
|
3740
|
-
continuationMaker(h, parts, tag.next, state, param));
|
|
3741
|
-
}
|
|
3742
|
-
// tags like <script> and <textarea> have special parsing
|
|
3743
|
-
if (tag.eflags & EFLAGS_TEXT) {
|
|
3744
|
-
return parseText(parts, tag, h, param, continuationMarker, state);
|
|
3745
|
-
}
|
|
3746
|
-
}
|
|
3747
|
-
return tag.next;
|
|
3748
|
-
}
|
|
3749
|
-
|
|
3750
|
-
var endTagRe = {};
|
|
3751
|
-
|
|
3752
|
-
// Tags like <script> and <textarea> are flagged as CDATA or RCDATA,
|
|
3753
|
-
// which means everything is text until we see the correct closing tag.
|
|
3754
|
-
function parseText(parts, tag, h, param, continuationMarker, state) {
|
|
3755
|
-
var end = parts.length;
|
|
3756
|
-
if (!endTagRe.hasOwnProperty(tag.name)) {
|
|
3757
|
-
endTagRe[tag.name] = new RegExp('^' + tag.name + '(?:[\\s\\/]|$)', 'i');
|
|
3758
|
-
}
|
|
3759
|
-
var re = endTagRe[tag.name];
|
|
3760
|
-
var first = tag.next;
|
|
3761
|
-
var p = tag.next + 1;
|
|
3762
|
-
for (; p < end; p++) {
|
|
3763
|
-
if (parts[p - 1] === '<\/' && re.test(parts[p])) { break; }
|
|
3764
|
-
}
|
|
3765
|
-
if (p < end) { p -= 1; }
|
|
3766
|
-
var buf = parts.slice(first, p).join('');
|
|
3767
|
-
if (tag.eflags & html4.eflags.CDATA) {
|
|
3768
|
-
if (h.cdata) {
|
|
3769
|
-
h.cdata(buf, param, continuationMarker,
|
|
3770
|
-
continuationMaker(h, parts, p, state, param));
|
|
3771
|
-
}
|
|
3772
|
-
} else if (tag.eflags & html4.eflags.RCDATA) {
|
|
3773
|
-
if (h.rcdata) {
|
|
3774
|
-
h.rcdata(normalizeRCData(buf), param, continuationMarker,
|
|
3775
|
-
continuationMaker(h, parts, p, state, param));
|
|
3776
|
-
}
|
|
3777
|
-
} else {
|
|
3778
|
-
throw new Error('bug');
|
|
3779
|
-
}
|
|
3780
|
-
return p;
|
|
3781
|
-
}
|
|
3782
|
-
|
|
3783
|
-
// at this point, parts[pos-1] is either "<" or "<\/".
|
|
3784
|
-
function parseTagAndAttrs(parts, pos) {
|
|
3785
|
-
var m = /^(\w+)/.exec(parts[pos]);
|
|
3786
|
-
var tag = { name: lcase(m[1]) };
|
|
3787
|
-
if (html4.ELEMENTS.hasOwnProperty(tag.name)) {
|
|
3788
|
-
tag.eflags = html4.ELEMENTS[tag.name];
|
|
3789
|
-
} else {
|
|
3790
|
-
tag.eflags = void 0;
|
|
3791
|
-
}
|
|
3792
|
-
var buf = parts[pos].substr(m[0].length);
|
|
3793
|
-
// Find the next '>'. We optimistically assume this '>' is not in a
|
|
3794
|
-
// quoted context, and further down we fix things up if it turns out to
|
|
3795
|
-
// be quoted.
|
|
3796
|
-
var p = pos + 1;
|
|
3797
|
-
var end = parts.length;
|
|
3798
|
-
for (; p < end; p++) {
|
|
3799
|
-
if (parts[p] === '>') { break; }
|
|
3800
|
-
buf += parts[p];
|
|
3801
|
-
}
|
|
3802
|
-
if (end <= p) { return void 0; }
|
|
3803
|
-
var attrs = [];
|
|
3804
|
-
while (buf !== '') {
|
|
3805
|
-
m = ATTR_RE.exec(buf);
|
|
3806
|
-
if (!m) {
|
|
3807
|
-
// No attribute found: skip garbage
|
|
3808
|
-
buf = buf.replace(/^[\s\S][^a-z\s]*/, '');
|
|
3809
|
-
|
|
3810
|
-
} else if ((m[4] && !m[5]) || (m[6] && !m[7])) {
|
|
3811
|
-
// Unterminated quote: slurp to the next unquoted '>'
|
|
3812
|
-
var quote = m[4] || m[6];
|
|
3813
|
-
var sawQuote = false;
|
|
3814
|
-
var abuf = [buf, parts[p++]];
|
|
3815
|
-
for (; p < end; p++) {
|
|
3816
|
-
if (sawQuote) {
|
|
3817
|
-
if (parts[p] === '>') { break; }
|
|
3818
|
-
} else if (0 <= parts[p].indexOf(quote)) {
|
|
3819
|
-
sawQuote = true;
|
|
3820
|
-
}
|
|
3821
|
-
abuf.push(parts[p]);
|
|
3822
|
-
}
|
|
3823
|
-
// Slurp failed: lose the garbage
|
|
3824
|
-
if (end <= p) { break; }
|
|
3825
|
-
// Otherwise retry attribute parsing
|
|
3826
|
-
buf = abuf.join('');
|
|
3827
|
-
continue;
|
|
3828
|
-
|
|
3829
|
-
} else {
|
|
3830
|
-
// We have an attribute
|
|
3831
|
-
var aName = lcase(m[1]);
|
|
3832
|
-
var aValue = m[2] ? decodeValue(m[3]) : aName;
|
|
3833
|
-
attrs.push(aName, aValue);
|
|
3834
|
-
buf = buf.substr(m[0].length);
|
|
3835
|
-
}
|
|
3836
|
-
}
|
|
3837
|
-
tag.attrs = attrs;
|
|
3838
|
-
tag.next = p + 1;
|
|
3839
|
-
return tag;
|
|
3840
|
-
}
|
|
3841
|
-
|
|
3842
|
-
function decodeValue(v) {
|
|
3843
|
-
var q = v.charCodeAt(0);
|
|
3844
|
-
if (q === 0x22 || q === 0x27) { // " or '
|
|
3845
|
-
v = v.substr(1, v.length - 2);
|
|
3846
|
-
}
|
|
3847
|
-
return unescapeEntities(stripNULs(v));
|
|
3848
|
-
}
|
|
3849
|
-
|
|
3850
|
-
/**
|
|
3851
|
-
* Returns a function that strips unsafe tags and attributes from html.
|
|
3852
|
-
* @param {function(string, Array.<string>): ?Array.<string>} tagPolicy
|
|
3853
|
-
* A function that takes (tagName, attribs[]), where tagName is a key in
|
|
3854
|
-
* html4.ELEMENTS and attribs is an array of alternating attribute names
|
|
3855
|
-
* and values. It should return a sanitized attribute array, or null to
|
|
3856
|
-
* delete the tag. It's okay for tagPolicy to modify the attribs array,
|
|
3857
|
-
* but the same array is reused, so it should not be held between calls.
|
|
3858
|
-
* @return {function(string, Array)} A function that sanitizes a string of
|
|
3859
|
-
* HTML and appends result strings to the second argument, an array.
|
|
3860
|
-
*/
|
|
3861
|
-
function makeHtmlSanitizer(tagPolicy) {
|
|
3862
|
-
var stack;
|
|
3863
|
-
var ignoring;
|
|
3864
|
-
var emit = function (text, out) {
|
|
3865
|
-
if (!ignoring) { out.push(text); }
|
|
3866
|
-
};
|
|
3867
|
-
return makeSaxParser({
|
|
3868
|
-
startDoc: function(_) {
|
|
3869
|
-
stack = [];
|
|
3870
|
-
ignoring = false;
|
|
3871
|
-
},
|
|
3872
|
-
startTag: function(tagName, attribs, out) {
|
|
3873
|
-
if (ignoring) { return; }
|
|
3874
|
-
if (!html4.ELEMENTS.hasOwnProperty(tagName)) { return; }
|
|
3875
|
-
var eflags = html4.ELEMENTS[tagName];
|
|
3876
|
-
if (eflags & html4.eflags.FOLDABLE) {
|
|
3877
|
-
return;
|
|
3878
|
-
}
|
|
3879
|
-
attribs = tagPolicy(tagName, attribs);
|
|
3880
|
-
if (!attribs) {
|
|
3881
|
-
ignoring = !(eflags & html4.eflags.EMPTY);
|
|
3882
|
-
return;
|
|
3883
|
-
}
|
|
3884
|
-
// TODO(mikesamuel): relying on tagPolicy not to insert unsafe
|
|
3885
|
-
// attribute names.
|
|
3886
|
-
if (!(eflags & html4.eflags.EMPTY)) {
|
|
3887
|
-
stack.push(tagName);
|
|
3888
|
-
}
|
|
3889
|
-
|
|
3890
|
-
out.push('<', tagName);
|
|
3891
|
-
for (var i = 0, n = attribs.length; i < n; i += 2) {
|
|
3892
|
-
var attribName = attribs[i],
|
|
3893
|
-
value = attribs[i + 1];
|
|
3894
|
-
if (value !== null && value !== void 0) {
|
|
3895
|
-
out.push(' ', attribName, '="', escapeAttrib(value), '"');
|
|
3896
|
-
}
|
|
3897
|
-
}
|
|
3898
|
-
out.push('>');
|
|
3899
|
-
},
|
|
3900
|
-
endTag: function(tagName, out) {
|
|
3901
|
-
if (ignoring) {
|
|
3902
|
-
ignoring = false;
|
|
3903
|
-
return;
|
|
3904
|
-
}
|
|
3905
|
-
if (!html4.ELEMENTS.hasOwnProperty(tagName)) { return; }
|
|
3906
|
-
var eflags = html4.ELEMENTS[tagName];
|
|
3907
|
-
if (!(eflags & (html4.eflags.EMPTY | html4.eflags.FOLDABLE))) {
|
|
3908
|
-
var index;
|
|
3909
|
-
if (eflags & html4.eflags.OPTIONAL_ENDTAG) {
|
|
3910
|
-
for (index = stack.length; --index >= 0;) {
|
|
3911
|
-
var stackEl = stack[index];
|
|
3912
|
-
if (stackEl === tagName) { break; }
|
|
3913
|
-
if (!(html4.ELEMENTS[stackEl] &
|
|
3914
|
-
html4.eflags.OPTIONAL_ENDTAG)) {
|
|
3915
|
-
// Don't pop non optional end tags looking for a match.
|
|
3916
|
-
return;
|
|
3917
|
-
}
|
|
3918
|
-
}
|
|
3919
|
-
} else {
|
|
3920
|
-
for (index = stack.length; --index >= 0;) {
|
|
3921
|
-
if (stack[index] === tagName) { break; }
|
|
3922
|
-
}
|
|
3923
|
-
}
|
|
3924
|
-
if (index < 0) { return; } // Not opened.
|
|
3925
|
-
for (var i = stack.length; --i > index;) {
|
|
3926
|
-
var stackEl = stack[i];
|
|
3927
|
-
if (!(html4.ELEMENTS[stackEl] &
|
|
3928
|
-
html4.eflags.OPTIONAL_ENDTAG)) {
|
|
3929
|
-
out.push('<\/', stackEl, '>');
|
|
3930
|
-
}
|
|
3931
|
-
}
|
|
3932
|
-
stack.length = index;
|
|
3933
|
-
out.push('<\/', tagName, '>');
|
|
3934
|
-
}
|
|
3935
|
-
},
|
|
3936
|
-
pcdata: emit,
|
|
3937
|
-
rcdata: emit,
|
|
3938
|
-
cdata: emit,
|
|
3939
|
-
endDoc: function(out) {
|
|
3940
|
-
for (; stack.length; stack.length--) {
|
|
3941
|
-
out.push('<\/', stack[stack.length - 1], '>');
|
|
3942
|
-
}
|
|
3943
|
-
}
|
|
3944
|
-
});
|
|
3945
|
-
}
|
|
3946
|
-
|
|
3947
|
-
// From RFC3986
|
|
3948
|
-
var URI_SCHEME_RE = new RegExp(
|
|
3949
|
-
'^' +
|
|
3950
|
-
'(?:' +
|
|
3951
|
-
'([^:\/?# ]+)' + // scheme
|
|
3952
|
-
':)?'
|
|
3953
|
-
);
|
|
3954
|
-
|
|
3955
|
-
var ALLOWED_URI_SCHEMES = /^(?:https?|mailto)$/i;
|
|
3956
|
-
|
|
3957
|
-
function safeUri(uri, naiveUriRewriter) {
|
|
3958
|
-
if (!naiveUriRewriter) { return null; }
|
|
3959
|
-
var parsed = ('' + uri).match(URI_SCHEME_RE);
|
|
3960
|
-
if (parsed && (!parsed[1] || ALLOWED_URI_SCHEMES.test(parsed[1]))) {
|
|
3961
|
-
return naiveUriRewriter(uri);
|
|
3962
|
-
} else {
|
|
3963
|
-
return null;
|
|
3964
|
-
}
|
|
3965
|
-
}
|
|
3966
|
-
|
|
3967
|
-
/**
|
|
3968
|
-
* Sanitizes attributes on an HTML tag.
|
|
3969
|
-
* @param {string} tagName An HTML tag name in lowercase.
|
|
3970
|
-
* @param {Array.<?string>} attribs An array of alternating names and values.
|
|
3971
|
-
* @param {?function(?string): ?string} opt_naiveUriRewriter A transform to
|
|
3972
|
-
* apply to URI attributes; it can return a new string value, or null to
|
|
3973
|
-
* delete the attribute. If unspecified, URI attributes are deleted.
|
|
3974
|
-
* @param {function(?string): ?string} opt_nmTokenPolicy A transform to apply
|
|
3975
|
-
* to attributes containing HTML names, element IDs, and space-separated
|
|
3976
|
-
* lists of classes; it can return a new string value, or null to delete
|
|
3977
|
-
* the attribute. If unspecified, these attributes are kept unchanged.
|
|
3978
|
-
* @return {Array.<?string>} The sanitized attributes as a list of alternating
|
|
3979
|
-
* names and values, where a null value means to omit the attribute.
|
|
3980
|
-
*/
|
|
3981
|
-
function sanitizeAttribs(
|
|
3982
|
-
tagName, attribs, opt_naiveUriRewriter, opt_nmTokenPolicy) {
|
|
3983
|
-
for (var i = 0; i < attribs.length; i += 2) {
|
|
3984
|
-
var attribName = attribs[i];
|
|
3985
|
-
var value = attribs[i + 1];
|
|
3986
|
-
var atype = null, attribKey;
|
|
3987
|
-
if ((attribKey = tagName + '::' + attribName,
|
|
3988
|
-
html4.ATTRIBS.hasOwnProperty(attribKey)) ||
|
|
3989
|
-
(attribKey = '*::' + attribName,
|
|
3990
|
-
html4.ATTRIBS.hasOwnProperty(attribKey))) {
|
|
3991
|
-
atype = html4.ATTRIBS[attribKey];
|
|
3992
|
-
}
|
|
3993
|
-
if (atype !== null) {
|
|
3994
|
-
switch (atype) {
|
|
3995
|
-
case html4.atype.NONE: break;
|
|
3996
|
-
case html4.atype.SCRIPT:
|
|
3997
|
-
value = null;
|
|
3998
|
-
break;
|
|
3999
|
-
case html4.atype.STYLE:
|
|
4000
|
-
if ('undefined' === typeof parseCssDeclarations) {
|
|
4001
|
-
value = null;
|
|
4002
|
-
break;
|
|
4003
|
-
}
|
|
4004
|
-
var sanitizedDeclarations = [];
|
|
4005
|
-
parseCssDeclarations(
|
|
4006
|
-
value,
|
|
4007
|
-
{
|
|
4008
|
-
declaration: function (property, tokens) {
|
|
4009
|
-
var normProp = property.toLowerCase();
|
|
4010
|
-
var schema = cssSchema[normProp];
|
|
4011
|
-
if (!schema) {
|
|
4012
|
-
return;
|
|
4013
|
-
}
|
|
4014
|
-
sanitizeCssProperty(
|
|
4015
|
-
normProp, schema, tokens,
|
|
4016
|
-
opt_naiveUriRewriter);
|
|
4017
|
-
sanitizedDeclarations.push(property + ': ' + tokens.join(' '));
|
|
4018
|
-
}
|
|
4019
|
-
});
|
|
4020
|
-
value = sanitizedDeclarations.length > 0 ? sanitizedDeclarations.join(' ; ') : null;
|
|
4021
|
-
break;
|
|
4022
|
-
case html4.atype.ID:
|
|
4023
|
-
case html4.atype.IDREF:
|
|
4024
|
-
case html4.atype.IDREFS:
|
|
4025
|
-
case html4.atype.GLOBAL_NAME:
|
|
4026
|
-
case html4.atype.LOCAL_NAME:
|
|
4027
|
-
case html4.atype.CLASSES:
|
|
4028
|
-
value = opt_nmTokenPolicy ? opt_nmTokenPolicy(value) : value;
|
|
4029
|
-
break;
|
|
4030
|
-
case html4.atype.URI:
|
|
4031
|
-
value = safeUri(value, opt_naiveUriRewriter);
|
|
4032
|
-
break;
|
|
4033
|
-
case html4.atype.URI_FRAGMENT:
|
|
4034
|
-
if (value && '#' === value.charAt(0)) {
|
|
4035
|
-
value = value.substring(1); // remove the leading '#'
|
|
4036
|
-
value = opt_nmTokenPolicy ? opt_nmTokenPolicy(value) : value;
|
|
4037
|
-
if (value !== null && value !== void 0) {
|
|
4038
|
-
value = '#' + value; // restore the leading '#'
|
|
4039
|
-
}
|
|
4040
|
-
} else {
|
|
4041
|
-
value = null;
|
|
4042
|
-
}
|
|
4043
|
-
break;
|
|
4044
|
-
default:
|
|
4045
|
-
value = null;
|
|
4046
|
-
break;
|
|
4047
|
-
}
|
|
4048
|
-
} else {
|
|
4049
|
-
value = null;
|
|
4050
|
-
}
|
|
4051
|
-
attribs[i + 1] = value;
|
|
4052
|
-
}
|
|
4053
|
-
return attribs;
|
|
4054
|
-
}
|
|
4055
|
-
|
|
4056
|
-
/**
|
|
4057
|
-
* Creates a tag policy that omits all tags marked UNSAFE in html4-defs.js
|
|
4058
|
-
* and applies the default attribute sanitizer with the supplied policy for
|
|
4059
|
-
* URI attributes and NMTOKEN attributes.
|
|
4060
|
-
* @param {?function(?string): ?string} opt_naiveUriRewriter A transform to
|
|
4061
|
-
* apply to URI attributes. If not given, URI attributes are deleted.
|
|
4062
|
-
* @param {function(?string): ?string} opt_nmTokenPolicy A transform to apply
|
|
4063
|
-
* to attributes containing HTML names, element IDs, and space-separated
|
|
4064
|
-
* lists of classes. If not given, such attributes are left unchanged.
|
|
4065
|
-
* @return {function(string, Array.<?string>)} A tagPolicy suitable for
|
|
4066
|
-
* passing to html.sanitize.
|
|
4067
|
-
*/
|
|
4068
|
-
function makeTagPolicy(opt_naiveUriRewriter, opt_nmTokenPolicy) {
|
|
4069
|
-
return function(tagName, attribs) {
|
|
4070
|
-
if (!(html4.ELEMENTS[tagName] & html4.eflags.UNSAFE)) {
|
|
4071
|
-
return sanitizeAttribs(
|
|
4072
|
-
tagName, attribs, opt_naiveUriRewriter, opt_nmTokenPolicy);
|
|
4073
|
-
}
|
|
4074
|
-
};
|
|
4075
|
-
}
|
|
4076
|
-
|
|
4077
|
-
/**
|
|
4078
|
-
* Sanitizes HTML tags and attributes according to a given policy.
|
|
4079
|
-
* @param {string} inputHtml The HTML to sanitize.
|
|
4080
|
-
* @param {function(string, Array.<?string>)} tagPolicy A function that
|
|
4081
|
-
* decides which tags to accept and sanitizes their attributes (see
|
|
4082
|
-
* makeHtmlSanitizer above for details).
|
|
4083
|
-
* @return {string} The sanitized HTML.
|
|
4084
|
-
*/
|
|
4085
|
-
function sanitizeWithPolicy(inputHtml, tagPolicy) {
|
|
4086
|
-
var outputArray = [];
|
|
4087
|
-
makeHtmlSanitizer(tagPolicy)(inputHtml, outputArray);
|
|
4088
|
-
return outputArray.join('');
|
|
4089
|
-
}
|
|
4090
|
-
|
|
4091
|
-
/**
|
|
4092
|
-
* Strips unsafe tags and attributes from HTML.
|
|
4093
|
-
* @param {string} inputHtml The HTML to sanitize.
|
|
4094
|
-
* @param {?function(?string): ?string} opt_naiveUriRewriter A transform to
|
|
4095
|
-
* apply to URI attributes. If not given, URI attributes are deleted.
|
|
4096
|
-
* @param {function(?string): ?string} opt_nmTokenPolicy A transform to apply
|
|
4097
|
-
* to attributes containing HTML names, element IDs, and space-separated
|
|
4098
|
-
* lists of classes. If not given, such attributes are left unchanged.
|
|
4099
|
-
*/
|
|
4100
|
-
function sanitize(inputHtml, opt_naiveUriRewriter, opt_nmTokenPolicy) {
|
|
4101
|
-
var tagPolicy = makeTagPolicy(opt_naiveUriRewriter, opt_nmTokenPolicy);
|
|
4102
|
-
return sanitizeWithPolicy(inputHtml, tagPolicy);
|
|
4103
|
-
}
|
|
4104
|
-
|
|
4105
|
-
return {
|
|
4106
|
-
escapeAttrib: escapeAttrib,
|
|
4107
|
-
makeHtmlSanitizer: makeHtmlSanitizer,
|
|
4108
|
-
makeSaxParser: makeSaxParser,
|
|
4109
|
-
makeTagPolicy: makeTagPolicy,
|
|
4110
|
-
normalizeRCData: normalizeRCData,
|
|
4111
|
-
sanitize: sanitize,
|
|
4112
|
-
sanitizeAttribs: sanitizeAttribs,
|
|
4113
|
-
sanitizeWithPolicy: sanitizeWithPolicy,
|
|
4114
|
-
unescapeEntities: unescapeEntities
|
|
4115
|
-
};
|
|
4116
|
-
})(html4);
|
|
4117
|
-
|
|
4118
|
-
var html_sanitize = html.sanitize;
|
|
4119
|
-
|
|
4120
|
-
// Exports for closure compiler. Note this file is also cajoled
|
|
4121
|
-
// for domado and run in an environment without 'window'
|
|
4122
|
-
if (typeof window !== 'undefined') {
|
|
4123
|
-
window['html'] = html;
|
|
4124
|
-
window['html_sanitize'] = html_sanitize;
|
|
4125
|
-
}
|
|
4126
|
-
|
|
4127
|
-
}());
|
|
4128
|
-
return cajaHtmlSanitizer;
|
|
4129
|
-
}
|
|
4130
|
-
|
|
4131
|
-
requireCajaHtmlSanitizer();
|
|
4132
|
-
|
|
4133
|
-
/*!
|
|
4134
|
-
* OpenUI5
|
|
4135
|
-
* (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
|
|
4136
|
-
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
4137
|
-
*/
|
|
4138
|
-
/*
|
|
4139
|
-
* IMPORTANT: This is a private module, its API must not be used and is subject to change.
|
|
4140
|
-
* Code other than the OpenUI5 libraries must not introduce dependencies to this module.
|
|
4141
|
-
*/
|
|
4142
|
-
/**
|
|
4143
|
-
* Strips unsafe tags and attributes from HTML.
|
|
4144
|
-
*
|
|
4145
|
-
* @function
|
|
4146
|
-
* @since 1.58
|
|
4147
|
-
* @alias module:sap/base/security/sanitizeHTML
|
|
4148
|
-
* @param {string} sHTML the HTML to be sanitized.
|
|
4149
|
-
* @param {object} [mOptions={}] options for the sanitizer
|
|
4150
|
-
* @return {string} sanitized HTML
|
|
4151
|
-
* @private
|
|
4152
|
-
*/
|
|
4153
|
-
var fnSanitizeHTML = function (sHTML, mOptions) {
|
|
4154
|
-
fnAssert(window.html && window.html.sanitize, "Sanitizer should have been loaded");
|
|
4155
|
-
mOptions = mOptions || {
|
|
4156
|
-
uriRewriter: function (sUrl) {
|
|
4157
|
-
// by default, we use the URLListValidator to check the URLs
|
|
4158
|
-
|
|
4159
|
-
if (oURLListValidator.validate(sUrl)) {
|
|
4160
|
-
return sUrl;
|
|
4161
|
-
}
|
|
4162
|
-
}
|
|
4163
|
-
};
|
|
4164
|
-
var oTagPolicy = mOptions.tagPolicy || window.html.makeTagPolicy(mOptions.uriRewriter, mOptions.tokenPolicy);
|
|
4165
|
-
return window.html.sanitizeWithPolicy(sHTML, oTagPolicy);
|
|
4166
|
-
};
|
|
4167
|
-
|
|
4168
|
-
const a=new Map,t=new Map;t.set("S",[0,599]),t.set("M",[600,1023]),t.set("L",[1024,1439]),t.set("XL",[1440,1/0]);var S=(e=>(e.RANGE_4STEPS="4Step",e))(S||{});const o=(r,e)=>{a.set(r,e);},c=(r,e=window.innerWidth)=>{let n=a.get(r);n||(n=a.get("4Step"));let g;const s=Math.floor(e);return n.forEach((R,E)=>{s>=R[0]&&s<=R[1]&&(g=E);}),g||[...n.keys()][0]},i={RANGESETS:S,initRangeSet:o,getCurrentRange:c};i.initRangeSet(i.RANGESETS.RANGE_4STEPS,t);
|
|
4169
|
-
|
|
4170
|
-
// animations/
|
|
4171
|
-
|
|
4172
|
-
var PackageModule = /*#__PURE__*/Object.freeze({
|
|
4173
|
-
__proto__: null,
|
|
4174
|
-
EventProvider: Icons.i$2,
|
|
4175
|
-
I18nBundle: Icons.u$2,
|
|
4176
|
-
ItemNavigation: f$1,
|
|
4177
|
-
MediaRange: i,
|
|
4178
|
-
RegisteredIconCollection: Icons.t$1,
|
|
4179
|
-
ResizeHandler: f,
|
|
4180
|
-
ScrollEnablement: v,
|
|
4181
|
-
UI5Element: b$1,
|
|
4182
|
-
URLListValidator: oURLListValidator,
|
|
4183
|
-
addCustomCSS: g,
|
|
4184
|
-
applyDirection: i$1,
|
|
4185
|
-
attachBoot: Icons.P,
|
|
4186
|
-
attachDirectionChange: a$1,
|
|
4187
|
-
attachLanguageChange: Icons.t,
|
|
4188
|
-
attachThemeLoaded: Icons.o$1,
|
|
4189
|
-
cancelRender: Icons.h$1,
|
|
4190
|
-
customElement: m$3,
|
|
4191
|
-
default: b$1,
|
|
4192
|
-
detachDirectionChange: c$1,
|
|
4193
|
-
detachLanguageChange: Icons.r$2,
|
|
4194
|
-
detachThemeLoaded: Icons.n$3,
|
|
4195
|
-
event: b$5,
|
|
4196
|
-
getAnimationMode: d$3,
|
|
4197
|
-
getCalendarType: i$7,
|
|
4198
|
-
getCustomElementsScopingRules: Icons.m$1,
|
|
4199
|
-
getCustomElementsScopingSuffix: Icons.c$3,
|
|
4200
|
-
getDefaultIconCollection: Icons.c$4,
|
|
4201
|
-
getDefaultLanguage: Icons.c$5,
|
|
4202
|
-
getDefaultTheme: Icons.g$2,
|
|
4203
|
-
getEffectiveDir: r$1,
|
|
4204
|
-
getEffectiveIconCollection: Icons.i$4,
|
|
4205
|
-
getEffectiveScopingSuffixForTag: Icons.g$1,
|
|
4206
|
-
getFetchDefaultLanguage: Icons.h$3,
|
|
4207
|
-
getFirstDayOfWeek: n$a,
|
|
4208
|
-
getI18nBundle: Icons.f$2,
|
|
4209
|
-
getLanguage: Icons.l$3,
|
|
4210
|
-
getLegacyDateCalendarCustomizing: m$5,
|
|
4211
|
-
getNoConflict: o$6,
|
|
4212
|
-
getTheme: Icons.r,
|
|
4213
|
-
isAndroid: Icons.P$1,
|
|
4214
|
-
isChrome: Icons.g,
|
|
4215
|
-
isCombi: Icons.m$2,
|
|
4216
|
-
isDesktop: Icons.f,
|
|
4217
|
-
isFirefox: Icons.b$2,
|
|
4218
|
-
isIOS: Icons.w,
|
|
4219
|
-
isPhone: Icons.d,
|
|
4220
|
-
isSafari: Icons.h,
|
|
4221
|
-
isTablet: Icons.a$1,
|
|
4222
|
-
property: s$9,
|
|
4223
|
-
registerCustomI18nBundleGetter: Icons.y$1,
|
|
4224
|
-
registerI18nLoader: Icons.$$1,
|
|
4225
|
-
registerIconLoader: Icons.C,
|
|
4226
|
-
registerLocaleDataLoader: C,
|
|
4227
|
-
registerThemePropertiesLoader: Icons.p,
|
|
4228
|
-
renderDeferred: Icons.l$1,
|
|
4229
|
-
renderFinished: Icons.f$1,
|
|
4230
|
-
renderImmediately: Icons.c$2,
|
|
4231
|
-
sanitizeHTML: fnSanitizeHTML,
|
|
4232
|
-
scroll: n$d,
|
|
4233
|
-
setAnimationMode: m$6,
|
|
4234
|
-
setCustomElementsScopingRules: Icons.p$1,
|
|
4235
|
-
setCustomElementsScopingSuffix: Icons.l$4,
|
|
4236
|
-
setDefaultIconCollection: Icons.e$1,
|
|
4237
|
-
setFetchDefaultLanguage: Icons.m$3,
|
|
4238
|
-
setLanguage: Icons.L,
|
|
4239
|
-
setNoConflict: f$3,
|
|
4240
|
-
setTheme: Icons.u$1,
|
|
4241
|
-
slideDown: b$6,
|
|
4242
|
-
slideUp: u$3,
|
|
4243
|
-
slot: d$1,
|
|
4244
|
-
startMultipleDrag: m$4,
|
|
4245
|
-
supportsTouch: Icons.l$2
|
|
4246
|
-
});
|
|
4247
|
-
|
|
4248
|
-
Icons.l$4("16d3c820");
|
|
4249
|
-
|
|
4250
|
-
exports.A = A;
|
|
4251
|
-
exports.C = C$2;
|
|
4252
|
-
exports.Co = Co;
|
|
4253
|
-
exports.D = D$1;
|
|
4254
|
-
exports.D$1 = D$2;
|
|
4255
|
-
exports.Eo = Eo;
|
|
4256
|
-
exports.I = I$1;
|
|
4257
|
-
exports.K = K;
|
|
4258
|
-
exports.Ko = Ko;
|
|
4259
|
-
exports.M = M;
|
|
4260
|
-
exports.N = N;
|
|
4261
|
-
exports.O = O$2;
|
|
4262
|
-
exports.P = P;
|
|
4263
|
-
exports.PackageModule = PackageModule;
|
|
4264
|
-
exports.Q = Q;
|
|
4265
|
-
exports.R = R$2;
|
|
4266
|
-
exports.V = V;
|
|
4267
|
-
exports.X = X;
|
|
4268
|
-
exports._ = _$1;
|
|
4269
|
-
exports.ao = ao;
|
|
4270
|
-
exports.b = b$1;
|
|
4271
|
-
exports.b$1 = b$4;
|
|
4272
|
-
exports.b$2 = b$6;
|
|
4273
|
-
exports.d = d$1;
|
|
4274
|
-
exports.d$1 = d$3;
|
|
4275
|
-
exports.f = f;
|
|
4276
|
-
exports.f$1 = f$1;
|
|
4277
|
-
exports.h = h;
|
|
4278
|
-
exports.i = i$5;
|
|
4279
|
-
exports.i$1 = i$3;
|
|
4280
|
-
exports.i$2 = i;
|
|
4281
|
-
exports.j = j;
|
|
4282
|
-
exports.ko = ko;
|
|
4283
|
-
exports.l = l$5;
|
|
4284
|
-
exports.m = m$3;
|
|
4285
|
-
exports.m$1 = m$1;
|
|
4286
|
-
exports.m$2 = m$2;
|
|
4287
|
-
exports.n = n$9;
|
|
4288
|
-
exports.n$1 = n$3;
|
|
4289
|
-
exports.n$2 = n$4;
|
|
4290
|
-
exports.p = p$2;
|
|
4291
|
-
exports.q = q;
|
|
4292
|
-
exports.r = r$4;
|
|
4293
|
-
exports.ro = ro;
|
|
4294
|
-
exports.s = s$9;
|
|
4295
|
-
exports.so = so;
|
|
4296
|
-
exports.t = t$3;
|
|
4297
|
-
exports.u = u$3;
|
|
4298
|
-
exports.v = v$1;
|
|
4299
|
-
exports.x = x;
|
|
4300
|
-
|
|
4301
|
-
}));
|