|
@@ -1,11 +1,8 @@
|
|
|
"""Common utility functions used in the compiler."""
|
|
|
|
|
|
-from __future__ import annotations
|
|
|
-
|
|
|
-import inspect
|
|
|
import json
|
|
|
import os
|
|
|
-from typing import TYPE_CHECKING, Any, Dict, List, Set, Type
|
|
|
+from typing import Dict, List, Set, Tuple, Type
|
|
|
|
|
|
from pynecone import constants, utils
|
|
|
from pynecone.compiler import templates
|
|
@@ -21,14 +18,9 @@ from pynecone.components.base import (
|
|
|
Script,
|
|
|
Title,
|
|
|
)
|
|
|
-from pynecone.components.component import ImportDict
|
|
|
+from pynecone.components.component import Component, CustomComponent, ImportDict
|
|
|
from pynecone.state import State
|
|
|
from pynecone.style import Style
|
|
|
-from pynecone.var import BaseVar, Var
|
|
|
-
|
|
|
-if TYPE_CHECKING:
|
|
|
- from pynecone.components.component import Component, CustomComponent
|
|
|
-
|
|
|
|
|
|
# To re-export this function.
|
|
|
merge_imports = utils.merge_imports
|
|
@@ -170,7 +162,7 @@ def compile_render(component: Component) -> str:
|
|
|
return component.render()
|
|
|
|
|
|
|
|
|
-def compile_custom_component(component: CustomComponent) -> tuple[str, ImportDict]:
|
|
|
+def compile_custom_component(component: CustomComponent) -> Tuple[str, ImportDict]:
|
|
|
"""Compile a custom component.
|
|
|
|
|
|
Args:
|
|
@@ -179,20 +171,18 @@ def compile_custom_component(component: CustomComponent) -> tuple[str, ImportDic
|
|
|
Returns:
|
|
|
A tuple of the compiled component and the imports required by the component.
|
|
|
"""
|
|
|
- props = [
|
|
|
- BaseVar(
|
|
|
- name=name,
|
|
|
- type_=prop.type_ if utils._isinstance(prop, Var) else type(prop),
|
|
|
- is_local=True,
|
|
|
- )
|
|
|
- for name, prop in component.props.items()
|
|
|
- ]
|
|
|
-
|
|
|
- # Compile the component.
|
|
|
- render = component.component_fn(*props)
|
|
|
+ # Render the component.
|
|
|
+ render = component.get_component()
|
|
|
+
|
|
|
+ # Get the imports.
|
|
|
+ imports = {
|
|
|
+ lib: fields
|
|
|
+ for lib, fields in render.get_imports().items()
|
|
|
+ if lib != component.library
|
|
|
+ }
|
|
|
|
|
|
# Concatenate the props.
|
|
|
- props = ", ".join([prop.name for prop in props])
|
|
|
+ props = ", ".join([prop.name for prop in component.get_prop_vars()])
|
|
|
|
|
|
# Compile the component.
|
|
|
return (
|
|
@@ -201,7 +191,7 @@ def compile_custom_component(component: CustomComponent) -> tuple[str, ImportDic
|
|
|
props=props,
|
|
|
render=render,
|
|
|
),
|
|
|
- render.get_imports(),
|
|
|
+ imports,
|
|
|
)
|
|
|
|
|
|
|