66from django import template
77from django .template .base import NodeList
88from django .template .base import Parser
9- from django .template .base import Template
109from django .template .base import Token
1110from django .template .context import Context
12- from django .template .loader import select_template
13- from django .utils .safestring import SafeString
1411
1512from django_bird ._typing import TagBits
1613from django_bird ._typing import override
14+ from django_bird .components import Component
1715from django_bird .params import Params
1816from django_bird .slots import DEFAULT_SLOT
1917from django_bird .slots import Slots
20- from django_bird .templates import get_template_names
2118
2219TAG = "bird"
2320END_TAG = "endbird"
@@ -60,12 +57,11 @@ def __init__(self, name: str, params: Params, nodelist: NodeList | None) -> None
6057 self .nodelist = nodelist
6158
6259 @override
63- def render (self , context : Context ) -> SafeString :
60+ def render (self , context : Context ) -> str :
6461 component_name = self .get_component_name (context )
65- template_names = get_template_names (component_name )
66- template = select_template (template_names )
67- component_context = self .get_component_context_data (template .template , context )
68- return template .render (component_context )
62+ component = Component .from_name (component_name )
63+ component_context = self .get_component_context_data (component , context )
64+ return component .render (component_context )
6965
7066 def get_component_name (self , context : Context ) -> str :
7167 try :
@@ -75,9 +71,9 @@ def get_component_name(self, context: Context) -> str:
7571 return name
7672
7773 def get_component_context_data (
78- self , template : Template , context : Context
74+ self , component : Component , context : Context
7975 ) -> dict [str , Any ]:
80- props = self .params .render_props (template .nodelist , context )
76+ props = self .params .render_props (component .nodelist , context )
8177 attrs = self .params .render_attrs (context )
8278 slots = Slots .collect (self .nodelist , context ).render ()
8379 default_slot = slots .get (DEFAULT_SLOT ) or context .get ("slot" )
0 commit comments