Migrate to new build tools and DF 0.6

This commit is contained in:
Alexander Nozik 2022-07-06 11:11:48 +03:00
parent 86935ce52a
commit 4b1149b99b
No known key found for this signature in database
GPG Key ID: F7FCF2DD25C71357
25 changed files with 77 additions and 43 deletions

View File

@ -3,12 +3,12 @@ plugins {
// id("org.jetbrains.kotlinx.kover") version "0.5.0" // id("org.jetbrains.kotlinx.kover") version "0.5.0"
} }
val dataforgeVersion by extra("0.5.2") val dataforgeVersion by extra("0.6.0-dev-10")
val fxVersion by extra("11") val fxVersion by extra("11")
allprojects{ allprojects{
group = "space.kscience" group = "space.kscience"
version = "0.3.0-dev-1" version = "0.3.0-dev-2"
} }
subprojects { subprojects {
@ -19,6 +19,12 @@ subprojects {
mavenCentral() mavenCentral()
maven("https://maven.jzy3d.org/releases") maven("https://maven.jzy3d.org/releases")
} }
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>{
kotlinOptions{
freeCompilerArgs = freeCompilerArgs + "-Xcontext-receivers"
}
}
} }
ksciencePublish { ksciencePublish {

View File

@ -2,12 +2,13 @@ package space.kscience.visionforge.gdml.demo
import kotlinx.browser.document import kotlinx.browser.document
import kotlinx.css.* import kotlinx.css.*
import react.dom.render import react.dom.client.createRoot
import space.kscience.dataforge.context.Context import space.kscience.dataforge.context.Context
import space.kscience.gdml.GdmlShowCase import space.kscience.gdml.GdmlShowCase
import space.kscience.visionforge.Application import space.kscience.visionforge.Application
import space.kscience.visionforge.Colors import space.kscience.visionforge.Colors
import space.kscience.visionforge.gdml.toVision import space.kscience.visionforge.gdml.toVision
import space.kscience.visionforge.react.render
import space.kscience.visionforge.solid.ambientLight import space.kscience.visionforge.solid.ambientLight
import space.kscience.visionforge.solid.invoke import space.kscience.visionforge.solid.invoke
import space.kscience.visionforge.solid.three.ThreePlugin import space.kscience.visionforge.solid.three.ThreePlugin
@ -42,7 +43,7 @@ private class GDMLDemoApp : Application {
val element = document.getElementById("application") ?: error("Element with id 'application' not found on page") val element = document.getElementById("application") ?: error("Element with id 'application' not found on page")
render(element) { createRoot(element).render {
child(GDMLApp) { child(GDMLApp) {
val vision = GdmlShowCase.cubes().toVision().apply { val vision = GdmlShowCase.cubes().toVision().apply {
ambientLight { ambientLight {

View File

@ -1,6 +1,6 @@
import kotlinx.browser.document import kotlinx.browser.document
import kotlinx.css.* import kotlinx.css.*
import react.dom.render import react.dom.client.createRoot
import ringui.SmartTabs import ringui.SmartTabs
import ringui.Tab import ringui.Tab
import space.kscience.dataforge.context.Context import space.kscience.dataforge.context.Context
@ -10,6 +10,7 @@ import space.kscience.visionforge.Application
import space.kscience.visionforge.Colors import space.kscience.visionforge.Colors
import space.kscience.visionforge.VisionClient import space.kscience.visionforge.VisionClient
import space.kscience.visionforge.plotly.PlotlyPlugin import space.kscience.visionforge.plotly.PlotlyPlugin
import space.kscience.visionforge.react.render
import space.kscience.visionforge.ring.ThreeCanvasWithControls import space.kscience.visionforge.ring.ThreeCanvasWithControls
import space.kscience.visionforge.ring.ThreeWithControlsPlugin import space.kscience.visionforge.ring.ThreeWithControlsPlugin
import space.kscience.visionforge.ring.solid import space.kscience.visionforge.ring.solid
@ -38,7 +39,7 @@ private class JsPlaygroundApp : Application {
val element = document.getElementById("playground") ?: error("Element with id 'playground' not found on page") val element = document.getElementById("playground") ?: error("Element with id 'playground' not found on page")
render(element) { createRoot(element).render {
styledDiv { styledDiv {
css { css {
padding(0.pt) padding(0.pt)

View File

@ -1,11 +1,12 @@
package ru.mipt.npm.muon.monitor package ru.mipt.npm.muon.monitor
import kotlinx.browser.document import kotlinx.browser.document
import react.dom.render import react.dom.client.createRoot
import space.kscience.dataforge.context.Context import space.kscience.dataforge.context.Context
import space.kscience.dataforge.context.fetch import space.kscience.dataforge.context.fetch
import space.kscience.visionforge.Application import space.kscience.visionforge.Application
import space.kscience.visionforge.VisionManager import space.kscience.visionforge.VisionManager
import space.kscience.visionforge.react.render
import space.kscience.visionforge.solid.three.ThreePlugin import space.kscience.visionforge.solid.three.ThreePlugin
import space.kscience.visionforge.startApplication import space.kscience.visionforge.startApplication
@ -21,7 +22,7 @@ private class MMDemoApp : Application {
val model = Model(visionManager) val model = Model(visionManager)
val element = document.getElementById("app") ?: error("Element with id 'app' not found on page") val element = document.getElementById("app") ?: error("Element with id 'app' not found on page")
render(element) { createRoot(element).render {
child(MMApp) { child(MMApp) {
attrs { attrs {
this.model = model this.model = model

View File

@ -6,4 +6,4 @@ kotlin.jupyter.add.scanner=false
org.gradle.parallel=true org.gradle.parallel=true
org.gradle.jvmargs=-Xmx4G org.gradle.jvmargs=-Xmx4G
toolsVersion=0.11.4-kotlin-1.6.20 toolsVersion=0.11.7-kotlin-1.7.0

View File

@ -9,3 +9,7 @@ dependencies{
// implementation(npm("react-select","4.3.0")) // implementation(npm("react-select","4.3.0"))
implementation(project(":visionforge-threejs")) implementation(project(":visionforge-threejs"))
} }
rootProject.extensions.configure<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension> {
versions.webpackCli.version = "4.10.0"
}

View File

@ -7,7 +7,7 @@ import org.w3c.dom.Element
import org.w3c.dom.events.Event import org.w3c.dom.events.Event
import react.* import react.*
import react.dom.attrs import react.dom.attrs
import react.dom.render import react.dom.client.createRoot
import space.kscience.dataforge.meta.* import space.kscience.dataforge.meta.*
import space.kscience.dataforge.meta.descriptors.MetaDescriptor import space.kscience.dataforge.meta.descriptors.MetaDescriptor
import space.kscience.dataforge.meta.descriptors.ValueRequirement import space.kscience.dataforge.meta.descriptors.ValueRequirement
@ -235,6 +235,6 @@ public fun Element.configEditor(
default: Meta = config, default: Meta = config,
descriptor: MetaDescriptor? = null, descriptor: MetaDescriptor? = null,
key: Any? = null, key: Any? = null,
): Unit = render(this) { ): Unit = createRoot(this).render {
configEditor(config, default, descriptor, key = key) configEditor(config, default, descriptor, key = key)
} }

View File

@ -0,0 +1,10 @@
package space.kscience.visionforge.react
import react.Props
import react.RBuilder
import react.createElement
import react.dom.client.Root
public fun Root.render(block: RBuilder.() -> Unit) {
render(createElement<Props>(block))
}

View File

@ -2,7 +2,7 @@ package space.kscience.visionforge.ring
import kotlinx.coroutines.async import kotlinx.coroutines.async
import org.w3c.dom.Element import org.w3c.dom.Element
import react.child import react.dom.client.createRoot
import space.kscience.dataforge.context.AbstractPlugin import space.kscience.dataforge.context.AbstractPlugin
import space.kscience.dataforge.context.Context import space.kscience.dataforge.context.Context
import space.kscience.dataforge.context.PluginFactory import space.kscience.dataforge.context.PluginFactory
@ -12,6 +12,7 @@ import space.kscience.dataforge.names.Name
import space.kscience.dataforge.names.asName import space.kscience.dataforge.names.asName
import space.kscience.visionforge.ElementVisionRenderer import space.kscience.visionforge.ElementVisionRenderer
import space.kscience.visionforge.Vision import space.kscience.visionforge.Vision
import space.kscience.visionforge.react.render
import space.kscience.visionforge.solid.Solid import space.kscience.visionforge.solid.Solid
import space.kscience.visionforge.solid.three.ThreePlugin import space.kscience.visionforge.solid.three.ThreePlugin
import kotlin.reflect.KClass import kotlin.reflect.KClass
@ -25,7 +26,7 @@ public class ThreeWithControlsPlugin : AbstractPlugin(), ElementVisionRenderer {
if (vision is Solid) ElementVisionRenderer.DEFAULT_RATING * 2 else ElementVisionRenderer.ZERO_RATING if (vision is Solid) ElementVisionRenderer.DEFAULT_RATING * 2 else ElementVisionRenderer.ZERO_RATING
override fun render(element: Element, vision: Vision, meta: Meta) { override fun render(element: Element, vision: Vision, meta: Meta) {
react.dom.render(element) { createRoot(element).render {
child(ThreeCanvasWithControls) { child(ThreeCanvasWithControls) {
attrs { attrs {
this.context = this@ThreeWithControlsPlugin.context this.context = this@ThreeWithControlsPlugin.context
@ -45,6 +46,7 @@ public class ThreeWithControlsPlugin : AbstractPlugin(), ElementVisionRenderer {
public companion object : PluginFactory<ThreeWithControlsPlugin> { public companion object : PluginFactory<ThreeWithControlsPlugin> {
override val tag: PluginTag = PluginTag("vision.threejs.withControls", PluginTag.DATAFORGE_GROUP) override val tag: PluginTag = PluginTag("vision.threejs.withControls", PluginTag.DATAFORGE_GROUP)
override val type: KClass<ThreeWithControlsPlugin> = ThreeWithControlsPlugin::class override val type: KClass<ThreeWithControlsPlugin> = ThreeWithControlsPlugin::class
override fun invoke(meta: Meta, context: Context): ThreeWithControlsPlugin = ThreeWithControlsPlugin()
override fun build(context: Context, meta: Meta): ThreeWithControlsPlugin = ThreeWithControlsPlugin()
} }
} }

View File

@ -2,8 +2,8 @@ package space.kscience.visionforge.ring
import org.w3c.dom.Element import org.w3c.dom.Element
import react.RBuilder import react.RBuilder
import react.dom.client.createRoot
import react.dom.p import react.dom.p
import react.dom.render
import ringui.Island import ringui.Island
import ringui.SmartTabs import ringui.SmartTabs
import ringui.Tab import ringui.Tab
@ -14,6 +14,7 @@ import space.kscience.visionforge.getStyle
import space.kscience.visionforge.react.flexColumn import space.kscience.visionforge.react.flexColumn
import space.kscience.visionforge.react.metaViewer import space.kscience.visionforge.react.metaViewer
import space.kscience.visionforge.react.propertyEditor import space.kscience.visionforge.react.propertyEditor
import space.kscience.visionforge.react.render
import space.kscience.visionforge.solid.SolidReference import space.kscience.visionforge.solid.SolidReference
import space.kscience.visionforge.styles import space.kscience.visionforge.styles
@ -72,6 +73,6 @@ public fun RBuilder.ringPropertyEditor(
public fun Element.ringPropertyEditor( public fun Element.ringPropertyEditor(
item: Vision, item: Vision,
descriptor: MetaDescriptor? = item.descriptor, descriptor: MetaDescriptor? = item.descriptor,
): Unit = render(this) { ): Unit = createRoot(this).render {
ringPropertyEditor(item, descriptor = descriptor) ringPropertyEditor(item, descriptor = descriptor)
} }

View File

@ -63,7 +63,7 @@ public class VisionManager(meta: Meta) : AbstractPlugin(meta) {
public const val VISION_SERIALIZER_MODULE_TARGET: String = "visionSerializerModule" public const val VISION_SERIALIZER_MODULE_TARGET: String = "visionSerializerModule"
override fun invoke(meta: Meta, context: Context): VisionManager = VisionManager(meta) override fun build(context: Context, meta: Meta): VisionManager = VisionManager(meta)
private val defaultSerialModule: SerializersModule = SerializersModule { private val defaultSerialModule: SerializersModule = SerializersModule {
polymorphic(Vision::class) { polymorphic(Vision::class) {

View File

@ -203,8 +203,7 @@ public class VisionClient : AbstractPlugin() {
) else super.content(target) ) else super.content(target)
public companion object : PluginFactory<VisionClient> { public companion object : PluginFactory<VisionClient> {
override fun build(context: Context, meta: Meta): VisionClient = VisionClient()
override fun invoke(meta: Meta, context: Context): VisionClient = VisionClient()
override val tag: PluginTag = PluginTag(name = "vision.client", group = PluginTag.DATAFORGE_GROUP) override val tag: PluginTag = PluginTag(name = "vision.client", group = PluginTag.DATAFORGE_GROUP)

View File

@ -95,8 +95,9 @@ public class FXPlugin(meta: Meta = Meta.EMPTY) : AbstractPlugin(meta) {
public companion object : PluginFactory<FXPlugin> { public companion object : PluginFactory<FXPlugin> {
override val type: KClass<out FXPlugin> = FXPlugin::class override val type: KClass<out FXPlugin> = FXPlugin::class
override val tag: PluginTag = PluginTag("vis.fx", group = PluginTag.DATAFORGE_GROUP) override val tag: PluginTag = PluginTag("vis.fx", group = PluginTag.DATAFORGE_GROUP)
override fun invoke(meta: Meta, context: Context): FXPlugin =
FXPlugin(meta) override fun build(context: Context, meta: Meta): FXPlugin = FXPlugin(meta)
} }
} }

View File

@ -138,7 +138,8 @@ public class FX3DPlugin : AbstractPlugin() {
public companion object : PluginFactory<FX3DPlugin> { public companion object : PluginFactory<FX3DPlugin> {
override val tag: PluginTag = PluginTag("vision.fx3D", PluginTag.DATAFORGE_GROUP) override val tag: PluginTag = PluginTag("vision.fx3D", PluginTag.DATAFORGE_GROUP)
override val type: KClass<FX3DPlugin> = FX3DPlugin::class override val type: KClass<FX3DPlugin> = FX3DPlugin::class
override fun invoke(meta: Meta, context: Context): FX3DPlugin = FX3DPlugin()
override fun build(context: Context, meta: Meta): FX3DPlugin = FX3DPlugin()
} }
} }

View File

@ -47,6 +47,8 @@ public class MarkupPlugin : VisionPlugin(), ElementVisionRenderer {
public companion object : PluginFactory<MarkupPlugin> { public companion object : PluginFactory<MarkupPlugin> {
override val tag: PluginTag = PluginTag("vision.markup", PluginTag.DATAFORGE_GROUP) override val tag: PluginTag = PluginTag("vision.markup", PluginTag.DATAFORGE_GROUP)
override val type: KClass<MarkupPlugin> = MarkupPlugin::class override val type: KClass<MarkupPlugin> = MarkupPlugin::class
override fun invoke(meta: Meta, context: Context): MarkupPlugin = MarkupPlugin()
override fun build(context: Context, meta: Meta): MarkupPlugin = MarkupPlugin()
} }
} }

View File

@ -42,6 +42,8 @@ public actual class PlotlyPlugin : VisionPlugin(), ElementVisionRenderer {
public actual companion object : PluginFactory<PlotlyPlugin> { public actual companion object : PluginFactory<PlotlyPlugin> {
override val tag: PluginTag = PluginTag("vision.plotly.js", PluginTag.DATAFORGE_GROUP) override val tag: PluginTag = PluginTag("vision.plotly.js", PluginTag.DATAFORGE_GROUP)
override val type: KClass<PlotlyPlugin> = PlotlyPlugin::class override val type: KClass<PlotlyPlugin> = PlotlyPlugin::class
override fun invoke(meta: Meta, context: Context): PlotlyPlugin = PlotlyPlugin()
override fun build(context: Context, meta: Meta): PlotlyPlugin = PlotlyPlugin()
} }
} }

View File

@ -2,7 +2,6 @@ package space.kscience.visionforge.plotly
import kotlinx.serialization.modules.SerializersModule import kotlinx.serialization.modules.SerializersModule
import space.kscience.dataforge.context.Context import space.kscience.dataforge.context.Context
import space.kscience.dataforge.context.Plugin
import space.kscience.dataforge.context.PluginFactory import space.kscience.dataforge.context.PluginFactory
import space.kscience.dataforge.context.PluginTag import space.kscience.dataforge.context.PluginTag
import space.kscience.dataforge.meta.Meta import space.kscience.dataforge.meta.Meta
@ -18,6 +17,8 @@ public actual class PlotlyPlugin : VisionPlugin() {
public actual companion object : PluginFactory<PlotlyPlugin> { public actual companion object : PluginFactory<PlotlyPlugin> {
override val tag: PluginTag = PluginTag("vision.plotly", PluginTag.DATAFORGE_GROUP) override val tag: PluginTag = PluginTag("vision.plotly", PluginTag.DATAFORGE_GROUP)
override val type: KClass<PlotlyPlugin> = PlotlyPlugin::class override val type: KClass<PlotlyPlugin> = PlotlyPlugin::class
override fun invoke(meta: Meta, context: Context): PlotlyPlugin = PlotlyPlugin()
override fun build(context: Context, meta: Meta): PlotlyPlugin = PlotlyPlugin()
} }
} }

View File

@ -24,7 +24,8 @@ public class Solids(meta: Meta) : VisionPlugin(meta) {
public companion object : PluginFactory<Solids> { public companion object : PluginFactory<Solids> {
override val tag: PluginTag = PluginTag(name = "vision.solid", group = PluginTag.DATAFORGE_GROUP) override val tag: PluginTag = PluginTag(name = "vision.solid", group = PluginTag.DATAFORGE_GROUP)
override val type: KClass<out Solids> = Solids::class override val type: KClass<out Solids> = Solids::class
override fun invoke(meta: Meta, context: Context): Solids = Solids(meta)
override fun build(context: Context, meta: Meta): Solids = Solids(meta)
private fun PolymorphicModuleBuilder<Solid>.solids() { private fun PolymorphicModuleBuilder<Solid>.solids() {
subclass(SolidGroup.serializer()) subclass(SolidGroup.serializer())

View File

@ -2,7 +2,7 @@ plugins {
id("ru.mipt.npm.gradle.mpp") id("ru.mipt.npm.gradle.mpp")
} }
val tablesVersion = "0.1.4" val tablesVersion = "0.2.0-dev-1"
kscience { kscience {
useSerialization() useSerialization()

View File

@ -8,7 +8,6 @@ import space.kscience.dataforge.context.PluginFactory
import space.kscience.dataforge.context.PluginTag import space.kscience.dataforge.context.PluginTag
import space.kscience.dataforge.meta.Meta import space.kscience.dataforge.meta.Meta
import space.kscience.visionforge.Vision import space.kscience.visionforge.Vision
import space.kscience.visionforge.VisionManager
import space.kscience.visionforge.VisionPlugin import space.kscience.visionforge.VisionPlugin
import kotlin.reflect.KClass import kotlin.reflect.KClass
@ -25,6 +24,7 @@ public class TableVisionPlugin : VisionPlugin() {
public companion object : PluginFactory<TableVisionPlugin> { public companion object : PluginFactory<TableVisionPlugin> {
override val tag: PluginTag = PluginTag("vision.table", PluginTag.DATAFORGE_GROUP) override val tag: PluginTag = PluginTag("vision.table", PluginTag.DATAFORGE_GROUP)
override val type: KClass<TableVisionPlugin> = TableVisionPlugin::class override val type: KClass<TableVisionPlugin> = TableVisionPlugin::class
override fun invoke(meta: Meta, context: Context): TableVisionPlugin = TableVisionPlugin()
override fun build(context: Context, meta: Meta): TableVisionPlugin = TableVisionPlugin()
} }
} }

View File

@ -86,7 +86,7 @@ public fun Table<Number>.toVision(): VisionOfTable = toVision { (it ?: Double.Na
@DFExperimental @DFExperimental
public inline fun VisionOutput.table( public inline fun VisionOutput.table(
vararg headers: ColumnHeader<Value>, vararg headers: ColumnHeader<Value>,
block: MutableRowTable<Value>.() -> Unit, block: RowTableBuilder<Value>.() -> Unit,
): VisionOfTable { ): VisionOfTable {
requirePlugin(TableVisionPlugin) requirePlugin(TableVisionPlugin)
return RowTable(*headers, block = block).toVision() return RowTable(*headers, block = block).toVision()
@ -94,8 +94,8 @@ public inline fun VisionOutput.table(
@DFExperimental @DFExperimental
public inline fun VisionOutput.columnTable( public inline fun VisionOutput.columnTable(
columnSize: UInt, columnSize: Int,
block: MutableColumnTable<Value>.() -> Unit, block: ColumnTableBuilder<Value>.() -> Unit,
): VisionOfTable = ColumnTable(columnSize, block).toVision() ): VisionOfTable = ColumnTable(columnSize, block).toVision()
@DFExperimental @DFExperimental

View File

@ -17,7 +17,7 @@ internal class VisionOfTableTest {
val x by ColumnHeader.typed<Value>() val x by ColumnHeader.typed<Value>()
val y by ColumnHeader.typed<Value>() val y by ColumnHeader.typed<Value>()
val table = ColumnTable<Value>(100U) { val table = ColumnTable(100) {
x.fill { it.asValue() } x.fill { it.asValue() }
y.values = x.values.map { it?.double?.pow(2)?.asValue() } y.values = x.values.map { it?.double?.pow(2)?.asValue() }
} }
@ -27,6 +27,6 @@ internal class VisionOfTableTest {
val rows = vision.rowSequence().toList() val rows = vision.rowSequence().toList()
assertEquals(50, rows[50][x]?.int) assertEquals(50, rows[50][x].int)
} }
} }

View File

@ -7,7 +7,6 @@ import space.kscience.dataforge.context.AbstractPlugin
import space.kscience.dataforge.context.Context import space.kscience.dataforge.context.Context
import space.kscience.dataforge.context.PluginFactory import space.kscience.dataforge.context.PluginFactory
import space.kscience.dataforge.context.PluginTag import space.kscience.dataforge.context.PluginTag
import space.kscience.dataforge.meta.DynamicMeta
import space.kscience.dataforge.meta.Meta import space.kscience.dataforge.meta.Meta
import space.kscience.dataforge.meta.toDynamic import space.kscience.dataforge.meta.toDynamic
import space.kscience.dataforge.names.Name import space.kscience.dataforge.names.Name
@ -49,15 +48,15 @@ public class TableVisionJsPlugin : AbstractPlugin(), ElementVisionRenderer {
} }
}.toTypedArray() }.toTypedArray()
columns = Array(table.headers.size + 1){ columns = Array(table.headers.size + 1) {
if(it==0){ if (it == 0) {
jso { jso {
field = "@index" field = "@index"
title = "#" title = "#"
resizable = false resizable = false
} }
} else { } else {
val header = table.headers[it-1] val header = table.headers[it - 1]
jso { jso {
field = header.name field = header.name
title = header.properties.title ?: header.name title = header.properties.title ?: header.name
@ -67,7 +66,7 @@ public class TableVisionJsPlugin : AbstractPlugin(), ElementVisionRenderer {
} }
data = table.rows.mapIndexed { index, row-> data = table.rows.mapIndexed { index, row ->
val d = row.meta.toDynamic() val d = row.meta.toDynamic()
d["@index"] = index d["@index"] = index
d d
@ -91,6 +90,7 @@ public class TableVisionJsPlugin : AbstractPlugin(), ElementVisionRenderer {
public companion object : PluginFactory<TableVisionJsPlugin> { public companion object : PluginFactory<TableVisionJsPlugin> {
override val tag: PluginTag = PluginTag("vision.table.js", PluginTag.DATAFORGE_GROUP) override val tag: PluginTag = PluginTag("vision.table.js", PluginTag.DATAFORGE_GROUP)
override val type: KClass<TableVisionJsPlugin> = TableVisionJsPlugin::class override val type: KClass<TableVisionJsPlugin> = TableVisionJsPlugin::class
override fun invoke(meta: Meta, context: Context): TableVisionJsPlugin = TableVisionJsPlugin()
override fun build(context: Context, meta: Meta): TableVisionJsPlugin = TableVisionJsPlugin()
} }
} }

View File

@ -4,7 +4,7 @@ package space.kscience.visionforge.solid.three
import info.laht.threekt.core.Object3D import info.laht.threekt.core.Object3D
import info.laht.threekt.geometries.TextBufferGeometry import info.laht.threekt.geometries.TextBufferGeometry
import info.laht.threekt.objects.Mesh import info.laht.threekt.objects.Mesh
import kotlinext.js.jso import kotlinx.js.jso
import space.kscience.dataforge.context.logger import space.kscience.dataforge.context.logger
import space.kscience.dataforge.context.warn import space.kscience.dataforge.context.warn
import space.kscience.visionforge.onPropertyChange import space.kscience.visionforge.onPropertyChange

View File

@ -151,7 +151,8 @@ public class ThreePlugin : AbstractPlugin(), ElementVisionRenderer {
public companion object : PluginFactory<ThreePlugin> { public companion object : PluginFactory<ThreePlugin> {
override val tag: PluginTag = PluginTag("vision.threejs", PluginTag.DATAFORGE_GROUP) override val tag: PluginTag = PluginTag("vision.threejs", PluginTag.DATAFORGE_GROUP)
override val type: KClass<ThreePlugin> = ThreePlugin::class override val type: KClass<ThreePlugin> = ThreePlugin::class
override fun invoke(meta: Meta, context: Context): ThreePlugin = ThreePlugin()
override fun build(context: Context, meta: Meta): ThreePlugin = ThreePlugin()
} }
} }