from dataclasses import dataclass from typing import TYPE_CHECKING from .constants import TemplateAttr from .shadow_root import ShadowRootMode from ..renderer import Renderable if TYPE_CHECKING: from .. import Puppygirl from .shadow_root import Node from ..puppytype import RenderableElement, Templates @dataclass class PuppygirlDomme(Renderable): puppygirl: "Puppygirl" @property def name(self): return "puppygirl-domme" def render(self, node: "Node", templates: "Templates") -> "RenderableElement": if not node.has_attr(TemplateAttr): return node template = templates[node[TemplateAttr]] shadow_root = node.attach_shadow(ShadowRootMode.Open) shadow_root.append_child(template.clone()) return node