UNPKG

@tko/utils.jsx

Version:

TKO JSX Rendering

39 lines (38 loc) 856 B
// @tko/utils.jsx 🥊 4.0.0-beta1.3 ESM import { isObservable, unwrap } from "@tko/observable"; import { ORIGINAL_JSX_SYM } from "./JsxObserver"; export function maybeJsx(possibleJsx) { if (isObservable(possibleJsx)) { return true; } const value = unwrap(possibleJsx); if (!value) { return false; } if (value.elementName) { return true; } if (!Array.isArray(value) || !value.length) { return false; } if (value[0] instanceof window.Node) { return false; } return true; } export function getOriginalJsxForNode(node) { return node[ORIGINAL_JSX_SYM]; } export function createElement(elementName, attributes, ...children) { return elementName === Fragment ? children : { elementName, attributes: attributes || {}, children: [...children] }; } export const Fragment = Symbol("JSX Fragment");