Abasov Akif
4 years ago
committed by
GitHub
31 changed files with 675 additions and 777 deletions
@ -0,0 +1,38 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2020-2021 JetBrains s.r.o. and respective authors and developers. |
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. |
||||||
|
*/ |
||||||
|
|
||||||
|
@file:Suppress("UNUSED", "NOTHING_TO_INLINE", "FunctionName") |
||||||
|
package org.jetbrains.compose.web.css |
||||||
|
|
||||||
|
import org.w3c.dom.css.* |
||||||
|
import org.w3c.dom.css.StyleSheet |
||||||
|
|
||||||
|
inline val StyleSheet.cssRules |
||||||
|
get() = this.asDynamic().cssRules.unsafeCast<CSSRuleList>() |
||||||
|
|
||||||
|
|
||||||
|
inline fun StyleSheet.deleteRule(index: Int) { |
||||||
|
this.asDynamic().deleteRule(index) |
||||||
|
} |
||||||
|
|
||||||
|
fun StyleSheet.insertRule(cssRule: String, index: Int? = null): Int { |
||||||
|
return if (index != null) { |
||||||
|
this.asDynamic().insertRule(cssRule, index).unsafeCast<Int>() |
||||||
|
} else { |
||||||
|
this.asDynamic().insertRule(cssRule).unsafeCast<Int>() |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
inline operator fun CSSRuleList.get(index: Int): CSSRule { |
||||||
|
return this.asDynamic()[index].unsafeCast<CSSRule>() |
||||||
|
} |
||||||
|
|
||||||
|
@Suppress("NOTHING_TO_INLINE") |
||||||
|
inline fun <T : Any> jsObject(): T = |
||||||
|
js("({})") |
||||||
|
|
||||||
|
inline fun <T : Any> jsObject(builder: T.() -> Unit): T = |
||||||
|
jsObject<T>().apply(builder) |
@ -1,299 +0,0 @@ |
|||||||
@file:Suppress("UNUSED", "NOTHING_TO_INLINE") |
|
||||||
package org.jetbrains.compose.web.css |
|
||||||
|
|
||||||
import kotlinx.browser.window |
|
||||||
import org.w3c.dom.DOMMatrix |
|
||||||
import org.w3c.dom.DOMMatrixReadOnly |
|
||||||
import org.w3c.dom.Element |
|
||||||
import org.w3c.dom.css.CSSRule |
|
||||||
import org.w3c.dom.css.CSSRuleList |
|
||||||
import org.w3c.dom.css.CSSStyleRule |
|
||||||
import org.w3c.dom.css.ElementCSSInlineStyle |
|
||||||
import org.w3c.dom.css.StyleSheet |
|
||||||
|
|
||||||
inline val StyleSheet.cssRules |
|
||||||
get() = this.asDynamic().cssRules.unsafeCast<CSSRuleList>() |
|
||||||
|
|
||||||
inline fun StyleSheet.deleteRule(index: Int) { |
|
||||||
this.asDynamic().deleteRule(index) |
|
||||||
} |
|
||||||
|
|
||||||
inline val CSSStyleRule.styleMap |
|
||||||
get() = this.asDynamic().styleMap.unsafeCast<StylePropertyMap>() |
|
||||||
|
|
||||||
inline operator fun CSSRuleList.get(index: Int): CSSRule { |
|
||||||
return this.asDynamic()[index].unsafeCast<CSSRule>() |
|
||||||
} |
|
||||||
|
|
||||||
fun StyleSheet.insertRule(cssRule: String, index: Int? = null): Int { |
|
||||||
return if (index != null) { |
|
||||||
this.asDynamic().insertRule(cssRule, index).unsafeCast<Int>() |
|
||||||
} else { |
|
||||||
this.asDynamic().insertRule(cssRule).unsafeCast<Int>() |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
val ElementCSSInlineStyle.attributeStyleMap |
|
||||||
get() = this.asDynamic().attributeStyleMap.unsafeCast<StylePropertyMap>() |
|
||||||
|
|
||||||
external interface CSSStyleValue : StylePropertyValue |
|
||||||
|
|
||||||
@JsName("CSSStyleValue") |
|
||||||
open external class CSSStyleValueJS : CSSStyleValue { |
|
||||||
companion object { |
|
||||||
fun parse(property: String, cssText: String): CSSStyleValue |
|
||||||
fun parseAll(property: String, cssText: String): Array<CSSStyleValue> |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSVariableReferenceValue( |
|
||||||
variable: String, |
|
||||||
fallback: CSSUnparsedValue? = definedExternally |
|
||||||
) { |
|
||||||
val variable: String |
|
||||||
val fallback: CSSUnparsedValue? |
|
||||||
} |
|
||||||
|
|
||||||
// type CSSUnparsedSegment = String | CSSVariableReferenceValue |
|
||||||
interface CSSUnparsedSegment { |
|
||||||
companion object { |
|
||||||
operator fun invoke(value: String) = value.unsafeCast<CSSUnparsedSegment>() |
|
||||||
operator fun invoke(value: CSSVariableReferenceValue) = |
|
||||||
value.unsafeCast<CSSUnparsedSegment>() |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
fun CSSUnparsedSegment.asString() = this.asDynamic() as? String |
|
||||||
fun CSSUnparsedSegment.asCSSVariableReferenceValue() = |
|
||||||
this.asDynamic() as? CSSVariableReferenceValue |
|
||||||
|
|
||||||
external class CSSUnparsedValue(members: Array<CSSUnparsedSegment>) : CSSStyleValue { |
|
||||||
// TODO: [Symbol.iterator]() : IterableIterator<CSSUnparsedSegment> |
|
||||||
fun forEach(handler: (CSSUnparsedSegment) -> Unit) |
|
||||||
val length: Int |
|
||||||
|
|
||||||
// readonly [index: number]: CSSUnparsedSegment |
|
||||||
operator fun get(index: Int): CSSUnparsedSegment |
|
||||||
operator fun set(index: Int, value: CSSUnparsedSegment) |
|
||||||
} |
|
||||||
|
|
||||||
// type CSSNumberish = number | CSSNumericValue |
|
||||||
interface CSSNumberish { |
|
||||||
companion object { |
|
||||||
operator fun invoke(value: Number) = value.unsafeCast<CSSNumberish>() |
|
||||||
operator fun invoke(value: CSSNumericValue) = |
|
||||||
value.unsafeCast<CSSNumberish>() |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
fun CSSNumberish.asNumber() = this.asDynamic() as? Number |
|
||||||
fun CSSNumberish.asCSSNumericValue(): CSSNumericValue? = this.asDynamic() as? CSSNumericValue |
|
||||||
|
|
||||||
// declare enum CSSNumericBaseType { |
|
||||||
// 'length', |
|
||||||
// 'angle', |
|
||||||
// 'time', |
|
||||||
// 'frequency', |
|
||||||
// 'resolution', |
|
||||||
// 'flex', |
|
||||||
// 'percent', |
|
||||||
// } |
|
||||||
enum class CSSNumericBaseType(val value: String) { |
|
||||||
@JsName("_length") |
|
||||||
length("length"), |
|
||||||
angle("angle"), |
|
||||||
time("time"), |
|
||||||
frequency("frequency"), |
|
||||||
resolution("resolution"), |
|
||||||
flex("flex"), |
|
||||||
percent("percent") |
|
||||||
} |
|
||||||
|
|
||||||
external interface CSSNumericType { |
|
||||||
val length: Number |
|
||||||
val angle: Number |
|
||||||
val time: Number |
|
||||||
val frequency: Number |
|
||||||
val resolution: Number |
|
||||||
val flex: Number |
|
||||||
val percent: Number |
|
||||||
// percentHint: CSSNumericBaseType |
|
||||||
} |
|
||||||
|
|
||||||
val CSSNumericType.percentHint |
|
||||||
get() = CSSNumericBaseType.valueOf(this.asDynamic().percentHint) |
|
||||||
// set(value) { this.asDynamic().percentHint = value.value } |
|
||||||
|
|
||||||
external interface CSSNumericValue : CSSStyleValue |
|
||||||
|
|
||||||
// declare enum CSSMathOperator { |
|
||||||
// 'sum', |
|
||||||
// 'product', |
|
||||||
// 'negate', |
|
||||||
// 'invert', |
|
||||||
// 'min', |
|
||||||
// 'max', |
|
||||||
// 'clamp', |
|
||||||
// } |
|
||||||
enum class CSSMathOperator(val value: String) { |
|
||||||
sum("sum"), |
|
||||||
product("product"), |
|
||||||
negate("negate"), |
|
||||||
invert("invert"), |
|
||||||
min("min"), |
|
||||||
max("max"), |
|
||||||
clamp("clamp") |
|
||||||
} |
|
||||||
|
|
||||||
open external class CSSMathValue : CSSNumericValue |
|
||||||
|
|
||||||
val CSSMathValue.operator |
|
||||||
get() = CSSMathOperator.valueOf(this.asDynamic().operator) |
|
||||||
// set(value) { this.asDynamic().operator = value.value } |
|
||||||
|
|
||||||
external class CSSMathSum(vararg args: CSSNumberish) : CSSMathValue { |
|
||||||
val values: CSSNumericArray |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSMathProduct(vararg args: CSSNumberish) : CSSMathValue { |
|
||||||
val values: CSSNumericArray |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSMathNegate(arg: CSSNumberish) : CSSMathValue { |
|
||||||
val value: CSSNumericValue |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSMathInvert(arg: CSSNumberish) : CSSMathValue { |
|
||||||
val value: CSSNumericValue |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSMathMin(vararg args: CSSNumberish) : CSSMathValue { |
|
||||||
val values: CSSNumericArray |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSMathMax(vararg args: CSSNumberish) : CSSMathValue { |
|
||||||
val values: CSSNumericArray |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSNumericArray { |
|
||||||
// TODO: [Symbol.iterator]() : IterableIterator<CSSNumericValue> |
|
||||||
fun forEach(handler: (CSSNumericValue) -> Unit) |
|
||||||
val length: Int |
|
||||||
|
|
||||||
// readonly [index: number]: CSSNumericValue |
|
||||||
operator fun get(index: Int): CSSNumericValue |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSTransformValue(transforms: Array<CSSTransformComponent>) : CSSStyleValue { |
|
||||||
// [Symbol.iterator]() : IterableIterator<CSSTransformComponent> |
|
||||||
fun forEach(handler: (CSSTransformComponent) -> Unit) |
|
||||||
val length: Int |
|
||||||
|
|
||||||
// [index: number]: CSSTransformComponent |
|
||||||
operator fun get(index: Int): CSSTransformComponent |
|
||||||
operator fun set(index: Int, value: CSSTransformComponent) |
|
||||||
val is2D: Boolean |
|
||||||
fun toMatrix(): DOMMatrix |
|
||||||
} |
|
||||||
|
|
||||||
open external class CSSTransformComponent { |
|
||||||
val is2D: Boolean |
|
||||||
fun toMatrix(): DOMMatrix |
|
||||||
// toString() : string |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSTranslate( |
|
||||||
x: CSSNumericValue, |
|
||||||
y: CSSNumericValue, |
|
||||||
z: CSSNumericValue? = definedExternally |
|
||||||
) : CSSTransformComponent { |
|
||||||
val x: CSSNumericValue |
|
||||||
val y: CSSNumericValue |
|
||||||
val z: CSSNumericValue |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSRotate(angle: CSSNumericValue) : CSSTransformComponent { |
|
||||||
constructor(x: CSSNumberish, y: CSSNumberish, z: CSSNumberish, angle: CSSNumericValue) |
|
||||||
|
|
||||||
val x: CSSNumberish |
|
||||||
val y: CSSNumberish |
|
||||||
val z: CSSNumberish |
|
||||||
val angle: CSSNumericValue |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSScale( |
|
||||||
x: CSSNumberish, |
|
||||||
y: CSSNumberish, |
|
||||||
z: CSSNumberish? = definedExternally |
|
||||||
) : CSSTransformComponent { |
|
||||||
val x: CSSNumberish |
|
||||||
val y: CSSNumberish |
|
||||||
val z: CSSNumberish |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSSkew(ax: CSSNumericValue, ay: CSSNumericValue) : CSSTransformComponent { |
|
||||||
val ax: CSSNumericValue |
|
||||||
val ay: CSSNumericValue |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSSkewX(ax: CSSNumericValue) : CSSTransformComponent { |
|
||||||
val ax: CSSNumericValue |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSSkewY(ay: CSSNumericValue) : CSSTransformComponent { |
|
||||||
val ay: CSSNumericValue |
|
||||||
} |
|
||||||
|
|
||||||
/* Note that skew(x,y) is *not* the same as skewX(x) skewY(y), |
|
||||||
thus the separate interfaces for all three. */ |
|
||||||
|
|
||||||
external class CSSPerspective(length: CSSNumericValue) : CSSTransformComponent { |
|
||||||
val length: CSSNumericValue |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSMatrixComponent( |
|
||||||
matrix: DOMMatrixReadOnly, |
|
||||||
options: CSSMatrixComponentOptions? = definedExternally |
|
||||||
) : CSSTransformComponent { |
|
||||||
val matrix: DOMMatrix |
|
||||||
} |
|
||||||
|
|
||||||
external interface CSSMatrixComponentOptions { |
|
||||||
val is2D: Boolean |
|
||||||
} |
|
||||||
|
|
||||||
external class CSSImageValue : CSSStyleValue |
|
||||||
|
|
||||||
open external class StylePropertyMapReadOnly { |
|
||||||
// TODO: [Symbol.iterator]() : IterableIterator<[string, CSSStyleValue[]]> |
|
||||||
|
|
||||||
fun get(property: String): CSSStyleValue? // CSSStyleValue | undefined |
|
||||||
fun getAll(property: String): Array<CSSStyleValue> |
|
||||||
fun has(property: String): Boolean |
|
||||||
val size: Number |
|
||||||
} |
|
||||||
|
|
||||||
fun StylePropertyMapReadOnly.forEach(handler: (String, Array<CSSStyleValue>) -> Unit) { |
|
||||||
this.asDynamic().forEach { entry: Array<dynamic> -> |
|
||||||
handler( |
|
||||||
entry[0].unsafeCast<String>(), |
|
||||||
entry[1].unsafeCast<Array<CSSStyleValue>>() |
|
||||||
) |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// CSSStyleValue | string |
|
||||||
external interface StylePropertyValue |
|
||||||
|
|
||||||
external class StylePropertyMap : StylePropertyMapReadOnly { |
|
||||||
fun set(property: String, vararg values: StylePropertyValue) |
|
||||||
fun append(property: String, vararg values: StylePropertyValue) |
|
||||||
fun delete(property: String) |
|
||||||
fun clear() |
|
||||||
} |
|
||||||
|
|
||||||
inline fun Element.computedStyleMap(): StylePropertyMapReadOnly = |
|
||||||
this.asDynamic().computedStyleMap().unsafeCast<StylePropertyMapReadOnly>() |
|
||||||
|
|
||||||
@Suppress("unused") |
|
||||||
val cssTypedOMPolyfill = CSSTypedOMPolyfill.default(window) |
|
@ -0,0 +1,183 @@ |
|||||||
|
@file:Suppress("Unused", "NOTHING_TO_INLINE", "NESTED_CLASS_IN_EXTERNAL_INTERFACE", "INLINE_EXTERNAL_DECLARATION", "WRONG_BODY_OF_EXTERNAL_DECLARATION", "NESTED_EXTERNAL_DECLARATION") |
||||||
|
|
||||||
|
package org.jetbrains.compose.web.css |
||||||
|
|
||||||
|
external interface StylePropertyEnum: StylePropertyString |
||||||
|
inline val StylePropertyEnum.name get() = this.unsafeCast<String>() |
||||||
|
inline val StylePropertyEnum.value get() = this.unsafeCast<String>() |
||||||
|
|
||||||
|
external interface LineStyle: StylePropertyEnum { |
||||||
|
external companion object { |
||||||
|
inline val None get() = LineStyle("none") |
||||||
|
inline val Hidden get() = LineStyle("hidden") |
||||||
|
inline val Dotted get() = LineStyle("dotted") |
||||||
|
inline val Dashed get() = LineStyle("dashed") |
||||||
|
inline val Solid get() = LineStyle("solid") |
||||||
|
inline val Double get() = LineStyle("double") |
||||||
|
inline val Groove get() = LineStyle("groove") |
||||||
|
inline val Ridge get() = LineStyle("ridge") |
||||||
|
inline val Inset get() = LineStyle("inset") |
||||||
|
inline val Outset get() = LineStyle("outset") |
||||||
|
} |
||||||
|
} |
||||||
|
inline fun LineStyle(value: String) = value.unsafeCast<LineStyle>() |
||||||
|
|
||||||
|
external interface DisplayStyle: StylePropertyEnum { |
||||||
|
external companion object { |
||||||
|
inline val Block get() = DisplayStyle("block") |
||||||
|
inline val Inline get() = DisplayStyle("inline") |
||||||
|
inline val InlineBlock get() = DisplayStyle("inline-block") |
||||||
|
inline val Flex get() = DisplayStyle("flex") |
||||||
|
inline val LegacyInlineFlex get() = DisplayStyle("inline-flex") |
||||||
|
inline val Grid get() = DisplayStyle("grid") |
||||||
|
inline val LegacyInlineGrid get() = DisplayStyle("inline-grid") |
||||||
|
inline val FlowRoot get() = DisplayStyle("flow-root") |
||||||
|
|
||||||
|
inline val None get() = DisplayStyle("none") |
||||||
|
inline val Contents get() = DisplayStyle("contents") |
||||||
|
|
||||||
|
// TODO(shabunc): This properties behave them iconsistenly in both Chrome and Firefox so I turned the off so far |
||||||
|
// BlockFlow("block flow") |
||||||
|
// InlineFlow("inline flow") |
||||||
|
// InlineFlowRoot("inline flow-root") |
||||||
|
// BlocklFlex("block flex") |
||||||
|
// InlineFlex("inline flex") |
||||||
|
// BlockGrid("block grid") |
||||||
|
// InlineGrid("inline grid") |
||||||
|
// BlockFlowRoot("block flow-root") |
||||||
|
|
||||||
|
inline val Table get() = DisplayStyle("table") |
||||||
|
inline val TableRow get() = DisplayStyle("table-row") |
||||||
|
inline val ListItem get() = DisplayStyle("list-item") |
||||||
|
|
||||||
|
inline val Inherit get() = DisplayStyle("inherit") |
||||||
|
inline val Initial get() = DisplayStyle("initial") |
||||||
|
inline val Unset get() = DisplayStyle("unset") |
||||||
|
} |
||||||
|
} |
||||||
|
inline fun DisplayStyle(value: String) = value.unsafeCast<DisplayStyle>() |
||||||
|
|
||||||
|
external interface FlexDirection: StylePropertyEnum { |
||||||
|
companion object { |
||||||
|
inline val Row get() = FlexDirection("row") |
||||||
|
inline val RowReverse get() = FlexDirection("row-reverse") |
||||||
|
inline val Column get() = FlexDirection("column") |
||||||
|
inline val ColumnReverse get() = FlexDirection("column-reverse") |
||||||
|
} |
||||||
|
} |
||||||
|
inline fun FlexDirection(value: String) = value.unsafeCast<FlexDirection>() |
||||||
|
|
||||||
|
external interface FlexWrap: StylePropertyEnum { |
||||||
|
companion object { |
||||||
|
inline val Wrap get() = FlexWrap("wrap") |
||||||
|
inline val Nowrap get() = FlexWrap("nowrap") |
||||||
|
inline val WrapReverse get() = FlexWrap("wrap-reverse") |
||||||
|
} |
||||||
|
} |
||||||
|
inline fun FlexWrap(value: String) = value.unsafeCast<FlexWrap>() |
||||||
|
|
||||||
|
external interface JustifyContent: StylePropertyEnum { |
||||||
|
companion object { |
||||||
|
inline val Center get() = JustifyContent("center") |
||||||
|
inline val Start get() = JustifyContent("start") |
||||||
|
inline val End get() = JustifyContent("end") |
||||||
|
inline val FlexStart get() = JustifyContent("flex-start") |
||||||
|
inline val FlexEnd get() = JustifyContent("flex-end") |
||||||
|
inline val Left get() = JustifyContent("left") |
||||||
|
inline val Right get() = JustifyContent("right") |
||||||
|
inline val Normal get() = JustifyContent("normal") |
||||||
|
inline val SpaceBetween get() = JustifyContent("space-between") |
||||||
|
inline val SpaceAround get() = JustifyContent("space-around") |
||||||
|
inline val SpaceEvenly get() = JustifyContent("space-evenly") |
||||||
|
inline val Stretch get() = JustifyContent("stretch") |
||||||
|
inline val Inherit get() = JustifyContent("inherit") |
||||||
|
inline val Initial get() = JustifyContent("initial") |
||||||
|
inline val Unset get() = JustifyContent("unset") |
||||||
|
inline val SafeCenter get() = JustifyContent("safe center") |
||||||
|
inline val UnsafeCenter get() = JustifyContent("unsafe center") |
||||||
|
} |
||||||
|
} |
||||||
|
inline fun JustifyContent(value: String) = value.unsafeCast<JustifyContent>() |
||||||
|
|
||||||
|
external interface AlignSelf: StylePropertyEnum { |
||||||
|
companion object { |
||||||
|
inline val Auto get() = AlignSelf("auto") |
||||||
|
inline val Normal get() = AlignSelf("normal") |
||||||
|
inline val Center get() = AlignSelf("center") |
||||||
|
inline val Start get() = AlignSelf("start") |
||||||
|
inline val End get() = AlignSelf("end") |
||||||
|
inline val SelfStart get() = AlignSelf("self-start") |
||||||
|
inline val SelfEnd get() = AlignSelf("self-end") |
||||||
|
inline val FlexStart get() = AlignSelf("flex-start") |
||||||
|
inline val FlexEnd get() = AlignSelf("flex-end") |
||||||
|
inline val Baseline get() = AlignSelf("baseline") |
||||||
|
// FirstBaseline("first baseline") |
||||||
|
// LastBaseline("last baseline") |
||||||
|
inline val Stretch get() = AlignSelf("stretch") |
||||||
|
inline val SafeCenter get() = AlignSelf("safe center") |
||||||
|
inline val UnsafeCenter get() = AlignSelf("unsafe center") |
||||||
|
inline val Inherit get() = AlignSelf("inherit") |
||||||
|
inline val Initial get() = AlignSelf("initial") |
||||||
|
inline val Unset get() = AlignSelf("unset") |
||||||
|
} |
||||||
|
} |
||||||
|
inline fun AlignSelf(value: String) = value.unsafeCast<AlignSelf>() |
||||||
|
|
||||||
|
external interface AlignItems: StylePropertyEnum { |
||||||
|
companion object { |
||||||
|
inline val Normal get() = AlignItems("normal") |
||||||
|
inline val Stretch get() = AlignItems("stretch") |
||||||
|
inline val Center get() = AlignItems("center") |
||||||
|
inline val Start get() = AlignItems("start") |
||||||
|
inline val End get() = AlignItems("end") |
||||||
|
inline val FlexStart get() = AlignItems("flex-start") |
||||||
|
inline val FlexEnd get() = AlignItems("flex-end") |
||||||
|
inline val Baseline get() = AlignItems("baseline") |
||||||
|
// FirstBaseline("first baseline") |
||||||
|
// LastBaseline("last baseline") |
||||||
|
inline val SafeCenter get() = AlignItems("safe center") |
||||||
|
inline val UnsafeCenter get() = AlignItems("unsafe center") |
||||||
|
|
||||||
|
inline val Inherit get() = AlignItems("inherit") |
||||||
|
inline val Initial get() = AlignItems("initial") |
||||||
|
inline val Unset get() = AlignItems("unset") |
||||||
|
} |
||||||
|
} |
||||||
|
inline fun AlignItems(value: String) = value.unsafeCast<AlignItems>() |
||||||
|
|
||||||
|
external interface AlignContent: StylePropertyEnum { |
||||||
|
companion object { |
||||||
|
inline val Center get() = AlignContent("center") |
||||||
|
inline val Start get() = AlignContent("start") |
||||||
|
inline val End get() = AlignContent("end") |
||||||
|
inline val FlexStart get() = AlignContent("flex-start") |
||||||
|
inline val FlexEnd get() = AlignContent("flex-end") |
||||||
|
inline val Baseline get() = AlignContent("baseline") |
||||||
|
// FirstBaseline("first baseline") |
||||||
|
// LastBaseline("last baseline") |
||||||
|
inline val SafeCenter get() = AlignContent("safe center") |
||||||
|
inline val UnsafeCenter get() = AlignContent("unsafe center") |
||||||
|
inline val SpaceBetween get() = AlignContent("space-between") |
||||||
|
inline val SpaceAround get() = AlignContent("space-around") |
||||||
|
inline val SpaceEvenly get() = AlignContent("space-evenly") |
||||||
|
inline val Stretch get() = AlignContent("stretch") |
||||||
|
|
||||||
|
inline val Inherit get() = AlignContent("inherit") |
||||||
|
inline val Initial get() = AlignContent("initial") |
||||||
|
inline val Unset get() = AlignContent("unset") |
||||||
|
} |
||||||
|
} |
||||||
|
inline fun AlignContent(value: String) = value.unsafeCast<AlignContent>() |
||||||
|
|
||||||
|
external interface Position: StylePropertyEnum { |
||||||
|
companion object { |
||||||
|
inline val Static get() = Position("static") |
||||||
|
inline val Relative get() = Position("relative") |
||||||
|
inline val Absolute get() = Position("absolute") |
||||||
|
inline val Sticky get() = Position("sticky") |
||||||
|
inline val Fixed get() = Position("fixed") |
||||||
|
} |
||||||
|
} |
||||||
|
inline fun Position(value: String) = value.unsafeCast<Position>() |
||||||
|
|
||||||
|
typealias LanguageCode = String |
@ -1,15 +0,0 @@ |
|||||||
@file:Suppress("UNUSED") |
|
||||||
package org.jetbrains.compose.web.css |
|
||||||
|
|
||||||
interface CSSAutoValue : StylePropertyValue |
|
||||||
|
|
||||||
val auto = "auto".unsafeCast<CSSAutoValue>() |
|
||||||
|
|
||||||
enum class Direction { |
|
||||||
rtl, |
|
||||||
ltr; |
|
||||||
|
|
||||||
override fun toString(): String = this.name |
|
||||||
} |
|
||||||
|
|
||||||
typealias LanguageCode = String |
|
@ -0,0 +1,12 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2020-2021 JetBrains s.r.o. and respective authors and developers. |
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. |
||||||
|
*/ |
||||||
|
|
||||||
|
@file:Suppress("NOTHING_TO_INLINE") |
||||||
|
|
||||||
|
package org.jetbrains.compose.web.css |
||||||
|
|
||||||
|
external interface CSSKeywordValue : CSSStyleValue |
||||||
|
|
||||||
|
inline fun CSSKeywordValue(value: String): CSSKeywordValue = CSSStyleValue(value).unsafeCast<CSSKeywordValue>() |
@ -0,0 +1,14 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2020-2021 JetBrains s.r.o. and respective authors and developers. |
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.jetbrains.compose.web.css |
||||||
|
|
||||||
|
operator fun <T: CSSUnit> CSSSizeValue<T>.times(num: Number): CSSSizeValue<T> = CSSUnitValueTyped(value * num.toFloat(), unit) |
||||||
|
operator fun <T: CSSUnit> Number.times(unit: CSSSizeValue<T>): CSSSizeValue<T> = CSSUnitValueTyped(unit.value * toFloat(), unit.unit) |
||||||
|
|
||||||
|
operator fun <T: CSSUnit> CSSSizeValue<T>.div(num: Number): CSSSizeValue<T> = CSSUnitValueTyped(value / num.toFloat(), unit) |
||||||
|
|
||||||
|
operator fun <T: CSSUnit> CSSSizeValue<T>.plus(b: CSSSizeValue<T>): CSSSizeValue<T> = CSSUnitValueTyped(value + b.value, unit) |
||||||
|
operator fun <T: CSSUnit> CSSSizeValue<T>.minus(b: CSSSizeValue<T>): CSSSizeValue<T> = CSSUnitValueTyped(value - b.value, unit) |
@ -1,15 +0,0 @@ |
|||||||
package org.jetbrains.compose.web.css |
|
||||||
|
|
||||||
import org.w3c.dom.Window |
|
||||||
|
|
||||||
@JsModule("css-typed-om") |
|
||||||
@JsNonModule |
|
||||||
abstract external class CSSTypedOMPolyfill { |
|
||||||
companion object { |
|
||||||
fun default(window: Window) |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
fun StylePropertyMap.clear() { |
|
||||||
throw AssertionError("StylePropertyMap::clear isn't polyfilled") |
|
||||||
} |
|
@ -0,0 +1,27 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2020-2021 JetBrains s.r.o. and respective authors and developers. |
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. |
||||||
|
*/ |
||||||
|
|
||||||
|
@file:Suppress("UNUSED", "NOTHING_TO_INLINE", "FunctionName") |
||||||
|
package org.jetbrains.compose.web.css |
||||||
|
|
||||||
|
external interface StylePropertyValue |
||||||
|
|
||||||
|
external interface StylePropertyNumber: StylePropertyValue |
||||||
|
external interface StylePropertyString: StylePropertyValue |
||||||
|
|
||||||
|
inline fun StylePropertyValue(value: String): StylePropertyString = value.unsafeCast<StylePropertyString>() |
||||||
|
inline fun StylePropertyValue(value: Number): StylePropertyNumber = value.unsafeCast<StylePropertyNumber>() |
||||||
|
|
||||||
|
fun StylePropertyValue.asString(): String? = if (jsTypeOf(this) == "string") this.unsafeCast<String>() else null |
||||||
|
|
||||||
|
fun StylePropertyValue.asNumber(): Number? = if (jsTypeOf(this) == "number") this.unsafeCast<Number>() else null |
||||||
|
|
||||||
|
fun StylePropertyValue.asCSSStyleValue(): CSSStyleValue? = if (jsTypeOf(this) == "object") this.unsafeCast<CSSStyleValue>() else null |
||||||
|
|
||||||
|
external interface CSSStyleValue: StylePropertyValue { |
||||||
|
override fun toString(): String |
||||||
|
} |
||||||
|
|
||||||
|
inline fun CSSStyleValue(value: String): CSSStyleValue = StylePropertyValue(value).unsafeCast<CSSStyleValue>() |
@ -0,0 +1,14 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2020-2021 JetBrains s.r.o. and respective authors and developers. |
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.jetbrains.compose.web.css.keywords |
||||||
|
|
||||||
|
import org.jetbrains.compose.web.css.CSSKeywordValue |
||||||
|
|
||||||
|
external interface CSSAutoKeyword : CSSKeywordValue |
||||||
|
|
||||||
|
inline val auto: CSSAutoKeyword |
||||||
|
get() = CSSKeywordValue("auto").unsafeCast<CSSAutoKeyword>() |
||||||
|
|
@ -0,0 +1,116 @@ |
|||||||
|
package org.jetbrains.compose.web.core.tests |
||||||
|
|
||||||
|
import org.jetbrains.compose.web.css.* |
||||||
|
|
||||||
|
fun DisplayStyle.Companion.values() = listOf( |
||||||
|
DisplayStyle.Block, |
||||||
|
DisplayStyle.Inline, |
||||||
|
DisplayStyle.InlineBlock, |
||||||
|
DisplayStyle.Flex, |
||||||
|
DisplayStyle.LegacyInlineFlex, |
||||||
|
DisplayStyle.Grid, |
||||||
|
DisplayStyle.LegacyInlineGrid, |
||||||
|
DisplayStyle.FlowRoot, |
||||||
|
DisplayStyle.None, |
||||||
|
DisplayStyle.Contents, |
||||||
|
DisplayStyle.Table, |
||||||
|
DisplayStyle.TableRow, |
||||||
|
DisplayStyle.ListItem, |
||||||
|
DisplayStyle.Inherit, |
||||||
|
DisplayStyle.Initial, |
||||||
|
DisplayStyle.Unset |
||||||
|
) |
||||||
|
|
||||||
|
fun FlexDirection.Companion.values() = listOf( |
||||||
|
FlexDirection.Row, |
||||||
|
FlexDirection.RowReverse, |
||||||
|
FlexDirection.Column, |
||||||
|
FlexDirection.ColumnReverse |
||||||
|
) |
||||||
|
|
||||||
|
fun FlexWrap.Companion.values() = listOf( |
||||||
|
FlexWrap.Wrap, |
||||||
|
FlexWrap.Nowrap, |
||||||
|
FlexWrap.WrapReverse |
||||||
|
) |
||||||
|
|
||||||
|
fun JustifyContent.Companion.values() = listOf( |
||||||
|
JustifyContent.Center, |
||||||
|
JustifyContent.Start, |
||||||
|
JustifyContent.End, |
||||||
|
JustifyContent.FlexStart, |
||||||
|
JustifyContent.FlexEnd, |
||||||
|
JustifyContent.Left, |
||||||
|
JustifyContent.Right, |
||||||
|
JustifyContent.Normal, |
||||||
|
JustifyContent.SpaceBetween, |
||||||
|
JustifyContent.SpaceAround, |
||||||
|
JustifyContent.SpaceEvenly, |
||||||
|
JustifyContent.Stretch, |
||||||
|
JustifyContent.Inherit, |
||||||
|
JustifyContent.Initial, |
||||||
|
JustifyContent.Unset, |
||||||
|
JustifyContent.SafeCenter, |
||||||
|
JustifyContent.UnsafeCenter |
||||||
|
) |
||||||
|
|
||||||
|
fun AlignSelf.Companion.values() = listOf( |
||||||
|
AlignSelf.Auto, |
||||||
|
AlignSelf.Normal, |
||||||
|
AlignSelf.Center, |
||||||
|
AlignSelf.Start, |
||||||
|
AlignSelf.End, |
||||||
|
AlignSelf.SelfStart, |
||||||
|
AlignSelf.SelfEnd, |
||||||
|
AlignSelf.FlexStart, |
||||||
|
AlignSelf.FlexEnd, |
||||||
|
AlignSelf.Baseline, |
||||||
|
AlignSelf.Stretch, |
||||||
|
AlignSelf.SafeCenter, |
||||||
|
AlignSelf.UnsafeCenter, |
||||||
|
AlignSelf.Inherit, |
||||||
|
AlignSelf.Initial, |
||||||
|
AlignSelf.Unset |
||||||
|
) |
||||||
|
|
||||||
|
fun AlignItems.Companion.values() = listOf( |
||||||
|
AlignItems.Normal, |
||||||
|
AlignItems.Stretch, |
||||||
|
AlignItems.Center, |
||||||
|
AlignItems.Start, |
||||||
|
AlignItems.End, |
||||||
|
AlignItems.FlexStart, |
||||||
|
AlignItems.FlexEnd, |
||||||
|
AlignItems.Baseline, |
||||||
|
AlignItems.SafeCenter, |
||||||
|
AlignItems.UnsafeCenter, |
||||||
|
AlignItems.Inherit, |
||||||
|
AlignItems.Initial, |
||||||
|
AlignItems.Unset |
||||||
|
) |
||||||
|
|
||||||
|
fun AlignContent.Companion.values() = listOf( |
||||||
|
AlignContent.Center, |
||||||
|
AlignContent.Start, |
||||||
|
AlignContent.End, |
||||||
|
AlignContent.FlexStart, |
||||||
|
AlignContent.FlexEnd, |
||||||
|
AlignContent.Baseline, |
||||||
|
AlignContent.SafeCenter, |
||||||
|
AlignContent.UnsafeCenter, |
||||||
|
AlignContent.SpaceBetween, |
||||||
|
AlignContent.SpaceAround, |
||||||
|
AlignContent.SpaceEvenly, |
||||||
|
AlignContent.Stretch, |
||||||
|
AlignContent.Inherit, |
||||||
|
AlignContent.Initial, |
||||||
|
AlignContent.Unset |
||||||
|
) |
||||||
|
|
||||||
|
fun Position.Companion.values() = listOf( |
||||||
|
Position.Static, |
||||||
|
Position.Relative, |
||||||
|
Position.Absolute, |
||||||
|
Position.Sticky, |
||||||
|
Position.Fixed |
||||||
|
) |
Loading…
Reference in new issue