ObservableMutableState.kt (551B) - raw


      1 package me.rhunk.snapenhance.ui.util
      2 
      3 import androidx.compose.runtime.MutableState
      4 
      5 class ObservableMutableState<T>(
      6     defaultValue: T,
      7     val onChange: (T, T) -> Unit = { _, _ -> },
      8 ) : MutableState<T> {
      9     private var mutableValue: T = defaultValue
     10     override var value: T
     11         get() = mutableValue
     12         set(value) {
     13             val oldValue = mutableValue
     14             mutableValue = value
     15             onChange(oldValue, value)
     16         }
     17     override fun component1() = value
     18     override fun component2(): (T) -> Unit = { value = it }
     19 }