31 lines
809 B
Python
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
|
|
|