# SPDX-License-Identifier: MIT from __future__ import annotations from typing import TYPE_CHECKING, ClassVar, Tuple from ..components import TextDisplay as TextDisplayComponent from ..enums import ComponentType from ..utils import MISSING from .item import UIComponent if TYPE_CHECKING: from typing_extensions import Self __all__ = ("TextDisplay",) class TextDisplay(UIComponent): """Represents a UI text display. .. versionadded:: 2.11 Parameters ---------- content: :class:`str` The text displayed by this component. id: :class:`int` The numeric identifier for the component. Must be unique within the message. If set to ``0`` (the default) when sending a component, the API will assign sequential identifiers to the components in the message. """ __repr_attributes__: ClassVar[Tuple[str, ...]] = ("content",) # We have to set this to MISSING in order to overwrite the abstract property from UIComponent _underlying: TextDisplayComponent = MISSING def __init__(self, content: str, *, id: int = 0) -> None: self._underlying = TextDisplayComponent._raw_construct( type=ComponentType.text_display, id=id, content=str(content), ) @property def content(self) -> str: """:class:`str`: The text displayed by this component.""" return self._underlying.content @content.setter def content(self, value: str) -> None: self._underlying.content = str(value) @classmethod def from_component(cls, text_display: TextDisplayComponent) -> Self: return cls( content=text_display.content, id=text_display.id, )