# Path: draftjs_exporter/constants.py
# class BLOCK_TYPES:
#     UNSTYLED = "unstyled"
#     HEADER_ONE = "header-one"
#     HEADER_TWO = "header-two"
#     HEADER_THREE = "header-three"
#     HEADER_FOUR = "header-four"
#     HEADER_FIVE = "header-five"
#     HEADER_SIX = "header-six"
#     UNORDERED_LIST_ITEM = "unordered-list-item"
#     ORDERED_LIST_ITEM = "ordered-list-item"
#     BLOCKQUOTE = "blockquote"
#     PRE = "pre"
#     CODE = "code-block"
#     ATOMIC = "atomic"
#     # Special type to configure handling of missing components.
#     FALLBACK = "fallback"
# 
# ENTITY_TYPES = Enum(
#     "LINK",
#     "DOCUMENT",
#     "IMAGE",
#     "EMBED",
#     "HORIZONTAL_RULE",
#     # Special type to configure handling of missing components.
#     "FALLBACK",
# )
# 
# INLINE_STYLES = Enum(
#     "BOLD",
#     "CODE",
#     "ITALIC",
#     "UNDERLINE",
#     "STRIKETHROUGH",
#     "SUPERSCRIPT",
#     "SUBSCRIPT",
#     "MARK",
#     "QUOTATION",
#     "SMALL",
#     "SAMPLE",
#     "INSERT",
#     "DELETE",
#     "KEYBOARD",
#     # Special type to configure handling of missing components.
#     "FALLBACK",
# )
# 
# Path: draftjs_exporter/error.py
# class ConfigException(ExporterException):
#     pass
# 
# Path: draftjs_exporter/types.py
# HTML = str


from typing import Any, Dict, Optional
from draftjs_exporter.constants import BLOCK_TYPES, ENTITY_TYPES, INLINE_STYLES
from draftjs_exporter.error import ConfigException
from draftjs_exporter.types import ConfigMap, Props, RenderableType


# Internal equivalent of a ConfigMap.
OptionsMap = Dict[str, "Options"]


class Options(object):
    """
    Facilitates querying configuration from a config map.
    """

    __slots__ = ("type", "element", "props", "wrapper", "wrapper_props")

    def __init__(
        self,
        type_: str,

# Path: draftjs_exporter/constants.py
# class BLOCK_TYPES:
#     UNSTYLED = "unstyled"
#     HEADER_ONE = "header-one"
#     HEADER_TWO = "header-two"
#     HEADER_THREE = "header-three"
#     HEADER_FOUR = "header-four"
#     HEADER_FIVE = "header-five"
#     HEADER_SIX = "header-six"
#     UNORDERED_LIST_ITEM = "unordered-list-item"
#     ORDERED_LIST_ITEM = "ordered-list-item"
#     BLOCKQUOTE = "blockquote"
#     PRE = "pre"
#     CODE = "code-block"
#     ATOMIC = "atomic"
#     # Special type to configure handling of missing components.
#     FALLBACK = "fallback"
# 
# ENTITY_TYPES = Enum(
#     "LINK",
#     "DOCUMENT",
#     "IMAGE",
#     "EMBED",
#     "HORIZONTAL_RULE",
#     # Special type to configure handling of missing components.
#     "FALLBACK",
# )
# 
# INLINE_STYLES = Enum(
#     "BOLD",
#     "CODE",
#     "ITALIC",
#     "UNDERLINE",
#     "STRIKETHROUGH",
#     "SUPERSCRIPT",
#     "SUBSCRIPT",
#     "MARK",
#     "QUOTATION",
#     "SMALL",
#     "SAMPLE",
#     "INSERT",
#     "DELETE",
#     "KEYBOARD",
#     # Special type to configure handling of missing components.
#     "FALLBACK",
# )
# 
# Path: draftjs_exporter/error.py
# class ConfigException(ExporterException):
#     pass
# 
# Path: draftjs_exporter/types.py
# HTML = str


# Path: draftjs_exporter/options.py
from typing import Any, Dict, Optional
from draftjs_exporter.constants import BLOCK_TYPES, ENTITY_TYPES, INLINE_STYLES
from draftjs_exporter.error import ConfigException
from draftjs_exporter.types import ConfigMap, Props, RenderableType



# Internal equivalent of a ConfigMap.
OptionsMap = Dict[str, "Options"]


class Options(object):
    """
    Facilitates querying configuration from a config map.
    """

    __slots__ = ("type", "element", "props", "wrapper", "wrapper_props")

    def __init__(
        self,
        type_: str,

        element: RenderableType,