From 2bf19fd647f5bc6618286aeea464a1aa8f415e3f Mon Sep 17 00:00:00 2001 From: rnentjes Date: Sun, 22 Mar 2020 16:40:18 +0100 Subject: [PATCH] More properties, val i.o. fun --- build.gradle.kts | 13 +- .../kotlin/nl/astraeus/css/CssBuilder.kt | 6 +- .../astraeus/css/properties/AlignContent.kt | 25 +-- .../nl/astraeus/css/properties/AlignItems.kt | 25 ++- .../nl/astraeus/css/properties/AlignSelf.kt | 27 +-- .../kotlin/nl/astraeus/css/properties/All.kt | 19 +- .../nl/astraeus/css/properties/Animation.kt | 62 ++--- .../css/properties/BackfaceVisibility.kt | 8 +- .../nl/astraeus/css/properties/Background.kt | 70 +++--- .../nl/astraeus/css/properties/Border.kt | 52 ++--- .../kotlin/nl/astraeus/css/properties/Box.kt | 27 +-- .../nl/astraeus/css/properties/Break.kt | 32 +-- .../nl/astraeus/css/properties/Caption.kt | 8 +- .../nl/astraeus/css/properties/Clear.kt | 12 +- .../kotlin/nl/astraeus/css/properties/Clip.kt | 37 +-- .../nl/astraeus/css/properties/Color.kt | 8 +- .../nl/astraeus/css/properties/Common.kt | 12 +- .../nl/astraeus/css/properties/Content.kt | 19 +- .../nl/astraeus/css/properties/Count.kt | 9 +- .../nl/astraeus/css/properties/CssFloat.kt | 15 ++ .../astraeus/css/properties/DelayDuration.kt | 6 +- .../nl/astraeus/css/properties/Direction.kt | 8 +- .../nl/astraeus/css/properties/Display.kt | 46 ++-- .../nl/astraeus/css/properties/EmptyCells.kt | 8 +- .../kotlin/nl/astraeus/css/properties/Flex.kt | 27 +-- .../nl/astraeus/css/properties/Float.kt | 15 -- .../kotlin/nl/astraeus/css/properties/Font.kt | 119 +++++----- .../kotlin/nl/astraeus/css/properties/Grid.kt | 38 ++-- .../nl/astraeus/css/properties/Hyphens.kt | 10 +- .../nl/astraeus/css/properties/Image.kt | 32 +-- .../astraeus/css/properties/InitialInherit.kt | 12 + .../nl/astraeus/css/properties/Isolation.kt | 8 +- .../astraeus/css/properties/JustifyContent.kt | 14 +- .../astraeus/css/properties/LetterSpacing.kt | 6 +- .../nl/astraeus/css/properties/ListStyle.kt | 56 ++--- .../nl/astraeus/css/properties/Measurement.kt | 19 +- .../astraeus/css/properties/MixBlendMode.kt | 28 +-- .../nl/astraeus/css/properties/ObjectFit.kt | 14 +- .../nl/astraeus/css/properties/Opacity.kt | 12 - .../nl/astraeus/css/properties/Order.kt | 12 - .../astraeus/css/properties/OutlineWidth.kt | 10 +- .../nl/astraeus/css/properties/Overflow.kt | 12 +- .../nl/astraeus/css/properties/Padding.kt | 12 - .../nl/astraeus/css/properties/PageBreak.kt | 14 +- .../nl/astraeus/css/properties/Perspective.kt | 13 ++ .../astraeus/css/properties/PointerEvents.kt | 14 ++ .../nl/astraeus/css/properties/Position.kt | 17 ++ .../nl/astraeus/css/properties/Punctuation.kt | 14 +- .../nl/astraeus/css/properties/Resize.kt | 16 ++ .../astraeus/css/properties/ScrollBehavior.kt | 14 ++ .../kotlin/nl/astraeus/css/properties/Span.kt | 8 +- .../nl/astraeus/css/properties/TableLayout.kt | 14 ++ .../nl/astraeus/css/properties/TextAlign.kt | 16 ++ .../astraeus/css/properties/TextAlignLast.kt | 19 ++ .../css/properties/TextDecorationLine.kt | 16 ++ .../css/properties/TextDecorationStyle.kt | 17 ++ .../nl/astraeus/css/properties/TextJustify.kt | 16 ++ .../astraeus/css/properties/TextTransform.kt | 16 ++ .../astraeus/css/properties/TimingFunction.kt | 22 ++ .../nl/astraeus/css/properties/Transform.kt | 49 ++++ .../astraeus/css/properties/TransformStyle.kt | 14 ++ .../nl/astraeus/css/properties/UnicodeBidi.kt | 15 ++ .../nl/astraeus/css/properties/UserSelect.kt | 14 ++ .../astraeus/css/properties/VerticalAlign.kt | 20 ++ .../nl/astraeus/css/properties/Visibility.kt | 15 ++ .../nl/astraeus/css/properties/WhiteSpace.kt | 17 ++ .../nl/astraeus/css/properties/WordBreak.kt | 16 ++ .../nl/astraeus/css/properties/WordSpacing.kt | 13 ++ .../nl/astraeus/css/properties/WordWrap.kt | 14 ++ .../nl/astraeus/css/properties/WritingMode.kt | 13 ++ .../nl/astraeus/css/properties/ZIndex.kt | 13 ++ .../kotlin/nl/astraeus/css/style/Style.kt | 212 ++++++++++++------ src/jsMain/kotlin/nl/astraeus/css/Test.kt | 8 +- src/jsMain/resources/index.html | 10 + src/jvmMain/kotlin/nl/astraeus/css/Test.kt | 36 +-- 75 files changed, 1121 insertions(+), 614 deletions(-) create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/CssFloat.kt delete mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/Float.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/InitialInherit.kt delete mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/Opacity.kt delete mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/Order.kt delete mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/Padding.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/Perspective.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/PointerEvents.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/Position.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/Resize.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/ScrollBehavior.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/TableLayout.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/TextAlign.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/TextAlignLast.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/TextDecorationLine.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/TextDecorationStyle.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/TextJustify.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/TextTransform.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/TimingFunction.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/Transform.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/TransformStyle.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/UnicodeBidi.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/UserSelect.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/VerticalAlign.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/Visibility.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/WhiteSpace.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/WordBreak.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/WordSpacing.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/WordWrap.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/WritingMode.kt create mode 100644 src/commonMain/kotlin/nl/astraeus/css/properties/ZIndex.kt create mode 100644 src/jsMain/resources/index.html diff --git a/build.gradle.kts b/build.gradle.kts index e8c4163..45cefe6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - kotlin("multiplatform") version "1.3.70-eap-184" + kotlin("multiplatform") version "1.4-M1" } group = "nl.astraeus" @@ -10,14 +10,21 @@ repositories { mavenCentral() } -apply(plugin = "kotlin-dce-js") +//apply(plugin = "kotlin-dce-js") kotlin { /* Targets configuration omitted. * To find out how to configure the targets, please follow the link: * https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#setting-up-targets */ jvm() - js() + js { + produceExecutable() + browser { + distribution { + directory = File("$projectDir/web/") + } + } + } sourceSets { val commonMain by getting { diff --git a/src/commonMain/kotlin/nl/astraeus/css/CssBuilder.kt b/src/commonMain/kotlin/nl/astraeus/css/CssBuilder.kt index aaf55f6..a405a58 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/CssBuilder.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/CssBuilder.kt @@ -1,12 +1,14 @@ package nl.astraeus.css +import nl.astraeus.css.style.ConditionalCss +import nl.astraeus.css.style.ConditionalStyle import nl.astraeus.css.style.Css import nl.astraeus.css.style.Style fun css(definition: Css) = definition -fun style(definition: Css): Style { - val css = Style() +fun style(definition: ConditionalCss): ConditionalStyle { + val css = ConditionalStyle() definition(css) diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/AlignContent.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/AlignContent.kt index 98e9049..b2ef789 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/AlignContent.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/AlignContent.kt @@ -1,26 +1,17 @@ package nl.astraeus.css.properties -enum class AlignContentValue( - val value: String -): CssValue { - STRETCH("stretch"), - ; - - override fun css() = value -} - class AlignContent( value: String ) : CssProperty(value) { companion object { - fun stretch() = AlignContent("stretch") - fun center() = AlignContent("center") - fun flexStart() = AlignContent("flex-start") - fun flexEnd() = AlignContent("flex-end") - fun spaceBetween() = AlignContent("space-between") - fun spaceAround() = AlignContent("space-around") - fun initial() = AlignContent("initial") - fun inherit() = AlignContent("inherit") + val stretch = AlignContent("stretch") + val center = AlignContent("center") + val flexStart = AlignContent("flex-start") + val flexEnd = AlignContent("flex-end") + val spaceBetween = AlignContent("space-between") + val spaceAround = AlignContent("space-around") + val initial = AlignContent("initial") + val inherit = AlignContent("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/AlignItems.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/AlignItems.kt index 87ecf56..d9b2e49 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/AlignItems.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/AlignItems.kt @@ -1,16 +1,17 @@ package nl.astraeus.css.properties -enum class AlignItems( - val value: String -): CssValue { - STRETCH("stretch"), - CENTER("center"), - FLEX_START("flex-start"), - FLEX_END("flex-end"), - BASELINE("baseline"), - INITIAL("initial"), - INHERIT("inherit"), - ; +class AlignItems( + value: String +): CssProperty(value) { + + companion object { + val stretch = AlignItems("stretch") + val center = AlignItems("center") + val flexStart = AlignItems("flex-start") + val flexEnd = AlignItems("flex-end") + val baseline = AlignItems("baseline") + val initial = AlignItems("initial") + val inherit = AlignItems("inherit") + } - override fun css(): String = value } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/AlignSelf.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/AlignSelf.kt index a03043d..61bfa10 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/AlignSelf.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/AlignSelf.kt @@ -1,17 +1,18 @@ package nl.astraeus.css.properties -enum class AlignSelf( - val value: String -): CssValue { - AUTO("auto"), - STRETCH("stretch"), - CENTER("center"), - FLEX_START("flex-start"), - FLEX_END("flex-end"), - BASELINE("baseline"), - INITIAL("initial"), - INHERIT("inherit"), - ; +class AlignSelf( + value: String +): CssProperty(value) { + + companion object { + val auto = AlignSelf("auto") + val stretch = AlignSelf("stretch") + val center = AlignSelf("center") + val flexStart = AlignSelf("flex-start") + val flexEnd = AlignSelf("flex-end") + val baseline = AlignSelf("baseline") + val initial = AlignSelf("initial") + val inherit = AlignSelf("inherit") + } - override fun css(): String = value } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/All.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/All.kt index fcbef45..76c901e 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/All.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/All.kt @@ -1,13 +1,14 @@ package nl.astraeus.css.properties -enum class All( - val value: String -): CssValue { - UNSET("unset"), - REVERT("revert"), - INITIAL("initial"), - INHERIT("inherit"), - ; +class All( + value: String +): CssProperty(value) { + + companion object { + val unset = All("unset") + val revert = All("revert") + val initial = All("initial") + val inherit = All("inherit") + } - override fun css(): String = value } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Animation.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Animation.kt index 7e07961..4697a83 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Animation.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Animation.kt @@ -5,12 +5,12 @@ class AnimationDirection( ) : CssProperty(value) { companion object { - fun normal() = AnimationDirection("normal") - fun reverse() = AnimationDirection("reverse") - fun alternate() = AnimationDirection("alternate") - fun alternateReverse() = AnimationDirection("alternate-reverse") - fun initial() = AnimationDirection("initial") - fun inherit() = AnimationDirection("inherit") + val normal = AnimationDirection("normal") + val reverse = AnimationDirection("reverse") + val alternate = AnimationDirection("alternate") + val alternateReverse = AnimationDirection("alternate-reverse") + val initial = AnimationDirection("initial") + val inherit = AnimationDirection("inherit") } } @@ -19,12 +19,12 @@ class AnimationFillMode( ) : CssProperty(value) { companion object { - fun none() = AnimationFillMode("none") - fun forwards() = AnimationFillMode("forwards") - fun backwards() = AnimationFillMode("backwards") - fun both() = AnimationFillMode("both") - fun initial() = AnimationFillMode("initial") - fun inherit() = AnimationFillMode("inherit") + val none = AnimationFillMode("none") + val forwards = AnimationFillMode("forwards") + val backwards = AnimationFillMode("backwards") + val both = AnimationFillMode("both") + val initial = AnimationFillMode("initial") + val inherit = AnimationFillMode("inherit") } } @@ -33,10 +33,10 @@ class AnimationFrame( ): CssProperty(value) { companion object { - fun name(name: String): AnimationFrame = AnimationFrame(name) - fun none(): AnimationFrame = AnimationFrame("none") - fun initial(): AnimationFrame = AnimationFrame("initial") - fun inherit(): AnimationFrame = AnimationFrame("inherit") + fun name(name: String) = AnimationFrame(name) + val none: AnimationFrame = AnimationFrame("none") + val initial: AnimationFrame = AnimationFrame("initial") + val inherit: AnimationFrame = AnimationFrame("inherit") } } @@ -47,31 +47,9 @@ class AnimationPlayState( companion object { fun name(name: String) = AnimationPlayState(name) - fun paused() = AnimationPlayState("paused") - fun running() = AnimationPlayState("running") - fun initial() = AnimationPlayState("initial") - fun inherit() = AnimationPlayState("inherit") - } -} - -class AnimationTimingFunction( - value: String = "" -) : CssProperty(value) { - - companion object { - fun linear() = AnimationTimingFunction("linear") - fun ease() = AnimationTimingFunction("ease") - fun easeIn() = AnimationTimingFunction("ease-in") - fun easeOut() = AnimationTimingFunction("ease-out") - fun easeInOut() = AnimationTimingFunction("ease-in-out") - fun cubicBezier( - n1: Double, - n2: Double, - n3: Double, - n4: Double - ) = AnimationTimingFunction("cubic-bezier($n1,$n2,$n3,$n4)") - fun initial() = AnimationTimingFunction("initial") - fun inherit() = AnimationTimingFunction("inherit") - + val paused = AnimationPlayState("paused") + val running = AnimationPlayState("running") + val initial = AnimationPlayState("initial") + val inherit = AnimationPlayState("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/BackfaceVisibility.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/BackfaceVisibility.kt index b5f0042..05a2cc1 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/BackfaceVisibility.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/BackfaceVisibility.kt @@ -5,9 +5,9 @@ class BackfaceVisibility( ) : CssProperty(value) { companion object { - fun visible() = BackfaceVisibility("visible") - fun hidden() = BackfaceVisibility("hidden") - fun initial() = BackfaceVisibility("initial") - fun inherit() = BackfaceVisibility("inherit") + val visible = BackfaceVisibility("visible") + val hidden = BackfaceVisibility("hidden") + val initial = BackfaceVisibility("initial") + val inherit = BackfaceVisibility("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Background.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Background.kt index 5ed3815..b181ee7 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Background.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Background.kt @@ -5,11 +5,11 @@ class BackgroundAttachment( ) : CssProperty(value) { companion object { - fun scroll() = BackgroundAttachment("scroll") - fun fixed() = BackgroundAttachment("fixed") - fun local() = BackgroundAttachment("local") - fun initial() = BackgroundAttachment("initial") - fun inherit() = BackgroundAttachment("inherit") + val scroll = BackgroundAttachment("scroll") + val fixed = BackgroundAttachment("fixed") + val local = BackgroundAttachment("local") + val initial = BackgroundAttachment("initial") + val inherit = BackgroundAttachment("inherit") } } @@ -18,16 +18,16 @@ class BackgroundBlendMode( ) : CssProperty(value) { companion object { - fun normal() = BackgroundBlendMode("normal") - fun multiply() = BackgroundBlendMode("multiply") - fun screen() = BackgroundBlendMode("screen") - fun overlay() = BackgroundBlendMode("overlay") - fun darken() = BackgroundBlendMode("darken") - fun lighten() = BackgroundBlendMode("lighten") - fun colorDodge() = BackgroundBlendMode("color-dodge") - fun saturation() = BackgroundBlendMode("saturation") - fun color() = BackgroundBlendMode("color") - fun luminosity() = BackgroundBlendMode("luminosity") + val normal = BackgroundBlendMode("normal") + val multiply = BackgroundBlendMode("multiply") + val screen = BackgroundBlendMode("screen") + val overlay = BackgroundBlendMode("overlay") + val darken = BackgroundBlendMode("darken") + val lighten = BackgroundBlendMode("lighten") + val colorDodge = BackgroundBlendMode("color-dodge") + val saturation = BackgroundBlendMode("saturation") + val color = BackgroundBlendMode("color") + val luminosity = BackgroundBlendMode("luminosity") } } @@ -36,12 +36,11 @@ class BackgroundPosition( ) : CssProperty(value) { companion object { - fun left() = BackgroundPosition("left") - fun center() = BackgroundPosition("center") - fun right() = BackgroundPosition("right") - fun initial() = BackgroundPosition("initial") - fun inherit() = BackgroundPosition("inherit") - + val left = BackgroundPosition("left") + val center = BackgroundPosition("center") + val right = BackgroundPosition("right") + val initial = BackgroundPosition("initial") + val inherit = BackgroundPosition("inherit") } } @@ -50,15 +49,15 @@ class BackgroundRepeat( ) : CssProperty(value) { companion object { - fun repeat() = BackgroundRepeat("repeat") - fun repeatX() = BackgroundRepeat("repeat-x") - fun repeatY() = BackgroundRepeat("repeat-y") - fun noRepeat() = BackgroundRepeat("no-repeat") - fun space() = BackgroundRepeat("space") - fun round() = BackgroundRepeat("round") - fun initial() = BackgroundRepeat("initial") - fun inherit() = BackgroundRepeat("inherit") - fun unset() = BackgroundRepeat("unset") + val repeat = BackgroundRepeat("repeat") + val repeatX = BackgroundRepeat("repeat-x") + val repeatY = BackgroundRepeat("repeat-y") + val noRepeat = BackgroundRepeat("no-repeat") + val space = BackgroundRepeat("space") + val round = BackgroundRepeat("round") + val initial = BackgroundRepeat("initial") + val inherit = BackgroundRepeat("inherit") + val unset = BackgroundRepeat("unset") } } @@ -69,11 +68,12 @@ class BackgroundSize( companion object { fun px(px: Int) = BackgroundSize("${px}px") fun perc(pc: Double) = BackgroundSize("${pc}%") - fun auto() = BackgroundSize("auto") - fun cover() = BackgroundSize("cover") - fun contain() = BackgroundSize("contain") - fun initial() = BackgroundSize("initial") - fun inherit() = BackgroundSize("inherit") + + val auto = BackgroundSize("auto") + val cover = BackgroundSize("cover") + val contain = BackgroundSize("contain") + val initial = BackgroundSize("initial") + val inherit = BackgroundSize("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Border.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Border.kt index cfe4256..e83a5bb 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Border.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Border.kt @@ -13,8 +13,8 @@ class BorderRadius( fun pc(nr: Double) = BorderRadius("${nr}pc") fun cm(nr: Int) = BorderRadius("${nr}cm") fun cm(nr: Double) = BorderRadius("${nr}cm") - fun initial() = BorderRadius("initial") - fun inherit() = BorderRadius("inherit") + val initial = BorderRadius("initial") + val inherit = BorderRadius("inherit") } } @@ -23,18 +23,18 @@ class BorderStyle( ): CssProperty(value) { companion object { - fun none() = BorderStyle("none") - fun hidden() = BorderStyle("hidden") - fun dotted() = BorderStyle("dotted") - fun dashed() = BorderStyle("dashed") - fun solid() = BorderStyle("solid") - fun double() = BorderStyle("double") - fun groove() = BorderStyle("groove") - fun ridge() = BorderStyle("ridge") - fun inset() = BorderStyle("inset") - fun outset() = BorderStyle("outset") - fun initial() = BorderStyle("initial") - fun inherit() = BorderStyle("inherit") + val none = BorderStyle("none") + val hidden = BorderStyle("hidden") + val dotted = BorderStyle("dotted") + val dashed = BorderStyle("dashed") + val solid = BorderStyle("solid") + val double = BorderStyle("double") + val groove = BorderStyle("groove") + val ridge = BorderStyle("ridge") + val inset = BorderStyle("inset") + val outset = BorderStyle("outset") + val initial = BorderStyle("initial") + val inherit = BorderStyle("inherit") } } @@ -43,11 +43,11 @@ class BorderWidth( ): CssProperty(value) { companion object { - fun thin() = BorderWidth("thin") - fun medium() = BorderWidth("medium") - fun thick() = BorderWidth("thick") - fun initial() = BorderWidth("initial") - fun inherit() = BorderWidth("inherit") + val thin = BorderWidth("thin") + val medium = BorderWidth("medium") + val thick = BorderWidth("thick") + val initial = BorderWidth("initial") + val inherit = BorderWidth("inherit") } } @@ -56,8 +56,8 @@ class BorderCollapse( ): CssProperty(value) { companion object { - fun separate() = BorderCollapse("separate") - fun collapse() = BorderCollapse("collapse") + val separate = BorderCollapse("separate") + val collapse = BorderCollapse("collapse") } } @@ -70,9 +70,9 @@ class BorderImageWidth ( fun nr(nr: Int) = BorderImageWidth("$nr") fun perc(nr: Int) = BorderImageWidth("${nr}%") fun perc(nr: Double) = BorderImageWidth("${nr}%") - fun auto() = BorderImageWidth("auto") - fun initial() = BorderImageWidth("initial") - fun inherit() = BorderImageWidth("inherit") + val auto = BorderImageWidth("auto") + val initial = BorderImageWidth("initial") + val inherit = BorderImageWidth("inherit") } } @@ -90,7 +90,7 @@ class BorderSpacing( fun pc(nr: Double) = BorderSpacing("${nr}pc") fun cm(nr: Int) = BorderSpacing("${nr}cm") fun cm(nr: Double) = BorderSpacing("${nr}cm") - fun initial() = BorderSpacing("initial") - fun inherit() = BorderSpacing("inherit") + val initial = BorderSpacing("initial") + val inherit = BorderSpacing("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Box.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Box.kt index d256920..c44dee9 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Box.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Box.kt @@ -5,11 +5,11 @@ class BoxDecorationBreak( ): CssProperty(value) { companion object { - fun slice() = BoxDecorationBreak("slice") - fun clone() = BoxDecorationBreak("clone") - fun initial() = BoxDecorationBreak("initial") - fun inherit() = BoxDecorationBreak("inherit") - fun unset() = BoxDecorationBreak("unset") + val slice = BoxDecorationBreak("slice") + val clone = BoxDecorationBreak("clone") + val initial = BoxDecorationBreak("initial") + val inherit = BoxDecorationBreak("inherit") + val unset = BoxDecorationBreak("unset") } } @@ -18,11 +18,12 @@ class BoxShadow( ): CssProperty(value) { companion object { - fun none() = BoxShadow("none") + val none = BoxShadow("none") + val inset = BoxShadow("inset") + val initial = BoxShadow("initial") + val inherit = BoxShadow("inherit") + fun text(txt: String) = BoxShadow(txt) - fun inset() = BoxShadow("inset") - fun initial() = BoxShadow("initial") - fun inherit() = BoxShadow("inherit") } } @@ -31,9 +32,9 @@ class BoxSizing( ): CssProperty(value) { companion object { - fun contextBox() = BoxSizing("content-box") - fun borderBox() = BoxSizing("border-box") - fun initial() = BoxShadow("initial") - fun inherit() = BoxShadow("inherit") + val contextBox = BoxSizing("content-box") + val borderBox = BoxSizing("border-box") + val initial = BoxShadow("initial") + val inherit = BoxShadow("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Break.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Break.kt index 172420d..4856659 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Break.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Break.kt @@ -6,22 +6,22 @@ class Break( ): CssProperty(value) { companion object { - fun auto() = Break("auto") - fun all() = Break("all") - fun always() = Break("always") - fun avoid() = Break("avoid") - fun avoidColumn() = Break("avoid-column") - fun avoidPage() = Break("avoid-page") - fun avoidRegion() = Break("avoid-region") - fun column() = Break("column") - fun left() = Break("left") - fun page() = Break("page") - fun recto() = Break("recto") - fun region() = Break("region") - fun right() = Break("right") - fun verso() = Break("verso") - fun initial() = Break("initial") - fun inherit() = Break("inherit") + val auto = Break("auto") + val all = Break("all") + val always = Break("always") + val avoid = Break("avoid") + val avoidColumn = Break("avoid-column") + val avoidPage = Break("avoid-page") + val avoidRegion = Break("avoid-region") + val column = Break("column") + val left = Break("left") + val page = Break("page") + val recto = Break("recto") + val region = Break("region") + val right = Break("right") + val verso = Break("verso") + val initial = Break("initial") + val inherit = Break("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Caption.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Caption.kt index 279b806..e0c9ec7 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Caption.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Caption.kt @@ -5,10 +5,10 @@ class CaptionSide( ): CssProperty(value) { companion object { - fun top() = CaptionSide("top") - fun bottom() = CaptionSide("bottom") - fun initial() = CaptionSide("initial") - fun inherit() = CaptionSide("inherit") + val top = CaptionSide("top") + val bottom = CaptionSide("bottom") + val initial = CaptionSide("initial") + val inherit = CaptionSide("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Clear.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Clear.kt index 4ad89b6..4803fb4 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Clear.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Clear.kt @@ -6,12 +6,12 @@ class Clear( ): CssProperty(value) { companion object { - fun none() = Clear("none") - fun left() = Clear("left") - fun right() = Clear("right") - fun both() = Clear("both") - fun initial() = Clear("initial") - fun inherit() = Clear("inherit") + val none = Clear("none") + val left = Clear("left") + val right = Clear("right") + val both = Clear("both") + val initial = Clear("initial") + val inherit = Clear("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Clip.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Clip.kt index cb5a22a..eb49e9d 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Clip.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Clip.kt @@ -5,10 +5,10 @@ class Clip( ) : CssProperty(value) { companion object { - fun auto() = Clip("auto") fun rect(top: Int, right: Int, bottom: Int, left: Int) = Clip("rect(${top}px,${right}px,${bottom}px,${left}px)") - fun initial() = Clip("initial") - fun inherit() = Clip("inherit") + val auto = Clip("auto") + val initial = Clip("initial") + val inherit = Clip("inherit") } } @@ -18,7 +18,7 @@ class ClipPath( ) : CssProperty(value) { companion object { - fun auto() = ClipPath("auto") + val auto = ClipPath("auto") fun circle(perc: Double) = ClipPath("circle(${perc}%)") fun ellipse(radiusX: Double, radiusY: Double) = ClipPath("ellipse(${radiusX}%,${radiusY}%)") fun ellipse( @@ -27,15 +27,18 @@ class ClipPath( positionX: Double, positionY: Double ) = ClipPath("ellipse(${radiusX}%,${radiusY}% at ${positionX}%,${positionY}%)") + // todo: other options - fun marginBox() = ClipPath("margin-box") - fun borderBox() = ClipPath("border-box") - fun paddingBox() = ClipPath("padding-box") - fun contentBox() = ClipPath("content-box") - fun fillBox() = ClipPath("fill-box") - fun strokeBox() = ClipPath("stroke-box") - fun viewBox() = ClipPath("view-box") - fun none() = ClipPath("none") + fun other(text: String) = ClipPath(text) + + val marginBox = ClipPath("margin-box") + val borderBox = ClipPath("border-box") + val paddingBox = ClipPath("padding-box") + val contentBox = ClipPath("content-box") + val fillBox = ClipPath("fill-box") + val strokeBox = ClipPath("stroke-box") + val viewBox = ClipPath("view-box") + val none = ClipPath("none") } } @@ -44,11 +47,11 @@ class ClipOrigin( ) : CssProperty(value) { companion object { - fun borderBox() = ClipOrigin("border-box") - fun paddingBox() = ClipOrigin("padding-box") - fun contentBox() = ClipOrigin("content-box") - fun initial() = ClipOrigin("initial") - fun inherit() = ClipOrigin("inherit") + val borderBox = ClipOrigin("border-box") + val paddingBox = ClipOrigin("padding-box") + val contentBox = ClipOrigin("content-box") + val initial = ClipOrigin("initial") + val inherit = ClipOrigin("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Color.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Color.kt index 7cbb5e9..8baac30 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Color.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Color.kt @@ -5,10 +5,10 @@ class Color( ) : CssProperty(value) { companion object { - fun auto() = Color("auto") - fun transparant() = Color("transparant") - fun initial() = Color("initial") - fun inherit() = Color("inherit") + val auto = Color("auto") + val transparant = Color("transparant") + val initial = Color("initial") + val inherit = Color("inherit") fun hex(hex: String) = Color("#$hex") fun rgb( red: Int, diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Common.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Common.kt index a67eb20..79d9e1b 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Common.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Common.kt @@ -14,8 +14,8 @@ class Length( fun pc(nr: Double) = Length("${nr}pc") fun cm(nr: Int) = Length("${nr}cm") fun cm(nr: Double) = Length("${nr}cm") - fun initial() = Length("initial") - fun inherit() = Length("inherit") + val initial = Length("initial") + val inherit = Length("inherit") } } @@ -25,9 +25,9 @@ class Fill( ) : CssProperty(value) { companion object { - fun balance() = Fill("balance") - fun auto() = Fill("auto") - fun initial() = Fill("initial") - fun inherit() = Fill("inherit") + val balance = Fill("balance") + val auto = Fill("auto") + val initial = Fill("initial") + val inherit = Fill("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Content.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Content.kt index 3a392b4..475937f 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Content.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Content.kt @@ -5,18 +5,19 @@ class Content( ) : CssProperty(value) { companion object { - fun normal() = Content("normal") - fun none() = Content("none") - fun counter() = Content("counter") + val normal = Content("normal") + val none = Content("none") + val counter = Content("counter") + val openQuote = Content("open-quote") + val closeQuote = Content("close-quote") + val noOpenQuote = Content("no-open-quote") + val noCloseQuote = Content("no-close-quote") + val initial = Content("initial") + val inherit = Content("inherit") + fun attr(attribute: String) = Content("attr($attribute)") fun string(txt: String) = Content("\"$txt\"") - fun openQuote() = Content("open-quote") - fun closeQuote() = Content("close-quote") - fun noOpenQuote() = Content("no-open-quote") - fun noCloseQuote() = Content("no-close-quote") fun url(url: String) = Content("url($url)") - fun initial() = Content("initial") - fun inherit() = Content("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Count.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Count.kt index 944b309..8f376f5 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Count.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Count.kt @@ -5,10 +5,11 @@ class Count( ) : CssProperty(value) { companion object { + val auto: Count = Count("auto") + val infinite: Count = Count("infinite") + val initial: Count = Count("initial") + val inherit: Count = Count("inherit") + fun count(number: Int): Count = Count("$number") - fun auto(): Count = Count("auto") - fun infinite(): Count = Count("infinite") - fun initial(): Count = Count("initial") - fun inherit(): Count = Count("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/CssFloat.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/CssFloat.kt new file mode 100644 index 0000000..7fc89fc --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/CssFloat.kt @@ -0,0 +1,15 @@ +package nl.astraeus.css.properties + +class CssFloat( + value: String +) : CssProperty(value) { + + companion object { + val none = CssFloat("none") + val left = CssFloat("left") + val right = CssFloat("right") + val initial = CssFloat("initial") + val inherit = CssFloat("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/DelayDuration.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/DelayDuration.kt index 4c6fafc..df2787c 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/DelayDuration.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/DelayDuration.kt @@ -5,8 +5,10 @@ class DelayDuration( ) : CssProperty(value) { companion object { + val initial = DelayDuration("initial") + val inherit = DelayDuration("inherit") + fun seconds(seconds: Int) = DelayDuration("${seconds}s") - fun initial() = DelayDuration("initial") - fun inherit() = DelayDuration("inherit") + fun millis(milliSeconds: Int) = DelayDuration("${milliSeconds}ms") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Direction.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Direction.kt index 9000760..f430c90 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Direction.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Direction.kt @@ -5,10 +5,10 @@ class Direction( ) : CssProperty(value) { companion object { - fun ltr() = Direction("ltr") - fun rtl() = Direction("rtl") - fun initial() = Direction("initial") - fun inherit() = Direction("inherit") + val ltr = Direction("ltr") + val rtl = Direction("rtl") + val initial = Direction("initial") + val inherit = Direction("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Display.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Display.kt index b0f6ce0..e622919 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Display.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Display.kt @@ -5,29 +5,29 @@ class Display( ) : CssProperty(value) { companion object { - fun inline() = Display("inline") - fun block() = Display("block") - fun contents() = Display("contents") - fun flex() = Display("flex") - fun grid() = Display("grid") - fun inlineBlock() = Display("inline-block") - fun inlineFlex() = Display("inline-flex") - fun inlineGrid() = Display("inline-grid") - fun inlineTable() = Display("inline-table") - fun listItem() = Display("list-item") - fun runIn() = Display("run-in") - fun table() = Display("table") - fun tableCaption() = Display("table-caption") - fun tableColumnGroup() = Display("table-column-group") - fun tableHeaderGroup() = Display("table-header-group") - fun tableFooterGroup() = Display("table-footer-group") - fun tableRowGroup() = Display("table-row-group") - fun tableCell() = Display("table-cell") - fun tableColumn() = Display("table-column") - fun tableRow() = Display("table-row") - fun none() = Display("none") - fun initial() = Display("initial") - fun inherit() = Display("inherit") + val inline = Display("inline") + val block = Display("block") + val contents = Display("contents") + val flex = Display("flex") + val grid = Display("grid") + val inlineBlock = Display("inline-block") + val inlineFlex = Display("inline-flex") + val inlineGrid = Display("inline-grid") + val inlineTable = Display("inline-table") + val listItem = Display("list-item") + val runIn = Display("run-in") + val table = Display("table") + val tableCaption = Display("table-caption") + val tableColumnGroup = Display("table-column-group") + val tableHeaderGroup = Display("table-header-group") + val tableFooterGroup = Display("table-footer-group") + val tableRowGroup = Display("table-row-group") + val tableCell = Display("table-cell") + val tableColumn = Display("table-column") + val tableRow = Display("table-row") + val none = Display("none") + val initial = Display("initial") + val inherit = Display("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/EmptyCells.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/EmptyCells.kt index 57bd14f..2112b60 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/EmptyCells.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/EmptyCells.kt @@ -5,10 +5,10 @@ class EmptyCells( ) : CssProperty(value) { companion object { - fun show() = EmptyCells("show") - fun hide() = EmptyCells("hide") - fun initial() = EmptyCells("initial") - fun inherit() = EmptyCells("inherit") + val show = EmptyCells("show") + val hide = EmptyCells("hide") + val initial = EmptyCells("initial") + val inherit = EmptyCells("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Flex.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Flex.kt index 14376a2..4ecfb76 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Flex.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Flex.kt @@ -5,12 +5,12 @@ class FlexDirection( ) : CssProperty(value) { companion object { - fun row() = FlexDirection("row") - fun rowReverse() = FlexDirection("row-reverse") - fun column() = FlexDirection("column") - fun columnReverse() = FlexDirection("column-reverse") - fun initial() = FlexDirection("initial") - fun inherit() = FlexDirection("inherit") + val row = FlexDirection("row") + val rowReverse = FlexDirection("row-reverse") + val column = FlexDirection("column") + val columnReverse = FlexDirection("column-reverse") + val initial = FlexDirection("initial") + val inherit = FlexDirection("inherit") } } @@ -20,9 +20,10 @@ class FlexGrowShrink( ) : CssProperty(value) { companion object { + val initial = FlexGrowShrink("initial") + val inherit = FlexGrowShrink("inherit") + fun number(number: Int) = FlexGrowShrink("$number") - fun initial() = FlexGrowShrink("initial") - fun inherit() = FlexGrowShrink("inherit") } } @@ -32,11 +33,11 @@ class FlexWrap( ) : CssProperty(value) { companion object { - fun nowrap() = FlexWrap("nowrap") - fun wrap() = FlexWrap("wrap") - fun wrapReverse() = FlexWrap("wrap-reverse") - fun initial() = FlexWrap("initial") - fun inherit() = FlexWrap("inherit") + val nowrap = FlexWrap("nowrap") + val wrap = FlexWrap("wrap") + val wrapReverse = FlexWrap("wrap-reverse") + val initial = FlexWrap("initial") + val inherit = FlexWrap("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Float.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Float.kt deleted file mode 100644 index 08b1d69..0000000 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Float.kt +++ /dev/null @@ -1,15 +0,0 @@ -package nl.astraeus.css.properties - -class Float( - value: String -) : CssProperty(value) { - - companion object { - fun none() = Float("none") - fun left() = Float("left") - fun right() = Float("right") - fun initial() = Float("initial") - fun inherit() = Float("inherit") - } - -} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Font.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Font.kt index 95dffc9..dc801d6 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Font.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Font.kt @@ -5,15 +5,18 @@ class FontSize( ) : CssProperty(value) { companion object { - fun xxSmall() = FontSize("xx-small") - fun xSmall() = FontSize("x-small") - fun small() = FontSize("small") - fun medium() = FontSize("medium") - fun large() = FontSize("large") - fun xLarge() = FontSize("x-large") - fun xxLarge() = FontSize("xx-large") - fun smaller() = FontSize("smaller") - fun larger() = FontSize("larger") + val xxSmall = FontSize("xx-small") + val xSmall = FontSize("x-small") + val small = FontSize("small") + val medium = FontSize("medium") + val large = FontSize("large") + val xLarge = FontSize("x-large") + val xxLarge = FontSize("xx-large") + val smaller = FontSize("smaller") + val larger = FontSize("larger") + val initial = FontSize("initial") + val inherit = FontSize("inherit") + fun px(nr: Int) = FontSize("${nr}px") fun em(nr: Int) = FontSize("${nr}em") fun em(nr: Double) = FontSize("${nr}em") @@ -23,8 +26,6 @@ class FontSize( fun pc(nr: Double) = FontSize("${nr}pc") fun cm(nr: Int) = FontSize("${nr}cm") fun cm(nr: Double) = FontSize("${nr}cm") - fun initial() = FontSize("initial") - fun inherit() = FontSize("inherit") } } @@ -34,17 +35,17 @@ class FontStretch( ) : CssProperty(value) { companion object { - fun normal() = FontStretch("normal") - fun condensed() = FontStretch("condensed") - fun ultraCondensed() = FontStretch("ultra-condensed") - fun extraCondensed() = FontStretch("extra-condensed") - fun semiCondensed() = FontStretch("semi-condensed") - fun expanded() = FontStretch("expanded") - fun semiExpanded() = FontStretch("semi-expanded") - fun extraExpanded() = FontStretch("extra-expanded") - fun ultraExpanded() = FontStretch("ultra-expanded") - fun initial() = FontWeight("initial") - fun inherit() = FontWeight("inherit") + val normal = FontStretch("normal") + val condensed = FontStretch("condensed") + val ultraCondensed = FontStretch("ultra-condensed") + val extraCondensed = FontStretch("extra-condensed") + val semiCondensed = FontStretch("semi-condensed") + val expanded = FontStretch("expanded") + val semiExpanded = FontStretch("semi-expanded") + val extraExpanded = FontStretch("extra-expanded") + val ultraExpanded = FontStretch("ultra-expanded") + val initial = FontWeight("initial") + val inherit = FontWeight("inherit") } } @@ -54,11 +55,11 @@ class FontStyle( ) : CssProperty(value) { companion object { - fun normal() = FontStyle("normal") - fun italic() = FontStyle("italic") - fun oblique() = FontStyle("oblique") - fun initial() = FontStyle("initial") - fun inherit() = FontStyle("inherit") + val normal = FontStyle("normal") + val italic = FontStyle("italic") + val oblique = FontStyle("oblique") + val initial = FontStyle("initial") + val inherit = FontStyle("inherit") } } @@ -68,19 +69,19 @@ class FontWeight( ) : CssProperty(value) { companion object { - fun normal() = FontWeight("normal") - fun bold() = FontWeight("bold") - fun _100() = FontWeight("100") - fun _200() = FontWeight("200") - fun _300() = FontWeight("300") - fun _400() = FontWeight("400") - fun _500() = FontWeight("500") - fun _600() = FontWeight("600") - fun _700() = FontWeight("700") - fun _800() = FontWeight("800") - fun _900() = FontWeight("900") - fun initial() = FontWeight("initial") - fun inherit() = FontWeight("inherit") + val normal = FontWeight("normal") + val bold = FontWeight("bold") + val _100 = FontWeight("100") + val _200 = FontWeight("200") + val _300 = FontWeight("300") + val _400 = FontWeight("400") + val _500 = FontWeight("500") + val _600 = FontWeight("600") + val _700 = FontWeight("700") + val _800 = FontWeight("800") + val _900 = FontWeight("900") + val initial = FontWeight("initial") + val inherit = FontWeight("inherit") } } @@ -90,9 +91,9 @@ class FontKerning( ) : CssProperty(value) { companion object { - fun auto() = FontKerning("auto") - fun normal() = FontKerning("normal") - fun none() = FontKerning("none") + val auto = FontKerning("auto") + val normal = FontKerning("normal") + val none = FontKerning("none") } } @@ -102,9 +103,9 @@ class FontSizeAdjust( ) : CssProperty(value) { companion object { - fun none() = FontSizeAdjust("none") - fun initial() = FontSizeAdjust("initial") - fun inherit() = FontSizeAdjust("inherit") + val none = FontSizeAdjust("none") + val initial = FontSizeAdjust("initial") + val inherit = FontSizeAdjust("inherit") } } @@ -114,10 +115,10 @@ class FontVariant( ) : CssProperty(value) { companion object { - fun normal() = FontVariant("normal") - fun smallCaps() = FontVariant("small-caps") - fun initial() = FontVariant("initial") - fun inherit() = FontVariant("inherit") + val normal = FontVariant("normal") + val smallCaps = FontVariant("small-caps") + val initial = FontVariant("initial") + val inherit = FontVariant("inherit") } } @@ -127,15 +128,15 @@ class FontVariantCaps( ) : CssProperty(value) { companion object { - fun normal() = FontVariantCaps("normal") - fun smallCaps() = FontVariantCaps("small-caps") - fun allSmallCaps() = FontVariantCaps("all-small-caps") - fun petiteCaps() = FontVariantCaps("petite-caps") - fun allPetiteCaps() = FontVariantCaps("all-petite-caps") - fun unicase() = FontVariantCaps("unicase") - fun initial() = FontVariantCaps("initial") - fun inherit() = FontVariantCaps("inherit") - fun unset() = FontVariantCaps("unset") + val normal = FontVariantCaps("normal") + val smallCaps = FontVariantCaps("small-caps") + val allSmallCaps = FontVariantCaps("all-small-caps") + val petiteCaps = FontVariantCaps("petite-caps") + val allPetiteCaps = FontVariantCaps("all-petite-caps") + val unicase = FontVariantCaps("unicase") + val initial = FontVariantCaps("initial") + val inherit = FontVariantCaps("inherit") + val unset = FontVariantCaps("unset") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Grid.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Grid.kt index 90d2dbb..45befcf 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Grid.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Grid.kt @@ -6,9 +6,9 @@ class Grid( ) : CssProperty(value) { companion object { - fun none() = Grid("none") - fun initial() = Grid("initial") - fun inherit() = Grid("inherit") + val none = Grid("none") + val initial = Grid("initial") + val inherit = Grid("inherit") } } @@ -18,9 +18,9 @@ class GridAuto( ) : CssProperty(value) { companion object { - fun auto() = GridAuto("auto") - fun maxContent() = GridAuto("max-content") - fun minContent() = GridAuto("min-content") + val auto = GridAuto("auto") + val maxContent = GridAuto("max-content") + val minContent = GridAuto("min-content") } } @@ -30,11 +30,11 @@ class GridFlow( ) : CssProperty(value) { companion object { - fun row() = GridFlow("row") - fun column() = GridFlow("column") - fun dense() = GridFlow("dense") - fun rowDense() = GridFlow("row dense") - fun columnDense() = GridFlow("column dense") + val row = GridFlow("row") + val column = GridFlow("column") + val dense = GridFlow("dense") + val rowDense = GridFlow("row dense") + val columnDense = GridFlow("column dense") } } @@ -44,7 +44,8 @@ class GridRowColumn( ) : CssProperty(value) { companion object { - fun auto() = GridRowColumn("auto") + val auto = GridRowColumn("auto") + fun span(column: Int) = GridRowColumn("span $column") fun columnLine(line: Int) = GridRowColumn("$line") fun rowLine(line: Int) = GridRowColumn("$line") @@ -57,13 +58,14 @@ class TemplateRowColumn( ) : CssProperty(value) { companion object { - fun none() = GridRowColumn("none") - fun auto() = GridRowColumn("auto") - fun maxContent() = GridRowColumn("max-content") - fun minContent() = GridRowColumn("min-content") + val none = GridRowColumn("none") + val auto = GridRowColumn("auto") + val maxContent = GridRowColumn("max-content") + val minContent = GridRowColumn("min-content") + val initial = GridRowColumn("initial") + val inherit = GridRowColumn("inherit") + fun length(length: Measurement) = GridRowColumn(length.value) - fun initial() = GridRowColumn("initial") - fun inherit() = GridRowColumn("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Hyphens.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Hyphens.kt index a885df2..0094c51 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Hyphens.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Hyphens.kt @@ -5,11 +5,11 @@ class Hyphens( ) : CssProperty(value) { companion object { - fun none() = Hyphens("none") - fun manual() = Hyphens("manual") - fun auto() = Hyphens("auto") - fun initial() = Hyphens("initial") - fun inherit() = Hyphens("inherit") + val none = Hyphens("none") + val manual = Hyphens("manual") + val auto = Hyphens("auto") + val initial = Hyphens("initial") + val inherit = Hyphens("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Image.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Image.kt index 9620564..7e36cdf 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Image.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Image.kt @@ -5,10 +5,11 @@ class Image( ) : CssProperty(value) { companion object { + val none = Image("none") + val initial = Image("initial") + val inherit = Image("inherit") + fun url(url: String) = Image("url($url)") - fun none() = Image("none") - fun initial() = Image("initial") - fun inherit() = Image("inherit") } } @@ -17,11 +18,12 @@ class ImageRepeat( ) : CssProperty(value) { companion object { + val repeat = ImageRepeat("repeat") + val round = ImageRepeat("round") + val initial = ImageRepeat("initial") + val inherit = ImageRepeat("inherit") + fun stretch(url: String) = ImageRepeat("stretch") - fun repeat() = ImageRepeat("repeat") - fun round() = ImageRepeat("round") - fun initial() = ImageRepeat("initial") - fun inherit() = ImageRepeat("inherit") } } @@ -31,14 +33,15 @@ class ImageSlice( ) : CssProperty(value) { companion object { + val repeat = ImageSlice("repeat") + val fill = ImageSlice("fill") + val initial = ImageSlice("initial") + val inherit = ImageSlice("inherit") + fun nr(nr: Int) = ImageSlice("$nr") fun perc(perc: Int) = ImageSlice("$perc%") fun perc(perc: Double) = ImageSlice("$perc%") fun stretch(url: String) = ImageSlice("stretch") - fun repeat() = ImageSlice("repeat") - fun fill() = ImageSlice("fill") - fun initial() = ImageSlice("initial") - fun inherit() = ImageSlice("inherit") } } @@ -48,11 +51,12 @@ class ImageSource( ) : CssProperty(value) { companion object { - fun none() = ImageSource("none") + val none = ImageSource("none") + val initial = ImageSource("initial") + val inherit = ImageSource("inherit") + fun text(txt: String) = ImageSource(txt) fun image(url: String) = ImageSource("'$url'") - fun initial() = ImageSource("initial") - fun inherit() = ImageSource("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/InitialInherit.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/InitialInherit.kt new file mode 100644 index 0000000..1de892e --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/InitialInherit.kt @@ -0,0 +1,12 @@ +package nl.astraeus.css.properties + +class InitialInherit( + value: String +) : CssProperty(value) { + + companion object { + val initial = InitialInherit("initial") + val inherit = InitialInherit("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Isolation.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Isolation.kt index a7e7655..e4db74a 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Isolation.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Isolation.kt @@ -5,10 +5,10 @@ class Isolation( ) : CssProperty(value) { companion object { - fun auto() = Isolation("auto") - fun isolate() = Isolation("isolate") - fun initial() = Isolation("initial") - fun inherit() = Isolation("inherit") + val auto = Isolation("auto") + val isolate = Isolation("isolate") + val initial = Isolation("initial") + val inherit = Isolation("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/JustifyContent.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/JustifyContent.kt index 1a8eb9f..7b6b0da 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/JustifyContent.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/JustifyContent.kt @@ -5,13 +5,13 @@ class JustifyContent( ) : CssProperty(value) { companion object { - fun flexStart() = JustifyContent("flex-start") - fun flexEnd() = JustifyContent("flex-end") - fun center() = JustifyContent("center") - fun spaceBetween() = JustifyContent("space-between") - fun spaceAround() = JustifyContent("space-around") - fun initial() = JustifyContent("initial") - fun inherit() = JustifyContent("inherit") + val flexStart = JustifyContent("flex-start") + val flexEnd = JustifyContent("flex-end") + val center = JustifyContent("center") + val spaceBetween = JustifyContent("space-between") + val spaceAround = JustifyContent("space-around") + val initial = JustifyContent("initial") + val inherit = JustifyContent("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/LetterSpacing.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/LetterSpacing.kt index a1b14a6..1bccc20 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/LetterSpacing.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/LetterSpacing.kt @@ -5,9 +5,9 @@ class LetterSpacing( ) : CssProperty(value) { companion object { - fun normal() = LetterSpacing("normal") - fun initial() = LetterSpacing("initial") - fun inherit() = LetterSpacing("inherit") + val normal = LetterSpacing("normal") + val initial = LetterSpacing("initial") + val inherit = LetterSpacing("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/ListStyle.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/ListStyle.kt index 481db85..6d5f538 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/ListStyle.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/ListStyle.kt @@ -6,10 +6,10 @@ class ListStylePosition( ) : CssProperty(value) { companion object { - fun inside() = ListStylePosition("inside") - fun outside() = ListStylePosition("outside") - fun initial() = ListStylePosition("initial") - fun inherit() = ListStylePosition("inherit") + val inside = ListStylePosition("inside") + val outside = ListStylePosition("outside") + val initial = ListStylePosition("initial") + val inherit = ListStylePosition("inherit") } } @@ -19,30 +19,30 @@ class ListStyleType( ) : CssProperty(value) { companion object { - fun disc() = ListStyleType("disc") - fun armenian() = ListStyleType("armenian") - fun circle() = ListStyleType("circle") - fun cjkIdeographic() = ListStyleType("cjk-ideographic") - fun decimal() = ListStyleType("decimal") - fun decimalLeadingZero() = ListStyleType("decimal-leading-zero") - fun georgian() = ListStyleType("georgian") - fun hebrew() = ListStyleType("hebrew") - fun hiragana() = ListStyleType("hiragana") - fun hiraganaIroha() = ListStyleType("hiragana-iroha") - fun katakana() = ListStyleType("katakana") - fun katakanaIroha() = ListStyleType("katakana-iroha") - fun lowerAlpha() = ListStyleType("lower-alpha") - fun lowerGreek() = ListStyleType("lower-greek") - fun lowerLatin() = ListStyleType("lower-latin") - fun lowerRoman() = ListStyleType("lower-roman") - fun none() = ListStyleType("none") - fun square() = ListStyleType("square") - fun upperAlpha() = ListStyleType("upper-alpha") - fun upperGreek() = ListStyleType("upper-greek") - fun upperLatin() = ListStyleType("upper-latin") - fun upperRoman() = ListStyleType("upper-roman") - fun initial() = ListStyleType("initial") - fun inherit() = ListStyleType("inherit") + val disc = ListStyleType("disc") + val armenian = ListStyleType("armenian") + val circle = ListStyleType("circle") + val cjkIdeographic = ListStyleType("cjk-ideographic") + val decimal = ListStyleType("decimal") + val decimalLeadingZero = ListStyleType("decimal-leading-zero") + val georgian = ListStyleType("georgian") + val hebrew = ListStyleType("hebrew") + val hiragana = ListStyleType("hiragana") + val hiraganaIroha = ListStyleType("hiragana-iroha") + val katakana = ListStyleType("katakana") + val katakanaIroha = ListStyleType("katakana-iroha") + val lowerAlpha = ListStyleType("lower-alpha") + val lowerGreek = ListStyleType("lower-greek") + val lowerLatin = ListStyleType("lower-latin") + val lowerRoman = ListStyleType("lower-roman") + val none = ListStyleType("none") + val square = ListStyleType("square") + val upperAlpha = ListStyleType("upper-alpha") + val upperGreek = ListStyleType("upper-greek") + val upperLatin = ListStyleType("upper-latin") + val upperRoman = ListStyleType("upper-roman") + val initial = ListStyleType("initial") + val inherit = ListStyleType("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Measurement.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Measurement.kt index c995035..01f49c7 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Measurement.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Measurement.kt @@ -5,10 +5,11 @@ open class Measurement( ) : CssProperty(value) { companion object { - fun auto() = Measurement("auto") - fun initial() = Measurement("initial") - fun inherit() = Measurement("inherit") - fun normal() = Measurement("normal") + val auto = Measurement("auto") + val initial = Measurement("initial") + val inherit = Measurement("inherit") + val normal = Measurement("normal") + fun px(nr: Int) = if (nr == 0) { Measurement("0") } else { Measurement("${nr}px") } fun px(nr: Double) = Measurement("${nr}px") fun em(nr: Int) = Measurement("${nr}em") @@ -28,11 +29,15 @@ fun Int.em(): Measurement = Measurement.em(this) fun Double.em(): Measurement = Measurement.em(this) fun Int.perc(): Measurement = Measurement.perc(this) fun Double.perc(): Measurement = Measurement.perc(this) +fun Int.pc(): Measurement = Measurement.pc(this) +fun Double.pc(): Measurement = Measurement.pc(this) +fun Int.cm(): Measurement = Measurement.cm(this) +fun Double.cm(): Measurement = Measurement.cm(this) open class LineHeight(value: String) : CssProperty(value) { companion object { - fun normal() = LineHeight("normal") - fun initial() = LineHeight("initial") - fun inherit() = LineHeight("inherit") + val normal = LineHeight("normal") + val initial = LineHeight("initial") + val inherit = LineHeight("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/MixBlendMode.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/MixBlendMode.kt index db04f69..e22a4da 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/MixBlendMode.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/MixBlendMode.kt @@ -6,20 +6,20 @@ class MixBlendMode( ) : CssProperty(value) { companion object { - fun normal() = MixBlendMode("normal") - fun multiply() = MixBlendMode("multiply") - fun screen() = MixBlendMode("screen") - fun overlay() = MixBlendMode("overlay") - fun darken() = MixBlendMode("darken") - fun lighten() = MixBlendMode("lighten") - fun colorDodge() = MixBlendMode("color-dodge") - fun colorBurn() = MixBlendMode("color-burn") - fun difference() = MixBlendMode("difference") - fun exclusion() = MixBlendMode("exclusion") - fun hue() = MixBlendMode("hue") - fun saturation() = MixBlendMode("saturation") - fun color() = MixBlendMode("color") - fun luminosity() = MixBlendMode("luminosity") + val normal = MixBlendMode("normal") + val multiply = MixBlendMode("multiply") + val screen = MixBlendMode("screen") + val overlay = MixBlendMode("overlay") + val darken = MixBlendMode("darken") + val lighten = MixBlendMode("lighten") + val colorDodge = MixBlendMode("color-dodge") + val colorBurn = MixBlendMode("color-burn") + val difference = MixBlendMode("difference") + val exclusion = MixBlendMode("exclusion") + val hue = MixBlendMode("hue") + val saturation = MixBlendMode("saturation") + val color = MixBlendMode("color") + val luminosity = MixBlendMode("luminosity") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/ObjectFit.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/ObjectFit.kt index dba9a66..78beab4 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/ObjectFit.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/ObjectFit.kt @@ -5,13 +5,13 @@ class ObjectFit( ) : CssProperty(value) { companion object { - fun fill() = ObjectFit("fill") - fun contain() = ObjectFit("contain") - fun cover() = ObjectFit("cover") - fun scaleDown() = ObjectFit("scale-down") - fun none() = ObjectFit("none") - fun initial() = ObjectFit("initial") - fun inherit() = ObjectFit("inherit") + val fill = ObjectFit("fill") + val contain = ObjectFit("contain") + val cover = ObjectFit("cover") + val scaleDown = ObjectFit("scale-down") + val none = ObjectFit("none") + val initial = ObjectFit("initial") + val inherit = ObjectFit("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Opacity.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Opacity.kt deleted file mode 100644 index c4ecd70..0000000 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Opacity.kt +++ /dev/null @@ -1,12 +0,0 @@ -package nl.astraeus.css.properties - -class Opacity( - value: String -) : CssProperty(value) { - - companion object { - fun initial() = Opacity("initial") - fun inherit() = Opacity("inherit") - } - -} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Order.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Order.kt deleted file mode 100644 index c991b0e..0000000 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Order.kt +++ /dev/null @@ -1,12 +0,0 @@ -package nl.astraeus.css.properties - -class Order( - value: String -) : CssProperty(value) { - - companion object { - fun initial() = Order("initial") - fun inherit() = Order("inherit") - } - -} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/OutlineWidth.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/OutlineWidth.kt index 66ad7bf..04ce5e5 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/OutlineWidth.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/OutlineWidth.kt @@ -5,10 +5,10 @@ class OutlineWidth( ) : CssProperty(value) { companion object { - fun thin() = OutlineWidth("thin") - fun medium() = OutlineWidth("medium") - fun thick() = OutlineWidth("thick") - fun initial() = BorderWidth("initial") - fun inherit() = BorderWidth("inherit") + val thin = OutlineWidth("thin") + val medium = OutlineWidth("medium") + val thick = OutlineWidth("thick") + val initial = BorderWidth("initial") + val inherit = BorderWidth("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Overflow.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Overflow.kt index 4761932..c205297 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Overflow.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Overflow.kt @@ -5,11 +5,11 @@ class Overflow( ) : CssProperty(value) { companion object { - fun visible() = Overflow("visible") - fun hidden() = Overflow("hidden") - fun scroll() = Overflow("scroll") - fun auto() = Overflow("auto") - fun initial() = BorderWidth("initial") - fun inherit() = BorderWidth("inherit") + val visible = Overflow("visible") + val hidden = Overflow("hidden") + val scroll = Overflow("scroll") + val auto = Overflow("auto") + val initial = BorderWidth("initial") + val inherit = BorderWidth("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Padding.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Padding.kt deleted file mode 100644 index 6f59454..0000000 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Padding.kt +++ /dev/null @@ -1,12 +0,0 @@ -package nl.astraeus.css.properties - -class Padding( - value: String -) : CssProperty(value) { - - companion object { - fun initial() = Padding("initial") - fun inherit() = Padding("inherit") - } - -} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/PageBreak.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/PageBreak.kt index 27e6e01..89b2130 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/PageBreak.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/PageBreak.kt @@ -5,13 +5,13 @@ class PageBreak( ) : CssProperty(value) { companion object { - fun auto() = PageBreak("auto") - fun always() = PageBreak("always") - fun avoid() = PageBreak("avoid") - fun left() = PageBreak("left") - fun right() = PageBreak("right") - fun initial() = PageBreak("initial") - fun inherit() = PageBreak("inherit") + val auto = PageBreak("auto") + val always = PageBreak("always") + val avoid = PageBreak("avoid") + val left = PageBreak("left") + val right = PageBreak("right") + val initial = PageBreak("initial") + val inherit = PageBreak("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Perspective.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Perspective.kt new file mode 100644 index 0000000..1579e2a --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Perspective.kt @@ -0,0 +1,13 @@ +package nl.astraeus.css.properties + +class Perspective( + value: String +) : CssProperty(value) { + + companion object { + val none = Perspective("none") + val initial = Perspective("initial") + val inherit = Perspective("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/PointerEvents.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/PointerEvents.kt new file mode 100644 index 0000000..013b0f4 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/PointerEvents.kt @@ -0,0 +1,14 @@ +package nl.astraeus.css.properties + +class PointerEvents( + value: String +) : CssProperty(value) { + + companion object { + val auto = PointerEvents("auto") + val none = PointerEvents("none") + val initial = PointerEvents("initial") + val inherit = PointerEvents("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Position.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Position.kt new file mode 100644 index 0000000..7be6159 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Position.kt @@ -0,0 +1,17 @@ +package nl.astraeus.css.properties + +class Position( + value: String +) : CssProperty(value) { + + companion object { + val static = Position("static") + val absolute = Position("absolute") + val fixed = Position("fixed") + val relative = Position("relative") + val sticky = Position("sticky") + val initial = Position("initial") + val inherit = Position("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Punctuation.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Punctuation.kt index 9943375..dc935c7 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Punctuation.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Punctuation.kt @@ -5,13 +5,13 @@ class HangingPunctuation( ) : CssProperty(value) { companion object { - fun none() = HangingPunctuation("none") - fun first() = HangingPunctuation("first") - fun last() = HangingPunctuation("last") - fun allowEnd() = HangingPunctuation("allow-end") - fun forceEnd() = HangingPunctuation("force-end") - fun initial() = HangingPunctuation("initial") - fun inherit() = HangingPunctuation("inherit") + val none = HangingPunctuation("none") + val first = HangingPunctuation("first") + val last = HangingPunctuation("last") + val allowEnd = HangingPunctuation("allow-end") + val forceEnd = HangingPunctuation("force-end") + val initial = HangingPunctuation("initial") + val inherit = HangingPunctuation("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Resize.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Resize.kt new file mode 100644 index 0000000..a0d97b5 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Resize.kt @@ -0,0 +1,16 @@ +package nl.astraeus.css.properties + +class Resize( + value: String +) : CssProperty(value) { + + companion object { + val none = Resize("none") + val both = Resize("both") + val horizontal = Resize("horizontal") + val vertical = Resize("vertical") + val initial = Resize("initial") + val inherit = Resize("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/ScrollBehavior.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/ScrollBehavior.kt new file mode 100644 index 0000000..cc97f98 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/ScrollBehavior.kt @@ -0,0 +1,14 @@ +package nl.astraeus.css.properties + +class ScrollBehavior( + value: String +) : CssProperty(value) { + + companion object { + val auto = ScrollBehavior("auto") + val smooth = ScrollBehavior("smooth") + val initial = ScrollBehavior("initial") + val inherit = ScrollBehavior("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Span.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Span.kt index 1b851dd..019691d 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/properties/Span.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Span.kt @@ -5,10 +5,10 @@ class Span( ) : CssProperty(value) { companion object { - fun none() = Clip("none") - fun all() = Clip("all") - fun initial() = Clip("initial") - fun inherit() = Clip("inherit") + val none = Clip("none") + val all = Clip("all") + val initial = Clip("initial") + val inherit = Clip("inherit") } } diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/TableLayout.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/TableLayout.kt new file mode 100644 index 0000000..65c5574 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/TableLayout.kt @@ -0,0 +1,14 @@ +package nl.astraeus.css.properties + +class TableLayout( + value: String +) : CssProperty(value) { + + companion object { + val auto = TableLayout("auto") + val fixed = TableLayout("fixed") + val initial = TableLayout("initial") + val inherit = TableLayout("auto") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/TextAlign.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/TextAlign.kt new file mode 100644 index 0000000..b5ccf5d --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/TextAlign.kt @@ -0,0 +1,16 @@ +package nl.astraeus.css.properties + +class TextAlign( + value: String +) : CssProperty(value) { + + companion object { + val left = TextAlign("left") + val right = TextAlign("right") + val center = TextAlign("center") + val justify = TextAlign("justify") + val initial = TextAlign("initial") + val inherit = TextAlign("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/TextAlignLast.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/TextAlignLast.kt new file mode 100644 index 0000000..afbd0b1 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/TextAlignLast.kt @@ -0,0 +1,19 @@ +package nl.astraeus.css.properties + +class TextAlignLast( + value: String +) : CssProperty(value) { + + companion object { + val auto = TextAlignLast("auto") + val left = TextAlignLast("left") + val right = TextAlignLast("right") + val center = TextAlignLast("center") + val justify = TextAlignLast("justify") + val start = TextAlignLast("start") + val end = TextAlignLast("end") + val initial = TextAlignLast("initial") + val inherit = TextAlignLast("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/TextDecorationLine.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/TextDecorationLine.kt new file mode 100644 index 0000000..a9d9d60 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/TextDecorationLine.kt @@ -0,0 +1,16 @@ +package nl.astraeus.css.properties + +class TextDecorationLine( + value: String +) : CssProperty(value) { + + companion object { + val none = TextDecorationLine("none") + val underline = TextDecorationLine("underline") + val overline = TextDecorationLine("overline") + val lineThrough = TextDecorationLine("line-through") + val initial = TextDecorationLine("initial") + val inherit = TextDecorationLine("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/TextDecorationStyle.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/TextDecorationStyle.kt new file mode 100644 index 0000000..5661d44 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/TextDecorationStyle.kt @@ -0,0 +1,17 @@ +package nl.astraeus.css.properties + +class TextDecorationStyle( + value: String +) : CssProperty(value) { + + companion object { + val solid = TextDecorationStyle("solid") + val double = TextDecorationStyle("double") + val dotted = TextDecorationStyle("dotted") + val dashed = TextDecorationStyle("dashed") + val wavy = TextDecorationStyle("wavy") + val initial = TextDecorationStyle("initial") + val inherit = TextDecorationStyle("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/TextJustify.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/TextJustify.kt new file mode 100644 index 0000000..59db82b --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/TextJustify.kt @@ -0,0 +1,16 @@ +package nl.astraeus.css.properties + +class TextJustify( + value: String +) : CssProperty(value) { + + companion object { + val auto = TextJustify("auto") + val interWord = TextJustify("inter-word") + val interCharacter = TextJustify("inter-character") + val none = TextJustify("none") + val initial = TextJustify("initial") + val inherit = TextJustify("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/TextTransform.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/TextTransform.kt new file mode 100644 index 0000000..7902372 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/TextTransform.kt @@ -0,0 +1,16 @@ +package nl.astraeus.css.properties + +class TextTransform( + value: String +) : CssProperty(value) { + + companion object { + val none = TextTransform("none") + val capitalize = TextTransform("capitalize") + val uppercase = TextTransform("uppercase") + val lowercase = TextTransform("lowercase") + val initial = TextTransform("initial") + val inherit = TextTransform("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/TimingFunction.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/TimingFunction.kt new file mode 100644 index 0000000..3ab0d1f --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/TimingFunction.kt @@ -0,0 +1,22 @@ +package nl.astraeus.css.properties + +class TimingFunction( + value: String +) : CssProperty(value) { + + companion object { + val linear = TimingFunction("linear") + val ease = TimingFunction("ease") + val easeIn = TimingFunction("ease-in") + val easeOut = TimingFunction("ease-out") + val easeInOut = TimingFunction("ease-in-out") + val stepStart = TimingFunction("step-start") + val stepEnd = TimingFunction("step-end") + val initial = TimingFunction("initial") + val inherit = TimingFunction("inherit") + + fun steps(steps: Int, start: Boolean) = TimingFunction("steps($steps, ${if (start) { "start" } else { "end" }}") + fun cubicBezier(n1: Double, n2: Double, n3: Double, n4: Double) = TimingFunction("cubic-bezier($n1, $n2, $n3, $n4)") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Transform.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Transform.kt new file mode 100644 index 0000000..ed29c86 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Transform.kt @@ -0,0 +1,49 @@ +package nl.astraeus.css.properties + +class Transform( + value: String +) : CssProperty(value) { + + companion object { + val none = Transform("none") + val initial = Transform("initial") + val inherit = Transform("inherit") + + fun matrix( + n1: Double, + n2: Double, + n3: Double, + n4: Double, + n5: Double, + n6: Double + ) = Transform("matrix($n1, $n2, $n3, $n4, $n5, $n6)") + fun matrix3d( + n01: Double, n02: Double, n03: Double, n04: Double, + n05: Double, n06: Double, n07: Double, n08: Double, + n09: Double, n10: Double, n11: Double, n12: Double, + n13: Double, n14: Double, n15: Double, n16: Double + ) = Transform( + "matrix3d($n01, $n02, $n03, $n04, $n05, $n06, $n07, $n08, $n09, $n10, $n11, $n12, $n13, $n14, $n15, $n16)" + ) + fun translate(x: Double, y: Double) = Transform("translate($x, $y)") + fun translate3d(x: Double, y: Double, z: Double) = Transform("translate3d($x, $y, $z)") + fun translateX(x: Double) = Transform("translateX($x)") + fun translateY(y: Double) = Transform("translateY($y)") + fun translateZ(z: Double) = Transform("translateZ($z)") + fun scale(x: Double, y: Double) = Transform("scale($x, $y)") + fun scale3d(x: Double, y: Double, z: Double) = Transform("scale3d($x, $y, $z)") + fun scaleX(x: Double) = Transform("scaleX($x)") + fun scaleY(y: Double) = Transform("scaleY($y)") + fun scaleZ(z: Double) = Transform("scaleZ($z)") + fun rotate(angle: Double) = Transform("rotate($angle)") + fun rotate3d(x: Double, y: Double, z: Double, angle: Double) = Transform("scale3d($x, $y, $z, $angle") + fun rotateX(x: Double) = Transform("rotateX($x)") + fun rotateY(y: Double) = Transform("rotateY($y)") + fun rotateZ(z: Double) = Transform("rotateZ($z)") + fun skew(x: Double, y: Double) = Transform("skew($x, $y)") + fun skewX(x: Double) = Transform("skew($x)") + fun skewY(y: Double) = Transform("skew($y)") + fun perspective(length: Measurement) = Transform("perspective(${length.css()})") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/TransformStyle.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/TransformStyle.kt new file mode 100644 index 0000000..11e9f6e --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/TransformStyle.kt @@ -0,0 +1,14 @@ +package nl.astraeus.css.properties + +class TransformStyle( + value: String +) : CssProperty(value) { + + companion object { + val flat = TransformStyle("flat") + val preserve3d = TransformStyle("preserve-3d") + val initial = TransformStyle("initial") + val inherit = TransformStyle("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/UnicodeBidi.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/UnicodeBidi.kt new file mode 100644 index 0000000..a650d85 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/UnicodeBidi.kt @@ -0,0 +1,15 @@ +package nl.astraeus.css.properties + +class UnicodeBidi( + value: String +) : CssProperty(value) { + + companion object { + val normal = UnicodeBidi("normal") + val embed = UnicodeBidi("embed") + val bidiOverride = UnicodeBidi("bidi-override") + val initial = UnicodeBidi("initial") + val inherit = UnicodeBidi("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/UserSelect.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/UserSelect.kt new file mode 100644 index 0000000..716af01 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/UserSelect.kt @@ -0,0 +1,14 @@ +package nl.astraeus.css.properties + +class UserSelect( + value: String +) : CssProperty(value) { + + companion object { + val auto = UserSelect("auto") + val none = UserSelect("none") + val text = UserSelect("text") + val all = UserSelect("all") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/VerticalAlign.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/VerticalAlign.kt new file mode 100644 index 0000000..f14e116 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/VerticalAlign.kt @@ -0,0 +1,20 @@ +package nl.astraeus.css.properties + +class VerticalAlign( + value: String +) : CssProperty(value) { + + companion object { + val baseline = VerticalAlign("baseline") + val sub = VerticalAlign("sub") + val _super = VerticalAlign("super") + val top = VerticalAlign("top") + val textTop = VerticalAlign("text-top") + val middle = VerticalAlign("middle") + val bottom = VerticalAlign("bottom") + val textBottom = VerticalAlign("text-bottom") + val initial = VerticalAlign("initial") + val inherit = VerticalAlign("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/Visibility.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/Visibility.kt new file mode 100644 index 0000000..5d333ad --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/Visibility.kt @@ -0,0 +1,15 @@ +package nl.astraeus.css.properties + +class Visibility( + value: String +) : CssProperty(value) { + + companion object { + val visible = Visibility("visible") + val hidden = Visibility("hidden") + val collapse = Visibility("collapse") + val initial = Visibility("initial") + val inherit = Visibility("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/WhiteSpace.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/WhiteSpace.kt new file mode 100644 index 0000000..07b60ea --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/WhiteSpace.kt @@ -0,0 +1,17 @@ +package nl.astraeus.css.properties + +class WhiteSpace( + value: String +) : CssProperty(value) { + + companion object { + val normal = WhiteSpace("normal") + val nowrap = WhiteSpace("nowrap") + val pre = WhiteSpace("pre") + val preLine = WhiteSpace("pre-line") + val preWrap = WhiteSpace("pre-wrap") + val initial = WhiteSpace("initial") + val inherit = WhiteSpace("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/WordBreak.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/WordBreak.kt new file mode 100644 index 0000000..18abc59 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/WordBreak.kt @@ -0,0 +1,16 @@ +package nl.astraeus.css.properties + +class WordBreak( + value: String +) : CssProperty(value) { + + companion object { + val normal = WordBreak("normal") + val breakAll = WordBreak("break-all") + val keepAll = WordBreak("keep-all") + val breakWord = WordBreak("break-word") + val initial = WordBreak("initial") + val inherit = WordBreak("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/WordSpacing.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/WordSpacing.kt new file mode 100644 index 0000000..7e27e85 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/WordSpacing.kt @@ -0,0 +1,13 @@ +package nl.astraeus.css.properties + +class WordSpacing( + value: String +) : CssProperty(value) { + + companion object { + val normal = WordSpacing("normal") + val initial = WordSpacing("initial") + val inherit = WordSpacing("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/WordWrap.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/WordWrap.kt new file mode 100644 index 0000000..a375633 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/WordWrap.kt @@ -0,0 +1,14 @@ +package nl.astraeus.css.properties + +class WordWrap( + value: String +) : CssProperty(value) { + + companion object { + val normal = WordWrap("normal") + val breakWord = WordWrap("break-word") + val initial = WordWrap("initial") + val inherit = WordWrap("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/WritingMode.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/WritingMode.kt new file mode 100644 index 0000000..024f3b7 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/WritingMode.kt @@ -0,0 +1,13 @@ +package nl.astraeus.css.properties + +class WritingMode( + value: String +) : CssProperty(value) { + + companion object { + val horizontalTb = WritingMode("horizontal-tb") + val verticalRl = WritingMode("vertical-rl") + val verticalLr = WritingMode("vertical-lr") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/properties/ZIndex.kt b/src/commonMain/kotlin/nl/astraeus/css/properties/ZIndex.kt new file mode 100644 index 0000000..bdca5a3 --- /dev/null +++ b/src/commonMain/kotlin/nl/astraeus/css/properties/ZIndex.kt @@ -0,0 +1,13 @@ +package nl.astraeus.css.properties + +class ZIndex( + value: String +) : CssProperty(value) { + + companion object { + val auto = ZIndex("auto") + val initial = ZIndex("initial") + val inherit = ZIndex("inherit") + } + +} diff --git a/src/commonMain/kotlin/nl/astraeus/css/style/Style.kt b/src/commonMain/kotlin/nl/astraeus/css/style/Style.kt index e93592e..6381f5b 100644 --- a/src/commonMain/kotlin/nl/astraeus/css/style/Style.kt +++ b/src/commonMain/kotlin/nl/astraeus/css/style/Style.kt @@ -5,6 +5,8 @@ import nl.astraeus.logging.log typealias Css = Style.() -> Unit +typealias ConditionalCss = ConditionalStyle.() -> Unit + @DslMarker annotation class CssTagMarker @@ -75,9 +77,58 @@ abstract class CssGenerator { return builder.toString() } - open fun generateCss(namespace: String = "", indent: String = " ", minified: Boolean = false): String { + open fun generateCss(namespace: String = "", indent: String = "", minified: Boolean = false): String { val builder = StringBuilder() + if (this is ConditionalStyle) { + this.media.let { mq -> + mq.keys.sorted().forEach { mediaName -> + val css = mq[mediaName] + + indent(minified, builder, indent) + builder.append("@media ") + builder.append(mediaName) + builder.append(" {") + indent(minified, builder, "\n") + css?.let { css -> + val mediaStyle = ConditionalStyle() + + css(mediaStyle) + + builder.append(mediaStyle.generateCss("", " $indent", minified)) + } + + indent(minified, builder, indent) + builder.append("}") + indent(minified, builder, "\n") + } + } + + this.supports.let { mq -> + mq.keys.sorted().forEach { mediaName -> + val css = mq[mediaName] + + indent(minified, builder, indent) + builder.append("@supports ") + builder.append(mediaName) + builder.append(" {") + indent(minified, builder, "\n") + css?.let { css -> + val mediaStyle = ConditionalStyle() + + css(mediaStyle) + + builder.append(mediaStyle.generateCss(""," $indent", minified)) + } + + indent(minified, builder, indent) + builder.append("}") + indent(minified, builder, "\n") + + } + } + } + for ((name, prop) in definitions) { val css = StringBuilder() @@ -85,20 +136,20 @@ abstract class CssGenerator { prop(finalStyle) - css.append(finalStyle.generatePropertyCss(indent, minified)) + css.append(finalStyle.generatePropertyCss(" $indent", minified)) if (css.isNotBlank()) { builder.append("\n$namespace $name".trim()) - indent(minified, builder, " ") + indent(minified, builder, " $indent") builder.append("{") indent(minified, builder, "\n") finalStyle.fontFace?.let { ff -> - indent(minified, builder, indent) + indent(minified, builder, " $indent") builder.append("@font-face {") indent(minified, builder, "\n") - builder.append(ff.generatePropertyCss( " $indent", minified)) - builder.append(indent) + builder.append(ff.generatePropertyCss( " $indent", minified)) + builder.append(" $indent") builder.append("}") indent(minified, builder, "\n") } @@ -107,15 +158,16 @@ abstract class CssGenerator { kf.keys.sorted().forEach { frameName -> val css = kf[frameName] - indent(minified, builder, indent) + indent(minified, builder, " $indent") builder.append("@keyframes ") builder.append(frameName) - builder.append(" {\n") + builder.append(" {") + indent(minified, builder, "\n") css?.let { css -> for ((nr, style) in css.frames) { - indent(minified, builder, " $indent") + indent(minified, builder, " $indent") builder.append("${nr}% ") - indent(minified, builder, " $indent") + indent(minified, builder, " $indent") builder.append("{") indent(minified, builder, "\n") @@ -123,39 +175,21 @@ abstract class CssGenerator { style(finalStyle) - builder.append(finalStyle.generatePropertyCss(" $indent", minified)) + builder.append(finalStyle.generatePropertyCss(" $indent", minified)) - indent(minified, builder, " $indent") - builder.append("}\n") + indent(minified, builder, " $indent") + builder.append("}") + indent(minified, builder, "\n") } - indent(minified, builder, indent) - builder.append("}\n") + indent(minified, builder, " $indent") + builder.append("}") + indent(minified, builder, "\n") + } } } - finalStyle.media.let { mq -> - mq.keys.sorted().forEach { mediaName -> - val css = mq[mediaName] - - indent(minified, builder, indent) - builder.append("@media ") - builder.append(mediaName) - builder.append(" {\n") - css?.let { css -> - val mediaStyle = Style() - - css(mediaStyle) - - builder.append(mediaStyle.generatePropertyCss(" $indent", minified)) - } - - indent(minified, builder, indent) - builder.append("}\n") - } - } - builder.append(css) builder.append("}") indent(minified, builder, "\n\n") @@ -178,7 +212,7 @@ abstract class CssGenerator { open class Style : CssGenerator() { var fontFace: FontFace? = null var keyFrames: MutableMap = mutableMapOf() - var media: MutableMap = mutableMapOf() + private val validators = mapOf>( "background-position" to listOf(InitialInheritSingleValue()), "background-size" to listOf(MaxCountValidator(2)), @@ -199,7 +233,7 @@ open class Style : CssGenerator() { definitions[selector] = style } - fun alignContent(value: AlignContentValue) { props["align-content"] = prp(value) } + fun alignContent(value: AlignContent) { props["align-content"] = prp(value) } fun alignItems(alignItems: AlignItems) { props["align-items"] = prp(alignItems) } fun all(all: All) { props["all"] = prp(all) } fun alignSelf(alignSelf: AlignSelf) { props["align-self"] = prp(alignSelf) } @@ -214,7 +248,7 @@ open class Style : CssGenerator() { fun animationPlayState(vararg state : AnimationPlayState) { props["animation-play-state"] = prp(*state) } - fun animationTimingFunction(vararg timingFunction: AnimationTimingFunction) { + fun animationTimingFunction(vararg timingFunction: TimingFunction) { props["animation-timing-function"] = prp(*timingFunction) } fun backfaceVisibility(backfaceVisibility: BackfaceVisibility) { props[""] = prp(backfaceVisibility) } @@ -331,7 +365,7 @@ open class Style : CssGenerator() { fun flexGrow(grow: FlexGrowShrink) { props["flex-grow"] = prp(grow) } fun flexShrink(shrink: FlexGrowShrink) { props["flex-shrink"] = prp(shrink) } fun flexWrap(wrap: FlexWrap) { props["flex-wrap"] = prp(wrap) } - //fun float(float: Float) { props["float"] = prp(float) } + fun float(cssFloat: CssFloat) { props["float"] = prp(cssFloat) } fun font(font: String) { props["font"] = prp(font) } fun fontFace(face: FontFace.() -> Unit) { fontFace = FontFace() @@ -385,7 +419,6 @@ open class Style : CssGenerator() { keyFrames[animationName] = frameCss } - fun left(left: Measurement) { props["left"] = prp(left) } fun letterSpacing(length: Measurement) { props["letter-spacing"] = prp(length) } fun letterSpacing(spacing: LetterSpacing) { props["letter-spacing"] = prp(spacing) } @@ -410,22 +443,15 @@ open class Style : CssGenerator() { fun marginTop(top: Measurement) { props["margin-top"] = prp(top) } fun maxHeight(height: Measurement) { props["max-height"] = prp(height) } fun maxWidth(width: Measurement) { props["max-width"] = prp(width) } - fun media(definition: String, style: Css) { - val css = Style() - - style(css) - - media[definition] = style - } fun minHeight(height: Measurement) { props["min-height"] = prp(height) } fun minWidth(width: Measurement) { props["min-width"] = prp(width) } fun mixBlendMode(blendMode: MixBlendMode) { props["mix-blend-mode"] = prp(blendMode) } fun objectFit(fit: ObjectFit) { props["object-fit"] = prp(fit) } fun objectPosition(position: String) { props["object-position"] = prp(position) } fun opacity(opacity: Double) { props["opacity"] = prp(opacity.toString()) } - fun opacity(opacity: Opacity) { props["opacity"] = prp(opacity.toString()) } + fun opacity(opacity: InitialInherit) { props["opacity"] = prp(opacity.toString()) } fun order(order: Int) { props["order"] = prp(order.toString()) } - fun order(order: Order) { props["order"] = prp(order) } + fun order(order: InitialInherit) { props["order"] = prp(order) } fun outline(outline: String) { props["outline"] = prp(outline) } fun outlineColor(color: Color) { props["outline-color"] = prp(color) } fun outlineOffset(offset: Measurement) { props["outline-offset"] = prp(offset) } @@ -436,26 +462,84 @@ open class Style : CssGenerator() { fun overflowX(overflow: Overflow) { props["overflow-x"] = prp(overflow) } fun overflowY(overflow: Overflow) { props["overflow-y"] = prp(overflow) } fun padding(padding: Measurement) { props["padding"] = prp(padding) } - fun padding(padding: Padding) { props["padding"] = prp(padding) } + fun padding(padding: InitialInherit) { props["padding"] = prp(padding) } fun paddingBottom(padding: Measurement) { props["padding-bottom"] = prp(padding) } - fun paddingBottom(padding: Padding) { props["padding-bottom"] = prp(padding) } + fun paddingBottom(padding: InitialInherit) { props["padding-bottom"] = prp(padding) } fun paddingLeft(padding: Measurement) { props["padding-left"] = prp(padding) } - fun paddingLeft(padding: Padding) { props["padding-left"] = prp(padding) } + fun paddingLeft(padding: InitialInherit) { props["padding-left"] = prp(padding) } fun paddingRight(padding: Measurement) { props["padding-right"] = prp(padding) } - fun paddingRight(padding: Padding) { props["padding-right"] = prp(padding) } + fun paddingRight(padding: InitialInherit) { props["padding-right"] = prp(padding) } fun paddingTop(padding: Measurement) { props["padding-top"] = prp(padding) } - fun paddingTop(padding: Padding) { props["padding-top"] = prp(padding) } + fun paddingTop(padding: InitialInherit) { props["padding-top"] = prp(padding) } fun pageBreakAfter(pageBreak: PageBreak) { props["page-break-after"] = prp(pageBreak) } fun pageBreakBefore(pageBreak: PageBreak) { props["page-break-before"] = prp(pageBreak) } fun pageBreakInside(pageBreak: PageBreak) { props["page-break-inside"] = prp(pageBreak) } - - - - - - - fun right(right: Measurement) { props["right"] = prp(right) } - fun top(top: Measurement) { props["top"] = prp(top) } - fun width(width: Measurement) { props["width"] = prp(width) } + fun perspective(length: Measurement) { props["perspective"] = prp(length) } + fun perspective(perspective: Perspective) { props["perspective"] = prp(perspective) } + fun perspectiveOrigin(po: String) { props["perspective-origin"] = prp(po) } + fun pointerEvents(pe: PointerEvents) { props["pointer-events"] = prp(pe) } + fun position(poition: Position) { props["position"] = prp(poition) } + fun quotes(value: String) { props["quotes"] = prp(value) } + fun resize(resize: Resize) { props["resize"] = prp(resize) } + fun right(right: Measurement) { props["right"] = prp(right) } + fun scrollBehavior(sb: ScrollBehavior) { props["scroll-behavior"] = prp(sb) } + fun tabSize(number: Int) { props["tab-size"] = prp(number.toString()) } + fun tabSize(length: Measurement) { props["tab-size"] = prp(length) } + fun tabSize(ts: InitialInherit) { props["tab-size"] = prp(ts) } + fun tableLayout(tl: TableLayout ) { props["table-layout"] = prp(tl) } + fun textAlign(ta: TextAlign) { props["text-align"] = prp(ta) } + fun textAlignLast(tal: TextAlignLast) { props["text-align-last"] = prp(tal) } + fun textDecoration(decoration: String) { props["text-decoration"] = prp(decoration) } + fun textDecorationColor(color: Color) { props["text-decoration-color"] = prp(color) } + fun textDecorationLine(tdc: TextDecorationLine) { props["text-decoration-line"] = prp(tdc) } + fun textDecorationStyle(tds: TextDecorationStyle) { props["text-decoration-style"] = prp(tds) } + fun textIndent(length: Measurement) { props["text-indent"] = prp(length) } + fun textIndent(indent: InitialInherit) { props["text-indent"] = prp(indent) } + fun textJustify(tj: TextJustify) { props["text-justify"] = prp(tj) } + fun textOverflow(to: String) { props["text-overflow"] = prp(to) } + fun textShadow(ts: String) { props["text-shadow"] = prp(ts) } + fun textTransform(tt: TextTransform) { props["text-transform"] = prp(tt) } + fun top(top: Measurement) { props["top"] = prp(top) } + fun transform(transform: Transform) { props["transform"] = prp(transform) } + fun transformOrigin(origin: String) { props["transform-origin"] = prp(origin) } + fun transformStyle(style: TransformStyle) { props["transform-style"] = prp(style) } + fun transition(transition: String) { props["transition"] = prp(transition) } + fun transitionDelay(timeInSeconds: Double) { props["transition-delay"] = prp("${timeInSeconds}s") } + fun transitionDelay(timeInMillis: Int) { props["transition-delay"] = prp("${timeInMillis}ms") } + fun transitionDelay(delay: DelayDuration) { props["transition-delay"] = prp(delay) } + fun transitionDuration(timeInSeconds: Double) { props["transition-duration"] = prp("${timeInSeconds}s") } + fun transitionDuration(timeInMillis: Int) { props["transition-duration"] = prp("${timeInMillis}ms") } + fun transitionDuration(td: DelayDuration) { props["transition-duration"] = prp(td) } + fun transitionProperty(property: String) { props["transition-property"] = prp(property) } + fun transitionTimingFunction(function: TimingFunction) { props["transition-timing-function"] = prp(function) } + fun unicodeBidi(ub: UnicodeBidi) { props["unicode-bidi"] = prp(ub) } + fun userSelect(us: UserSelect) { props["user-select"] = prp(us) } + fun verticalAlign(length: Measurement) { props["vertical-align"] = prp(length) } + fun verticalAlign(va: VerticalAlign) { props["vertical-align"] = prp(va) } + fun visibility(visibility: Visibility) { props["visibility"] = prp(visibility) } + fun whiteSpace(whiteSpace: WhiteSpace) { props["white-space"] = prp(whiteSpace) } + fun width(width: Measurement) { props["width"] = prp(width) } + fun wordBreak(wordBreak: WordBreak) { props["word-break"] = prp(wordBreak) } + fun wordSpacing(wordSpacing: Measurement) { props["word-spacing"] = prp(wordSpacing) } + fun wordSpacing(wordSpacing: WordSpacing) { props["word-spacing"] = prp(wordSpacing) } + fun wordWrap(wordWrap: WordWrap) { props["word-wrap"] = prp(wordWrap) } + fun writingMode(writingMode: WritingMode) { props["writing-mode"] = prp(writingMode) } + fun zIndex(zIndex: Int) { props["z-index"] = prp(zIndex.toString()) } + fun zIndex(zIndex: ZIndex) { props["z-index"] = prp(zIndex) } + +} + +@CssTagMarker +open class ConditionalStyle : Style() { + var media: MutableMap = mutableMapOf() + var supports: MutableMap = mutableMapOf() + + fun media(definition: String, style: ConditionalCss) { + media[definition] = style + } + + fun supports(query: String, style: ConditionalCss) { + supports[query] = style + } } diff --git a/src/jsMain/kotlin/nl/astraeus/css/Test.kt b/src/jsMain/kotlin/nl/astraeus/css/Test.kt index 78252bb..4a96493 100644 --- a/src/jsMain/kotlin/nl/astraeus/css/Test.kt +++ b/src/jsMain/kotlin/nl/astraeus/css/Test.kt @@ -52,7 +52,7 @@ private fun generateCss( } select("li") { sizePX(25, 25, 200, 200) - animationPlayState(AnimationPlayState.paused(), AnimationPlayState.running()) + animationPlayState(AnimationPlayState.paused, AnimationPlayState.running) select("a") { // width = px(725) @@ -80,12 +80,16 @@ fun main() { val sd = style { select("#pipo") { backgroundColor(hex("ffeedd")) - `fontFamily`("Arial, Courier") + fontFamily("Arial, Courier") // backgroundColor = Color.hex("eeeeee") // fontFamily = text("Arial, Courier") // animationDelay = listOf(DelayDuration.initial()) select("div") { + + tableLayout(TableLayout.auto) + tabSize(14.px()) + // color = Color.hex("1b1b1b1") // alignContent = AlignContent.flexStart() // animationName = listOf(text("foo"), text("bar")) diff --git a/src/jsMain/resources/index.html b/src/jsMain/resources/index.html new file mode 100644 index 0000000..f288b52 --- /dev/null +++ b/src/jsMain/resources/index.html @@ -0,0 +1,10 @@ + + + + + kotlin-css-generator + + + + + diff --git a/src/jvmMain/kotlin/nl/astraeus/css/Test.kt b/src/jvmMain/kotlin/nl/astraeus/css/Test.kt index 1126465..9eb5f31 100644 --- a/src/jvmMain/kotlin/nl/astraeus/css/Test.kt +++ b/src/jvmMain/kotlin/nl/astraeus/css/Test.kt @@ -1,7 +1,6 @@ package nl.astraeus.css import nl.astraeus.css.properties.* -import nl.astraeus.css.properties.AlignContentValue.* import nl.astraeus.css.properties.Color.Companion.hex import nl.astraeus.css.style.Css import nl.astraeus.css.style.Style @@ -98,6 +97,17 @@ fun main() { } val sd = style { + media("screen and (max-width: 600px)") { + fontSize(12.px()) + fontWeight(FontWeight.normal) + + supports("bla") { + media("bloe") { + fontSize(14.px()) + } + } + } + select("#pipo") { backgroundColor(hex("eeeeee")) fontFamily("Arial, Courier") @@ -106,7 +116,7 @@ fun main() { select("div") { fontFace { fontFamily("SanSation") - fontSize(FontSize.larger()) + fontSize(FontSize.larger) src("font/sansation_bold.woff") // fontStretch = FontStretch.condensed() // fontStyle = FontStyle.italic() @@ -123,8 +133,8 @@ fun main() { // text("bar") // ) select("span") { - alignItems(AlignItems.BASELINE) - alignSelf(AlignSelf.FLEX_START) + alignItems(AlignItems.baseline) + alignSelf(AlignSelf.flexStart) // animationIterationCount = listOf( // Count.count(3), @@ -146,8 +156,8 @@ fun main() { select("border-2") { // borderRadius = BorderRadius(4, 5, 6, 7) import(border2) - borderStyle(BorderStyle.dashed(), BorderStyle.dotted()) - animationPlayState(AnimationPlayState.paused(), AnimationPlayState.running()) + borderStyle(BorderStyle.dashed, BorderStyle.dotted) + animationPlayState(AnimationPlayState.paused, AnimationPlayState.running) keyFrames("mymove") { percentage(0) { @@ -177,13 +187,11 @@ fun main() { } } - media("(max-width: 600px)") { - fontSize(12.px()) - fontWeight(FontWeight.normal()) - } + objectFit(ObjectFit.initial) + pageBreakAfter(PageBreak.auto) - objectFit(ObjectFit.initial()) - pageBreakAfter(PageBreak.auto()) + tableLayout(TableLayout.auto) + tabSize(12.px()) // display = Display.none() // borderBottomWidth = BorderWidth.perc(13) @@ -205,8 +213,8 @@ fun main() { val test = style { select("nav") { - alignContent(STRETCH) - margin(0.px(), 2.em(), 0.5.px(), Measurement.auto()) + alignContent(AlignContent.stretch) + margin(0.px(), 2.em(), 0.5.px(), Measurement.auto) } }