From afb8b3188ca4452123b51c40fc2128161d626015 Mon Sep 17 00:00:00 2001 From: Oleg Yukhnevich Date: Fri, 15 Aug 2025 14:26:20 +0300 Subject: [PATCH 01/56] Fix compatibility with changes in KGP --- .../src/main/kotlin/adapters/KotlinAdapter.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt index 8ddac7a3fd..81c13e16b5 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt @@ -453,11 +453,18 @@ private class KotlinCompilationDetailsBuilder( return when (this) { is KotlinMetadataCompilation<*> -> true + // Use string-based comparison, not the actual classes, because AGP has deprecated and + // moved the Library/Application classes to a different package. + // Using strings is more widely compatible. is KotlinJvmAndroidCompilation -> { - // Use string-based comparison, not the actual classes, because AGP has deprecated and - // moved the Library/Application classes to a different package. - // Using strings is more widely compatible. - val variantName = androidVariant::class.jvmName + // `runCatching` is used here, in case `androidVariant` will be removed in a future version of KGP. + val variantName = runCatching { + // https://youtrack.jetbrains.com/issue/KT-77023: + // `androidVariant` has `null` value in case of AGP/built-in Kotlin project. + @Suppress("DEPRECATION", "UNNECESSARY_NOT_NULL_ASSERTION") + androidVariant!!::class.jvmName + }.getOrNull() ?: return true // published by default + "LibraryVariant" in variantName || "ApplicationVariant" in variantName } From 3296827d0caf39182d165940a66b0c0bfd9f0da7 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Tue, 26 Aug 2025 14:40:17 +0200 Subject: [PATCH 02/56] WIP update KotlinAdapter, to determine whether an AGP source set is 'publishable' --- .../src/main/kotlin/adapters/KotlinAdapter.kt | 265 +++++++++++++----- 1 file changed, 199 insertions(+), 66 deletions(-) diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt index 81c13e16b5..4ed1c07762 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt @@ -11,7 +11,6 @@ import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.FileCollection import org.gradle.api.logging.Logging import org.gradle.api.model.ObjectFactory -import org.gradle.api.plugins.ExtensionContainer import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderFactory @@ -44,7 +43,6 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget import org.jetbrains.kotlin.tooling.core.KotlinToolingVersion import java.io.File import javax.inject.Inject -import kotlin.reflect.jvm.jvmName /** * The [KotlinAdapter] plugin will automatically register Kotlin source sets as Dokka source sets. @@ -72,25 +70,8 @@ abstract class KotlinAdapter @Inject constructor( } private fun exec(project: Project) { - val kotlinExtension = project.extensions.findKotlinExtension() + val kotlinExtension = project.findKotlinExtension() if (kotlinExtension == null) { - if (project.extensions.findByName("kotlin") != null) { - // uh oh - the Kotlin extension is present but findKotlinExtension() failed. - // Is there a class loader issue? https://github.com/gradle/gradle/issues/27218 - logger.warn { - val allPlugins = - project.plugins.joinToString { it::class.qualifiedName ?: "${it::class}" } - val allExtensions = - project.extensions.extensionsSchema.elements.joinToString { "${it.name} ${it.publicType}" } - - /* language=TEXT */ - """ - |$dkaName failed to get KotlinProjectExtension in ${project.path} - | Applied plugins: $allPlugins - | Available extensions: $allExtensions - """.trimMargin() - } - } logger.info("Skipping applying $dkaName in ${project.path} - could not find KotlinProjectExtension") return } @@ -215,25 +196,49 @@ abstract class KotlinAdapter @Inject constructor( private val logger = Logging.getLogger(KotlinAdapter::class.java) /** Try and get [KotlinProjectExtension], or `null` if it's not present. */ - private fun ExtensionContainer.findKotlinExtension(): KotlinProjectExtension? = - try { - findByType() - // fallback to trying to get the JVM extension - // (not sure why I did this... maybe to be compatible with really old versions?) - ?: findByType() - } catch (e: Throwable) { - when (e) { - is TypeNotPresentException, - is ClassNotFoundException, - is NoClassDefFoundError -> { - logger.info("$dkaName failed to find KotlinExtension ${e::class} ${e.message}") - null + private fun Project.findKotlinExtension(): KotlinProjectExtension? { + val kotlinExtension = + try { + extensions.findByType() + // fallback to trying to get the JVM extension + // (not sure why I did this... maybe to be compatible with really old versions?) + ?: extensions.findByType() + } catch (e: Throwable) { + when (e) { + is TypeNotPresentException, + is ClassNotFoundException, + is NoClassDefFoundError -> { + logger.info("$dkaName failed to find KotlinExtension ${e::class} ${e.message}") + null + } + + else -> throw e } + } - else -> throw e + if (kotlinExtension == null) { + if (project.extensions.findByName("kotlin") != null) { + // uh oh - the Kotlin extension is present but findKotlinExtension() failed. + // Is there a class loader issue? https://github.com/gradle/gradle/issues/27218 + logger.warn { + val allPlugins = + project.plugins.joinToString { it::class.qualifiedName ?: "${it::class}" } + val allExtensions = + project.extensions.extensionsSchema.elements.joinToString { "${it.name} ${it.publicType}" } + + /* language=TEXT */ + """ + |$dkaName failed to get KotlinProjectExtension in ${project.path} + | Applied plugins: $allPlugins + | Available extensions: $allExtensions + """.trimMargin() + } } } + return kotlinExtension + } + /** Get the version of the Kotlin Gradle Plugin currently used to compile the project. */ // Must be lazy, else tests fail (because the KGP plugin isn't accessible) internal val currentKotlinToolingVersion: KotlinToolingVersion by lazy { @@ -274,7 +279,7 @@ private data class KotlinCompilationDetails( * * (E.g. 'main' compilations are published, 'test' compilations are not.) */ - val publishedCompilation: Boolean, + val publishedCompilation: Provider, /** [KotlinCompilation.kotlinSourceSets] → [KotlinSourceSet.dependsOn] names. */ val dependentSourceSetNames: Set, @@ -293,6 +298,7 @@ private class KotlinCompilationDetailsBuilder( private val konanHome: Provider, private val project: Project, ) { + private val androidComponentsInfo: Provider> = getAgpVariantInfo(project) fun createCompilationDetails( kotlinProjectExtension: KotlinProjectExtension, @@ -312,6 +318,69 @@ private class KotlinCompilationDetailsBuilder( return details } + private data class AgpVariantInfo( + val name: String, + val hasPublishedComponent: Boolean, + ) + + private fun getAgpVariantInfo( + project: Project, + ): Provider> { + + val androidVariants = objects.setProperty(AgpVariantInfo::class) + + fun collectAndroidVariants() { + val androidComponents = project.findAndroidComponentExtension() + + androidComponents?.onVariants { variant -> + androidVariants.add( + AgpVariantInfo( + name = variant.name, + hasPublishedComponent = variant.components.any { it is com.android.build.api.variant.Variant }, + ) + ) + } + } + + project.pluginManager.apply { + withPlugin(PluginId.AndroidBase) { collectAndroidVariants() } + withPlugin(PluginId.AndroidApplication) { collectAndroidVariants() } + withPlugin(PluginId.AndroidLibrary) { collectAndroidVariants() } + } + return androidVariants + +// try { +// project.extensions.findByType(AndroidComponentsExtension::class) +// } catch (ex: ClassNotFoundException) { +// KotlinCompilationDetailsBuilder.Companion.logger.info("Unable to find AndroidComponentsExtension in project $project", ex) +// null +// } +// if (androidComponents == null) { +// KotlinCompilationDetailsBuilder.Companion.logger.warn("AndroidComponentsExtension not available in project $project") +// return providers.provider { false } +// } else { +// val agpVariants = objects.listProperty(AgpVariantInfo::class) +// +// androidComponents.onVariants { v -> +// println("[DOKKA KotlinAdapter] ${compilation.name} checking variant $v, ${v.name}, ${v.components.map { "${it.name}=${it::class}" }}") +// agpVariants.add( +// AgpVariantInfo( +// name = v.name, +// hasPublishedComponent = +// v.components.any { it is com.android.build.api.variant.Variant }, +// ) +// ) +// } +// +// return agpVariants.map { agpVariants -> +// agpVariants +// .singleOrNull { it.name == compilation.name } +// ?.hasPublishedComponent +// ?: false +// } +// } + } + /** Create a single [KotlinCompilationDetails] for [compilation]. */ private fun createCompilationDetails( compilation: KotlinCompilation<*>, @@ -438,41 +507,58 @@ private class KotlinCompilationDetailsBuilder( } } - companion object { + /** + * Determine if a [KotlinCompilation] is 'publishable', and so should be enabled by default + * when creating a Dokka publication. + * + * Typically, 'main' compilations are publishable and 'test' compilations should be suppressed. + * This can be overridden manually, though. + * + * @see DokkaSourceSetSpec.suppress + */ + private fun KotlinCompilation<*>.isPublished(): Provider { + return when (this) { + is KotlinMetadataCompilation<*> -> + providers.provider { true } + + // Use string-based comparison, not the actual classes, because AGP has deprecated and + // moved the Library/Application classes to a different package. + // Using strings is more widely compatible. + is KotlinJvmAndroidCompilation -> { + isJvmAndroidPublished(this) + } - /** - * Determine if a [KotlinCompilation] is 'publishable', and so should be enabled by default - * when creating a Dokka publication. - * - * Typically, 'main' compilations are publishable and 'test' compilations should be suppressed. - * This can be overridden manually, though. - * - * @see DokkaSourceSetSpec.suppress - */ - private fun KotlinCompilation<*>.isPublished(): Boolean { - return when (this) { - is KotlinMetadataCompilation<*> -> true - - // Use string-based comparison, not the actual classes, because AGP has deprecated and - // moved the Library/Application classes to a different package. - // Using strings is more widely compatible. - is KotlinJvmAndroidCompilation -> { - // `runCatching` is used here, in case `androidVariant` will be removed in a future version of KGP. - val variantName = runCatching { - // https://youtrack.jetbrains.com/issue/KT-77023: - // `androidVariant` has `null` value in case of AGP/built-in Kotlin project. - @Suppress("DEPRECATION", "UNNECESSARY_NOT_NULL_ASSERTION") - androidVariant!!::class.jvmName - }.getOrNull() ?: return true // published by default - - "LibraryVariant" in variantName || "ApplicationVariant" in variantName - } + else -> + providers.provider { name == MAIN_COMPILATION_NAME } + } + } - else -> - name == MAIN_COMPILATION_NAME + private fun isJvmAndroidPublished(compilation: KotlinJvmAndroidCompilation): Provider { + println("[DOKKA KotlinAdapter] Checking if ${compilation.name} is publishable... (currentKotlinToolingVersion:${currentKotlinToolingVersion})") + +// if (currentKotlinToolingVersion < KotlinToolingVersion("2.2.10")) { // TODO revert, I made it lower for easier manual testing + if (currentKotlinToolingVersion < KotlinToolingVersion("2.1.10")) { + val variantName = compilation.androidVariant.name + return providers.provider { + val x = "LibraryVariant" in variantName || "ApplicationVariant" in variantName + println("[DOKKA KotlinAdapter] ${compilation.name} publishable:$x, variant:$variantName") + x + } + } else { + return androidComponentsInfo.map { components -> + components.any { component -> + val x = component.name == compilation.name + && component.hasPublishedComponent + println("[DOKKA KotlinAdapter] ${compilation.name} publishable:$x, component:${component.name}") + x + } } } } + + companion object { + private val logger = Logging.getLogger(KotlinCompilationDetailsBuilder::class.java) + } } @@ -515,7 +601,7 @@ private abstract class KotlinSourceSetDetails @Inject constructor( */ fun isPublishedSourceSet(): Provider = allCompilations.map { values -> - values.any { it.publishedCompilation } + values.any { it.publishedCompilation.get() } } override fun getName(): String = named @@ -625,3 +711,50 @@ private class KotlinSourceSetDetailsBuilder( ) } } + + +private typealias AndroidComponentsExtension = com.android.build.api.variant.AndroidComponentsExtension<*, *, *> + + +/** Try and get [KotlinProjectExtension], or `null` if it's not present. */ +private fun Project.findAndroidComponentExtension(): AndroidComponentsExtension? { + val androidComponentsExtensionName = "androidComponents" + val androidComponentsExtension = + try { + val candidate = extensions.findByName(androidComponentsExtensionName) + candidate as? AndroidComponentsExtension + } catch (e: Throwable) { + when (e) { + is TypeNotPresentException, + is ClassNotFoundException, + is NoClassDefFoundError -> { + logger.info("Dokka Gradle plugin failed to find AndroidComponentsExtension ${e::class} ${e.message}") + null + } + + else -> throw e + } + } + + if (androidComponentsExtension == null) { + if (project.extensions.findByName(androidComponentsExtensionName) != null) { + // uh oh - extension is present but findAndroidComponentExtension() failed. + // Is there a class loader issue? https://github.com/gradle/gradle/issues/27218 + logger.warn { + val allPlugins = + project.plugins.joinToString { it::class.qualifiedName ?: "${it::class}" } + val allExtensions = + project.extensions.extensionsSchema.elements.joinToString { "${it.name} ${it.publicType}" } + + /* language=TEXT */ + """ + |Dokka Gradle plugin failed to get AndroidComponentsExtension in ${project.path} + | Applied plugins: $allPlugins + | Available extensions: $allExtensions + """.trimMargin() + } + } + } + + return androidComponentsExtension +} From 6ed654045669b62171f02c3dbd19477a201a9ed4 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Wed, 27 Aug 2025 16:51:24 +0200 Subject: [PATCH 03/56] tidy --- .../src/main/kotlin/adapters/KotlinAdapter.kt | 212 ++++++------------ .../src/main/kotlin/internal/pluginUtils.kt | 59 +++++ 2 files changed, 122 insertions(+), 149 deletions(-) create mode 100644 dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/pluginUtils.kt diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt index 4ed1c07762..588eafebf2 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt @@ -195,50 +195,6 @@ abstract class KotlinAdapter @Inject constructor( private val logger = Logging.getLogger(KotlinAdapter::class.java) - /** Try and get [KotlinProjectExtension], or `null` if it's not present. */ - private fun Project.findKotlinExtension(): KotlinProjectExtension? { - val kotlinExtension = - try { - extensions.findByType() - // fallback to trying to get the JVM extension - // (not sure why I did this... maybe to be compatible with really old versions?) - ?: extensions.findByType() - } catch (e: Throwable) { - when (e) { - is TypeNotPresentException, - is ClassNotFoundException, - is NoClassDefFoundError -> { - logger.info("$dkaName failed to find KotlinExtension ${e::class} ${e.message}") - null - } - - else -> throw e - } - } - - if (kotlinExtension == null) { - if (project.extensions.findByName("kotlin") != null) { - // uh oh - the Kotlin extension is present but findKotlinExtension() failed. - // Is there a class loader issue? https://github.com/gradle/gradle/issues/27218 - logger.warn { - val allPlugins = - project.plugins.joinToString { it::class.qualifiedName ?: "${it::class}" } - val allExtensions = - project.extensions.extensionsSchema.elements.joinToString { "${it.name} ${it.publicType}" } - - /* language=TEXT */ - """ - |$dkaName failed to get KotlinProjectExtension in ${project.path} - | Applied plugins: $allPlugins - | Available extensions: $allExtensions - """.trimMargin() - } - } - } - - return kotlinExtension - } - /** Get the version of the Kotlin Gradle Plugin currently used to compile the project. */ // Must be lazy, else tests fail (because the KGP plugin isn't accessible) internal val currentKotlinToolingVersion: KotlinToolingVersion by lazy { @@ -298,7 +254,7 @@ private class KotlinCompilationDetailsBuilder( private val konanHome: Provider, private val project: Project, ) { - private val androidComponentsInfo: Provider> = getAgpVariantInfo(project) + private val androidComponentsInfo: Provider> = getAgpVariantInfo(project) fun createCompilationDetails( kotlinProjectExtension: KotlinProjectExtension, @@ -318,67 +274,18 @@ private class KotlinCompilationDetailsBuilder( return details } - private data class AgpVariantInfo( - val name: String, - val hasPublishedComponent: Boolean, - ) - private fun getAgpVariantInfo( project: Project, - ): Provider> { - - val androidVariants = objects.setProperty(AgpVariantInfo::class) - - fun collectAndroidVariants() { - val androidComponents = project.findAndroidComponentExtension() + ): Provider> { - androidComponents?.onVariants { variant -> - androidVariants.add( - AgpVariantInfo( - name = variant.name, - hasPublishedComponent = variant.components.any { it is com.android.build.api.variant.Variant }, - ) - ) - } - } + val androidVariants = objects.setProperty(AndroidVariantInfo::class) project.pluginManager.apply { - withPlugin(PluginId.AndroidBase) { collectAndroidVariants() } - withPlugin(PluginId.AndroidApplication) { collectAndroidVariants() } - withPlugin(PluginId.AndroidLibrary) { collectAndroidVariants() } + withPlugin(PluginId.AndroidBase) { collectAndroidVariants(project, androidVariants) } + withPlugin(PluginId.AndroidApplication) { collectAndroidVariants(project, androidVariants) } + withPlugin(PluginId.AndroidLibrary) { collectAndroidVariants(project, androidVariants) } } return androidVariants - -// try { -// project.extensions.findByType(AndroidComponentsExtension::class) -// } catch (ex: ClassNotFoundException) { -// KotlinCompilationDetailsBuilder.Companion.logger.info("Unable to find AndroidComponentsExtension in project $project", ex) -// null -// } -// if (androidComponents == null) { -// KotlinCompilationDetailsBuilder.Companion.logger.warn("AndroidComponentsExtension not available in project $project") -// return providers.provider { false } -// } else { -// val agpVariants = objects.listProperty(AgpVariantInfo::class) -// -// androidComponents.onVariants { v -> -// println("[DOKKA KotlinAdapter] ${compilation.name} checking variant $v, ${v.name}, ${v.components.map { "${it.name}=${it::class}" }}") -// agpVariants.add( -// AgpVariantInfo( -// name = v.name, -// hasPublishedComponent = -// v.components.any { it is com.android.build.api.variant.Variant }, -// ) -// ) -// } -// -// return agpVariants.map { agpVariants -> -// agpVariants -// .singleOrNull { it.name == compilation.name } -// ?.hasPublishedComponent -// ?: false -// } -// } } /** Create a single [KotlinCompilationDetails] for [compilation]. */ @@ -533,31 +440,34 @@ private class KotlinCompilationDetailsBuilder( } } - private fun isJvmAndroidPublished(compilation: KotlinJvmAndroidCompilation): Provider { - println("[DOKKA KotlinAdapter] Checking if ${compilation.name} is publishable... (currentKotlinToolingVersion:${currentKotlinToolingVersion})") + private fun isJvmAndroidPublished( + compilation: KotlinJvmAndroidCompilation, + ): Provider { -// if (currentKotlinToolingVersion < KotlinToolingVersion("2.2.10")) { // TODO revert, I made it lower for easier manual testing - if (currentKotlinToolingVersion < KotlinToolingVersion("2.1.10")) { + // in KGP 2.2.10 androidVariant will be nullable KT-77023 + if (currentKotlinToolingVersion < KotlinToolingVersion("2.2.10")) { val variantName = compilation.androidVariant.name return providers.provider { - val x = "LibraryVariant" in variantName || "ApplicationVariant" in variantName - println("[DOKKA KotlinAdapter] ${compilation.name} publishable:$x, variant:$variantName") - x + val result = "LibraryVariant" in variantName || "ApplicationVariant" in variantName + logger.info { + "[KotlinAdapter isJvmAndroidPublished] ${compilation.name} publishable:$result, androidVariant:$variantName" + } + result } } else { return androidComponentsInfo.map { components -> - components.any { component -> - val x = component.name == compilation.name - && component.hasPublishedComponent - println("[DOKKA KotlinAdapter] ${compilation.name} publishable:$x, component:${component.name}") - x + val compilationComponents = components.filter { it.name == compilation.name } + val result = compilationComponents.any { component -> component.hasPublishedComponent } + logger.info { + "[KotlinAdapter isJvmAndroidPublished] ${compilation.name} publishable:$result, compilationComponents:$compilationComponents" } + result } } } companion object { - private val logger = Logging.getLogger(KotlinCompilationDetailsBuilder::class.java) + private val logger = Logging.getLogger(KotlinAdapter::class.java) } } @@ -713,48 +623,52 @@ private class KotlinSourceSetDetailsBuilder( } +/** Try and get [KotlinProjectExtension], or `null` if it's not present. */ +private fun Project.findKotlinExtension(): KotlinProjectExtension? = + findExtensionLenient("kotlin") + + private typealias AndroidComponentsExtension = com.android.build.api.variant.AndroidComponentsExtension<*, *, *> +/** Try and get [AndroidComponentsExtension], or `null` if it's not present. */ +private fun Project.findAndroidComponentExtension(): AndroidComponentsExtension? = + findExtensionLenient("androidComponents") -/** Try and get [KotlinProjectExtension], or `null` if it's not present. */ -private fun Project.findAndroidComponentExtension(): AndroidComponentsExtension? { - val androidComponentsExtensionName = "androidComponents" - val androidComponentsExtension = - try { - val candidate = extensions.findByName(androidComponentsExtensionName) - candidate as? AndroidComponentsExtension - } catch (e: Throwable) { - when (e) { - is TypeNotPresentException, - is ClassNotFoundException, - is NoClassDefFoundError -> { - logger.info("Dokka Gradle plugin failed to find AndroidComponentsExtension ${e::class} ${e.message}") - null - } - else -> throw e - } - } +/** + * Store details about a [com.android.build.api.variant.Variant]. + * + * @param[name] [com.android.build.api.variant.Variant.name]. + * @param[hasPublishedComponent] `true` if any component of the variant is 'published', + * i.e. it is an instance of [com.android.build.api.variant.Variant]. + */ +private data class AndroidVariantInfo( + val name: String, + val hasPublishedComponent: Boolean, +) - if (androidComponentsExtension == null) { - if (project.extensions.findByName(androidComponentsExtensionName) != null) { - // uh oh - extension is present but findAndroidComponentExtension() failed. - // Is there a class loader issue? https://github.com/gradle/gradle/issues/27218 - logger.warn { - val allPlugins = - project.plugins.joinToString { it::class.qualifiedName ?: "${it::class}" } - val allExtensions = - project.extensions.extensionsSchema.elements.joinToString { "${it.name} ${it.publicType}" } - - /* language=TEXT */ - """ - |Dokka Gradle plugin failed to get AndroidComponentsExtension in ${project.path} - | Applied plugins: $allPlugins - | Available extensions: $allExtensions - """.trimMargin() +/** + * Collect [AndroidVariantInfo]s for all variants in the project. + * + * Should only be called when AGP is applied (otherwise the `androidComponents` extension will be missing). + */ +private fun collectAndroidVariants( + project: Project, + androidVariants: SetProperty, +) { + val androidComponents = project.findAndroidComponentExtension() + + androidComponents?.onVariants { variant -> + val hasPublishedComponent = + variant.components.any { component -> + component is com.android.build.api.variant.Variant } - } - } - return androidComponentsExtension + androidVariants.add( + AndroidVariantInfo( + name = variant.name, + hasPublishedComponent = hasPublishedComponent, + ) + ) + } } diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/pluginUtils.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/pluginUtils.kt new file mode 100644 index 0000000000..aaa18448ae --- /dev/null +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/pluginUtils.kt @@ -0,0 +1,59 @@ +/* + * Copyright 2014-2025 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package org.jetbrains.dokka.gradle.internal + +import org.gradle.api.Project + +/** + * Try and get an extension from [Project.getExtensions], or `null` if it's not present. + * + * Handles as many errors as possible. + * + * Logs a warning if the extension is present, but the wrong type + * (probably caused by an inconsistent buildscript classpath https://github.com/gradle/gradle/issues/27218) + */ +internal inline fun Project.findExtensionLenient( + extensionName: String, +): T? { + val candidate = extensions.findByName(extensionName) + ?: return null + + val extensionInstance = + try { + candidate as? T + } catch (e: Throwable) { + when (e) { + is TypeNotPresentException, + is ClassNotFoundException, + is NoClassDefFoundError -> { + logger.info("Dokka Gradle plugin failed to find extension ${T::class.simpleName}. ${e::class} ${e.message}") + null + } + + else -> throw e + } + } + + if (extensionInstance == null) { + if (project.extensions.findByName(extensionName) != null) { + // uh oh - extension is present, but it's the wrong type + // Is there a class loader issue? https://github.com/gradle/gradle/issues/27218 + logger.warn { + val allPlugins = + project.plugins.joinToString { it::class.qualifiedName ?: "${it::class}" } + val allExtensions = + project.extensions.extensionsSchema.elements.joinToString { "${it.name} ${it.publicType}" } + + """ + |Dokka Gradle plugin failed to get AndroidComponentsExtension in ${project.path} + | Applied plugins: $allPlugins + | Available extensions: $allExtensions + """.trimMargin() + } + } + } + + return extensionInstance +} From 144405d77dc8f24cf37d774fbd56dda301a4cb95 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:14:15 +0200 Subject: [PATCH 04/56] tidy --- .../src/main/kotlin/internal/pluginUtils.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/pluginUtils.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/pluginUtils.kt index aaa18448ae..4aa7d3ee11 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/pluginUtils.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/pluginUtils.kt @@ -28,7 +28,7 @@ internal inline fun Project.findExtensionLenient( is TypeNotPresentException, is ClassNotFoundException, is NoClassDefFoundError -> { - logger.info("Dokka Gradle plugin failed to find extension ${T::class.simpleName}. ${e::class} ${e.message}") + logger.info("Dokka Gradle plugin failed to find extension $extensionName ${T::class.simpleName}. ${e::class} ${e.message}") null } @@ -47,7 +47,7 @@ internal inline fun Project.findExtensionLenient( project.extensions.extensionsSchema.elements.joinToString { "${it.name} ${it.publicType}" } """ - |Dokka Gradle plugin failed to get AndroidComponentsExtension in ${project.path} + |Dokka Gradle plugin failed to get extension $extensionName ${T::class.simpleName} in ${project.path} | Applied plugins: $allPlugins | Available extensions: $allExtensions """.trimMargin() From a869239d43f39cbfd2e687fb2eef973b74d61f5a Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Thu, 28 Aug 2025 10:43:19 +0200 Subject: [PATCH 05/56] Avoid `java.lang.NoClassDefFoundError` in `findExtensionLenient`. rename file to match function name Update test. --- .../kotlin/internal/findExtensionLenient.kt | 62 +++++++++++++++++++ .../src/main/kotlin/internal/pluginUtils.kt | 59 ------------------ .../kotlin/MultiModuleFunctionalTest.kt | 11 ++-- 3 files changed, 69 insertions(+), 63 deletions(-) create mode 100644 dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/findExtensionLenient.kt delete mode 100644 dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/pluginUtils.kt diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/findExtensionLenient.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/findExtensionLenient.kt new file mode 100644 index 0000000000..5ac5412bcd --- /dev/null +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/findExtensionLenient.kt @@ -0,0 +1,62 @@ +/* + * Copyright 2014-2025 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package org.jetbrains.dokka.gradle.internal + +import org.gradle.api.Project + +/** + * Try and get an extension from [Project.getExtensions], or `null` if it's not present. + * + * Handles as many errors as possible. + * + * Logs a warning if the extension is present, but the wrong type + * (probably caused by an inconsistent buildscript classpath https://github.com/gradle/gradle/issues/27218) + */ +internal inline fun Project.findExtensionLenient( + extensionName: String, +): T? { + + val extensionByName = extensions.findByName(extensionName) + if (extensionByName == null) { + logger.info("Dokka Gradle plugin failed to find extension $extensionName by name ${T::class.java}") + return null + } + + try { + return extensions.findByType(T::class.java) + } catch (e: Throwable) { + when (e) { + is TypeNotPresentException, + is ClassNotFoundException, + is NoClassDefFoundError -> { + + // uh oh - extension is present, but it's the wrong type + // Is there a class loader issue? https://github.com/gradle/gradle/issues/27218 + logger.warn { + // If we're here, then T isn't available, so don't use T::class. + // Instead, use the available extension's class. + val actualExtensionFqn = + extensions.extensionsSchema.firstOrNull { it.name == extensionName }?.publicType?.fullyQualifiedName + + val allPlugins = + project.plugins.joinToString { it::class.qualifiedName ?: "${it::class.java}" } + val allExtensions = + project.extensions.extensionsSchema.elements.joinToString { "${it.name} ${it.publicType}" } + + """ + |Dokka Gradle plugin failed to get extension $extensionName $actualExtensionFqn in ${project.path} + |Please make sure plugins in all subprojects are consistent. See https://github.com/gradle/gradle/issues/27218 + | Applied plugins: $allPlugins + | Available extensions: $allExtensions + """.trimMargin() + } + + return null + } + + else -> throw e + } + } +} diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/pluginUtils.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/pluginUtils.kt deleted file mode 100644 index 4aa7d3ee11..0000000000 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/pluginUtils.kt +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2014-2025 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.gradle.internal - -import org.gradle.api.Project - -/** - * Try and get an extension from [Project.getExtensions], or `null` if it's not present. - * - * Handles as many errors as possible. - * - * Logs a warning if the extension is present, but the wrong type - * (probably caused by an inconsistent buildscript classpath https://github.com/gradle/gradle/issues/27218) - */ -internal inline fun Project.findExtensionLenient( - extensionName: String, -): T? { - val candidate = extensions.findByName(extensionName) - ?: return null - - val extensionInstance = - try { - candidate as? T - } catch (e: Throwable) { - when (e) { - is TypeNotPresentException, - is ClassNotFoundException, - is NoClassDefFoundError -> { - logger.info("Dokka Gradle plugin failed to find extension $extensionName ${T::class.simpleName}. ${e::class} ${e.message}") - null - } - - else -> throw e - } - } - - if (extensionInstance == null) { - if (project.extensions.findByName(extensionName) != null) { - // uh oh - extension is present, but it's the wrong type - // Is there a class loader issue? https://github.com/gradle/gradle/issues/27218 - logger.warn { - val allPlugins = - project.plugins.joinToString { it::class.qualifiedName ?: "${it::class}" } - val allExtensions = - project.extensions.extensionsSchema.elements.joinToString { "${it.name} ${it.publicType}" } - - """ - |Dokka Gradle plugin failed to get extension $extensionName ${T::class.simpleName} in ${project.path} - | Applied plugins: $allPlugins - | Available extensions: $allExtensions - """.trimMargin() - } - } - } - - return extensionInstance -} diff --git a/dokka-runners/dokka-gradle-plugin/src/testFunctional/kotlin/MultiModuleFunctionalTest.kt b/dokka-runners/dokka-gradle-plugin/src/testFunctional/kotlin/MultiModuleFunctionalTest.kt index 9d0c278150..7452c9370a 100644 --- a/dokka-runners/dokka-gradle-plugin/src/testFunctional/kotlin/MultiModuleFunctionalTest.kt +++ b/dokka-runners/dokka-gradle-plugin/src/testFunctional/kotlin/MultiModuleFunctionalTest.kt @@ -520,14 +520,17 @@ class MultiModuleFunctionalTest : FunSpec({ test("expect warning regarding KotlinProjectExtension") { project.runner - .addArguments("clean") + .addArguments( + "clean", + "--stacktrace", + ) .forwardOutput() .build { // the root project doesn't have the KGP applied, so KotlinProjectExtension shouldn't be applied - output shouldNotContain "KotlinAdapter failed to get KotlinProjectExtension in :\n" + output shouldNotContain "Dokka Gradle plugin failed to get extension kotlin org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension in :\n" - output shouldContain "KotlinAdapter failed to get KotlinProjectExtension in :subproject-hello\n" - output shouldContain "KotlinAdapter failed to get KotlinProjectExtension in :subproject-goodbye\n" + output shouldContain "Dokka Gradle plugin failed to get extension kotlin org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension in :subproject-hello\n" + output shouldContain "Dokka Gradle plugin failed to get extension kotlin org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension in :subproject-goodbye\n" } } } From e8cd21efac4134a3ca5a430ac20f616ecc758654 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:00:31 +0200 Subject: [PATCH 06/56] limit fetching data unlesss KGP >= 2.2.10 Add kdoc --- .../src/main/kotlin/adapters/KotlinAdapter.kt | 51 ++++++++++++++----- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt index 588eafebf2..7ae951b686 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt @@ -274,17 +274,30 @@ private class KotlinCompilationDetailsBuilder( return details } + /** + * Collect information about Android variants. + * Used to determine whether a source set is published or not. + * See [KotlinSourceSetDetails.isPublishedSourceSet]. + * + * Android variant info must be fetched eagerly, + * since AGP doesn't provide a lazy way of accessing component information. + * + * @see collectAndroidVariants + * @see supportsAgpKotlinBuiltInCompilation + */ private fun getAgpVariantInfo( project: Project, ): Provider> { - val androidVariants = objects.setProperty(AndroidVariantInfo::class) - project.pluginManager.apply { - withPlugin(PluginId.AndroidBase) { collectAndroidVariants(project, androidVariants) } - withPlugin(PluginId.AndroidApplication) { collectAndroidVariants(project, androidVariants) } - withPlugin(PluginId.AndroidLibrary) { collectAndroidVariants(project, androidVariants) } + if (currentKotlinToolingVersion.supportsAgpKotlinBuiltInCompilation()) { + project.pluginManager.apply { + withPlugin(PluginId.AndroidBase) { collectAndroidVariants(project, androidVariants) } + withPlugin(PluginId.AndroidApplication) { collectAndroidVariants(project, androidVariants) } + withPlugin(PluginId.AndroidLibrary) { collectAndroidVariants(project, androidVariants) } + } } + return androidVariants } @@ -445,21 +458,21 @@ private class KotlinCompilationDetailsBuilder( ): Provider { // in KGP 2.2.10 androidVariant will be nullable KT-77023 - if (currentKotlinToolingVersion < KotlinToolingVersion("2.2.10")) { - val variantName = compilation.androidVariant.name - return providers.provider { - val result = "LibraryVariant" in variantName || "ApplicationVariant" in variantName + if (currentKotlinToolingVersion.supportsAgpKotlinBuiltInCompilation()) { + return androidComponentsInfo.map { components -> + val compilationComponents = components.filter { it.name == compilation.name } + val result = compilationComponents.any { component -> component.hasPublishedComponent } logger.info { - "[KotlinAdapter isJvmAndroidPublished] ${compilation.name} publishable:$result, androidVariant:$variantName" + "[KotlinAdapter isJvmAndroidPublished] ${compilation.name} publishable:$result, compilationComponents:$compilationComponents" } result } } else { - return androidComponentsInfo.map { components -> - val compilationComponents = components.filter { it.name == compilation.name } - val result = compilationComponents.any { component -> component.hasPublishedComponent } + val variantName = compilation.androidVariant.name + return providers.provider { + val result = "LibraryVariant" in variantName || "ApplicationVariant" in variantName logger.info { - "[KotlinAdapter isJvmAndroidPublished] ${compilation.name} publishable:$result, compilationComponents:$compilationComponents" + "[KotlinAdapter isJvmAndroidPublished] ${compilation.name} publishable:$result, androidVariant:$variantName" } result } @@ -672,3 +685,13 @@ private fun collectAndroidVariants( ) } } + +/** + * KGP 2.2.10 will start delegating Kotlin compilation to AGP ("Built-in Kotlin"). + * + * [KotlinJvmAndroidCompilation.androidVariant] will be deprecated and nullable. + * + * See https://youtrack.jetbrains.com/issue/KT-77023 + */ +private fun KotlinToolingVersion.supportsAgpKotlinBuiltInCompilation(): Boolean = + this >= KotlinToolingVersion("2.2.10") From f8a02d6dc8d4fd9236626d8c32ae2bac7c1fad74 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:53:36 +0200 Subject: [PATCH 07/56] fix android variant typecheck --- .../src/main/kotlin/adapters/KotlinAdapter.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt index 7ae951b686..c0680e3573 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt @@ -43,6 +43,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget import org.jetbrains.kotlin.tooling.core.KotlinToolingVersion import java.io.File import javax.inject.Inject +import kotlin.reflect.jvm.jvmName /** * The [KotlinAdapter] plugin will automatically register Kotlin source sets as Dokka source sets. @@ -468,11 +469,11 @@ private class KotlinCompilationDetailsBuilder( result } } else { - val variantName = compilation.androidVariant.name + val androidVariantJvmName = compilation.androidVariant::class.jvmName return providers.provider { - val result = "LibraryVariant" in variantName || "ApplicationVariant" in variantName + val result = "LibraryVariant" in androidVariantJvmName || "ApplicationVariant" in androidVariantJvmName logger.info { - "[KotlinAdapter isJvmAndroidPublished] ${compilation.name} publishable:$result, androidVariant:$variantName" + "[KotlinAdapter isJvmAndroidPublished] ${compilation.name} publishable:$result, androidVariantJvmName:$androidVariantJvmName" } result } From f08f6ad73ce8e40a8409f004a64ed7050a338f4b Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Mon, 15 Sep 2025 18:07:20 +0200 Subject: [PATCH 08/56] rm unnecessary `typealias AndroidComponentsExtension` --- .../src/main/kotlin/adapters/KotlinAdapter.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt index c0680e3573..7875346f63 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt @@ -3,6 +3,7 @@ */ package org.jetbrains.dokka.gradle.adapters +import com.android.build.api.variant.AndroidComponentsExtension import org.gradle.api.Named import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.Plugin @@ -642,11 +643,9 @@ private fun Project.findKotlinExtension(): KotlinProjectExtension? = findExtensionLenient("kotlin") -private typealias AndroidComponentsExtension = com.android.build.api.variant.AndroidComponentsExtension<*, *, *> - /** Try and get [AndroidComponentsExtension], or `null` if it's not present. */ -private fun Project.findAndroidComponentExtension(): AndroidComponentsExtension? = - findExtensionLenient("androidComponents") +private fun Project.findAndroidComponentExtension(): AndroidComponentsExtension<*, *, *>? = + findExtensionLenient>("androidComponents") /** From 3663dcea4226b0f367a69acdb6b6bddeaf4d8ef2 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Mon, 15 Sep 2025 18:09:47 +0200 Subject: [PATCH 09/56] move comment about 'string based class comparison' to relevant part of code --- .../src/main/kotlin/adapters/KotlinAdapter.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt index 7875346f63..a3ce7f95cc 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt @@ -443,9 +443,6 @@ private class KotlinCompilationDetailsBuilder( is KotlinMetadataCompilation<*> -> providers.provider { true } - // Use string-based comparison, not the actual classes, because AGP has deprecated and - // moved the Library/Application classes to a different package. - // Using strings is more widely compatible. is KotlinJvmAndroidCompilation -> { isJvmAndroidPublished(this) } @@ -472,6 +469,9 @@ private class KotlinCompilationDetailsBuilder( } else { val androidVariantJvmName = compilation.androidVariant::class.jvmName return providers.provider { + // Use string-based comparison for the class names, not the actual classes, + // because AGP has deprecated and moved the Library/Application classes to a different package. + // Using strings is more widely compatible. val result = "LibraryVariant" in androidVariantJvmName || "ApplicationVariant" in androidVariantJvmName logger.info { "[KotlinAdapter isJvmAndroidPublished] ${compilation.name} publishable:$result, androidVariantJvmName:$androidVariantJvmName" From d7446577125e330e6471279dc2dffe63e5d4ace5 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Tue, 4 Nov 2025 07:56:45 +0100 Subject: [PATCH 10/56] bump tested KGP 2.2 version --- .../org/jetbrains/dokka/it/gradle/junit/TestedVersionsSource.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/TestedVersionsSource.kt b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/TestedVersionsSource.kt index 2b56655420..696a3c3a65 100644 --- a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/TestedVersionsSource.kt +++ b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/TestedVersionsSource.kt @@ -47,7 +47,7 @@ fun interface TestedVersionsSource { "1.9.25", "2.0.21", "2.1.21", - "2.2.20", + "2.2.21", ) /** From 6642daba2e038728acf87a108a658607e414c92e Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Tue, 4 Nov 2025 07:59:22 +0100 Subject: [PATCH 11/56] add tested KGP 2.3 version --- .../org/jetbrains/dokka/it/gradle/junit/TestedVersionsSource.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/TestedVersionsSource.kt b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/TestedVersionsSource.kt index 696a3c3a65..c5719174cc 100644 --- a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/TestedVersionsSource.kt +++ b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/TestedVersionsSource.kt @@ -48,6 +48,7 @@ fun interface TestedVersionsSource { "2.0.21", "2.1.21", "2.2.21", + "2.3.0-Beta2", ) /** From 5554f874ec49efd63099a8ec53236e9c109df394 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Tue, 4 Nov 2025 08:01:00 +0100 Subject: [PATCH 12/56] remove condition usage of AndroidComponentsExtension --- .../src/main/kotlin/adapters/KotlinAdapter.kt | 63 ++++++------------- 1 file changed, 18 insertions(+), 45 deletions(-) diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt index 935e49d2a6..174b72df39 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt @@ -4,12 +4,14 @@ package org.jetbrains.dokka.gradle.adapters import com.android.build.api.variant.AndroidComponentsExtension +import com.android.build.api.variant.Variant import org.gradle.api.Named import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.FileCollection +import org.gradle.api.logging.Logger import org.gradle.api.logging.Logging import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty @@ -44,13 +46,12 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget import org.jetbrains.kotlin.tooling.core.KotlinToolingVersion import java.io.File import javax.inject.Inject -import kotlin.reflect.jvm.jvmName /** * The [KotlinAdapter] plugin will automatically register Kotlin source sets as Dokka source sets. * * This is an internal Dokka plugin and should not be used externally. - * It is not a standalone plugin, it requires [org.jetbrains.dokka.gradle.DokkaBasePlugin] is also applied. + * It is not a standalone plugin, it requires [DokkaBasePlugin] is also applied. */ @InternalDokkaGradlePluginApi abstract class KotlinAdapter @Inject constructor( @@ -292,12 +293,10 @@ private class KotlinCompilationDetailsBuilder( ): Provider> { val androidVariants = objects.setProperty(AndroidVariantInfo::class) - if (currentKotlinToolingVersion.supportsAgpKotlinBuiltInCompilation()) { - project.pluginManager.apply { - withPlugin(PluginId.AndroidBase) { collectAndroidVariants(project, androidVariants) } - withPlugin(PluginId.AndroidApplication) { collectAndroidVariants(project, androidVariants) } - withPlugin(PluginId.AndroidLibrary) { collectAndroidVariants(project, androidVariants) } - } + project.pluginManager.apply { + withPlugin(PluginId.AndroidBase) { collectAndroidVariants(project, androidVariants) } + withPlugin(PluginId.AndroidApplication) { collectAndroidVariants(project, androidVariants) } + withPlugin(PluginId.AndroidLibrary) { collectAndroidVariants(project, androidVariants) } } return androidVariants @@ -455,34 +454,18 @@ private class KotlinCompilationDetailsBuilder( private fun isJvmAndroidPublished( compilation: KotlinJvmAndroidCompilation, ): Provider { - - // in KGP 2.2.10 androidVariant will be nullable KT-77023 - if (currentKotlinToolingVersion.supportsAgpKotlinBuiltInCompilation()) { - return androidComponentsInfo.map { components -> - val compilationComponents = components.filter { it.name == compilation.name } - val result = compilationComponents.any { component -> component.hasPublishedComponent } - logger.info { - "[KotlinAdapter isJvmAndroidPublished] ${compilation.name} publishable:$result, compilationComponents:$compilationComponents" - } - result - } - } else { - val androidVariantJvmName = compilation.androidVariant::class.jvmName - return providers.provider { - // Use string-based comparison for the class names, not the actual classes, - // because AGP has deprecated and moved the Library/Application classes to a different package. - // Using strings is more widely compatible. - val result = "LibraryVariant" in androidVariantJvmName || "ApplicationVariant" in androidVariantJvmName - logger.info { - "[KotlinAdapter isJvmAndroidPublished] ${compilation.name} publishable:$result, androidVariantJvmName:$androidVariantJvmName" - } - result + return androidComponentsInfo.map { components -> + val compilationComponents = components.filter { it.name == compilation.name } + val result = compilationComponents.any { component -> component.hasPublishedComponent } + logger.info { + "[KotlinAdapter isJvmAndroidPublished] ${compilation.name} publishable:$result, compilationComponents:$compilationComponents" } + result } } companion object { - private val logger = Logging.getLogger(KotlinAdapter::class.java) + private val logger: Logger = Logging.getLogger(KotlinAdapter::class.java) } } @@ -649,11 +632,11 @@ private fun Project.findAndroidComponentExtension(): AndroidComponentsExtension< /** - * Store details about a [com.android.build.api.variant.Variant]. + * Store details about a [Variant]. * - * @param[name] [com.android.build.api.variant.Variant.name]. + * @param[name] [Variant.name]. * @param[hasPublishedComponent] `true` if any component of the variant is 'published', - * i.e. it is an instance of [com.android.build.api.variant.Variant]. + * i.e. it is an instance of [Variant]. */ private data class AndroidVariantInfo( val name: String, @@ -674,7 +657,7 @@ private fun collectAndroidVariants( androidComponents?.onVariants { variant -> val hasPublishedComponent = variant.components.any { component -> - component is com.android.build.api.variant.Variant + component is Variant } androidVariants.add( @@ -685,13 +668,3 @@ private fun collectAndroidVariants( ) } } - -/** - * KGP 2.2.10 will start delegating Kotlin compilation to AGP ("Built-in Kotlin"). - * - * [KotlinJvmAndroidCompilation.androidVariant] will be deprecated and nullable. - * - * See https://youtrack.jetbrains.com/issue/KT-77023 - */ -private fun KotlinToolingVersion.supportsAgpKotlinBuiltInCompilation(): Boolean = - this >= KotlinToolingVersion("2.2.10") From 6fca4134502e603a91912cb84544aa25b58846f9 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Tue, 4 Nov 2025 18:28:31 +0100 Subject: [PATCH 13/56] add more docs for `collectAndroidVariants` --- .../src/main/kotlin/adapters/KotlinAdapter.kt | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt index 8bbd968c4d..a2fdb1fa83 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt @@ -650,9 +650,44 @@ private data class AndroidVariantInfo( ) /** - * Collect [AndroidVariantInfo]s for all variants in the project. + * Collect [AndroidVariantInfo]s of the Android [Variant]s in this Android project. * - * Should only be called when AGP is applied (otherwise the `androidComponents` extension will be missing). + * We store the collected data in a custom class to aid with Configuration Cache compatibility. + * + * This function must only be called when AGP is applied + * (otherwise [findAndroidComponentExtension] will return `null`), + * i.e. inside a `withPlugin(...) {}` block. + * + * ## How to determine publishability of AGP Variants + * + * There are several Android Gradle plugins. + * Each AGP has a specific associated [Variant]: + * - `com.android.application` - [com.android.build.api.variant.ApplicationVariant] + * - `com.android.library` - [com.android.build.api.variant.DynamicFeatureVariant] + * - `com.android.test` - [com.android.build.api.variant.LibraryVariant] + * - `com.android.dynamic-feature` - [com.android.build.api.variant.TestVariant] + * + * A [Variant] is 'published' (or otherwise shared with other projects). + * Note that a [Variant] might have [nestedComponents][Variant.nestedComponents]. + * If any of these [com.android.build.api.variant.Component]s are [Variant]s, + * then the [Variant] itself should be considered 'publishable'. + * + * If a [KotlinSourceSet] has an associated [Variant], + * it should therefore be documented by Dokka by default. + * + * ### Associating Variants with Compilations with SourceSets + * + * So, how can we associate a [KotlinSourceSet] with a [Variant]? + * + * Fortunately, Dokka already knows about the [KotlinCompilation]s associated with a specific [KotlinSourceSet]. + * + * So, for each [KotlinCompilation], find a [Variant] with the same name, + * i.e. [KotlinCompilation.getName] is the same as [Variant.name]. + * + * Next, determine if the [Variant] associated with a [KotlinCompilation] is 'publishable' by + * checking if it _or_ any of its [nestedComponents][Variant.nestedComponents] + * are 'publishable' (i.e. is an instance of [Variant]). + * (We can we use [Variant.components] to check both the [Variant] and its `nestedComponents` the same time.) */ private fun collectAndroidVariants( project: Project, @@ -663,6 +698,8 @@ private fun collectAndroidVariants( androidComponents?.onVariants { variant -> val hasPublishedComponent = variant.components.any { component -> + // a Variant is a subtype of a Component that is shared with consumers, + // so Dokka should consider it 'publishable' component is Variant } From acd43cbf09893ec70cbfdb89bb950c1af8149b27 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Tue, 4 Nov 2025 18:37:01 +0100 Subject: [PATCH 14/56] rm old kdoc reference --- .../src/main/kotlin/adapters/KotlinAdapter.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt index a2fdb1fa83..bdf2bf7007 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt @@ -292,7 +292,6 @@ private class KotlinCompilationDetailsBuilder( * since AGP doesn't provide a lazy way of accessing component information. * * @see collectAndroidVariants - * @see supportsAgpKotlinBuiltInCompilation */ private fun getAgpVariantInfo( project: Project, From c50bd2e1995a12eb8eb41d95d21119ef58071f54 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Mon, 10 Nov 2025 18:07:59 +0100 Subject: [PATCH 15/56] Support AGP with Kotlin BuiltIn When using AGP 9, KGP is no longer required. AGP will be responsible for configuring Kotlin compilation. DGP needs to support Kotlin BuiltIn by extracting information from AGP instead of KGP. - Update KotlinAdapter and AndroidAdapter to handle AGP with Kotlin built-in. - Capture classpaths of variants from `AndroidComponentsExtension` instead of the Android extension. - Update captured AGP variant info to include classpaths. - Only apply KotlinAdapter and AndroidAdapter once per project (Remove the `exec()` function, only apply the plugin once using `KotlinAdapter.applyTo()`). --- .../main/kotlin/adapters/AndroidAdapter.kt | 127 +++++++------ .../kotlin/adapters/AndroidVariantInfo.kt | 104 ++++++++++ .../src/main/kotlin/adapters/JavaAdapter.kt | 10 +- .../src/main/kotlin/adapters/KotlinAdapter.kt | 179 ++++++++---------- .../main/kotlin/formats/DokkaFormatPlugin.kt | 4 +- .../src/main/kotlin/internal/PluginId.kt | 8 + 6 files changed, 257 insertions(+), 175 deletions(-) create mode 100644 dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/AndroidVariantInfo.kt diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/AndroidAdapter.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/AndroidAdapter.kt index 34959a20a7..b02f210af3 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/AndroidAdapter.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/AndroidAdapter.kt @@ -3,27 +3,26 @@ */ package org.jetbrains.dokka.gradle.adapters -import com.android.build.gradle.AppExtension +import com.android.build.api.variant.AndroidComponentsExtension import com.android.build.gradle.BaseExtension -import com.android.build.gradle.LibraryExtension -import com.android.build.gradle.TestExtension import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.result.ResolvedArtifactResult import org.gradle.api.file.FileCollection +import org.gradle.api.file.RegularFile import org.gradle.api.logging.Logging import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderFactory +import org.gradle.api.provider.SetProperty +import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.getByType +import org.gradle.kotlin.dsl.setProperty import org.gradle.kotlin.dsl.withType import org.jetbrains.dokka.gradle.DokkaBasePlugin import org.jetbrains.dokka.gradle.DokkaExtension import org.jetbrains.dokka.gradle.engine.parameters.KotlinPlatform import org.jetbrains.dokka.gradle.internal.InternalDokkaGradlePluginApi import org.jetbrains.dokka.gradle.internal.PluginId -import org.jetbrains.dokka.gradle.internal.artifactType import java.io.File import javax.inject.Inject @@ -31,7 +30,7 @@ import javax.inject.Inject * Discovers Android Gradle Plugin specific configuration and uses it to configure Dokka. * * This is an internal Dokka plugin and should not be used externally. - * It is not a standalone plugin, it requires [org.jetbrains.dokka.gradle.DokkaBasePlugin] is also applied. + * It is not a standalone plugin, it requires [DokkaBasePlugin] is also applied. */ @InternalDokkaGradlePluginApi abstract class AndroidAdapter @Inject constructor( @@ -41,16 +40,6 @@ abstract class AndroidAdapter @Inject constructor( override fun apply(project: Project) { logger.info("applied ${this::class} to ${project.path}") - project.plugins.withType().configureEach { - project.pluginManager.apply { - withPlugin(PluginId.AndroidBase) { configure(project) } - withPlugin(PluginId.AndroidApplication) { configure(project) } - withPlugin(PluginId.AndroidLibrary) { configure(project) } - } - } - } - - protected fun configure(project: Project) { val dokkaExtension = project.extensions.getByType() val androidExt = AndroidExtensionWrapper(project) ?: return @@ -79,7 +68,23 @@ abstract class AndroidAdapter @Inject constructor( } @InternalDokkaGradlePluginApi - companion object + companion object { + + /** + * Apply [AndroidAdapter] a single time to [project], regardless of how many AGP plugins are applied. + */ + internal fun applyTo(project: Project) { + project.plugins.withType().all { + project.pluginManager.apply { + withPlugin(PluginId.AndroidBase) { apply(AndroidAdapter::class) } + withPlugin(PluginId.AndroidApplication) { apply(AndroidAdapter::class) } + withPlugin(PluginId.AndroidLibrary) { apply(AndroidAdapter::class) } + withPlugin(PluginId.AndroidTest) { apply(AndroidAdapter::class) } + withPlugin(PluginId.AndroidDynamicFeature) { apply(AndroidAdapter::class) } + } + } + } + } } @@ -90,17 +95,20 @@ private val logger = Logging.getLogger(AndroidAdapter::class.java) private fun AndroidExtensionWrapper( project: Project ): AndroidExtensionWrapper? { - val androidExt: BaseExtension = try { - project.extensions.getByType() + try { + val androidComponents = project.findAndroidComponentsExtension() + if (androidComponents != null) { + return AndroidExtensionWrapper.forAndroidComponents( + androidComponents = androidComponents, + providers = project.providers, + objects = project.objects, + ) + } } catch (ex: Exception) { - logger.warn("${AndroidExtensionWrapper::class} could not get Android Extension for project ${project.path}") - return null + logger.warn("AndroidExtensionWrapper: could not find AndroidComponentsExtension", ex) } - return AndroidExtensionWrapper.forBaseExtension( - androidExt = androidExt, - providers = project.providers, - objects = project.objects - ) + + return null } @@ -116,51 +124,48 @@ private interface AndroidExtensionWrapper { companion object { - fun forBaseExtension( - androidExt: BaseExtension, + fun forAndroidComponents( + androidComponents: AndroidComponentsExtension<*, *, *>, providers: ProviderFactory, objects: ObjectFactory, ): AndroidExtensionWrapper { return object : AndroidExtensionWrapper { - - override fun variantsCompileClasspath(): FileCollection { - val androidComponentsCompileClasspath = objects.fileCollection() - - val variants = when (androidExt) { - is LibraryExtension -> androidExt.libraryVariants - is AppExtension -> androidExt.applicationVariants - is TestExtension -> androidExt.applicationVariants - else -> { - logger.warn("${AndroidExtensionWrapper::class} found unknown Android Extension $androidExt") - return objects.fileCollection() - } + private val androidVariants: SetProperty = + objects.setProperty(AndroidVariantInfo::class) + + /** + * Get the `android.jar` for the current project. + * + * Need to double-wrap with [Provider] because AGP will only + * compute the boot classpath after the compilation options have been finalized. + * Otherwise, AGP throws an exception. + */ + private val bootClasspath: Provider>> = + providers.provider { + androidComponents + .sdkComponents + .bootClasspath } - fun Configuration.collect(artifactType: String) { - val artifactTypeFiles = incoming - .artifactView { - attributes { - artifactType(artifactType) - } - lenient(true) - } - .artifacts - .resolvedArtifacts - .map { artifacts -> artifacts.map(ResolvedArtifactResult::getFile) } - - androidComponentsCompileClasspath.from(artifactTypeFiles) - } + init { + collectAndroidVariants(androidComponents, androidVariants) + } - variants.all { - compileConfiguration.collect("jar") - //runtimeConfiguration.collect("jar") + /** Fetch all configuration names used by all variants. */ + override fun variantsCompileClasspath(): FileCollection { + val collector = objects.fileCollection() + androidVariants.get().forEach { variant -> + collector.from(variant.compileClasspath) } - - return androidComponentsCompileClasspath + return collector } override fun bootClasspath(): Provider> { - return providers.provider { androidExt.bootClasspath } + return bootClasspath.flatMap { bootClasspath -> + bootClasspath.map { contents -> + contents.map(RegularFile::getAsFile) + } + } } } } diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/AndroidVariantInfo.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/AndroidVariantInfo.kt new file mode 100644 index 0000000000..bdb62c3f66 --- /dev/null +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/AndroidVariantInfo.kt @@ -0,0 +1,104 @@ +/* + * Copyright 2014-2025 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package org.jetbrains.dokka.gradle.adapters + +import com.android.build.api.variant.AndroidComponentsExtension +import com.android.build.api.variant.Variant +import org.gradle.api.Project +import org.gradle.api.artifacts.Configuration +import org.gradle.api.file.FileCollection +import org.gradle.api.provider.SetProperty +import org.jetbrains.dokka.gradle.internal.findExtensionLenient +import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation +import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet + +/** + * Store details about a [Variant]. + * + * @param[name] [Variant.name]. + * @param[hasPublishedComponent] `true` if any component of the variant is 'published', + * i.e. it is an instance of [Variant]. + */ +internal data class AndroidVariantInfo( + val name: String, + val hasPublishedComponent: Boolean, + val compileClasspath: FileCollection, + val compileConfiguration: Configuration, +) + + +/** Try and get [AndroidComponentsExtension], or `null` if it's not present. */ +internal fun Project.findAndroidComponentsExtension(): AndroidComponentsExtension<*, *, *>? = + try { + findExtensionLenient>("androidComponents") + } catch (_: NoClassDefFoundError) { + null + } catch (_: ClassNotFoundException) { + null + } + + +/** + * Collect [AndroidVariantInfo]s of the Android [Variant]s in this Android project. + * + * We store the collected data in a custom class to aid with Configuration Cache compatibility. + * + * This function must only be called when AGP is applied + * (otherwise [findAndroidComponentsExtension] will return `null`), + * i.e. inside a `withPlugin(...) {}` block. + * + * ## How to determine publishability of AGP Variants + * + * There are several Android Gradle plugins. + * Each AGP has a specific associated [Variant]: + * - `com.android.application` - [com.android.build.api.variant.ApplicationVariant] + * - `com.android.library` - [com.android.build.api.variant.DynamicFeatureVariant] + * - `com.android.test` - [com.android.build.api.variant.LibraryVariant] + * - `com.android.dynamic-feature` - [com.android.build.api.variant.TestVariant] + * + * A [Variant] is 'published' (or otherwise shared with other projects). + * Note that a [Variant] might have [nestedComponents][Variant.nestedComponents]. + * If any of these [com.android.build.api.variant.Component]s are [Variant]s, + * then the [Variant] itself should be considered 'publishable'. + * + * If a [KotlinSourceSet] has an associated [Variant], + * it should therefore be documented by Dokka by default. + * + * ### Associating Variants with Compilations with SourceSets + * + * So, how can we associate a [KotlinSourceSet] with a [Variant]? + * + * Fortunately, Dokka already knows about the [KotlinCompilation]s associated with a specific [KotlinSourceSet]. + * + * So, for each [KotlinCompilation], find a [Variant] with the same name, + * i.e. [KotlinCompilation.getName] is the same as [Variant.name]. + * + * Next, determine if the [Variant] associated with a [KotlinCompilation] is 'publishable' by + * checking if it _or_ any of its [nestedComponents][Variant.nestedComponents] + * are 'publishable' (i.e. is an instance of [Variant]). + * (We can we use [Variant.components] to check both the [Variant] and its `nestedComponents` the same time.) + */ +internal fun collectAndroidVariants( + androidComponents: AndroidComponentsExtension<*, *, *>, + androidVariants: SetProperty, +) { + androidComponents.onVariants { variant -> + val hasPublishedComponent = + variant.components.any { component -> + // a Variant is a subtype of a Component that is shared with consumers, + // so Dokka should consider it 'publishable' + component is Variant + } + + androidVariants.add( + AndroidVariantInfo( + name = variant.name, + hasPublishedComponent = hasPublishedComponent, + compileClasspath = variant.compileClasspath, + compileConfiguration = variant.compileConfiguration, + ) + ) + } +} diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/JavaAdapter.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/JavaAdapter.kt index 96baf92520..3aa13b12b1 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/JavaAdapter.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/JavaAdapter.kt @@ -20,10 +20,7 @@ import org.gradle.kotlin.dsl.withType import org.jetbrains.dokka.gradle.DokkaExtension import org.jetbrains.dokka.gradle.engine.parameters.DokkaSourceSetSpec import org.jetbrains.dokka.gradle.engine.parameters.KotlinPlatform -import org.jetbrains.dokka.gradle.internal.InternalDokkaGradlePluginApi -import org.jetbrains.dokka.gradle.internal.PluginId -import org.jetbrains.dokka.gradle.internal.or -import org.jetbrains.dokka.gradle.internal.uppercaseFirstChar +import org.jetbrains.dokka.gradle.internal.* import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import javax.inject.Inject @@ -118,10 +115,7 @@ abstract class JavaAdapter @Inject constructor( ): Provider { val projectHasKotlinPlugin = providers.provider { - project.pluginManager.hasPlugin(PluginId.KotlinAndroid) - || project.pluginManager.hasPlugin(PluginId.KotlinJs) - || project.pluginManager.hasPlugin(PluginId.KotlinJvm) - || project.pluginManager.hasPlugin(PluginId.KotlinMultiplatform) + PluginId.kgpPlugins.any { project.pluginManager.hasPlugin(it) } } val projectHasAndroidPlugin = providers.provider { diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt index bdf2bf7007..2e9a45485c 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/adapters/KotlinAdapter.kt @@ -3,12 +3,7 @@ */ package org.jetbrains.dokka.gradle.adapters -import com.android.build.api.variant.AndroidComponentsExtension -import com.android.build.api.variant.Variant -import org.gradle.api.Named -import org.gradle.api.NamedDomainObjectContainer -import org.gradle.api.Plugin -import org.gradle.api.Project +import org.gradle.api.* import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.FileCollection import org.gradle.api.logging.Logger @@ -33,12 +28,9 @@ import org.jetbrains.kotlin.commonizer.stdlib import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension -import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation +import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.MAIN_COMPILATION_NAME -import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.androidJvm -import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet -import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion import org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinNativeCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataCompilation @@ -62,17 +54,6 @@ abstract class KotlinAdapter @Inject constructor( override fun apply(project: Project) { logger.info("Applying $dkaName to ${project.path}") - project.plugins.withType().configureEach { - project.pluginManager.apply { - withPlugin(PluginId.KotlinAndroid) { exec(project) } - withPlugin(PluginId.KotlinJs) { exec(project) } - withPlugin(PluginId.KotlinJvm) { exec(project) } - withPlugin(PluginId.KotlinMultiplatform) { exec(project) } - } - } - } - - private fun exec(project: Project) { val kotlinExtension = project.findKotlinExtension() if (kotlinExtension == null) { logger.info("Skipping applying $dkaName in ${project.path} - could not find KotlinProjectExtension") @@ -170,7 +151,7 @@ abstract class KotlinAdapter @Inject constructor( } logger.info( "[$projectPath] Dokka could not determine KotlinPlatform for ${details.name} from targets ${compilations.map { it.target }}. " + - "Dokka will assume this is a ${defaultPlatform} source set. " + + "Dokka will assume this is a $defaultPlatform source set. " + "(All platforms: $allPlatforms)" ) defaultPlatform @@ -210,6 +191,73 @@ abstract class KotlinAdapter @Inject constructor( val kgpVersion = getKotlinPluginVersion(logger) KotlinToolingVersion(kgpVersion) } + + /** + * Applies [KotlinAdapter] to the current project when any plugin of type [KotlinBasePlugin] + * is applied. + * + * [KotlinBasePlugin] is the parent type for the Kotlin/JVM, Kotlin/Multiplatform, Kotlin/JS plugins, + * as well as AGP's kotlin-built-in plugin. + */ + internal fun applyTo(project: Project) { + findKotlinBasePlugins(project)?.all { + project.pluginManager.apply(KotlinAdapter::class) + } + } + + /** + * Tries fetching all plugins with type [KotlinBasePlugin], + * returning `null` if the class is not available in the current classloader. + * + * (The class might not be available if the current project is a Java or Android project, + * or the buildscripts have an inconsistent classpath https://github.com/gradle/gradle/issues/27218) + */ + private fun findKotlinBasePlugins(project: Project): DomainObjectCollection? { + return try { + project.plugins.withType() + } catch (ex: Throwable) { + when (ex) { + is ClassNotFoundException, + is NoClassDefFoundError -> { + logger.info("Dokka Gradle Plugin could not load KotlinBasePlugin in project ${project.displayName} - ${ex::class.qualifiedName} ${ex.message}") + logWarningIfKgpApplied( + project, + kotlinBasePluginNotFoundException = ex, + ) + null + } + + else -> throw ex + } + } + } + + /** + * Check all plugins to see if they are a subtype of [KotlinBasePlugin]. + * If any are, log a warning. + * + * ##### Motivation + * + * If the buildscript classpath is inconsistent, it might not be possible for DGP + * to react to KGP because the [KotlinBasePlugin] class can't be loaded. + * If so, DGP will be lenient and not cause errors, + * but it must display a prominent warning to help users find the problem. + * + * @param[kotlinBasePluginNotFoundException] The exception thrown when [KotlinBasePlugin] is not available. + */ + private fun logWarningIfKgpApplied( + project: Project, + kotlinBasePluginNotFoundException: Throwable, + ) { + PluginId.kgpPlugins.forEach { pluginId -> + project.pluginManager.withPlugin(pluginId) { + logger.warn( + "Dokka Gradle Plugin could not load KotlinBasePlugin in project ${project.displayName}, but plugin $id is applied", + kotlinBasePluginNotFoundException, + ) + } + } + } } } @@ -220,7 +268,6 @@ abstract class KotlinAdapter @Inject constructor( * The compilation details may come from a multiplatform project ([KotlinMultiplatformExtension]) * or a single-platform project ([KotlinSingleTargetExtension]). */ -@InternalDokkaGradlePluginApi private data class KotlinCompilationDetails( /** [KotlinCompilation.target] name. */ val target: String, @@ -307,6 +354,11 @@ private class KotlinCompilationDetailsBuilder( return androidVariants } + private fun collectAndroidVariants(project: Project, androidVariants: SetProperty) { + val androidComponents = project.findAndroidComponentsExtension() ?: return + collectAndroidVariants(androidComponents, androidVariants) + } + /** Create a single [KotlinCompilationDetails] for [compilation]. */ private fun createCompilationDetails( compilation: KotlinCompilation<*>, @@ -629,84 +681,3 @@ private class KotlinSourceSetDetailsBuilder( /** Try and get [KotlinProjectExtension], or `null` if it's not present. */ private fun Project.findKotlinExtension(): KotlinProjectExtension? = findExtensionLenient("kotlin") - - -/** Try and get [AndroidComponentsExtension], or `null` if it's not present. */ -private fun Project.findAndroidComponentExtension(): AndroidComponentsExtension<*, *, *>? = - findExtensionLenient>("androidComponents") - - -/** - * Store details about a [Variant]. - * - * @param[name] [Variant.name]. - * @param[hasPublishedComponent] `true` if any component of the variant is 'published', - * i.e. it is an instance of [Variant]. - */ -private data class AndroidVariantInfo( - val name: String, - val hasPublishedComponent: Boolean, -) - -/** - * Collect [AndroidVariantInfo]s of the Android [Variant]s in this Android project. - * - * We store the collected data in a custom class to aid with Configuration Cache compatibility. - * - * This function must only be called when AGP is applied - * (otherwise [findAndroidComponentExtension] will return `null`), - * i.e. inside a `withPlugin(...) {}` block. - * - * ## How to determine publishability of AGP Variants - * - * There are several Android Gradle plugins. - * Each AGP has a specific associated [Variant]: - * - `com.android.application` - [com.android.build.api.variant.ApplicationVariant] - * - `com.android.library` - [com.android.build.api.variant.DynamicFeatureVariant] - * - `com.android.test` - [com.android.build.api.variant.LibraryVariant] - * - `com.android.dynamic-feature` - [com.android.build.api.variant.TestVariant] - * - * A [Variant] is 'published' (or otherwise shared with other projects). - * Note that a [Variant] might have [nestedComponents][Variant.nestedComponents]. - * If any of these [com.android.build.api.variant.Component]s are [Variant]s, - * then the [Variant] itself should be considered 'publishable'. - * - * If a [KotlinSourceSet] has an associated [Variant], - * it should therefore be documented by Dokka by default. - * - * ### Associating Variants with Compilations with SourceSets - * - * So, how can we associate a [KotlinSourceSet] with a [Variant]? - * - * Fortunately, Dokka already knows about the [KotlinCompilation]s associated with a specific [KotlinSourceSet]. - * - * So, for each [KotlinCompilation], find a [Variant] with the same name, - * i.e. [KotlinCompilation.getName] is the same as [Variant.name]. - * - * Next, determine if the [Variant] associated with a [KotlinCompilation] is 'publishable' by - * checking if it _or_ any of its [nestedComponents][Variant.nestedComponents] - * are 'publishable' (i.e. is an instance of [Variant]). - * (We can we use [Variant.components] to check both the [Variant] and its `nestedComponents` the same time.) - */ -private fun collectAndroidVariants( - project: Project, - androidVariants: SetProperty, -) { - val androidComponents = project.findAndroidComponentExtension() - - androidComponents?.onVariants { variant -> - val hasPublishedComponent = - variant.components.any { component -> - // a Variant is a subtype of a Component that is shared with consumers, - // so Dokka should consider it 'publishable' - component is Variant - } - - androidVariants.add( - AndroidVariantInfo( - name = variant.name, - hasPublishedComponent = hasPublishedComponent, - ) - ) - } -} diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/formats/DokkaFormatPlugin.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/formats/DokkaFormatPlugin.kt index d2da140930..ca7ef6f0fa 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/formats/DokkaFormatPlugin.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/formats/DokkaFormatPlugin.kt @@ -65,9 +65,9 @@ abstract class DokkaFormatPlugin( target.pluginManager.apply(DokkaBasePlugin::class) // apply the plugin that will autoconfigure Dokka to use the sources of a Kotlin project - target.pluginManager.apply(type = KotlinAdapter::class) + KotlinAdapter.applyTo(target) + AndroidAdapter.applyTo(target) target.pluginManager.apply(type = JavaAdapter::class) - target.pluginManager.apply(type = AndroidAdapter::class) target.plugins.withType().configureEach { val dokkaExtension = target.extensions.getByType(DokkaExtension::class) diff --git a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/PluginId.kt b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/PluginId.kt index b8fe5f3098..b313bcae2e 100644 --- a/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/PluginId.kt +++ b/dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/PluginId.kt @@ -13,8 +13,16 @@ internal object PluginId { const val KotlinJs = "org.jetbrains.kotlin.js" const val KotlinJvm = "org.jetbrains.kotlin.jvm" const val KotlinMultiplatform = "org.jetbrains.kotlin.multiplatform" + val kgpPlugins: Set = setOf( + KotlinAndroid, + KotlinJs, + KotlinJvm, + KotlinMultiplatform, + ) const val AndroidBase = "com.android.base" const val AndroidApplication = "com.android.application" const val AndroidLibrary = "com.android.library" + const val AndroidTest = "com.android.test" + const val AndroidDynamicFeature = "com.android.dynamic-feature" } From 24504223deec06ca1a5ccf4db72829ce465da3a8 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Mon, 10 Nov 2025 18:08:12 +0100 Subject: [PATCH 16/56] update comment about `kotlin("jvm") apply false` in test --- .../src/testFixtures/kotlin/projects/MultiModuleProject.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dokka-runners/dokka-gradle-plugin/src/testFixtures/kotlin/projects/MultiModuleProject.kt b/dokka-runners/dokka-gradle-plugin/src/testFixtures/kotlin/projects/MultiModuleProject.kt index 25c95bbbb3..f507d3811d 100644 --- a/dokka-runners/dokka-gradle-plugin/src/testFixtures/kotlin/projects/MultiModuleProject.kt +++ b/dokka-runners/dokka-gradle-plugin/src/testFixtures/kotlin/projects/MultiModuleProject.kt @@ -34,8 +34,8 @@ fun TestScope.initMultiModuleProject( buildGradleKts = """ |plugins { - | // Kotlin plugin shouldn't be necessary here, but without it Dokka errors - | // with ClassNotFound KotlinPluginExtension... very weird + | // Must apply KGP in the root project ensure consistent classpath, + | // preventing issues like https://github.com/gradle/gradle/issues/17559 and https://github.com/gradle/gradle/issues/27218 | kotlin("jvm") version embeddedKotlinVersion apply false | id("org.jetbrains.dokka") version "${DokkaConstants.DOKKA_VERSION}" | id("org.jetbrains.dokka-javadoc") version "${DokkaConstants.DOKKA_VERSION}" From ee6ac1809a326177b6006002fb207d529ff3398e Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Mon, 10 Nov 2025 18:08:36 +0100 Subject: [PATCH 17/56] Update test for inaccessible `KotlinBasePlugin` class --- .../kotlin/MultiModuleFunctionalTest.kt | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/dokka-runners/dokka-gradle-plugin/src/testFunctional/kotlin/MultiModuleFunctionalTest.kt b/dokka-runners/dokka-gradle-plugin/src/testFunctional/kotlin/MultiModuleFunctionalTest.kt index 7452c9370a..85fa7fcf89 100644 --- a/dokka-runners/dokka-gradle-plugin/src/testFunctional/kotlin/MultiModuleFunctionalTest.kt +++ b/dokka-runners/dokka-gradle-plugin/src/testFunctional/kotlin/MultiModuleFunctionalTest.kt @@ -518,19 +518,33 @@ class MultiModuleFunctionalTest : FunSpec({ } } - test("expect warning regarding KotlinProjectExtension") { + test("expect KotlinAdapter not applied to root project") { project.runner .addArguments( "clean", "--stacktrace", + "--info", ) - .forwardOutput() .build { - // the root project doesn't have the KGP applied, so KotlinProjectExtension shouldn't be applied - output shouldNotContain "Dokka Gradle plugin failed to get extension kotlin org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension in :\n" + // the root project doesn't have KGP applied, so KotlinAdapter shouldn't be applied + output shouldContain "Dokka Gradle Plugin could not load KotlinBasePlugin in project root project 'kpe-warning'" + output shouldNotContain "Applying KotlinAdapter to :\n" + } + } - output shouldContain "Dokka Gradle plugin failed to get extension kotlin org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension in :subproject-hello\n" - output shouldContain "Dokka Gradle plugin failed to get extension kotlin org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension in :subproject-goodbye\n" + test("expect KotlinAdapter applied to subprojects, with KotlinProjectExtension warnings") { + project.runner + .addArguments( + "clean", + "--stacktrace", + "--warn", + ) + .build { + // the subprojects should have KotlinAdapter applied, but the extension should be unavailable + // because the buildscript classpath is inconsistent. + // (DGP is applied to the root project, but KGP is not.) + output shouldContain "Dokka Gradle Plugin could not load KotlinBasePlugin in project project ':subproject-hello', but plugin org.jetbrains.kotlin.jvm is applied" + output shouldContain "Dokka Gradle Plugin could not load KotlinBasePlugin in project project ':subproject-goodbye', but plugin org.jetbrains.kotlin.jvm is applied" } } } From 02b4c49d929d9ea6e0fc1b4b7d9056ab8c97ff47 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Mon, 10 Nov 2025 18:19:44 +0100 Subject: [PATCH 18/56] Integration tests: support AGP 9 testing and version filtering Preparation for testing AGP9. - Add min/max version to `@TestsAndroid` and `@TestsAndroidCompose` filter AGP versions. - Add SemVerRange to help with filtering. - Add AGP9 properties. --- .../junit/DokkaGradlePluginTestExtension.kt | 30 +++++++--- .../it/gradle/junit/TestedVersionsSource.kt | 58 ++++++++++--------- .../it/gradle/junit/WithGradleProperties.kt | 9 +++ .../dokka/it/gradle/junit/testTags.kt | 16 ++++- .../jetbrains/dokka/it/gradle/utils/SemVer.kt | 5 +- .../dokka/it/gradle/utils/SemVerRange.kt | 52 +++++++++++++++++ 6 files changed, 130 insertions(+), 40 deletions(-) create mode 100644 dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/utils/SemVerRange.kt diff --git a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/DokkaGradlePluginTestExtension.kt b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/DokkaGradlePluginTestExtension.kt index 01b1b49589..a43fbd01ce 100644 --- a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/DokkaGradlePluginTestExtension.kt +++ b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/DokkaGradlePluginTestExtension.kt @@ -9,6 +9,7 @@ import org.jetbrains.dokka.it.gradle.junit.DokkaGradlePluginTestExtension.Compan import org.jetbrains.dokka.it.gradle.junit.TestedVersions.Companion.dashSeparatedId import org.jetbrains.dokka.it.gradle.junit.TestedVersions.Companion.displayName import org.jetbrains.dokka.it.gradle.utils.SemVer +import org.jetbrains.dokka.it.gradle.utils.SemVerRange import org.jetbrains.dokka.it.gradle.withJetBrainsCachedGradleVersion import org.jetbrains.dokka.it.gradle.withReadOnlyDependencyCache import org.jetbrains.dokka.it.systemProperty @@ -21,7 +22,6 @@ import org.junit.platform.commons.logging.Logger import org.junit.platform.commons.logging.LoggerFactory import org.junit.platform.commons.support.AnnotationSupport import org.junit.platform.commons.support.AnnotationSupport.findAnnotation -import org.junit.platform.commons.support.AnnotationSupport.isAnnotated import org.junit.platform.commons.support.ReflectionSupport import org.opentest4j.TestAbortedException import java.nio.file.Files @@ -85,8 +85,8 @@ class DokkaGradlePluginTestExtension : val projectInitializer = ReflectionSupport.newInstance(dgpTest.projectInitializer.java) val sourceProjectDir = dgpTest.sourceProjectName - val isAndroidTest = context.hasOrParentHasAnnotation() - val isAndroidComposeTest = context.hasOrParentHasAnnotation() + val testAndroidAnnotation = context.findClosestAnnotation() + val testsAndroidComposeAnnotation = context.findClosestAnnotation() val gradleProperties = computeGradleProperties( context, @@ -94,8 +94,20 @@ class DokkaGradlePluginTestExtension : ) val testedVersionsSource = when { - isAndroidComposeTest -> TestedVersionsSource.AndroidCompose - isAndroidTest -> TestedVersionsSource.Android + testsAndroidComposeAnnotation != null -> TestedVersionsSource.AndroidCompose( + agpVersionRange = SemVerRange.from( + min = testsAndroidComposeAnnotation.minAgpVersion, + max = testsAndroidComposeAnnotation.maxAgpVersion, + ), + ) + + testAndroidAnnotation != null -> TestedVersionsSource.Android( + agpVersionRange = SemVerRange.from( + min = testAndroidAnnotation.minAgpVersion, + max = testAndroidAnnotation.maxAgpVersion, + ), + ) + else -> TestedVersionsSource.Default } @@ -328,10 +340,12 @@ class DokkaGradlePluginTestExtension : internal val templateProjectsDir by systemProperty(::Path) /** - * Check if this [ExtensionContext] or any of its parents is annotated with [T]. + * Find the annotation of type [T] closest to the current [ExtensionContext]. */ - private inline fun ExtensionContext.hasOrParentHasAnnotation(): Boolean = + private inline fun ExtensionContext.findClosestAnnotation(): T? = generateSequence(this) { it.parent.getOrNull() } - .any { isAnnotated(it.element, T::class.java) } + .firstNotNullOfOrNull { + findAnnotation(it.element, T::class.java).getOrNull() + } } } diff --git a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/TestedVersionsSource.kt b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/TestedVersionsSource.kt index c5719174cc..2e4b8561e2 100644 --- a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/TestedVersionsSource.kt +++ b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/TestedVersionsSource.kt @@ -3,10 +3,10 @@ */ package org.jetbrains.dokka.it.gradle.junit -import org.jetbrains.dokka.it.gradle.junit.TestedVersions.Companion.displayName import org.jetbrains.dokka.it.gradle.junit.TestedVersionsSource.Default.dokkaVersionOverride import org.jetbrains.dokka.it.gradle.utils.SemVer import org.jetbrains.dokka.it.gradle.utils.SemVer.Companion.contains +import org.jetbrains.dokka.it.gradle.utils.SemVerRange import org.jetbrains.dokka.it.optionalSystemProperty import org.jetbrains.dokka.it.systemProperty @@ -94,31 +94,48 @@ fun interface TestedVersionsSource { * * The test must be tagged with [TestsAndroid]. */ - object Android : TestedVersionsSource { + class Android( + private val agpVersionRange: SemVerRange? = null, + ) : TestedVersionsSource { + /** * All possible Android Gradle Plugin versions that could be tested. * - * We test the latest v7 and v8 AGP versions. + * We test the latest v7, v8, and v9 AGP versions. * * Note the AGP major version indicates the required major version of Gradle. * So, AGP 7.* supports Gradle 7, but will throw an error if used with Gradle 8. */ - private val allAgpVersions: List = listOf( + private val allAgpVersions: List = listOf( "7.4.2", "8.11.1", "8.12.0", - ) + "9.0.0-alpha13", + ).map { SemVer(it) } + + private val matchedAgpVersions: List = + if (agpVersionRange == null) { + allAgpVersions + } else { + allAgpVersions.filter { it in agpVersionRange } + } + + init { + require(matchedAgpVersions.isNotEmpty()) { + "No AGP versions matched the given range: $agpVersionRange" + } + } private val allVersions: Sequence = sequence { Default.get().forEach { v -> - allAgpVersions.forEach { agp -> + matchedAgpVersions.forEach { agp -> yield( TestedVersions.Android( dgp = v.dgp, gradle = v.gradle, kgp = v.kgp, - agp = SemVer(agp), + agp = agp, ) ) } @@ -127,30 +144,13 @@ fun interface TestedVersionsSource { isAgpCompatibleWithGradle(agp = v.agp, gradle = v.gradle) } - /** - * All major versions that _must_ be included in the sequence of all versions. - * - * This check is required because some versions are filtered out. - */ - private val requiredAgpMajorVersions = listOf(7, 8) - - init { - val agpMajorVersions = allVersions.map { it.agp.major } - - requiredAgpMajorVersions.forEach { requiredAgpMajor -> - require(requiredAgpMajor in agpMajorVersions) { - val versionsList = allVersions.joinToString("\n") { " - ${it.displayName()}" } - "Tested versions missing AGP $requiredAgpMajor. All versions:\n$versionsList" - } - } - } - override fun get(): Sequence = allVersions private fun isAgpCompatibleWithGradle(agp: SemVer, gradle: SemVer): Boolean { // AGP/Gradle compatibility definitions: // https://developer.android.com/build/releases/gradle-plugin?buildsystem=ndk-build#updating-gradle return when (agp.majorAndMinorVersions) { + "9.0" -> gradle.major >= 9 "8.12" -> gradle in "8.13.0".."9.0.0" "8.11" -> gradle in "8.13.0".."9.0.0" "8.10" -> gradle in "8.11.1"..<"9.0.0" @@ -176,7 +176,11 @@ fun interface TestedVersionsSource { * * The test must be tagged with [TestsAndroidCompose]. */ - object AndroidCompose : TestedVersionsSource { + class AndroidCompose( + agpVersionRange: SemVerRange? = null, + ) : TestedVersionsSource { + + private val androidVersions = Android(agpVersionRange) /** * Versions of the `org.jetbrains.compose` plugins. @@ -187,7 +191,7 @@ fun interface TestedVersionsSource { ) override fun get(): Sequence = sequence { - Android.get().forEach { v -> + androidVersions.get().forEach { v -> allComposeGradlePluginVersions.forEach { composeGP -> yield( TestedVersions.AndroidCompose( diff --git a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/WithGradleProperties.kt b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/WithGradleProperties.kt index 8fa5a15e0f..360dd96cca 100644 --- a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/WithGradleProperties.kt +++ b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/WithGradleProperties.kt @@ -36,7 +36,16 @@ fun interface GradlePropertiesProvider { object Android : GradlePropertiesProvider { override fun get(): Map = buildMap { + putAll(Default.get()) put("android.useAndroidX", "true") + put("android.builtInKotlin", "false") + } + } + + object AndroidKotlinBuiltIn : GradlePropertiesProvider { + override fun get(): Map = buildMap { + putAll(Android.get()) + put("android.builtInKotlin", "true") } } } diff --git a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/testTags.kt b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/testTags.kt index 4edeaa03e2..8fba917c1d 100644 --- a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/testTags.kt +++ b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/junit/testTags.kt @@ -44,12 +44,18 @@ annotation class TestsKotlinMultiplatform * If a test is annotated with [TestsAndroid] then * [DokkaGradlePluginTestExtension] will run the test multiple times, * and provide a [DokkaGradleProjectRunner] using [TestedVersions.Android]. + * + * @param[minAgpVersion] Inclusive lower-bound for AGP versions. + * @param[maxAgpVersion] Exclusive upper-bound for AGP versions. */ @Tag("Android") @Target(FUNCTION, CLASS) @MustBeDocumented @Inherited -annotation class TestsAndroid +annotation class TestsAndroid( + val minAgpVersion: String = "", + val maxAgpVersion: String = "", +) /** @@ -58,10 +64,16 @@ annotation class TestsAndroid * If a test is annotated with [TestsAndroid] then * [DokkaGradlePluginTestExtension] will run the test multiple times, * and provide a [DokkaGradleProjectRunner] using [TestedVersions.AndroidCompose]. + * + * @param[minAgpVersion] Inclusive lower-bound for AGP versions. + * @param[maxAgpVersion] Exclusive upper-bound for AGP versions. */ @Tag("Compose") @TestsAndroid @Target(FUNCTION, CLASS) @MustBeDocumented @Inherited -annotation class TestsAndroidCompose +annotation class TestsAndroidCompose( + val minAgpVersion: String = "", + val maxAgpVersion: String = "", +) diff --git a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/utils/SemVer.kt b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/utils/SemVer.kt index 8e566e0db4..451c9ed7c0 100644 --- a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/utils/SemVer.kt +++ b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/utils/SemVer.kt @@ -11,12 +11,10 @@ data class SemVer( ) : Comparable { val major: Int - //region These fields are private to avoid IJ warnings, feel free to make them public if it's helpful. - private val minor: Int + val minor: Int val patch: Int private val prerelease: String? private val metadata: String? - //endregion init { val match = semverRegex.matchEntire(version) ?: error("Invalid version '$version'") @@ -33,6 +31,7 @@ data class SemVer( this.major != other.major -> this.major.compareTo(other.major) this.minor != other.minor -> this.minor.compareTo(other.minor) this.patch != other.patch -> this.patch.compareTo(other.patch) + this.prerelease != other.prerelease -> { when { this.prerelease == null -> 1 diff --git a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/utils/SemVerRange.kt b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/utils/SemVerRange.kt new file mode 100644 index 0000000000..78cd749a4e --- /dev/null +++ b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/utils/SemVerRange.kt @@ -0,0 +1,52 @@ +/* + * Copyright 2014-2025 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package org.jetbrains.dokka.it.gradle.utils + +/** + * A range of [SemVer] versions. + * + * Only compares using the major, minor and patch components of the versions. + */ +data class SemVerRange( + private val minInclusive: SemVer?, + private val maxExclusive: SemVer?, +) { + init { + require(minInclusive != null || maxExclusive != null) { + "Invalid range: At least one bound must be specified. minInclusive=$minInclusive, maxExclusive=$maxExclusive" + } + if (minInclusive != null && maxExclusive != null) { + require(minInclusive < maxExclusive) { + "Invalid range: minInclusive=$minInclusive must be less than maxExclusive=$maxExclusive" + } + } + } + + operator fun contains(version: SemVer): Boolean { + val version = SemVer("${version.major}.${version.minor}.${version.patch}") + + if (minInclusive != null) { + if (version < minInclusive) return false + } + if (maxExclusive != null) { + if (version >= maxExclusive) return false + } + return true + } + + companion object { + internal fun from( + min: String, + max: String, + ): SemVerRange { + val min = if (min.isNotBlank()) SemVer(min) else null + val max = if (max.isNotBlank()) SemVer(max) else null + return SemVerRange( + minInclusive = min, + maxExclusive = max, + ) + } + } +} From 747573f191fed037dfea3ffd9729853a04db098b Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Mon, 10 Nov 2025 18:29:43 +0100 Subject: [PATCH 19/56] Add tests for AGP 9, and update other AGP tests - Add tests for AGP 9. - `it-android-kotlin-jvm-builtin` - AGP & kotlin-built-in (no KGP plugin). - `it-android-kotlin-mp-builtin` - AGP & kotlin-multiplatform. - Fix AGP <9 tests & update test data. --- build.gradle.kts | 2 + .../projects/it-android-0/build.gradle.kts | 6 +- .../build.gradle.kts | 29 + .../html/images/abstract-class-kotlin.svg | 26 + .../html/images/abstract-class.svg | 22 + .../html/images/anchor-copy-icon.svg | 6 + .../html/images/annotation-kotlin.svg | 13 + .../expectedData/html/images/annotation.svg | 9 + .../expectedData/html/images/arrow-down.svg | 3 + .../expectedData/html/images/burger.svg | 5 + .../expectedData/html/images/check.svg | 3 + .../expectedData/html/images/checkbox-off.svg | 3 + .../expectedData/html/images/checkbox-on.svg | 3 + .../expectedData/html/images/class-kotlin.svg | 13 + .../expectedData/html/images/class.svg | 9 + .../expectedData/html/images/copy-icon.svg | 3 + .../expectedData/html/images/cross.svg | 3 + .../expectedData/html/images/enum-kotlin.svg | 13 + .../expectedData/html/images/enum.svg | 9 + .../html/images/exception-class.svg | 9 + .../expectedData/html/images/field-value.svg | 10 + .../html/images/field-variable.svg | 10 + .../expectedData/html/images/filter.svg | 8 + .../expectedData/html/images/function.svg | 9 + .../html/images/go-to-top-icon.svg | 4 + .../expectedData/html/images/homepage.svg | 3 + .../html/images/interface-kotlin.svg | 13 + .../expectedData/html/images/interface.svg | 9 + .../expectedData/html/images/logo-icon.svg | 14 + .../expectedData/html/images/object.svg | 13 + .../expectedData/html/images/placeholder.svg | 3 + .../expectedData/html/images/success-icon.svg | 3 + .../expectedData/html/images/theme-toggle.svg | 3 + .../html/images/typealias-kotlin.svg | 13 + .../expectedData/html/index.html | 151 + .../-android-specific-class.html | 132 + .../-android-specific-class/create-view.html | 132 + .../-android-specific-class/index.html | 190 + .../sparse-int-array.html | 132 + .../-integration-test-activity.html | 132 + .../-integration-test-activity/index.html | 5669 +++++++++++++++++ .../html/it-android/it.android/index.html | 170 + .../expectedData/html/it-android/package-list | 10 + .../expectedData/html/navigation.html | 12 + .../expectedData/html/scripts/main.js | 45 + .../html/scripts/navigation-loader.js | 195 + .../expectedData/html/scripts/pages.json | 1 + .../html/scripts/platform-content-handler.js | 358 ++ .../expectedData/html/scripts/prism.js | 22 + .../scripts/safe-local-storage_blocking.js | 86 + .../html/scripts/sourceset_dependencies.js | 1 + .../expectedData/html/styles/logo-styles.css | 9 + .../expectedData/html/styles/main.css | 203 + .../expectedData/html/styles/prism.css | 114 + .../expectedData/html/styles/style.css | 458 ++ .../ui-kit/fonts/inter-latin-400-italic.woff | Bin 0 -> 59801 bytes .../ui-kit/fonts/inter-latin-400-italic.woff2 | Bin 0 -> 45233 bytes .../ui-kit/fonts/inter-latin-400-normal.woff | Bin 0 -> 56324 bytes .../ui-kit/fonts/inter-latin-400-normal.woff2 | Bin 0 -> 42632 bytes .../ui-kit/fonts/inter-latin-600-normal.woff | Bin 0 -> 57586 bytes .../ui-kit/fonts/inter-latin-600-normal.woff2 | Bin 0 -> 43860 bytes .../jetbrains-mono-latin-400-normal.woff | Bin 0 -> 50505 bytes .../jetbrains-mono-latin-400-normal.woff2 | Bin 0 -> 38188 bytes .../jetbrains-mono-latin-600-normal.woff | Bin 0 -> 51521 bytes .../jetbrains-mono-latin-600-normal.woff2 | Bin 0 -> 39577 bytes .../expectedData/html/ui-kit/ui-kit.min.css | 1 + .../expectedData/html/ui-kit/ui-kit.min.js | 1 + .../gradle.properties | 9 + .../settings.gradle.kts | 68 + .../src/main/AndroidManifest.xml | 5 + .../java/it/android/AndroidSpecificClass.kt | 20 + .../it/android/IntegrationTestActivity.kt | 26 + .../build.gradle.kts | 39 + .../html/images/abstract-class-kotlin.svg | 26 + .../html/images/abstract-class.svg | 22 + .../html/images/anchor-copy-icon.svg | 6 + .../html/images/annotation-kotlin.svg | 13 + .../expectedData/html/images/annotation.svg | 9 + .../expectedData/html/images/arrow-down.svg | 3 + .../expectedData/html/images/burger.svg | 5 + .../expectedData/html/images/check.svg | 3 + .../expectedData/html/images/checkbox-off.svg | 3 + .../expectedData/html/images/checkbox-on.svg | 3 + .../expectedData/html/images/class-kotlin.svg | 13 + .../expectedData/html/images/class.svg | 9 + .../expectedData/html/images/copy-icon.svg | 3 + .../expectedData/html/images/cross.svg | 3 + .../expectedData/html/images/enum-kotlin.svg | 13 + .../expectedData/html/images/enum.svg | 9 + .../html/images/exception-class.svg | 9 + .../expectedData/html/images/field-value.svg | 10 + .../html/images/field-variable.svg | 10 + .../expectedData/html/images/filter.svg | 8 + .../expectedData/html/images/function.svg | 9 + .../html/images/go-to-top-icon.svg | 4 + .../expectedData/html/images/homepage.svg | 3 + .../html/images/interface-kotlin.svg | 13 + .../expectedData/html/images/interface.svg | 9 + .../expectedData/html/images/logo-icon.svg | 14 + .../expectedData/html/images/object.svg | 13 + .../expectedData/html/images/placeholder.svg | 3 + .../expectedData/html/images/success-icon.svg | 3 + .../expectedData/html/images/theme-toggle.svg | 3 + .../html/images/typealias-kotlin.svg | 13 + .../expectedData/html/index.html | 151 + .../-android-specific-class.html | 132 + .../-android-specific-class/create-view.html | 132 + .../-android-specific-class/index.html | 190 + .../sparse-int-array.html | 132 + .../-integration-test-activity.html | 132 + .../-integration-test-activity/index.html | 5669 +++++++++++++++++ .../html/it-android/it.android/index.html | 170 + .../expectedData/html/it-android/package-list | 10 + .../expectedData/html/navigation.html | 12 + .../expectedData/html/scripts/main.js | 45 + .../html/scripts/navigation-loader.js | 195 + .../expectedData/html/scripts/pages.json | 1 + .../html/scripts/platform-content-handler.js | 358 ++ .../expectedData/html/scripts/prism.js | 22 + .../scripts/safe-local-storage_blocking.js | 86 + .../html/scripts/sourceset_dependencies.js | 1 + .../expectedData/html/styles/logo-styles.css | 9 + .../expectedData/html/styles/main.css | 203 + .../expectedData/html/styles/prism.css | 114 + .../expectedData/html/styles/style.css | 458 ++ .../ui-kit/fonts/inter-latin-400-italic.woff | Bin 0 -> 59801 bytes .../ui-kit/fonts/inter-latin-400-italic.woff2 | Bin 0 -> 45233 bytes .../ui-kit/fonts/inter-latin-400-normal.woff | Bin 0 -> 56324 bytes .../ui-kit/fonts/inter-latin-400-normal.woff2 | Bin 0 -> 42632 bytes .../ui-kit/fonts/inter-latin-600-normal.woff | Bin 0 -> 57586 bytes .../ui-kit/fonts/inter-latin-600-normal.woff2 | Bin 0 -> 43860 bytes .../jetbrains-mono-latin-400-normal.woff | Bin 0 -> 50505 bytes .../jetbrains-mono-latin-400-normal.woff2 | Bin 0 -> 38188 bytes .../jetbrains-mono-latin-600-normal.woff | Bin 0 -> 51521 bytes .../jetbrains-mono-latin-600-normal.woff2 | Bin 0 -> 39577 bytes .../expectedData/html/ui-kit/ui-kit.min.css | 1 + .../expectedData/html/ui-kit/ui-kit.min.js | 1 + .../gradle.properties | 9 + .../settings.gradle.kts | 68 + .../src/androidMain/AndroidManifest.xml | 5 + .../kotlin/it/android/AndroidSpecificClass.kt | 20 + .../it/android/IntegrationTestActivity.kt | 26 + .../projects/it-android/build.gradle.kts | 6 +- .../-integration-test-activity/index.html | 201 +- .../expectedData/html/ui-kit/ui-kit.min.css | 2 +- .../build.gradle.kts | 6 +- .../src/test/kotlin/AndroidComposeIT.kt | 4 +- .../kotlin/AndroidKotlinJvmBuiltInTest.kt | 84 + .../AndroidKotlinMultiplatformBuiltInTest.kt | 84 + .../src/test/kotlin/AndroidProjectIT.kt | 4 +- .../MultiplatformAndroidJvmProjectIT.kt | 4 +- 151 files changed, 17669 insertions(+), 40 deletions(-) create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/build.gradle.kts create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/abstract-class-kotlin.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/abstract-class.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/anchor-copy-icon.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/annotation-kotlin.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/annotation.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/arrow-down.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/burger.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/check.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/checkbox-off.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/checkbox-on.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/class-kotlin.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/class.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/copy-icon.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/cross.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/enum-kotlin.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/enum.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/exception-class.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/field-value.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/field-variable.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/filter.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/function.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/go-to-top-icon.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/homepage.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/interface-kotlin.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/interface.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/logo-icon.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/object.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/placeholder.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/success-icon.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/theme-toggle.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/typealias-kotlin.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/index.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/-android-specific-class.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/create-view.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/index.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/sparse-int-array.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-integration-test-activity/-integration-test-activity.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-integration-test-activity/index.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/index.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/package-list create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/navigation.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/scripts/main.js create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/scripts/navigation-loader.js create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/scripts/pages.json create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/scripts/platform-content-handler.js create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/scripts/prism.js create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/scripts/safe-local-storage_blocking.js create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/scripts/sourceset_dependencies.js create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/styles/logo-styles.css create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/styles/main.css create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/styles/prism.css create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/styles/style.css create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/ui-kit/fonts/inter-latin-400-italic.woff create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/ui-kit/fonts/inter-latin-400-italic.woff2 create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/ui-kit/fonts/inter-latin-400-normal.woff create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/ui-kit/fonts/inter-latin-400-normal.woff2 create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/ui-kit/fonts/inter-latin-600-normal.woff create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/ui-kit/fonts/inter-latin-600-normal.woff2 create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/ui-kit/fonts/jetbrains-mono-latin-400-normal.woff create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/ui-kit/fonts/jetbrains-mono-latin-400-normal.woff2 create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/ui-kit/fonts/jetbrains-mono-latin-600-normal.woff create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/ui-kit/fonts/jetbrains-mono-latin-600-normal.woff2 create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/ui-kit/ui-kit.min.css create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/ui-kit/ui-kit.min.js create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/gradle.properties create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/settings.gradle.kts create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/src/main/AndroidManifest.xml create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/src/main/java/it/android/AndroidSpecificClass.kt create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/src/main/java/it/android/IntegrationTestActivity.kt create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/build.gradle.kts create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/abstract-class-kotlin.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/abstract-class.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/anchor-copy-icon.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/annotation-kotlin.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/annotation.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/arrow-down.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/burger.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/check.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/checkbox-off.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/checkbox-on.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/class-kotlin.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/class.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/copy-icon.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/cross.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/enum-kotlin.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/enum.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/exception-class.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/field-value.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/field-variable.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/filter.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/function.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/go-to-top-icon.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/homepage.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/interface-kotlin.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/interface.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/logo-icon.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/object.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/placeholder.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/success-icon.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/theme-toggle.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/images/typealias-kotlin.svg create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/index.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/it-android/it.android/-android-specific-class/-android-specific-class.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/it-android/it.android/-android-specific-class/create-view.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/it-android/it.android/-android-specific-class/index.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/it-android/it.android/-android-specific-class/sparse-int-array.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/it-android/it.android/-integration-test-activity/-integration-test-activity.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/it-android/it.android/-integration-test-activity/index.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/it-android/it.android/index.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/it-android/package-list create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/navigation.html create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/scripts/main.js create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/scripts/navigation-loader.js create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/scripts/pages.json create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/scripts/platform-content-handler.js create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/scripts/prism.js create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/scripts/safe-local-storage_blocking.js create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/scripts/sourceset_dependencies.js create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/styles/logo-styles.css create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/styles/main.css create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/styles/prism.css create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/styles/style.css create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/ui-kit/fonts/inter-latin-400-italic.woff create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/ui-kit/fonts/inter-latin-400-italic.woff2 create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/ui-kit/fonts/inter-latin-400-normal.woff create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/ui-kit/fonts/inter-latin-400-normal.woff2 create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/ui-kit/fonts/inter-latin-600-normal.woff create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/ui-kit/fonts/inter-latin-600-normal.woff2 create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/ui-kit/fonts/jetbrains-mono-latin-400-normal.woff create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/ui-kit/fonts/jetbrains-mono-latin-400-normal.woff2 create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/ui-kit/fonts/jetbrains-mono-latin-600-normal.woff create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/ui-kit/fonts/jetbrains-mono-latin-600-normal.woff2 create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/ui-kit/ui-kit.min.css create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData/html/ui-kit/ui-kit.min.js create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/gradle.properties create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/settings.gradle.kts create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/src/androidMain/AndroidManifest.xml create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/src/androidMain/kotlin/it/android/AndroidSpecificClass.kt create mode 100644 dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/src/androidMain/kotlin/it/android/IntegrationTestActivity.kt create mode 100644 dokka-integration-tests/gradle/src/test/kotlin/AndroidKotlinJvmBuiltInTest.kt create mode 100644 dokka-integration-tests/gradle/src/test/kotlin/AndroidKotlinMultiplatformBuiltInTest.kt diff --git a/build.gradle.kts b/build.gradle.kts index 86721988b4..42477386b5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -126,6 +126,8 @@ idea { "dokka-integration-tests/gradle/projects/it-multiplatform-android-jvm/expectedData", "dokka-integration-tests/gradle/projects/it-android-compose/expectedData", "dokka-integration-tests/gradle/projects/it-kotlin-multiplatform/expectedData", + "dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData", + "dokka-integration-tests/gradle/projects/it-android-kotlin-mp-builtin/expectedData", "examples/gradle/dokka-versioning-multimodule-example/previousDocVersions/", "examples/gradle-v2/versioning-multimodule-example/docs/previousDocVersions/", diff --git a/dokka-integration-tests/gradle/projects/it-android-0/build.gradle.kts b/dokka-integration-tests/gradle/projects/it-android-0/build.gradle.kts index 47d1bacda1..ef50ddf02c 100644 --- a/dokka-integration-tests/gradle/projects/it-android-0/build.gradle.kts +++ b/dokka-integration-tests/gradle/projects/it-android-0/build.gradle.kts @@ -11,7 +11,11 @@ plugins { android { defaultConfig { minSdkVersion(21) - setCompileSdkVersion(29) + setCompileSdkVersion(30) + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } } diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/build.gradle.kts b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/build.gradle.kts new file mode 100644 index 0000000000..4e922e56c9 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/build.gradle.kts @@ -0,0 +1,29 @@ +/* + * Copyright 2014-2025 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +plugins { + id("com.android.library") version "/* %{AGP_VERSION} */" + id("org.jetbrains.dokka") version "/* %{DGP_VERSION} */" +} + +android { + namespace = "org.jetbrains.dokka.it.android" + compileSdk = 33 + defaultConfig { + minSdk = 21 + } +} + +dependencies { + implementation("androidx.appcompat:appcompat:1.1.0") +} + +// WORKAROUND https://github.com/Kotlin/dokka/issues/3701 +afterEvaluate { + dokka.dokkaSourceSets + .matching { it.name == "debug" } + .configureEach { + sourceRoots.setFrom(emptyList()) + } +} diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/abstract-class-kotlin.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/abstract-class-kotlin.svg new file mode 100644 index 0000000000..97b7723a02 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/abstract-class-kotlin.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/abstract-class.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/abstract-class.svg new file mode 100644 index 0000000000..ead94b8bba --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/abstract-class.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/anchor-copy-icon.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/anchor-copy-icon.svg new file mode 100644 index 0000000000..dd43e7694e --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/anchor-copy-icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/annotation-kotlin.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/annotation-kotlin.svg new file mode 100644 index 0000000000..b74824201f --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/annotation-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/annotation.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/annotation.svg new file mode 100644 index 0000000000..76c2f4bb90 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/annotation.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/arrow-down.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/arrow-down.svg new file mode 100644 index 0000000000..ca54658d3c --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/arrow-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/burger.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/burger.svg new file mode 100644 index 0000000000..a26f194dc4 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/burger.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/check.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/check.svg new file mode 100644 index 0000000000..291e5eedd2 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/check.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/checkbox-off.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/checkbox-off.svg new file mode 100644 index 0000000000..a5117e8d9a --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/checkbox-off.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/checkbox-on.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/checkbox-on.svg new file mode 100644 index 0000000000..71891d57dd --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/checkbox-on.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/class-kotlin.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/class-kotlin.svg new file mode 100644 index 0000000000..dc23120aa2 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/class-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/class.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/class.svg new file mode 100644 index 0000000000..2447cf78e1 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/class.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/copy-icon.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/copy-icon.svg new file mode 100644 index 0000000000..abeb27e59d --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/copy-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/cross.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/cross.svg new file mode 100644 index 0000000000..232069f85e --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/cross.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/enum-kotlin.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/enum-kotlin.svg new file mode 100644 index 0000000000..207a0ef3b4 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/enum-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/enum.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/enum.svg new file mode 100644 index 0000000000..2deba5f114 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/enum.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/exception-class.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/exception-class.svg new file mode 100644 index 0000000000..1bb4f88e91 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/exception-class.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/field-value.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/field-value.svg new file mode 100644 index 0000000000..3aa75be3ed --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/field-value.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/field-variable.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/field-variable.svg new file mode 100644 index 0000000000..7a8af50945 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/field-variable.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/filter.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/filter.svg new file mode 100644 index 0000000000..be62ea5bf3 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/filter.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/function.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/function.svg new file mode 100644 index 0000000000..e56a417532 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/function.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/go-to-top-icon.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/go-to-top-icon.svg new file mode 100644 index 0000000000..62df4c7d57 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/go-to-top-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/homepage.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/homepage.svg new file mode 100644 index 0000000000..9a8927a40a --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/homepage.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/interface-kotlin.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/interface-kotlin.svg new file mode 100644 index 0000000000..e5273f0506 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/interface-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/interface.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/interface.svg new file mode 100644 index 0000000000..0637028747 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/interface.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/logo-icon.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/logo-icon.svg new file mode 100644 index 0000000000..ea6f37ed06 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/logo-icon.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/object.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/object.svg new file mode 100644 index 0000000000..5f960b7425 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/object.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/placeholder.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/placeholder.svg new file mode 100644 index 0000000000..e8129621d2 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/placeholder.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/success-icon.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/success-icon.svg new file mode 100644 index 0000000000..ff000d048d --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/success-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/theme-toggle.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/theme-toggle.svg new file mode 100644 index 0000000000..490263f391 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/theme-toggle.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/typealias-kotlin.svg b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/typealias-kotlin.svg new file mode 100644 index 0000000000..73a08851e0 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/images/typealias-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/index.html b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/index.html new file mode 100644 index 0000000000..81754e2e29 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/index.html @@ -0,0 +1,151 @@ + + + + + it-android + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

it-android

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/-android-specific-class.html b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/-android-specific-class.html new file mode 100644 index 0000000000..0c5e8f51e3 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/-android-specific-class.html @@ -0,0 +1,132 @@ + + + + + AndroidSpecificClass + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

AndroidSpecificClass

+
+
constructor()
+
+ +
+
+
+ + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/create-view.html b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/create-view.html new file mode 100644 index 0000000000..d1f97e1836 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/create-view.html @@ -0,0 +1,132 @@ + + + + + createView + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

createView

+
+
fun createView(context: Context): View
+
+ +
+
+
+ + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/index.html b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/index.html new file mode 100644 index 0000000000..9f6be2c8b1 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/index.html @@ -0,0 +1,190 @@ + + + + + AndroidSpecificClass + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

AndroidSpecificClass

+

This class is specific to android and uses android classes like: Context, SparseIntArray or View

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor()
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun createView(context: Context): View
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+
+
+
+
+
+ +
+
+
+ + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/sparse-int-array.html b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/sparse-int-array.html new file mode 100644 index 0000000000..314669fc9f --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-android-specific-class/sparse-int-array.html @@ -0,0 +1,132 @@ + + + + + sparseIntArray + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

sparseIntArray

+
+ +
+ +
+
+
+ + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-integration-test-activity/-integration-test-activity.html b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-integration-test-activity/-integration-test-activity.html new file mode 100644 index 0000000000..4680c1ebeb --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-integration-test-activity/-integration-test-activity.html @@ -0,0 +1,132 @@ + + + + + IntegrationTestActivity + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

IntegrationTestActivity

+
+
constructor()
+
+ +
+
+
+ + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-integration-test-activity/index.html b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-integration-test-activity/index.html new file mode 100644 index 0000000000..c659441271 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/-integration-test-activity/index.html @@ -0,0 +1,5669 @@ + + + + + IntegrationTestActivity + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

IntegrationTestActivity

+

Some Activity implementing AppCompatActivity from android x

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor()
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val actionBar: ActionBar?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val assets: AssetManager?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val baseContext: Context?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val cacheDir: File?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val codeCacheDir: File?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val contentScene: Scene?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val currentFocus: View?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val dataDir: File?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val display: Display?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val externalCacheDirs: Array<out File?>?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val externalMediaDirs: Array<out File?>?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val filesDir: File?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open var intent: Intent?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val mainLooper: Looper?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val obbDir: File?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val obbDirs: Array<out File?>?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val packageName: String?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val referrer: Uri?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val resources: Resources?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val taskId: Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val wallpaper: Drawable?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open val window: Window?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun addContentView(view: View?, params: ViewGroup.LayoutParams?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun applyOverrideConfiguration(overrideConfiguration: Configuration?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun bindIsolatedService(service: Intent, flags: Int, instanceName: String, executor: Executor, conn: ServiceConnection): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun bindService(service: Intent?, conn: ServiceConnection, flags: Int): Boolean
open fun bindService(service: Intent, flags: Int, executor: Executor, conn: ServiceConnection): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun bindServiceAsUser(service: Intent, conn: ServiceConnection, flags: Int, user: UserHandle): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun checkCallingOrSelfPermission(permission: String): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun checkCallingOrSelfUriPermission(uri: Uri?, modeFlags: Int): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun checkCallingOrSelfUriPermissions(uris: List<Uri?>, modeFlags: Int): IntArray
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun checkCallingPermission(permission: String): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun checkCallingUriPermission(uri: Uri?, modeFlags: Int): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun checkCallingUriPermissions(uris: List<Uri?>, modeFlags: Int): IntArray
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun checkPermission(permission: String, pid: Int, uid: Int): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun checkSelfPermission(permission: String): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun checkUriPermission(uri: Uri?, pid: Int, uid: Int, modeFlags: Int): Int
open fun checkUriPermission(uri: Uri?, readPermission: String?, writePermission: String?, pid: Int, uid: Int, modeFlags: Int): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun checkUriPermissions(uris: List<Uri?>, pid: Int, uid: Int, modeFlags: Int): IntArray
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun clearWallpaper()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun closeContextMenu()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun closeOptionsMenu()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun createAttributionContext(attributionTag: String?): Context
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun createConfigurationContext(overrideConfiguration: Configuration): Context?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun createContext(contextParams: ContextParams): Context
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun createContextForSplit(splitName: String?): Context?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun createDisplayContext(display: Display): Context?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun createPackageContext(packageName: String?, flags: Int): Context?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun createPendingResult(requestCode: Int, data: Intent, flags: Int): PendingIntent?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun createWindowContext(type: Int, options: Bundle?): Context
open fun createWindowContext(display: Display, type: Int, options: Bundle?): Context
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun databaseList(): Array<out String?>?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun deleteDatabase(name: String?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun deleteFile(name: String?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun dispatchKeyEvent(event: KeyEvent?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun dump(@NonNull prefix: String, @Nullable fd: FileDescriptor?, @NonNull writer: PrintWriter, @Nullable args: Array<out String?>??)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun enforceCallingOrSelfPermission(permission: String, message: String?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun enforceCallingOrSelfUriPermission(uri: Uri?, modeFlags: Int, message: String?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun enforceCallingPermission(permission: String, message: String?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun enforceCallingUriPermission(uri: Uri?, modeFlags: Int, message: String?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun enforcePermission(permission: String, pid: Int, uid: Int, message: String?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun enforceUriPermission(uri: Uri?, pid: Int, uid: Int, modeFlags: Int, message: String?)
open fun enforceUriPermission(uri: Uri?, readPermission: String?, writePermission: String?, pid: Int, uid: Int, modeFlags: Int, message: String?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun fileList(): Array<out String?>?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun <T : View?> findViewById(@IdRes id: Int): T?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun finish()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun finishActivity(requestCode: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun finishActivityFromChild(child: Activity, requestCode: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun finishAffinity()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun finishFromChild(child: Activity?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun getColor(id: Int): Int
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getDatabasePath(name: String?): File?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getDir(name: String?, mode: Int): File?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getExternalFilesDir(type: String?): File?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getExternalFilesDirs(type: String?): Array<out File?>?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun <T : ComponentActivity.ExtraData?> getExtraData(extraDataClass: Class<T?>?): T?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getFileStreamPath(name: String?): File?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun getString(resId: Int): String
fun getString(resId: Int, vararg formatArgs: Any?): String
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun <T : Any?> getSystemService(serviceClass: Class<T?>): T?
open fun getSystemService(name: String): Any?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun getSystemServiceName(serviceClass: Class<*>): String?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun getText(resId: Int): CharSequence
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun grantUriPermission(toPackage: String?, uri: Uri?, modeFlags: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun managedQuery(uri: Uri?, projection: Array<out String?>?, selection: String?, selectionArgs: Array<out String?>?, sortOrder: String?): Cursor?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun moveDatabaseFrom(sourceContext: Context?, name: String?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun moveSharedPreferencesFrom(sourceContext: Context?, name: String?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun moveTaskToBack(nonRoot: Boolean): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun navigateUpTo(upIntent: Intent?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun navigateUpToFromChild(child: Activity?, upIntent: Intent?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onActivityReenter(resultCode: Int, data: Intent?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onAttachFragment(fragment: Fragment?)
open fun onAttachFragment(@NonNull fragment: Fragment)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onContentChanged()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onContextMenuClosed(menu: Menu)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onCreateOptionsMenu(menu: Menu?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onCreatePanelMenu(featureId: Int, @NonNull menu: Menu): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onCreatePanelView(featureId: Int): View?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onCreateThumbnail(outBitmap: Bitmap?, canvas: Canvas?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onCreateView(@NonNull name: String, @NonNull context: Context, @NonNull attrs: AttributeSet): View?
open fun onCreateView(@Nullable parent: View?, @NonNull name: String, @NonNull context: Context, @NonNull attrs: AttributeSet): View?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onGetDirectActions(cancellationSignal: CancellationSignal, callback: Consumer<List<DirectAction?>?>)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onKeyLongPress(keyCode: Int, event: KeyEvent?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onKeyMultiple(keyCode: Int, repeatCount: Int, event: KeyEvent?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onKeyShortcut(keyCode: Int, event: KeyEvent?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onLowMemory()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun onMenuItemSelected(featureId: Int, @NonNull item: MenuItem): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onMenuOpened(featureId: Int, menu: Menu): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onMultiWindowModeChanged(isInMultiWindowMode: Boolean)
open fun onMultiWindowModeChanged(isInMultiWindowMode: Boolean, newConfig: Configuration?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onNavigateUp(): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onOptionsMenuClosed(menu: Menu?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onPanelClosed(featureId: Int, @NonNull menu: Menu)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onPerformDirectAction(actionId: String, arguments: Bundle, cancellationSignal: CancellationSignal, resultListener: Consumer<Bundle?>)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean)
open fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean, newConfig: Configuration?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onPointerCaptureChanged(hasCapture: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onPostCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onPreparePanel(featureId: Int, @Nullable view: View?, @NonNull menu: Menu): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onProvideAssistContent(outContent: AssistContent?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onProvideAssistData(data: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onProvideKeyboardShortcuts(data: List<KeyboardShortcutGroup?>?, menu: Menu?, deviceId: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onProvideReferrer(): Uri?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onRequestPermissionsResult(requestCode: Int, @NonNull permissions: Array<out String?>, @NonNull grantResults: IntArray)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onRestoreInstanceState(savedInstanceState: Bundle?, persistentState: PersistableBundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onSaveInstanceState(outState: Bundle, outPersistentState: PersistableBundle)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onSearchRequested(searchEvent: SearchEvent?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onStateNotSaved()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onTopResumedActivityChanged(isTopResumedActivity: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onTouchEvent(event: MotionEvent?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onTrimMemory(level: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun onWindowFocusChanged(hasFocus: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun openContextMenu(view: View?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun openFileOutput(name: String?, mode: Int): FileOutputStream?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun openOptionsMenu()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun overridePendingTransition(enterAnim: Int, exitAnim: Int)
open fun overridePendingTransition(enterAnim: Int, exitAnim: Int, backgroundColor: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun peekWallpaper(): Drawable?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun recreate()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun registerForContextMenu(view: View?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun registerReceiver(receiver: BroadcastReceiver?, filter: IntentFilter?): Intent?
open fun registerReceiver(receiver: BroadcastReceiver?, filter: IntentFilter?, flags: Int): Intent?
open fun registerReceiver(receiver: BroadcastReceiver?, filter: IntentFilter?, broadcastPermission: String?, scheduler: Handler?): Intent?
open fun registerReceiver(receiver: BroadcastReceiver?, filter: IntentFilter?, broadcastPermission: String?, scheduler: Handler?, flags: Int): Intent?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun removeDialog(id: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun removeStickyBroadcast(intent: Intent?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun removeStickyBroadcastAsUser(intent: Intent?, user: UserHandle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun reportFullyDrawn()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun requestPermissions(permissions: Array<out String?>, requestCode: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun <T : View?> requireViewById(id: Int): T & Any
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun revokeUriPermission(uri: Uri?, modeFlags: Int)
open fun revokeUriPermission(targetPackage: String?, uri: Uri?, modeFlags: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun runOnUiThread(action: Runnable?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun sendBroadcast(intent: Intent?)
open fun sendBroadcast(intent: Intent?, receiverPermission: String?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun sendBroadcastAsUser(intent: Intent?, user: UserHandle?)
open fun sendBroadcastAsUser(intent: Intent?, user: UserHandle?, receiverPermission: String?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun sendBroadcastWithMultiplePermissions(intent: Intent, receiverPermissions: Array<out String?>)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun sendOrderedBroadcast(intent: Intent?, receiverPermission: String?)
open fun sendOrderedBroadcast(intent: Intent, receiverPermission: String?, resultReceiver: BroadcastReceiver?, scheduler: Handler?, initialCode: Int, initialData: String?, initialExtras: Bundle?)
open fun sendOrderedBroadcast(intent: Intent, receiverPermission: String?, receiverAppOp: String?, resultReceiver: BroadcastReceiver?, scheduler: Handler?, initialCode: Int, initialData: String?, initialExtras: Bundle?)
open fun sendOrderedBroadcast(intent: Intent, initialCode: Int, receiverPermission: String?, receiverAppOp: String?, resultReceiver: BroadcastReceiver?, scheduler: Handler?, initialData: String?, initialExtras: Bundle?, options: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun sendOrderedBroadcastAsUser(intent: Intent?, user: UserHandle?, receiverPermission: String?, resultReceiver: BroadcastReceiver?, scheduler: Handler?, initialCode: Int, initialData: String?, initialExtras: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun sendStickyBroadcast(intent: Intent?)
open fun sendStickyBroadcast(intent: Intent, options: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun sendStickyBroadcastAsUser(intent: Intent?, user: UserHandle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun sendStickyOrderedBroadcast(intent: Intent?, resultReceiver: BroadcastReceiver?, scheduler: Handler?, initialCode: Int, initialData: String?, initialExtras: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun sendStickyOrderedBroadcastAsUser(intent: Intent?, user: UserHandle?, resultReceiver: BroadcastReceiver?, scheduler: Handler?, initialCode: Int, initialData: String?, initialExtras: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setActionBar(toolbar: Toolbar?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setContentView(view: View?)
open fun setContentView(@LayoutRes layoutResID: Int)
open fun setContentView(view: View?, params: ViewGroup.LayoutParams?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setFeatureDrawable(featureId: Int, drawable: Drawable?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setFeatureDrawableAlpha(featureId: Int, alpha: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setFeatureDrawableResource(featureId: Int, resId: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setFeatureDrawableUri(featureId: Int, uri: Uri?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setInheritShowWhenLocked(inheritShowWhenLocked: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setLocusContext(locusId: LocusId?, bundle: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setProgress(progress: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setResult(resultCode: Int)
fun setResult(resultCode: Int, data: Intent?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun setSecondaryProgress(secondaryProgress: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setShouldDockBigOverlays(shouldDockBigOverlays: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setShowWhenLocked(showWhenLocked: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setSupportActionBar(@Nullable toolbar: Toolbar?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setSupportProgress(progress: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setTheme(@StyleRes resId: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setTranslucent(translucent: Boolean): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setTurnScreenOn(turnScreenOn: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setVisible(visible: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setVrModeEnabled(enabled: Boolean, requestedComponent: ComponentName)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun setWallpaper(bitmap: Bitmap?)
open fun setWallpaper(data: InputStream?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun shouldUpRecreateTask(targetIntent: Intent?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun showAssist(args: Bundle?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun showDialog(id: Int)
fun showDialog(id: Int, args: Bundle?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startActivities(intents: Array<out Intent?>?)
open fun startActivities(intents: Array<out Intent?>?, options: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startActivity(intent: Intent?)
open fun startActivity(intent: Intent?, options: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startActivityForResult(intent: Intent?, requestCode: Int)
open fun startActivityForResult(intent: Intent?, requestCode: Int, @Nullable options: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startActivityFromChild(child: Activity, intent: Intent?, requestCode: Int)
open fun startActivityFromChild(child: Activity, intent: Intent?, requestCode: Int, options: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startActivityFromFragment(fragment: Fragment, intent: Intent?, requestCode: Int)
open fun startActivityFromFragment(fragment: Fragment, intent: Intent?, requestCode: Int, options: Bundle?)
open fun startActivityFromFragment(@NonNull fragment: Fragment, intent: Intent?, requestCode: Int)
open fun startActivityFromFragment(@NonNull fragment: Fragment, intent: Intent?, requestCode: Int, @Nullable options: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startActivityIfNeeded(intent: Intent, requestCode: Int): Boolean
open fun startActivityIfNeeded(intent: Intent, requestCode: Int, options: Bundle?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startInstrumentation(className: ComponentName, profileFile: String?, arguments: Bundle?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startIntentSender(intent: IntentSender?, fillInIntent: Intent?, flagsMask: Int, flagsValues: Int, extraFlags: Int)
open fun startIntentSender(intent: IntentSender?, fillInIntent: Intent?, flagsMask: Int, flagsValues: Int, extraFlags: Int, options: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startIntentSenderForResult(intent: IntentSender?, requestCode: Int, @Nullable fillInIntent: Intent?, flagsMask: Int, flagsValues: Int, extraFlags: Int)
open fun startIntentSenderForResult(intent: IntentSender?, requestCode: Int, @Nullable fillInIntent: Intent?, flagsMask: Int, flagsValues: Int, extraFlags: Int, @Nullable options: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startIntentSenderFromChild(child: Activity?, intent: IntentSender?, requestCode: Int, fillInIntent: Intent?, flagsMask: Int, flagsValues: Int, extraFlags: Int)
open fun startIntentSenderFromChild(child: Activity?, intent: IntentSender?, requestCode: Int, fillInIntent: Intent?, flagsMask: Int, flagsValues: Int, extraFlags: Int, options: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startIntentSenderFromFragment(@NonNull fragment: Fragment, intent: IntentSender?, requestCode: Int, @Nullable fillInIntent: Intent?, flagsMask: Int, flagsValues: Int, extraFlags: Int, @Nullable options: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startLocalVoiceInteraction(privateOptions: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startLockTask()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startSearch(initialQuery: String?, selectInitialQuery: Boolean, appSearchData: Bundle?, globalSearch: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun startService(service: Intent?): ComponentName?
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun stopLockTask()
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun stopService(name: Intent?): Boolean
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun supportNavigateUpTo(@NonNull upIntent: Intent)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun takeKeyEvents(get: Boolean)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun triggerSearch(query: String?, appSearchData: Bundle?)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+ +
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open fun updateServiceGroup(conn: ServiceConnection, group: Int, importance: Int)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/index.html b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/index.html new file mode 100644 index 0000000000..ec05300302 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/it.android/index.html @@ -0,0 +1,170 @@ + + + + + it.android + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

This class is specific to android and uses android classes like: Context, SparseIntArray or View

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Some Activity implementing AppCompatActivity from android x

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/package-list b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/package-list new file mode 100644 index 0000000000..6a094beecc --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/it-android/package-list @@ -0,0 +1,10 @@ +$dokka.format:html-v1 +$dokka.linkExtension:html +$dokka.location:it.android////PointingToDeclaration/it-android/it.android/index.html +$dokka.location:it.android/AndroidSpecificClass///PointingToDeclaration/it-android/it.android/-android-specific-class/index.html +$dokka.location:it.android/AndroidSpecificClass/AndroidSpecificClass/#/PointingToDeclaration/it-android/it.android/-android-specific-class/-android-specific-class.html +$dokka.location:it.android/AndroidSpecificClass/createView/#android.content.Context/PointingToDeclaration/it-android/it.android/-android-specific-class/create-view.html +$dokka.location:it.android/AndroidSpecificClass/sparseIntArray/#/PointingToDeclaration/it-android/it.android/-android-specific-class/sparse-int-array.html +$dokka.location:it.android/IntegrationTestActivity///PointingToDeclaration/it-android/it.android/-integration-test-activity/index.html +$dokka.location:it.android/IntegrationTestActivity/IntegrationTestActivity/#/PointingToDeclaration/it-android/it.android/-integration-test-activity/-integration-test-activity.html +it.android diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/navigation.html b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/navigation.html new file mode 100644 index 0000000000..e84f569999 --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/navigation.html @@ -0,0 +1,12 @@ + diff --git a/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/scripts/main.js b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/scripts/main.js new file mode 100644 index 0000000000..2084c6372a --- /dev/null +++ b/dokka-integration-tests/gradle/projects/it-android-kotlin-jvm-builtin/expectedData/html/scripts/main.js @@ -0,0 +1,45 @@ +(()=>{var e={1817:e=>{e.exports=''},4811:e=>{e.exports=''},5742:e=>{e.exports=''},7112:e=>{e.exports=''},8420:e=>{e.exports=''},7004:e=>{e.exports=''},7222:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>s});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(5280),c=a()(o());c.i(l.A),c.push([e.id,'.avatar_d716 {\n display: inline-block;\n -o-object-fit: cover;\n object-fit: cover;\n -o-object-position: center;\n object-position: center;\n\n /* This is a "graceful degradation" fallback, while the real value is controlled by JS */\n\n border-radius: var(--ring-border-radius);\n}\n\n.subavatar_b10d {\n position: absolute;\n top: 15px;\n left: 27px;\n\n border: 1px var(--ring-content-background-color) solid;\n}\n\n.empty_a151 {\n display: inline-block;\n\n box-sizing: border-box;\n\n border: 1px solid var(--ring-borders-color);\n}\n',"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/avatar/avatar.css"],names:[],mappings:"AAEA;EACE,qBAAqB;EACrB,oBAAiB;KAAjB,iBAAiB;EACjB,0BAAuB;KAAvB,uBAAuB;;EAEvB,wFAAwF;;EAExF,wCAAwC;AAC1C;;AAEA;EACE,kBAAkB;EAClB,SAAS;EACT,UAAU;;EAEV,sDAAsD;AACxD;;AAEA;EACE,qBAAqB;;EAErB,sBAAsB;;EAEtB,2CAA2C;AAC7C",sourcesContent:['@import "../global/variables.css";\n\n.avatar {\n display: inline-block;\n object-fit: cover;\n object-position: center;\n\n /* This is a "graceful degradation" fallback, while the real value is controlled by JS */\n\n border-radius: var(--ring-border-radius);\n}\n\n.subavatar {\n position: absolute;\n top: 15px;\n left: 27px;\n\n border: 1px var(--ring-content-background-color) solid;\n}\n\n.empty {\n display: inline-block;\n\n box-sizing: border-box;\n\n border: 1px solid var(--ring-borders-color);\n}\n'],sourceRoot:""}]),c.locals={avatar:"avatar_d716",subavatar:"subavatar_b10d",empty:"empty_a151"};const s=c},9892:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,'.heightS_b28d {\n --ring-button-height: 24px;\n --ring-button-font-size: var(--ring-font-size-smaller);\n}\n\n.heightM_dfd3 {\n --ring-button-height: 28px;\n --ring-button-font-size: var(--ring-font-size);\n}\n\n.heightL_a4d3 {\n --ring-button-height: 32px;\n --ring-button-font-size: var(--ring-font-size);\n}\n\n.button_aba4 {\n position: relative;\n\n display: inline-block;\n\n box-sizing: border-box;\n height: var(--ring-button-height);\n margin: 0;\n padding: 0 16px;\n\n cursor: pointer;\n transition: color var(--ring-ease), background-color var(--ring-ease), box-shadow var(--ring-ease);\n text-decoration: none;\n\n color: var(--ring-text-color);\n\n border: 0;\n border-radius: var(--ring-border-radius);\n outline: 0;\n background-color: var(--ring-content-background-color);\n box-shadow: inset 0 0 0 1px var(--ring-borders-color);\n\n font-family: var(--ring-font-family);\n font-size: var(--ring-button-font-size);\n\n line-height: var(--ring-button-height);\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.button_aba4:hover {\n transition: none;\n\n box-shadow: inset 0 0 0 1px var(--ring-border-hover-color);\n }}\n\n.button_aba4:active {\n transition: none;\n\n background-color: var(--ring-selected-background-color);\n box-shadow: inset 0 0 0 1px var(--ring-border-hover-color);\n }\n\n.button_aba4:focus-visible {\n transition: none;\n\n box-shadow: inset 0 0 0 1px var(--ring-border-hover-color), 0 0 0 1px var(--ring-border-hover-color);\n }\n\n.button_aba4.active_bbe6 {\n transition: none;\n\n background-color: var(--ring-hover-background-color);\n box-shadow: inset 0 0 0 1px var(--ring-main-color);\n }\n\n.button_aba4.active_bbe6:focus-visible {\n box-shadow: inset 0 0 0 2px var(--ring-main-color), 0 0 0 1px var(--ring-border-hover-color);\n }\n\n.button_aba4[disabled] {\n pointer-events: none;\n\n background-color: var(--ring-disabled-background-color);\n box-shadow: inset 0 0 0 1px var(--ring-border-disabled-color);\n }\n\n.button_aba4.active_bbe6[disabled] {\n background-color: var(--ring-disabled-selected-background-color);\n box-shadow: inset 0 0 0 1px var(--ring-border-selected-disabled-color);\n }\n\n.button_aba4[disabled],\n .button_aba4.withIcon_ef77[disabled] {\n color: var(--ring-disabled-color);\n }\n\n.button_aba4[disabled] .icon_e878 {\n color: var(--ring-icon-disabled-color);\n }\n\n.button_aba4::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n outline: 0;\n }\n\n.withIcon_ef77 {\n color: var(--ring-secondary-color);\n}\n\n.primary_ddae {\n color: var(--ring-white-text-color);\n background-color: var(--ring-main-color);\n box-shadow: none;\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.primary_ddae:hover {\n transition: none;\n\n background-color: var(--ring-main-hover-color);\n box-shadow: none;\n }}\n\n.primary_ddae.withIcon_ef77,\n .primary_ddae.withIcon_ef77:active,\n .primary_ddae.withIcon_ef77.active_bbe6 {\n color: var(--ring-action-link-color);\n }\n\n.primary_ddae:focus-visible,\n .primary_ddae:active,\n .primary_ddae.active_bbe6 {\n background-color: var(--ring-button-primary-background-color);\n }\n\n.primary_ddae:active,\n .primary_ddae.active_bbe6 {\n box-shadow: inset 0 0 0 1px var(--ring-button-primary-border-color);\n }\n\n.primary_ddae[disabled] {\n background-color: var(--ring-disabled-background-color);\n box-shadow: inset 0 0 0 1px var(--ring-border-disabled-color);\n }\n\n.primary_ddae.loader_cbfc[disabled] {\n color: var(--ring-white-text-color);\n }\n\n.primary_ddae .loaderBackground_d9f5 {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n border-radius: var(--ring-border-radius);\n }\n\n.primary_ddae .loaderBackground_d9f5::before {\n background-image:\n linear-gradient(\n to right,\n var(--ring-main-color),\n var(--ring-button-loader-background) 40%,\n var(--ring-main-color) 80%\n );\n }\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.danger_bcea:hover {\n transition: none;\n }}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.danger_bcea:hover {\n box-shadow: inset 0 0 0 1px var(--ring-button-danger-hover-color);\n }}\n\n.danger_bcea,\n .danger_bcea.withIcon_ef77,\n .danger_bcea.withIcon_ef77:active,\n .danger_bcea.withIcon_ef77.active_bbe6,\n .danger_bcea.text_fc2a,\n .danger_bcea.text_fc2a:active,\n .danger_bcea.text_fc2a.active_bbe6 {\n color: var(--ring-error-color);\n }\n\n.danger_bcea:active,\n .danger_bcea.active_bbe6 {\n background-color: var(--ring-button-danger-active-color);\n }\n\n.danger_bcea:active,\n .danger_bcea.active_bbe6,\n .danger_bcea:focus-visible {\n box-shadow: inset 0 0 0 1px var(--ring-button-danger-hover-color);\n }\n\n.danger_bcea:focus-visible {\n transition: none;\n }\n\n.text_fc2a.text_fc2a,\n.withIcon_ef77.withIcon_ef77 {\n background-color: transparent;\n box-shadow: none;\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.text_fc2a.text_fc2a:hover, .withIcon_ef77.withIcon_ef77:hover {\n transition: none;\n }}\n\n.text_fc2a.text_fc2a:active,\n .withIcon_ef77.withIcon_ef77:active,\n .text_fc2a.text_fc2a.active_bbe6,\n .withIcon_ef77.withIcon_ef77.active_bbe6 {\n background-color: transparent;\n box-shadow: none;\n }\n\n.text_fc2a.text_fc2a:focus-visible, .withIcon_ef77.withIcon_ef77:focus-visible {\n box-shadow: inset 0 0 0 2px var(--ring-border-hover-color);\n }\n\n.loader_cbfc.text_fc2a > .content_b2b8 {\n animation-name: text-loading_d1b4;\n animation-duration: 1200ms;\n animation-iteration-count: infinite;\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.text_fc2a.text_fc2a:hover {\n background-color: transparent;\n box-shadow: none;\n}}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.withIcon_ef77:hover:not(:focus-visible) {\n background-color: transparent;\n box-shadow: none;\n}}\n\n.text_fc2a {\n color: var(--ring-action-link-color);\n}\n\n.inline_b4a2 {\n display: inline-block;\n\n margin: 0;\n padding: 0;\n\n font-size: var(--ring-font-size);\n}\n\n.withIcon_ef77 {\n padding: 0 8px;\n}\n\n.text_fc2a:active,\n .text_fc2a.active_bbe6 {\n color: var(--ring-link-hover-color);\n }\n\n.withIcon_ef77:active,\n .withIcon_ef77.active_bbe6 {\n color: var(--ring-action-link-color);\n }\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.withIcon_ef77:hover {\n color: var(--ring-link-hover-color);\n}}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.text_fc2a:hover {\n color: var(--ring-link-hover-color);\n}}\n\n.icon_e878 {\n color: inherit;\n\n line-height: normal;\n}\n\n.icon_e878:not(:last-child) {\n margin-right: 4px;\n }\n\n.withNormalIcon_aaca .icon_e878 {\n transition: color var(--ring-ease);\n\n color: var(--ring-icon-color);\n}\n\n.withNormalIcon_aaca:active,\n.withNormalIcon_aaca.active_bbe6 {\n color: var(--ring-main-color);\n}\n\n.withNormalIcon_aaca:active .icon_e878, .withNormalIcon_aaca.active_bbe6 .icon_e878 {\n transition: none;\n\n color: inherit;\n }\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.withNormalIcon_aaca:hover .icon_e878,\n.withDangerIcon_e3ca:hover .icon_e878 {\n transition: none;\n\n color: inherit;\n}}\n\n.withDangerIcon_e3ca .icon_e878,\n.withDangerIcon_e3ca:active .icon_e878 {\n color: var(--ring-icon-error-color);\n}\n\n.loader_cbfc {\n position: relative;\n z-index: 0;\n\n pointer-events: none;\n\n background-color: transparent;\n}\n\n.loaderBackground_d9f5 {\n position: absolute;\n z-index: -1;\n top: 1px;\n right: 1px;\n bottom: 1px;\n left: 1px;\n\n overflow: hidden;\n\n border-radius: var(--ring-border-radius-small);\n}\n\n.loaderBackground_d9f5::before {\n display: block;\n\n width: calc(100% + 64px);\n height: 100%;\n\n content: "";\n animation: progress_ed8f 1s linear infinite;\n\n background-image:\n linear-gradient(\n to right,\n var(--ring-content-background-color),\n var(--ring-selected-background-color) 40%,\n var(--ring-content-background-color) 80%\n );\n\n background-repeat: repeat;\n background-size: 64px;\n }\n\n.delayed_d562 .content_b2b8::after {\n content: "…";\n}\n\n.short_a07a {\n width: 32px;\n padding: 0;\n}\n\n.dropdownIcon_e982 {\n margin-right: -2px;\n\n margin-left: 2px;\n\n transition: color var(--ring-ease);\n\n color: var(--ring-icon-secondary-color);\n\n line-height: normal;\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.button_aba4:hover .dropdownIcon_e982 {\n transition: none;\n\n color: var(--ring-main-color);\n}}\n\n@keyframes progress_ed8f {\n from {\n transform: translateX(-64px);\n }\n\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes text-loading_d1b4 {\n 50% {\n opacity: 0.5;\n }\n}\n',"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/button/button.css",""],names:[],mappings:"AAOA;EACE,0BAAoC;EACpC,sDAAsD;AACxD;;AAEA;EACE,0BAAsC;EACtC,8CAA8C;AAChD;;AAEA;EACE,0BAAoC;EACpC,8CAA8C;AAChD;;AAEA;EACE,kBAAkB;;EAElB,qBAAqB;;EAErB,sBAAsB;EACtB,iCAAc;EACd,SAAS;EACT,eAAyB;;EAEzB,eAAe;EACf,kGAAkG;EAClG,qBAAqB;;EAErB,6BAA6B;;EAE7B,SAAS;EACT,wCAAwC;EACxC,UAAU;EACV,sDAAsD;EACtD,qDAAmD;;EAEnD,oCAAoC;EACpC,uCAAuC;;EAEvC,sCAAmB;AA2DrB;;AC1GA,wGAAA;IAAA,iBAAA;;IAAA,2DAAA;GAAA,CAAA;;ADuDE;IACE,gBAAgB;;IAEhB,uDAAuD;IACvD,0DAAwD;EAC1D;;AAEA;IACE,gBAAgB;;IAEhB,oGAAkG;EACpG;;AAEA;IACE,gBAAgB;;IAEhB,oDAAoD;IACpD,kDAAgD;EAClD;;AAEA;IACE,4FAA4F;EAC9F;;AAEA;IACE,oBAAoB;;IAEpB,uDAAuD;IACvD,6DAA2D;EAC7D;;AAEA;IACE,gEAAgE;IAChE,sEAAoE;EACtE;;AAEA;;IAEE,iCAAiC;EACnC;;AAEA;IACE,sCAAsC;EACxC;;AAEA;IACE,UAAU;;IAEV,SAAS;IACT,UAAU;EACZ;;AAGF;EACE,kCAAkC;AACpC;;AAEA;EACE,mCAAmC;EACnC,wCAAwC;EACxC,gBAAgB;AAqDlB;;ACxKA,wGAAA;IAAA,iBAAA;;IAAA,+CAAA;IAAA,iBAAA;GAAA,CAAA;;AD4HE;;;IAGE,oCAAoC;EACtC;;AAEA;;;IAGE,6DAA6D;EAC/D;;AAEA;;IAEE,mEAAiE;EACnE;;AAEA;IACE,uDAAuD;IACvD,6DAA2D;EAC7D;;AAEA;IACE,mCAAmC;EACrC;;AAEA;IACE,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;;IAEP,wCAAwC;EAW1C;;AATE;MACE;;;;;;SAMG;IACL;;ACtKJ,wGAAA;IAAA,iBAAA;GAAA,CAAA;;AAAA,wGAAA;IAAA,kEAAA;GAAA,CAAA;;AD2KE;;;;;;;IAOE,8BAA8B;EAChC;;AAEA;;IAEE,wDAAwD;EAC1D;;AAEA;;;IAIE,iEAA+D;EACjE;;AAEA;IAEE,gBAAgB;EAClB;;AAGF;;EAEE,6BAA6B;EAC7B,gBAAgB;AAelB;;ACzNA,wGAAA;IAAA,iBAAA;GAAA,CAAA;;ADgNE;;;;IAEE,6BAA6B;IAC7B,gBAAgB;EAClB;;AAEA;IACE,0DAA0D;EAC5D;;AAGF;EACE,iCAA4B;EAC5B,0BAA0B;EAC1B,mCAAmC;AACrC;;AC/NA,wGAAA;EAAA,8BAAA;EAAA,iBAAA;CAAA,CAAA;;AAAA,wGAAA;EAAA,8BAAA;EAAA,iBAAA;CAAA,CAAA;;AD2OA;EACE,oCAAoC;AACtC;;AAEA;EACE,qBAAqB;;EAErB,SAAS;EACT,UAAU;;EAEV,gCAAgC;AAClC;;AAEA;EACE,cAAe;AACjB;;AAGE;;IAEE,mCAAmC;EACrC;;AAIA;;IAEE,oCAAoC;EACtC;;ACvQF,wGAAA;EAAA,oCAAA;CAAA,CAAA;;AAAA,wGAAA;EAAA,oCAAA;CAAA,CAAA;;ADkRA;EACE,cAAc;;EAEd,mBAAmB;AAKrB;;AAHE;IACE,iBAA8B;EAChC;;AAGF;EACE,kCAAkC;;EAElC,6BAA6B;AAC/B;;AAEA;;EAEE,6BAA6B;AAO/B;;AALE;IACE,gBAAgB;;IAEhB,cAAc;EAChB;;AC1SF,wGAAA;;EAAA,iBAAA;;EAAA,eAAA;CAAA,CAAA;;ADoTA;;EAEE,mCAAmC;AACrC;;AAEA;EACE,kBAAkB;EAClB,UAAU;;EAEV,oBAAoB;;EAEpB,6BAA6B;AAC/B;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,QAAQ;EACR,UAAU;EACV,WAAW;EACX,SAAS;;EAET,gBAAgB;;EAEhB,8CAA8C;AAsBhD;;AApBE;IACE,cAAc;;IAEd,wBAA+B;IAC/B,YAAY;;IAEZ,WAAW;IACX,2CAAsC;;IAEtC;;;;;;OAMG;;IAEH,yBAAyB;IACzB,qBAA4B;EAC9B;;AAGF;EACE,YAAY;AACd;;AAEA;EACE,WAAqB;EACrB,UAAU;AACZ;;AAEA;EACE,kBAAkB;;EAElB,gBAAgB;;EAEhB,kCAAkC;;EAElC,uCAAuC;;EAEvC,mBAAmB;AACrB;;ACvXA,wGAAA;EAAA,iBAAA;;EAAA,8BAAA;CAAA,CAAA;;AD+XA;EACE;IACE,4BAA4C;EAC9C;;EAEA;IACE,wBAAwB;EAC1B;AACF;;AAEA;EACE;IACE,YAAY;EACd;AACF",sourcesContent:['@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n@value button-shadow: inset 0 0 0 1px;\n@value height: var(--ring-button-height);\n@value loaderWidth: calc(unit * 8);\n\n.heightS {\n --ring-button-height: calc(unit * 3);\n --ring-button-font-size: var(--ring-font-size-smaller);\n}\n\n.heightM {\n --ring-button-height: calc(unit * 3.5);\n --ring-button-font-size: var(--ring-font-size);\n}\n\n.heightL {\n --ring-button-height: calc(unit * 4);\n --ring-button-font-size: var(--ring-font-size);\n}\n\n.button {\n position: relative;\n\n display: inline-block;\n\n box-sizing: border-box;\n height: height;\n margin: 0;\n padding: 0 calc(unit * 2);\n\n cursor: pointer;\n transition: color var(--ring-ease), background-color var(--ring-ease), box-shadow var(--ring-ease);\n text-decoration: none;\n\n color: var(--ring-text-color);\n\n border: 0;\n border-radius: var(--ring-border-radius);\n outline: 0;\n background-color: var(--ring-content-background-color);\n box-shadow: button-shadow var(--ring-borders-color);\n\n font-family: var(--ring-font-family);\n font-size: var(--ring-button-font-size);\n\n line-height: height;\n\n &:hover {\n transition: none;\n\n box-shadow: button-shadow var(--ring-border-hover-color);\n }\n\n &:active {\n transition: none;\n\n background-color: var(--ring-selected-background-color);\n box-shadow: button-shadow var(--ring-border-hover-color);\n }\n\n &:focus-visible {\n transition: none;\n\n box-shadow: button-shadow var(--ring-border-hover-color), 0 0 0 1px var(--ring-border-hover-color);\n }\n\n &.active {\n transition: none;\n\n background-color: var(--ring-hover-background-color);\n box-shadow: button-shadow var(--ring-main-color);\n }\n\n &:focus-visible.active {\n box-shadow: inset 0 0 0 2px var(--ring-main-color), 0 0 0 1px var(--ring-border-hover-color);\n }\n\n &[disabled] {\n pointer-events: none;\n\n background-color: var(--ring-disabled-background-color);\n box-shadow: button-shadow var(--ring-border-disabled-color);\n }\n\n &[disabled].active {\n background-color: var(--ring-disabled-selected-background-color);\n box-shadow: button-shadow var(--ring-border-selected-disabled-color);\n }\n\n &[disabled],\n &[disabled].withIcon {\n color: var(--ring-disabled-color);\n }\n\n &[disabled] .icon {\n color: var(--ring-icon-disabled-color);\n }\n\n &::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n outline: 0;\n }\n}\n\n.withIcon {\n color: var(--ring-secondary-color);\n}\n\n.primary {\n color: var(--ring-white-text-color);\n background-color: var(--ring-main-color);\n box-shadow: none;\n\n &:hover {\n transition: none;\n\n background-color: var(--ring-main-hover-color);\n box-shadow: none;\n }\n\n &.withIcon,\n &.withIcon:active,\n &.withIcon.active {\n color: var(--ring-action-link-color);\n }\n\n &:focus-visible,\n &:active,\n &.active {\n background-color: var(--ring-button-primary-background-color);\n }\n\n &:active,\n &.active {\n box-shadow: button-shadow var(--ring-button-primary-border-color);\n }\n\n &[disabled] {\n background-color: var(--ring-disabled-background-color);\n box-shadow: button-shadow var(--ring-border-disabled-color);\n }\n\n &[disabled].loader {\n color: var(--ring-white-text-color);\n }\n\n & .loaderBackground {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n border-radius: var(--ring-border-radius);\n\n &::before {\n background-image:\n linear-gradient(\n to right,\n var(--ring-main-color),\n var(--ring-button-loader-background) 40%,\n var(--ring-main-color) 80%\n );\n }\n }\n}\n\n.danger {\n &,\n &.withIcon,\n &.withIcon:active,\n &.withIcon.active,\n &.text,\n &.text:active,\n &.text.active {\n color: var(--ring-error-color);\n }\n\n &:active,\n &.active {\n background-color: var(--ring-button-danger-active-color);\n }\n\n &:active,\n &.active,\n &:focus-visible,\n &:hover {\n box-shadow: button-shadow var(--ring-button-danger-hover-color);\n }\n\n &:focus-visible,\n &:hover {\n transition: none;\n }\n}\n\n.text.text,\n.withIcon.withIcon {\n background-color: transparent;\n box-shadow: none;\n\n &:hover {\n transition: none;\n }\n\n &:active,\n &.active {\n background-color: transparent;\n box-shadow: none;\n }\n\n &:focus-visible {\n box-shadow: inset 0 0 0 2px var(--ring-border-hover-color);\n }\n}\n\n.loader.text > .content {\n animation-name: text-loading;\n animation-duration: 1200ms;\n animation-iteration-count: infinite;\n}\n\n.text.text:hover {\n background-color: transparent;\n box-shadow: none;\n}\n\n.withIcon:hover:not(:focus-visible) {\n background-color: transparent;\n box-shadow: none;\n}\n\n.text {\n color: var(--ring-action-link-color);\n}\n\n.inline {\n display: inline-block;\n\n margin: 0;\n padding: 0;\n\n font-size: var(--ring-font-size);\n}\n\n.withIcon {\n padding: 0 unit;\n}\n\n.text {\n &:active,\n &.active {\n color: var(--ring-link-hover-color);\n }\n}\n\n.withIcon {\n &:active,\n &.active {\n color: var(--ring-action-link-color);\n }\n}\n\n.withIcon:hover {\n color: var(--ring-link-hover-color);\n}\n\n.text:hover {\n color: var(--ring-link-hover-color);\n}\n\n.icon {\n color: inherit;\n\n line-height: normal;\n\n &:not(:last-child) {\n margin-right: calc(unit * 0.5);\n }\n}\n\n.withNormalIcon .icon {\n transition: color var(--ring-ease);\n\n color: var(--ring-icon-color);\n}\n\n.withNormalIcon:active,\n.withNormalIcon.active {\n color: var(--ring-main-color);\n\n & .icon {\n transition: none;\n\n color: inherit;\n }\n}\n\n.withNormalIcon:hover .icon,\n.withDangerIcon:hover .icon {\n transition: none;\n\n color: inherit;\n}\n\n.withDangerIcon .icon,\n.withDangerIcon:active .icon {\n color: var(--ring-icon-error-color);\n}\n\n.loader {\n position: relative;\n z-index: 0;\n\n pointer-events: none;\n\n background-color: transparent;\n}\n\n.loaderBackground {\n position: absolute;\n z-index: -1;\n top: 1px;\n right: 1px;\n bottom: 1px;\n left: 1px;\n\n overflow: hidden;\n\n border-radius: var(--ring-border-radius-small);\n\n &::before {\n display: block;\n\n width: calc(100% + loaderWidth);\n height: 100%;\n\n content: "";\n animation: progress 1s linear infinite;\n\n background-image:\n linear-gradient(\n to right,\n var(--ring-content-background-color),\n var(--ring-selected-background-color) 40%,\n var(--ring-content-background-color) 80%\n );\n\n background-repeat: repeat;\n background-size: loaderWidth;\n }\n}\n\n.delayed .content::after {\n content: "…";\n}\n\n.short {\n width: calc(unit * 4);\n padding: 0;\n}\n\n.dropdownIcon {\n margin-right: -2px;\n\n margin-left: 2px;\n\n transition: color var(--ring-ease);\n\n color: var(--ring-icon-secondary-color);\n\n line-height: normal;\n}\n\n.button:hover .dropdownIcon {\n transition: none;\n\n color: var(--ring-main-color);\n}\n\n@keyframes progress {\n from {\n transform: translateX(calc(0 - loaderWidth));\n }\n\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes text-loading {\n 50% {\n opacity: 0.5;\n }\n}\n',null],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`,"button-shadow":"inset 0 0 0 1px",height:"var(--ring-button-height)",loaderWidth:"64px",heightS:"heightS_b28d",heightM:"heightM_dfd3",heightL:"heightL_a4d3",button:"button_aba4",active:"active_bbe6",withIcon:"withIcon_ef77",icon:"icon_e878",primary:"primary_ddae",loader:"loader_cbfc",loaderBackground:"loaderBackground_d9f5",danger:"danger_bcea",text:"text_fc2a",content:"content_b2b8","text-loading":"text-loading_d1b4",inline:"inline_b4a2",withNormalIcon:"withNormalIcon_aaca",withDangerIcon:"withDangerIcon_e3ca",progress:"progress_ed8f",delayed:"delayed_d562",short:"short_a07a",dropdownIcon:"dropdownIcon_e982"};const u=s},1866:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,".checkbox_dccf {\n position: relative;\n\n display: inline-block;\n\n text-align: left;\n\n color: var(--ring-text-color);\n outline: none;\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.checkbox_dccf:hover .cell_edda {\n transition: background-color var(--ring-ease);\n\n border-color: var(--ring-border-hover-color);\n }}\n\n.cell_edda {\n position: relative;\n top: -2px;\n\n display: inline-block;\n\n box-sizing: border-box;\n width: 14px;\n height: 14px;\n\n -webkit-user-select: none;\n\n -moz-user-select: none;\n\n user-select: none;\n transition: border-color var(--ring-ease), background-color var(--ring-ease), box-shadow var(--ring-ease);\n vertical-align: middle;\n pointer-events: none;\n\n border: 1px solid var(--ring-borders-color);\n border-radius: var(--ring-border-radius-small);\n background-color: var(--ring-content-background-color);\n}\n\n.icon_b476.icon_b476 {\n position: absolute;\n\n top: -1px;\n left: -1px;\n\n width: 16px;\n height: 16px;\n\n opacity: 0;\n color: var(--ring-white-text-color);\n}\n\n.icon_b476.icon_b476 svg {\n position: absolute;\n top: 0;\n left: 0;\n }\n\n.check_a219 {\n}\n\n.minus_de65 {\n}\n\n.input_a330 {\n position: absolute;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n margin: 0;\n\n cursor: pointer;\n\n opacity: 0;\n\n /* stylelint-disable-next-line selector-max-specificity */\n}\n\n.input_a330:checked + .cell_edda,\n .input_a330:indeterminate + .cell_edda {\n border-color: transparent;\n background-color: var(--ring-main-color);\n }\n\n/* stylelint-disable-next-line selector-max-specificity */\n\n.input_a330:checked + .cell_edda .check_a219 {\n opacity: 1;\n }\n\n.input_a330:focus-visible + .cell_edda,\n .input_a330.focus_eaa3 + .cell_edda {\n transition: background-color var(--ring-ease);\n\n border-color: var(--ring-border-hover-color);\n box-shadow: 0 0 0 1px var(--ring-border-hover-color);\n }\n\n/* stylelint-disable-next-line selector-max-specificity */\n\n.input_a330:indeterminate + .cell_edda .minus_de65 {\n opacity: 1;\n }\n\n.input_a330[disabled] {\n pointer-events: none;\n }\n\n/* stylelint-disable-next-line selector-max-specificity */\n\n.input_a330[disabled][disabled] + .cell_edda {\n border-color: var(--ring-border-disabled-color);\n background-color: var(--ring-disabled-background-color);\n }\n\n/* stylelint-disable-next-line selector-max-specificity */\n\n.input_a330[disabled]:checked + .cell_edda,\n .input_a330[disabled]:indeterminate + .cell_edda {\n border-color: var(--ring-border-selected-disabled-color);\n }\n\n/* stylelint-disable-next-line selector-max-specificity */\n\n.input_a330[disabled]:checked + .cell_edda .check_a219,\n .input_a330[disabled]:indeterminate + .cell_edda .minus_de65 {\n color: var(--ring-icon-disabled-color);\n }\n\n/* stylelint-disable-next-line selector-max-specificity */\n\n.input_a330:indeterminate:indeterminate + .cell_edda .check_a219 {\n transition: none;\n\n opacity: 0;\n }\n\n.input_a330[disabled] ~ .label_dcc7 {\n color: var(--ring-disabled-color);\n }\n\n.label_dcc7 {\n margin-left: 8px;\n\n line-height: normal;\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/checkbox/checkbox.css",""],names:[],mappings:"AAKA;EACE,kBAAkB;;EAElB,qBAAqB;;EAErB,gBAAgB;;EAEhB,6BAA6B;EAC7B,aAAa;AAOf;;ACpBA,wGAAA;IAAA,8CAAA;;IAAA,6CAAA;GAAA,CAAA;;ADsBA;EACE,kBAAkB;EAClB,SAAS;;EAET,qBAAqB;;EAErB,sBAAsB;EACtB,WAAmB;EACnB,YAAoB;;EAEpB,yBAAiB;;KAAjB,sBAAiB;;UAAjB,iBAAiB;EACjB,yGAAyG;EACzG,sBAAsB;EACtB,oBAAoB;;EAEpB,2CAA2C;EAC3C,8CAA8C;EAC9C,sDAAsD;AACxD;;AAEA;EACE,kBAAkB;;EAElB,SAAS;EACT,UAAU;;EAEV,WAAqB;EACrB,YAAsB;;EAEtB,UAAU;EACV,mCAAmC;AAOrC;;AALE;IACE,kBAAkB;IAClB,MAAM;IACN,OAAO;EACT;;AAGF;AAEA;;AAEA;AAEA;;AAEA;EACE,kBAAkB;EAClB,MAAM;EACN,OAAO;;EAEP,WAAW;EACX,YAAY;EACZ,SAAS;;EAET,eAAe;;EAEf,UAAU;;EAEV,yDAAyD;AAyD3D;;AAxDE;;IAEE,yBAAyB;IACzB,wCAAwC;EAC1C;;AAEA,yDAAyD;;AACzD;IACE,UAAU;EACZ;;AAEA;;IAEE,6CAA6C;;IAE7C,4CAA4C;IAC5C,oDAAoD;EACtD;;AAEA,yDAAyD;;AACzD;IACE,UAAU;EACZ;;AAEA;IACE,oBAAoB;EACtB;;AAEA,yDAAyD;;AACzD;IACE,+CAA+C;IAC/C,uDAAuD;EACzD;;AAEA,yDAAyD;;AACzD;;IAEE,wDAAwD;EAC1D;;AAEA,yDAAyD;;AACzD;;IAEE,sCAAsC;EACxC;;AAEA,yDAAyD;;AACzD;IACE,gBAAgB;;IAEhB,UAAU;EACZ;;AAEA;IACE,iCAAiC;EACnC;;AAGF;EACE,gBAAiB;;EAEjB,mBAAmB;AACrB",sourcesContent:['@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n@value checkboxSize: 14px;\n\n.checkbox {\n position: relative;\n\n display: inline-block;\n\n text-align: left;\n\n color: var(--ring-text-color);\n outline: none;\n\n &:hover .cell {\n transition: background-color var(--ring-ease);\n\n border-color: var(--ring-border-hover-color);\n }\n}\n\n.cell {\n position: relative;\n top: -2px;\n\n display: inline-block;\n\n box-sizing: border-box;\n width: checkboxSize;\n height: checkboxSize;\n\n user-select: none;\n transition: border-color var(--ring-ease), background-color var(--ring-ease), box-shadow var(--ring-ease);\n vertical-align: middle;\n pointer-events: none;\n\n border: 1px solid var(--ring-borders-color);\n border-radius: var(--ring-border-radius-small);\n background-color: var(--ring-content-background-color);\n}\n\n.icon.icon {\n position: absolute;\n\n top: -1px;\n left: -1px;\n\n width: calc(unit * 2);\n height: calc(unit * 2);\n\n opacity: 0;\n color: var(--ring-white-text-color);\n\n & svg {\n position: absolute;\n top: 0;\n left: 0;\n }\n}\n\n.check {\n composes: icon;\n}\n\n.minus {\n composes: icon;\n}\n\n.input {\n position: absolute;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n margin: 0;\n\n cursor: pointer;\n\n opacity: 0;\n\n /* stylelint-disable-next-line selector-max-specificity */\n &:checked + .cell,\n &:indeterminate + .cell {\n border-color: transparent;\n background-color: var(--ring-main-color);\n }\n\n /* stylelint-disable-next-line selector-max-specificity */\n &:checked + .cell .check {\n opacity: 1;\n }\n\n &:focus-visible + .cell,\n &.focus + .cell {\n transition: background-color var(--ring-ease);\n\n border-color: var(--ring-border-hover-color);\n box-shadow: 0 0 0 1px var(--ring-border-hover-color);\n }\n\n /* stylelint-disable-next-line selector-max-specificity */\n &:indeterminate + .cell .minus {\n opacity: 1;\n }\n\n &[disabled] {\n pointer-events: none;\n }\n\n /* stylelint-disable-next-line selector-max-specificity */\n &[disabled][disabled] + .cell {\n border-color: var(--ring-border-disabled-color);\n background-color: var(--ring-disabled-background-color);\n }\n\n /* stylelint-disable-next-line selector-max-specificity */\n &[disabled]:checked + .cell,\n &[disabled]:indeterminate + .cell {\n border-color: var(--ring-border-selected-disabled-color);\n }\n\n /* stylelint-disable-next-line selector-max-specificity */\n &[disabled]:checked + .cell .check,\n &[disabled]:indeterminate + .cell .minus {\n color: var(--ring-icon-disabled-color);\n }\n\n /* stylelint-disable-next-line selector-max-specificity */\n &:indeterminate:indeterminate + .cell .check {\n transition: none;\n\n opacity: 0;\n }\n\n &[disabled] ~ .label {\n color: var(--ring-disabled-color);\n }\n}\n\n.label {\n margin-left: unit;\n\n line-height: normal;\n}\n',null],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`,checkboxSize:"14px",checkbox:"checkbox_dccf",cell:"cell_edda",icon:"icon_b476",check:"check_a219 icon_b476",minus:"minus_de65 icon_b476",input:"input_a330",focus:"focus_eaa3",label:"label_dcc7"};const u=s},5486:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>l});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i)()(o());a.push([e.id,".label_bed7 {\n display: block;\n\n margin-bottom: calc(var(--ring-unit)*0.5);\n}\n\n.formLabel_f9ba {\n color: var(--ring-text-color);\n\n font-size: var(--ring-font-size);\n line-height: var(--ring-line-height);\n}\n\n.secondaryLabel_e8a1 {\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n\n.disabledLabel_e4c1 {\n color: var(--ring-disabled-color);\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/control-label/control-label.css"],names:[],mappings:"AAAA;EACE,cAAc;;EAEd,yCAA2C;AAC7C;;AAEA;EACE,6BAA6B;;EAE7B,gCAAgC;EAChC,oCAAoC;AACtC;;AAEA;EACE,kCAAkC;;EAElC,wCAAwC;EACxC,2CAA2C;AAC7C;;AAEA;EACE,iCAAiC;AACnC",sourcesContent:[".label {\n display: block;\n\n margin-bottom: calc(var(--ring-unit) * 0.5);\n}\n\n.formLabel {\n color: var(--ring-text-color);\n\n font-size: var(--ring-font-size);\n line-height: var(--ring-line-height);\n}\n\n.secondaryLabel {\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n\n.disabledLabel {\n color: var(--ring-disabled-color);\n}\n"],sourceRoot:""}]),a.locals={label:"label_bed7",formLabel:"formLabel_f9ba",secondaryLabel:"secondaryLabel_e8a1",disabledLabel:"disabledLabel_e4c1"};const l=a},6506:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>s});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(5280),c=a()(o());c.i(l.A),c.push([e.id,".dropdown_a1de {\n display: inline-block;\n}\n\n.anchor_fdbe.anchor_fdbe {\n margin: 0 -3px;\n padding: 0 3px;\n\n font: inherit;\n}\n\n.chevron_ffc6 {\n margin-left: 2px;\n\n line-height: normal;\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/dropdown/dropdown.css"],names:[],mappings:"AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,cAAc;EACd,cAAc;;EAEd,aAAa;AACf;;AAEA;EACE,gBAAgB;;EAEhB,mBAAmB;AACrB",sourcesContent:['@import "../global/variables.css";\n\n.dropdown {\n display: inline-block;\n}\n\n.anchor.anchor {\n margin: 0 -3px;\n padding: 0 3px;\n\n font: inherit;\n}\n\n.chevron {\n margin-left: 2px;\n\n line-height: normal;\n}\n'],sourceRoot:""}]),c.locals={dropdown:"dropdown_a1de",anchor:"anchor_fdbe",chevron:"chevron_ffc6"};const s=c},9106:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>l});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i)()(o());a.push([e.id,'/* https://readymag.com/artemtiunov/RingUILanguage/colours/ */\n\n/*\nUnit shouldn\'t be CSS custom property because it is not intended to change\nAlso it won\'t form in FF47 https://bugzilla.mozilla.org/show_bug.cgi?id=594933\n*/\n\n.clearfix_c694::after {\n display: block;\n clear: both;\n\n content: "";\n }\n\n.font_a1f6 {\n font-family: var(--ring-font-family);\n font-size: var(--ring-font-size);\n line-height: var(--ring-line-height);\n}\n\n.font-lower_c3c9 {\n\n line-height: var(--ring-line-height-lower);\n}\n\n.font-smaller_d963 {\n\n font-size: var(--ring-font-size-smaller);\n}\n\n.font-smaller-lower_ff5f {\n\n line-height: var(--ring-line-height-lowest);\n}\n\n.font-larger-lower_b336 {\n\n font-size: var(--ring-font-size-larger);\n}\n\n.font-larger_f035 {\n\n line-height: var(--ring-line-height-taller);\n}\n\n/* To be used at large sizes */\n/* As close as possible to Helvetica Neue Thin (to replace Gotham) */\n.thin-font_de5b {\n font-family: "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;\n font-size: var(--ring-font-size);\n font-weight: 100; /* Renders Helvetica Neue UltraLight on OS X */\n}\n\n.monospace-font_ac33 {\n font-family: var(--ring-font-family-monospace);\n font-size: var(--ring-font-size-smaller);\n}\n\n.ellipsis_e43b {\n overflow: hidden;\n\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.resetButton_ddd2 {\n overflow: visible;\n\n padding: 0;\n\n text-align: left;\n\n color: inherit;\n border: 0;\n\n background-color: transparent;\n\n font: inherit;\n}\n\n.resetButton_ddd2::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n }\n\n/* Note: footer also has top margin which isn\'t taken into account here */\n\n/* Media breakpoints (minimal values) */\n\n/* Media queries */\n',"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/global/global.css"],names:[],mappings:"AAAA,6DAA6D;;AAE7D;;;CAGC;;AAIC;IACE,cAAc;IACd,WAAW;;IAEX,WAAW;EACb;;AAGF;EACE,oCAAoC;EACpC,gCAAgC;EAChC,oCAAoC;AACtC;;AAEA;;EAGE,0CAA0C;AAC5C;;AAEA;;EAGE,wCAAwC;AAC1C;;AAEA;;EAGE,2CAA2C;AAC7C;;AAEA;;EAGE,uCAAuC;AACzC;;AAEA;;EAGE,2CAA2C;AAC7C;;AAEA,8BAA8B;AAC9B,oEAAoE;AACpE;EACE,uEAAuE;EACvE,gCAAgC;EAChC,gBAAgB,EAAE,+CAA+C;AACnE;;AAEA;EACE,8CAA8C;EAC9C,wCAAwC;AAC1C;;AAEA;EACE,gBAAgB;;EAEhB,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;EACE,iBAAiB;;EAEjB,UAAU;;EAEV,gBAAgB;;EAEhB,cAAc;EACd,SAAS;;EAET,6BAA6B;;EAE7B,aAAa;AAOf;;AALE;IACE,UAAU;;IAEV,SAAS;EACX;;AAGF,yEAAyE;;AAGzE,uCAAuC;;AAKvC,kBAAkB",sourcesContent:['/* https://readymag.com/artemtiunov/RingUILanguage/colours/ */\n\n/*\nUnit shouldn\'t be CSS custom property because it is not intended to change\nAlso it won\'t form in FF47 https://bugzilla.mozilla.org/show_bug.cgi?id=594933\n*/\n@value unit: 8px;\n\n.clearfix {\n &::after {\n display: block;\n clear: both;\n\n content: "";\n }\n}\n\n.font {\n font-family: var(--ring-font-family);\n font-size: var(--ring-font-size);\n line-height: var(--ring-line-height);\n}\n\n.font-lower {\n composes: font;\n\n line-height: var(--ring-line-height-lower);\n}\n\n.font-smaller {\n composes: font-lower;\n\n font-size: var(--ring-font-size-smaller);\n}\n\n.font-smaller-lower {\n composes: font-smaller;\n\n line-height: var(--ring-line-height-lowest);\n}\n\n.font-larger-lower {\n composes: font-lower;\n\n font-size: var(--ring-font-size-larger);\n}\n\n.font-larger {\n composes: font-larger-lower;\n\n line-height: var(--ring-line-height-taller);\n}\n\n/* To be used at large sizes */\n/* As close as possible to Helvetica Neue Thin (to replace Gotham) */\n.thin-font {\n font-family: "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;\n font-size: var(--ring-font-size);\n font-weight: 100; /* Renders Helvetica Neue UltraLight on OS X */\n}\n\n.monospace-font {\n font-family: var(--ring-font-family-monospace);\n font-size: var(--ring-font-size-smaller);\n}\n\n.ellipsis {\n overflow: hidden;\n\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.resetButton {\n overflow: visible;\n\n padding: 0;\n\n text-align: left;\n\n color: inherit;\n border: 0;\n\n background-color: transparent;\n\n font: inherit;\n\n &::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n }\n}\n\n/* Note: footer also has top margin which isn\'t taken into account here */\n@value footer-height: calc(unit * 8);\n\n/* Media breakpoints (minimal values) */\n@value breakpoint-small: 640px;\n@value breakpoint-middle: 960px;\n@value breakpoint-large: 1200px;\n\n/* Media queries */\n@value extra-small-screen-media: (max-width: calc(breakpoint-small - 1px));\n@value small-screen-media: (min-width: breakpoint-small) and (max-width: calc(breakpoint-middle - 1px));\n@value middle-screen-media: (min-width: breakpoint-middle) and (max-width: calc(breakpoint-large - 1px));\n@value large-screen-media: (min-width: breakpoint-large);\n'],sourceRoot:""}]),a.locals={unit:"8px","footer-height":"64px","breakpoint-small":"640px","breakpoint-middle":"960px","breakpoint-large":"1200px","extra-small-screen-media":"(max-width: 639px)","small-screen-media":"(min-width: 640px) and (max-width: 959px)","middle-screen-media":"(min-width: 960px) and (max-width: 1199px)","large-screen-media":"(min-width: 1200px)",clearfix:"clearfix_c694",font:"font_a1f6","font-lower":"font-lower_c3c9 font_a1f6","font-smaller":"font-smaller_d963 font-lower_c3c9 font_a1f6","font-smaller-lower":"font-smaller-lower_ff5f font-smaller_d963 font-lower_c3c9 font_a1f6","font-larger-lower":"font-larger-lower_b336 font-lower_c3c9 font_a1f6","font-larger":"font-larger_f035 font-larger-lower_b336 font-lower_c3c9 font_a1f6","thin-font":"thin-font_de5b","monospace-font":"monospace-font_ac33",ellipsis:"ellipsis_e43b",resetButton:"resetButton_ddd2"};const l=a},5280:(e,n,t)=>{"use strict";t.d(n,{A:()=>l});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i)()(o());a.push([e.id,'/* stylelint-disable color-no-hex */\n\n.light_f331,\n:root {\n --ring-unit: 8px;\n\n /* Element */\n --ring-line-components: 223, 229, 235;\n --ring-line-color: rgb(var(--ring-line-components)); /* #dfe5eb */\n --ring-borders-components: 197, 209, 219;\n --ring-borders-color: rgb(var(--ring-borders-components)); /* #c5d1db */\n --ring-icon-components: 184, 209, 229;\n --ring-icon-color: rgb(var(--ring-icon-components)); /* #b8d1e5 */\n --ring-icon-secondary-components: 153, 153, 153;\n --ring-icon-secondary-color: rgb(var(--ring-icon-secondary-components)); /* #999 */\n --ring-border-disabled-components: 232, 232, 232;\n --ring-border-disabled-color: rgb(var(--ring-border-disabled-components)); /* #e8e8e8 */\n --ring-border-selected-disabled-components: 212, 212, 212;\n --ring-border-selected-disabled-color: rgb(var(--ring-border-selected-disabled-components)); /* #d4d4d4 */\n --ring-border-unselected-disabled-components: 232, 232, 232;\n --ring-border-unselected-disabled-color: rgb(var(--ring-border-unselected-disabled-components)); /* #e8e8e8 */ /* TODO remove in 6.0 */\n --ring-icon-disabled-components: 212, 212, 212;\n --ring-icon-disabled-color: rgb(var(--ring-icon-disabled-components)); /* #d4d4d4 */\n --ring-border-hover-components: 128, 198, 255;\n --ring-border-hover-color: rgb(var(--ring-border-hover-components)); /* #80c6ff */\n --ring-icon-hover-components: var(--ring-link-hover-color);\n --ring-icon-hover-color: var(--ring-link-hover-color);\n --ring-main-components: 0, 128, 229;\n --ring-main-color: rgb(var(--ring-main-components)); /* #0080e5 */\n --ring-action-link-components: var(--ring-main-components);\n --ring-action-link-color: rgb(var(--ring-main-components)); /* #0080e5 */\n --ring-main-hover-components: 0, 112, 204;\n --ring-main-hover-color: rgb(var(--ring-main-hover-components)); /* #0070cc */\n --ring-icon-error-components: 219, 88, 96;\n --ring-icon-error-color: rgb(var(--ring-icon-error-components)); /* #db5860 */\n --ring-icon-warning-components: 237, 162, 0;\n --ring-icon-warning-color: rgb(var(--ring-icon-warning-components)); /* #eda200 */\n --ring-icon-success-components: 89, 168, 105;\n --ring-icon-success-color: rgb(var(--ring-icon-success-components)); /* #59a869 */\n --ring-pale-control-components: 207, 219, 229;\n --ring-pale-control-color: rgb(var(--ring-pale-control-components)); /* #cfdbe5 */\n --ring-popup-border-components: 0, 28, 54;\n --ring-popup-border-color: var(--ring-line-color);\n --ring-popup-shadow-components: rgba(var(--ring-popup-border-components), 0.1);\n --ring-popup-shadow-color: rgba(var(--ring-popup-border-components), 0.1);\n --ring-popup-secondary-shadow-color: rgba(var(--ring-popup-border-components), 0.04);\n --ring-message-shadow-color: rgba(var(--ring-popup-border-components), 0.3);\n --ring-pinned-shadow-components: 115, 117, 119;\n --ring-pinned-shadow-color: rgb(var(--ring-pinned-shadow-components)); /* #737577 */\n --ring-button-danger-hover-components: var(--ring-icon-error-color);\n --ring-button-danger-hover-color: var(--ring-icon-error-color);\n --ring-button-primary-border-components: 0, 98, 178;\n --ring-button-primary-border-color: rgb(var(--ring-button-primary-border-components)); /* #0062b2 */\n --ring-popup-shadow: 0 2px 8px var(--ring-popup-shadow-color), 0 1px 2px var(--ring-popup-secondary-shadow-color);\n --ring-dialog-shadow: 0 4px 24px var(--ring-popup-shadow-color), 0 2px 6px var(--ring-popup-secondary-shadow-color);\n\n /* Text */\n --ring-search-components: 102, 158, 204;\n --ring-search-color: rgb(var(--ring-search-components)); /* #669ecc */\n --ring-hint-components: 64, 99, 128;\n --ring-hint-color: rgb(var(--ring-hint-components)); /* #406380 */\n --ring-link-components: 15, 91, 153;\n --ring-link-color: rgb(var(--ring-link-components)); /* #0f5b99 */\n --ring-link-hover-components: 255, 0, 140;\n --ring-link-hover-color: rgb(var(--ring-link-hover-components)); /* #ff008c */\n --ring-error-components: 169, 15, 26;\n --ring-error-color: rgb(var(--ring-error-components)); /* #a90f1a */\n --ring-warning-components: 178, 92, 0;\n --ring-warning-color: rgb(var(--ring-warning-components)); /* #b25c00 */\n --ring-success-components: 12, 117, 35;\n --ring-success-color: rgb(var(--ring-success-components)); /* #0c7523 */\n --ring-text-components: 31, 35, 38;\n --ring-text-color: rgb(var(--ring-text-components)); /* #1f2326 */\n --ring-active-text-color: var(--ring-text-color);\n --ring-white-text-components: 255, 255, 255;\n --ring-white-text-color: rgb(var(--ring-white-text-components)); /* #fff */\n --ring-heading-color: var(--ring-text-color);\n --ring-secondary-components: 115, 117, 119;\n --ring-secondary-color: rgb(var(--ring-secondary-components)); /* #737577 */\n --ring-disabled-components: 153, 153, 153;\n --ring-disabled-color: rgb(var(--ring-disabled-components)); /* #999 */\n\n /* Background */\n --ring-content-background-components: 255, 255, 255;\n --ring-content-background-color: rgb(var(--ring-content-background-components)); /* #fff */\n --ring-popup-background-components: 255, 255, 255;\n --ring-popup-background-color: rgb(var(--ring-popup-background-components)); /* #fff */\n --ring-sidebar-background-components: 247, 249, 250;\n --ring-sidebar-background-color: rgb(var(--ring-sidebar-background-components)); /* #f7f9fa */\n --ring-selected-background-components: 212, 237, 255;\n --ring-selected-background-color: rgb(var(--ring-selected-background-components)); /* #d4edff */\n --ring-hover-background-components: 235, 246, 255;\n --ring-hover-background-color: rgb(var(--ring-hover-background-components)); /* #ebf6ff */\n --ring-navigation-background-components: 255, 255, 255;\n --ring-navigation-background-color: rgb(var(--ring-navigation-background-components)); /* #fff */\n --ring-tag-background-components: 230, 236, 242;\n --ring-tag-background-color: rgb(var(--ring-tag-background-components)); /* #e6ecf2 */\n --ring-tag-hover-background-components: 211, 218, 224;\n --ring-tag-hover-background-color: rgb(var(--ring-tag-hover-background-components)); /* #d3dae0 */\n --ring-removed-background-components: 255, 213, 203;\n --ring-removed-background-color: rgb(var(--ring-removed-background-components)); /* #ffd5cb */\n --ring-warning-background-components: 250, 236, 205;\n --ring-warning-background-color: rgb(var(--ring-warning-background-components)); /* #faeccd */\n --ring-added-background-components: 216, 240, 216;\n --ring-added-background-color: rgb(var(--ring-added-background-components)); /* #d8f0d8 */\n --ring-disabled-background-components: 245, 245, 245;\n --ring-disabled-background-color: rgb(var(--ring-disabled-background-components)); /* #f5f5f5 */\n --ring-disabled-selected-background-components: 232, 232, 232;\n --ring-disabled-selected-background-color: rgb(var(--ring-disabled-selected-background-components)); /* #e8e8e8 */\n --ring-button-danger-active-components: 255, 231, 232;\n --ring-button-danger-active-color: rgb(var(--ring-button-danger-active-components)); /* #ffe7e8 */\n --ring-button-loader-background-components: 51, 163, 255;\n --ring-button-loader-background: rgb(var(--ring-button-loader-background-components)); /* #33a3ff */\n --ring-button-primary-background-components: 26, 152, 255;\n --ring-button-primary-background-color: rgb(var(--ring-button-primary-background-components)); /* #1a98ff */\n --ring-table-loader-background-color: rgba(var(--ring-content-background-components), 0.5); /* #ffffff80 */\n\n /* Code */\n --ring-code-background-color: var(--ring-content-background-color);\n --ring-code-components: 0, 0, 0;\n --ring-code-color: rgb(var(--ring-code-components)); /* #000 */\n --ring-code-comment-components: 112, 112, 112;\n --ring-code-comment-color: rgb(var(--ring-code-comment-components)); /* #707070 */\n --ring-code-meta-components: 112, 112, 112;\n --ring-code-meta-color: rgb(var(--ring-code-meta-components)); /* #707070 */\n --ring-code-keyword-components: 0, 0, 128;\n --ring-code-keyword-color: rgb(var(--ring-code-keyword-components)); /* #000080 */\n --ring-code-tag-background-components: 239, 239, 239;\n --ring-code-tag-background-color: rgb(var(--ring-code-tag-background-components)); /* #efefef */\n --ring-code-tag-color: var(--ring-code-keyword-color);\n --ring-code-tag-font-weight: bold;\n --ring-code-field-components: 102, 14, 122;\n --ring-code-field-color: rgb(var(--ring-code-field-components)); /* #660e7a */\n --ring-code-attribute-components: 0, 0, 255;\n --ring-code-attribute-color: rgb(var(--ring-code-attribute-components)); /* #00f */\n --ring-code-number-color: var(--ring-code-attribute-color);\n --ring-code-string-components: 0, 122, 0;\n --ring-code-string-color: rgb(var(--ring-code-string-components)); /* #007a00 */\n --ring-code-addition-components: 170, 222, 170;\n --ring-code-addition-color: rgb(var(--ring-code-addition-components)); /* #aadeaa */\n --ring-code-deletion-components: 200, 200, 200;\n --ring-code-deletion-color: rgb(var(--ring-code-deletion-components)); /* #c8c8c8 */\n\n /* Metrics */\n --ring-border-radius: 4px;\n --ring-border-radius-small: 2px;\n --ring-font-size-larger: 15px;\n --ring-font-size: 14px;\n --ring-font-size-smaller: 12px;\n --ring-line-height-taller: 21px;\n --ring-line-height: 20px;\n --ring-line-height-lower: 18px;\n --ring-line-height-lowest: 16px;\n --ring-ease: 0.3s ease-out;\n --ring-fast-ease: 0.15s ease-out;\n --ring-font-family: system-ui, -apple-system, Segoe UI, Roboto, Noto Sans, Ubuntu, Cantarell, Helvetica Neue, Arial, sans-serif;\n --ring-font-family-monospace:\n Menlo,\n "Bitstream Vera Sans Mono",\n "Ubuntu Mono",\n Consolas,\n "Courier New",\n Courier,\n monospace;\n\n /* Common z-index-values */\n\n /* Invisible element is an absolutely positioned element which should be below */\n /* all other elements on the page */\n --ring-invisible-element-z-index: -1;\n\n /* z-index for position: fixed elements */\n --ring-fixed-z-index: 1;\n\n /* Elements that should overlay all other elements on the page */\n --ring-overlay-z-index: 5;\n\n /* Alerts should de displayed above overlays */\n --ring-alert-z-index: 6;\n}\n',"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/global/variables.css"],names:[],mappings:"AAAA,mCAAmC;;AAEnC;;EAEE,gBAAgB;;EAEhB,YAAY;EACZ,qCAAqC;EACrC,mDAAmD,EAAE,YAAY;EACjE,wCAAwC;EACxC,yDAAyD,EAAE,YAAY;EACvE,qCAAqC;EACrC,mDAAmD,EAAE,YAAY;EACjE,+CAA+C;EAC/C,uEAAuE,EAAE,SAAS;EAClF,gDAAgD;EAChD,yEAAyE,EAAE,YAAY;EACvF,yDAAyD;EACzD,2FAA2F,EAAE,YAAY;EACzG,2DAA2D;EAC3D,+FAA+F,EAAE,YAAY,EAAE,uBAAuB;EACtI,8CAA8C;EAC9C,qEAAqE,EAAE,YAAY;EACnF,6CAA6C;EAC7C,mEAAmE,EAAE,YAAY;EACjF,0DAA0D;EAC1D,qDAAqD;EACrD,mCAAmC;EACnC,mDAAmD,EAAE,YAAY;EACjE,0DAA0D;EAC1D,0DAA0D,EAAE,YAAY;EACxE,yCAAyC;EACzC,+DAA+D,EAAE,YAAY;EAC7E,yCAAyC;EACzC,+DAA+D,EAAE,YAAY;EAC7E,2CAA2C;EAC3C,mEAAmE,EAAE,YAAY;EACjF,4CAA4C;EAC5C,mEAAmE,EAAE,YAAY;EACjF,6CAA6C;EAC7C,mEAAmE,EAAE,YAAY;EACjF,yCAAyC;EACzC,iDAAiD;EACjD,8EAA8E;EAC9E,yEAAyE;EACzE,oFAAoF;EACpF,2EAA2E;EAC3E,8CAA8C;EAC9C,qEAAqE,EAAE,YAAY;EACnF,mEAAmE;EACnE,8DAA8D;EAC9D,mDAAmD;EACnD,qFAAqF,EAAE,YAAY;EACnG,iHAAiH;EACjH,mHAAmH;;EAEnH,SAAS;EACT,uCAAuC;EACvC,uDAAuD,EAAE,YAAY;EACrE,mCAAmC;EACnC,mDAAmD,EAAE,YAAY;EACjE,mCAAmC;EACnC,mDAAmD,EAAE,YAAY;EACjE,yCAAyC;EACzC,+DAA+D,EAAE,YAAY;EAC7E,oCAAoC;EACpC,qDAAqD,EAAE,YAAY;EACnE,qCAAqC;EACrC,yDAAyD,EAAE,YAAY;EACvE,sCAAsC;EACtC,yDAAyD,EAAE,YAAY;EACvE,kCAAkC;EAClC,mDAAmD,EAAE,YAAY;EACjE,gDAAgD;EAChD,2CAA2C;EAC3C,+DAA+D,EAAE,SAAS;EAC1E,4CAA4C;EAC5C,0CAA0C;EAC1C,6DAA6D,EAAE,YAAY;EAC3E,yCAAyC;EACzC,2DAA2D,EAAE,SAAS;;EAEtE,eAAe;EACf,mDAAmD;EACnD,+EAA+E,EAAE,SAAS;EAC1F,iDAAiD;EACjD,2EAA2E,EAAE,SAAS;EACtF,mDAAmD;EACnD,+EAA+E,EAAE,YAAY;EAC7F,oDAAoD;EACpD,iFAAiF,EAAE,YAAY;EAC/F,iDAAiD;EACjD,2EAA2E,EAAE,YAAY;EACzF,sDAAsD;EACtD,qFAAqF,EAAE,SAAS;EAChG,+CAA+C;EAC/C,uEAAuE,EAAE,YAAY;EACrF,qDAAqD;EACrD,mFAAmF,EAAE,YAAY;EACjG,mDAAmD;EACnD,+EAA+E,EAAE,YAAY;EAC7F,mDAAmD;EACnD,+EAA+E,EAAE,YAAY;EAC7F,iDAAiD;EACjD,2EAA2E,EAAE,YAAY;EACzF,oDAAoD;EACpD,iFAAiF,EAAE,YAAY;EAC/F,6DAA6D;EAC7D,mGAAmG,EAAE,YAAY;EACjH,qDAAqD;EACrD,mFAAmF,EAAE,YAAY;EACjG,wDAAwD;EACxD,qFAAqF,EAAE,YAAY;EACnG,yDAAyD;EACzD,6FAA6F,EAAE,YAAY;EAC3G,0FAA0F,EAAE,cAAc;;EAE1G,SAAS;EACT,kEAAkE;EAClE,+BAA+B;EAC/B,mDAAmD,EAAE,SAAS;EAC9D,6CAA6C;EAC7C,mEAAmE,EAAE,YAAY;EACjF,0CAA0C;EAC1C,6DAA6D,EAAE,YAAY;EAC3E,yCAAyC;EACzC,mEAAmE,EAAE,YAAY;EACjF,oDAAoD;EACpD,iFAAiF,EAAE,YAAY;EAC/F,qDAAqD;EACrD,iCAAiC;EACjC,0CAA0C;EAC1C,+DAA+D,EAAE,YAAY;EAC7E,2CAA2C;EAC3C,uEAAuE,EAAE,SAAS;EAClF,0DAA0D;EAC1D,wCAAwC;EACxC,iEAAiE,EAAE,YAAY;EAC/E,8CAA8C;EAC9C,qEAAqE,EAAE,YAAY;EACnF,8CAA8C;EAC9C,qEAAqE,EAAE,YAAY;;EAEnF,YAAY;EACZ,yBAAyB;EACzB,+BAA+B;EAC/B,6BAA6B;EAC7B,sBAAsB;EACtB,8BAA8B;EAC9B,+BAA+B;EAC/B,wBAAwB;EACxB,8BAA8B;EAC9B,+BAA+B;EAC/B,0BAA0B;EAC1B,gCAAgC;EAChC,+HAAgD;EAChD;;;;;;;aAOW;;EAEX,0BAA0B;;EAE1B,gFAAgF;EAChF,mCAAmC;EACnC,oCAAoC;;EAEpC,yCAAyC;EACzC,uBAAuB;;EAEvB,gEAAgE;EAChE,yBAAyB;;EAEzB,8CAA8C;EAC9C,uBAAuB;AACzB",sourcesContent:['/* stylelint-disable color-no-hex */\n\n.light,\n:root {\n --ring-unit: 8px;\n\n /* Element */\n --ring-line-components: 223, 229, 235;\n --ring-line-color: rgb(var(--ring-line-components)); /* #dfe5eb */\n --ring-borders-components: 197, 209, 219;\n --ring-borders-color: rgb(var(--ring-borders-components)); /* #c5d1db */\n --ring-icon-components: 184, 209, 229;\n --ring-icon-color: rgb(var(--ring-icon-components)); /* #b8d1e5 */\n --ring-icon-secondary-components: 153, 153, 153;\n --ring-icon-secondary-color: rgb(var(--ring-icon-secondary-components)); /* #999 */\n --ring-border-disabled-components: 232, 232, 232;\n --ring-border-disabled-color: rgb(var(--ring-border-disabled-components)); /* #e8e8e8 */\n --ring-border-selected-disabled-components: 212, 212, 212;\n --ring-border-selected-disabled-color: rgb(var(--ring-border-selected-disabled-components)); /* #d4d4d4 */\n --ring-border-unselected-disabled-components: 232, 232, 232;\n --ring-border-unselected-disabled-color: rgb(var(--ring-border-unselected-disabled-components)); /* #e8e8e8 */ /* TODO remove in 6.0 */\n --ring-icon-disabled-components: 212, 212, 212;\n --ring-icon-disabled-color: rgb(var(--ring-icon-disabled-components)); /* #d4d4d4 */\n --ring-border-hover-components: 128, 198, 255;\n --ring-border-hover-color: rgb(var(--ring-border-hover-components)); /* #80c6ff */\n --ring-icon-hover-components: var(--ring-link-hover-color);\n --ring-icon-hover-color: var(--ring-link-hover-color);\n --ring-main-components: 0, 128, 229;\n --ring-main-color: rgb(var(--ring-main-components)); /* #0080e5 */\n --ring-action-link-components: var(--ring-main-components);\n --ring-action-link-color: rgb(var(--ring-main-components)); /* #0080e5 */\n --ring-main-hover-components: 0, 112, 204;\n --ring-main-hover-color: rgb(var(--ring-main-hover-components)); /* #0070cc */\n --ring-icon-error-components: 219, 88, 96;\n --ring-icon-error-color: rgb(var(--ring-icon-error-components)); /* #db5860 */\n --ring-icon-warning-components: 237, 162, 0;\n --ring-icon-warning-color: rgb(var(--ring-icon-warning-components)); /* #eda200 */\n --ring-icon-success-components: 89, 168, 105;\n --ring-icon-success-color: rgb(var(--ring-icon-success-components)); /* #59a869 */\n --ring-pale-control-components: 207, 219, 229;\n --ring-pale-control-color: rgb(var(--ring-pale-control-components)); /* #cfdbe5 */\n --ring-popup-border-components: 0, 28, 54;\n --ring-popup-border-color: var(--ring-line-color);\n --ring-popup-shadow-components: rgba(var(--ring-popup-border-components), 0.1);\n --ring-popup-shadow-color: rgba(var(--ring-popup-border-components), 0.1);\n --ring-popup-secondary-shadow-color: rgba(var(--ring-popup-border-components), 0.04);\n --ring-message-shadow-color: rgba(var(--ring-popup-border-components), 0.3);\n --ring-pinned-shadow-components: 115, 117, 119;\n --ring-pinned-shadow-color: rgb(var(--ring-pinned-shadow-components)); /* #737577 */\n --ring-button-danger-hover-components: var(--ring-icon-error-color);\n --ring-button-danger-hover-color: var(--ring-icon-error-color);\n --ring-button-primary-border-components: 0, 98, 178;\n --ring-button-primary-border-color: rgb(var(--ring-button-primary-border-components)); /* #0062b2 */\n --ring-popup-shadow: 0 2px 8px var(--ring-popup-shadow-color), 0 1px 2px var(--ring-popup-secondary-shadow-color);\n --ring-dialog-shadow: 0 4px 24px var(--ring-popup-shadow-color), 0 2px 6px var(--ring-popup-secondary-shadow-color);\n\n /* Text */\n --ring-search-components: 102, 158, 204;\n --ring-search-color: rgb(var(--ring-search-components)); /* #669ecc */\n --ring-hint-components: 64, 99, 128;\n --ring-hint-color: rgb(var(--ring-hint-components)); /* #406380 */\n --ring-link-components: 15, 91, 153;\n --ring-link-color: rgb(var(--ring-link-components)); /* #0f5b99 */\n --ring-link-hover-components: 255, 0, 140;\n --ring-link-hover-color: rgb(var(--ring-link-hover-components)); /* #ff008c */\n --ring-error-components: 169, 15, 26;\n --ring-error-color: rgb(var(--ring-error-components)); /* #a90f1a */\n --ring-warning-components: 178, 92, 0;\n --ring-warning-color: rgb(var(--ring-warning-components)); /* #b25c00 */\n --ring-success-components: 12, 117, 35;\n --ring-success-color: rgb(var(--ring-success-components)); /* #0c7523 */\n --ring-text-components: 31, 35, 38;\n --ring-text-color: rgb(var(--ring-text-components)); /* #1f2326 */\n --ring-active-text-color: var(--ring-text-color);\n --ring-white-text-components: 255, 255, 255;\n --ring-white-text-color: rgb(var(--ring-white-text-components)); /* #fff */\n --ring-heading-color: var(--ring-text-color);\n --ring-secondary-components: 115, 117, 119;\n --ring-secondary-color: rgb(var(--ring-secondary-components)); /* #737577 */\n --ring-disabled-components: 153, 153, 153;\n --ring-disabled-color: rgb(var(--ring-disabled-components)); /* #999 */\n\n /* Background */\n --ring-content-background-components: 255, 255, 255;\n --ring-content-background-color: rgb(var(--ring-content-background-components)); /* #fff */\n --ring-popup-background-components: 255, 255, 255;\n --ring-popup-background-color: rgb(var(--ring-popup-background-components)); /* #fff */\n --ring-sidebar-background-components: 247, 249, 250;\n --ring-sidebar-background-color: rgb(var(--ring-sidebar-background-components)); /* #f7f9fa */\n --ring-selected-background-components: 212, 237, 255;\n --ring-selected-background-color: rgb(var(--ring-selected-background-components)); /* #d4edff */\n --ring-hover-background-components: 235, 246, 255;\n --ring-hover-background-color: rgb(var(--ring-hover-background-components)); /* #ebf6ff */\n --ring-navigation-background-components: 255, 255, 255;\n --ring-navigation-background-color: rgb(var(--ring-navigation-background-components)); /* #fff */\n --ring-tag-background-components: 230, 236, 242;\n --ring-tag-background-color: rgb(var(--ring-tag-background-components)); /* #e6ecf2 */\n --ring-tag-hover-background-components: 211, 218, 224;\n --ring-tag-hover-background-color: rgb(var(--ring-tag-hover-background-components)); /* #d3dae0 */\n --ring-removed-background-components: 255, 213, 203;\n --ring-removed-background-color: rgb(var(--ring-removed-background-components)); /* #ffd5cb */\n --ring-warning-background-components: 250, 236, 205;\n --ring-warning-background-color: rgb(var(--ring-warning-background-components)); /* #faeccd */\n --ring-added-background-components: 216, 240, 216;\n --ring-added-background-color: rgb(var(--ring-added-background-components)); /* #d8f0d8 */\n --ring-disabled-background-components: 245, 245, 245;\n --ring-disabled-background-color: rgb(var(--ring-disabled-background-components)); /* #f5f5f5 */\n --ring-disabled-selected-background-components: 232, 232, 232;\n --ring-disabled-selected-background-color: rgb(var(--ring-disabled-selected-background-components)); /* #e8e8e8 */\n --ring-button-danger-active-components: 255, 231, 232;\n --ring-button-danger-active-color: rgb(var(--ring-button-danger-active-components)); /* #ffe7e8 */\n --ring-button-loader-background-components: 51, 163, 255;\n --ring-button-loader-background: rgb(var(--ring-button-loader-background-components)); /* #33a3ff */\n --ring-button-primary-background-components: 26, 152, 255;\n --ring-button-primary-background-color: rgb(var(--ring-button-primary-background-components)); /* #1a98ff */\n --ring-table-loader-background-color: rgba(var(--ring-content-background-components), 0.5); /* #ffffff80 */\n\n /* Code */\n --ring-code-background-color: var(--ring-content-background-color);\n --ring-code-components: 0, 0, 0;\n --ring-code-color: rgb(var(--ring-code-components)); /* #000 */\n --ring-code-comment-components: 112, 112, 112;\n --ring-code-comment-color: rgb(var(--ring-code-comment-components)); /* #707070 */\n --ring-code-meta-components: 112, 112, 112;\n --ring-code-meta-color: rgb(var(--ring-code-meta-components)); /* #707070 */\n --ring-code-keyword-components: 0, 0, 128;\n --ring-code-keyword-color: rgb(var(--ring-code-keyword-components)); /* #000080 */\n --ring-code-tag-background-components: 239, 239, 239;\n --ring-code-tag-background-color: rgb(var(--ring-code-tag-background-components)); /* #efefef */\n --ring-code-tag-color: var(--ring-code-keyword-color);\n --ring-code-tag-font-weight: bold;\n --ring-code-field-components: 102, 14, 122;\n --ring-code-field-color: rgb(var(--ring-code-field-components)); /* #660e7a */\n --ring-code-attribute-components: 0, 0, 255;\n --ring-code-attribute-color: rgb(var(--ring-code-attribute-components)); /* #00f */\n --ring-code-number-color: var(--ring-code-attribute-color);\n --ring-code-string-components: 0, 122, 0;\n --ring-code-string-color: rgb(var(--ring-code-string-components)); /* #007a00 */\n --ring-code-addition-components: 170, 222, 170;\n --ring-code-addition-color: rgb(var(--ring-code-addition-components)); /* #aadeaa */\n --ring-code-deletion-components: 200, 200, 200;\n --ring-code-deletion-color: rgb(var(--ring-code-deletion-components)); /* #c8c8c8 */\n\n /* Metrics */\n --ring-border-radius: 4px;\n --ring-border-radius-small: 2px;\n --ring-font-size-larger: 15px;\n --ring-font-size: 14px;\n --ring-font-size-smaller: 12px;\n --ring-line-height-taller: 21px;\n --ring-line-height: 20px;\n --ring-line-height-lower: 18px;\n --ring-line-height-lowest: 16px;\n --ring-ease: 0.3s ease-out;\n --ring-fast-ease: 0.15s ease-out;\n --ring-font-family: system-ui, Arial, sans-serif;\n --ring-font-family-monospace:\n Menlo,\n "Bitstream Vera Sans Mono",\n "Ubuntu Mono",\n Consolas,\n "Courier New",\n Courier,\n monospace;\n\n /* Common z-index-values */\n\n /* Invisible element is an absolutely positioned element which should be below */\n /* all other elements on the page */\n --ring-invisible-element-z-index: -1;\n\n /* z-index for position: fixed elements */\n --ring-fixed-z-index: 1;\n\n /* Elements that should overlay all other elements on the page */\n --ring-overlay-z-index: 5;\n\n /* Alerts should de displayed above overlays */\n --ring-alert-z-index: 6;\n}\n'],sourceRoot:""}]),a.locals={light:"light_f331"};const l=a},9173:(e,n,t)=>{"use strict";t.d(n,{A:()=>l});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i)()(o());a.push([e.id,"/* stylelint-disable color-no-hex */\n\n.ring-ui-theme-dark,\n.dark_d4a9,\n:root.dark_d4a9 {\n --ring-line-components: 71, 81, 89;\n --ring-line-color: rgb(var(--ring-line-components)); /* #475159 */\n --ring-borders-components: 64, 99, 128;\n --ring-borders-color: rgb(var(--ring-borders-components)); /* #406380 */\n --ring-icon-components: 128, 146, 157;\n --ring-icon-color: rgb(var(--ring-icon-components)); /* #80929d */\n --ring-icon-secondary-components: 128, 146, 157;\n --ring-icon-secondary-color: rgb(var(--ring-icon-secondary-components)); /* #80929d */\n --ring-border-disabled-components: 54, 54, 54;\n --ring-border-disabled-color: rgb(var(--ring-border-disabled-components)); /* #363636 */\n --ring-border-selected-disabled-components: 54, 54, 54;\n --ring-border-selected-disabled-color: rgb(var(--ring-border-selected-disabled-components)); /* #363636 */\n --ring-border-unselected-disabled-components: 54, 54, 54;\n --ring-border-unselected-disabled-color: rgb(var(--ring-border-unselected-disabled-components)); /* #363636 */ /* TODO remove in 6.0 */\n --ring-icon-disabled-components: 80, 82, 83;\n --ring-icon-disabled-color: rgb(var(--ring-icon-disabled-components)); /* #505253 */\n --ring-border-hover-components: 112, 177, 230;\n --ring-border-hover-color: rgb(var(--ring-border-hover-components)); /* #70b1e6 */\n --ring-main-components: 0, 142, 255;\n --ring-main-color: rgb(var(--ring-main-components)); /* #008eff */\n --ring-action-link-components: var(--ring-main-components);\n --ring-action-link-color: rgb(var(--ring-main-components)); /* #008eff */\n --ring-main-hover-components: 0, 126, 229;\n --ring-main-hover-color: rgb(var(--ring-main-hover-components)); /* #007ee5 */\n --ring-icon-error-components: 219, 88, 96;\n --ring-icon-error-color: rgb(var(--ring-icon-error-components)); /* #db5860 */\n --ring-icon-warning-components: 237, 162, 0;\n --ring-icon-warning-color: rgb(var(--ring-icon-warning-components)); /* #eda200 */\n --ring-icon-success-components: 71, 212, 100;\n --ring-icon-success-color: rgb(var(--ring-icon-success-components)); /* #47d464 */\n --ring-popup-border-components: 0, 42, 76;\n --ring-popup-border-color: rgba(var(--ring-popup-border-components), 0.1);\n --ring-popup-shadow-color: rgba(var(--ring-popup-border-components), 0.15);\n --ring-message-shadow-color: rgba(var(--ring-popup-border-components), 0.3);\n --ring-pinned-shadow-components: 0, 0, 0;\n --ring-pinned-shadow-color: rgb(var(--ring-pinned-shadow-components)); /* #000 */\n --ring-button-danger-hover-color: var(--ring-error-color);\n --ring-button-primary-border-components: 128, 198, 255;\n --ring-button-primary-border-color: rgb(var(--ring-button-primary-border-components)); /* #80c6ff */\n\n /* Text */\n --ring-hint-components: 128, 146, 157;\n --ring-hint-color: rgb(var(--ring-hint-components)); /* #80929d */\n --ring-link-components: 112, 177, 230;\n --ring-link-color: rgb(var(--ring-link-components)); /* #70b1e6 */\n --ring-error-components: 219, 88, 96;\n --ring-error-color: rgb(var(--ring-error-components)); /* #db5860 */\n --ring-warning-components: 237, 162, 0;\n --ring-warning-color: rgb(var(--ring-warning-components)); /* #eda200 */\n --ring-success-components: 71, 212, 100;\n --ring-success-color: rgb(var(--ring-success-components)); /* #47d464 */\n --ring-text-components: 187, 187, 187;\n --ring-text-color: rgb(var(--ring-text-components)); /* #bbb */\n --ring-active-text-components: 255, 255, 255;\n --ring-active-text-color: rgb(var(--ring-active-text-components)); /* #fff */\n --ring-heading-color: var(--ring-text-color);\n --ring-secondary-components: 128, 146, 157;\n --ring-secondary-color: rgb(var(--ring-secondary-components)); /* #80929d */\n --ring-disabled-components: 81, 95, 104;\n --ring-disabled-color: rgb(var(--ring-disabled-components)); /* #515F68 */\n\n /* Background */\n --ring-content-background-components: 35, 39, 43;\n --ring-content-background-color: rgb(var(--ring-content-background-components)); /* #23272b */\n --ring-popup-background-components: 17, 19, 20;\n --ring-popup-background-color: rgb(var(--ring-popup-background-components)); /* #111314 */\n --ring-sidebar-background-components: 40, 52, 61;\n --ring-sidebar-background-color: rgb(var(--ring-sidebar-background-components)); /* #28343d */\n --ring-selected-background-components: 6, 38, 64;\n --ring-selected-background-color: rgb(var(--ring-selected-background-components)); /* #062640 */\n --ring-hover-background-components: 11, 26, 38;\n --ring-hover-background-color: rgb(var(--ring-hover-background-components)); /* #0b1a26 */\n --ring-navigation-background-components: 17, 19, 20;\n --ring-navigation-background-color: rgb(var(--ring-navigation-background-components)); /* #111314 */\n --ring-tag-background-components: 62, 77, 89;\n --ring-tag-background-color: rgb(var(--ring-tag-background-components)); /* #3e4d59 */\n --ring-tag-hover-background-components: 51, 62, 71;\n --ring-tag-hover-background-color: rgb(var(--ring-tag-hover-background-components)); /* #333e47 */\n --ring-removed-background-components: 143, 82, 71;\n --ring-removed-background-color: rgb(var(--ring-removed-background-components)); /* #8f5247 */\n --ring-warning-background-components: 89, 61, 1;\n --ring-warning-background-color: rgb(var(--ring-warning-background-components)); /* #593d01 */\n --ring-added-background-components: 54, 89, 71;\n --ring-added-background-color: rgb(var(--ring-added-background-components)); /* #365947 */\n --ring-disabled-background-components: 44, 47, 51;\n --ring-disabled-background-color: rgb(var(--ring-disabled-background-components)); /* #2C2F33 */\n --ring-disabled-selected-background-components: 44, 47, 51;\n --ring-disabled-selected-background-color: rgb(var(--ring-disabled-selected-background-components)); /* #2C2F33 */\n --ring-button-danger-active-components: 38, 8, 10;\n --ring-button-danger-active-color: rgb(var(--ring-button-danger-active-components)); /* #26080a */\n --ring-button-primary-background-components: 0, 126, 229;\n --ring-button-primary-background-color: rgb(var(--ring-button-primary-background-components)); /* #007ee5 */\n --ring-table-loader-background-color: rgba(var(--ring-content-background-components), 0.5); /* #23272b80 */\n\n /* Code */\n --ring-code-background-components: 43, 43, 43;\n --ring-code-background-color: rgb(var(--ring-code-background-components)); /* #2b2b2b */\n --ring-code-components: 169, 183, 198;\n --ring-code-color: rgb(var(--ring-code-components)); /* #a9b7c6 */\n --ring-code-meta-components: 187, 181, 41;\n --ring-code-meta-color: rgb(var(--ring-code-meta-components)); /* #bbb529 */\n --ring-code-keyword-components: 204, 120, 50;\n --ring-code-keyword-color: rgb(var(--ring-code-keyword-components)); /* #cc7832 */\n --ring-code-tag-background-components: 43, 43, 43;\n --ring-code-tag-background-color: rgb(var(--ring-code-tag-background-components)); /* #2b2b2b */\n --ring-code-tag-components: 232, 191, 106;\n --ring-code-tag-color: rgb(var(--ring-code-tag-components)); /* #e8bf6a */\n --ring-code-tag-font-weight: normal;\n --ring-code-field-components: 152, 118, 170;\n --ring-code-field-color: rgb(var(--ring-code-tag-font-weight)); /* #9876aa */\n --ring-code-attribute-components: 186, 186, 186;\n --ring-code-attribute-color: rgb(var(--ring-code-attribute-components)); /* #bababa */\n --ring-code-number-components: 104, 151, 187;\n --ring-code-number-color: rgb(var(--ring-code-number-components)); /* #6897bb */\n --ring-code-string-components: 106, 135, 89;\n --ring-code-string-color: rgb(var(--ring-code-string-components)); /* #6a8759 */\n --ring-code-addition-components: 68, 113, 82;\n --ring-code-addition-color: rgb(var(--ring-code-addition-components)); /* #447152 */\n --ring-code-deletion-components: 101, 110, 118;\n --ring-code-deletion-color: rgb(var(--ring-code-deletion-components)); /* #656e76 */\n\n color-scheme: dark;\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/global/variables_dark.css"],names:[],mappings:"AAAA,mCAAmC;;AAEnC;;;EAGE,kCAAkC;EAClC,mDAAmD,EAAE,YAAY;EACjE,sCAAsC;EACtC,yDAAyD,EAAE,YAAY;EACvE,qCAAqC;EACrC,mDAAmD,EAAE,YAAY;EACjE,+CAA+C;EAC/C,uEAAuE,EAAE,YAAY;EACrF,6CAA6C;EAC7C,yEAAyE,EAAE,YAAY;EACvF,sDAAsD;EACtD,2FAA2F,EAAE,YAAY;EACzG,wDAAwD;EACxD,+FAA+F,EAAE,YAAY,EAAE,uBAAuB;EACtI,2CAA2C;EAC3C,qEAAqE,EAAE,YAAY;EACnF,6CAA6C;EAC7C,mEAAmE,EAAE,YAAY;EACjF,mCAAmC;EACnC,mDAAmD,EAAE,YAAY;EACjE,0DAA0D;EAC1D,0DAA0D,EAAE,YAAY;EACxE,yCAAyC;EACzC,+DAA+D,EAAE,YAAY;EAC7E,yCAAyC;EACzC,+DAA+D,EAAE,YAAY;EAC7E,2CAA2C;EAC3C,mEAAmE,EAAE,YAAY;EACjF,4CAA4C;EAC5C,mEAAmE,EAAE,YAAY;EACjF,yCAAyC;EACzC,yEAAyE;EACzE,0EAA0E;EAC1E,2EAA2E;EAC3E,wCAAwC;EACxC,qEAAqE,EAAE,SAAS;EAChF,yDAAyD;EACzD,sDAAsD;EACtD,qFAAqF,EAAE,YAAY;;EAEnG,SAAS;EACT,qCAAqC;EACrC,mDAAmD,EAAE,YAAY;EACjE,qCAAqC;EACrC,mDAAmD,EAAE,YAAY;EACjE,oCAAoC;EACpC,qDAAqD,EAAE,YAAY;EACnE,sCAAsC;EACtC,yDAAyD,EAAE,YAAY;EACvE,uCAAuC;EACvC,yDAAyD,EAAE,YAAY;EACvE,qCAAqC;EACrC,mDAAmD,EAAE,SAAS;EAC9D,4CAA4C;EAC5C,iEAAiE,EAAE,SAAS;EAC5E,4CAA4C;EAC5C,0CAA0C;EAC1C,6DAA6D,EAAE,YAAY;EAC3E,uCAAuC;EACvC,2DAA2D,EAAE,YAAY;;EAEzE,eAAe;EACf,gDAAgD;EAChD,+EAA+E,EAAE,YAAY;EAC7F,8CAA8C;EAC9C,2EAA2E,EAAE,YAAY;EACzF,gDAAgD;EAChD,+EAA+E,EAAE,YAAY;EAC7F,gDAAgD;EAChD,iFAAiF,EAAE,YAAY;EAC/F,8CAA8C;EAC9C,2EAA2E,EAAE,YAAY;EACzF,mDAAmD;EACnD,qFAAqF,EAAE,YAAY;EACnG,4CAA4C;EAC5C,uEAAuE,EAAE,YAAY;EACrF,kDAAkD;EAClD,mFAAmF,EAAE,YAAY;EACjG,iDAAiD;EACjD,+EAA+E,EAAE,YAAY;EAC7F,+CAA+C;EAC/C,+EAA+E,EAAE,YAAY;EAC7F,8CAA8C;EAC9C,2EAA2E,EAAE,YAAY;EACzF,iDAAiD;EACjD,iFAAiF,EAAE,YAAY;EAC/F,0DAA0D;EAC1D,mGAAmG,EAAE,YAAY;EACjH,iDAAiD;EACjD,mFAAmF,EAAE,YAAY;EACjG,wDAAwD;EACxD,6FAA6F,EAAE,YAAY;EAC3G,0FAA0F,EAAE,cAAc;;EAE1G,SAAS;EACT,6CAA6C;EAC7C,yEAAyE,EAAE,YAAY;EACvF,qCAAqC;EACrC,mDAAmD,EAAE,YAAY;EACjE,yCAAyC;EACzC,6DAA6D,EAAE,YAAY;EAC3E,4CAA4C;EAC5C,mEAAmE,EAAE,YAAY;EACjF,iDAAiD;EACjD,iFAAiF,EAAE,YAAY;EAC/F,yCAAyC;EACzC,2DAA2D,EAAE,YAAY;EACzE,mCAAmC;EACnC,2CAA2C;EAC3C,8DAA8D,EAAE,YAAY;EAC5E,+CAA+C;EAC/C,uEAAuE,EAAE,YAAY;EACrF,4CAA4C;EAC5C,iEAAiE,EAAE,YAAY;EAC/E,2CAA2C;EAC3C,iEAAiE,EAAE,YAAY;EAC/E,4CAA4C;EAC5C,qEAAqE,EAAE,YAAY;EACnF,8CAA8C;EAC9C,qEAAqE,EAAE,YAAY;;EAEnF,kBAAkB;AACpB",sourcesContent:["/* stylelint-disable color-no-hex */\n\n:global(.ring-ui-theme-dark),\n.dark,\n:root.dark {\n --ring-line-components: 71, 81, 89;\n --ring-line-color: rgb(var(--ring-line-components)); /* #475159 */\n --ring-borders-components: 64, 99, 128;\n --ring-borders-color: rgb(var(--ring-borders-components)); /* #406380 */\n --ring-icon-components: 128, 146, 157;\n --ring-icon-color: rgb(var(--ring-icon-components)); /* #80929d */\n --ring-icon-secondary-components: 128, 146, 157;\n --ring-icon-secondary-color: rgb(var(--ring-icon-secondary-components)); /* #80929d */\n --ring-border-disabled-components: 54, 54, 54;\n --ring-border-disabled-color: rgb(var(--ring-border-disabled-components)); /* #363636 */\n --ring-border-selected-disabled-components: 54, 54, 54;\n --ring-border-selected-disabled-color: rgb(var(--ring-border-selected-disabled-components)); /* #363636 */\n --ring-border-unselected-disabled-components: 54, 54, 54;\n --ring-border-unselected-disabled-color: rgb(var(--ring-border-unselected-disabled-components)); /* #363636 */ /* TODO remove in 6.0 */\n --ring-icon-disabled-components: 80, 82, 83;\n --ring-icon-disabled-color: rgb(var(--ring-icon-disabled-components)); /* #505253 */\n --ring-border-hover-components: 112, 177, 230;\n --ring-border-hover-color: rgb(var(--ring-border-hover-components)); /* #70b1e6 */\n --ring-main-components: 0, 142, 255;\n --ring-main-color: rgb(var(--ring-main-components)); /* #008eff */\n --ring-action-link-components: var(--ring-main-components);\n --ring-action-link-color: rgb(var(--ring-main-components)); /* #008eff */\n --ring-main-hover-components: 0, 126, 229;\n --ring-main-hover-color: rgb(var(--ring-main-hover-components)); /* #007ee5 */\n --ring-icon-error-components: 219, 88, 96;\n --ring-icon-error-color: rgb(var(--ring-icon-error-components)); /* #db5860 */\n --ring-icon-warning-components: 237, 162, 0;\n --ring-icon-warning-color: rgb(var(--ring-icon-warning-components)); /* #eda200 */\n --ring-icon-success-components: 71, 212, 100;\n --ring-icon-success-color: rgb(var(--ring-icon-success-components)); /* #47d464 */\n --ring-popup-border-components: 0, 42, 76;\n --ring-popup-border-color: rgba(var(--ring-popup-border-components), 0.1);\n --ring-popup-shadow-color: rgba(var(--ring-popup-border-components), 0.15);\n --ring-message-shadow-color: rgba(var(--ring-popup-border-components), 0.3);\n --ring-pinned-shadow-components: 0, 0, 0;\n --ring-pinned-shadow-color: rgb(var(--ring-pinned-shadow-components)); /* #000 */\n --ring-button-danger-hover-color: var(--ring-error-color);\n --ring-button-primary-border-components: 128, 198, 255;\n --ring-button-primary-border-color: rgb(var(--ring-button-primary-border-components)); /* #80c6ff */\n\n /* Text */\n --ring-hint-components: 128, 146, 157;\n --ring-hint-color: rgb(var(--ring-hint-components)); /* #80929d */\n --ring-link-components: 112, 177, 230;\n --ring-link-color: rgb(var(--ring-link-components)); /* #70b1e6 */\n --ring-error-components: 219, 88, 96;\n --ring-error-color: rgb(var(--ring-error-components)); /* #db5860 */\n --ring-warning-components: 237, 162, 0;\n --ring-warning-color: rgb(var(--ring-warning-components)); /* #eda200 */\n --ring-success-components: 71, 212, 100;\n --ring-success-color: rgb(var(--ring-success-components)); /* #47d464 */\n --ring-text-components: 187, 187, 187;\n --ring-text-color: rgb(var(--ring-text-components)); /* #bbb */\n --ring-active-text-components: 255, 255, 255;\n --ring-active-text-color: rgb(var(--ring-active-text-components)); /* #fff */\n --ring-heading-color: var(--ring-text-color);\n --ring-secondary-components: 128, 146, 157;\n --ring-secondary-color: rgb(var(--ring-secondary-components)); /* #80929d */\n --ring-disabled-components: 81, 95, 104;\n --ring-disabled-color: rgb(var(--ring-disabled-components)); /* #515F68 */\n\n /* Background */\n --ring-content-background-components: 35, 39, 43;\n --ring-content-background-color: rgb(var(--ring-content-background-components)); /* #23272b */\n --ring-popup-background-components: 17, 19, 20;\n --ring-popup-background-color: rgb(var(--ring-popup-background-components)); /* #111314 */\n --ring-sidebar-background-components: 40, 52, 61;\n --ring-sidebar-background-color: rgb(var(--ring-sidebar-background-components)); /* #28343d */\n --ring-selected-background-components: 6, 38, 64;\n --ring-selected-background-color: rgb(var(--ring-selected-background-components)); /* #062640 */\n --ring-hover-background-components: 11, 26, 38;\n --ring-hover-background-color: rgb(var(--ring-hover-background-components)); /* #0b1a26 */\n --ring-navigation-background-components: 17, 19, 20;\n --ring-navigation-background-color: rgb(var(--ring-navigation-background-components)); /* #111314 */\n --ring-tag-background-components: 62, 77, 89;\n --ring-tag-background-color: rgb(var(--ring-tag-background-components)); /* #3e4d59 */\n --ring-tag-hover-background-components: 51, 62, 71;\n --ring-tag-hover-background-color: rgb(var(--ring-tag-hover-background-components)); /* #333e47 */\n --ring-removed-background-components: 143, 82, 71;\n --ring-removed-background-color: rgb(var(--ring-removed-background-components)); /* #8f5247 */\n --ring-warning-background-components: 89, 61, 1;\n --ring-warning-background-color: rgb(var(--ring-warning-background-components)); /* #593d01 */\n --ring-added-background-components: 54, 89, 71;\n --ring-added-background-color: rgb(var(--ring-added-background-components)); /* #365947 */\n --ring-disabled-background-components: 44, 47, 51;\n --ring-disabled-background-color: rgb(var(--ring-disabled-background-components)); /* #2C2F33 */\n --ring-disabled-selected-background-components: 44, 47, 51;\n --ring-disabled-selected-background-color: rgb(var(--ring-disabled-selected-background-components)); /* #2C2F33 */\n --ring-button-danger-active-components: 38, 8, 10;\n --ring-button-danger-active-color: rgb(var(--ring-button-danger-active-components)); /* #26080a */\n --ring-button-primary-background-components: 0, 126, 229;\n --ring-button-primary-background-color: rgb(var(--ring-button-primary-background-components)); /* #007ee5 */\n --ring-table-loader-background-color: rgba(var(--ring-content-background-components), 0.5); /* #23272b80 */\n\n /* Code */\n --ring-code-background-components: 43, 43, 43;\n --ring-code-background-color: rgb(var(--ring-code-background-components)); /* #2b2b2b */\n --ring-code-components: 169, 183, 198;\n --ring-code-color: rgb(var(--ring-code-components)); /* #a9b7c6 */\n --ring-code-meta-components: 187, 181, 41;\n --ring-code-meta-color: rgb(var(--ring-code-meta-components)); /* #bbb529 */\n --ring-code-keyword-components: 204, 120, 50;\n --ring-code-keyword-color: rgb(var(--ring-code-keyword-components)); /* #cc7832 */\n --ring-code-tag-background-components: 43, 43, 43;\n --ring-code-tag-background-color: rgb(var(--ring-code-tag-background-components)); /* #2b2b2b */\n --ring-code-tag-components: 232, 191, 106;\n --ring-code-tag-color: rgb(var(--ring-code-tag-components)); /* #e8bf6a */\n --ring-code-tag-font-weight: normal;\n --ring-code-field-components: 152, 118, 170;\n --ring-code-field-color: rgb(var(--ring-code-tag-font-weight)); /* #9876aa */\n --ring-code-attribute-components: 186, 186, 186;\n --ring-code-attribute-color: rgb(var(--ring-code-attribute-components)); /* #bababa */\n --ring-code-number-components: 104, 151, 187;\n --ring-code-number-color: rgb(var(--ring-code-number-components)); /* #6897bb */\n --ring-code-string-components: 106, 135, 89;\n --ring-code-string-color: rgb(var(--ring-code-string-components)); /* #6a8759 */\n --ring-code-addition-components: 68, 113, 82;\n --ring-code-addition-color: rgb(var(--ring-code-addition-components)); /* #447152 */\n --ring-code-deletion-components: 101, 110, 118;\n --ring-code-deletion-color: rgb(var(--ring-code-deletion-components)); /* #656e76 */\n\n color-scheme: dark;\n}\n"],sourceRoot:""}]),a.locals={dark:"dark_d4a9"};const l=a},5066:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,'.icon_aaa7 {\n display: inline-block;\n\n fill: currentColor;\n}\n\n.glyph_f986 {\n display: inline-flex;\n\n margin-right: -1px;\n margin-left: -1px;\n\n pointer-events: none;\n}\n\n.glyph_f986[width="10"] {\n vertical-align: -1px;\n }\n\n.glyph_f986[width="14"] {\n margin-right: -2px;\n margin-left: 0;\n\n vertical-align: -3px;\n }\n\n.glyph_f986[width="16"] {\n vertical-align: -3px;\n }\n\n.glyph_f986[width="20"] {\n vertical-align: -2px;\n }\n\n.glyph_f986.compatibilityMode_d631 {\n width: 16px;\n height: 16px;\n margin-right: 0;\n margin-left: 0;\n }\n\n/* HACK: This media query hack makes styles applied for WebKit browsers only */\n/* stylelint-disable-next-line media-feature-name-no-vendor-prefix */\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n .glyph_f986 {\n width: auto; /* Safari size bug workaround, see https://youtrack.jetbrains.com/issue/RG-1983 */\n }\n}\n\n.gray_f6a8 {\n color: var(--ring-icon-secondary-color);\n}\n\n.hover_fc27 {\n color: var(--ring-icon-hover-color);\n}\n\n.green_bfb1 {\n color: var(--ring-icon-success-color);\n}\n\n.magenta_b045 {\n color: var(--ring-link-hover-color);\n}\n\n.red_a7ec {\n color: var(--ring-icon-error-color);\n}\n\n.blue_ec1e {\n color: var(--ring-main-color);\n}\n\n.white_c896 {\n color: var(--ring-white-text-color);\n}\n\n.loading_c5e2 {\n animation-name: icon-loading_fe22;\n animation-duration: 1200ms;\n animation-iteration-count: infinite;\n}\n\n@keyframes icon-loading_fe22 {\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.9);\n\n opacity: 0.5;\n }\n\n 100% {\n transform: scale(1);\n }\n}\n',"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/icon/icon.css"],names:[],mappings:"AAIA;EACE,qBAAqB;;EAErB,kBAAkB;AACpB;;AAEA;EACE,oBAAoB;;EAEpB,kBAAkB;EAClB,iBAAiB;;EAEjB,oBAAoB;AA2BtB;;AAzBE;IACE,oBAAoB;EACtB;;AAEA;IACE,kBAAkB;IAClB,cAAc;;IAEd,oBAAoB;EACtB;;AAEA;IACE,oBAAoB;EACtB;;AAEA;IACE,oBAAoB;EACtB;;AAEA;IACE,WAAqB;IACrB,YAAsB;IACtB,eAAe;IACf,cAAc;EAChB;;AAGF,8EAA8E;AAC9E,oEAAoE;AACpE;EACE;IACE,WAAW,EAAE,iFAAiF;EAChG;AACF;;AAEA;EACE,uCAAuC;AACzC;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,qCAAqC;AACvC;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,6BAA6B;AAC/B;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,iCAA4B;EAC5B,0BAA0B;EAC1B,mCAAmC;AACrC;;AAEA;EACE;IACE,mBAAmB;EACrB;;EAEA;IACE,qBAAqB;;IAErB,YAAY;EACd;;EAEA;IACE,mBAAmB;EACrB;AACF",sourcesContent:['@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n\n.icon {\n display: inline-block;\n\n fill: currentColor;\n}\n\n.glyph {\n display: inline-flex;\n\n margin-right: -1px;\n margin-left: -1px;\n\n pointer-events: none;\n\n &[width="10"] {\n vertical-align: -1px;\n }\n\n &[width="14"] {\n margin-right: -2px;\n margin-left: 0;\n\n vertical-align: -3px;\n }\n\n &[width="16"] {\n vertical-align: -3px;\n }\n\n &[width="20"] {\n vertical-align: -2px;\n }\n\n &.compatibilityMode {\n width: calc(unit * 2);\n height: calc(unit * 2);\n margin-right: 0;\n margin-left: 0;\n }\n}\n\n/* HACK: This media query hack makes styles applied for WebKit browsers only */\n/* stylelint-disable-next-line media-feature-name-no-vendor-prefix */\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n .glyph {\n width: auto; /* Safari size bug workaround, see https://youtrack.jetbrains.com/issue/RG-1983 */\n }\n}\n\n.gray {\n color: var(--ring-icon-secondary-color);\n}\n\n.hover {\n color: var(--ring-icon-hover-color);\n}\n\n.green {\n color: var(--ring-icon-success-color);\n}\n\n.magenta {\n color: var(--ring-link-hover-color);\n}\n\n.red {\n color: var(--ring-icon-error-color);\n}\n\n.blue {\n color: var(--ring-main-color);\n}\n\n.white {\n color: var(--ring-white-text-color);\n}\n\n.loading {\n animation-name: icon-loading;\n animation-duration: 1200ms;\n animation-iteration-count: infinite;\n}\n\n@keyframes icon-loading {\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.9);\n\n opacity: 0.5;\n }\n\n 100% {\n transform: scale(1);\n }\n}\n'],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`,icon:"icon_aaa7",glyph:"glyph_f986",compatibilityMode:"compatibilityMode_d631",gray:"gray_f6a8",hover:"hover_fc27",green:"green_bfb1",magenta:"magenta_b045",red:"red_a7ec",blue:"blue_ec1e",white:"white_c896",loading:"loading_c5e2","icon-loading":"icon-loading_fe22"};const u=s},8976:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,":root {\n --ring-input-xs: 96px;\n --ring-input-s: 96px;\n --ring-input-m: 240px;\n --ring-input-l: 400px;\n}\n\n/**\n * @name Input Sizes\n */\n\n/* XS */\n\n.ring-input-size_xs.ring-input-size_xs {\n display: inline-block;\n\n width: 96px;\n\n width: var(--ring-input-xs);\n}\n\n.ring-input-size_xs.ring-input-size_xs ~ .ring-error-bubble {\n left: 98px;\n left: calc(var(--ring-input-xs) + 2px);\n}\n\n/* S */\n\n.ring-input-size_s.ring-input-size_s {\n display: inline-block;\n\n width: 96px;\n\n width: var(--ring-input-s);\n}\n\n.ring-input-size_s.ring-input-size_s ~ .ring-error-bubble {\n left: 98px;\n left: calc(var(--ring-input-s) + 2px);\n}\n\n/* M */\n\n.ring-input-size_m.ring-input-size_m {\n display: inline-block;\n\n width: 240px;\n\n width: var(--ring-input-m);\n}\n\n.ring-input-size_m.ring-input-size_m ~ .ring-error-bubble {\n left: 242px;\n left: calc(var(--ring-input-m) + 2px);\n}\n\n.ring-input-size_md.ring-input-size_md {\n display: inline-block;\n\n width: 240px;\n\n width: var(--ring-input-m);\n}\n\n.ring-input-size_md.ring-input-size_md ~ .ring-error-bubble {\n left: 242px;\n left: calc(var(--ring-input-m) + 2px);\n}\n\n/* L */\n\n.ring-input-size_l.ring-input-size_l {\n display: inline-block;\n\n width: 400px;\n\n width: var(--ring-input-l);\n}\n\n.ring-input-size_l.ring-input-size_l ~ .ring-error-bubble {\n left: 402px;\n left: calc(var(--ring-input-l) + 2px);\n}\n\n.ring-input-height_s.ring-input-height_s {\n --ring-input-padding-block: 1px;\n}\n\n.ring-input-height_m.ring-input-height_m {\n --ring-input-padding-block: 3px;\n}\n\n.ring-input-height_l.ring-input-height_l {\n --ring-input-padding-block: 5px;\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/input-size/input-size.css"],names:[],mappings:"AAIA;EACE,qBAAgC;EAChC,oBAA+B;EAC/B,qBAA+B;EAC/B,qBAA+B;AACjC;;AAEA;;EAEE;;AAEF,OAAO;;AAEP;EACE,qBAAqB;;EAErB,WAA2B;;EAA3B,2BAA2B;AAC7B;;AAEA;EACE,UAAsC;EAAtC,sCAAsC;AACxC;;AAEA,MAAM;;AAEN;EACE,qBAAqB;;EAErB,WAA0B;;EAA1B,0BAA0B;AAC5B;;AAEA;EACE,UAAqC;EAArC,qCAAqC;AACvC;;AAEA,MAAM;;AAEN;EACE,qBAAqB;;EAErB,YAA0B;;EAA1B,0BAA0B;AAC5B;;AAEA;EACE,WAAqC;EAArC,qCAAqC;AACvC;;AAEA;EACE,qBAAqB;;EAErB,YAA0B;;EAA1B,0BAA0B;AAC5B;;AAEA;EACE,WAAqC;EAArC,qCAAqC;AACvC;;AAEA,MAAM;;AAEN;EACE,qBAAqB;;EAErB,YAA0B;;EAA1B,0BAA0B;AAC5B;;AAEA;EACE,WAAqC;EAArC,qCAAqC;AACvC;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,+BAA+B;AACjC",sourcesContent:['@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n\n:root {\n --ring-input-xs: calc(unit * 12);\n --ring-input-s: calc(unit * 12);\n --ring-input-m: calc(unit * 30);\n --ring-input-l: calc(unit * 50);\n}\n\n/**\n * @name Input Sizes\n */\n\n/* XS */\n\n:global(.ring-input-size_xs.ring-input-size_xs) {\n display: inline-block;\n\n width: var(--ring-input-xs);\n}\n\n:global(.ring-input-size_xs.ring-input-size_xs ~ .ring-error-bubble) {\n left: calc(var(--ring-input-xs) + 2px);\n}\n\n/* S */\n\n:global(.ring-input-size_s.ring-input-size_s) {\n display: inline-block;\n\n width: var(--ring-input-s);\n}\n\n:global(.ring-input-size_s.ring-input-size_s ~ .ring-error-bubble) {\n left: calc(var(--ring-input-s) + 2px);\n}\n\n/* M */\n\n:global(.ring-input-size_m.ring-input-size_m) {\n display: inline-block;\n\n width: var(--ring-input-m);\n}\n\n:global(.ring-input-size_m.ring-input-size_m ~ .ring-error-bubble) {\n left: calc(var(--ring-input-m) + 2px);\n}\n\n:global(.ring-input-size_md.ring-input-size_md) {\n display: inline-block;\n\n width: var(--ring-input-m);\n}\n\n:global(.ring-input-size_md.ring-input-size_md ~ .ring-error-bubble) {\n left: calc(var(--ring-input-m) + 2px);\n}\n\n/* L */\n\n:global(.ring-input-size_l.ring-input-size_l) {\n display: inline-block;\n\n width: var(--ring-input-l);\n}\n\n:global(.ring-input-size_l.ring-input-size_l ~ .ring-error-bubble) {\n left: calc(var(--ring-input-l) + 2px);\n}\n\n:global(.ring-input-height_s.ring-input-height_s) {\n --ring-input-padding-block: 1px;\n}\n\n:global(.ring-input-height_m.ring-input-height_m) {\n --ring-input-padding-block: 3px;\n}\n\n:global(.ring-input-height_l.ring-input-height_l) {\n --ring-input-padding-block: 5px;\n}\n'],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`};const u=s},8266:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>p});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=t(9892),u=a()(o());u.i(c.A),u.i(s.default),u.i(l.default,"",!0),u.push([e.id,'.outerContainer_cb70 {\n --ring-input-icon-offset: 20px;\n --ring-input-padding-inline: 8px;\n --ring-input-background-color: var(--ring-content-background-color);\n}\n\n.borderless_f79b {\n /* stylelint-disable-next-line length-zero-no-unit */\n --ring-input-padding-inline: 0px;\n}\n\n.container_ee33 {\n position: relative;\n\n box-sizing: border-box;\n\n font-size: var(--ring-font-size);\n line-height: var(--ring-line-height);\n}\n\n.container_ee33 * {\n box-sizing: border-box;\n }\n\n.input_f220 {\n --ring-input-padding-start: var(--ring-input-padding-inline);\n --ring-input-padding-end: var(--ring-input-padding-inline);\n\n width: 100%;\n\n margin: 0;\n padding-top: var(--ring-input-padding-block);\n padding-right: var(--ring-input-padding-end);\n padding-bottom: var(--ring-input-padding-block);\n padding-left: var(--ring-input-padding-start);\n\n transition: border-color var(--ring-ease);\n\n color: var(--ring-text-color);\n border: 1px solid var(--ring-borders-color);\n border-radius: var(--ring-border-radius);\n outline: none;\n background-color: var(--ring-input-background-color);\n\n font: inherit;\n\n caret-color: var(--ring-main-color);\n}\n\n[dir="rtl"] .input_f220 {\n padding-right: var(--ring-input-padding-start);\n padding-left: var(--ring-input-padding-end);\n }\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.input_f220:hover {\n transition: none;\n\n border-color: var(--ring-border-hover-color);\n }}\n\n.error_ff90 .input_f220 {\n border-color: var(--ring-icon-error-color);\n }\n\n.input_f220:focus {\n transition: none;\n\n border-color: var(--ring-main-color);\n }\n\n.input_f220[disabled] {\n color: var(--ring-disabled-color);\n border-color: var(--ring-border-disabled-color);\n background-color: var(--ring-disabled-background-color);\n\n -webkit-text-fill-color: var(--ring-disabled-color); /* Required for Safari, see RG-2063 for details */\n }\n\n/*\n Kill yellow/blue webkit autocomplete\n https://css-tricks.com/snippets/css/change-autocomplete-styles-webkit-browsers/\n */\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.input_f220:-webkit-autofill:hover {\n -webkit-transition: background-color 50000s ease-in-out 0s;\n transition: background-color 50000s ease-in-out 0s;\n }}\n\n.input_f220:-webkit-autofill,\n .input_f220:-webkit-autofill:focus {\n -webkit-transition: background-color 50000s ease-in-out 0s;\n transition: background-color 50000s ease-in-out 0s;\n }\n\n.borderless_f79b .input_f220 {\n border-color: transparent;\n background-color: transparent;\n}\n\n.withIcon_f066 .input_f220 {\n --ring-input-padding-start: calc(var(--ring-input-padding-inline) + var(--ring-input-icon-offset));\n}\n\n.clearable_fd1e .input_f220 {\n --ring-input-padding-end: calc(var(--ring-input-padding-inline) + var(--ring-input-icon-offset));\n}\n\n.icon_e49c {\n position: absolute;\n top: calc(var(--ring-input-padding-block) + 1px);\n left: var(--ring-input-padding-inline);\n\n pointer-events: none;\n\n color: var(--ring-icon-secondary-color);\n}\n\n[dir="rtl"] .icon_e49c {\n right: 8px;\n left: auto;\n }\n\n.clear_ffc3 {\n position: absolute;\n top: calc(var(--ring-input-padding-block) + 2px);\n right: var(--ring-input-padding-inline);\n\n height: auto;\n\n padding-right: 0;\n\n line-height: inherit;\n}\n\n.empty_cc0d .clear_ffc3 {\n display: none;\n }\n\n[dir="rtl"] .clear_ffc3 {\n right: auto;\n left: 8px;\n }\n\ntextarea.input_f220 {\n overflow: hidden;\n\n box-sizing: border-box;\n\n resize: none;\n}\n\n.input_f220::-moz-placeholder {\n color: var(--ring-disabled-color);\n}\n\n.input_f220::placeholder {\n color: var(--ring-disabled-color);\n}\n\n.input_f220::-webkit-search-cancel-button {\n -webkit-appearance: none;\n}\n\n.errorText_e447 {\n margin-top: 4px;\n\n color: var(--ring-error-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n\n.sizeS_c560 {\n width: 96px;\n}\n\n.sizeM_aee6 {\n width: 240px;\n}\n\n.sizeL_b0ca {\n width: 400px;\n}\n\n.sizeFULL_f4f9 {\n width: 100%;\n}\n\n.heightS_a68d {\n --ring-input-padding-block: 1px;\n}\n\n.heightM_bc35 {\n --ring-input-padding-block: 3px;\n}\n\n.heightL_f82d {\n --ring-input-padding-block: 5px;\n}\n',"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/input/input.css",""],names:[],mappings:"AAKA;EACE,8BAA0C;EAC1C,gCAAiC;EACjC,mEAAmE;AACrE;;AAEA;EACE,oDAAoD;EACpD,gCAAgC;AAClC;;AAEA;EACE,kBAAkB;;EAElB,sBAAsB;;EAEtB,gCAAgC;EAChC,oCAAoC;AAKtC;;AAHE;IACE,sBAAsB;EACxB;;AAGF;EACE,4DAA4D;EAC5D,0DAA0D;;EAE1D,WAAW;;EAEX,SAAS;EACT,4CAA4C;EAC5C,4CAA4C;EAC5C,+CAA+C;EAC/C,6CAA6C;;EAE7C,yCAAyC;;EAEzC,6BAA6B;EAC7B,2CAA2C;EAC3C,wCAAwC;EACxC,aAAa;EACb,oDAAoD;;EAEpD,aAAa;;EAEb,mCAAmC;AA0CrC;;AAxCE;IACE,8CAA8C;IAC9C,2CAA2C;EAC7C;;ACxDF,wGAAA;IAAA,iBAAA;;IAAA,6CAAA;GAAA,CAAA;;ADgEE;IACE,0CAA0C;EAC5C;;AAEA;IACE,gBAAgB;;IAEhB,oCAAoC;EACtC;;AAEA;IACE,iCAAiC;IACjC,+CAA+C;IAC/C,uDAAuD;;IAEvD,mDAAmD,EAAE,iDAAiD;EACxG;;AAEA;;;GAGC;;ACrFH,wGAAA;MAAA,2DAAA;MAAA,mDAAA;KAAA,CAAA;;ADuFI;;MAGE,0DAAkD;MAAlD,kDAAkD;IACpD;;AAIJ;EACE,yBAAyB;EACzB,6BAA6B;AAC/B;;AAEA;EACE,kGAAkG;AACpG;;AAEA;EACE,gGAAgG;AAClG;;AAEA;EACE,kBAAkB;EAClB,gDAAgD;EAChD,sCAAsC;;EAEtC,oBAAoB;;EAEpB,uCAAuC;AAMzC;;AAJE;IACE,UAAW;IACX,UAAU;EACZ;;AAGF;EACE,kBAAkB;EAClB,gDAAgD;EAChD,uCAAuC;;EAEvC,YAAY;;EAEZ,gBAAgB;;EAEhB,oBAAoB;AAUtB;;AARE;IACE,aAAa;EACf;;AAEA;IACE,WAAW;IACX,SAAU;EACZ;;AAGF;EACE,gBAAgB;;EAEhB,sBAAsB;;EAEtB,YAAY;AACd;;AAEA;EACE,iCAAiC;AACnC;;AAFA;EACE,iCAAiC;AACnC;;AAEA;EACE,wBAAwB;AAC1B;;AAEA;EACE,eAA0B;;EAE1B,8BAA8B;;EAE9B,wCAAwC;EACxC,2CAA2C;AAC7C;;AAEA;EACE,WAAsB;AACxB;;AAEA;EACE,YAAsB;AACxB;;AAEA;EACE,YAAsB;AACxB;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,+BAA+B;AACjC",sourcesContent:['@import "../global/variables.css";\n@import "../button/button.css";\n\n@value unit from "../global/global.css";\n\n.outerContainer {\n --ring-input-icon-offset: calc(unit * 2.5);\n --ring-input-padding-inline: unit;\n --ring-input-background-color: var(--ring-content-background-color);\n}\n\n.borderless {\n /* stylelint-disable-next-line length-zero-no-unit */\n --ring-input-padding-inline: 0px;\n}\n\n.container {\n position: relative;\n\n box-sizing: border-box;\n\n font-size: var(--ring-font-size);\n line-height: var(--ring-line-height);\n\n & * {\n box-sizing: border-box;\n }\n}\n\n.input {\n --ring-input-padding-start: var(--ring-input-padding-inline);\n --ring-input-padding-end: var(--ring-input-padding-inline);\n\n width: 100%;\n\n margin: 0;\n padding-top: var(--ring-input-padding-block);\n padding-right: var(--ring-input-padding-end);\n padding-bottom: var(--ring-input-padding-block);\n padding-left: var(--ring-input-padding-start);\n\n transition: border-color var(--ring-ease);\n\n color: var(--ring-text-color);\n border: 1px solid var(--ring-borders-color);\n border-radius: var(--ring-border-radius);\n outline: none;\n background-color: var(--ring-input-background-color);\n\n font: inherit;\n\n caret-color: var(--ring-main-color);\n\n [dir="rtl"] & {\n padding-right: var(--ring-input-padding-start);\n padding-left: var(--ring-input-padding-end);\n }\n\n &:hover {\n transition: none;\n\n border-color: var(--ring-border-hover-color);\n }\n\n .error & {\n border-color: var(--ring-icon-error-color);\n }\n\n &:focus {\n transition: none;\n\n border-color: var(--ring-main-color);\n }\n\n &[disabled] {\n color: var(--ring-disabled-color);\n border-color: var(--ring-border-disabled-color);\n background-color: var(--ring-disabled-background-color);\n\n -webkit-text-fill-color: var(--ring-disabled-color); /* Required for Safari, see RG-2063 for details */\n }\n\n /*\n Kill yellow/blue webkit autocomplete\n https://css-tricks.com/snippets/css/change-autocomplete-styles-webkit-browsers/\n */\n &:-webkit-autofill {\n &,\n &:hover,\n &:focus {\n transition: background-color 50000s ease-in-out 0s;\n }\n }\n}\n\n.borderless .input {\n border-color: transparent;\n background-color: transparent;\n}\n\n.withIcon .input {\n --ring-input-padding-start: calc(var(--ring-input-padding-inline) + var(--ring-input-icon-offset));\n}\n\n.clearable .input {\n --ring-input-padding-end: calc(var(--ring-input-padding-inline) + var(--ring-input-icon-offset));\n}\n\n.icon {\n position: absolute;\n top: calc(var(--ring-input-padding-block) + 1px);\n left: var(--ring-input-padding-inline);\n\n pointer-events: none;\n\n color: var(--ring-icon-secondary-color);\n\n [dir="rtl"] & {\n right: unit;\n left: auto;\n }\n}\n\n.clear {\n position: absolute;\n top: calc(var(--ring-input-padding-block) + 2px);\n right: var(--ring-input-padding-inline);\n\n height: auto;\n\n padding-right: 0;\n\n line-height: inherit;\n\n .empty & {\n display: none;\n }\n\n [dir="rtl"] & {\n right: auto;\n left: unit;\n }\n}\n\ntextarea.input {\n overflow: hidden;\n\n box-sizing: border-box;\n\n resize: none;\n}\n\n.input::placeholder {\n color: var(--ring-disabled-color);\n}\n\n.input::-webkit-search-cancel-button {\n -webkit-appearance: none;\n}\n\n.errorText {\n margin-top: calc(unit / 2);\n\n color: var(--ring-error-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n\n.sizeS {\n width: calc(unit * 12);\n}\n\n.sizeM {\n width: calc(unit * 30);\n}\n\n.sizeL {\n width: calc(unit * 50);\n}\n\n.sizeFULL {\n width: 100%;\n}\n\n.heightS {\n --ring-input-padding-block: 1px;\n}\n\n.heightM {\n --ring-input-padding-block: 3px;\n}\n\n.heightL {\n --ring-input-padding-block: 5px;\n}\n',null],sourceRoot:""}]),u.locals={unit:`${l.default.locals.unit}`,outerContainer:"outerContainer_cb70",borderless:"borderless_f79b",container:"container_ee33",input:"input_f220",error:"error_ff90",withIcon:"withIcon_f066",clearable:"clearable_fd1e",icon:"icon_e49c",clear:"clear_ffc3",empty:"empty_cc0d",errorText:"errorText_e447",sizeS:"sizeS_c560",sizeM:"sizeM_aee6",sizeL:"sizeL_b0ca",sizeFULL:"sizeFULL_f4f9",heightS:"heightS_a68d",heightM:"heightM_bc35",heightL:"heightL_f82d"};const p=u},6960:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>s});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(5280),c=a()(o());c.i(l.A),c.push([e.id,".link_e6e5 {\n cursor: pointer;\n transition: color var(--ring-fast-ease);\n\n color: var(--ring-link-color);\n\n outline: none;\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.link_e6e5:hover {\n transition: none;\n\n color: var(--ring-link-hover-color);\n }}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.link_e6e5:hover {\n text-decoration: none;\n }}\n\n.link_e6e5 {\n text-decoration: none;\n }\n\n.link_e6e5.hover_bed7 {\n transition: none;\n\n color: var(--ring-link-hover-color);\n }\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.link_e6e5:hover .inner_e3ba {\n border-width: 0;\n border-bottom: 2px solid;\n border-image-source: linear-gradient(currentcolor 50%, transparent 50%);\n border-image-slice: 0 0 100% 0;\n }}\n\n.link_e6e5.active_f804 {\n color: inherit;\n }\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.link_e6e5.compatibilityUnderlineMode_e7a0:hover {\n text-decoration: underline;\n\n /* stylelint-disable-next-line selector-max-specificity */\n }\n .link_e6e5.compatibilityUnderlineMode_e7a0:hover .inner_e3ba {\n border: none;\n }}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.link_e6e5.pseudo_d9ae:hover {\n text-decoration: none;\n\n /* stylelint-disable-next-line selector-max-specificity */\n }\n .link_e6e5.pseudo_d9ae:hover .inner_e3ba {\n border: none;\n }}\n\n.link_e6e5:focus-visible {\n box-shadow: 0 0 0 2px var(--ring-border-hover-color);\n }\n\n@media (min-resolution: 2dppx) {@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.link_e6e5:hover .inner_e3ba {\n border-bottom-width: 1px;\n }}\n}\n\n.text_e98a {\n border-radius: var(--ring-border-radius);\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.inherit_d267:not(:hover) {\n color: inherit;\n}}\n\n.pseudo_d9ae {\n margin: 0;\n padding: 0;\n\n text-align: left;\n\n border: 0;\n\n background: transparent;\n\n font: inherit;\n}\n\n.pseudo_d9ae::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n }\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/link/link.css",""],names:[],mappings:"AAEA;EACE,eAAe;EACf,uCAAuC;;EAEvC,6BAA6B;;EA2C7B,aAAa;AAKf;;ACtDA,wGAAA;IAAA,iBAAA;;IAAA,oCAAA;GAAA,CAAA;;AAAA,wGAAA;IAAA,sBAAA;GAAA,CAAA;;ADQE;IAEE,qBAAqB;EACvB;;AAEA;IAEE,gBAAgB;;IAEhB,mCAAmC;EACrC;;AClBF,wGAAA;IAAA,gBAAA;IAAA,yBAAA;IAAA,wEAAA;IAAA,+BAAA;GAAA,CAAA;;AD2BE;IACE,cAAc;EAChB;;AC7BF,wGAAA;IAAA,2BAAA;;IAAA,0DAAA;GAAA;IAAA;MAAA,aAAA;KAAA,CAAA;;AAAA,wGAAA;IAAA,sBAAA;;IAAA,0DAAA;GAAA;IAAA;MAAA,aAAA;KAAA,CAAA;;ADmDE;IACE,oDAAoD;EACtD;;AAGF,gCCxDA,wGAAA;IAAA,yBAAA;GAAA,CAAA;AD4DA;;AAEA;EACE,wCAAwC;AAC1C;;AChEA,wGAAA;EAAA,eAAA;CAAA,CAAA;;ADsEA;EACE,SAAS;EACT,UAAU;;EAEV,gBAAgB;;EAEhB,SAAS;;EAET,uBAAuB;;EAEvB,aAAa;AAOf;;AALE;IACE,UAAU;;IAEV,SAAS;EACX",sourcesContent:['@import "../global/variables.css";\n\n.link {\n cursor: pointer;\n transition: color var(--ring-fast-ease);\n\n color: var(--ring-link-color);\n\n &,\n &:hover {\n text-decoration: none;\n }\n\n &:hover,\n &.hover {\n transition: none;\n\n color: var(--ring-link-hover-color);\n }\n\n &:hover .inner {\n border-width: 0;\n border-bottom: 2px solid;\n border-image-source: linear-gradient(currentcolor 50%, transparent 50%);\n border-image-slice: 0 0 100% 0;\n }\n\n &.active {\n color: inherit;\n }\n\n &.compatibilityUnderlineMode:hover {\n text-decoration: underline;\n\n /* stylelint-disable-next-line selector-max-specificity */\n & .inner {\n border: none;\n }\n }\n\n &.pseudo:hover {\n text-decoration: none;\n\n /* stylelint-disable-next-line selector-max-specificity */\n & .inner {\n border: none;\n }\n }\n\n outline: none;\n\n &:focus-visible {\n box-shadow: 0 0 0 2px var(--ring-border-hover-color);\n }\n}\n\n@media (min-resolution: 2dppx) {\n .link:hover .inner {\n border-bottom-width: 1px;\n }\n}\n\n.text {\n border-radius: var(--ring-border-radius);\n}\n\n.inherit:not(:hover) {\n color: inherit;\n}\n\n.pseudo {\n margin: 0;\n padding: 0;\n\n text-align: left;\n\n border: 0;\n\n background: transparent;\n\n font: inherit;\n\n &::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n }\n}\n',null],sourceRoot:""}]),c.locals={link:"link_e6e5",hover:"hover_bed7",inner:"inner_e3ba",active:"active_f804",compatibilityUnderlineMode:"compatibilityUnderlineMode_e7a0",pseudo:"pseudo_d9ae",text:"text_e98a",inherit:"inherit_d267"};const s=c},480:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,'.list_a01c {\n position: relative;\n\n z-index: 1;\n\n border-radius: var(--ring-border-radius);\n\n line-height: normal;\n}\n\n.simpleInner_a4f8 {\n overflow: auto;\n}\n\n.scrolling_a910 {\n pointer-events: none;\n}\n\n.separator_c26e {\n display: block;\n\n min-height: 8px;\n\n margin-top: 8px;\n padding: 0 16px 1px;\n\n text-align: right;\n white-space: nowrap;\n\n color: var(--ring-secondary-color);\n border-top: 1px solid var(--ring-line-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lower);\n}\n\n.separator_first_ec9e {\n margin-top: 0;\n padding-top: 0;\n\n border: none;\n}\n\n.item_eadd {\n display: block;\n\n box-sizing: border-box;\n\n width: 100%;\n\n text-align: left;\n vertical-align: bottom;\n white-space: nowrap;\n text-decoration: none;\n\n outline: none;\n\n font-size: var(--ring-font-size);\n}\n\n.item_eadd.item_eadd {\n padding: 3px 16px 5px;\n\n line-height: 24px;\n}\n\n.itemContainer_f365 {\n position: relative;\n}\n\n.compact_efa8 {\n line-height: 16px;\n}\n\n.error_aa15 {\n cursor: default;\n}\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.error_aa15:hover {\n color: var(--ring-error-color);\n }}\n\n/* Override ring-link */\n\n.error_aa15,\n .error_aa15:focus,\n .error_aa15:visited {\n color: var(--ring-error-color);\n }\n\n.add_a8da {\n padding: 8px 16px;\n\n line-height: 32px;\n}\n\n.top_c4d5 {\n display: flex;\n align-items: baseline;\n flex-direction: row;\n}\n\n.left_ea6b {\n align-self: center;\n flex-shrink: 0;\n}\n\n.label_dac9 {\n overflow: hidden;\n flex-grow: 1;\n flex-shrink: 1;\n\n text-align: left;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n[dir="rtl"] .label_dac9 {\n text-align: right;\n direction: ltr;\n }\n\n.description_efcc {\n overflow: hidden;\n flex-shrink: 100;\n\n padding-left: 8px;\n\n text-align: right;\n white-space: nowrap;\n text-overflow: ellipsis;\n\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n font-weight: 400;\n line-height: var(--ring-line-height-lowest);\n}\n\n.right_df77 {\n display: flex;\n align-items: center;\n align-self: center;\n flex-direction: row;\n flex-shrink: 0;\n}\n\n.details_a2b7 {\n margin-bottom: 6px;\n\n white-space: normal;\n\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n\n.padded_a74d {\n margin-left: 20px;\n}\n\n/* Override :last-child */\n.hint_d29d.hint_d29d {\n margin-bottom: 0;\n\n border-top: 1px solid var(--ring-line-color);\n background-color: var(--ring-sidebar-background-color);\n\n font-size: var(--ring-font-size-smaller);\n}\n\n.action_d10e {\n cursor: pointer;\n\n color: var(--ring-text-color);\n}\n\n/* override link */\n.actionLink_a4c7.actionLink_a4c7 {\n transition: none;\n}\n\n.hover_a4cd:not(.error_aa15) {\n background-color: var(--ring-selected-background-color);\n}\n\n.icon_f1f3 {\n display: inline-block;\n\n width: 20px;\n height: 20px;\n margin-left: 16px;\n\n background-repeat: no-repeat;\n background-position: center;\n\n background-size: contain;\n}\n\n.highlight_e4dd {\n color: var(--ring-link-hover-color);\n}\n\n.service_a4fc {\n color: var(--ring-secondary-color);\n}\n\n.glyph_dfd5 {\n float: left;\n\n width: 20px;\n\n margin-right: 8px;\n\n color: var(--ring-icon-secondary-color);\n}\n\n.avatar_f258 {\n\n top: 0;\n\n height: 20px;\n\n -o-object-fit: cover;\n\n object-fit: cover;\n -o-object-position: center;\n object-position: center;\n}\n\n.rightGlyph_fb77 {\n\n float: right;\n\n margin-right: 0;\n margin-left: 16px;\n}\n\n.checkboxContainer_c949 {\n position: absolute;\n top: 7px;\n left: 19px;\n\n width: 20px;\n height: 20px;\n margin-right: 8px;\n}\n\n.compact_efa8 .checkboxContainer_c949 {\n top: 0;\n\n width: 16px;\n height: 16px;\n}\n\n.title_e1bf {\n display: block;\n\n margin-top: 10px;\n margin-bottom: 6px;\n padding: 8px 16px 0;\n\n text-align: left;\n}\n\n[dir="rtl"] .title_e1bf {\n text-align: right;\n direction: ltr;\n }\n\n.title_first_ac55 {\n margin-top: 0;\n}\n\n.text_fe0e {\n letter-spacing: 1.5px;\n text-transform: uppercase;\n\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n}\n\n.fade_d35c {\n position: absolute;\n bottom: 0;\n\n width: 100%;\n height: 24px;\n\n pointer-events: none;\n\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--ring-content-background-color));\n}\n\n.disabled_c3d8 {\n pointer-events: none;\n\n color: var(--ring-disabled-color);\n}\n',"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/list/list.css",""],names:[],mappings:"AAKA;EACE,kBAAkB;;EAElB,UAAU;;EAEV,wCAAwC;;EAExC,mBAAmB;AACrB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,oBAAoB;AACtB;;AAEA;EACE,cAAc;;EAEd,eAAuB;;EAEvB,eAAuB;EACvB,mBAA6B;;EAE7B,iBAAiB;EACjB,mBAAmB;;EAEnB,kCAAkC;EAClC,4CAA4C;;EAE5C,wCAAwC;EACxC,0CAA0C;AAC5C;;AAEA;EACE,aAAa;EACb,cAAc;;EAEd,YAAY;AACd;;AAEA;EACE,cAAc;;EAEd,sBAAsB;;EAEtB,WAAW;;EAEX,gBAAgB;EAChB,sBAAsB;EACtB,mBAAmB;EACnB,qBAAqB;;EAErB,aAAa;;EAEb,gCAAgC;AAClC;;AAEA;EACE,qBAA+B;;EAE/B,iBAA2B;AAC7B;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,iBAA2B;AAC7B;;AAEA;EACE,eAAe;AASjB;;ACzFA,wGAAA;IAAA,+BAAA;GAAA,CAAA;;ADkFE,uBAAuB;;AACvB;;;IAIE,8BAA8B;EAChC;;AAGF;EACE,iBAA4B;;EAE5B,iBAA2B;AAC7B;;AAEA;EACE,aAAa;EACb,qBAAqB;EACrB,mBAAmB;AACrB;;AAEA;EACE,kBAAkB;EAClB,cAAc;AAChB;;AAEA;EACE,gBAAgB;EAChB,YAAY;EACZ,cAAc;;EAEd,gBAAgB;EAChB,mBAAmB;EACnB,uBAAuB;AAMzB;;AAJE;IACE,iBAAiB;IACjB,cAAc;EAChB;;AAGF;EACE,gBAAgB;EAChB,gBAAgB;;EAEhB,iBAAkB;;EAElB,iBAAiB;EACjB,mBAAmB;EACnB,uBAAuB;;EAEvB,kCAAkC;;EAElC,wCAAwC;EACxC,gBAAgB;EAChB,2CAA2C;AAC7C;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,kBAAkB;EAClB,mBAAmB;EACnB,cAAc;AAChB;;AAEA;EACE,kBAAkB;;EAElB,mBAAmB;;EAEnB,kCAAkC;;EAElC,wCAAwC;EACxC,2CAA2C;AAC7C;;AAEA;EACE,iBAAiB;AACnB;;AAEA,yBAAyB;AACzB;EACE,gBAAgB;;EAEhB,4CAA4C;EAC5C,sDAAsD;;EAEtD,wCAAwC;AAC1C;;AAEA;EACE,eAAe;;EAEf,6BAA6B;AAC/B;;AAEA,kBAAkB;AAClB;EACE,gBAAgB;AAClB;;AAEA;EACE,uDAAuD;AACzD;;AAEA;EACE,qBAAqB;;EAErB,WAAW;EACX,YAAY;EACZ,iBAA2B;;EAE3B,4BAA4B;EAC5B,2BAA2B;;EAE3B,wBAAwB;AAC1B;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,kCAAkC;AACpC;;AAEA;EACE,WAAW;;EAEX,WAAW;;EAEX,iBAAkB;;EAElB,uCAAuC;AACzC;;AAEA;;EAGE,MAAM;;EAEN,YAAY;;EAEZ,oBAAiB;;KAAjB,iBAAiB;EACjB,0BAAuB;KAAvB,uBAAuB;AACzB;;AAEA;;EAGE,YAAY;;EAEZ,eAAe;EACf,iBAA2B;AAC7B;;AAEA;EACE,kBAAkB;EAClB,QAAQ;EACR,UAAU;;EAEV,WAAW;EACX,YAAY;EACZ,iBAAkB;AACpB;;AAEA;EACE,MAAM;;EAEN,WAAqB;EACrB,YAAsB;AACxB;;AAEA;EACE,cAAc;;EAEd,gBAAgB;EAChB,kBAAkB;EAClB,mBAAqC;;EAErC,gBAAgB;AAMlB;;AAJE;IACE,iBAAiB;IACjB,cAAc;EAChB;;AAGF;EACE,aAAa;AACf;;AAEA;EACE,qBAAqB;EACrB,yBAAyB;;EAEzB,kCAAkC;;EAElC,wCAAwC;AAC1C;;AAEA;EACE,kBAAkB;EAClB,SAAS;;EAET,WAAW;EACX,YAAsB;;EAEtB,oBAAoB;;EAEpB,oGAAoG;AACtG;;AAEA;EACE,oBAAoB;;EAEpB,iCAAiC;AACnC",sourcesContent:['@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n@value listSpacing: unit;\n\n.list {\n position: relative;\n\n z-index: 1;\n\n border-radius: var(--ring-border-radius);\n\n line-height: normal;\n}\n\n.simpleInner {\n overflow: auto;\n}\n\n.scrolling {\n pointer-events: none;\n}\n\n.separator {\n display: block;\n\n min-height: listSpacing;\n\n margin-top: listSpacing;\n padding: 0 calc(unit * 2) 1px;\n\n text-align: right;\n white-space: nowrap;\n\n color: var(--ring-secondary-color);\n border-top: 1px solid var(--ring-line-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lower);\n}\n\n.separator_first {\n margin-top: 0;\n padding-top: 0;\n\n border: none;\n}\n\n.item {\n display: block;\n\n box-sizing: border-box;\n\n width: 100%;\n\n text-align: left;\n vertical-align: bottom;\n white-space: nowrap;\n text-decoration: none;\n\n outline: none;\n\n font-size: var(--ring-font-size);\n}\n\n.item.item {\n padding: 3px calc(unit * 2) 5px;\n\n line-height: calc(unit * 3);\n}\n\n.itemContainer {\n position: relative;\n}\n\n.compact {\n line-height: calc(unit * 2);\n}\n\n.error {\n cursor: default;\n\n /* Override ring-link */\n &,\n &:hover,\n &:focus,\n &:visited {\n color: var(--ring-error-color);\n }\n}\n\n.add {\n padding: unit calc(2 * unit);\n\n line-height: calc(4 * unit);\n}\n\n.top {\n display: flex;\n align-items: baseline;\n flex-direction: row;\n}\n\n.left {\n align-self: center;\n flex-shrink: 0;\n}\n\n.label {\n overflow: hidden;\n flex-grow: 1;\n flex-shrink: 1;\n\n text-align: left;\n white-space: nowrap;\n text-overflow: ellipsis;\n\n [dir="rtl"] & {\n text-align: right;\n direction: ltr;\n }\n}\n\n.description {\n overflow: hidden;\n flex-shrink: 100;\n\n padding-left: unit;\n\n text-align: right;\n white-space: nowrap;\n text-overflow: ellipsis;\n\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n font-weight: 400;\n line-height: var(--ring-line-height-lowest);\n}\n\n.right {\n display: flex;\n align-items: center;\n align-self: center;\n flex-direction: row;\n flex-shrink: 0;\n}\n\n.details {\n margin-bottom: 6px;\n\n white-space: normal;\n\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n\n.padded {\n margin-left: 20px;\n}\n\n/* Override :last-child */\n.hint.hint {\n margin-bottom: 0;\n\n border-top: 1px solid var(--ring-line-color);\n background-color: var(--ring-sidebar-background-color);\n\n font-size: var(--ring-font-size-smaller);\n}\n\n.action {\n cursor: pointer;\n\n color: var(--ring-text-color);\n}\n\n/* override link */\n.actionLink.actionLink {\n transition: none;\n}\n\n.hover:not(.error) {\n background-color: var(--ring-selected-background-color);\n}\n\n.icon {\n display: inline-block;\n\n width: 20px;\n height: 20px;\n margin-left: calc(unit * 2);\n\n background-repeat: no-repeat;\n background-position: center;\n\n background-size: contain;\n}\n\n.highlight {\n color: var(--ring-link-hover-color);\n}\n\n.service {\n color: var(--ring-secondary-color);\n}\n\n.glyph {\n float: left;\n\n width: 20px;\n\n margin-right: unit;\n\n color: var(--ring-icon-secondary-color);\n}\n\n.avatar {\n composes: glyph;\n\n top: 0;\n\n height: 20px;\n\n object-fit: cover;\n object-position: center;\n}\n\n.rightGlyph {\n composes: glyph;\n\n float: right;\n\n margin-right: 0;\n margin-left: calc(unit * 2);\n}\n\n.checkboxContainer {\n position: absolute;\n top: 7px;\n left: 19px;\n\n width: 20px;\n height: 20px;\n margin-right: unit;\n}\n\n.compact .checkboxContainer {\n top: 0;\n\n width: calc(unit * 2);\n height: calc(unit * 2);\n}\n\n.title {\n display: block;\n\n margin-top: 10px;\n margin-bottom: 6px;\n padding: listSpacing calc(unit * 2) 0;\n\n text-align: left;\n\n [dir="rtl"] & {\n text-align: right;\n direction: ltr;\n }\n}\n\n.title_first {\n margin-top: 0;\n}\n\n.text {\n letter-spacing: 1.5px;\n text-transform: uppercase;\n\n color: var(--ring-secondary-color);\n\n font-size: var(--ring-font-size-smaller);\n}\n\n.fade {\n position: absolute;\n bottom: 0;\n\n width: 100%;\n height: calc(unit * 3);\n\n pointer-events: none;\n\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--ring-content-background-color));\n}\n\n.disabled {\n pointer-events: none;\n\n color: var(--ring-disabled-color);\n}\n',null],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`,listSpacing:"8px",list:"list_a01c",simpleInner:"simpleInner_a4f8",scrolling:"scrolling_a910",separator:"separator_c26e",separator_first:"separator_first_ec9e",item:"item_eadd",itemContainer:"itemContainer_f365",compact:"compact_efa8",error:"error_aa15",add:"add_a8da",top:"top_c4d5",left:"left_ea6b",label:"label_dac9",description:"description_efcc",right:"right_df77",details:"details_a2b7",padded:"padded_a74d",hint:"hint_d29d",action:"action_d10e",actionLink:"actionLink_a4c7",hover:"hover_a4cd",icon:"icon_f1f3",highlight:"highlight_e4dd",service:"service_a4fc",glyph:"glyph_dfd5",avatar:"avatar_f258 glyph_dfd5",rightGlyph:"rightGlyph_fb77 glyph_dfd5",checkboxContainer:"checkboxContainer_c949",title:"title_e1bf",title_first:"title_first_ac55",text:"text_fe0e",fade:"fade_d35c",disabled:"disabled_c3d8"};const u=s},1586:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>p});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9173),c=t(9106),s=t(5280),u=a()(o());u.i(s.A),u.i(l.A,"",!0),u.i(c.default,"",!0),u.push([e.id,`:root {\n /* stylelint-disable-next-line color-no-hex */\n --ring-loader-inline-stops: #ff00eb, #bd3bff, #008eff, #58ba00, #f48700, #ff00eb;\n}\n\n.${l.A.locals.dark},\n.ring-ui-theme-dark {\n /* stylelint-disable-next-line color-no-hex */\n --ring-loader-inline-stops: #ff2eef, #d178ff, #289fff, #88d444, #ffe000, #ff2eef;\n}\n\n@keyframes spin_ad60 {\n 0% {\n transform: rotate(0);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse_c906 {\n 0% {\n transform: scale(1);\n }\n\n 100% {\n transform: scale(1.41667);\n }\n}\n\n.loader_d294,\n.ring-loader-inline {\n /* needed for better backward-compatibility */\n\n position: relative;\n\n display: inline-block;\n\n overflow: hidden;\n\n transform: rotate(0);\n animation: spin_ad60 1s linear infinite;\n vertical-align: -3px;\n\n border-radius: 8px;\n}\n\n.loader_d294,\n .ring-loader-inline,\n .loader_d294::after,\n .ring-loader-inline::after {\n transform-origin: 50% 50%;\n }\n\n.loader_d294::after, .ring-loader-inline::after {\n display: block;\n\n width: 16px;\n height: 16px;\n\n content: "";\n animation: pulse_c906 0.85s cubic-bezier(0.68, 0, 0.74, 0.74) infinite alternate;\n\n background-image: conic-gradient(#ff00eb, #bd3bff, #008eff, #58ba00, #f48700, #ff00eb);\n\n background-image: conic-gradient(var(--ring-loader-inline-stops));\n -webkit-mask-image: radial-gradient(8px, transparent 71.875%, var(--ring-content-background-color) 71.875%);\n mask-image: radial-gradient(8px, transparent 71.875%, var(--ring-content-background-color) 71.875%);\n }\n\n.children_ece6 {\n margin-left: 4px;\n}\n`,"",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/loader-inline/loader-inline.css"],names:[],mappings:"AAKA;EACE,6CAA6C;EAC7C,gFAAgF;AAClF;;AAEA;;EAEE,6CAA6C;EAC7C,gFAAgF;AAClF;;AAEA;EACE;IACE,oBAAoB;EACtB;;EAEA;IACE,yBAAyB;EAC3B;AACF;;AAEA;EACE;IACE,mBAAmB;EACrB;;EAEA;IACE,yBAA+B;EACjC;AACF;;AAEA;;EAEE,6CAA6C;;EAE7C,kBAAkB;;EAElB,qBAAqB;;EAErB,gBAAgB;;EAEhB,oBAAoB;EACpB,uCAAkC;EAClC,oBAAoB;;EAEpB,kBAAmB;AAmBrB;;AAjBE;;;;IAEE,yBAAyB;EAC3B;;AAEA;IACE,cAAc;;IAEd,WAAqB;IACrB,YAAsB;;IAEtB,WAAW;IACX,gFAA2E;;IAE3E,sFAAiE;;IAAjE,iEAAiE;IACjE,2GAAoG;YAApG,mGAAoG;EACtG;;AAGF;EACE,gBAA2B;AAC7B",sourcesContent:['@import "../global/variables.css";\n\n@value dark from "../global/variables_dark.css";\n@value unit from "../global/global.css";\n\n:root {\n /* stylelint-disable-next-line color-no-hex */\n --ring-loader-inline-stops: #ff00eb, #bd3bff, #008eff, #58ba00, #f48700, #ff00eb;\n}\n\n.dark,\n:global(.ring-ui-theme-dark) {\n /* stylelint-disable-next-line color-no-hex */\n --ring-loader-inline-stops: #ff2eef, #d178ff, #289fff, #88d444, #ffe000, #ff2eef;\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse {\n 0% {\n transform: scale(1);\n }\n\n 100% {\n transform: scale(calc(17 / 12));\n }\n}\n\n.loader,\n:global(.ring-loader-inline) {\n /* needed for better backward-compatibility */\n\n position: relative;\n\n display: inline-block;\n\n overflow: hidden;\n\n transform: rotate(0);\n animation: spin 1s linear infinite;\n vertical-align: -3px;\n\n border-radius: unit;\n\n &,\n &::after {\n transform-origin: 50% 50%;\n }\n\n &::after {\n display: block;\n\n width: calc(unit * 2);\n height: calc(unit * 2);\n\n content: "";\n animation: pulse 0.85s cubic-bezier(0.68, 0, 0.74, 0.74) infinite alternate;\n\n background-image: conic-gradient(var(--ring-loader-inline-stops));\n mask-image: radial-gradient(unit, transparent 71.875%, var(--ring-content-background-color) 71.875%);\n }\n}\n\n.children {\n margin-left: calc(unit / 2);\n}\n'],sourceRoot:""}]),u.locals={dark:`${l.A.locals.dark}`,unit:`${c.default.locals.unit}`,loader:"loader_d294",spin:"spin_ad60",pulse:"pulse_c906",children:"children_ece6"};const p=u},8890:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,".popup_f35e {\n\n position: fixed;\n z-index: var(--ring-overlay-z-index);\n top: -100vh;\n left: -100vw;\n\n overflow-y: auto;\n\n box-sizing: border-box;\n\n border: 1px solid var(--ring-popup-border-color);\n border-radius: var(--ring-border-radius);\n\n background-color: var(--ring-popup-background-color);\n box-shadow: var(--ring-popup-shadow);\n}\n\n.hidden_c587 {\n display: none;\n}\n\n.showing_b07a {\n opacity: 0;\n}\n\n.attached_ea95 {\n border-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/popup/popup.css"],names:[],mappings:"AAEA;;EAGE,eAAe;EACf,oCAAoC;EACpC,WAAW;EACX,YAAY;;EAEZ,gBAAgB;;EAEhB,sBAAsB;;EAEtB,gDAAgD;EAChD,wCAAwC;;EAExC,oDAAoD;EACpD,oCAAoC;AACtC;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,UAAU;AACZ;;AAEA;EACE,aAAa;EACb,yBAAyB;EACzB,0BAA0B;AAC5B",sourcesContent:['@import "../global/variables.css";\n\n.popup {\n composes: font from "../global/global.css";\n\n position: fixed;\n z-index: var(--ring-overlay-z-index);\n top: -100vh;\n left: -100vw;\n\n overflow-y: auto;\n\n box-sizing: border-box;\n\n border: 1px solid var(--ring-popup-border-color);\n border-radius: var(--ring-border-radius);\n\n background-color: var(--ring-popup-background-color);\n box-shadow: var(--ring-popup-shadow);\n}\n\n.hidden {\n display: none;\n}\n\n.showing {\n opacity: 0;\n}\n\n.attached {\n border-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n'],sourceRoot:""}]),s.locals={popup:`popup_f35e ${l.default.locals.font}`,hidden:"hidden_c587",showing:"showing_b07a",attached:"attached_ea95"};const u=s},4481:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,'@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.filterWithTagsFocused_ffbf.filterWithTagsFocused_ffbf:hover {\n border-color: var(--ring-main-color);\n}}\n\n.filterWithTags_ff56 {\n overflow: hidden;\n\n margin: 16px 8px 0;\n padding: 3px;\n\n text-align: left;\n\n border: 1px solid var(--ring-borders-color);\n border-radius: var(--ring-border-radius);\n}\n\n.filterWithTags_ff56 .filterWrapper_dd63 {\n padding-right: 0;\n padding-left: 0;\n\n border-bottom: none;\n }\n\n@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.filterWithTags_ff56:hover {\n border-color: var(--ring-border-hover-color);\n }}\n\n.filterWithTagsFocused_ffbf {\n border-color: var(--ring-main-color);\n}\n\n.filterWithTagsInput_ab94 {\n padding: 0;\n\n border: none;\n}\n\n.filter_deda {\n flex-grow: 1;\n\n width: 0;\n}\n\n.popup_f21d {\n overscroll-behavior: contain;\n}\n\n.filterWrapper_dd63 {\n position: relative;\n\n display: flex;\n\n margin: 0;\n padding-right: 8px;\n padding-left: 44px;\n\n border-bottom: 1px solid var(--ring-borders-color);\n}\n\n[dir="rtl"] .filterWrapper_dd63 {\n padding-right: 44px;\n padding-left: 8px;\n }\n\n.filterIcon_b648 {\n position: absolute;\n top: 7px;\n left: 16px;\n\n color: var(--ring-icon-color);\n}\n\n[dir="rtl"] .filterIcon_b648 {\n right: 16px;\n left: auto;\n }\n\n.bottomLine_c880 {\n text-align: center;\n}\n\n.bottomLine_c880.bottomLineOverItem_dfb4 {\n position: relative;\n\n z-index: var(--ring-fixed-z-index);\n\n margin-top: -36px;\n\n background-color: var(--ring-content-background-color);\n }\n\n.message_ccdf {\n display: inline-block;\n\n margin: 8px 0;\n padding: 0 16px;\n}\n\n.selectAll_ff5e {\n display: flex;\n justify-content: space-between;\n\n padding: 8px 16px 0;\n}\n',"",{version:3,sources:["","webpack://./node_modules/@jetbrains/ring-ui/components/select/select-popup.css"],names:[],mappings:"AAAA,wGAAA;EAAA,qCAAA;CAAA,CAAA;;ACIA;EACE,gBAAgB;;EAEhB,kBAA6B;EAC7B,YAAY;;EAEZ,gBAAgB;;EAEhB,2CAA2C;EAC3C,wCAAwC;AAY1C;;AAVE;IACE,gBAAgB;IAChB,eAAe;;IAEf,mBAAmB;EACrB;;ADpBF,wGAAA;IAAA,6CAAA;GAAA,CAAA;;AC2BA;EAEE,oCAAoC;AACtC;;AAEA;EACE,UAAU;;EAEV,YAAY;AACd;;AAEA;EACE,YAAY;;EAEZ,QAAQ;AACV;;AAEA;EACE,4BAA4B;AAC9B;;AAEA;EACE,kBAAkB;;EAElB,aAAa;;EAEb,SAAS;EACT,kBAAmB;EACnB,kBAA8B;;EAE9B,kDAAkD;AAMpD;;AAJE;IACE,mBAA+B;IAC/B,iBAAkB;EACpB;;AAGF;EACE,kBAAkB;EAClB,QAAQ;EACR,UAAoB;;EAEpB,6BAA6B;AAM/B;;AAJE;IACE,WAAqB;IACrB,UAAU;EACZ;;AAGF;EACE,kBAAkB;AAWpB;;AATE;IACE,kBAAkB;;IAElB,kCAAkC;;IAElC,iBAAiB;;IAEjB,sDAAsD;EACxD;;AAGF;EACE,qBAAqB;;EAErB,aAAc;EACd,eAAyB;AAC3B;;AAEA;EACE,aAAa;EACb,8BAA8B;;EAE9B,mBAAmB;AACrB",sourcesContent:[null,'@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n\n.filterWithTags {\n overflow: hidden;\n\n margin: calc(unit * 2) unit 0;\n padding: 3px;\n\n text-align: left;\n\n border: 1px solid var(--ring-borders-color);\n border-radius: var(--ring-border-radius);\n\n & .filterWrapper {\n padding-right: 0;\n padding-left: 0;\n\n border-bottom: none;\n }\n\n &:hover {\n border-color: var(--ring-border-hover-color);\n }\n}\n\n.filterWithTagsFocused,\n.filterWithTagsFocused.filterWithTagsFocused:hover {\n border-color: var(--ring-main-color);\n}\n\n.filterWithTagsInput {\n padding: 0;\n\n border: none;\n}\n\n.filter {\n flex-grow: 1;\n\n width: 0;\n}\n\n.popup {\n overscroll-behavior: contain;\n}\n\n.filterWrapper {\n position: relative;\n\n display: flex;\n\n margin: 0;\n padding-right: unit;\n padding-left: calc(unit * 5.5);\n\n border-bottom: 1px solid var(--ring-borders-color);\n\n [dir="rtl"] & {\n padding-right: calc(unit * 5.5);\n padding-left: unit;\n }\n}\n\n.filterIcon {\n position: absolute;\n top: 7px;\n left: calc(unit * 2);\n\n color: var(--ring-icon-color);\n\n [dir="rtl"] & {\n right: calc(unit * 2);\n left: auto;\n }\n}\n\n.bottomLine {\n text-align: center;\n\n &.bottomLineOverItem {\n position: relative;\n\n z-index: var(--ring-fixed-z-index);\n\n margin-top: -36px;\n\n background-color: var(--ring-content-background-color);\n }\n}\n\n.message {\n display: inline-block;\n\n margin: unit 0;\n padding: 0 calc(2 * unit);\n}\n\n.selectAll {\n display: flex;\n justify-content: space-between;\n\n padding: 8px 16px 0;\n}\n'],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`,filterWithTagsFocused:"filterWithTagsFocused_ffbf",filterWithTags:"filterWithTags_ff56",filterWrapper:"filterWrapper_dd63",filterWithTagsInput:"filterWithTagsInput_ab94",filter:"filter_deda",popup:"popup_f21d",filterIcon:"filterIcon_b648",bottomLine:"bottomLine_c880",bottomLineOverItem:"bottomLineOverItem_dfb4",message:"message_ccdf",selectAll:"selectAll_ff5e"};const u=s},2636:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>p});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(9892),s=t(5280),u=a()(o());u.i(s.A),u.i(l.default,"",!0),u.i(c.default,"",!0),u.push([e.id,'@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.select_e2a5:hover .value_b3a3,\n.select_e2a5:hover .icons_c4a9 {\n transition: none;\n\n color: var(--ring-main-color);\n}}\n\n.select_e2a5 {\n position: relative;\n\n display: inline-block;\n\n white-space: nowrap;\n\n color: var(--ring-text-color);\n}\n\n.toolbar_d3be {\n border-top: 1px solid var(--ring-line-color);\n}\n\n.button_ef00 {\n width: 100%;\n padding: 0;\n\n text-align: left;\n}\n\n[dir="rtl"] .button_ef00 {\n text-align: right;\n direction: ltr;\n }\n\n.toolbar_d3be .button_ef00 {\n height: 32px;\n margin: 8px 0;\n }\n\n.button_ef00.buttonSpaced_f316 {\n padding: 0 16px;\n }\n\n.icons_c4a9 {\n position: absolute;\n top: 0;\n right: 5px;\n bottom: 0;\n\n transition: color var(--ring-ease);\n\n color: var(--ring-icon-secondary-color);\n\n line-height: normal;\n}\n\n.inputMode_a6f6 .icons_c4a9 {\n font-size: var(--ring-font-size);\n }\n\n.selectedIcon_a62c {\n\n position: relative;\n top: 3px;\n\n display: inline-block;\n\n width: 16px;\n height: 16px;\n margin: 0 4px;\n\n background-repeat: no-repeat;\n background-position: center;\n\n background-size: contain;\n}\n\n.clearIcon_c750 {\n padding: 0 3px;\n\n vertical-align: -2px;\n}\n\n.sizeS_e8c3 {\n width: 96px;\n}\n\n.sizeM_ed34 {\n width: 240px;\n}\n\n.sizeL_c053 {\n width: 400px;\n}\n\n.sizeFULL_c585 {\n width: 100%;\n}\n\n.sizeAUTO_a07c {\n max-width: 100%;\n}\n\n.buttonMode_dd69 {\n position: relative;\n\n cursor: pointer;\n}\n\n.value_b3a3 {\n\n display: inline-block;\n\n box-sizing: border-box;\n width: 100%;\n height: 33px;\n padding: 0 0 3px;\n\n cursor: pointer;\n transition: color var(--ring-ease), border-color var(--ring-ease);\n text-align: left;\n vertical-align: top;\n\n color: var(--ring-text-color);\n\n border: none;\n border-bottom: 1px solid var(--ring-borders-color);\n outline: none;\n background: transparent;\n}\n\n.value_b3a3:focus {\n border-color: var(--ring-main-color);\n }\n\n.value_b3a3.open_f1b1,\n .value_b3a3:active {\n border-color: transparent;\n }\n\n.value_b3a3::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n outline: 0;\n }\n\n.buttonContainer_b2b9 {\n position: relative;\n\n font-size: var(--ring-font-size);\n}\n\n.buttonValue_b4ad {\n\n display: block;\n\n width: 100%;\n padding-left: 8px;\n\n text-align: left;\n vertical-align: -8px;\n}\n\n.buttonValue_b4ad:focus-visible {\n box-shadow: inset 0 0 0 1px var(--ring-main-color);\n}\n\n.buttonValueOpen_d9d3.buttonValueOpen_d9d3 {\n box-shadow: inset 0 0 0 1px var(--ring-main-color);\n}\n\n.buttonValueEmpty_e6b3.buttonValueEmpty_e6b3 {\n color: var(--ring-disabled-color);\n}\n\n.heightS_b721 .buttonValue_b4ad {\n font-size: var(--ring-font-size);\n}\n\n.label_e56f {\n position: relative;\n\n color: var(--ring-secondary-color);\n}\n\n:focus-visible + .icons_c4a9,\n.value_b3a3:focus,\n.value_b3a3:focus + .icons_c4a9,\n.open_f1b1,\n.open_f1b1 + .icons_c4a9,\n.buttonValueOpen_d9d3 + .icons_c4a9 {\n transition: none;\n\n color: var(--ring-main-color);\n}\n\n.disabled_b89f {\n pointer-events: none;\n\n color: var(--ring-disabled-color);\n}\n\n.disabled_b89f .value_b3a3 {\n color: var(--ring-disabled-color);\n border-bottom-style: dashed;\n }\n\n.avatar_f4dd {\n margin-right: 4px;\n\n vertical-align: -5px;\n}\n\n.popup_acec {\n min-width: 240px;\n max-width: 320px;\n}\n\n.chevron_d51f.chevron_d51f {\n padding: 0 3px;\n\n transition: none;\n vertical-align: -1px;\n\n color: inherit;\n}\n\n.chevronIcon_f6cf.chevronIcon_f6cf {\n transition: none;\n\n color: inherit;\n}\n',"",{version:3,sources:["","webpack://./node_modules/@jetbrains/ring-ui/components/select/select.css"],names:[],mappings:"AAAA,wGAAA;;EAAA,iBAAA;;EAAA,8BAAA;CAAA,CAAA;;ACKA;EACE,kBAAkB;;EAElB,qBAAqB;;EAErB,mBAAmB;;EAEnB,6BAA6B;AAC/B;;AAEA;EACE,4CAA4C;AAC9C;;AAEA;EACE,WAAW;EACX,UAAU;;EAEV,gBAAgB;AAelB;;AAbE;IACE,iBAAiB;IACjB,cAAc;EAChB;;AAEA;IACE,YAAsB;IACtB,aAAc;EAChB;;AAEA;IACE,eAAyB;EAC3B;;AAGF;EACE,kBAAkB;EAClB,MAAM;EACN,UAAU;EACV,SAAS;;EAET,kCAAkC;;EAElC,uCAAuC;;EAEvC,mBAAmB;AAKrB;;AAHE;IACE,gCAAgC;EAClC;;AAGF;;EAGE,kBAAkB;EAClB,QAAQ;;EAER,qBAAqB;;EAErB,WAAqB;EACrB,YAAsB;EACtB,aAAa;;EAEb,4BAA4B;EAC5B,2BAA2B;;EAE3B,wBAAwB;AAC1B;;AAEA;EACE,cAAc;;EAEd,oBAAoB;AACtB;;AAEA;EACE,WAAsB;AACxB;;AAEA;EACE,YAAsB;AACxB;;AAEA;EACE,YAAsB;AACxB;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,kBAAkB;;EAElB,eAAe;AACjB;;AAEA;;EAIE,qBAAqB;;EAErB,sBAAsB;EACtB,WAAW;EACX,YAA4B;EAC5B,gBAAgB;;EAEhB,eAAe;EACf,iEAAiE;EACjE,gBAAgB;EAChB,mBAAmB;;EAEnB,6BAA6B;;EAE7B,YAAY;EACZ,kDAAkD;EAClD,aAAa;EACb,uBAAuB;AAiBzB;;AAfE;IACE,oCAAoC;EACtC;;AAEA;;IAEE,yBAAyB;EAC3B;;AAEA;IACE,UAAU;;IAEV,SAAS;IACT,UAAU;EACZ;;AAGF;EACE,kBAAkB;;EAElB,gCAAgC;AAClC;;AAEA;;EAGE,cAAc;;EAEd,WAAW;EACX,iBAAkB;;EAElB,gBAAgB;EAChB,oBAA8B;AAChC;;AAEA;EACE,kDAAgD;AAClD;;AAEA;EACE,kDAAgD;AAClD;;AAEA;EACE,iCAAiC;AACnC;;AAEA;EACE,gCAAgC;AAClC;;AAEA;EACE,kBAAkB;;EAElB,kCAAkC;AACpC;;AAEA;;;;;;EAQE,gBAAgB;;EAEhB,6BAA6B;AAC/B;;AAEA;EACE,oBAAoB;;EAEpB,iCAAiC;AAMnC;;AAJE;IACE,iCAAiC;IACjC,2BAA2B;EAC7B;;AAGF;EACE,iBAAiB;;EAEjB,oBAAoB;AACtB;;AAEA;EACE,gBAA0B;EAC1B,gBAA0B;AAC5B;;AAEA;EACE,cAAc;;EAEd,gBAAgB;EAChB,oBAAoB;;EAEpB,cAAc;AAChB;;AAEA;EACE,gBAAgB;;EAEhB,cAAc;AAChB",sourcesContent:[null,'@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n@value button-shadow from "../button/button.css";\n\n.select {\n position: relative;\n\n display: inline-block;\n\n white-space: nowrap;\n\n color: var(--ring-text-color);\n}\n\n.toolbar {\n border-top: 1px solid var(--ring-line-color);\n}\n\n.button {\n width: 100%;\n padding: 0;\n\n text-align: left;\n\n [dir="rtl"] & {\n text-align: right;\n direction: ltr;\n }\n\n .toolbar & {\n height: calc(4 * unit);\n margin: unit 0;\n }\n\n &.buttonSpaced {\n padding: 0 calc(2 * unit);\n }\n}\n\n.icons {\n position: absolute;\n top: 0;\n right: 5px;\n bottom: 0;\n\n transition: color var(--ring-ease);\n\n color: var(--ring-icon-secondary-color);\n\n line-height: normal;\n\n .inputMode & {\n font-size: var(--ring-font-size);\n }\n}\n\n.selectedIcon {\n composes: resetButton from "../global/global.css";\n\n position: relative;\n top: 3px;\n\n display: inline-block;\n\n width: calc(2 * unit);\n height: calc(2 * unit);\n margin: 0 4px;\n\n background-repeat: no-repeat;\n background-position: center;\n\n background-size: contain;\n}\n\n.clearIcon {\n padding: 0 3px;\n\n vertical-align: -2px;\n}\n\n.sizeS {\n width: calc(unit * 12);\n}\n\n.sizeM {\n width: calc(unit * 30);\n}\n\n.sizeL {\n width: calc(unit * 50);\n}\n\n.sizeFULL {\n width: 100%;\n}\n\n.sizeAUTO {\n max-width: 100%;\n}\n\n.buttonMode {\n position: relative;\n\n cursor: pointer;\n}\n\n.value {\n composes: ellipsis from "../global/global.css";\n composes: font from "../global/global.css";\n\n display: inline-block;\n\n box-sizing: border-box;\n width: 100%;\n height: calc(unit * 4 + 1px);\n padding: 0 0 3px;\n\n cursor: pointer;\n transition: color var(--ring-ease), border-color var(--ring-ease);\n text-align: left;\n vertical-align: top;\n\n color: var(--ring-text-color);\n\n border: none;\n border-bottom: 1px solid var(--ring-borders-color);\n outline: none;\n background: transparent;\n\n &:focus {\n border-color: var(--ring-main-color);\n }\n\n &.open,\n &:active {\n border-color: transparent;\n }\n\n &::-moz-focus-inner {\n padding: 0;\n\n border: 0;\n outline: 0;\n }\n}\n\n.buttonContainer {\n position: relative;\n\n font-size: var(--ring-font-size);\n}\n\n.buttonValue {\n composes: ellipsis from "../global/global.css";\n\n display: block;\n\n width: 100%;\n padding-left: unit;\n\n text-align: left;\n vertical-align: calc(0 - unit);\n}\n\n.buttonValue:focus-visible {\n box-shadow: button-shadow var(--ring-main-color);\n}\n\n.buttonValueOpen.buttonValueOpen {\n box-shadow: button-shadow var(--ring-main-color);\n}\n\n.buttonValueEmpty.buttonValueEmpty {\n color: var(--ring-disabled-color);\n}\n\n.heightS .buttonValue {\n font-size: var(--ring-font-size);\n}\n\n.label {\n position: relative;\n\n color: var(--ring-secondary-color);\n}\n\n.select:hover .value,\n.select:hover .icons,\n:focus-visible + .icons,\n.value:focus,\n.value:focus + .icons,\n.open,\n.open + .icons,\n.buttonValueOpen + .icons {\n transition: none;\n\n color: var(--ring-main-color);\n}\n\n.disabled {\n pointer-events: none;\n\n color: var(--ring-disabled-color);\n\n & .value {\n color: var(--ring-disabled-color);\n border-bottom-style: dashed;\n }\n}\n\n.avatar {\n margin-right: 4px;\n\n vertical-align: -5px;\n}\n\n.popup {\n min-width: calc(unit * 30);\n max-width: calc(unit * 40);\n}\n\n.chevron.chevron {\n padding: 0 3px;\n\n transition: none;\n vertical-align: -1px;\n\n color: inherit;\n}\n\n.chevronIcon.chevronIcon {\n transition: none;\n\n color: inherit;\n}\n'],sourceRoot:""}]),u.locals={unit:`${l.default.locals.unit}`,"button-shadow":`${c.default.locals["button-shadow"]}`,select:"select_e2a5",value:`value_b3a3 ${l.default.locals.ellipsis} ${l.default.locals.font}`,icons:"icons_c4a9",toolbar:"toolbar_d3be",button:"button_ef00",buttonSpaced:"buttonSpaced_f316",inputMode:"inputMode_a6f6",selectedIcon:`selectedIcon_a62c ${l.default.locals.resetButton}`,clearIcon:"clearIcon_c750",sizeS:"sizeS_e8c3",sizeM:"sizeM_ed34",sizeL:"sizeL_c053",sizeFULL:"sizeFULL_c585",sizeAUTO:"sizeAUTO_a07c",buttonMode:"buttonMode_dd69",open:"open_f1b1",buttonContainer:"buttonContainer_b2b9",buttonValue:`buttonValue_b4ad ${l.default.locals.ellipsis}`,buttonValueOpen:"buttonValueOpen_d9d3",buttonValueEmpty:"buttonValueEmpty_e6b3",heightS:"heightS_b721",label:"label_e56f",disabled:"disabled_b89f",avatar:"avatar_f4dd",popup:"popup_acec",chevron:"chevron_d51f",chevronIcon:"chevronIcon_f6cf"};const p=u},8102:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>s});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(5280),c=a()(o());c.i(l.A),c.push([e.id,".trapButton_c32e {\n position: absolute;\n left: -9999px;\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/tab-trap/tab-trap.css"],names:[],mappings:"AAEA;EACE,kBAAkB;EAClB,aAAa;AACf",sourcesContent:['@import "../global/variables.css";\n\n.trapButton {\n position: absolute;\n left: -9999px;\n}\n'],sourceRoot:""}]),c.locals={trapButton:"trapButton_c32e"};const s=c},4561:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,'@media (hover: hover), (-moz-touch-enabled: 0), (-ms-high-contrast: none), (-ms-high-contrast: active) {.tag_b7aa:hover,\n.tagAngled_c869:hover::before {\n transition: none;\n\n background-color: var(--ring-tag-hover-background-color);\n}}\n\n.tag_b7aa {\n\n position: relative;\n z-index: 1;\n\n display: inline-flex;\n\n box-sizing: border-box;\n max-width: 100%;\n height: 20px;\n\n padding: 0 8px;\n\n cursor: pointer;\n\n vertical-align: top;\n\n color: var(--ring-text-color);\n\n border: none;\n border-radius: var(--ring-border-radius);\n\n font-size: 12px;\n line-height: var(--ring-line-height);\n}\n\n.tag_b7aa,\n.tagAngled_c869::before {\n transition: background-color var(--ring-ease);\n\n background-color: var(--ring-tag-background-color);\n}\n\n.withRemove_c0a5 {\n padding-right: 22px;\n}\n\n.container_cb34 {\n position: relative;\n\n display: inline-block;\n\n max-width: calc(100% - 4px);\n\n margin-right: 4px;\n\n white-space: nowrap;\n}\n\n.focused_fd92,\n.tag_b7aa:focus-visible {\n position: relative;\n\n outline: none;\n box-shadow: 0 0 0 2px var(--ring-border-hover-color);\n}\n\n.focused_fd92,\n.focused_fd92.tagAngled_c869::before,\n.tag_b7aa:focus-visible,\n.tagAngled_c869:focus-visible::before {\n transition: none;\n\n background-color: var(--ring-tag-hover-background-color);\n}\n\n.tagAngled_c869 {\n /* it needs to fix vertical alignment broken by "overflow: hidden". Remove this class, when IE11 will be deprecated */\n\n margin-bottom: -5px !important;\n\n margin-left: 8px;\n padding-left: 4px;\n\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.tagAngled_c869::before {\n position: absolute;\n z-index: -1;\n top: 0;\n left: 0;\n\n box-sizing: border-box;\n width: 12px;\n height: 12px;\n\n content: "";\n transform: scaleY(1.177) rotate(45deg);\n transform-origin: 0 0;\n\n border: none;\n }\n\n.tagAngled_c869.focused_fd92,\n .tagAngled_c869:focus {\n box-shadow: 0 0 0 1px var(--ring-border-hover-color) inset, 0 0 0 1px var(--ring-border-hover-color);\n }\n\n.tagAngled_c869:focus::before {\n box-shadow:\n 1px -1px var(--ring-border-hover-color) inset,\n -0.8px 0.8px 0 0.5px var(--ring-border-hover-color);\n }\n\n.content_a838 {\n}\n\n.disabled_b740.tag_b7aa,\n.disabled_b740.tagAngled_c869::before {\n pointer-events: none;\n\n color: var(--ring-disabled-color);\n background-color: var(--ring-disabled-background-color);\n}\n\n.remove_eff8 {\n position: absolute;\n z-index: 1;\n top: 2px;\n right: 0;\n\n height: auto;\n padding: 0 4px;\n\n line-height: 16px;\n}\n\n.removeIcon_accf.removeIcon_accf {\n color: var(--ring-icon-secondary-color);\n}\n\n.icon_e877 {\n margin-right: 6px;\n\n color: var(--ring-icon-secondary-color);\n}\n\n.icon_e877 svg {\n vertical-align: -3px;\n }\n\n.avatarContainer_ee1b {\n display: inline-block;\n overflow: hidden;\n\n box-sizing: border-box;\n width: 20px;\n height: 20px;\n margin-right: 4px;\n margin-left: -8px;\n\n vertical-align: top;\n\n border-top-left-radius: var(--ring-border-radius);\n border-bottom-left-radius: var(--ring-border-radius);\n}\n\n.customIcon_ac93 {\n max-width: 16px;\n max-height: 16px;\n\n margin-right: 4px;\n\n vertical-align: bottom;\n}\n\n.avatarIcon_a8ff {\n width: 20px;\n\n margin-right: -4px;\n\n -o-object-fit: contain;\n\n object-fit: contain;\n -o-object-position: center;\n object-position: center;\n}\n',"",{version:3,sources:["","webpack://./node_modules/@jetbrains/ring-ui/components/tag/tag.css"],names:[],mappings:"AAAA,wGAAA;;EAAA,iBAAA;;EAAA,yDAAA;CAAA,CAAA;;ACKA;;EAGE,kBAAkB;EAClB,UAAU;;EAEV,oBAAoB;;EAEpB,sBAAsB;EACtB,eAAe;EACf,YAAkB;;EAElB,cAAe;;EAEf,eAAe;;EAEf,mBAAmB;;EAEnB,6BAA6B;;EAE7B,YAAY;EACZ,wCAAwC;;EAExC,eAAe;EACf,oCAAoC;AACtC;;AAEA;;EAEE,6CAA6C;;EAE7C,kDAAkD;AACpD;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,kBAAkB;;EAElB,qBAAqB;;EAErB,2BAAgC;;EAEhC,iBAA4B;;EAE5B,mBAAmB;AACrB;;AAEA;;EAEE,kBAAkB;;EAElB,aAAa;EACb,oDAAoD;AACtD;;AAEA;;;;EAME,gBAAgB;;EAEhB,wDAAwD;AAC1D;;AAEA;EACE,qHAAqH;;EAErH,8BAA8B;;EAE9B,gBAAiB;EACjB,iBAA4B;;EAE5B,yBAAyB;EACzB,4BAA4B;AA6B9B;;AA3BE;IACE,kBAAkB;IAClB,WAAW;IACX,MAAM;IACN,OAAO;;IAEP,sBAAsB;IACtB,WAAW;IACX,YAAY;;IAEZ,WAAW;IACX,sCAAsC;IACtC,qBAAqB;;IAErB,YAAY;EACd;;AAEA;;IAEE,oGAAoG;EACtG;;AAEA;IACE;;yDAEqD;EACvD;;AAGF;AAEA;;AAEA;;EAEE,oBAAoB;;EAEpB,iCAAiC;EACjC,uDAAuD;AACzD;;AAEA;EACE,kBAAkB;EAClB,UAAU;EACV,QAAQ;EACR,QAAQ;;EAER,YAAY;EACZ,cAAyB;;EAEzB,iBAA2B;AAC7B;;AAEA;EACE,uCAAuC;AACzC;;AAEA;EACE,iBAAiB;;EAEjB,uCAAuC;AAKzC;;AAHE;IACE,oBAAoB;EACtB;;AAGF;EACE,qBAAqB;EACrB,gBAAgB;;EAEhB,sBAAsB;EACtB,WAAiB;EACjB,YAAkB;EAClB,iBAA4B;EAC5B,iBAA2B;;EAE3B,mBAAmB;;EAEnB,iDAAiD;EACjD,oDAAoD;AACtD;;AAEA;EACE,eAAyB;EACzB,gBAA0B;;EAE1B,iBAA4B;;EAE5B,sBAAsB;AACxB;;AAEA;EACE,WAAiB;;EAEjB,kBAAkB;;EAElB,sBAAmB;;KAAnB,mBAAmB;EACnB,0BAAuB;KAAvB,uBAAuB;AACzB",sourcesContent:[null,'@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n@value max-height: 20px;\n\n.tag {\n composes: resetButton from "../global/global.css";\n\n position: relative;\n z-index: 1;\n\n display: inline-flex;\n\n box-sizing: border-box;\n max-width: 100%;\n height: max-height;\n\n padding: 0 unit;\n\n cursor: pointer;\n\n vertical-align: top;\n\n color: var(--ring-text-color);\n\n border: none;\n border-radius: var(--ring-border-radius);\n\n font-size: 12px;\n line-height: var(--ring-line-height);\n}\n\n.tag,\n.tagAngled::before {\n transition: background-color var(--ring-ease);\n\n background-color: var(--ring-tag-background-color);\n}\n\n.withRemove {\n padding-right: 22px;\n}\n\n.container {\n position: relative;\n\n display: inline-block;\n\n max-width: calc(100% - unit / 2);\n\n margin-right: calc(unit / 2);\n\n white-space: nowrap;\n}\n\n.focused,\n.tag:focus-visible {\n position: relative;\n\n outline: none;\n box-shadow: 0 0 0 2px var(--ring-border-hover-color);\n}\n\n.focused,\n.focused.tagAngled::before,\n.tag:focus-visible,\n.tagAngled:focus-visible::before,\n.tag:hover,\n.tagAngled:hover::before {\n transition: none;\n\n background-color: var(--ring-tag-hover-background-color);\n}\n\n.tagAngled {\n /* it needs to fix vertical alignment broken by "overflow: hidden". Remove this class, when IE11 will be deprecated */\n\n margin-bottom: -5px !important;\n\n margin-left: unit;\n padding-left: calc(unit / 2);\n\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n\n &::before {\n position: absolute;\n z-index: -1;\n top: 0;\n left: 0;\n\n box-sizing: border-box;\n width: 12px;\n height: 12px;\n\n content: "";\n transform: scaleY(1.177) rotate(45deg);\n transform-origin: 0 0;\n\n border: none;\n }\n\n &.focused,\n &:focus {\n box-shadow: 0 0 0 1px var(--ring-border-hover-color) inset, 0 0 0 1px var(--ring-border-hover-color);\n }\n\n &:focus::before {\n box-shadow:\n 1px -1px var(--ring-border-hover-color) inset,\n -0.8px 0.8px 0 0.5px var(--ring-border-hover-color);\n }\n}\n\n.content {\n composes: ellipsis from "../global/global.css";\n}\n\n.disabled.tag,\n.disabled.tagAngled::before {\n pointer-events: none;\n\n color: var(--ring-disabled-color);\n background-color: var(--ring-disabled-background-color);\n}\n\n.remove {\n position: absolute;\n z-index: 1;\n top: 2px;\n right: 0;\n\n height: auto;\n padding: 0 calc(unit / 2);\n\n line-height: calc(unit * 2);\n}\n\n.removeIcon.removeIcon {\n color: var(--ring-icon-secondary-color);\n}\n\n.icon {\n margin-right: 6px;\n\n color: var(--ring-icon-secondary-color);\n\n & svg {\n vertical-align: -3px;\n }\n}\n\n.avatarContainer {\n display: inline-block;\n overflow: hidden;\n\n box-sizing: border-box;\n width: max-height;\n height: max-height;\n margin-right: calc(unit / 2);\n margin-left: calc(0 - unit);\n\n vertical-align: top;\n\n border-top-left-radius: var(--ring-border-radius);\n border-bottom-left-radius: var(--ring-border-radius);\n}\n\n.customIcon {\n max-width: calc(unit * 2);\n max-height: calc(unit * 2);\n\n margin-right: calc(unit / 2);\n\n vertical-align: bottom;\n}\n\n.avatarIcon {\n width: max-height;\n\n margin-right: -4px;\n\n object-fit: contain;\n object-position: center;\n}\n'],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`,"max-height":"20px",tag:`tag_b7aa ${l.default.locals.resetButton}`,tagAngled:"tagAngled_c869",withRemove:"withRemove_c0a5",container:"container_cb34",focused:"focused_fd92",content:`content_a838 ${l.default.locals.ellipsis}`,disabled:"disabled_b740",remove:"remove_eff8",removeIcon:"removeIcon_accf",icon:"icon_e877",avatarContainer:"avatarContainer_ee1b",customIcon:"customIcon_ac93",avatarIcon:"avatarIcon_a8ff"};const u=s},6162:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>s});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(5280),c=a()(o());c.i(l.A),c.push([e.id,".text_f1dc {\n color: var(--ring-text-color);\n}\n\n.sizeS_b3aa {\n font-size: var(--ring-font-size-smaller);\n}\n\n.sizeM_ae72 {\n font-size: var(--ring-font-size);\n}\n\n.sizeL_f259 {\n font-size: var(--ring-font-size-larger);\n}\n\n.info_c0a4 {\n color: var(--ring-secondary-color);\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/text/text.css"],names:[],mappings:"AAEA;EACE,6BAA6B;AAC/B;;AAEA;EACE,wCAAwC;AAC1C;;AAEA;EACE,gCAAgC;AAClC;;AAEA;EACE,uCAAuC;AACzC;;AAEA;EACE,kCAAkC;AACpC",sourcesContent:['@import "../global/variables.css";\n\n.text {\n color: var(--ring-text-color);\n}\n\n.sizeS {\n font-size: var(--ring-font-size-smaller);\n}\n\n.sizeM {\n font-size: var(--ring-font-size);\n}\n\n.sizeL {\n font-size: var(--ring-font-size-larger);\n}\n\n.info {\n color: var(--ring-secondary-color);\n}\n'],sourceRoot:""}]),c.locals={text:"text_f1dc",sizeS:"sizeS_b3aa",sizeM:"sizeM_ae72",sizeL:"sizeL_f259",info:"info_c0a4"};const s=c},938:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(1404),o=t.n(r),i=t(7156),a=t.n(i),l=t(9106),c=t(5280),s=a()(o());s.i(c.A),s.i(l.default,"",!0),s.push([e.id,".tooltip_fbfb {\n max-width: 400px;\n padding: 8px;\n\n text-align: left;\n\n color: var(--ring-text-color);\n}\n\n.long_b7a5 {\n padding: 8px 12px;\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n","",{version:3,sources:["webpack://./node_modules/@jetbrains/ring-ui/components/tooltip/tooltip.css"],names:[],mappings:"AAIA;EACE,gBAA0B;EAC1B,YAAa;;EAEb,gBAAgB;;EAEhB,6BAA6B;AAC/B;;AAEA;EACE,iBAA8B;;EAE9B,wCAAwC;EACxC,2CAA2C;AAC7C",sourcesContent:['@import "../global/variables.css";\n\n@value unit from "../global/global.css";\n\n.tooltip {\n max-width: calc(unit * 50);\n padding: unit;\n\n text-align: left;\n\n color: var(--ring-text-color);\n}\n\n.long {\n padding: unit calc(unit * 1.5);\n\n font-size: var(--ring-font-size-smaller);\n line-height: var(--ring-line-height-lowest);\n}\n'],sourceRoot:""}]),s.locals={unit:`${l.default.locals.unit}`,tooltip:"tooltip_fbfb",long:"long_b7a5"};const u=s},7156:e=>{"use strict";e.exports=function(e){var n=[];return n.toString=function(){return this.map((function(n){var t="",r=void 0!==n[5];return n[4]&&(t+="@supports (".concat(n[4],") {")),n[2]&&(t+="@media ".concat(n[2]," {")),r&&(t+="@layer".concat(n[5].length>0?" ".concat(n[5]):""," {")),t+=e(n),r&&(t+="}"),n[2]&&(t+="}"),n[4]&&(t+="}"),t})).join("")},n.i=function(e,t,r,o,i){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(r)for(var l=0;l0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=i),t&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=t):u[2]=t),o&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=o):u[4]="".concat(o)),n.push(u))}},n}},1404:e=>{"use strict";e.exports=function(e){var n=e[1],t=e[3];if(!t)return n;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(t)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),i="/*# ".concat(o," */");return[n].concat([i]).join("\n")}return[n].join("\n")}},4504:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(7222);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},9102:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(9892);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},6860:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(1866);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},3912:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(5486);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},8764:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(6506);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},6620:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(9106);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},9468:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(5066);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},274:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(8976);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},5924:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(8266);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},7826:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(6960);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},1914:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(480);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},8130:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(1586);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},1564:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(8890);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},5103:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(4481);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},3006:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(2636);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},9344:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(8102);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},4512:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(4561);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},6932:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(6162);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},8132:(e,n,t)=>{var r=t(8298),o=t(5163),i=t(2729),a=t(9986),l=t(9742),c=t(6291),s=t(938);s=s.__esModule?s.default:s;var u={};u.styleTagTransform=c,u.setAttributes=a,u.insert=i.bind(null,"head"),u.domAPI=o,u.insertStyleElement=l;r(s,u);e.exports=s&&s.locals||{}},8298:e=>{"use strict";var n=[];function t(e){for(var t=-1,r=0;r{"use strict";var n={};e.exports=function(e,t){var r=function(e){if(void 0===n[e]){var t=document.querySelector(e);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}n[e]=t}return n[e]}(e);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}},9742:e=>{"use strict";e.exports=function(e){var n=document.createElement("style");return e.setAttributes(n,e.attributes),e.insert(n,e.options),n}},9986:(e,n,t)=>{"use strict";e.exports=function(e){var n=t.nc;n&&e.setAttribute("nonce",n)}},5163:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var n=e.insertStyleElement(e);return{update:function(t){!function(e,n,t){var r="";t.supports&&(r+="@supports (".concat(t.supports,") {")),t.media&&(r+="@media ".concat(t.media," {"));var o=void 0!==t.layer;o&&(r+="@layer".concat(t.layer.length>0?" ".concat(t.layer):""," {")),r+=t.css,o&&(r+="}"),t.media&&(r+="}"),t.supports&&(r+="}");var i=t.sourceMap;i&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),n.styleTagTransform(r,e,n.options)}(n,e,t)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)}}}},6291:e=>{"use strict";e.exports=function(e,n){if(n.styleSheet)n.styleSheet.cssText=e;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(e))}}},9511:(e,n,t)=>{"use strict";var r=t(6556)("ArrayBuffer.prototype.byteLength",!0),o=t(4670);e.exports=function(e){return o(e)?r?r(e):e.byteLength:NaN}},3144:(e,n,t)=>{"use strict";var r=t(6743),o=t(1002),i=t(76),a=t(7119);e.exports=a||r.call(i,o)},2205:(e,n,t)=>{"use strict";var r=t(6743),o=t(1002),i=t(3144);e.exports=function(){return i(r,o,arguments)}},1002:e=>{"use strict";e.exports=Function.prototype.apply},76:e=>{"use strict";e.exports=Function.prototype.call},3126:(e,n,t)=>{"use strict";var r=t(6743),o=t(9675),i=t(76),a=t(3144);e.exports=function(e){if(e.length<1||"function"!=typeof e[0])throw new o("a function is required");return a(r,i,e)}},7119:e=>{"use strict";e.exports="undefined"!=typeof Reflect&&Reflect&&Reflect.apply},8075:(e,n,t)=>{"use strict";var r=t(453),o=t(487),i=o(r("String.prototype.indexOf"));e.exports=function(e,n){var t=r(e,!!n);return"function"==typeof t&&i(e,".prototype.")>-1?o(t):t}},487:(e,n,t)=>{"use strict";var r=t(6897),o=t(3036),i=t(3126),a=t(2205);e.exports=function(e){var n=i(arguments),t=e.length-(arguments.length-1);return r(n,1+(t>0?t:0),!0)},o?o(e.exports,"apply",{value:a}):e.exports.apply=a},6556:(e,n,t)=>{"use strict";var r=t(453),o=t(3126),i=o([r("%String.prototype.indexOf%")]);e.exports=function(e,n){var t=r(e,!!n);return"function"==typeof t&&i(e,".prototype.")>-1?o([t]):t}},5888:(e,n,t)=>{"use strict";e.exports=function(e,n){var t=this,r=t.constructor;return t.options=Object.assign({storeInstancesGlobally:!0},n||{}),t.callbacks={},t.directMap={},t.sequenceLevels={},t.resetTimer=null,t.ignoreNextKeyup=!1,t.ignoreNextKeypress=!1,t.nextExpectedAction=!1,t.element=e,t.addEvents(),t.options.storeInstancesGlobally&&r.instances.push(t),t},e.exports.prototype.bind=t(1210),e.exports.prototype.bindMultiple=t(4382),e.exports.prototype.unbind=t(3709),e.exports.prototype.trigger=t(3149),e.exports.prototype.reset=t(6726),e.exports.prototype.stopCallback=t(4446),e.exports.prototype.handleKey=t(4320),e.exports.prototype.addEvents=t(6687),e.exports.prototype.bindSingle=t(2214),e.exports.prototype.getKeyInfo=t(4174),e.exports.prototype.pickBestAction=t(6004),e.exports.prototype.getReverseMap=t(5193),e.exports.prototype.getMatches=t(9132),e.exports.prototype.resetSequences=t(3229),e.exports.prototype.fireCallback=t(7922),e.exports.prototype.bindSequence=t(3256),e.exports.prototype.resetSequenceTimer=t(602),e.exports.prototype.detach=t(3502),e.exports.instances=[],e.exports.reset=t(6255),e.exports.REVERSE_MAP=null},6687:(e,n,t)=>{"use strict";e.exports=function(){var e=this,n=t(2904),r=e.element;e.eventHandler=t(8178).bind(e),n(r,"keypress",e.eventHandler),n(r,"keydown",e.eventHandler),n(r,"keyup",e.eventHandler)}},1210:e=>{"use strict";e.exports=function(e,n,t){return e=e instanceof Array?e:[e],this.bindMultiple(e,n,t),this}},4382:e=>{"use strict";e.exports=function(e,n,t){for(var r=0;r{"use strict";e.exports=function(e,n,r,o){var i=this;function a(n){return function(){i.nextExpectedAction=n,++i.sequenceLevels[e],i.resetSequenceTimer()}}function l(n){var a;i.fireCallback(r,n,e),"keyup"!==o&&(a=t(3970),i.ignoreNextKeyup=a(n)),setTimeout((function(){i.resetSequences()}),10)}i.sequenceLevels[e]=0;for(var c=0;c{"use strict";e.exports=function(e,n,t,r,o){var i=this;i.directMap[e+":"+t]=n;var a,l=(e=e.replace(/\s+/g," ")).split(" ");l.length>1?i.bindSequence(e,l,n,t):(a=i.getKeyInfo(e,t),i.callbacks[a.key]=i.callbacks[a.key]||[],i.getMatches(a.key,a.modifiers,{type:a.action},r,e,o),i.callbacks[a.key][r?"unshift":"push"]({callback:n,modifiers:a.modifiers,action:a.action,seq:r,level:o,combo:e}))}},3502:(e,n,t)=>{var r=t(2904).off;e.exports=function(){var e=this,n=e.element;r(n,"keypress",e.eventHandler),r(n,"keydown",e.eventHandler),r(n,"keyup",e.eventHandler)}},2904:e=>{function n(e,n,t,r){return!e.addEventListener&&(n="on"+n),(e.addEventListener||e.attachEvent).call(e,n,t,r),t}e.exports=n,e.exports.on=n,e.exports.off=function(e,n,t,r){return!e.removeEventListener&&(n="on"+n),(e.removeEventListener||e.detachEvent).call(e,n,t,r),t}},7922:(e,n,t)=>{"use strict";e.exports=function(e,n,r,o){this.stopCallback(n,n.target||n.srcElement,r,o)||!1===e(n,r)&&(t(2156)(n),t(1849)(n))}},4174:(e,n,t)=>{"use strict";e.exports=function(e,n){var r,o,i,a,l,c,s=[];for(r=t(7486)(e),a=t(7641),l=t(7984),c=t(5962),i=0;i{"use strict";e.exports=function(e,n,r,o,i,a){var l,c,s,u,p=this,f=[],d=r.type;"keypress"!==d||r.code&&"Arrow"===r.code.slice(0,5)||(p.callbacks["any-character"]||[]).forEach((function(e){f.push(e)}));if(!p.callbacks[e])return f;for(s=t(5962),"keyup"===d&&s(e)&&(n=[e]),l=0;l{"use strict";e.exports=function(){var e,n=this.constructor;if(!n.REVERSE_MAP)for(var r in n.REVERSE_MAP={},e=t(6814))r>95&&r<112||e.hasOwnProperty(r)&&(n.REVERSE_MAP[e[r]]=r);return n.REVERSE_MAP}},4320:(e,n,t)=>{"use strict";e.exports=function(e,n,r){var o,i,a,l,c=this,s={},u=0,p=!1;for(o=c.getMatches(e,n,r),i=0;i{"use strict";e.exports=function(e){var n,r=this;"number"!=typeof e.which&&(e.which=e.keyCode);var o=t(3970)(e);void 0!==o&&("keyup"!==e.type||r.ignoreNextKeyup!==o?(n=t(5273),r.handleKey(o,n(e),e)):r.ignoreNextKeyup=!1)}},7238:e=>{"use strict";e.exports=function(e,n){return e.sort().join(",")===n.sort().join(",")}},6004:e=>{"use strict";e.exports=function(e,n,t){return t||(t=this.getReverseMap()[e]?"keydown":"keypress"),"keypress"===t&&n.length&&(t="keydown"),t}},6726:e=>{"use strict";e.exports=function(){return this.callbacks={},this.directMap={},this}},602:e=>{"use strict";e.exports=function(){var e=this;clearTimeout(e.resetTimer),e.resetTimer=setTimeout((function(){e.resetSequences()}),1e3)}},3229:e=>{"use strict";e.exports=function(e){var n=this;e=e||{};var t,r=!1;for(t in n.sequenceLevels)e[t]?r=!0:n.sequenceLevels[t]=0;r||(n.nextExpectedAction=!1)}},4446:e=>{"use strict";e.exports=function(e,n){if((" "+n.className+" ").indexOf(" combokeys ")>-1)return!1;var t=n.tagName.toLowerCase();return"input"===t||"select"===t||"textarea"===t||n.isContentEditable}},3149:e=>{"use strict";e.exports=function(e,n){return this.directMap[e+":"+n]&&this.directMap[e+":"+n]({},e),this}},3709:e=>{"use strict";e.exports=function(e,n){return this.bind(e,(function(){}),n)}},6255:e=>{"use strict";e.exports=function(){this.instances.forEach((function(e){e.reset()}))}},3970:(e,n,t)=>{"use strict";e.exports=function(e){var n,r;if(n=t(6814),r=t(4082),"keypress"===e.type){var o=String.fromCharCode(e.which);return e.shiftKey||(o=o.toLowerCase()),o}return void 0!==n[e.which]?n[e.which]:void 0!==r[e.which]?r[e.which]:String.fromCharCode(e.which).toLowerCase()}},5273:e=>{"use strict";e.exports=function(e){var n=[];return e.shiftKey&&n.push("shift"),e.altKey&&n.push("alt"),e.ctrlKey&&n.push("ctrl"),e.metaKey&&n.push("meta"),n}},5962:e=>{"use strict";e.exports=function(e){return"shift"===e||"ctrl"===e||"alt"===e||"meta"===e}},7486:e=>{"use strict";e.exports=function(e){return"+"===e?["+"]:e.split("+")}},2156:e=>{"use strict";e.exports=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1}},7984:e=>{"use strict";e.exports={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"}},7641:e=>{"use strict";e.exports={option:"alt",command:"meta",return:"enter",escape:"esc",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"}},4082:e=>{"use strict";e.exports={106:"*",107:"plus",109:"minus",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}},6814:e=>{"use strict";e.exports={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",173:"minus",187:"plus",189:"minus",224:"meta"};for(var n=1;n<20;++n)e.exports[111+n]="f"+n;for(n=0;n<=9;++n)e.exports[n+96]=n},1849:e=>{"use strict";e.exports=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}},4982:(e,n,t)=>{"use strict";var r=t(6525),o=t(8075),i=t(1589),a=t(453),l=t(4552),c=t(920),s=t(7653),u=t(7244),p=t(4634),f=t(4670),d=t(2120),g=t(4035),h=t(7070),A=t(1189),b=t(1539),v=t(593),m=t(5767),y=t(9511),E=o("SharedArrayBuffer.prototype.byteLength",!0),C=o("Date.prototype.getTime"),w=Object.getPrototypeOf,x=o("Object.prototype.toString"),S=a("%Set%",!0),_=o("Map.prototype.has",!0),k=o("Map.prototype.get",!0),O=o("Map.prototype.size",!0),B=o("Set.prototype.add",!0),P=o("Set.prototype.delete",!0),T=o("Set.prototype.has",!0),I=o("Set.prototype.size",!0);function j(e,n,t,r){for(var o,i=l(e);(o=i.next())&&!o.done;)if(N(n,o.value,t,r))return P(e,o.value),!0;return!1}function z(e){return void 0===e?null:"object"!=typeof e?"symbol"!=typeof e&&("string"!=typeof e&&"number"!=typeof e||+e==+e):void 0}function D(e,n,t,o,i,a){var l=z(t);if(null!=l)return l;var c=k(n,l),s=r({},i,{strict:!1});return!(void 0===c&&!_(n,l)||!N(o,c,s,a))&&(!_(e,l)&&N(o,c,s,a))}function R(e,n,t){var r=z(t);return null!=r?r:T(n,r)&&!T(e,r)}function M(e,n,t,r,o,i){for(var a,c,s=l(e);(a=s.next())&&!a.done;)if(N(t,c=a.value,o,i)&&N(r,k(n,c),o,i))return P(e,c),!0;return!1}function N(e,n,t,o){var a=t||{};if(a.strict?s(e,n):e===n)return!0;if(b(e)!==b(n))return!1;if(!e||!n||"object"!=typeof e&&"object"!=typeof n)return a.strict?s(e,n):e==n;var c,P=o.has(e),z=o.has(n);if(P&&z){if(o.get(e)===o.get(n))return!0}else c={};return P||o.set(e,c),z||o.set(n,c),function(e,n,t,o){var a,c;if(typeof e!=typeof n)return!1;if(null==e||null==n)return!1;if(x(e)!==x(n))return!1;if(u(e)!==u(n))return!1;var s=p(e),b=p(n);if(s!==b)return!1;var P=e instanceof Error,z=n instanceof Error;if(P!==z)return!1;if((P||z)&&(e.name!==n.name||e.message!==n.message))return!1;var L=g(e),H=g(n);if(L!==H)return!1;if((L||H)&&(e.source!==n.source||i(e)!==i(n)))return!1;var U=d(e),W=d(n);if(U!==W)return!1;if((U||W)&&C(e)!==C(n))return!1;if(t.strict&&w&&w(e)!==w(n))return!1;var G=m(e),Y=m(n);if(G!==Y)return!1;if(G||Y){if(e.length!==n.length)return!1;for(a=0;a=0;a--)if(Z[a]!=J[a])return!1;for(a=Z.length-1;a>=0;a--)if(!N(e[c=Z[a]],n[c],t,o))return!1;var ee=v(e),ne=v(n);if(ee!==ne)return!1;if("Set"===ee||"Set"===ne)return function(e,n,t,r){if(I(e)!==I(n))return!1;var o,i,a,c=l(e),s=l(n);for(;(o=c.next())&&!o.done;)if(o.value&&"object"==typeof o.value)a||(a=new S),B(a,o.value);else if(!T(n,o.value)){if(t.strict)return!1;if(!R(e,n,o.value))return!1;a||(a=new S),B(a,o.value)}if(a){for(;(i=s.next())&&!i.done;)if(i.value&&"object"==typeof i.value){if(!j(a,i.value,t.strict,r))return!1}else if(!t.strict&&!T(e,i.value)&&!j(a,i.value,t.strict,r))return!1;return 0===I(a)}return!0}(e,n,t,o);if("Map"===ee)return function(e,n,t,o){if(O(e)!==O(n))return!1;var i,a,c,s,u,p,f=l(e),d=l(n);for(;(i=f.next())&&!i.done;)if(s=i.value[0],u=i.value[1],s&&"object"==typeof s)c||(c=new S),B(c,s);else if(void 0===(p=k(n,s))&&!_(n,s)||!N(u,p,t,o)){if(t.strict)return!1;if(!D(e,n,s,u,t,o))return!1;c||(c=new S),B(c,s)}if(c){for(;(a=d.next())&&!a.done;)if(s=a.value[0],p=a.value[1],s&&"object"==typeof s){if(!M(c,e,s,p,t,o))return!1}else if(!(t.strict||e.has(s)&&N(k(e,s),p,t,o)||M(c,e,s,p,r({},t,{strict:!1}),o)))return!1;return 0===I(c)}return!0}(e,n,t,o);return!0}(e,n,a,o)}function F(e){return!(!e||"object"!=typeof e||"number"!=typeof e.length)&&("function"==typeof e.copy&&"function"==typeof e.slice&&(!(e.length>0&&"number"!=typeof e[0])&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))))}e.exports=function(e,n,t){return N(e,n,t,c())}},41:(e,n,t)=>{"use strict";var r=t(3036),o=t(8068),i=t(9675),a=t(5795);e.exports=function(e,n,t){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new i("`obj` must be an object or a function`");if("string"!=typeof n&&"symbol"!=typeof n)throw new i("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new i("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new i("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new i("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new i("`loose`, if provided, must be a boolean");var l=arguments.length>3?arguments[3]:null,c=arguments.length>4?arguments[4]:null,s=arguments.length>5?arguments[5]:null,u=arguments.length>6&&arguments[6],p=!!a&&a(e,n);if(r)r(e,n,{configurable:null===s&&p?p.configurable:!s,enumerable:null===l&&p?p.enumerable:!l,value:t,writable:null===c&&p?p.writable:!c});else{if(!u&&(l||c||s))throw new o("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");e[n]=t}}},8452:(e,n,t)=>{"use strict";var r=t(1189),o="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),i=Object.prototype.toString,a=Array.prototype.concat,l=t(41),c=t(592)(),s=function(e,n,t,r){if(n in e)if(!0===r){if(e[n]===t)return}else if("function"!=typeof(o=r)||"[object Function]"!==i.call(o)||!r())return;var o;c?l(e,n,t,!0):l(e,n,t)},u=function(e,n){var t=arguments.length>2?arguments[2]:{},i=r(n);o&&(i=a.call(i,Object.getOwnPropertySymbols(n)));for(var l=0;l{"use strict";var r,o=t(3126),i=t(5795);try{r=[].__proto__===Array.prototype}catch(e){if(!e||"object"!=typeof e||!("code"in e)||"ERR_PROTO_ACCESS"!==e.code)throw e}var a=!!r&&i&&i(Object.prototype,"__proto__"),l=Object,c=l.getPrototypeOf;e.exports=a&&"function"==typeof a.get?o([a.get]):"function"==typeof c&&function(e){return c(null==e?e:l(e))}},3036:e=>{"use strict";var n=Object.defineProperty||!1;if(n)try{n({},"a",{value:1})}catch(e){n=!1}e.exports=n},1237:e=>{"use strict";e.exports=EvalError},9383:e=>{"use strict";e.exports=Error},9290:e=>{"use strict";e.exports=RangeError},9538:e=>{"use strict";e.exports=ReferenceError},8068:e=>{"use strict";e.exports=SyntaxError},9675:e=>{"use strict";e.exports=TypeError},5345:e=>{"use strict";e.exports=URIError},9612:e=>{"use strict";e.exports=Object},2682:(e,n,t)=>{"use strict";var r=t(9600),o=Object.prototype.toString,i=Object.prototype.hasOwnProperty;e.exports=function(e,n,t){if(!r(n))throw new TypeError("iterator must be a function");var a,l;arguments.length>=3&&(a=t),l=e,"[object Array]"===o.call(l)?function(e,n,t){for(var r=0,o=e.length;r{"use strict";var n=Object.prototype.toString,t=Math.max,r=function(e,n){for(var t=[],r=0;r{"use strict";var r=t(9353);e.exports=Function.prototype.bind||r},4462:e=>{"use strict";var n=function(){return"string"==typeof function(){}.name},t=Object.getOwnPropertyDescriptor;if(t)try{t([],"length")}catch(e){t=null}n.functionsHaveConfigurableNames=function(){if(!n()||!t)return!1;var e=t((function(){}),"name");return!!e&&!!e.configurable};var r=Function.prototype.bind;n.boundFunctionsHaveNames=function(){return n()&&"function"==typeof r&&""!==function(){}.bind().name},e.exports=n},453:(e,n,t)=>{"use strict";var r,o=t(9612),i=t(9383),a=t(1237),l=t(9290),c=t(9538),s=t(8068),u=t(9675),p=t(5345),f=t(1514),d=t(8968),g=t(6188),h=t(8002),A=t(5880),b=t(414),v=t(3093),m=Function,y=function(e){try{return m('"use strict"; return ('+e+").constructor;")()}catch(e){}},E=t(5795),C=t(3036),w=function(){throw new u},x=E?function(){try{return w}catch(e){try{return E(arguments,"callee").get}catch(e){return w}}}():w,S=t(4039)(),_=t(3628),k=t(1064),O=t(8648),B=t(1002),P=t(76),T={},I="undefined"!=typeof Uint8Array&&_?_(Uint8Array):r,j={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?r:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?r:ArrayBuffer,"%ArrayIteratorPrototype%":S&&_?_([][Symbol.iterator]()):r,"%AsyncFromSyncIteratorPrototype%":r,"%AsyncFunction%":T,"%AsyncGenerator%":T,"%AsyncGeneratorFunction%":T,"%AsyncIteratorPrototype%":T,"%Atomics%":"undefined"==typeof Atomics?r:Atomics,"%BigInt%":"undefined"==typeof BigInt?r:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?r:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?r:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?r:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":i,"%eval%":eval,"%EvalError%":a,"%Float16Array%":"undefined"==typeof Float16Array?r:Float16Array,"%Float32Array%":"undefined"==typeof Float32Array?r:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?r:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?r:FinalizationRegistry,"%Function%":m,"%GeneratorFunction%":T,"%Int8Array%":"undefined"==typeof Int8Array?r:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?r:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?r:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":S&&_?_(_([][Symbol.iterator]())):r,"%JSON%":"object"==typeof JSON?JSON:r,"%Map%":"undefined"==typeof Map?r:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&S&&_?_((new Map)[Symbol.iterator]()):r,"%Math%":Math,"%Number%":Number,"%Object%":o,"%Object.getOwnPropertyDescriptor%":E,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?r:Promise,"%Proxy%":"undefined"==typeof Proxy?r:Proxy,"%RangeError%":l,"%ReferenceError%":c,"%Reflect%":"undefined"==typeof Reflect?r:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?r:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&S&&_?_((new Set)[Symbol.iterator]()):r,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?r:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":S&&_?_(""[Symbol.iterator]()):r,"%Symbol%":S?Symbol:r,"%SyntaxError%":s,"%ThrowTypeError%":x,"%TypedArray%":I,"%TypeError%":u,"%Uint8Array%":"undefined"==typeof Uint8Array?r:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?r:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?r:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?r:Uint32Array,"%URIError%":p,"%WeakMap%":"undefined"==typeof WeakMap?r:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?r:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?r:WeakSet,"%Function.prototype.call%":P,"%Function.prototype.apply%":B,"%Object.defineProperty%":C,"%Object.getPrototypeOf%":k,"%Math.abs%":f,"%Math.floor%":d,"%Math.max%":g,"%Math.min%":h,"%Math.pow%":A,"%Math.round%":b,"%Math.sign%":v,"%Reflect.getPrototypeOf%":O};if(_)try{null.error}catch(e){var z=_(_(e));j["%Error.prototype%"]=z}var D=function e(n){var t;if("%AsyncFunction%"===n)t=y("async function () {}");else if("%GeneratorFunction%"===n)t=y("function* () {}");else if("%AsyncGeneratorFunction%"===n)t=y("async function* () {}");else if("%AsyncGenerator%"===n){var r=e("%AsyncGeneratorFunction%");r&&(t=r.prototype)}else if("%AsyncIteratorPrototype%"===n){var o=e("%AsyncGenerator%");o&&_&&(t=_(o.prototype))}return j[n]=t,t},R={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},M=t(6743),N=t(9957),F=M.call(P,Array.prototype.concat),L=M.call(B,Array.prototype.splice),H=M.call(P,String.prototype.replace),U=M.call(P,String.prototype.slice),W=M.call(P,RegExp.prototype.exec),G=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Y=/\\(\\)?/g,q=function(e,n){var t,r=e;if(N(R,r)&&(r="%"+(t=R[r])[0]+"%"),N(j,r)){var o=j[r];if(o===T&&(o=D(r)),void 0===o&&!n)throw new u("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:t,name:r,value:o}}throw new s("intrinsic "+e+" does not exist!")};e.exports=function(e,n){if("string"!=typeof e||0===e.length)throw new u("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof n)throw new u('"allowMissing" argument must be a boolean');if(null===W(/^%?[^%]*%?$/,e))throw new s("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var t=function(e){var n=U(e,0,1),t=U(e,-1);if("%"===n&&"%"!==t)throw new s("invalid intrinsic syntax, expected closing `%`");if("%"===t&&"%"!==n)throw new s("invalid intrinsic syntax, expected opening `%`");var r=[];return H(e,G,(function(e,n,t,o){r[r.length]=t?H(o,Y,"$1"):n||e})),r}(e),r=t.length>0?t[0]:"",o=q("%"+r+"%",n),i=o.name,a=o.value,l=!1,c=o.alias;c&&(r=c[0],L(t,F([0,1],c)));for(var p=1,f=!0;p=t.length){var A=E(a,d);a=(f=!!A)&&"get"in A&&!("originalValue"in A.get)?A.get:a[d]}else f=N(a,d),a=a[d];f&&!l&&(j[i]=a)}}return a}},1064:(e,n,t)=>{"use strict";var r=t(9612);e.exports=r.getPrototypeOf||null},8648:e=>{"use strict";e.exports="undefined"!=typeof Reflect&&Reflect.getPrototypeOf||null},3628:(e,n,t)=>{"use strict";var r=t(8648),o=t(1064),i=t(7176);e.exports=r?function(e){return r(e)}:o?function(e){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new TypeError("getProto: not an object");return o(e)}:i?function(e){return i(e)}:null},6549:e=>{"use strict";e.exports=Object.getOwnPropertyDescriptor},5795:(e,n,t)=>{"use strict";var r=t(6549);if(r)try{r([],"length")}catch(e){r=null}e.exports=r},9790:e=>{"use strict";var n="undefined"!=typeof BigInt&&BigInt;e.exports=function(){return"function"==typeof n&&"function"==typeof BigInt&&"bigint"==typeof n(42)&&"bigint"==typeof BigInt(42)}},592:(e,n,t)=>{"use strict";var r=t(3036),o=function(){return!!r};o.hasArrayLengthDefineBug=function(){if(!r)return null;try{return 1!==r([],"length",{value:1}).length}catch(e){return!0}},e.exports=o},4039:(e,n,t)=>{"use strict";var r="undefined"!=typeof Symbol&&Symbol,o=t(1333);e.exports=function(){return"function"==typeof r&&("function"==typeof Symbol&&("symbol"==typeof r("foo")&&("symbol"==typeof Symbol("bar")&&o())))}},1333:e=>{"use strict";e.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},n=Symbol("test"),t=Object(n);if("string"==typeof n)return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;for(var r in e[n]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var o=Object.getOwnPropertySymbols(e);if(1!==o.length||o[0]!==n)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,n))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,n);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},9092:(e,n,t)=>{"use strict";var r=t(1333);e.exports=function(){return r()&&!!Symbol.toStringTag}},9957:(e,n,t)=>{"use strict";var r=Function.prototype.call,o=Object.prototype.hasOwnProperty,i=t(6743);e.exports=i.call(r,o)},63:(e,n,t)=>{"use strict";var r=t(9957),o=t(920)(),i=t(9675),a={assert:function(e,n){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new i("`O` is not an object");if("string"!=typeof n)throw new i("`slot` must be a string");if(o.assert(e),!a.has(e,n))throw new i("`"+n+"` is not present on `O`")},get:function(e,n){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new i("`O` is not an object");if("string"!=typeof n)throw new i("`slot` must be a string");var t=o.get(e);return t&&t["$"+n]},has:function(e,n){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new i("`O` is not an object");if("string"!=typeof n)throw new i("`slot` must be a string");var t=o.get(e);return!!t&&r(t,"$"+n)},set:function(e,n,t){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new i("`O` is not an object");if("string"!=typeof n)throw new i("`slot` must be a string");var r=o.get(e);r||(r={},o.set(e,r)),r["$"+n]=t}};Object.freeze&&Object.freeze(a),e.exports=a},7244:(e,n,t)=>{"use strict";var r=t(9092)(),o=t(6556)("Object.prototype.toString"),i=function(e){return!(r&&e&&"object"==typeof e&&Symbol.toStringTag in e)&&"[object Arguments]"===o(e)},a=function(e){return!!i(e)||null!==e&&"object"==typeof e&&"length"in e&&"number"==typeof e.length&&e.length>=0&&"[object Array]"!==o(e)&&"callee"in e&&"[object Function]"===o(e.callee)},l=function(){return i(arguments)}();i.isLegacyArguments=a,e.exports=l?i:a},4670:(e,n,t)=>{"use strict";var r=t(487),o=t(6556),i=t(453)("%ArrayBuffer%",!0),a=o("ArrayBuffer.prototype.byteLength",!0),l=o("Object.prototype.toString"),c=!!i&&!a&&new i(0).slice,s=!!c&&r(c);e.exports=a||s?function(e){if(!e||"object"!=typeof e)return!1;try{return a?a(e):s(e,0),!0}catch(e){return!1}}:i?function(e){return"[object ArrayBuffer]"===l(e)}:function(e){return!1}},9803:(e,n,t)=>{"use strict";if(t(9790)()){var r=BigInt.prototype.valueOf;e.exports=function(e){return null!=e&&"boolean"!=typeof e&&"string"!=typeof e&&"number"!=typeof e&&"symbol"!=typeof e&&"function"!=typeof e&&("bigint"==typeof e||function(e){try{return r.call(e),!0}catch(e){}return!1}(e))}}else e.exports=function(e){return!1}},5128:(e,n,t)=>{"use strict";var r=t(6556),o=r("Boolean.prototype.toString"),i=r("Object.prototype.toString"),a=t(9092)();e.exports=function(e){return"boolean"==typeof e||null!==e&&"object"==typeof e&&(a?function(e){try{return o(e),!0}catch(e){return!1}}(e):"[object Boolean]"===i(e))}},9600:e=>{"use strict";var n,t,r=Function.prototype.toString,o="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof o&&"function"==typeof Object.defineProperty)try{n=Object.defineProperty({},"length",{get:function(){throw t}}),t={},o((function(){throw 42}),null,n)}catch(e){e!==t&&(o=null)}else o=null;var i=/^\s*class\b/,a=function(e){try{var n=r.call(e);return i.test(n)}catch(e){return!1}},l=function(e){try{return!a(e)&&(r.call(e),!0)}catch(e){return!1}},c=Object.prototype.toString,s="function"==typeof Symbol&&!!Symbol.toStringTag,u=!(0 in[,]),p=function(){return!1};if("object"==typeof document){var f=document.all;c.call(f)===c.call(document.all)&&(p=function(e){if((u||!e)&&(void 0===e||"object"==typeof e))try{var n=c.call(e);return("[object HTMLAllCollection]"===n||"[object HTML document.all class]"===n||"[object HTMLCollection]"===n||"[object Object]"===n)&&null==e("")}catch(e){}return!1})}e.exports=o?function(e){if(p(e))return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;try{o(e,null,n)}catch(e){if(e!==t)return!1}return!a(e)&&l(e)}:function(e){if(p(e))return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if(s)return l(e);if(a(e))return!1;var n=c.call(e);return!("[object Function]"!==n&&"[object GeneratorFunction]"!==n&&!/^\[object HTML/.test(n))&&l(e)}},2120:(e,n,t)=>{"use strict";var r=t(6556),o=r("Date.prototype.getDay"),i=r("Object.prototype.toString"),a=t(9092)();e.exports=function(e){return"object"==typeof e&&null!==e&&(a?function(e){try{return o(e),!0}catch(e){return!1}}(e):"[object Date]"===i(e))}},1421:e=>{"use strict";var n,t="function"==typeof Map&&Map.prototype?Map:null,r="function"==typeof Set&&Set.prototype?Set:null;t||(n=function(e){return!1});var o=t?Map.prototype.has:null,i=r?Set.prototype.has:null;n||o||(n=function(e){return!1}),e.exports=n||function(e){if(!e||"object"!=typeof e)return!1;try{if(o.call(e),i)try{i.call(e)}catch(e){return!0}return e instanceof t}catch(e){}return!1}},1703:(e,n,t)=>{"use strict";var r=t(6556),o=r("Number.prototype.toString"),i=r("Object.prototype.toString"),a=t(9092)();e.exports=function(e){return"number"==typeof e||!(!e||"object"!=typeof e)&&(a?function(e){try{return o(e),!0}catch(e){return!1}}(e):"[object Number]"===i(e))}},4035:(e,n,t)=>{"use strict";var r,o=t(6556),i=t(9092)(),a=t(9957),l=t(5795);if(i){var c=o("RegExp.prototype.exec"),s={},u=function(){throw s},p={toString:u,valueOf:u};"symbol"==typeof Symbol.toPrimitive&&(p[Symbol.toPrimitive]=u),r=function(e){if(!e||"object"!=typeof e)return!1;var n=l(e,"lastIndex");if(!(n&&a(n,"value")))return!1;try{c(e,p)}catch(e){return e===s}}}else{var f=o("Object.prototype.toString");r=function(e){return!(!e||"object"!=typeof e&&"function"!=typeof e)&&"[object RegExp]"===f(e)}}e.exports=r},256:e=>{"use strict";var n,t="function"==typeof Map&&Map.prototype?Map:null,r="function"==typeof Set&&Set.prototype?Set:null;r||(n=function(e){return!1});var o=t?Map.prototype.has:null,i=r?Set.prototype.has:null;n||i||(n=function(e){return!1}),e.exports=n||function(e){if(!e||"object"!=typeof e)return!1;try{if(i.call(e),o)try{o.call(e)}catch(e){return!0}return e instanceof r}catch(e){}return!1}},7070:(e,n,t)=>{"use strict";var r=t(6556)("SharedArrayBuffer.prototype.byteLength",!0);e.exports=r?function(e){if(!e||"object"!=typeof e)return!1;try{return r(e),!0}catch(e){return!1}}:function(e){return!1}},4761:(e,n,t)=>{"use strict";var r=t(6556),o=r("String.prototype.valueOf"),i=r("Object.prototype.toString"),a=t(9092)();e.exports=function(e){return"string"==typeof e||!(!e||"object"!=typeof e)&&(a?function(e){try{return o(e),!0}catch(e){return!1}}(e):"[object String]"===i(e))}},3612:(e,n,t)=>{"use strict";var r=t(6556),o=r("Object.prototype.toString"),i=t(4039)(),a=t(9721);if(i){var l=r("Symbol.prototype.toString"),c=a(/^Symbol\(.*\)$/);e.exports=function(e){if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||"[object Symbol]"!==o(e))return!1;try{return function(e){return"symbol"==typeof e.valueOf()&&c(l(e))}(e)}catch(e){return!1}}}else e.exports=function(e){return!1}},7842:e=>{"use strict";var n,t="function"==typeof WeakMap&&WeakMap.prototype?WeakMap:null,r="function"==typeof WeakSet&&WeakSet.prototype?WeakSet:null;t||(n=function(e){return!1});var o=t?t.prototype.has:null,i=r?r.prototype.has:null;n||o||(n=function(e){return!1}),e.exports=n||function(e){if(!e||"object"!=typeof e)return!1;try{if(o.call(e,o),i)try{i.call(e,i)}catch(e){return!0}return e instanceof t}catch(e){}return!1}},2648:(e,n,t)=>{"use strict";var r=t(453),o=t(6556),i=r("%WeakSet%",!0),a=o("WeakSet.prototype.has",!0);if(a){var l=o("WeakMap.prototype.has",!0);e.exports=function(e){if(!e||"object"!=typeof e)return!1;try{if(a(e,a),l)try{l(e,l)}catch(e){return!0}return e instanceof i}catch(e){}return!1}}else e.exports=function(e){return!1}},4634:e=>{var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},1514:e=>{"use strict";e.exports=Math.abs},8968:e=>{"use strict";e.exports=Math.floor},4459:e=>{"use strict";e.exports=Number.isNaN||function(e){return e!=e}},6188:e=>{"use strict";e.exports=Math.max},8002:e=>{"use strict";e.exports=Math.min},5880:e=>{"use strict";e.exports=Math.pow},414:e=>{"use strict";e.exports=Math.round},3093:(e,n,t)=>{"use strict";var r=t(4459);e.exports=function(e){return r(e)||0===e?e:e<0?-1:1}},5228:e=>{"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var n=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var n={},t=0;t<10;t++)n["_"+String.fromCharCode(t)]=t;if("0123456789"!==Object.getOwnPropertyNames(n).map((function(e){return n[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,o){for(var i,a,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),c=1;c{var r="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=r&&o&&"function"==typeof o.get?o.get:null,a=r&&Map.prototype.forEach,l="function"==typeof Set&&Set.prototype,c=Object.getOwnPropertyDescriptor&&l?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,s=l&&c&&"function"==typeof c.get?c.get:null,u=l&&Set.prototype.forEach,p="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,f="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,d="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,g=Boolean.prototype.valueOf,h=Object.prototype.toString,A=Function.prototype.toString,b=String.prototype.match,v=String.prototype.slice,m=String.prototype.replace,y=String.prototype.toUpperCase,E=String.prototype.toLowerCase,C=RegExp.prototype.test,w=Array.prototype.concat,x=Array.prototype.join,S=Array.prototype.slice,_=Math.floor,k="function"==typeof BigInt?BigInt.prototype.valueOf:null,O=Object.getOwnPropertySymbols,B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,P="function"==typeof Symbol&&"object"==typeof Symbol.iterator,T="function"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===P||"symbol")?Symbol.toStringTag:null,I=Object.prototype.propertyIsEnumerable,j=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function z(e,n){if(e===1/0||e===-1/0||e!=e||e&&e>-1e3&&e<1e3||C.call(/e/,n))return n;var t=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof e){var r=e<0?-_(-e):_(e);if(r!==e){var o=String(r),i=v.call(n,o.length+1);return m.call(o,t,"$&_")+"."+m.call(m.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return m.call(n,t,"$&_")}var D=t(2634),R=D.custom,M=Y(R)?R:null,N={__proto__:null,double:'"',single:"'"},F={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function L(e,n,t){var r=t.quoteStyle||n,o=N[r];return o+e+o}function H(e){return m.call(String(e),/"/g,""")}function U(e){return!T||!("object"==typeof e&&(T in e||void 0!==e[T]))}function W(e){return"[object Array]"===$(e)&&U(e)}function G(e){return"[object RegExp]"===$(e)&&U(e)}function Y(e){if(P)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!B)return!1;try{return B.call(e),!0}catch(e){}return!1}e.exports=function e(n,r,o,l){var c=r||{};if(V(c,"quoteStyle")&&!V(N,c.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(V(c,"maxStringLength")&&("number"==typeof c.maxStringLength?c.maxStringLength<0&&c.maxStringLength!==1/0:null!==c.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var h=!V(c,"customInspect")||c.customInspect;if("boolean"!=typeof h&&"symbol"!==h)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(V(c,"indent")&&null!==c.indent&&"\t"!==c.indent&&!(parseInt(c.indent,10)===c.indent&&c.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(V(c,"numericSeparator")&&"boolean"!=typeof c.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var y=c.numericSeparator;if(void 0===n)return"undefined";if(null===n)return"null";if("boolean"==typeof n)return n?"true":"false";if("string"==typeof n)return Q(n,c);if("number"==typeof n){if(0===n)return 1/0/n>0?"0":"-0";var C=String(n);return y?z(n,C):C}if("bigint"==typeof n){var _=String(n)+"n";return y?z(n,_):_}var O=void 0===c.depth?5:c.depth;if(void 0===o&&(o=0),o>=O&&O>0&&"object"==typeof n)return W(n)?"[Array]":"[Object]";var R=function(e,n){var t;if("\t"===e.indent)t="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;t=x.call(Array(e.indent+1)," ")}return{base:t,prev:x.call(Array(n+1),t)}}(c,o);if(void 0===l)l=[];else if(K(l,n)>=0)return"[Circular]";function F(n,t,r){if(t&&(l=S.call(l)).push(t),r){var i={depth:c.depth};return V(c,"quoteStyle")&&(i.quoteStyle=c.quoteStyle),e(n,i,o+1,l)}return e(n,c,o+1,l)}if("function"==typeof n&&!G(n)){var q=function(e){if(e.name)return e.name;var n=b.call(A.call(e),/^function\s*([\w$]+)/);if(n)return n[1];return null}(n),X=te(n,F);return"[Function"+(q?": "+q:" (anonymous)")+"]"+(X.length>0?" { "+x.call(X,", ")+" }":"")}if(Y(n)){var re=P?m.call(String(n),/^(Symbol\(.*\))_[^)]*$/,"$1"):B.call(n);return"object"!=typeof n||P?re:Z(re)}if(function(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(n)){for(var oe="<"+E.call(String(n.nodeName)),ie=n.attributes||[],ae=0;ae"}if(W(n)){if(0===n.length)return"[]";var le=te(n,F);return R&&!function(e){for(var n=0;n=0)return!1;return!0}(le)?"["+ne(le,R)+"]":"[ "+x.call(le,", ")+" ]"}if(function(e){return"[object Error]"===$(e)&&U(e)}(n)){var ce=te(n,F);return"cause"in Error.prototype||!("cause"in n)||I.call(n,"cause")?0===ce.length?"["+String(n)+"]":"{ ["+String(n)+"] "+x.call(ce,", ")+" }":"{ ["+String(n)+"] "+x.call(w.call("[cause]: "+F(n.cause),ce),", ")+" }"}if("object"==typeof n&&h){if(M&&"function"==typeof n[M]&&D)return D(n,{depth:O-o});if("symbol"!==h&&"function"==typeof n.inspect)return n.inspect()}if(function(e){if(!i||!e||"object"!=typeof e)return!1;try{i.call(e);try{s.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(n)){var se=[];return a&&a.call(n,(function(e,t){se.push(F(t,n,!0)+" => "+F(e,n))})),ee("Map",i.call(n),se,R)}if(function(e){if(!s||!e||"object"!=typeof e)return!1;try{s.call(e);try{i.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(n)){var ue=[];return u&&u.call(n,(function(e){ue.push(F(e,n))})),ee("Set",s.call(n),ue,R)}if(function(e){if(!p||!e||"object"!=typeof e)return!1;try{p.call(e,p);try{f.call(e,f)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(n))return J("WeakMap");if(function(e){if(!f||!e||"object"!=typeof e)return!1;try{f.call(e,f);try{p.call(e,p)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(n))return J("WeakSet");if(function(e){if(!d||!e||"object"!=typeof e)return!1;try{return d.call(e),!0}catch(e){}return!1}(n))return J("WeakRef");if(function(e){return"[object Number]"===$(e)&&U(e)}(n))return Z(F(Number(n)));if(function(e){if(!e||"object"!=typeof e||!k)return!1;try{return k.call(e),!0}catch(e){}return!1}(n))return Z(F(k.call(n)));if(function(e){return"[object Boolean]"===$(e)&&U(e)}(n))return Z(g.call(n));if(function(e){return"[object String]"===$(e)&&U(e)}(n))return Z(F(String(n)));if("undefined"!=typeof window&&n===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&n===globalThis||void 0!==t.g&&n===t.g)return"{ [object globalThis] }";if(!function(e){return"[object Date]"===$(e)&&U(e)}(n)&&!G(n)){var pe=te(n,F),fe=j?j(n)===Object.prototype:n instanceof Object||n.constructor===Object,de=n instanceof Object?"":"null prototype",ge=!fe&&T&&Object(n)===n&&T in n?v.call($(n),8,-1):de?"Object":"",he=(fe||"function"!=typeof n.constructor?"":n.constructor.name?n.constructor.name+" ":"")+(ge||de?"["+x.call(w.call([],ge||[],de||[]),": ")+"] ":"");return 0===pe.length?he+"{}":R?he+"{"+ne(pe,R)+"}":he+"{ "+x.call(pe,", ")+" }"}return String(n)};var q=Object.prototype.hasOwnProperty||function(e){return e in this};function V(e,n){return q.call(e,n)}function $(e){return h.call(e)}function K(e,n){if(e.indexOf)return e.indexOf(n);for(var t=0,r=e.length;tn.maxStringLength){var t=e.length-n.maxStringLength,r="... "+t+" more character"+(t>1?"s":"");return Q(v.call(e,0,n.maxStringLength),n)+r}var o=F[n.quoteStyle||"single"];return o.lastIndex=0,L(m.call(m.call(e,o,"\\$1"),/[\x00-\x1f]/g,X),"single",n)}function X(e){var n=e.charCodeAt(0),t={8:"b",9:"t",10:"n",12:"f",13:"r"}[n];return t?"\\"+t:"\\x"+(n<16?"0":"")+y.call(n.toString(16))}function Z(e){return"Object("+e+")"}function J(e){return e+" { ? }"}function ee(e,n,t,r){return e+" ("+n+") {"+(r?ne(t,r):x.call(t,", "))+"}"}function ne(e,n){if(0===e.length)return"";var t="\n"+n.prev+n.base;return t+x.call(e,","+t)+"\n"+n.prev}function te(e,n){var t=W(e),r=[];if(t){r.length=e.length;for(var o=0;o{"use strict";var n=function(e){return e!=e};e.exports=function(e,t){return 0===e&&0===t?1/e==1/t:e===t||!(!n(e)||!n(t))}},7653:(e,n,t)=>{"use strict";var r=t(8452),o=t(487),i=t(9211),a=t(9394),l=t(6576),c=o(a(),Object);r(c,{getPolyfill:a,implementation:i,shim:l}),e.exports=c},9394:(e,n,t)=>{"use strict";var r=t(9211);e.exports=function(){return"function"==typeof Object.is?Object.is:r}},6576:(e,n,t)=>{"use strict";var r=t(9394),o=t(8452);e.exports=function(){var e=r();return o(Object,{is:e},{is:function(){return Object.is!==e}}),e}},8875:(e,n,t)=>{"use strict";var r;if(!Object.keys){var o=Object.prototype.hasOwnProperty,i=Object.prototype.toString,a=t(1093),l=Object.prototype.propertyIsEnumerable,c=!l.call({toString:null},"toString"),s=l.call((function(){}),"prototype"),u=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],p=function(e){var n=e.constructor;return n&&n.prototype===e},f={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},d=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!f["$"+e]&&o.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{p(window[e])}catch(e){return!0}}catch(e){return!0}return!1}();r=function(e){var n=null!==e&&"object"==typeof e,t="[object Function]"===i.call(e),r=a(e),l=n&&"[object String]"===i.call(e),f=[];if(!n&&!t&&!r)throw new TypeError("Object.keys called on a non-object");var g=s&&t;if(l&&e.length>0&&!o.call(e,0))for(var h=0;h0)for(var A=0;A{"use strict";var r=Array.prototype.slice,o=t(1093),i=Object.keys,a=i?function(e){return i(e)}:t(8875),l=Object.keys;a.shim=function(){if(Object.keys){var e=function(){var e=Object.keys(arguments);return e&&e.length===arguments.length}(1,2);e||(Object.keys=function(e){return o(e)?l(r.call(e)):l(e)})}else Object.keys=a;return Object.keys||a},e.exports=a},1093:e=>{"use strict";var n=Object.prototype.toString;e.exports=function(e){var t=n.call(e),r="[object Arguments]"===t;return r||(r="[object Array]"!==t&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===n.call(e.callee)),r}},8403:(e,n,t)=>{"use strict";var r=t(1189),o=t(1333)(),i=t(6556),a=t(9612),l=i("Array.prototype.push"),c=i("Object.prototype.propertyIsEnumerable"),s=o?a.getOwnPropertySymbols:null;e.exports=function(e,n){if(null==e)throw new TypeError("target must be an object");var t=a(e);if(1===arguments.length)return t;for(var i=1;i{"use strict";var r=t(8452),o=t(487),i=t(8403),a=t(9133),l=t(984),c=o.apply(a()),s=function(e,n){return c(Object,arguments)};r(s,{getPolyfill:a,implementation:i,shim:l}),e.exports=s},9133:(e,n,t)=>{"use strict";var r=t(8403);e.exports=function(){return Object.assign?function(){if(!Object.assign)return!1;for(var e="abcdefghijklmnopqrst",n=e.split(""),t={},r=0;r{"use strict";var r=t(8452),o=t(9133);e.exports=function(){var e=o();return r(Object,{assign:e},{assign:function(){return Object.assign!==e}}),e}},6578:e=>{"use strict";e.exports=["Float16Array","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"]},2694:(e,n,t)=>{"use strict";var r=t(6925);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,n,t,o,i,a){if(a!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function n(){return e}e.isRequired=e;var t={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:n,element:e,elementType:e,instanceOf:n,node:e,objectOf:n,oneOf:n,oneOfType:n,shape:n,exact:n,checkPropTypes:i,resetWarningCache:o};return t.PropTypes=t,t}},5556:(e,n,t)=>{e.exports=t(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551:(e,n,t)=>{"use strict";var r=t(6540),o=t(5228),i=t(9982); +/** @license React v17.0.2 + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function a(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t