Skip to content

Commit

Permalink
Host-side API for view-owned widgets
Browse files Browse the repository at this point in the history
This introduces a new mutable property, windowInsets, that is propagated to the composition where it can be consumed.

We put the burden on the user of RedwoodView to set this value to something non-zero if they have insets to be consumed. I've added an accelerator on Android for this,

RedwoodLayout.consumeWindowInsets(mask: Int)
  • Loading branch information
squarejesse committed Nov 18, 2024
1 parent 8160d94 commit c5b65db
Show file tree
Hide file tree
Showing 15 changed files with 130 additions and 34 deletions.
7 changes: 5 additions & 2 deletions redwood-runtime/api/android/redwood-runtime.api
Original file line number Diff line number Diff line change
Expand Up @@ -245,14 +245,17 @@ public final class app/cash/redwood/ui/UiConfiguration {
public static final field $stable I
public static final field Companion Lapp/cash/redwood/ui/UiConfiguration$Companion;
public fun <init> ()V
public fun <init> (ZLapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Size;DLapp/cash/redwood/ui/LayoutDirection;)V
public synthetic fun <init> (ZLapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Size;DLapp/cash/redwood/ui/LayoutDirection;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (ZLapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Size;DLapp/cash/redwood/ui/LayoutDirection;)V
public synthetic fun <init> (ZLapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Size;DLapp/cash/redwood/ui/LayoutDirection;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun copy (ZLapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Size;DLapp/cash/redwood/ui/LayoutDirection;)Lapp/cash/redwood/ui/UiConfiguration;
public static synthetic fun copy$default (Lapp/cash/redwood/ui/UiConfiguration;ZLapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Size;DLapp/cash/redwood/ui/LayoutDirection;ILjava/lang/Object;)Lapp/cash/redwood/ui/UiConfiguration;
public fun equals (Ljava/lang/Object;)Z
public final fun getDarkMode ()Z
public final fun getDensity ()D
public final fun getLayoutDirection ()Lapp/cash/redwood/ui/LayoutDirection;
public final fun getSafeAreaInsets ()Lapp/cash/redwood/ui/Margin;
public final fun getViewportSize ()Lapp/cash/redwood/ui/Size;
public final fun getWindowInsets ()Lapp/cash/redwood/ui/Margin;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
Expand Down
7 changes: 5 additions & 2 deletions redwood-runtime/api/jvm/redwood-runtime.api
Original file line number Diff line number Diff line change
Expand Up @@ -241,14 +241,17 @@ public final class app/cash/redwood/ui/UiConfiguration {
public static final field $stable I
public static final field Companion Lapp/cash/redwood/ui/UiConfiguration$Companion;
public fun <init> ()V
public fun <init> (ZLapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Size;DLapp/cash/redwood/ui/LayoutDirection;)V
public synthetic fun <init> (ZLapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Size;DLapp/cash/redwood/ui/LayoutDirection;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (ZLapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Size;DLapp/cash/redwood/ui/LayoutDirection;)V
public synthetic fun <init> (ZLapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Size;DLapp/cash/redwood/ui/LayoutDirection;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun copy (ZLapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Size;DLapp/cash/redwood/ui/LayoutDirection;)Lapp/cash/redwood/ui/UiConfiguration;
public static synthetic fun copy$default (Lapp/cash/redwood/ui/UiConfiguration;ZLapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Margin;Lapp/cash/redwood/ui/Size;DLapp/cash/redwood/ui/LayoutDirection;ILjava/lang/Object;)Lapp/cash/redwood/ui/UiConfiguration;
public fun equals (Ljava/lang/Object;)Z
public final fun getDarkMode ()Z
public final fun getDensity ()D
public final fun getLayoutDirection ()Lapp/cash/redwood/ui/LayoutDirection;
public final fun getSafeAreaInsets ()Lapp/cash/redwood/ui/Margin;
public final fun getViewportSize ()Lapp/cash/redwood/ui/Size;
public final fun getWindowInsets ()Lapp/cash/redwood/ui/Margin;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
Expand Down
5 changes: 4 additions & 1 deletion redwood-runtime/api/redwood-runtime.klib.api
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ final class app.cash.redwood.ui/Size { // app.cash.redwood.ui/Size|null[0]
}

final class app.cash.redwood.ui/UiConfiguration { // app.cash.redwood.ui/UiConfiguration|null[0]
constructor <init>(kotlin/Boolean = ..., app.cash.redwood.ui/Margin = ..., app.cash.redwood.ui/Size? = ..., kotlin/Double = ..., app.cash.redwood.ui/LayoutDirection = ...) // app.cash.redwood.ui/UiConfiguration.<init>|<init>(kotlin.Boolean;app.cash.redwood.ui.Margin;app.cash.redwood.ui.Size?;kotlin.Double;app.cash.redwood.ui.LayoutDirection){}[0]
constructor <init>(kotlin/Boolean = ..., app.cash.redwood.ui/Margin = ..., app.cash.redwood.ui/Margin = ..., app.cash.redwood.ui/Size? = ..., kotlin/Double = ..., app.cash.redwood.ui/LayoutDirection = ...) // app.cash.redwood.ui/UiConfiguration.<init>|<init>(kotlin.Boolean;app.cash.redwood.ui.Margin;app.cash.redwood.ui.Margin;app.cash.redwood.ui.Size?;kotlin.Double;app.cash.redwood.ui.LayoutDirection){}[0]

final val darkMode // app.cash.redwood.ui/UiConfiguration.darkMode|{}darkMode[0]
final fun <get-darkMode>(): kotlin/Boolean // app.cash.redwood.ui/UiConfiguration.darkMode.<get-darkMode>|<get-darkMode>(){}[0]
Expand All @@ -154,7 +154,10 @@ final class app.cash.redwood.ui/UiConfiguration { // app.cash.redwood.ui/UiConfi
final fun <get-safeAreaInsets>(): app.cash.redwood.ui/Margin // app.cash.redwood.ui/UiConfiguration.safeAreaInsets.<get-safeAreaInsets>|<get-safeAreaInsets>(){}[0]
final val viewportSize // app.cash.redwood.ui/UiConfiguration.viewportSize|{}viewportSize[0]
final fun <get-viewportSize>(): app.cash.redwood.ui/Size? // app.cash.redwood.ui/UiConfiguration.viewportSize.<get-viewportSize>|<get-viewportSize>(){}[0]
final val windowInsets // app.cash.redwood.ui/UiConfiguration.windowInsets|{}windowInsets[0]
final fun <get-windowInsets>(): app.cash.redwood.ui/Margin // app.cash.redwood.ui/UiConfiguration.windowInsets.<get-windowInsets>|<get-windowInsets>(){}[0]

final fun copy(kotlin/Boolean = ..., app.cash.redwood.ui/Margin = ..., app.cash.redwood.ui/Margin = ..., app.cash.redwood.ui/Size? = ..., kotlin/Double = ..., app.cash.redwood.ui/LayoutDirection = ...): app.cash.redwood.ui/UiConfiguration // app.cash.redwood.ui/UiConfiguration.copy|copy(kotlin.Boolean;app.cash.redwood.ui.Margin;app.cash.redwood.ui.Margin;app.cash.redwood.ui.Size?;kotlin.Double;app.cash.redwood.ui.LayoutDirection){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // app.cash.redwood.ui/UiConfiguration.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // app.cash.redwood.ui/UiConfiguration.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // app.cash.redwood.ui/UiConfiguration.toString|toString(){}[0]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,23 @@ public class UiConfiguration(
* True if the device is configured to use a dark color palette.
*/
public val darkMode: Boolean = false,

/**
* A set of distances from the edges of the display where system UI and other elements will be
* drawn.
*
* Use this margin to inset your content to avoid drawing under system UI elements.
* The insets of the host window, independent of where the Redwood composition is positioned
* within it. The Redwood composition is not responsible for consuming these insets.
*/
public val safeAreaInsets: Margin = Margin.Zero,

/**
* The insets of the viewport that the composition is responsible for consuming.
*
* This may be zero if the host view isn't attached to a view hierarchy and therefore doesn't
* know its insets.
*
* See https://developer.android.com/develop/ui/views/layout/edge-to-edge
*/
public val windowInsets: Margin = Margin.Zero,

/**
* The size of the viewport into which the composition is rendering. This could be as lage as the
* entire screen or as small as an individual view within a larger native screen.
Expand All @@ -55,5 +65,21 @@ public class UiConfiguration(
*/
public val layoutDirection: LayoutDirection = LayoutDirection.Ltr,
) {
public fun copy(
darkMode: Boolean = this.darkMode,
safeAreaInsets: Margin = this.safeAreaInsets,
windowInsets: Margin = this.windowInsets,
viewportSize: Size? = this.viewportSize,
density: Double = this.density,
layoutDirection: LayoutDirection = this.layoutDirection,
): UiConfiguration = UiConfiguration(
darkMode = darkMode,
safeAreaInsets = safeAreaInsets,
windowInsets = windowInsets,
viewportSize = viewportSize,
density = density,
layoutDirection = layoutDirection,
)

public companion object
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ public final class app/cash/redwood/treehouse/composeui/ComposableSingletons$Emp
}

public final class app/cash/redwood/treehouse/composeui/TreehouseContentKt {
public static final fun TreehouseContent (Lapp/cash/redwood/treehouse/TreehouseApp;Lapp/cash/redwood/treehouse/TreehouseView$WidgetSystem;Lapp/cash/redwood/treehouse/TreehouseContentSource;Landroidx/compose/ui/Modifier;Lapp/cash/redwood/treehouse/DynamicContentWidgetFactory;Landroidx/compose/runtime/Composer;II)V
public static final fun TreehouseContent (Lapp/cash/redwood/treehouse/TreehouseApp;Lapp/cash/redwood/treehouse/TreehouseView$WidgetSystem;Lapp/cash/redwood/treehouse/TreehouseContentSource;Landroidx/compose/ui/Modifier;Lapp/cash/redwood/ui/Margin;Lapp/cash/redwood/treehouse/DynamicContentWidgetFactory;Landroidx/compose/runtime/Composer;II)V
}

Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ public final class app/cash/redwood/treehouse/composeui/ComposableSingletons$Emp
}

public final class app/cash/redwood/treehouse/composeui/TreehouseContentKt {
public static final fun TreehouseContent (Lapp/cash/redwood/treehouse/TreehouseApp;Lapp/cash/redwood/treehouse/TreehouseView$WidgetSystem;Lapp/cash/redwood/treehouse/TreehouseContentSource;Landroidx/compose/ui/Modifier;Lapp/cash/redwood/treehouse/DynamicContentWidgetFactory;Landroidx/compose/runtime/Composer;II)V
public static final fun TreehouseContent (Lapp/cash/redwood/treehouse/TreehouseApp;Lapp/cash/redwood/treehouse/TreehouseView$WidgetSystem;Lapp/cash/redwood/treehouse/TreehouseContentSource;Landroidx/compose/ui/Modifier;Lapp/cash/redwood/ui/Margin;Lapp/cash/redwood/treehouse/DynamicContentWidgetFactory;Landroidx/compose/runtime/Composer;II)V
}

Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ final val app.cash.redwood.treehouse.composeui/app_cash_redwood_treehouse_compos
final val app.cash.redwood.treehouse.composeui/app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory_EmptyCrashed$stableprop // app.cash.redwood.treehouse.composeui/app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory_EmptyCrashed$stableprop|#static{}app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory_EmptyCrashed$stableprop[0]
final val app.cash.redwood.treehouse.composeui/app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory_EmptyLoading$stableprop // app.cash.redwood.treehouse.composeui/app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory_EmptyLoading$stableprop|#static{}app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory_EmptyLoading$stableprop[0]

final fun <#A: app.cash.redwood.treehouse/AppService> app.cash.redwood.treehouse.composeui/TreehouseContent(app.cash.redwood.treehouse/TreehouseApp<#A>, app.cash.redwood.treehouse/TreehouseView.WidgetSystem<kotlin/Function2<androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>>, app.cash.redwood.treehouse/TreehouseContentSource<#A>, androidx.compose.ui/Modifier?, app.cash.redwood.treehouse/DynamicContentWidgetFactory<kotlin/Function2<androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>>?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int) // app.cash.redwood.treehouse.composeui/TreehouseContent|TreehouseContent(app.cash.redwood.treehouse.TreehouseApp<0:0>;app.cash.redwood.treehouse.TreehouseView.WidgetSystem<kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>>;app.cash.redwood.treehouse.TreehouseContentSource<0:0>;androidx.compose.ui.Modifier?;app.cash.redwood.treehouse.DynamicContentWidgetFactory<kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>>?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){0§<app.cash.redwood.treehouse.AppService>}[0]
final fun <#A: app.cash.redwood.treehouse/AppService> app.cash.redwood.treehouse.composeui/TreehouseContent(app.cash.redwood.treehouse/TreehouseApp<#A>, app.cash.redwood.treehouse/TreehouseView.WidgetSystem<kotlin/Function2<androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>>, app.cash.redwood.treehouse/TreehouseContentSource<#A>, androidx.compose.ui/Modifier?, app.cash.redwood.ui/Margin?, app.cash.redwood.treehouse/DynamicContentWidgetFactory<kotlin/Function2<androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>>?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int) // app.cash.redwood.treehouse.composeui/TreehouseContent|TreehouseContent(app.cash.redwood.treehouse.TreehouseApp<0:0>;app.cash.redwood.treehouse.TreehouseView.WidgetSystem<kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>>;app.cash.redwood.treehouse.TreehouseContentSource<0:0>;androidx.compose.ui.Modifier?;app.cash.redwood.ui.Margin?;app.cash.redwood.treehouse.DynamicContentWidgetFactory<kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>>?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){0§<app.cash.redwood.treehouse.AppService>}[0]
final fun app.cash.redwood.treehouse.composeui/app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory$stableprop_getter(): kotlin/Int // app.cash.redwood.treehouse.composeui/app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory$stableprop_getter|app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory$stableprop_getter(){}[0]
final fun app.cash.redwood.treehouse.composeui/app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory_EmptyCrashed$stableprop_getter(): kotlin/Int // app.cash.redwood.treehouse.composeui/app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory_EmptyCrashed$stableprop_getter|app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory_EmptyCrashed$stableprop_getter(){}[0]
final fun app.cash.redwood.treehouse.composeui/app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory_EmptyLoading$stableprop_getter(): kotlin/Int // app.cash.redwood.treehouse.composeui/app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory_EmptyLoading$stableprop_getter|app_cash_redwood_treehouse_composeui_EmptyDynamicContentWidgetFactory_EmptyLoading$stableprop_getter(){}[0]
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import app.cash.redwood.treehouse.TreehouseView.WidgetSystem
import app.cash.redwood.treehouse.bindWhenReady
import app.cash.redwood.ui.Density
import app.cash.redwood.ui.LayoutDirection as RedwoodLayoutDirection
import app.cash.redwood.ui.Margin
import app.cash.redwood.ui.OnBackPressedDispatcher
import app.cash.redwood.ui.Size
import app.cash.redwood.ui.UiConfiguration
Expand All @@ -55,6 +56,7 @@ public fun <A : AppService> TreehouseContent(
widgetSystem: WidgetSystem<@Composable () -> Unit>,
contentSource: TreehouseContentSource<A>,
modifier: Modifier = Modifier,
windowInsets: Margin = Margin.Zero,
dynamicContentWidgetFactory: DynamicContentWidgetFactory<@Composable () -> Unit> =
EmptyDynamicContentWidgetFactory,
) {
Expand All @@ -65,6 +67,7 @@ public fun <A : AppService> TreehouseContent(
val uiConfiguration = UiConfiguration(
darkMode = isSystemInDarkTheme(),
safeAreaInsets = safeAreaInsets(),
windowInsets = windowInsets,
viewportSize = viewportSize,
density = density.density.toDouble(),
layoutDirection = when (LocalLayoutDirection.current) {
Expand All @@ -83,6 +86,7 @@ public fun <A : AppService> TreehouseContent(
override val dynamicContentWidgetFactory = dynamicContentWidgetFactory
override val onBackPressedDispatcher = onBackPressedDispatcher
override val uiConfiguration = MutableStateFlow(uiConfiguration)
override var windowInsets: Margin = windowInsets

// TODO TreehouseView is a weird type and shouldn't extend from RedwoodView. The concept
// of this registry shouldn't exist for Treehouse / should be auto-wired via RedwoodContent.
Expand Down
6 changes: 6 additions & 0 deletions redwood-widget/api/android/redwood-widget.api
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,19 @@ public final class app/cash/redwood/widget/MutableListChildren : app/cash/redwoo

public class app/cash/redwood/widget/RedwoodLayout : android/view/ViewGroup, app/cash/redwood/widget/RedwoodView {
public fun <init> (Landroid/content/Context;Landroidx/activity/OnBackPressedDispatcher;)V
public final fun consumeWindowInsets (I)V
public static synthetic fun consumeWindowInsets$default (Lapp/cash/redwood/widget/RedwoodLayout;IILjava/lang/Object;)V
public final fun getChildren ()Lapp/cash/redwood/widget/Widget$Children;
public fun getOnBackPressedDispatcher ()Lapp/cash/redwood/ui/OnBackPressedDispatcher;
public fun getSavedStateRegistry ()Lapp/cash/redwood/widget/SavedStateRegistry;
public fun getUiConfiguration ()Lkotlinx/coroutines/flow/StateFlow;
public final fun getValue ()Landroid/view/View;
public synthetic fun getValue ()Ljava/lang/Object;
public fun getWindowInsets ()Lapp/cash/redwood/ui/Margin;
protected fun onConfigurationChanged (Landroid/content/res/Configuration;)V
protected fun onLayout (ZIIII)V
protected fun onMeasure (II)V
public fun setWindowInsets (Lapp/cash/redwood/ui/Margin;)V
}

public abstract interface class app/cash/redwood/widget/RedwoodView {
Expand All @@ -67,6 +71,8 @@ public abstract interface class app/cash/redwood/widget/RedwoodView {
public abstract fun getSavedStateRegistry ()Lapp/cash/redwood/widget/SavedStateRegistry;
public abstract fun getUiConfiguration ()Lkotlinx/coroutines/flow/StateFlow;
public abstract fun getValue ()Ljava/lang/Object;
public abstract fun getWindowInsets ()Lapp/cash/redwood/ui/Margin;
public abstract fun setWindowInsets (Lapp/cash/redwood/ui/Margin;)V
}

public abstract interface class app/cash/redwood/widget/SavedStateRegistry {
Expand Down
2 changes: 2 additions & 0 deletions redwood-widget/api/jvm/redwood-widget.api
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ public abstract interface class app/cash/redwood/widget/RedwoodView {
public abstract fun getSavedStateRegistry ()Lapp/cash/redwood/widget/SavedStateRegistry;
public abstract fun getUiConfiguration ()Lkotlinx/coroutines/flow/StateFlow;
public abstract fun getValue ()Ljava/lang/Object;
public abstract fun getWindowInsets ()Lapp/cash/redwood/ui/Margin;
public abstract fun setWindowInsets (Lapp/cash/redwood/ui/Margin;)V
}

public abstract interface class app/cash/redwood/widget/SavedStateRegistry {
Expand Down
8 changes: 8 additions & 0 deletions redwood-widget/api/redwood-widget.klib.api
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ abstract interface <#A: kotlin/Any> app.cash.redwood.widget/RedwoodView { // app
abstract fun <get-uiConfiguration>(): kotlinx.coroutines.flow/StateFlow<app.cash.redwood.ui/UiConfiguration> // app.cash.redwood.widget/RedwoodView.uiConfiguration.<get-uiConfiguration>|<get-uiConfiguration>(){}[0]
abstract val value // app.cash.redwood.widget/RedwoodView.value|{}value[0]
abstract fun <get-value>(): #A // app.cash.redwood.widget/RedwoodView.value.<get-value>|<get-value>(){}[0]

abstract var windowInsets // app.cash.redwood.widget/RedwoodView.windowInsets|{}windowInsets[0]
abstract fun <get-windowInsets>(): app.cash.redwood.ui/Margin // app.cash.redwood.widget/RedwoodView.windowInsets.<get-windowInsets>|<get-windowInsets>(){}[0]
abstract fun <set-windowInsets>(app.cash.redwood.ui/Margin) // app.cash.redwood.widget/RedwoodView.windowInsets.<set-windowInsets>|<set-windowInsets>(app.cash.redwood.ui.Margin){}[0]
}

abstract interface <#A: kotlin/Any> app.cash.redwood.widget/Widget { // app.cash.redwood.widget/Widget|null[0]
Expand Down Expand Up @@ -136,6 +140,10 @@ open class app.cash.redwood.widget/RedwoodUIView : app.cash.redwood.widget/Redwo
open val value // app.cash.redwood.widget/RedwoodUIView.value|{}value[0]
open fun <get-value>(): platform.UIKit/UIView // app.cash.redwood.widget/RedwoodUIView.value.<get-value>|<get-value>(){}[0]

open var windowInsets // app.cash.redwood.widget/RedwoodUIView.windowInsets|{}windowInsets[0]
open fun <get-windowInsets>(): app.cash.redwood.ui/Margin // app.cash.redwood.widget/RedwoodUIView.windowInsets.<get-windowInsets>|<get-windowInsets>(){}[0]
open fun <set-windowInsets>(app.cash.redwood.ui/Margin) // app.cash.redwood.widget/RedwoodUIView.windowInsets.<set-windowInsets>|<set-windowInsets>(app.cash.redwood.ui.Margin){}[0]

open fun superviewChanged() // app.cash.redwood.widget/RedwoodUIView.superviewChanged|superviewChanged(){}[0]
}

Expand Down
Loading

0 comments on commit c5b65db

Please sign in to comment.