from mmcm.utils.util import flatten

from .attributes import BaseAttribute2Text
from . import AttrRegister

__all__ = ["Render"]

RenderMap = {
    "Epic": "artstation, epic environment, highly detailed, 8k, HD",
    "HD": "8k, highly detailed",
    "EpicHD": "hyper detailed, beautiful lighting, epic environment, octane render, cinematic, 8k",
    "Digital": "detailed illustration, crisp lines, digital art, 8k, trending on artstation",
    "Unreal1": "artstation, concept art, smooth, sharp focus, illustration, unreal engine 5, 8k",
    "Unreal2": "concept art, octane render, artstation, epic environment, highly detailed, 8k",
}


@AttrRegister.register
class Render(BaseAttribute2Text):
    name = "render"

    def __init__(self, name: str = None) -> None:
        super().__init__(name)

    def __call__(self, attributes: str) -> str:
        if attributes == "" or attributes is None:
            return ""
        attributes = attributes.split(",")
        render = [RenderMap[attr] for attr in attributes if attr in RenderMap]
        render = flatten(render, ignored_iterable_types=[str])
        if len(render) == 1:
            render = render[0]
        return render