component mapping in markdown should use the first child for codeblock
This commit is contained in:
parent
e178cf7c0a
commit
3743492b9f
@ -20,6 +20,9 @@ from reflex.components.tags.tag import Tag
|
|||||||
from reflex.utils import types
|
from reflex.utils import types
|
||||||
from reflex.utils.imports import ImportDict, ImportVar
|
from reflex.utils.imports import ImportDict, ImportVar
|
||||||
from reflex.vars.base import LiteralVar, Var
|
from reflex.vars.base import LiteralVar, Var
|
||||||
|
from reflex.vars.sequence import string_ternary_operation
|
||||||
|
from reflex.vars.function import ARRAY_ISARRAY
|
||||||
|
|
||||||
|
|
||||||
# Special vars used in the component map.
|
# Special vars used in the component map.
|
||||||
_CHILDREN = Var(_js_expr="children", _var_type=str)
|
_CHILDREN = Var(_js_expr="children", _var_type=str)
|
||||||
@ -199,7 +202,7 @@ class Markdown(Component):
|
|||||||
raise ValueError(f"No markdown component found for tag: {tag}.")
|
raise ValueError(f"No markdown component found for tag: {tag}.")
|
||||||
|
|
||||||
special_props = [_PROPS_IN_TAG]
|
special_props = [_PROPS_IN_TAG]
|
||||||
children = [_CHILDREN]
|
children = [_CHILDREN if not tag == "codeblock" else string_ternary_operation(ARRAY_ISARRAY.call(_CHILDREN), _CHILDREN.to(LiteralVar)[0], _CHILDREN)]
|
||||||
|
|
||||||
# For certain tags, the props from the markdown renderer are not actually valid for the component.
|
# For certain tags, the props from the markdown renderer are not actually valid for the component.
|
||||||
if tag in NO_PROPS_TAGS:
|
if tag in NO_PROPS_TAGS:
|
||||||
|
@ -180,6 +180,7 @@ class ArgsFunctionOperation(CachedVarOperation, FunctionVar):
|
|||||||
|
|
||||||
|
|
||||||
JSON_STRINGIFY = FunctionStringVar.create("JSON.stringify")
|
JSON_STRINGIFY = FunctionStringVar.create("JSON.stringify")
|
||||||
|
ARRAY_ISARRAY = FunctionStringVar.create("Array.isArray")
|
||||||
PROTOTYPE_TO_STRING = FunctionStringVar.create(
|
PROTOTYPE_TO_STRING = FunctionStringVar.create(
|
||||||
"((__to_string) => __to_string.toString())"
|
"((__to_string) => __to_string.toString())"
|
||||||
)
|
)
|
||||||
|
@ -548,6 +548,24 @@ def string_replace_operation(
|
|||||||
var_type=str,
|
var_type=str,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def string_ternary_operation(condition, true_operation, false_operation):
|
||||||
|
"""
|
||||||
|
This function generates the JavaScript ternary operation as a string.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
condition: The condition for the ternary operation.
|
||||||
|
true_operation: The operation if the condition is true.
|
||||||
|
false_operation: The operation if the condition is false.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
A string representing the JavaScript ternary operation.
|
||||||
|
"""
|
||||||
|
return var_operation_return(
|
||||||
|
js_expression=f"({condition} ? {true_operation} : {false_operation})",
|
||||||
|
var_type=str,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Compile regex for finding reflex var tags.
|
# Compile regex for finding reflex var tags.
|
||||||
_decode_var_pattern_re = (
|
_decode_var_pattern_re = (
|
||||||
|
Loading…
Reference in New Issue
Block a user