use ternary operator in numbers.py, move code block args to class for docs discoverability
This commit is contained in:
parent
3743492b9f
commit
665179309e
@ -363,6 +363,7 @@ LiteralCodeTheme = Literal[
|
|||||||
"nord",
|
"nord",
|
||||||
"one-dark-pro",
|
"one-dark-pro",
|
||||||
"one-light",
|
"one-light",
|
||||||
|
"plain",
|
||||||
"plastic",
|
"plastic",
|
||||||
"poimandres",
|
"poimandres",
|
||||||
"red",
|
"red",
|
||||||
@ -668,20 +669,22 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
|
|||||||
# If this is enabled line numbers will be shown next to the code block.
|
# If this is enabled line numbers will be shown next to the code block.
|
||||||
show_line_numbers: Var[bool]
|
show_line_numbers: Var[bool]
|
||||||
|
|
||||||
|
# Whether a copy button should appear.
|
||||||
|
can_copy: Var[bool] = False
|
||||||
|
|
||||||
|
# copy_button: A custom copy button to override the default one.
|
||||||
|
copy_button: Var[Optional[Union[Component | bool]]] = None
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(
|
def create(
|
||||||
cls,
|
cls,
|
||||||
*children,
|
*children,
|
||||||
can_copy: bool | None = False,
|
|
||||||
copy_button: bool | Component | None = None,
|
|
||||||
**props,
|
**props,
|
||||||
) -> Component:
|
) -> Component:
|
||||||
"""Create a code block component using [shiki syntax highlighter](https://shiki.matsu.io/).
|
"""Create a code block component using [shiki syntax highlighter](https://shiki.matsu.io/).
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
*children: The children of the component.
|
*children: The children of the component.
|
||||||
can_copy: Whether a copy button should appear.
|
|
||||||
copy_button: A custom copy button to override the default one.
|
|
||||||
**props: The props to pass to the component.
|
**props: The props to pass to the component.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
@ -690,6 +693,8 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
|
|||||||
use_transformers = props.pop("use_transformers", False)
|
use_transformers = props.pop("use_transformers", False)
|
||||||
show_line_numbers = props.pop("show_line_numbers", False)
|
show_line_numbers = props.pop("show_line_numbers", False)
|
||||||
language = props.pop("language", None)
|
language = props.pop("language", None)
|
||||||
|
can_copy = props.pop("can_copy", False)
|
||||||
|
copy_button = props.pop("copy_button", None)
|
||||||
|
|
||||||
if use_transformers:
|
if use_transformers:
|
||||||
props["transformers"] = [ShikiJsTransformer()]
|
props["transformers"] = [ShikiJsTransformer()]
|
||||||
@ -704,7 +709,7 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
|
|||||||
theme = props.pop("theme", None)
|
theme = props.pop("theme", None)
|
||||||
props["theme"] = props["theme"] = (
|
props["theme"] = props["theme"] = (
|
||||||
cls._map_themes(theme)
|
cls._map_themes(theme)
|
||||||
if theme
|
if theme is not None
|
||||||
else color_mode_cond( # Default color scheme responds to global color mode.
|
else color_mode_cond( # Default color scheme responds to global color mode.
|
||||||
light="one-light",
|
light="one-light",
|
||||||
dark="one-dark-pro",
|
dark="one-dark-pro",
|
||||||
@ -751,8 +756,6 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
copy_button = None
|
|
||||||
|
|
||||||
if copy_button:
|
if copy_button:
|
||||||
return ShikiCodeBlock.create(
|
return ShikiCodeBlock.create(
|
||||||
|
@ -20,7 +20,7 @@ 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.number import ternary_operation
|
||||||
from reflex.vars.function import ARRAY_ISARRAY
|
from reflex.vars.function import ARRAY_ISARRAY
|
||||||
|
|
||||||
|
|
||||||
@ -202,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 if not tag == "codeblock" else string_ternary_operation(ARRAY_ISARRAY.call(_CHILDREN), _CHILDREN.to(LiteralVar)[0], _CHILDREN)]
|
children = [_CHILDREN if not tag == "codeblock" else ternary_operation(ARRAY_ISARRAY.call(_CHILDREN), _CHILDREN.to(LiteralVar)[0], _CHILDREN).to(str)]
|
||||||
|
|
||||||
# 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:
|
||||||
|
@ -548,24 +548,6 @@ 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