o
    Zh0h                     @   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 )
StackingContextzStacking 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   I/var/www/html/rh/venv/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 g 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 }g }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 | |rt| ||S t | tjrt|}t|}nt | tjrd }t|}nd }d }t| |||||} |d ur|||  |d ur|||  | 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   defines_stacking_contextstacking_classesindexstacking_contextblocks_indexblocks_and_cells_indexr   r   r   	_dispatchE   sR   





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+   z   s   


r+   N)r/   formatting_structurer   layout.absoluter   r   rH   r+   r   r   r   r   <module>   s    >5