a
    Qh_                     @   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   O/var/www/sistema_ama/venv/lib/python3.9/site-packages/weasyprint/layout/flex.pyr      s   r   c	           l      C   sD  ddl m}	 |   d }
|d u }|j| dd ||jd dkO }|pR|jd dk}|jd	 |jd
  }}|r||j|j |j 7 }|jd dkrg }|jd drd\}}nd\}}|j	dkrdn|j	}|j
dkrdn|j
}t||dkrt||}n6|dkr,|j| | |j |j |j |j }nt}t||dkrLt||}n6|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}n6|jdkrR|jdkr@d}n|jd |j }n|j}|dkrhd}n6|jdkr|jdkrd}n|jd |j }n|j}|dkr|| }}n
|| }}|j|j |j }|j	dkr||j	7 }|j|j |j  }|j!dkr||j!7 }t"|D ]\}}|j#s|$ r||_||_t%| } }!||!_&|!||< |jd dkrt|'|! n
|'|! n2|( r|jd d }"| j)}#| j*|" |# '| q|dkr||jf}$n
|j|f}$t||$ |j+rt,| ||$ ||_||_|jd dkr|j}%| } |j | _d| jd< t-dd| jd< t-td| jd< t.| | dd }&d }'t/|t0j1r|j2}(|(3|jd! |jd" \})}*}+|+r|*r|*|+ }'|%dkrt4|%|&|_5n|'d urt4|'|&|_5n|&|_5|jd# dkr
|j}%| } |j | _| jd dkr8t6| | },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rt4|'|&|_8n|&|_8|jd& d'kr d'}.n4t9|jd& |}.|.dkrTt|| }.dkrTd'}.|.d'kr|.|_:|dkr|j|j |_;|j	dkr| j;|j	7  _;|j
dkr| j;|j
7  _;nF|j|j |_;|j!dkr| j;|j!7  _;|jdkrn| j;|j7  _;np|dkr,t6| |dd |_:t6| ||j: |_;nB| } t| _|	7| | ||||||d } | j|_:| < | j |_;|dkr||j:|j; 7 }n||j:|j; 7 }t|d(| }/t|d)| }0t=|/t4|j:|0|_>d }q|dkr|	|| nv|jdkrLd|_d*d+ |D }1t"|1D ]4\}2}| j|j>|j; 7  _|2r| j|7  _qt=|j8t4|j|j?|_g }3g }4d}5t||}6t"||d,D ]\}2}|j#sq|5|j>|j; 7 }5|2|kr|5|7 }5|jd- d.k	r(|5|6k	r(|4	r|3't@|4 |2|fg}4|j>|j; }5n$|4'|2|f |3't@|4 g }4d}5n|4'|2|f q|4	rN|3't@|4 |jd- d/k	rf|3A  |jd d	r|3D ]}4|4A  	q|t||}|3D ]}4tBd0d+ |4D }7|7|k 	rd1}8nd2}8|4D ]n\}}|8d1k	r|jd3 |_C|j:|j>k}9n|jd4 |_C|j:|j>k }9|jCdk
s |9
r0|j>|_Dd5|_End|_E	q|}:t"|4D ]F\}2\}}|jE
rl|:|jD|j; 8 }:n|:|j:|j; 8 }:|2
rF|:|8 }:
qFtFd6d+ |4D sZd};|}<t"|4D ]P\}2\}}|jE
r|<|jD|j; 8 }<n|<|j:|j; 8 }<|;|jC7 };|2
r|<|8 }<
q|;dk r|:|;9 }:|:tkr&tGjH}:|<tkr6tGjH}<|:dkrLtItJ|:nt }=|<dkrhtItJ|<nt }>|=|>k r||:}<|<dkr|4D ]\}}|jEs|j:|_Dqnd}?d}@|4D ]<\}}|jEs|j:|jd4  |_K|?|jK7 }?|@|jd3 7 }@q|4D ]\}}|jEs|8d1kr0|jd3 |@ }A|j:|<|A  |_Dn8|8d2krh|?dkrN|j:|_Dn|jK|? }A|j:|<|A  |_DtL||jD|_Dq|4D ]h\}}d|_M|jEs~t|d(| }/t|d)| }0t=|/t4|jD|0}/|jD|/k r~|/|jD |_M|/|_Dq~tBd7d+ |4D }B|4D ]V\}}|Bdkrd5|_En:|Bdkr6|jMdkr6d5|_En|Bdk r|jMdk rd5|_Eq
q|4D ]&\}}|dkrz|jD|_n|jD|_q^	qg }C|}|3D ]}4t@ }D|4D ]\}}|j!dkrd|_!|jdkrd|_| } |	N| | t |||||g |d \} })})}E})})tO| pd|_P|d$kr>| j|_| j|	Q|E7  _nF|jdkr|t.| |dd }Ft6| |dd }Gt4t=|F| j|G|_n| j|_|D'||f d }q|Dr|C'|D q|C}3t||}HtR|3dkr|Hdkr|H|3d _SnZ|3D ]R}4g }Ig }J|4D ]T\}}|jd8 }K|jd do4d9|Kv o4d|j!|jfv}L|Lr@|In|J'| qd }M}N|ID ].}|jP|j }Ot=|M|O}Mt=|N|< |O }NqZ|M|N }Pd}Q|Jr,t }Q|JD ]}|d$kr|T }R|j!dkr|R|j!7 }R|jdkr|R|j7 }Rn4|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r|3\}4t|d(| }S|Sdkrpt }St|d)| }T|Tdkrt}Tt=|St4|4jS|T|4_S|jd: }Ud|Uv rd;}Ud<|Uv rvd }V|d$kr|jdkr|j}Vn0|dkrt/|t0jVr|jdkr|}Vn|j}V|Vd urv|V}W|WtBd=d+ |3D 8 }W|WtR|3d | 8 }W|Wrv|3D ]}4|4 jS|WtR|3 7  _SqX|jd> }Xd|Xv rd;}X|3D ]}4|4D ]\}}|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rJ|H|j!|j |j  |j |j |j 8 }Hn(|H|j	|j
 |j |j |j |j 8 }HtW|||H qq|dkr|X n|Y }Z|jd? }[d|[v rd@}[|jd drdA|[v rdB}[n.dC|[v rd@}[ndD|[v rdE}[ndF|[v rd,}[|3D ]j}4|Z}\|dkrp|j}]|4D ]B\}}|]|U 8 }]|j	dkrT|]|j	8 }]|j
dkr*|]|j
8 }]q*nN|j}]|4D ]B\}}|]|T 8 }]|j!dkr|]|j!8 }]|jdkrz|]|j8 }]qz|]tR|4d | 8 }]d}^|4D ]f\}}|dkr|j	dkr |^d7 }^|j
dkr>|^d7 }^n(|j!dkr*|^d7 }^|jdkr|^d7 }^q|^r|]|^ }]|4D ]^\}}|dkr|j	dkrx|]|_	|j
dkr|]|_
n$|j!dkr|]|_!|jdkrT|]|_qTd}]|jdG dHkr|dkr|]dI9 }]h dJtZ|[@ r|\|]7 }\nVdK|[v r|\|]dL 7 }\n>dM|[v r.|\|]tR|4 dL 7 }\ndN|[v rL|\|]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 r&|\|]tR|4 7 }\nLdP|[v rTtR|4dkrr|\|]tR|4d  7 }\ndN|[v rf|\|]tR|4d  7 }\qfq|dkr|	|| |d$kr|Y n|X }a|3D ]}4t |4_\|4D ]R\}}|jd8 }Kd|Kv r|X}Kd9|Kv r|dkr|jP|a |_]t=|4j\|j]|4_\q|4j\t kr<|4r6|4d d jPnd|4_\|4D ],\}}|d$kr`|j!|jfn
|j	|j
f}YtBdQdR |YD }b|br|4jS}c|d$kr|c|T 8 }c|j!dkr|c|j!8 }c|jdkr|c|j8 }cn8|c|U 8 }c|j	dkr|c|j	8 }c|j
dkr|c|j
8 }c|cdkrn|c|b }c|d$krH|j!dkr4|c|_!|jdkrl|c|_n$|j	dkrZ|c|_	|j
dkr|c|_
n<|d$kr|j!dkrd|_!|c|_n|j	dkrd|_	|c|_
q@|jd8 }Kd|Kv rd;}Knd|Kv r|X}K|d$krdSndT}dtW||d|a h dUtZ|K@ rF|d$kr*| j|4jS|<  7  _n| j|4jS|[  7  _q@dK|Kv r|d$krx| j|4jS|<  dL 7  _n| j|4jS|[  dL 7  _nd9|Kv r|d$krl| j|4j\|j] 7  _n nd<|Kv r@|j| dkr@|d$kr|j!|j }^n|j	|j
 }^|jdV dWkrV|d$kr:|^|j|j |j  |j 7 }^n|^|j|j |j |j 7 }^t-|4jS|^ d|j|< q@|a|4jS7 }aqt||dkrtBdXd+ |3D }H|HtR|3d | 7 }HtW|||H tR|3dkrzt||}W|WtBdYd+ |3D 8 }W|WtR|3d | 8 }Wd}e|d$krdSndT}ft"|3D ]V\}2}4t^dZd+ |4D }1|2rJ|e|7 }e|1D ] }t||f|e }gtW||f|g qN|Wdkr~q |1D ]}dCdFhtZ|U@ rtW||f|g|W  nndK|Uv rtW||f|g|WdL   nNdM|Uv rtW||f|g|WtR|3 dL   n&dN|Uv rtW||f|g|WtR|3d    qdP|Uv r<|e|WtR|3d  7 }en:dM|Uv rX|e|WtR|3 7 }endN|Uv r |e|WtR|3d  7 }eq |_d[dR |D }|}|3D ]}4|4D ]\}}|j#rd|	jN| |||||||g |d d\d dL \} }h| d u r|
r|
\}i|id8 }ind}i|i| d i}
nLd}|j'|  |hd urX|r4|\}jnd}j|
rL|
\}i|j|i7 }j|j| |hi}
|
rd qld }q|
r q|q|jd dkr|D ]}kt`| |k|||d d] qt/|t0jar|dkr|3r|3d j\nd|_]n4|jD ]&}|b rtO|pd|_] qqd|_]|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       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>  r,   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rB   indexrC   r   r   r   rD   A  s   growshrink	flex_growflex_shrinkTc                 s   s   | ]\}}|j V  qd S r>   )frozenrI   r   r   r   rD   b  r,   c                 s   s   | ]\}}|j V  qd S r>   )
adjustmentrI   r   r   r   rD     r,   
align_selfbaselinealign_content)stretchrT   c                 s   s   | ]}|j V  qd S r>   
cross_sizerB   liner   r   r   rD   7  r,   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(   rA   r   r   r   rD     r,   zspace-betweenc                 S   s   g | ]}|d kqS )r&   r   )rB   marginr   r   r   
<listcomp>  r,   zflex_layout.<locals>.<listcomp>
position_y
position_x>   r   zself-endr\   
box_sizingzcontent-boxc                 s   s   | ]}|j V  qd S r>   rU   rW   r   r   r   rD   7  r,   c                 s   s   | ]}|j V  qd S r>   rU   rW   r   r   r   rD   >  r,   c                 s   s   | ]\}}|j r|V  qd S r>   r?   )rB   _rC   r   r   r   rD   D  r,   c                 S   s   g | ]}|  r|qS r   )is_absolutely_positionedrA   r   r   r   rc   b  r,   )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%   valuere   rd   border_top_widthpadding_top
margin_top	enumerater@   rh   r	   rJ   append
is_runningcurrent_pagerunning_elementsis_table_wrapperr   r   r   
isinstancer   ReplacedBoxreplacementget_intrinsic_sizeminr2   r   block_level_layoutr8   
percentageZflex_base_sizerH   margin_heightmaxrG   r9   r   reversesumZflex_factorZtarget_main_sizerO   allsysmaxsizeintr   Zscaled_flex_shrink_factorr   rP   block_level_layout_switchr   Z	_baselinecollapse_marginlenrV   border_heightborder_widthFlexBoxsetattrcontent_box_xcontent_box_ysetmargin_widthZlower_baselinerR   tuplecopy_with_childrenr
   InlineFlexBoxis_in_normal_flowfinish_flex_formatting_context)lcontextboxbottom_spacerk   containing_blockpage_is_emptyabsolute_boxesfixed_boxesr   r   	resume_atis_startdraw_bottom_decorationr   r   maincrossrv   rw   Zavailable_main_spaceZavailable_cross_space
parent_boxr   Zoriginal_skip_stackskipZchild_skip_stackZmain_gapZ	cross_gapre   rd   rJ   rC   	new_childplaceholderrunning_namern   Zchild_containing_blockZspecified_sizeZcontent_sizeZtransferred_sizeimagerg   intrinsic_heightintrinsic_ratioZnew_child_widthintrinsic_widthr:   Zmin_sizemax_sizeZ
flex_itemsiZ
flex_linesrX   	line_sizeZ	main_sizerG   Zflex_factor_typeZflex_conditionZinitial_free_spaceZunfrozen_factor_sumZremaining_free_spaceZinitial_magnitudeZremaining_magnitudeZscaled_flex_shrink_factors_sumZflex_grow_factors_sumratioZadjustmentsZnew_flex_linesZnew_flex_lineri   r2   r4   rV   Zcollected_itemsZnot_collected_itemsrQ   collectZcross_start_distanceZcross_end_distancerR   Zcollected_cross_sizeZnon_collected_cross_sizeZchild_cross_sizeZmin_cross_sizeZmax_cross_sizerS   Zdefinite_cross_sizeZextra_cross_sizerY   Zcross_marginsZoriginal_position_mainrZ   Zposition_mainZ
free_spacemarginsZgrowthsZmargin_mainZposition_crossZauto_marginsZextra_crossr    Zcross_translater]   Zcurrent_valueZchild_resume_atresume_indexZfirst_level_skipabsolute_boxr   r   r   flex_layout   s   
























































































































































r   )r   r   mathr   r   Zcss.propertiesr   formatting_structurer   ro   r   r1   r	   r
   	preferredr   r   r   tabler   r   listr   r   r   r   r   r   <module>   s   