All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.kotlinx.css.properties.Animation.kt Maven / Gradle / Ivy

@file:Suppress("EnumEntryName")

package kotlinx.css.properties

import kotlinx.css.CssValue
import kotlinx.css.StyleList
import kotlinx.css.hyphenize

class IterationCount(override val value: String) : CssValue(value) {
    companion object {
        val infinite = IterationCount("infinite")
    }
}

val Int.times get() = IterationCount("$this")

enum class AnimationDirection {
    initial, inherit, unset,

    normal, reverse, alternate, alternateReverse;

    override fun toString() = name.hyphenize()
}

enum class FillMode {
    initial, inherit, unset,

    none, forwards, backwards, both;

    override fun toString() = name
}

enum class PlayState {
    initial, inherit, unset,

    running, paused;

    override fun toString() = name
}


class Animation(
    name: String,
    duration: Time = 0.s,
    timing: Timing = Timing.ease,
    delay: Time = 0.s,
    iterationCount: IterationCount = 1.times,
    direction: AnimationDirection = AnimationDirection.normal,
    fillMode: FillMode = FillMode.none,
    playState: PlayState = PlayState.running
) : CssValue("$duration $timing $delay $iterationCount $direction $fillMode $playState $name")

class Animations : StyleList(", ") {
    companion object {
        val none = Animations()
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy