Source code for bootlace.breadcrumbs

from collections.abc import Callable
from collections.abc import Iterator
from typing import Protocol
from typing import TypeVar

import attrs
from dominate import tags
from dominate.dom_tag import dom_tag
from dominate.util import text
from flask import Blueprint
from flask import current_app
from flask import Flask
from flask import request
from werkzeug.local import LocalProxy

from .util import as_tag
from .util import Tag
from bootlace.endpoint import Endpoint

__all__ = [
    "breadcrumbs",
    "Breadcrumb",
    "Breadcrumbs",
    "BreadcrumbEntry",
    "BreadcrumbExtension",
]


class Named(Protocol):

    __name__: str


V = TypeVar("V", bound=Named)

EXTENSION_KEY: str = "bootlace.breadcrumbs"
DIVIDER_SETTING: str = "BOOTLACE_BREADCRUMBS_DIVIDER"










@attrs.define
class BreadcrumbEntry:
    """A single entry in the breadcrumbs datastructure"""

    title: str
    parent: Endpoint | None






breadcrumbs: BreadcrumbExtension = LocalProxy(lambda: current_app.extensions[EXTENSION_KEY])  # type: ignore