BuilderScope

class BuilderScope(tileHolderBuilderManager: TileHolderBuilderManager, eventHolderBuilderManager: EventHolderBuilderManager, serializer: MosaicSerializer, koinScope: Scope)

Scope handed as the extension receiver to every dev.catbit.mosaic.client.ui.sdui.foundation.tiles.holder.tile.TileHolderBuilder.build and dev.catbit.mosaic.client.ui.sdui.foundation.tiles.holder.event.EventHolderBuilder.build call — the toolbox a HolderBuilder uses to turn a TileSchema/EventSchema into its live Holder counterpart.

Its central job is letting a builder recurse into its own children without needing a reference to the app-wide TileHolderBuilderManager/EventHolderBuilderManager directly — buildTileHolder/ buildEventHolder (and their list-oriented buildEventHolders/buildTileHolders extensions) look up the right builder for each child schema's own concrete class and build it, which is how a container tile's children, or an event's own nested events, end up as fully-built holders too. It also exposes decode/decodeOrNull (for a builder that needs to interpret an opaque AnySerializable field as a concrete type) and the same Koin get/getOrNull/logError/log helpers available elsewhere in the framework.

One BuilderScope instance is created per screen (owned by that screen's TilesManager) and reused for every holder built while that screen is alive.

Constructors

Link copied to clipboard
constructor(tileHolderBuilderManager: TileHolderBuilderManager, eventHolderBuilderManager: EventHolderBuilderManager, serializer: MosaicSerializer, koinScope: Scope)

Functions

Link copied to clipboard
open override fun BuilderScope.build(eventSchema: GetDataEventSchema): GetDataEventHolder
open override fun BuilderScope.build(eventSchema: GetFileEventSchema): GetFileEventHolder

Builds a fresh E from eventSchema.

open override fun BuilderScope.build(tileModel: BadgeTileSchema): BadgeTileHolder
open override fun BuilderScope.build(tileModel: ButtonTileSchema): ButtonTileHolder
open override fun BuilderScope.build(tileModel: BoxTileSchema): BoxTileHolder
open override fun BuilderScope.build(tileModel: CardTileSchema): CardTileHolder
open override fun BuilderScope.build(tileModel: ColumnTileSchema): ColumnTileHolder
open override fun BuilderScope.build(tileModel: FlexBoxTileSchema): FlexBoxTileHolder
open override fun BuilderScope.build(tileModel: FlowRowTileSchema): FlowRowTileHolder
open override fun BuilderScope.build(tileModel: GridTileSchema): GridTileHolder
open override fun BuilderScope.build(tileModel: LazyRowTileSchema): LazyRowTileHolder
open override fun BuilderScope.build(tileModel: PagerTileSchema): PagerTileHolder
open override fun BuilderScope.build(tileModel: RowTileSchema): RowTileHolder
open override fun BuilderScope.build(tileModel: ShimmerTileSchema): ShimmerTileHolder
open override fun BuilderScope.build(tileModel: IconTileSchema): IconTileHolder
open override fun BuilderScope.build(tileModel: ImageTileSchema): ImageTileHolder
open override fun BuilderScope.build(tileModel: SwitchTileSchema): SwitchTileHolder
open override fun BuilderScope.build(tileModel: ScreenTileSchema): ScreenTileHolder
open override fun BuilderScope.build(tileModel: MenuTileSchema): MenuTileHolder
open override fun BuilderScope.build(tileModel: TabsTileSchema): TabsTileHolder
open override fun BuilderScope.build(tileModel: PopupTileSchema): PopupTileHolder
open override fun BuilderScope.build(tileModel: TooltipTileSchema): TooltipTileHolder

Builds a fresh H from tileModel.

Link copied to clipboard

Looks up the dev.catbit.mosaic.client.ui.sdui.foundation.tiles.holder.event.EventHolderBuilder registered for eventSchema's own concrete class and builds it.

Link copied to clipboard

Builds a holder for every entry in this list via buildEventHolder — the standard way a TileHolderBuilder/EventHolderBuilder turns its own schema's events field into the events constructor argument of the Holder it's building.

Link copied to clipboard

Looks up the dev.catbit.mosaic.client.ui.sdui.foundation.tiles.holder.tile.TileHolderBuilder registered for tileSchema's own concrete class and builds it.

Link copied to clipboard

Builds a holder for every entry in this list via buildTileHolder — the standard way a container tile's TileHolderBuilder turns its own schema's tiles field into the tiles constructor argument of the TileHolder it's building.

Link copied to clipboard
inline fun <T : Any> decode(data: Any): T

Decodes data as T via the framework's MosaicSerializer, using T's own generated KSerializer — for a builder that needs to interpret an opaque AnySerializable field (already a raw JSON-shaped value, not a JSON string) as a concrete type.

fun <T> decode(strategy: KSerializer<T>, data: Any): T

Non-reified overload of decode, for a caller supplying its own KSerializer rather than relying on T's generated one.

Link copied to clipboard
inline fun <T : Any> decodeOrNull(data: Any?): T?

Same as decode, but returns null instead of throwing when data is null or doesn't match T's expected shape.

fun <T> decodeOrNull(strategy: KSerializer<T>, data: Any?): T?

Non-reified overload of decodeOrNull.

Link copied to clipboard
inline fun <T : Any> get(qualifier: Qualifier? = null, noinline parameters: ParametersDefinition? = null): T

Resolves an instance of T from the app's Koin scope — the way a HolderBuilder reaches a dependency it needs at construction time.

fun <T : Any> get(clazz: KClass<T>, qualifier: Qualifier? = null, parameters: ParametersDefinition? = null): T

Non-reified overload of get.

Link copied to clipboard
inline fun <T : Any> getOrNull(qualifier: Qualifier? = null, noinline parameters: ParametersDefinition? = null): T?

Same as get, but returns null instead of throwing when no binding is registered for T.

fun <T : Any> getOrNull(clazz: KClass<T>, qualifier: Qualifier? = null, parameters: ParametersDefinition? = null): T?

Non-reified overload of getOrNull.

Link copied to clipboard
fun log(level: Level, msg: String)

Logs msg at level via the app's MosaicLogger.

Link copied to clipboard
fun logError(tag: String = "MosaicCommonError", throwable: Throwable)

Logs throwable at error level via the app's MosaicLogger, prefixed with tag.