package com.suno.android.common_ui.components.waveform import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import kotlin.time.Duration import kotlin.time.Duration.Companion.seconds import kotlin.time.DurationUnit @JvmInline value class DpPerSecond( val dpPerSecond: Float, ) : Comparable { operator fun times( number: Float, ): DpPerSecond = DpPerSecond(this.dpPerSecond * number) override fun compareTo( other: DpPerSecond, ): Int = this.dpPerSecond.compareTo(other.dpPerSecond) } operator fun DpPerSecond.times( duration: Duration, ): Dp = (dpPerSecond * duration.toDouble(DurationUnit.SECONDS)).dp operator fun Duration.times( resolution: DpPerSecond, ): Dp = resolution.times(this) operator fun Dp.div( resolution: DpPerSecond, ): Duration = (this.value / resolution.dpPerSecond).toDouble().seconds operator fun Dp.div( duration: Duration, ): DpPerSecond = DpPerSecond(this.value / duration.toDouble(DurationUnit.SECONDS).toFloat()) val Dp.perSecond get() = this / 1.seconds