puppygirl-py/puppygirl/elements/domme.py
2025-10-06 16:11:34 -04:00

31 lines
809 B
Python

from dataclasses import dataclass
from typing import TYPE_CHECKING
from puppygirl.elements import TemplateAttr
from puppygirl.elements.shadow_root import ShadowRootMode
from puppygirl.renderer import Renderable
if TYPE_CHECKING:
from puppygirl import Puppygirl
from puppygirl.elements import Node
from puppygirl.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