
    h                     ,   d dl Z d dlmZmZ erddlmZ ddlmZmZm	Z	 ddl
mZ ddlmZ dgZ e j                  d	e j                         Z e j                  d
      ZdZdddee   dddefdZdddee   dddefdZdddedefdZdddedefdZddZy)    N)TYPE_CHECKINGMatch   )BlockParser)BaseRenderer
BlockStateInlineState)InlineParser)Markdownspoilerz
^ {0,3}! ?z^( {0,3}![^\n]*\n)+$z>!\s*(?P<spoiler_text>.+?)\s*!<blockr   mstater   returnc                 J   | j                  ||      \  }}|j                  d      s|dz  }|j                         }|s.t        j	                  |      rt
        j                  d|      }d}nd}|j                  |      }|j                         | j                  dz
  k\  r't        | j                        }|j                  d       n| j                  }| j                  ||       ||j                  d}	|r|j                  |	       |S |j                  |	       |j                   S )N
 block_spoilerblock_quote   typechildren)extract_block_quoteendswithdepth_BLOCK_SPOILER_MATCHmatch_BLOCK_SPOILER_STARTsubchild_statemax_nested_levellistblock_quote_rulesremoveparsetokensprepend_tokenappend_tokencursor)
r   r   r   textend_posr   tok_typechildrulestokens
             V/var/www/html/aiagenthome/venv/lib/python3.12/site-packages/mistune/plugins/spoiler.pyparse_block_spoilerr2      s   --a7MD'== 	KKME)//5#''D1"  d#E{{}..22U,,-]#''	KKu5<<8EE"	u<<    inliner
   r	   c                     |j                  d      }|j                         }||_        | j                  |      }|j	                  d|d       |j                         S )Nspoiler_textinline_spoilerr   )groupcopysrcrenderr)   end)r4   r   r   r+   	new_stater   s         r1   parse_inline_spoilerr>   1   sO    77>"D

IIM}}Y'H	 0hGH557Nr3   rendererr   r+   c                     d|z   dz   S )Nz<div class="spoiler">
z</div>
 r?   r+   s     r1   render_block_spoilerrC   :   s    $t+j88r3   c                     d|z   dz   S )Nz<span class="spoiler">z</span>rA   rB   s     r1   render_inline_spoilerrE   >   s    #d*Y66r3   c                 ^   | j                   j                  ddt               | j                  j                  dt        t
               | j                  r[| j                  j                  dk(  rA| j                  j                  dt               | j                  j                  dt               yyy)a  A mistune plugin to support block and inline spoiler. The
    syntax is inspired by stackexchange:

    .. code-block:: text

        Block level spoiler looks like block quote, but with `>!`:

        >! this is spoiler
        >!
        >! the content will be hidden

        Inline spoiler is surrounded by `>!` and `!<`, such as >! hide me !<.

    :param md: Markdown instance
    r   Nr7   htmlr   )
r   registerr2   r4   INLINE_SPOILER_PATTERNr>   r?   NAMErC   rE   )mds    r1   r   r   B   s~    " HHmT+>?II')?AUV	{{r{{''61
_.BC
-/DE 2{r3   )rK   r   r   N)retypingr   r   block_parserr   corer   r   r	   inline_parserr
   markdownr   __all__compileMr   r   rI   strintr2   r>   rC   rE   r   rA   r3   r1   <module>rW      s    	 '*<<,#+!rzz-6 !rzz"9: ; } s L UX > E#J } Y\ 9> 9 9 97N 7# 7# 7Fr3   