kotlin-react-core/src/jsMain/kotlin/react/ReactNode.kt (35 lines of code) (raw):
package react
import js.array.ReadonlyArray
import js.reflect.unsafeCast
import js.reflect.upcast
@JsExternalInheritorsOnly
sealed external interface ReactNode
inline fun ReactNode(
source: ReadonlyArray<ReactNode?>,
): ReactNode =
unsafeCast(source)
inline fun ReactNode(
source: ReadonlyArray<ReactNode?>?,
): ReactNode? =
unsafeCast(source)
inline fun ReactNode(
source: String,
): ReactNode =
unsafeCast(source)
inline fun ReactNode(
source: String?,
): ReactNode? =
unsafeCast(source)
inline fun ReactNode(
source: Char,
): ReactNode =
ReactNode(source.toString())
fun ReactNode.asStringOrNull(): String? =
upcast<Any>() as? String
fun ReactNode.asElementOrNull(): ReactElement<*>? =
if (isValidElement(this)) {
unsafeCast<ReactElement<*>>(this)
} else null
@Suppress("UNCHECKED_CAST")
fun ReactNode.asNodeArrayOrNull(): ReadonlyArray<ReactNode?>? =
upcast<Any>() as? ReadonlyArray<ReactNode?>