diff --git a/libraries/tools/new-project-wizard/resources/org/jetbrains/kotlin/tools/projectWizard/templates/simpleJsClient/WelcomeStyles.kt.vm b/libraries/tools/new-project-wizard/resources/org/jetbrains/kotlin/tools/projectWizard/templates/simpleJsClient/WelcomeStyles.kt.vm
new file mode 100644
index 00000000000..d3b227672d8
--- /dev/null
+++ b/libraries/tools/new-project-wizard/resources/org/jetbrains/kotlin/tools/projectWizard/templates/simpleJsClient/WelcomeStyles.kt.vm
@@ -0,0 +1,17 @@
+import kotlinx.css.*
+import styled.StyleSheet
+
+object WelcomeStyles : StyleSheet("WelcomeStyles", isStatic = true) {
+ val textContainer by css {
+ padding(5.px)
+
+ backgroundColor = rgb(8, 97, 22)
+ color = rgb(56, 246, 137)
+ }
+
+ val textInput by css {
+ margin(vertical = 5.px)
+
+ fontSize = 14.px
+ }
+}
diff --git a/libraries/tools/new-project-wizard/resources/org/jetbrains/kotlin/tools/projectWizard/templates/simpleJsClient/index.html.vm b/libraries/tools/new-project-wizard/resources/org/jetbrains/kotlin/tools/projectWizard/templates/simpleJsClient/index.html.vm
new file mode 100644
index 00000000000..7f44966ab93
--- /dev/null
+++ b/libraries/tools/new-project-wizard/resources/org/jetbrains/kotlin/tools/projectWizard/templates/simpleJsClient/index.html.vm
@@ -0,0 +1,11 @@
+
+
+
+
+ JS Client
+
+
+
+
+
+
diff --git a/libraries/tools/new-project-wizard/resources/org/jetbrains/kotlin/tools/projectWizard/templates/simpleJsClient/reactClient.kt.vm b/libraries/tools/new-project-wizard/resources/org/jetbrains/kotlin/tools/projectWizard/templates/simpleJsClient/reactClient.kt.vm
new file mode 100644
index 00000000000..1af822892df
--- /dev/null
+++ b/libraries/tools/new-project-wizard/resources/org/jetbrains/kotlin/tools/projectWizard/templates/simpleJsClient/reactClient.kt.vm
@@ -0,0 +1,15 @@
+import react.dom.render
+import kotlin.browser.document
+import kotlin.browser.window
+
+fun main() {
+ window.onload = {
+ render(document.getElementById("root")) {
+ child(Welcome::class) {
+ attrs {
+ name = "Kotlin/JS"
+ }
+ }
+ }
+ }
+}
diff --git a/libraries/tools/new-project-wizard/resources/org/jetbrains/kotlin/tools/projectWizard/templates/simpleJsClient/reactComponent.kt.vm b/libraries/tools/new-project-wizard/resources/org/jetbrains/kotlin/tools/projectWizard/templates/simpleJsClient/reactComponent.kt.vm
new file mode 100644
index 00000000000..698ed1f629e
--- /dev/null
+++ b/libraries/tools/new-project-wizard/resources/org/jetbrains/kotlin/tools/projectWizard/templates/simpleJsClient/reactComponent.kt.vm
@@ -0,0 +1,59 @@
+import kotlinx.html.InputType
+import kotlinx.html.js.onChangeFunction
+import org.w3c.dom.HTMLInputElement
+import react.RBuilder
+import react.RComponent
+import react.RProps
+import react.RState
+#if($useStyledComponents)
+import styled.css
+import styled.styledDiv
+import styled.styledInput
+#else
+import react.dom.div
+import react.dom.input
+#end
+
+interface WelcomeProps : RProps {
+ var name: String
+}
+
+data class WelcomeState(val name: String) : RState
+
+class Welcome(props: WelcomeProps) : RComponent(props) {
+
+ init {
+ state = WelcomeState(props.name)
+ }
+
+ override fun RBuilder.render() {
+#if($useStyledComponents)
+ styledDiv {
+ css {
+ +WelcomeStyles.textContainer
+ }
+#else
+ div {
+#end
+ +"Hello, ${state.name}"
+ }
+#if($useStyledComponents)
+ styledInput {
+ css {
+ +WelcomeStyles.textInput
+ }
+#else
+ input {
+#end
+ attrs {
+ type = InputType.text
+ value = state.name
+ onChangeFunction = { event ->
+ setState(
+ WelcomeState(name = (event.target as HTMLInputElement).value)
+ )
+ }
+ }
+ }
+ }
+}
diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/ModuleIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/ModuleIR.kt
index d0c1581ac4d..0c94c6ac14f 100644
--- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/ModuleIR.kt
+++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/ModuleIR.kt
@@ -6,6 +6,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.MavenPrinter
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
+import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Sourceset
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
@@ -67,4 +68,10 @@ data class MultiplatformModuleIR(
)
}.listNl(needFirstIndent = false)
}
-}
\ No newline at end of file
+}
+
+fun MultiplatformModuleIR.neighbourTargetModules() =
+ originalModule.parent
+ ?.takeIf { it.kind == ModuleKind.multiplatform }
+ ?.subModules
+ .orEmpty()
\ No newline at end of file
diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt
index 0ba3e1a013a..aa310e68414 100644
--- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt
+++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt
@@ -1,11 +1,8 @@
package org.jetbrains.kotlin.tools.projectWizard.plugins
-import org.jetbrains.kotlin.tools.projectWizard.core.Context
-import org.jetbrains.kotlin.tools.projectWizard.core.Plugin
-import org.jetbrains.kotlin.tools.projectWizard.core.TaskRunningContext
+import org.jetbrains.kotlin.tools.projectWizard.core.*
import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators
import org.jetbrains.kotlin.tools.projectWizard.core.entity.reference
-import org.jetbrains.kotlin.tools.projectWizard.core.pathParser
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.PomIR
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
@@ -39,9 +36,13 @@ class StructurePlugin(context: Context) : Plugin(context) {
}
}
-val TaskRunningContext.projectPath
+val ValuesReadingContext.projectPath
get() = StructurePlugin::projectPath.reference.settingValue
+val ValuesReadingContext.projectName
+ get() = StructurePlugin::name.reference.settingValue
+
+
fun TaskRunningContext.pomIR() = PomIR(
artifactId = StructurePlugin::artifactId.reference.settingValue,
groupId = StructurePlugin::groupId.reference.settingValue,
diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt
index 6dee07da0ad..f75aba51f80 100644
--- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt
+++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt
@@ -15,6 +15,8 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.printBuildFile
import org.jetbrains.kotlin.tools.projectWizard.plugins.projectPath
+import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatePlugin
+import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.updateBuildFiles
@@ -44,7 +46,7 @@ abstract class BuildSystemPlugin(context: Context) : Plugin(context) {
val takeRepositoriesFromDependencies by pipelineTask(GenerationPhase.PROJECT_GENERATION) {
runBefore(BuildSystemPlugin::createModules)
- runAfter(KotlinPlugin::createModules)
+ runAfter(TemplatesPlugin::postApplyTemplatesToModules)
withAction {
updateBuildFiles { buildFile ->
diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt
index 6bacf6cc043..19adf8b86a9 100644
--- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt
+++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt
@@ -116,7 +116,7 @@ class ModulesToIRsConverter(
}
val moduleIr = SingleplatformModuleIR(
- module.name,
+ if (modulePath == projectPath) projectName else module.name,
modulePath,
dependenciesIRs,
module.template,
diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt
index f629d3a81a8..70178c7097d 100644
--- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt
+++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt
@@ -8,6 +8,8 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
+import org.jetbrains.kotlin.tools.projectWizard.plugins.projectName
+import org.jetbrains.kotlin.tools.projectWizard.plugins.projectPath
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.updateBuildFiles
import org.jetbrains.kotlin.tools.projectWizard.templates.*
import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.InterceptionPoint
@@ -111,7 +113,11 @@ class TemplatesPlugin(context: Context) : Plugin(context) {
): TaskResult {
val template = module.template ?: return UNIT_SUCCESS
val settings = with(template) { settingsAsMap(module.originalModule) }
- val allSettings = settings + interceptionPointSettings.mapKeys { it.key.name }
+ val allSettings: Map = mutableMapOf().apply {
+ putAll(settings)
+ putAll(interceptionPointSettings.mapKeys { it.key.name })
+ putAll(defaultSettings(module))
+ }
return with(template) { getFileTemplates(module) }.map { (fileTemplateDescriptor, filePath) ->
val path = generatePathForFileTemplate(module, filePath)
val fileTemplate = FileTemplate(
@@ -123,11 +129,16 @@ class TemplatesPlugin(context: Context) : Plugin(context) {
}.sequenceIgnore()
}
+ private fun TaskRunningContext.defaultSettings(moduleIR: ModuleIR) = mapOf(
+ "projectName" to projectName,
+ "moduleName" to moduleIR.name
+ )
+
private fun generatePathForFileTemplate(module: ModuleIR, filePath: FilePath) = when (module) {
is SingleplatformModuleIR -> {
when (filePath) {
is SrcFilePath -> SRC_DIR / filePath.sourcesetType.toString() / KOTLIN_DIR
- is ResourcesFilePath -> RESOURCES_DIR / filePath.sourcesetType.toString()
+ is ResourcesFilePath -> SRC_DIR / filePath.sourcesetType.toString() / RESOURCES_DIR
}
}
diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt
index f32051b09ae..7c0ad91e0a2 100644
--- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt
+++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt
@@ -39,6 +39,7 @@ data class BintrayRepository(val repository: String) : CustomMavenRepository {
object Repositories {
val KTOR_BINTRAY = BintrayRepository("kotlin/ktor")
+ val KOTLIN_JS_WRAPPERS_BINTRAY = BintrayRepository("kotlin/kotlin-js-wrappers")
val KOTLIN_EAP_BINTRAY = BintrayRepository("kotlin/kotlin-eap")
val KOTLIN_DEV_BINTRAY = BintrayRepository("kotlin/kotlin-dev")
}
diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/FileTemplateDescriptor.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/FileTemplateDescriptor.kt
index 34dbdfa70a8..d04a65f17ad 100644
--- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/FileTemplateDescriptor.kt
+++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/FileTemplateDescriptor.kt
@@ -1,12 +1,19 @@
package org.jetbrains.kotlin.tools.projectWizard.templates
+import org.jetbrains.kotlin.tools.projectWizard.core.asPath
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
import java.nio.file.Path
+import java.nio.file.Paths
// Should be used to create any kind of files in the generated project
// Except build files as they will be generated using IR
-data class FileTemplateDescriptor(val templateId: String, val relativePath: Path)
+data class FileTemplateDescriptor(val templateId: String, val relativePath: Path) {
+ constructor(templateId: String) : this(
+ templateId,
+ Paths.get(templateId).fileName.toString().removeSuffix(".vm").asPath()
+ )
+}
sealed class FilePath {
abstract val sourcesetType: SourcesetType
diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt
index 64f2780f6e2..9d2b26eb41e 100644
--- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt
+++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt
@@ -8,16 +8,21 @@ package org.jetbrains.kotlin.tools.projectWizard.templates
import org.jetbrains.kotlin.tools.projectWizard.core.TaskRunningContext
import org.jetbrains.kotlin.tools.projectWizard.core.asPath
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
+import org.jetbrains.kotlin.tools.projectWizard.core.entity.TemplateSetting
import org.jetbrains.kotlin.tools.projectWizard.core.safeAs
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.*
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.DefaultTargetConfigurationIR
import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
+import org.jetbrains.kotlin.tools.projectWizard.library.NpmArtifact
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JsBrowserTargetConfigurator
+import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
+import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
+import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repositories
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.TemplateInterceptor
@@ -32,19 +37,62 @@ class SimpleJsClientTemplate : Template() {
override fun isApplicableTo(module: Module): Boolean =
module.configurator == JsBrowserTargetConfigurator
- override fun TaskRunningContext.getRequiredLibraries(module: ModuleIR): List =
+ val renderEngine by enumSetting("Rendering engine", GenerationPhase.PROJECT_GENERATION) {
+ defaultValue = RenderEngine.REACT_WITH_STYLED
+ }
+
+ override val settings: List> = listOf(renderEngine)
+
+ override fun TaskRunningContext.getRequiredLibraries(module: ModuleIR): List = withSettingsOf(module.originalModule) {
buildList {
+ArtifactBasedLibraryDependencyIR(
MavenArtifact(DefaultRepository.JCENTER, "org.jetbrains.kotlinx", "kotlinx-html-js"),
Version.fromString("0.6.12"),
DependencyType.MAIN
)
+
+ if (renderEngine.reference.settingValue != RenderEngine.KOTLINX_HTML) {
+ +Dependencies.KOTLIN_REACT
+ +Dependencies.KOTLIN_REACT_DOM
+ +Dependencies.NPM_REACT
+ +Dependencies.NPM_REACT_DOM
+ if (renderEngine.reference.settingValue == RenderEngine.REACT_WITH_STYLED) {
+ +Dependencies.NPM_REACT_IS
+ +Dependencies.KOTLIN_STYLED
+ +Dependencies.NPM_STYLED_COMPONENTS
+ +Dependencies.NPM_INLINE_STYLE_PREFIXER
+ }
+ }
+ }
+ }
+
+
+ override fun TaskRunningContext.getFileTemplates(module: ModuleIR): List =
+ withSettingsOf(module.originalModule) {
+ buildList {
+ val hasKtorServNeighbourTarget = module.safeAs()
+ ?.neighbourTargetModules()
+ .orEmpty()
+ .any { module ->
+ module.template is KtorServerTemplate
+ }
+ if (!hasKtorServNeighbourTarget) {
+ +(FileTemplateDescriptor("$id/index.html.vm") asResourceOf SourcesetType.main)
+ }
+ if (renderEngine.reference.settingValue == RenderEngine.KOTLINX_HTML) {
+ +(FileTemplateDescriptor("$id/client.kt.vm") asSrcOf SourcesetType.main)
+ +(FileTemplateDescriptor("$id/TestClient.kt.vm", "TestClient.kt".asPath()) asSrcOf SourcesetType.test)
+ } else {
+ +(FileTemplateDescriptor("$id/reactClient.kt.vm", "client.kt".asPath()) asSrcOf SourcesetType.main)
+ +(FileTemplateDescriptor("$id/reactComponent.kt.vm", "welcome.kt".asPath()) asSrcOf SourcesetType.main)
+ }
+
+ if (renderEngine.reference.settingValue == RenderEngine.REACT_WITH_STYLED) {
+ +(FileTemplateDescriptor("$id/WelcomeStyles.kt.vm") asSrcOf SourcesetType.main)
+ }
+ }
}
- override fun TaskRunningContext.getFileTemplates(module: ModuleIR): List = buildList {
- +(FileTemplateDescriptor("$id/client.kt.vm", "client.kt".asPath()) asSrcOf SourcesetType.main)
- +(FileTemplateDescriptor("$id/TestClient.kt.vm", "TestClient.kt".asPath()) asSrcOf SourcesetType.test)
- }
override fun createInterceptors(module: ModuleIR): List = buildList {
+interceptTemplate(KtorServerTemplate()) {
@@ -78,7 +126,12 @@ class SimpleJsClientTemplate : Template() {
if (value.isNotEmpty()) return@interceptAtPoint value
buildList {
+value
- +"""script(src = "/static/output.js") {}"""
+ +"""
+ div {
+ id = "root"
+ }
+ """.trimIndent()
+ +"""script(src = "/static/$JS_OUTPUT_FILE_NAME") {}"""
}
}
@@ -88,7 +141,7 @@ class SimpleJsClientTemplate : Template() {
target.safeAs()?.targetAccess?.type == ModuleSubType.jvm
} as? DefaultTargetConfigurationIR ?: return@transformBuildFile null
val jvmTargetName = jvmTarget.targetName
- val webPackTaskName = "${jsSourcesetName}BrowserWebpack"
+ val webPackTaskName = "$jsSourcesetName$WEBPACK_TASK_SUFFIX"
val jvmJarTaskAccess = GradleByNameTaskAccessIR("${jvmTargetName}Jar", "Jar")
val jvmJarTaskConfiguration = run {
@@ -133,13 +186,12 @@ class SimpleJsClientTemplate : Template() {
}
}
-
override fun TaskRunningContext.getIrsToAddToBuildFile(module: ModuleIR): List = buildList {
+RepositoryIR(DefaultRepository.JCENTER)
if (module is MultiplatformModuleIR) {
+GradleImportIR("org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack")
val taskAccessIR = GradleByNameTaskAccessIR(
- "${module.name}BrowserWebpack",
+ "${module.name}$WEBPACK_TASK_SUFFIX",
WEBPACK_TASK_CLASS
)
@@ -157,5 +209,56 @@ class SimpleJsClientTemplate : Template() {
companion object {
private const val JS_OUTPUT_FILE_NAME = "output.js"
private const val WEBPACK_TASK_CLASS = "KotlinWebpack"
+ private const val WEBPACK_TASK_SUFFIX = "BrowserProductionWebpack"
}
-}
\ No newline at end of file
+
+ private object Dependencies {
+ val KOTLIN_REACT = ArtifactBasedLibraryDependencyIR(
+ MavenArtifact(Repositories.KOTLIN_JS_WRAPPERS_BINTRAY, "org.jetbrains", "kotlin-react"),
+ Version.fromString("16.9.0-pre.89-kotlin-1.3.60"),
+ DependencyType.MAIN
+ )
+ val KOTLIN_REACT_DOM = ArtifactBasedLibraryDependencyIR(
+ MavenArtifact(Repositories.KOTLIN_JS_WRAPPERS_BINTRAY, "org.jetbrains", "kotlin-react-dom"),
+ Version.fromString("16.9.0-pre.89-kotlin-1.3.60"),
+ DependencyType.MAIN
+ )
+ val KOTLIN_STYLED = ArtifactBasedLibraryDependencyIR(
+ MavenArtifact(Repositories.KOTLIN_JS_WRAPPERS_BINTRAY, "org.jetbrains", "kotlin-styled"),
+ Version.fromString("1.0.0-pre.89-kotlin-1.3.60"),
+ DependencyType.MAIN
+ )
+
+ val NPM_REACT = ArtifactBasedLibraryDependencyIR(
+ NpmArtifact("react"),
+ Version.fromString("16.12.0"),
+ DependencyType.MAIN
+ )
+ val NPM_REACT_DOM = ArtifactBasedLibraryDependencyIR(
+ NpmArtifact("react-dom"),
+ Version.fromString("16.12.0"),
+ DependencyType.MAIN
+ )
+ val NPM_REACT_IS = ArtifactBasedLibraryDependencyIR(
+ NpmArtifact("react-is"),
+ Version.fromString("16.12.0"),
+ DependencyType.MAIN
+ )
+ val NPM_STYLED_COMPONENTS = ArtifactBasedLibraryDependencyIR(
+ NpmArtifact("styled-components"),
+ Version.fromString("5.0.0"),
+ DependencyType.MAIN
+ )
+ val NPM_INLINE_STYLE_PREFIXER = ArtifactBasedLibraryDependencyIR(
+ NpmArtifact("inline-style-prefixer"),
+ Version.fromString("5.1.0"),
+ DependencyType.MAIN
+ )
+ }
+
+ enum class RenderEngine(override val text: String) : DisplayableSettingItem {
+ KOTLINX_HTML("Use statically typed Kotlinx.html DSL"),
+ REACT("Use Kotlin-wrapped React library"),
+ REACT_WITH_STYLED("Use Kotlin-wrapped React framework together with Styled Components"),
+ }
+}