
    ei&                         d Z ddlmc mZ ddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ ddlZh d	Z G d
 de      Z G d de	      Z G d de      Zd Zy)zTabs.    N)toc)Treeprocessor   )Blocktype_boolean   )BlocksExtension>   h1h2h3h4h5h6c                   .     e Zd ZdZ fdZd Zd Z xZS )TabbedTreeprocessorzTab tree processor.c                 t    t         |   |       |d   | _        |d   | _        |d   | _        |d   | _        y)Initialize.alternate_styleslugifycombine_header_slug	separatorN)super__init__	alternater   r   sep)selfmdconfig	__class__s      U/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/pymdownx/blocks/tab.pyr   zTabbedTreeprocessor.__init__   sE     	 12i(#)*?#@ +&    c                     |}|}||urZ|}||   }||v rJ||   }d}t        |      D ]5  }	|	|u r| n-|	|u r ||j                  j                  dd      c S |	|v s4|	}7 ||urZy)z(Attempt retrieval of parent header slug.Nid )listattribget)
r   root
header_map
parent_mapelparentlast_parentheadersheaderis
             r    get_parent_header_slugz*TabbedTreeprocessor.get_parent_header_slug   s     D  K'F#$V,f #ABw6>K'F,>%}}00r::G|!"# D  r!   c                    t               }i }i }| j                  r'|j                         D ci c]  }|D ]  }||  }}}|j                         D ]q  }d|j                  v s| j                  r6|j                  t
        v r$||   }||v r||   j                  |       n|g||<   |j                  |j                  d          s |j                         D ]\  }t        |j                  t              s|j                  j                         dk(  s=|j                  j                  dd      j                         }	d|	v sl| j                  rd|	v s}g }
g }| j                  rt        |      D ]z  }|j                  dk(  r|
j                  |       |j                  dk(  s3|j                  j                  dd      dk(  sSt        |      D cg c]  }|j                  d	k(  s| }}| nQt        |      D ]C  }|j                  dk(  r|
j                  |       |j                  d	k(  s3|j                  |       E t        |
|      D ]  \  }}t!        j"                  t!        j$                  |      | j&                        }t)        j*                  t!        j,                  |            }| j                  r| j/                  ||||      }nd}| j1                  || j2                        }|r|| j2                  z   |z   }t!        j4                  ||      }||j                  d<   ||j                  d
<    _ yc c}}w c c}w )zUpdate tab IDs.r#   divclassr$   
tabbed-setztabbed-alternateinputtabbed-labelslabelforN)setr   iterr&   tagHEADERSappendadd
isinstancestrlowerr'   splitr   r%   zipr   render_inner_htmlremove_fnrefsr   htmlunescape
strip_tagsr1   r   r   unique)r   docused_idsr*   r)   pcr+   r,   classesinputslabelsr0   jinptr8   	innerhtml	innertextparent_slugslugs                       r    runzTabbedTreeprocessor.run-   s    5

##(+
>1A>q!Q$>!>J>((* 	.Bryy ++'0A'^F+"6*11"5.0T
6*RYYt_-	. ((*  	3B"&&#&266<<>U+B))--4::<7*DNNFX\cFcFF~~!%b RA uu/ &a 0 uu~!((,,w2K2^59!W)Q@P!)Q)Q	R "&b 1A uu/ &a 0 uu/ &a 0	1 (+66': 3e$'$9$9#:K:KE:RTXT[T[$\	$(MM#..2K$L	33*.*E*Ec:Wace*fK*,K#||Itxx@&#.#9D#@D"zz$9,0D).2U+3) 	3 ?. *Rs   L7L=#L=)__name__
__module____qualname____doc__r   r1   rX   __classcell__r   s   @r    r   r      s    '(53r!   r   c                   B    e Zd ZdZdZdZdefdefdZd Zd Z	d Z
d	 Zy
)Tabz
    Tabbed container.

    Arguments (1 required):
    - A tab title.

    Options:
    - `new` (boolean): since consecutive tabs are automatically grouped, `new` can force a tab
      to start a new tab container.

    Content:
    Detail body.
    tabTF)newselectc                     | j                   d   | _        t        | j                   d         | _        d| j                  vrd| j                  d<   d| _        y)zHandle initialization.r   r   tab_group_countr   N)r   r   callabler   trackertab_content)r   s    r    on_initzTab.on_init|   sP      ${{+<=I 67 DLL0./DLL*+r!   c                 $    t        |      r|d   S y)z,Return the last child of an `etree` element.N)len)r   r,   s     r    
last_childzTab.last_child   s     v;":r!   c                 >   | j                   | j                  rg|j                  d      D ]G  }|j                  d   }|dk(  s|j	                  d      s)t        |      d   | _          | j                   S  | j                   S t        |      d   | _         | j                   S )z"Adjust where the content is added.r3   r4   tabbed-contentztabbed-content rk   )rh   r   findallr&   
startswithr%   )r   blockdrN   s       r    on_addz
Tab.on_add   s     ###u- A)A,,=N0O+/72;(   $(;r? r!   c                    | j                   d   }| j                   d   }| j                  }| j                  |      }| j                  sdnd}d}d}d}	||j                  j                         dk(  r|j                  j                  dd	      |k(  r|sd
}
|}| j                  rt        |j                  d      d      D cg c]  \  }}|	 c}}d   }|j                  d      D ]2  }|j                  d   dk(  r|}n|j                  d   dk(  r|}	|/|	2 n nd}
| j                  dxx   dz  cc<   t        j                  |d|d| j                  d   z  d      }| j                  r2t        j                  |dddi      }t        j                  |dddi      }	|j                  d   j                  d      }t        |d         }t        |d         dz   }d|z  dd}| j                  s
d||fz  |d<   | j                  s	dd||fz  ini }|
s|rZd|d<   |j                  d      D ]A  }|j                  j                  dd	      d| k(  s&d|j                  v s5|j                  d= C | j                  rbt        j                   d|      }|j#                  ||       t        j                  |d|      }||_        dd i}t        j                  |	d|       nNt        j                  |d|       t        j                  |d|      }||_        t        j                  |dddi       d!||fz  |j                  d<   |S c c}}w )"zCreate the element.rb   rc   r5   ztabbed-set tabbed-alternater   Nr3   r4   r$   Fr6   r   rk   r7   ro   Tre   z%d:0)r4   	data-tabsrv   :z__tabbed_%dradio)nametypez__tabbed_%d_%dr#   r9   checkedry   	__tabbed_r8   ztabbed-blockz%d:%d)optionsargumentrm   r   r<   rB   r&   r'   	enumeraterp   rg   etree
SubElementrC   intr   Elementinserttext)r   r,   	new_grouprc   titlesibling
tabbed_setindexrQ   contentfirst	tab_group_rs   datatab_set	tab_count
attributesattributes2r0   input_ellabr&   s                          r    	on_createzTab.on_create   s    LL'	h'//&))-)=)=\C`
 GKK$5$5$75$@NNw+z9EI##/89J9J79SUV/WX85!XY[\"**51 Axx(O;!"'*.>>"#)g.A ELL*+q0+(($6DLLIZ<[3[\I ##))o.
  **./ ,2237d1g,QL1$	 "G+


 ||/7I2FFJtNRllu.'91EEF`bF$-Jy!&&w/ 088<<+7)/DD AHH,HHY/0
 }}H UH-""C
 CH~.F 
 ""C
 CH- )07I2F(F	%{ Ys    L=N)rY   rZ   r[   r\   NAMEARGUMENTr   OPTIONSri   rm   rt   r    r!   r    r`   r`   e   s?     DH|$,'G

  rr!   r`   c                   (     e Zd ZdZ fdZd Z xZS )TabExtensionzAdmonition Blocks Extension.c                 L    ddgddgddgddgd| _         t        |   |i | y	)
r   Fz$Use alternate style - Default: Falser   z@Slugify function used to create tab specific IDs - Default: NonezHCombine the tab slug with the slug of the parent header - Default: False-zSlug separator - Default: '-')r   r   r   r   N)r   r   r   )r   argskwargsr   s      r    r   zTabExtension.__init__  sF     !&'MN]^$)+u#v>?	
 	$)&)r!   c                     |j                  t        | j                                t        | j	                  d            r8t        || j                               }|j                  j                  |dd       yy)zExtend Markdown blocks.r   	tab_slugs   N)registerr`   
getConfigsrf   	getConfigr   treeprocessors)r   r   	block_mgrslugss       r    extendMarkdownBlocksz!TabExtension.extendMarkdownBlocks#  s\     	3 12DNN9-.'DOO,=>E&&uk1= /r!   )rY   rZ   r[   r\   r   r   r]   r^   s   @r    r   r     s    &
*>r!   r   c                      t        | i |S )zReturn extension.)r   )r   r   s     r    makeExtensionr   ,  s     (((r!   )r\   xml.etree.ElementTreer   ElementTreemarkdown.extensionsr   markdown.treeprocessorsr   rr   r   r   blocksr	   rG   r=   r   r`   r   r   r   r!   r    <module>r      sQ     % % # 1 & $ 
.V3- V3rl% l^>? >0)r!   