45 lines
1.0 KiB
Python
45 lines
1.0 KiB
Python
"""Handle styling."""
|
|
|
|
from typing import Optional
|
|
|
|
from pynecone import constants
|
|
from pynecone.event import EventChain
|
|
from pynecone.utils import format
|
|
from pynecone.vars import BaseVar, Var
|
|
|
|
toggle_color_mode = BaseVar(name=constants.TOGGLE_COLOR_MODE, type_=EventChain)
|
|
|
|
|
|
def convert(style_dict):
|
|
"""Format a style dictionary.
|
|
|
|
Args:
|
|
style_dict: The style dictionary to format.
|
|
|
|
Returns:
|
|
The formatted style dictionary.
|
|
"""
|
|
out = {}
|
|
for key, value in style_dict.items():
|
|
key = format.to_camel_case(key)
|
|
if isinstance(value, dict):
|
|
out[key] = convert(value)
|
|
elif isinstance(value, Var):
|
|
out[key] = str(value)
|
|
else:
|
|
out[key] = value
|
|
return out
|
|
|
|
|
|
class Style(dict):
|
|
"""A style dictionary."""
|
|
|
|
def __init__(self, style_dict: Optional[dict] = None):
|
|
"""Initialize the style.
|
|
|
|
Args:
|
|
style_dict: The style dictionary.
|
|
"""
|
|
style_dict = style_dict or {}
|
|
super().__init__(convert(style_dict))
|