Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions surf-api-core/surf-api-core/api/surf-api-core.api
Original file line number Diff line number Diff line change
Expand Up @@ -7691,6 +7691,8 @@ public abstract interface class dev/slne/surf/api/core/messages/builder/SurfComp
public abstract fun build ()Lnet/kyori/adventure/text/TextComponent;
public static fun builder ()Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;
public abstract fun children ()Ljava/util/List;
public fun clickCallback (Lnet/kyori/adventure/text/event/ClickCallback;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;
public fun clickCallbackWithOptions (Lkotlin/jvm/functions/Function1;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;
public fun clickCopiesToClipboard (Ljava/lang/String;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;
public abstract fun clickEvent (Lnet/kyori/adventure/text/event/ClickEvent;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;
public fun clickOpensUrl (Ljava/lang/String;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;
Expand Down Expand Up @@ -7793,6 +7795,8 @@ public final class dev/slne/surf/api/core/messages/builder/SurfComponentBuilder$
public static fun blue (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ljava/lang/Number;[Lnet/kyori/adventure/text/format/TextDecoration;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;
public static fun blue (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ljava/lang/String;[Lnet/kyori/adventure/text/format/TextDecoration;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;
public static fun blue (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Z[Lnet/kyori/adventure/text/format/TextDecoration;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;
public static fun clickCallback (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Lnet/kyori/adventure/text/event/ClickCallback;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;
public static fun clickCallbackWithOptions (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Lkotlin/jvm/functions/Function1;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;
public static fun clickCopiesToClipboard (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ljava/lang/String;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;
public static fun clickOpensUrl (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ljava/lang/String;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;
public static fun clickRunsCommand (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ljava/lang/String;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ inline fun <reified T : Audience, C : Component, B : ComponentBuilder<C, B>> Com

@OptIn(ExperimentalTypeInference::class)
inline fun <reified T : Audience, C : Component, B : ComponentBuilder<C, B>> ComponentBuilder<C, B>.clickCallbackTypedWithOptions(
@BuilderInference builder: ClickCallbackWithOptionsBuilder<T>.() -> Unit
builder: ClickCallbackWithOptionsBuilder<T>.() -> Unit
) = clickEvent(ClickCallbackWithOptionsBuilder(T::class.java).apply(builder).build())

fun ClickCallback.Options.Builder.lifetime(duration: Duration) = lifetime(duration.toJavaDuration())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ import dev.slne.surf.api.core.messages.Colors.Companion.VARIABLE_VALUE
import dev.slne.surf.api.core.messages.CommonComponents.DISCONNECT_HEADER
import dev.slne.surf.api.core.messages.CommonComponents.DISCORD_LINK
import dev.slne.surf.api.core.messages.CommonComponents.TIME_SEPARATOR
import dev.slne.surf.api.core.messages.adventure.ClickCallbackWithOptionsBuilder
import net.kyori.adventure.audience.Audience
import net.kyori.adventure.key.Key
import net.kyori.adventure.text.*
import net.kyori.adventure.text.event.ClickCallback
import net.kyori.adventure.text.event.ClickEvent
import net.kyori.adventure.text.event.HoverEventSource
import net.kyori.adventure.text.format.Style
Expand Down Expand Up @@ -165,7 +168,14 @@ interface SurfComponentBuilder : ComponentBuilderColors, ComponentLike {
fun applicableApply(applicable: ComponentBuilderApplicable): SurfComponentBuilder
fun apply(consumer: Consumer<in ComponentBuilder<*, *>>): SurfComponentBuilder
fun applyDeep(action: Consumer<in ComponentBuilder<*, *>>): SurfComponentBuilder

fun clickEvent(event: ClickEvent<*>?): SurfComponentBuilder

fun clickCallback(callback: ClickCallback<Audience>) = clickEvent(ClickEvent.callback(callback))
fun clickCallbackWithOptions(
builder: ClickCallbackWithOptionsBuilder<Audience>.() -> Unit,
) = clickEvent(ClickCallbackWithOptionsBuilder(Audience::class.java).apply(builder).build())

fun color(color: TextColor?): SurfComponentBuilder
fun colorIfAbsent(color: TextColor?): SurfComponentBuilder
fun decorate(decoration: TextDecoration): SurfComponentBuilder
Expand Down Expand Up @@ -203,3 +213,11 @@ interface SurfComponentBuilder : ComponentBuilderColors, ComponentLike {
fun shadowColor(argb: ARGBLike?): SurfComponentBuilder
fun shadowColorIfAbsent(argb: ARGBLike?): SurfComponentBuilder
}

inline fun <reified T : Audience> SurfComponentBuilder.clickCallbackTypedWithOptions(
builder: ClickCallbackWithOptionsBuilder<T>.() -> Unit
) = clickEvent(ClickCallbackWithOptionsBuilder(T::class.java).apply(builder).build())

inline fun <reified T : Audience> SurfComponentBuilder.clickCallbackTyped(
callback: ClickCallback<T>,
) = clickEvent(ClickEvent.callback(ClickCallback.widen(callback, T::class.java)))