from pyodide_mkdocs_theme.pyodide_macros import (
    PyodideMacrosPlugin,
    Msg, MsgPlural, TestsToken, Tip,
)

def define_env(env:PyodideMacrosPlugin):

    env.lang.overload({
        "tests": TestsToken("\n# Tests"),
    })


    #-------------------------------------


    inserted_cdn = set()
    CDN = '''<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" integrity="sha512-SnH5WK+bZxgPHs44uWIX+LLJAJ9/2PkPKZ5QiAj6Ta86w+fsb2TkcmfRyVX3pBnMFcV7oQPJkl9QevSCWr3W6A==" crossorigin="anonymous" referrerpolicy="no-referrer" />'''

    def cdn_if_not_already_in_page():
        page = env.page.file.src_uri
        if page in inserted_cdn:
            return ""
        inserted_cdn.add(page)
        return CDN


    @env.macro
    def figure(id:str, kls:str="", admo='!!!'):
        code = f"""
{admo} tip "Votre figure"
    <div id="{id}" class="center mat-plt-figure{ kls and ' '+kls }">Votre tracé sera ici</div>
    { cdn_if_not_already_in_page() }
"""
        indent = env.get_macro_indent()
        if indent:
            code = code.replace('\n', '\n'+indent)