o
    ½ÙøiA  ã                   @   s>   d Z ddlmZ ddlmZ G dd„ dƒZdd„ Zdd	„ Zd
S )zStacking contexts management.é   )Úboxes)ÚAbsolutePlaceholderc                   @   s2   e Zd ZdZdd„ Zedd„ ƒZed	dd„ƒZdS )
ÚStackingContextz©Stacking contexts define the paint order of all pieces of a document.

    https://www.w3.org/TR/CSS21/visuren.html#x43
    https://www.w3.org/TR/CSS21/zindex.html

    c                 C   s¾   || _ || _|| _|| _g | _g | _g | _|| _|D ] }|jdk r(| j 	|¡ q|jdkr4| j 	|¡ q| j 	|¡ q| jj
dd„ d� | jj
dd„ d� |jd | _| jdkr]d| _d S d S )Né    c                 S   ó   | j S ©N©Úz_index©Úcontext© r   ú`/home/develop/edictos_py/central_edictos/env/lib/python3.10/site-packages/weasyprint/stacking.pyÚ<lambda>    ó    z*StackingContext.__init__.<locals>.<lambda>)Úkeyc                 S   r   r   r   r
   r   r   r   r   !   r   r	   Úauto)ÚboxÚpageÚblock_level_boxesÚfloat_contextsÚnegative_z_contextsÚzero_z_contextsÚpositive_z_contextsÚblocks_and_cellsr	   ÚappendÚsortÚstyle)Úselfr   Úchild_contextsÚblocksÚfloatsr   r   r   r   r   r   Ú__init__   s(   



ÿzStackingContext.__init__c                    s2   ‡ ‡fdd„ˆj D ƒ}ˆ g ¡‰ˆ ˆ|g g i ˆƒS )Nc                    s   g | ]}ˆ   |ˆ¡‘qS r   )Úfrom_box)Ú.0Úchild©Úclsr   r   r   Ú
<listcomp>-   s    z-StackingContext.from_page.<locals>.<listcomp>)ÚchildrenÚcopy_with_children)r&   r   r   r   r%   r   Ú	from_page)   s   
zStackingContext.from_pageNc                 C   s@   g }|d u r|}g }g }i }t ||||||ƒ}| ||||||ƒS r   )Ú_dispatch_children)r&   r   r   r   r(   r   r    r   r   r   r   r"   2   s   ÿzStackingContext.from_boxr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r!   Úclassmethodr*   r"   r   r   r   r   r      s    
r   c                 C   s’  t | tƒr| j} | j}|d dkr|d dkp/| jo|d dkp/|d dk p/|d p/|d d	k}|r=| t | |¡¡ d S tj	tj
tjf}|d dkrf|d dksSJ ‚t|ƒ}	t | ||¡}
| |	|
¡ d S |  ¡ rv| t | ||¡¡ d S t | |ƒr‚t | ||¡S t | tjƒr£t|ƒ}i }t| |||||ƒ} | || ¡ ||| < | S t | tjƒrºi }t| |||||ƒ} ||| < | S d }d }t| |||||ƒ} | S )
NÚpositionÚstaticr	   r   Úopacityr   Ú	transformÚoverflowÚvisible)Ú
isinstancer   Ú_boxr   Úis_grid_itemr   r   r"   r   ÚInlineBlockBoxÚInlineFlexBoxÚInlineGridBoxÚlenÚinsertÚ
is_floatedÚBlockLevelBoxr+   ÚTableCellBox)r   r   r   r   r    r   r   Údefines_stacking_contextÚstacking_classesÚindexÚstacking_contextÚblocks_indexÚbox_blocks_and_cellsr   r   r   Ú	_dispatchE   s^   
ÿ
þý
û
ÿõÿûÿrH   c           	      C   sN   t | tjƒs| S g }| jD ]}t||||||ƒ}|d ur!| |¡ q|  |¡S r   )r7   r   Ú	ParentBoxr(   rH   r   r)   )	r   r   r   r   r    r   Únew_childrenr$   Úresultr   r   r   r+   y   s   
ÿ
€
r+   N)r/   Úformatting_structurer   Úlayout.absoluter   r   rH   r+   r   r   r   r   Ú<module>   s    >4