Commit 31842574 authored by Setako's avatar Setako

[Change] 0.2.0 Version Jump, Update dependencies

parent 55eb12dc
......@@ -3,9 +3,9 @@ import org.jetbrains.dokka.gradle.DokkaTask
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import java.net.URI
val versionNumber = "0.1.7"
val versionNumber = "0.2.0"
val isSnapshot = true
val kotlinVersion = "1.3.61"
val kotlinVersion = "1.3.72"
group = "dev.reactant"
version = "$versionNumber${if (isSnapshot) "-SNAPSHOT" else ""}"
......@@ -15,7 +15,7 @@ plugins {
java
`maven-publish`
signing
kotlin("jvm") version "1.3.31"
kotlin("jvm") version "1.3.72"
id("com.github.johnrengelman.shadow") version "5.0.0"
id("org.jetbrains.dokka") version "0.10.0"
}
......@@ -49,30 +49,30 @@ dependencies {
// "scripting-compiler"
).forEach { api(kotlin(it, kotlinVersion)) }
implementation("org.bstats:bstats-bukkit:1.4") {
implementation("org.bstats:bstats-bukkit:1.7") {
isTransitive = false
}
api("io.reactivex.rxjava2:rxjava:2.2.13")
api("io.reactivex.rxjava2:rxkotlin:2.4.0")
api("org.reflections:reflections:0.9.11")
api("io.reactivex.rxjava3:rxjava:3.0.4")
api("io.reactivex.rxjava3:rxkotlin:3.0.0")
api("org.reflections:reflections:0.9.12")
api("com.google.code.gson:gson:2.8.5")
api("org.yaml:snakeyaml:1.25")
api("com.google.code.gson:gson:2.8.6")
api("org.yaml:snakeyaml:1.26")
api("com.moandjiezana.toml:toml4j:0.7.2")
api("info.picocli:picocli:4.0.4")
api("info.picocli:picocli:4.3.2")
api("org.mariadb.jdbc:mariadb-java-client:2.5.1")
api("org.apache.logging.log4j:log4j-core:2.12.1")
api("com.squareup.retrofit2:retrofit:2.6.2")
api("com.squareup.retrofit2:adapter-rxjava2:2.6.2")
api("com.squareup.retrofit2:converter-gson:2.6.2")
api("com.squareup.retrofit2:retrofit:2.9.0")
api("com.squareup.retrofit2:adapter-rxjava3:2.9.0")
api("com.squareup.retrofit2:converter-gson:2.9.0")
api("net.sourceforge.cssparser:cssparser:0.9.27")
compileOnly("org.spigotmc:spigot-api:1.15.1-R0.1-SNAPSHOT")
compileOnly("org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT")
}
val dokka = (tasks["dokka"] as DokkaTask).apply {
outputFormat = "html"
......
......@@ -11,10 +11,10 @@ import dev.reactant.reactant.core.component.lifecycle.ComponentLifeCycleManagerI
import dev.reactant.reactant.core.component.lifecycle.LifeCycleControlAction
import dev.reactant.reactant.core.dependency.ProviderManager
import dev.reactant.reactant.core.dependency.injection.producer.ComponentProvider
import io.reactivex.Observable
import io.reactivex.Scheduler
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.core.Scheduler
import io.reactivex.rxjava3.disposables.Disposable
import io.reactivex.rxjava3.schedulers.Schedulers
import org.apache.logging.log4j.LogManager
import org.apache.logging.log4j.Logger
import org.bstats.bukkit.Metrics
......@@ -42,7 +42,7 @@ class ReactantCore : JavaPlugin() {
override fun onEnable() {
@Suppress("UNUSED_VARIABLE")
val metrics = Metrics(this)
val metrics = Metrics(this, 6056)
mainThreadScheduler = Schedulers.from { command: Runnable -> Bukkit.getServer().scheduler.runTask(this, command) }
......
......@@ -95,9 +95,7 @@ private class PicocliCommandServiceProvider(
}
return true;
}
}).also {
ReactantCore.logger.info(it.setPermission(null))
})
}))
Bukkit.getServer()::class.java.getDeclaredMethod("syncCommands").let {
it.isAccessible = true
......
......@@ -11,10 +11,10 @@ import dev.reactant.reactant.service.spec.config.ConfigService
import dev.reactant.reactant.service.spec.parser.JsonParserService
import dev.reactant.reactant.service.spec.parser.TomlParserService
import dev.reactant.reactant.service.spec.parser.YamlParserService
import io.reactivex.Maybe
import io.reactivex.Observable
import io.reactivex.Single
import io.reactivex.rxkotlin.toObservable
import io.reactivex.rxjava3.core.Maybe
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.core.Single
import io.reactivex.rxjava3.kotlin.toObservable
import java.io.File
import kotlin.reflect.KClass
import kotlin.reflect.KType
......
......@@ -6,10 +6,9 @@ import dev.reactant.reactant.service.spec.config.ConfigService
import dev.reactant.reactant.service.spec.file.text.TextFileReaderService
import dev.reactant.reactant.service.spec.file.text.TextFileWriterService
import dev.reactant.reactant.service.spec.parser.ParserService
import io.reactivex.Completable
import io.reactivex.Maybe
import io.reactivex.Single
import io.reactivex.functions.Function
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Maybe
import io.reactivex.rxjava3.core.Single
import java.io.File
import java.io.FileNotFoundException
import kotlin.reflect.KClass
......@@ -23,12 +22,12 @@ class ReactantConfigService(
override fun <T : Any> get(parser: ParserService, modelClass: KClass<T>, path: String): Maybe<Config<T>> =
loadContent(parser, modelClass, path)
.toMaybe()
.onErrorResumeNext(Function { e ->
.onErrorResumeNext { e ->
when (e) {
is FileNotFoundException -> Maybe.empty()
else -> Maybe.error(e)
}
})
}
.map { content -> ConfigImpl(path, content, parser) }
override fun <T : Any> getOrDefault(parser: ParserService, modelClass: KClass<T>, path: String, defaultContentCallable: () -> T): Single<Config<T>> =
......
package dev.reactant.reactant.extra.config.type
import dev.reactant.reactant.service.spec.config.Config
import io.reactivex.Maybe
import io.reactivex.Observable
import io.reactivex.Single
import io.reactivex.rxjava3.core.Maybe
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.core.Single
import java.io.File
import kotlin.reflect.KClass
......
package dev.reactant.reactant.extra.config.type
import dev.reactant.reactant.service.spec.parser.ParserService
import io.reactivex.Completable
import io.reactivex.rxjava3.core.Completable
interface SharedConfig<out T : Any> {
val path: String
......
......@@ -4,10 +4,10 @@ import dev.reactant.reactant.core.ReactantCore
import dev.reactant.reactant.core.component.Component
import dev.reactant.reactant.core.component.lifecycle.LifeCycleHook
import dev.reactant.reactant.service.spec.db.JdbcService
import io.reactivex.Completable
import io.reactivex.Observable
import io.reactivex.Single
import io.reactivex.schedulers.Schedulers
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.core.Single
import io.reactivex.rxjava3.schedulers.Schedulers
import java.sql.Connection
import java.sql.DriverManager
import java.sql.PreparedStatement
......
......@@ -3,7 +3,7 @@ package dev.reactant.reactant.extra.file
import dev.reactant.reactant.core.component.Component
import dev.reactant.reactant.extra.net.BaseUrl
import dev.reactant.reactant.extra.net.RetrofitJsonAPI
import io.reactivex.Single
import io.reactivex.rxjava3.core.Single
import okhttp3.MediaType
import okhttp3.MultipartBody
import okhttp3.RequestBody
......
......@@ -2,9 +2,9 @@ package dev.reactant.reactant.extra.file
import dev.reactant.reactant.core.component.Component
import dev.reactant.reactant.service.spec.file.text.TextFileReaderService
import io.reactivex.Flowable
import io.reactivex.Single
import io.reactivex.schedulers.Schedulers
import io.reactivex.rxjava3.core.Flowable
import io.reactivex.rxjava3.core.Single
import io.reactivex.rxjava3.schedulers.Schedulers
import java.io.*
@Component
......
......@@ -2,8 +2,8 @@ package dev.reactant.reactant.extra.file
import dev.reactant.reactant.core.component.Component
import dev.reactant.reactant.service.spec.file.text.TextFileWriterService
import io.reactivex.Completable
import io.reactivex.schedulers.Schedulers
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.schedulers.Schedulers
import java.io.File
import java.io.FileWriter
......
......@@ -3,7 +3,7 @@ package dev.reactant.reactant.extra.net
import dev.reactant.reactant.core.component.Component
import dev.reactant.reactant.core.dependency.injection.Provide
import retrofit2.Retrofit
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory
import retrofit2.converter.gson.GsonConverterFactory
import kotlin.reflect.KType
import kotlin.reflect.full.findAnnotation
......@@ -31,7 +31,7 @@ private class RetrofitHttpAPIProvider {
val retrofit = Retrofit.Builder()
.baseUrl(if (name != "") name else serviceClass.findAnnotation<BaseUrl>()?.baseUrl ?: "")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
.build()
return RetrofitJsonAPI(retrofit.create(serviceClass.java))
}
......
......@@ -3,7 +3,7 @@ package dev.reactant.reactant.extra.parser
import com.google.gson.GsonBuilder
import dev.reactant.reactant.core.component.Component
import dev.reactant.reactant.service.spec.parser.JsonParserService
import io.reactivex.Single
import io.reactivex.rxjava3.core.Single
import kotlin.reflect.KClass
@Component
......
......@@ -2,7 +2,7 @@ package dev.reactant.reactant.extra.parser
import dev.reactant.reactant.core.component.Component
import dev.reactant.reactant.service.spec.parser.YamlParserService
import io.reactivex.Single
import io.reactivex.rxjava3.core.Single
import org.yaml.snakeyaml.Yaml
import org.yaml.snakeyaml.constructor.CustomClassLoaderConstructor
import org.yaml.snakeyaml.nodes.Tag
......
......@@ -4,7 +4,7 @@ import com.moandjiezana.toml.Toml
import com.moandjiezana.toml.TomlWriter
import dev.reactant.reactant.core.component.Component
import dev.reactant.reactant.service.spec.parser.TomlParserService
import io.reactivex.Single
import io.reactivex.rxjava3.core.Single
import kotlin.reflect.KClass
@Component
......
import dev.reactant.reactant.core.dependency.injection.producer.Provider
import dev.reactant.reactant.service.spec.profiler.ProfilerDataProvider
import io.reactivex.Observable
import io.reactivex.subjects.PublishSubject
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.subjects.PublishSubject
import kotlin.system.measureNanoTime
class PublishingProfilerDataProvider() : ProfilerDataProvider {
......
......@@ -4,10 +4,10 @@ import dev.reactant.reactant.core.component.Component
import dev.reactant.reactant.core.dependency.injection.components.Components
import dev.reactant.reactant.service.spec.profiler.ProfilerDataProvider
import dev.reactant.reactant.service.spec.server.SchedulerService
import io.reactivex.Observable
import io.reactivex.rxkotlin.withLatestFrom
import io.reactivex.subjects.BehaviorSubject
import io.reactivex.subjects.PublishSubject
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.kotlin.withLatestFrom
import io.reactivex.rxjava3.subjects.BehaviorSubject
import io.reactivex.rxjava3.subjects.PublishSubject
@Component
class ReactantProfilerService(
......
......@@ -7,7 +7,7 @@ import dev.reactant.reactant.extra.file.FileIOUploadService
import dev.reactant.reactant.extra.profiler.ReactantProfilerService
import dev.reactant.reactant.service.spec.parser.JsonParserService
import dev.reactant.reactant.service.spec.profiler.ProfilerDataProvider
import io.reactivex.schedulers.Schedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import net.md_5.bungee.api.chat.ClickEvent
import net.md_5.bungee.api.chat.TextComponent
import org.bukkit.entity.Player
......
......@@ -6,8 +6,8 @@ import dev.reactant.reactant.extra.file.ReactantTextFileReaderService
import dev.reactant.reactant.service.spec.script.kotlin.KtsService
import dev.reactant.reactant.service.spec.script.kotlin.KtsService.ScriptImporter
import dev.reactant.reactant.service.spec.script.kotlin.KtsService.Scripting
import io.reactivex.Completable
import io.reactivex.Single
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Single
import java.io.File
import java.nio.file.Paths
import javax.script.ScriptEngineManager
......
......@@ -8,9 +8,9 @@ import dev.reactant.reactant.core.dependency.injection.Provide
import dev.reactant.reactant.core.dependency.injection.producer.Provider
import dev.reactant.reactant.service.spec.profiler.ProfilerDataProvider
import dev.reactant.reactant.service.spec.server.EventService
import io.reactivex.Observable
import io.reactivex.disposables.Disposable
import io.reactivex.subjects.PublishSubject
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.disposables.Disposable
import io.reactivex.rxjava3.subjects.PublishSubject
import org.bukkit.Bukkit
import org.bukkit.event.Event
import org.bukkit.event.EventPriority
......
......@@ -7,11 +7,11 @@ import dev.reactant.reactant.core.dependency.injection.Provide
import dev.reactant.reactant.core.dependency.injection.producer.Provider
import dev.reactant.reactant.service.spec.profiler.ProfilerDataProvider
import dev.reactant.reactant.service.spec.server.SchedulerService
import io.reactivex.Completable
import io.reactivex.Completable.defer
import io.reactivex.Observable
import io.reactivex.Scheduler
import io.reactivex.schedulers.Schedulers
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Completable.defer
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.core.Scheduler
import io.reactivex.rxjava3.schedulers.Schedulers
import org.bukkit.Bukkit
import org.bukkit.event.Listener
import kotlin.reflect.KType
......
......@@ -2,10 +2,10 @@ package dev.reactant.reactant.repository
import dev.reactant.reactant.core.component.Component
import dev.reactant.reactant.core.component.lifecycle.LifeCycleHook
import io.reactivex.Single
import io.reactivex.rxjava3.core.Single
import okhttp3.ResponseBody
import retrofit2.Retrofit
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory
import retrofit2.http.GET
import retrofit2.http.Streaming
import retrofit2.http.Url
......@@ -13,7 +13,7 @@ import retrofit2.http.Url
@Component
class MavenRepositoryRetrieverService : LifeCycleHook {
private val httpService = Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
.baseUrl("http://localhost").build()
.create(HttpMavenRepositoryRetrieverService::class.java)
......
......@@ -6,8 +6,8 @@ import dev.reactant.reactant.core.dependency.injection.Inject
import dev.reactant.reactant.extra.command.exceptions.CommandExecutionPermissionException
import dev.reactant.reactant.repository.config.RepositoryConfig
import dev.reactant.reactant.service.spec.config.Config
import io.reactivex.Completable
import io.reactivex.schedulers.Schedulers
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.schedulers.Schedulers
import org.bukkit.command.CommandSender
import org.bukkit.command.ConsoleCommandSender
import java.net.URL
......
......@@ -8,9 +8,9 @@ import dev.reactant.reactant.repository.MavenRepositoryRetrieverService
import dev.reactant.reactant.repository.RepositoryService
import dev.reactant.reactant.repository.commands.RepositoryPermission.Companion.Reactant
import dev.reactant.reactant.utils.converter.StacktraceConverterUtils
import io.reactivex.Observable
import io.reactivex.Single
import io.reactivex.schedulers.Schedulers
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.core.Single
import io.reactivex.rxjava3.schedulers.Schedulers
import okhttp3.ResponseBody
import okio.Okio
import org.bukkit.Bukkit
......
package dev.reactant.reactant.service.spec.config
import dev.reactant.reactant.service.spec.parser.ParserService
import io.reactivex.Completable
import io.reactivex.rxjava3.core.Completable
/**
* The container of the config entity
......
package dev.reactant.reactant.service.spec.config
import dev.reactant.reactant.service.spec.parser.ParserService
import io.reactivex.Completable
import io.reactivex.Maybe
import io.reactivex.Single
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Maybe
import io.reactivex.rxjava3.core.Single
import kotlin.reflect.KClass
interface ConfigService {
......
package dev.reactant.reactant.service.spec.db
import io.reactivex.Completable
import io.reactivex.Observable
import io.reactivex.Single
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.core.Single
import java.sql.PreparedStatement
import java.sql.ResultSet
......
package dev.reactant.reactant.service.spec.file.text
import io.reactivex.Flowable
import io.reactivex.Single
import io.reactivex.rxjava3.core.Flowable
import io.reactivex.rxjava3.core.Single
import java.io.File
import java.io.Reader
......
package dev.reactant.reactant.service.spec.file.text
import io.reactivex.Completable
import io.reactivex.rxjava3.core.Completable
import java.io.File
......
package dev.reactant.reactant.service.spec.parser
import io.reactivex.Single
import io.reactivex.rxjava3.core.Single
import kotlin.reflect.KClass
interface ParserService {
......
package dev.reactant.reactant.service.spec.profiler
import io.reactivex.Observable
import io.reactivex.rxjava3.core.Observable
interface ProfilerDataProvider {
val profilerDataObservable: Observable<ProfilerData>
......
package dev.reactant.reactant.service.spec.script.kotlin
import io.reactivex.Completable
import io.reactivex.Single
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Single
import java.io.File
interface KtsService {
......
package dev.reactant.reactant.service.spec.server
import dev.reactant.reactant.service.spec.dsl.Registrable
import io.reactivex.Observable
import io.reactivex.rxjava3.core.Observable
import org.bukkit.event.Event
import org.bukkit.event.EventPriority
import kotlin.reflect.KClass
......
package dev.reactant.reactant.service.spec.server
import io.reactivex.Completable
import io.reactivex.Observable
import io.reactivex.Scheduler
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.core.Scheduler
interface SchedulerService {
fun next(): Completable
......
......@@ -6,7 +6,7 @@ import dev.reactant.reactant.service.spec.dsl.register
import dev.reactant.reactant.service.spec.server.EventService
import dev.reactant.reactant.service.spec.server.SchedulerService
import dev.reactant.reactant.ui.editing.ReactantUIEditing
import io.reactivex.disposables.Disposable
import io.reactivex.rxjava3.disposables.Disposable
import org.bukkit.entity.Player
import org.bukkit.event.EventPriority
import org.bukkit.event.inventory.InventoryCloseEvent
......
......@@ -10,10 +10,10 @@ import dev.reactant.reactant.ui.query.UIQueryable
import dev.reactant.reactant.ui.query.selectElements
import dev.reactant.reactant.ui.rendering.ReactantRenderedView
import dev.reactant.reactant.ui.rendering.RenderedView
import io.reactivex.Observable
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.disposables.Disposable
import io.reactivex.subjects.PublishSubject
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.disposables.CompositeDisposable
import io.reactivex.rxjava3.disposables.Disposable
import io.reactivex.rxjava3.subjects.PublishSubject
import org.bukkit.Bukkit
import org.bukkit.entity.Player
import org.bukkit.inventory.Inventory
......
......@@ -2,11 +2,11 @@ package dev.reactant.reactant.ui
import dev.reactant.reactant.service.spec.server.SchedulerService
import dev.reactant.reactant.ui.event.UIEvent
import io.reactivex.Completable
import io.reactivex.Observable
import io.reactivex.Scheduler
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.disposables.Disposable
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.core.Scheduler
import io.reactivex.rxjava3.disposables.CompositeDisposable
import io.reactivex.rxjava3.disposables.Disposable
/**
* A UI object that have its own scheduler and event bus
......
......@@ -7,7 +7,7 @@ import dev.reactant.reactant.ui.element.style.UIElementStyleEditing
import dev.reactant.reactant.ui.event.UIElementEvent
import dev.reactant.reactant.ui.event.interact.element.UIElementClickEvent
import dev.reactant.reactant.ui.event.interact.element.UIElementDragEvent
import io.reactivex.Observable
import io.reactivex.rxjava3.core.Observable
interface UIElementEditing<out T : UIElement> : UIElementStyleEditing {
val element: T;
......
......@@ -8,9 +8,9 @@ import dev.reactant.reactant.ui.element.collection.ReactantUIElementClassSet
import dev.reactant.reactant.ui.element.style.ReactantUIElementStyle
import dev.reactant.reactant.ui.event.UIElementEvent
import dev.reactant.reactant.ui.event.UIEvent
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.subjects.PublishSubject
import io.reactivex.subjects.Subject
import io.reactivex.rxjava3.disposables.CompositeDisposable
import io.reactivex.rxjava3.subjects.PublishSubject
import io.reactivex.rxjava3.subjects.Subject
import kotlin.reflect.KClass
......
......@@ -7,7 +7,7 @@ import dev.reactant.reactant.ui.element.style.UIElementStyle
import dev.reactant.reactant.ui.event.UIEvent
import dev.reactant.reactant.ui.eventtarget.UIElementEventTarget
import dev.reactant.reactant.ui.query.UIQueryable
import io.reactivex.subjects.Subject
import io.reactivex.rxjava3.subjects.Subject
import org.bukkit.inventory.ItemStack
import kotlin.reflect.KClass
......
package dev.reactant.reactant.ui.eventtarget
import dev.reactant.reactant.ui.event.UIEvent
import io.reactivex.Observable
import io.reactivex.subjects.Subject
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.subjects.Subject
interface UIEventTarget<T : UIEvent> {
val event: Subject<T>
......
......@@ -17,7 +17,7 @@ import dev.reactant.reactant.ui.kits.ReactantUISingleSlotDisplayElementEditing
import dev.reactant.reactant.ui.kits.slot.event.*
import dev.reactant.reactant.utils.content.item.itemStackOf
import dev.reactant.reactant.utils.delegation.MutablePropertyDelegate
import io.reactivex.Observable
import io.reactivex.rxjava3.core.Observable
import org.bukkit.Material.AIR
import org.bukkit.entity.Player
import org.bukkit.event.inventory.InventoryAction.*
......
......@@ -8,8 +8,8 @@ import dev.reactant.reactant.ui.kits.slot.ItemStorageElement
import dev.reactant.reactant.ui.kits.slot.ReactantUISlotElement
import dev.reactant.reactant.ui.kits.slot.ReactantUISlotElementEditing
import dev.reactant.reactant.utils.content.item.itemStackOf