a
    ¥Q•hü  ã                   @   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 rP| j 	|¡ q4|jdkrh| j 	|¡ q4| j 	|¡ q4| jj
dd„ d� | jj
dd„ d� |jd | _| jdkr¶d| _d S )Né    c                 S   s   | j S ©N©Úz_index©Úcontext© r   úL/var/www/sistema_ama/venv/lib/python3.9/site-packages/weasyprint/stacking.pyÚ<lambda>    ó    z*StackingContext.__init__.<locals>.<lambda>)Úkeyc                 S   s   | j S 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 g ˆƒS )Nc                    s   g | ]}ˆ   |ˆ¡‘qS r   )Úfrom_box)Ú.0Úchild©Úclsr   r   r   Ú
<listcomp>-   r   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 }g }t ||||||ƒ}| ||||||ƒS r   )Ú_dispatch_children)r%   r   r   r   r'   r   r   r   r   r   r   r!   2   s    ÿzStackingContext.from_box)N)Ú__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r@|d dkp^|d dk p^|d p^|d d	k}|rz| t | |¡¡ d S tj	tj
tjf}|d dkrÊ|d dks¦J ‚t|ƒ}	t | ||¡}
| |	|
¡ n¾|  ¡ rè| t | ||¡¡ n t | |ƒ�rt | ||¡S t | tjƒ�r"t|ƒ}t|ƒ}n$t | tjƒ�r>d }t|ƒ}nd }d }t| |||||ƒ} |d u�rn| || ¡ |d u�r„| || ¡ | S d S )
NÚpositionÚstaticr   r   Úopacityr   Ú	transformÚoverflowÚvisible)Ú
isinstancer   Ú_boxr   Úis_grid_itemr   r   r!   r   ÚInlineBlockBoxÚInlineFlexBoxÚInlineGridBoxÚlenÚinsertÚ
is_floatedÚBlockLevelBoxÚTableCellBoxr*   )r   r   r   r   r   r   r   Zdefines_stacking_contextZstacking_classesÚindexÚstacking_contextZblocks_indexZblocks_and_cells_indexr   r   r   Ú	_dispatchE   sR    
ÿ
þý
û

ÿ

rC   c           	      C   sN   t | tjƒs| S g }| jD ](}t||||||ƒ}|d ur| |¡ q|  |¡S r   )r6   r   Ú	ParentBoxr'   rC   r   r(   )	r   r   r   r   r   r   Únew_childrenr#   Úresultr   r   r   r*   z   s    
ÿr*   N)r.   Úformatting_structurer   Zlayout.absoluter   r   rC   r*   r   r   r   r   Ú<module>   s
   >5