Merge branch 'beta/1.9.20' into dev

This commit is contained in:
Alexander Nozik 2023-10-18 13:41:25 +03:00
commit 6144410d22
229 changed files with 148 additions and 136 deletions

View File

@ -1,5 +1,4 @@
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompile
import space.kscience.gradle.isInDevelopment
import space.kscience.gradle.useApache2Licence
import space.kscience.gradle.useSPCTeam
@ -8,7 +7,7 @@ plugins {
// id("org.jetbrains.kotlinx.kover") version "0.5.0"
}
val dataforgeVersion by extra("0.6.1")
val dataforgeVersion by extra("0.6.2")
val fxVersion by extra("11")
allprojects {
@ -45,14 +44,7 @@ ksciencePublish {
useApache2Licence()
useSPCTeam()
}
github(githubProject = "visionforge", githubOrg = "SciProgCentre")
space(
if (isInDevelopment) {
"https://maven.pkg.jetbrains.space/spc/p/sci/dev"
} else {
"https://maven.pkg.jetbrains.space/spc/p/sci/maven"
}
)
repository("spc","https://maven.sciprog.center/kscience")
sonatype()
}

View File

@ -2,6 +2,8 @@ plugins {
id("space.kscience.gradle.mpp")
}
group = "demo"
kscience {
jvm()
js {

View File

@ -9,30 +9,38 @@ import react.Component
import react.Props
import react.State
external enum class DropEffects {
copy,
move,
link,
none
sealed external class DropEffects {
@JsName("copy")
object Copy : DropEffects
@JsName("move")
object Move : DropEffects
@JsName("link")
object Link : DropEffects
@JsName("none")
object None : DropEffects
}
external interface FileDropProps: Props {
external interface FileDropProps : Props {
var className: String?
var targetClassName: String?
var draggingOverFrameClassName: String?
var draggingOverTargetClassName: String?
// var frame?: Exclude<HTMLElementTagNameMap[keyof HTMLElementTagNameMap], HTMLElement> | HTMLDocument;
// var frame?: Exclude<HTMLElementTagNameMap[keyof HTMLElementTagNameMap], HTMLElement> | HTMLDocument;
var onFrameDragEnter: ((event: DragEvent) -> Unit)?
var onFrameDragLeave: ((event: DragEvent) -> Unit)?
var onFrameDrop: ((event: DragEvent) -> Unit)?
// var onDragOver: ReactDragEventHandler<HTMLDivElement>?
// var onDragOver: ReactDragEventHandler<HTMLDivElement>?
// var onDragLeave: ReactDragEventHandler<HTMLDivElement>?
var onDrop: ((files: FileList?, event: dynamic) -> Unit)?//event:DragEvent<HTMLDivElement>)
var dropEffect: DropEffects?
}
external interface FileDropState: State {
external interface FileDropState : State {
var draggingOverFrame: Boolean
var draggingOverTarget: Boolean
}

View File

@ -2,7 +2,6 @@ package space.kscience.visionforge.gdml.demo
import drop.FileDrop
import kotlinx.css.*
import kotlinx.css.properties.border
import org.w3c.files.FileList
import react.RBuilder
import styled.css
@ -13,7 +12,7 @@ import styled.styledDiv
fun RBuilder.fileDrop(title: String, action: (files: FileList?) -> Unit) {
styledDiv {
css {
border(style = BorderStyle.dashed, width = 1.px, color = Color.orange)
border = Border(style = BorderStyle.dashed, width = 1.px, color = Color.orange)
flexGrow = 0.0
alignContent = Align.center
}

View File

@ -1,19 +1,19 @@
plugins {
id("space.kscience.gradle.js")
id("space.kscience.gradle.mpp")
}
kscience{
kscience {
useCoroutines()
}
kotlin{
kotlin {
explicitApi = null
js{
js {
useCommonJs()
browser {
binaries.executable()
commonWebpackConfig {
cssSupport{
cssSupport {
enabled.set(false)
}
}
@ -21,11 +21,15 @@ kotlin{
}
}
kscience {
dependencies{
implementation(projects.visionforge.visionforgeGdml)
implementation(projects.visionforge.visionforgePlotly)
implementation(projects.visionforge.visionforgeMarkdown)
implementation(projects.visionforge.visionforgeThreejs)
implementation(projects.ui.ring)
dependencies {
implementation(projects.visionforge.visionforgeGdml)
implementation(projects.visionforge.visionforgePlotly)
implementation(projects.visionforge.visionforgeMarkdown)
implementation(projects.visionforge.visionforgeThreejs)
}
jsMain {
implementation(projects.ui.ring)
}
}

View File

@ -43,8 +43,8 @@ private class JsPlaygroundApp : Application {
createRoot(element).render {
styledDiv {
css {
padding(0.pt)
margin(0.pt)
padding = Padding(0.pt)
margin = Margin(0.pt)
height = 100.vh
width = 100.vw
}

View File

@ -1,5 +1,4 @@
import kotlinx.css.*
import kotlinx.css.properties.border
import kotlinx.dom.clear
import kotlinx.html.dom.append
import org.intellij.markdown.flavours.commonmark.CommonMarkFlavourDescriptor
@ -45,10 +44,10 @@ val Markup = fc<MarkupProps>("Markup") { props ->
css {
width = 100.pct
height = 100.pct
border(2.pt, BorderStyle.solid, Color.blue)
padding(left = 8.pt)
border= Border(2.pt, BorderStyle.solid, Color.blue)
padding = Padding(left = 8.pt)
backgroundColor = Color.white
flex(1.0)
flex = Flex(1.0)
zIndex = 10000
}
ref = elementRef

View File

@ -1,5 +1,4 @@
import kotlinx.css.*
import kotlinx.css.properties.border
import org.w3c.dom.Element
import org.w3c.dom.HTMLElement
import react.*
@ -30,8 +29,8 @@ val Plotly = fc<PlotlyProps>("Plotly") { props ->
css {
width = 100.pct
height = 100.pct
border(2.pt, BorderStyle.solid, Color.blue)
flex(1.0)
border = Border(2.pt, BorderStyle.solid, Color.blue)
flex = Flex(1.0)
}
ref = elementRef
}

View File

@ -34,8 +34,8 @@ kscience {
implementation("ch.qos.logback:logback-classic:1.2.11")
}
jsMain {
implementation(project(":ui:ring"))
implementation(project(":visionforge-threejs"))
implementation(projects.ui.ring)
implementation(projects.visionforgeThreejs)
//implementation(devNpm("webpack-bundle-analyzer", "4.4.0"))
}
}

View File

@ -17,7 +17,7 @@ kotlin {
useCommonJs()
browser {
webpackTask {
outputFileName = "js/visionforge-playground.js"
mainOutputFileName.set("js/visionforge-playground.js")
}
commonWebpackConfig {
sourceMaps = true

View File

@ -14,6 +14,7 @@ import space.kscience.visionforge.html.ResourceLocation
import space.kscience.visionforge.solid.*
import java.util.zip.ZipInputStream
import kotlin.io.path.Path
import kotlin.io.path.createDirectories
import kotlin.io.path.writeText
@ -25,6 +26,8 @@ private fun Meta.countTypes(): Sequence<String> = sequence {
}
fun main() {
Path("data").createDirectories()
val string = ZipInputStream(TGeoManager::class.java.getResourceAsStream("/root/geometry_run_7-2076.zip")!!).use {
it.nextEntry
it.readAllBytes().decodeToString()

View File

@ -6,5 +6,8 @@ kotlin.js.compiler=ir
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx4G
toolsVersion=0.14.9-kotlin-1.8.20
org.jetbrains.compose.experimental.jscanvas.enabled=true
toolsVersion=0.15.0-kotlin-1.9.20-RC
#kotlin.experimental.tryK2=true
#kscience.wasm.disabled=true

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@ -1,15 +1,19 @@
plugins {
kotlin("js")
id("space.kscience.gradle.js")
id("space.kscience.gradle.mpp")
}
val dataforgeVersion: String by rootProject.extra
dependencies {
api(project(":visionforge-solid"))
api(project(":ui:react"))
implementation(npm("file-saver", "2.0.2"))
implementation(npm("bootstrap","4.6.0"))
implementation(npm("jquery","3.5.1"))
implementation(npm("popper.js","1.16.1"))
kscience{
js()
jsMain{
dependencies {
api(project(":visionforge-solid"))
api(project(":ui:react"))
implementation(npm("file-saver", "2.0.2"))
implementation(npm("bootstrap","4.6.0"))
implementation(npm("jquery","3.5.1"))
implementation(npm("popper.js","1.16.1"))
}
}
}

View File

@ -1,8 +1,8 @@
package space.kscience.visionforge.bootstrap
public fun useBootstrap(){
kotlinext.js.require("bootstrap/dist/css/bootstrap.min.css")
kotlinext.js.require("bootstrap")
kotlinext.js.require<dynamic>("bootstrap/dist/css/bootstrap.min.css")
kotlinext.js.require<dynamic>("bootstrap")
}
//public inline fun TagConsumer<HTMLElement>.card(title: String, crossinline block: TagConsumer<HTMLElement>.() -> Unit) {

View File

@ -2,13 +2,9 @@ package space.kscience.visionforge.bootstrap
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.GlobalScope
import kotlinx.css.BorderStyle
import kotlinx.css.Color
import kotlinx.css.padding
import kotlinx.css.properties.border
import kotlinx.css.px
import kotlinx.css.*
import kotlinx.html.js.onClickFunction
import kotlinx.html.org.w3c.dom.events.Event
import org.w3c.dom.events.Event
import org.w3c.files.Blob
import org.w3c.files.BlobPropertyBag
import react.FC
@ -29,7 +25,7 @@ private fun saveData(event: Event, fileName: String, mimeType: String = "text/pl
event.stopPropagation();
event.preventDefault();
val fileSaver = kotlinext.js.require("file-saver")
val fileSaver = kotlinext.js.require<dynamic>("file-saver")
val blob = Blob(arrayOf(dataBuilder()), BlobPropertyBag("$mimeType;charset=utf-8"))
fileSaver.saveAs(blob, fileName)
}
@ -53,8 +49,8 @@ public val CanvasControls: FC<CanvasControlsProps> = fc("CanvasControls") { prop
flexColumn {
flexRow {
css {
border(1.px, BorderStyle.solid, Color.blue)
padding(4.px)
border = Border(1.px, BorderStyle.solid, Color.blue)
padding = Padding(4.px)
}
props.vision?.let { vision ->
button {

View File

@ -1,7 +1,6 @@
package space.kscience.visionforge.bootstrap
import kotlinx.css.*
import kotlinx.css.properties.border
import react.FC
import react.PropsWithChildren
import react.RBuilder
@ -33,13 +32,13 @@ public val ThreeControls: FC<ThreeControlsProps> = fc { props ->
}
tab("Tree") {
css {
border(1.px, BorderStyle.solid, Color.lightGray)
padding(10.px)
border = Border(1.px, BorderStyle.solid, Color.lightGray)
padding = Padding(10.px)
}
h2 { +"Object tree" }
styledDiv {
css {
flex(1.0, 1.0, FlexBasis.inherit)
flex = Flex(1.0, 1.0, FlexBasis.inherit)
}
props.vision?.let {
visionTree(it, props.selected, props.onSelect)

View File

@ -1,11 +1,16 @@
plugins {
id("space.kscience.gradle.js")
id("space.kscience.gradle.mpp")
}
dependencies{
api(project(":visionforge-solid"))
api("org.jetbrains.kotlin-wrappers:kotlin-styled")
api("org.jetbrains.kotlin-wrappers:kotlin-react-dom")
kscience {
js()
jsMain {
dependencies {
api(projects.visionforgeSolid)
api("org.jetbrains.kotlin-wrappers:kotlin-styled")
api("org.jetbrains.kotlin-wrappers:kotlin-react-dom")
// implementation(npm("react-select","4.3.0"))
implementation(project(":visionforge-threejs"))
api(projects.visionforgeThreejs)
}
}
}

View File

@ -3,7 +3,7 @@ package space.kscience.visionforge.react
import kotlinx.css.Align
import kotlinx.css.alignItems
import kotlinx.html.js.onClickFunction
import kotlinx.html.org.w3c.dom.events.Event
import org.w3c.dom.events.Event
import react.*
import react.dom.a
import react.dom.attrs

View File

@ -1,10 +1,10 @@
package space.kscience.visionforge.react
import kotlinx.html.js.onChangeFunction
import kotlinx.html.org.w3c.dom.events.Event
import org.w3c.dom.HTMLOptionElement
import org.w3c.dom.HTMLSelectElement
import org.w3c.dom.asList
import org.w3c.dom.events.Event
import react.FC
import react.dom.attrs
import react.dom.option

View File

@ -10,13 +10,16 @@ import kotlinx.coroutines.launch
import kotlinx.css.*
import kotlinx.css.properties.TextDecoration
import kotlinx.html.js.onClickFunction
import kotlinx.html.org.w3c.dom.events.Event
import org.w3c.dom.events.Event
import react.*
import react.dom.attrs
import space.kscience.dataforge.meta.*
import space.kscience.dataforge.meta.MutableMeta
import space.kscience.dataforge.meta.ObservableMutableMeta
import space.kscience.dataforge.meta.descriptors.MetaDescriptor
import space.kscience.dataforge.meta.descriptors.ValueRequirement
import space.kscience.dataforge.meta.descriptors.get
import space.kscience.dataforge.meta.get
import space.kscience.dataforge.meta.remove
import space.kscience.dataforge.names.*
import space.kscience.visionforge.hidden
import styled.css
@ -148,7 +151,7 @@ private fun RBuilder.propertyEditorItem(props: PropertyEditorProps) {
css {
//+TreeStyles.resizeableInput
width = 160.px
margin(1.px, 5.px)
margin = Margin(1.px, 5.px)
}
ValueChooser {
attrs {
@ -167,7 +170,7 @@ private fun RBuilder.propertyEditorItem(props: PropertyEditorProps) {
css {
width = 24.px
alignSelf = Align.stretch
margin(1.px, 5.px)
margin = Margin(1.px, 5.px)
backgroundColor = Color.white
borderStyle = BorderStyle.solid
borderRadius = 2.px

View File

@ -4,8 +4,9 @@ import kotlinx.css.pct
import kotlinx.css.width
import kotlinx.html.InputType
import kotlinx.html.js.onChangeFunction
import kotlinx.html.org.w3c.dom.events.Event
import kotlinx.html.js.onInputFunction
import org.w3c.dom.HTMLInputElement
import org.w3c.dom.events.Event
import react.FC
import react.dom.attrs
import react.fc
@ -58,8 +59,8 @@ public val RangeValueChooser: FC<ValueChooserProps> = fc("RangeValueChooser") {
attrs {
disabled = rangeDisabled
value = innerValue?.toString() ?: ""
onChangeFunction = handleChange
consumer.onTagEvent(this, "input", handleChange)
// onChangeFunction = handleChange
onInputFunction = handleChange
val minValue = props.descriptor?.attributes?.get("min").string
minValue?.let {
min = it

View File

@ -52,10 +52,10 @@ public object TreeStyles : StyleSheet("treeStyles", true) {
}
public val treeLabel:RuleSet by css {
border = "none"
padding(left = 4.pt, right = 4.pt, top = 0.pt, bottom = 0.pt)
border = Border.none
padding = Padding(left = 4.pt, right = 4.pt, top = 0.pt, bottom = 0.pt)
textAlign = TextAlign.left
flex(1.0)
flex = Flex(1.0)
}
public val treeLabelInactive: RuleSet by css {

View File

@ -1,13 +1,10 @@
package space.kscience.visionforge.react
import kotlinx.css.Color
import kotlinx.css.Cursor
import kotlinx.css.color
import kotlinx.css.cursor
import kotlinx.css.*
import kotlinx.css.properties.TextDecoration
import kotlinx.css.properties.TextDecorationLine
import kotlinx.css.properties.textDecoration
import kotlinx.html.js.onClickFunction
import kotlinx.html.org.w3c.dom.events.Event
import org.w3c.dom.events.Event
import react.*
import react.dom.attrs
import space.kscience.dataforge.names.Name
@ -37,7 +34,7 @@ private val TreeLabel = fc<ObjectTreeProps> { props ->
color = Color("#069")
cursor = Cursor.pointer
hover {
textDecoration(TextDecorationLine.underline)
textDecoration = TextDecoration(setOf(TextDecorationLine.underline))
}
if (props.name == props.selected) {
+TreeStyles.treeLabelSelected

View File

@ -1,15 +1,12 @@
package space.kscience.visionforge.react
import kotlinx.css.margin
import kotlinx.css.pct
import kotlinx.css.px
import kotlinx.css.width
import kotlinx.css.*
import kotlinx.html.InputType
import kotlinx.html.js.onChangeFunction
import kotlinx.html.js.onKeyDownFunction
import kotlinx.html.org.w3c.dom.events.Event
import org.w3c.dom.HTMLInputElement
import org.w3c.dom.HTMLSelectElement
import org.w3c.dom.events.Event
import react.FC
import react.Props
import react.dom.attrs
@ -145,7 +142,7 @@ public val ColorValueChooser: FC<ValueChooserProps> = fc("ColorValueChooser") {
styledInput(type = InputType.color) {
css {
width = 100.pct
margin(0.px)
margin = Margin(0.px)
}
attrs {
this.value = props.value?.let { value ->

View File

@ -1,11 +1,11 @@
plugins {
id("space.kscience.gradle.js")
id("space.kscience.gradle.mpp")
}
val dataforgeVersion: String by rootProject.extra
kotlin{
js(IR){
kscience{
js{
useCommonJs()
browser {
commonWebpackConfig {
@ -15,12 +15,11 @@ kotlin{
}
}
}
}
jsMain{
api(projects.ui.react)
api("org.jetbrains.kotlin-wrappers:kotlin-ring-ui")
dependencies{
api(project(":ui:react"))
api("org.jetbrains.kotlin-wrappers:kotlin-ring-ui")
implementation(npm("core-js","3.12.1"))
implementation(npm("file-saver", "2.0.2"))
implementation(npm("core-js","3.12.1"))
implementation(npm("file-saver", "2.0.2"))
}
}

View File

@ -130,7 +130,7 @@ public val ThreeCanvasWithControls: FC<ThreeCanvasWithControlsProps> = fc("Three
css {
height = 100.pct
minWidth = 600.px
flex(10.0, 1.0, FlexBasis("600px"))
flex = Flex(10.0, 1.0, FlexBasis("600px"))
position = Position.relative
}
@ -199,11 +199,11 @@ public val ThreeCanvasWithControls: FC<ThreeCanvasWithControlsProps> = fc("Three
}
flexColumn {
css {
padding(4.px)
padding = Padding(4.px)
minWidth = 400.px
height = 100.pct
overflowY = Overflow.auto
flex(1.0, 10.0, FlexBasis("300px"))
flex = Flex(1.0, 10.0, FlexBasis("300px"))
}
ringThreeControls(options, solid, selected, onSelect, additionalTabs = props.additionalTabs)
}

View File

@ -2,13 +2,9 @@ package space.kscience.visionforge.ring
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.GlobalScope
import kotlinx.css.BorderStyle
import kotlinx.css.Color
import kotlinx.css.padding
import kotlinx.css.properties.border
import kotlinx.css.px
import kotlinx.css.*
import kotlinx.html.js.onClickFunction
import kotlinx.html.org.w3c.dom.events.Event
import org.w3c.dom.events.Event
import org.w3c.files.Blob
import org.w3c.files.BlobPropertyBag
import react.FC
@ -34,7 +30,7 @@ internal fun saveData(event: Event, fileName: String, mimeType: String = "text/p
event.stopPropagation();
event.preventDefault();
val fileSaver = kotlinext.js.require("file-saver")
val fileSaver = kotlinext.js.require<dynamic>("file-saver")
val blob = Blob(arrayOf(dataBuilder()), BlobPropertyBag("$mimeType;charset=utf-8"))
fileSaver.saveAs(blob, fileName)
}
@ -58,8 +54,8 @@ internal val CanvasControls: FC<CanvasControlsProps> = fc("CanvasControls") { pr
flexColumn {
flexRow {
css {
border(1.px, BorderStyle.solid, Color.blue)
padding(4.px)
border = Border(1.px, BorderStyle.solid, Color.blue)
padding = Padding(4.px)
}
props.vision?.let { vision ->
button {

View File

@ -9,7 +9,7 @@ kscience {
}
dependencies {
api(projects.visionforgeSolid)
api("space.kscience:gdml:0.4.0")
api("space.kscience:gdml:0.5.0")
}
dependencies(jvmTest) {
implementation(spclibs.logback.classic)

View File

@ -2,7 +2,7 @@ plugins {
id("space.kscience.gradle.mpp")
}
val markdownVersion = "0.4.1"
val markdownVersion = "0.5.2"
kscience {
jvm()

View File

@ -2,7 +2,7 @@ plugins {
id("space.kscience.gradle.mpp")
}
val plotlyVersion = "0.5.3"
val plotlyVersion = "0.6.0"
kscience {
jvm()

View File

@ -25,8 +25,8 @@ public class TableVisionJsPlugin : AbstractPlugin(), ElementVisionRenderer {
override fun attach(context: Context) {
super.attach(context)
kotlinext.js.require("tabulator-tables/dist/css/tabulator.min.css")
kotlinext.js.require("tabulator-tables/src/js/modules/ResizeColumns/ResizeColumns.js")
kotlinext.js.require<Any>("tabulator-tables/dist/css/tabulator.min.css")
kotlinext.js.require<Any>("tabulator-tables/src/js/modules/ResizeColumns/ResizeColumns.js")
}
override fun rateVision(vision: Vision): Int = when (vision) {

View File

@ -1,17 +1,23 @@
plugins {
id("space.kscience.gradle.js")
id("space.kscience.gradle.mpp")
}
kotlin{
explicitApi = org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode.Disabled
}
kscience{
js{
binaries.library()
}
jsMain{
dependencies {
api(projects.visionforgeSolid)
implementation(npm("three", "0.143.0"))
implementation(npm("three-csg-ts", "3.1.10"))
implementation(npm("three.meshline","1.4.0"))
}
}
}
dependencies {
api(projects.visionforgeSolid)
implementation(npm("three", "0.143.0"))
implementation(npm("three-csg-ts", "3.1.10"))
implementation(npm("three.meshline","1.4.0"))
}

Some files were not shown because too many files have changed in this diff Show More