"""Thin top-level helpers that delegate to `components_manager`."""
from __future__ import annotations
from typing import TYPE_CHECKING, Any
from .manager import components_manager
from .signals import component_rendered
if TYPE_CHECKING:
from collections.abc import Mapping
from pathlib import Path
from django.http import HttpRequest
from .info import ComponentInfo
[docs]
def get_component(name: str, template_path: Path) -> ComponentInfo | None:
"""Delegate to `components_manager.get_component`."""
return components_manager.get_component(name, template_path)
[docs]
def load_component_template(info: ComponentInfo) -> str | None:
"""Return raw template text for `info`."""
return components_manager.template_loader.load(info)
[docs]
def render_component(
info: ComponentInfo,
context_data: Mapping[str, Any],
request: HttpRequest | None = None,
) -> str:
"""Render `info` to HTML using template context and an optional request."""
html = components_manager.component_renderer.render(info, context_data, request)
component_rendered.send(
sender=components_manager.__class__,
info=info,
template_path=getattr(info, "template_path", None),
)
return html
__all__ = ["get_component", "load_component_template", "render_component"]