o
    Zh0h                     @   s   d Z ddlZddlmZmZ ddlmZ ddlmZ ddl	m
Z
 dd	lmZmZ dd
lmZmZmZ ddlmZmZ G dd deZdd ZdS )z*Layout for flex containers and flex-items.    N)inflog10   )	Dimension)boxes   )percent)AbsolutePlaceholderabsolute_layout)max_content_widthmin_content_widthmin_max)find_in_flow_baselinetable_wrapper_widthc                   @   s   e Zd ZdZdS )FlexLinezFlex container line.N)__name__
__module____qualname____doc__ r   r   L/var/www/html/rh/venv/lib/python3.10/site-packages/weasyprint/layout/flex.pyr      s    r   c	           l      C   s  ddl m}	 |   d }
|d u }|j| dd ||jd dkO }|p)|jd dk}|jd	 |jd
 }}|rB||j|j |j 7 }|jd dkrKg }|jd drXd\}}nd\}}|j	dkrcdn|j	}|j
dkrmdn|j
}t||dkr}t||}n|dkr|j| | |j |j |j |j }nt}t||dkrt||}n|dkr|j| | |j |j |j |j }nt}| }t|| |	|| t|jdd d}|}|d ur| \\}}|jd dr|d |d  }n||d  }|}nd\}}|}|dkrd}n|jdkr$|jdkrd}n|jd |j }n|j}|dkr/d}n|jdkrG|jdkr>d}n|jd |j }n|j}|dkrU||}}n||}}|j|j |j }|j	dkrn||j	7 }|j|j |j  }|j!dkr||j!7 }t"|D ]u\}}|j#s|$ r||_||_t%| } }!||!_&|!||< |jd dkr|'|! n|'|! n|( r|jd d }"| j)}#| j*|" |# '| q|dkr||jf}$n|j|f}$t||$ |j+rt,| ||$ ||_||_|jd dkrm|j}%| } |j | _d| jd< t-dd| jd< t-td| jd< t.| | dd }&d }'t/|t0j1rR|j2}(|(3|jd! |jd" \})}*}+|+rR|*rR|*|+ }'|%dkr^t4|%|&|_5n|'d urjt4|'|&|_5n|&|_5|jd# dkr |j}%| } |j | _| jd dkrt6| | },t-|,d| jd< d| jd$< t-dd| jd#< t-td| jd%< |	7| | ||||d } | r| jnd}&d }'t/|t0j1r|j2}(|(3|jd! |jd" \}-})}+|+r|-r|-|+ }'|%dkrt4|%|&|_8n|'d urt4|'|&|_8n|&|_8|jd& d'krd'}.nt9|jd& |}.|.dkr%t|| }.dkr%d'}.|.d'kr|.|_:|dkr\|j|j |j |j |_;|j	dkrM| j;|j	7  _;|j
dkr[| j;|j
7  _;nm|j|j |j  |j |_;|j!dkrw| j;|j!7  _;|jdkr| j;|j7  _;nC	 |dkrt6| |dd |_:t6| ||j: |_;n+| } t| _|	7| | ||||||d } | r| j|_:| < | j |_;nd |_:|_;|dkr||j:|j; 7 }n||j:|j; 7 }t|d(| }/t|d)| }0t=|/t4|j:|0|_>d }q|dkr	|	|| n;|jdkr8d|_d*d+ |D }1t"|1D ]\}2}| j|j>|j; 7  _|2r6| j|7  _qt=|j8t4|j|j?|_g }3g }4d}5t||}6t"||d,D ][\}2}|j#s_qU|5|j>|j; 7 }5|2|krp|5|7 }5|jd- d.kr|5|6kr|4r|3't@|4 |2|fg}4|j>|j; }5qU|4'|2|f |3't@|4 g }4d}5qU|4'|2|f qU|4r|3't@|4 |jd- d/kr|3A  |jd dr|3D ]}4|4A  qt||}|3D ]}4tBd0d+ |4D }7|7|k rd1}8nd2}8|4D ]8\}}|8d1kr|jd3 |_C|j:|j>k}9n|jd4 |_C|j:|j>k }9|jCdks$|9r-|j>|_Dd5|_Eqd|_Eq|}:t"|4D ]#\}2\}}|jErK|:|jD|j; 8 }:n|:|j:|j; 8 }:|2rZ|:|8 }:q8tFd6d+ |4D sd};|}<t"|4D ](\}2\}}|jEr|<|jD|j; 8 }<n|<|j:|j; 8 }<|;|jC7 };|2r|<|8 }<qn|;dk r|:|;9 }:|:tkrtGjH}:|<tkrtGjH}<|:dkrtItJ|:nt }=|<dkrtItJ|<nt }>|=|>k r|:}<|<dkr|4D ]\}}|jEs|j:|_Dqnid}?d}@|4D ]\}}|jEs|j:|jd4  |_K|?|jK7 }?|@|jd3 7 }@q|4D ]A\}}|jEsP|8d1kr-|jd3 |@ }A|j:|<|A  |_Dn|8d2krI|?dkr<|j:|_Dn|jK|? }A|j:|<|A  |_DtL||jD|_Dq|4D ]4\}}d|_M|jEst|d(| }/t|d)| }0t=|/t4|jD|0}/|jD|/k r|/|jD |_M|/|_DqTtBd7d+ |4D }B|4D ]-\}}|Bdkrd5|_Eq|Bdkr|jMdkrd5|_Eq|Bdk r|jMdk rd5|_EqtFd6d+ |4D rf|4D ]\}}|dkr|jD|_q|jD|_qΐqg }C|}|3D ]}4t@ }D|4D ]y\}}|j!dkrd|_!|jdkrd|_| } |	N| | t |||||g |d \} })})}E})})tO| p(d|_P|d$kr>| j|_| j|	Q|E7  _n#|jdkr]t.| |dd }Ft6| |dd }Gt4t=|F| j|G|_n| j|_|D'||f d }q|Drt|C'|D q|C}3t||}HtR|3dkr|Hdkr|H|3d _Sn|3D ]}4g }Ig }J|4D ]*\}}|jd8 }K|jd dod9|Kv od|j!|jfv}L|Lr|In|J'| qd }M}N|ID ]}|jP|j }Ot=|M|O}Mt=|N|< |O }Nq|M|N }Pd}Q|Jr3t }Q|JD ]B}|d$kr|T }R|j!dkr|R|j!7 }R|jdkr|R|j7 }Rn|U }R|j	dkr!|R|j	7 }R|j
dkr,|R|j
7 }Rt=|R|Q}Qqt=|P|Q|4_SqtR|3dkrn|3\}4t|d(| }S|SdkrUt }St|d)| }T|Tdkrdt}Tt=|St4|4jS|T|4_S|jd: }Ud|Uv rzd;}Ud<|Uv rd }V|d$kr|jdkr|j}Vn|dkrt/|t0jVr|jdkr|}Vn|j}V|Vd ur|V}W|WtBd=d+ |3D 8 }W|WtR|3d | 8 }W|Wr|3D ]}4|4 jS|WtR|3 7  _Sq|jd> }Xd|Xv rd;}X|3D ]y}4|4D ]s\}}|jd8 }Kd|Kv rd;}Knd|Kv 	r|X}Kd<|Kv 	r\|j| dk	r\|d$k	r|j!|jfn|j	|j
f}Yd|Yv	r\|4jS}H|d$k	rB|H|j!|j |j  |j |j |j 8 }Hn|H|j	|j
 |j |j |j |j 8 }HtW|||H qq|dk	ri|X n|Y }Z|jd? }[d|[v 	ryd@}[|jd d	rdA|[v 	rdB}[ndC|[v 	rd@}[ndD|[v 	rdE}[ndF|[v 	rd,}[|3D ]}4|Z}\|dk	r|j}]|4D ]!\}}|]|U 8 }]|j	dk	r|]|j	8 }]|j
dk	r|]|j
8 }]	qn'|j}]|4D ]!\}}|]|T 8 }]|j!dk	r|]|j!8 }]|jdk	r|]|j8 }]	q|]tR|4d | 8 }]d}^|4D ]4\}}|dk
r)|j	dk
r|^d7 }^|j
dk
r'|^d7 }^
q
|j!dk
r3|^d7 }^|jdk
r=|^d7 }^
q
|^
r{|]|^ }]|4D ]0\}}|dk
re|j	dk
rZ|]|_	|j
dk
rc|]|_

qH|j!dk
rn|]|_!|jdk
rw|]|_
qHd}]|jdG dHk
r|dk
r|]dI9 }]h dJtZ|[@ 
r|\|]7 }\n+dK|[v 
r|\|]dL 7 }\ndM|[v 
r|\|]tR|4 dL 7 }\ndN|[v 
r|\|]tR|4d  7 }\tBdOd+ |D }_t"|4D ]\}2\}}|2
r|\|7 }\|dk
r|\|_d<|[v 
r|_
r| j|]|jd3  |_ 7  _n|\|_|dkr
|[ n|< }`|jdG dHkr|dkr|`dI9 }`|\|`7 }\dM|[v r2|\|]tR|4 7 }\
qdP|[v rJtR|4dkrH|\|]tR|4d  7 }\
qdN|[v rY|\|]tR|4d  7 }\
qҐ	q|dkrh|	|| |d$krq|Y n|X }a|3D ]}4t |4_\|4D ])\}}|jd8 }Kd|Kv r|X}Kd9|Kv r|dkr|jP|a |_]t=|4j\|j]|4_\q|4j\t kr|4r|4d d jPnd|4_\|4D ]\}}|d$kr|j!|jfn|j	|j
f}YtBdQdR |YD }b|brz|4jS}c|d$kr|c|T 8 }c|j!dkr|c|j!8 }c|jdkr|c|j8 }cn|c|U 8 }c|j	dkr|c|j	8 }c|j
dkr#|c|j
8 }c|cdkrY|c|b }c|d$krE|j!dkr:|c|_!|jdkrC|c|_q|j	dkrN|c|_	|j
dkrW|c|_
q|d$krl|j!dkrgd|_!|c|_q|j	dkrud|_	|c|_
q|jd8 }Kd|Kv rd;}Knd|Kv r|X}K|d$krdSndT}dtW||d|a h dUtZ|K@ r|d$kr| j|4jS|<  7  _q| j|4jS|[  7  _qdK|Kv r|d$kr| j|4jS|<  dL 7  _q| j|4jS|[  dL 7  _qd9|Kv r|d$kr| j|4j\|j] 7  _q	 qd<|Kv r_|j| dkr_|d$kr$|j!|j }^n|j	|j
 }^|jdV dWkrT|d$krF|^|j|j |j  |j 7 }^n|^|j|j |j |j 7 }^t-|4jS|^ d|j|< q|a|4jS7 }aqwt||dkrtBdXd+ |3D }H|HtR|3d | 7 }HtW|||H tR|3dkrjt||}W|WtBdYd+ |3D 8 }W|WtR|3d | 8 }Wd}e|d$krdSndT}ft"|3D ]\}2}4t^dZd+ |4D }1|2r|e|7 }e|1D ]}t||f|e }gtW||f|g q|Wdkrq|1D ]O}dCdFhtZ|U@ rtW||f|g|W  qdK|Uv rtW||f|g|WdL   qdM|Uv r$tW||f|g|WtR|3 dL   qdN|Uv r7tW||f|g|WtR|3d    qdP|Uv rJ|e|WtR|3d  7 }eqdM|Uv rY|e|WtR|3 7 }eqdN|Uv rh|e|WtR|3d  7 }eq|_d[dR |D }|}|3D ]p}4|4D ]e\}}|j#r|	jN| |||||||g |d d\d dL \} }h| d u r|
r|
\}i|id8 }ind}i|i| d i}
n&d}|j'|  |hd ur|r|\}jnd}j|
r|
\}i|j|i7 }j|j| |hi}
|
r nd }q||
r nqx|jd dkr|D ]}kt`| |k|||d d] qt/|t0jar2|dkr|3r|3d j\nd|_]n|jD ]}|b r-tO|p)d|_] nqd|_]|jd|
o:| d | c| ||
d^d d_g dfS )`Nr   )blockF)startendcontinuediscardbox_decoration_breakclonerow_gap
column_gappositionrelativeflex_directionrow)widthheight)r%   r$   autor   r$   c                 S   s
   | j d S )Norderstyle)itemr   r   r   <lambda>X   s   
 zflex_layout.<locals>.<lambda>)keyz-reverse)r   Nnormal%d   absolute	min_widthpx	max_width)outerimage_resolution	font_size
min_heightr%   
max_height
flex_basiscontentmin_max_c                 s   s    | ]}|j r|V  qd S Nis_flex_item.0childr   r   r   	<genexpr>      zflex_layout.<locals>.<genexpr>)r   	flex_wrapnowrapzwrap-reversec                 s   s     | ]\}}|j |j V  qd S r=   )hypothetical_main_sizemain_outer_extrarA   indexrB   r   r   r   rC   G  s
    

growshrink	flex_growflex_shrinkTc                 s       | ]\}}|j V  qd S r=   )frozenrI   r   r   r   rC   h  rD   c                 s   rO   r=   )
adjustmentrI   r   r   r   rC     rD   
align_selfbaselinealign_content)stretchrU   c                 s       | ]}|j V  qd S r=   
cross_sizerA   liner   r   r   rC   =      align_itemsjustify_content)
flex-startr^   )flex-endr_   r   )r   r   	directionrtl>   r   rightr_   centerr   zspace-aroundzspace-evenlyc                 s   s    | ]}|j d  V  qdS )rM   Nr(   r@   r   r   r   rC     rD   zspace-betweenc                 S   s   g | ]}|d kqS )r&   r   )rA   marginr   r   r   
<listcomp>  s    zflex_layout.<locals>.<listcomp>
position_y
position_x>   self-endr   r_   
box_sizingzcontent-boxc                 s   rV   r=   rW   rY   r   r   r   rC   =  r[   c                 s   rV   r=   rW   rY   r   r   r   rC   D  r[   c                 s   s    | ]
\}}|j r|V  qd S r=   r>   )rA   _rB   r   r   r   rC   J  s    c                 S   s   g | ]}|  r|qS r   )is_absolutely_positionedr@   r   r   r   rf   h  s    )adjoining_marginsr   	max_lines)
skip_stackany)breakpage)d r   create_flex_formatting_contextremove_decorationr)   padding_bottomborder_bottom_widthmargin_bottom
startswithmargin_leftmargin_rightgetattrr$   padding_leftpadding_rightborder_left_widthborder_right_widthr   copyr   resolve_percentagesblock_level_widthsortedchildrenitemsendswithunitr%   valuerh   rg   border_top_widthpadding_top
margin_top	enumerater?   rl   r	   rJ   append
is_runningcurrent_pagerunning_elementsis_table_wrapperr   r   r   
isinstancer   ReplacedBoxreplacementget_intrinsic_sizeminr1   r   block_level_layoutr7   
percentageflex_base_sizerH   margin_heightmaxrG   r8   r   reversesumflex_factortarget_main_sizerP   allsysmaxsizeintr   scaled_flex_shrink_factorr   rQ   block_level_layout_switchr   	_baselinecollapse_marginlenrX   border_heightborder_widthFlexBoxsetattrcontent_box_xcontent_box_ysetmargin_widthlower_baselinerS   tuplecopy_with_childrenr
   InlineFlexBoxis_in_normal_flowfinish_flex_formatting_context)lcontextboxbottom_spacero   containing_blockpage_is_emptyabsolute_boxesfixed_boxesr   r   	resume_atis_startdraw_bottom_decorationr   r   maincrossrz   r{   available_main_spaceavailable_cross_space
parent_boxr   original_skip_stackskipchild_skip_stackmain_gap	cross_gaprh   rg   rJ   rB   	new_childplaceholderrunning_namerr   child_containing_blockspecified_sizecontent_sizetransferred_sizeimagerk   intrinsic_heightintrinsic_rationew_child_widthintrinsic_widthr9   min_sizemax_size
flex_itemsi
flex_linesrZ   	line_size	main_sizerG   flex_factor_typeflex_conditioninitial_free_spaceunfrozen_factor_sumremaining_free_spaceinitial_magnituderemaining_magnitudescaled_flex_shrink_factors_sumflex_grow_factors_sumratioadjustmentsnew_flex_linesnew_flex_linerm   r1   r3   rX   collected_itemsnot_collected_itemsrR   collectcross_start_distancecross_end_distancerS   collected_cross_sizenon_collected_cross_sizechild_cross_sizemin_cross_sizemax_cross_sizerT   definite_cross_sizeextra_cross_sizer\   cross_marginsoriginal_position_mainr]   position_main
free_spacemarginsgrowthsmargin_mainposition_crossauto_marginsextra_crossr    cross_translater`   current_valuechild_resume_atresume_indexfirst_level_skipabsolute_boxr   r   r   flex_layout   sV  






















































\








































































 






















r  )r   r   mathr   r   css.propertiesr   formatting_structurer   rs   r   r0   r	   r
   	preferredr   r   r   tabler   r   listr   r  r   r   r   r   <module>   s    