a
    [Xh                     @   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   [/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/weasyprint/layout/flex.pyr      s   r   c	           l      C   sp  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 |j |_;|j	dkr| j;|j	7  _;|j
dkr| j;|j
7  _;nR|j|j |j  |j |_;|j!dkr| j;|j!7  _;|jdkr| j;|j7  _;n|dkrDt6| |dd |_:t6| ||j: |_;nV| } 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|	|| nv|jdkrxd|_d*d+ |D }1t"|1D ]4\}2}| j|j>|j; 7  _|2rB| j|7  _qBt=|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	rT|5|6k	rT|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	rz|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 ]n\}}|8d1k
r"|jd3 |_C|j:|j>k}9n|jd4 |_C|j:|j>k }9|jCdk
sL|9
r\|j>|_Dd5|_End|_E	q|}:t"|4D ]F\}2\}}|jE
r|:|jD|j; 8 }:n|:|j:|j; 8 }:|2
rr|:|8 }:
qrtFd6d+ |4D sd};|}<t"|4D ]P\}2\}}|jEr|<|jD|j; 8 }<n|<|j:|j; 8 }<|;|jC7 };|2
r|<|8 }<
q|;dk rB|:|;9 }:|:tkrRtGjH}:|<tkrbtGjH}<|:dkrxtItJ|:nt }=|<dkrtItJ|<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r\|jd3 |@ }A|j:|<|A  |_Dn8|8d2kr|?dkrz|j:|_Dn|jK|? }A|j:|<|A  |_DtL||jD|_Dq"|4D ]h\}}d|_M|jEst|d(| }/t|d)| }0t=|/t4|jD|0}/|jD|/k r|/|jD |_M|/|_DqtBd7d+ |4D }B|4D ]V\}}|BdkrDd5|_En:|Bdkrb|jMdkrbd5|_En|Bdk r*|jMdk r*d5|_Eq*
q|4D ]&\}}|dkr|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rj| j|_| j|	Q|E7  _nF|jdkrt.| |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o`d9|Kv o`d|j!|jfv}L|Lrl|In|J'| q$d }M}N|ID ].}|jP|j }Ot=|M|O}Mt=|N|< |O }Nq|M|N }Pd}Q|JrXt }Q|JD ]}|d$kr|T }R|j!dkr|R|j!7 }R|jdkrJ|R|j7 }Rn4|U }R|j	dkr4|R|j	7 }R|j
dkrJ|R|j
7 }Rt=|R|Q}Qqt=|P|Q|4_SqtR|3dkr|3\}4t|d(| }S|Sdkrt }St|d)| }T|Tdkrt}Tt=|St4|4jS|T|4_S|jd: }Ud|Uv rd;}Ud<|Uv rd }V|d$kr|jdkr|j}Vn0|dkrBt/|t0jVrB|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 ]}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rv|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r4dA|[v rdB}[n.dC|[v rd@}[ndD|[v r&dE}[ndF|[v r4d,}[|3D ]j}4|Z}\|dkr|j}]|4D ]B\}}|]|U 8 }]|j	dkr|]|j	8 }]|j
dkrV|]|j
8 }]qVnN|j}]|4D ]B\}}|]|T 8 }]|j!dkr|]|j!8 }]|jdkr|]|j8 }]q|]tR|4d | 8 }]d}^|4D ]f\}}|dkrB|j	dkr,|^d7 }^|j
dkrj|^d7 }^n(|j!dkrV|^d7 }^|jdkr|^d7 }^q|^r|]|^ }]|4D ]^\}}|dkr|j	dkr|]|_	|j
dkr|]|_
n$|j!dkr|]|_!|jdkr|]|_qd}]|jdG dHkr|dkr|]dI9 }]h dJtZ|[@ r"|\|]7 }\nVdK|[v r:|\|]dL 7 }\n>dM|[v rZ|\|]tR|4 dL 7 }\ndN|[v rx|\|]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 rR|\|]tR|4 7 }\nLdP|[v rtR|4dkr|\|]tR|4d  7 }\ndN|[v r|\|]tR|4d  7 }\qq8|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rh|4rb|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r2|c|j8 }cn8|c|U 8 }c|j	dkr|c|j	8 }c|j
dkr2|c|j
8 }c|cdkr|c|b }c|d$krt|j!dkr`|c|_!|jdkr|c|_n$|j	dkr|c|_	|j
dkr|c|_
n<|d$kr|j!dkrd|_!|c|_n|j	dkrd|_	|c|_
ql|jd8 }Kd|Kv rd;}Knd|Kv r|X}K|d$krdSndT}dtW||d|a h dUtZ|K@ rr|d$krV| j|4jS|<  7  _n| j|4jS|[  7  _qldK|Kv r|d$kr| j|4jS|<  dL 7  _n| j|4jS|[  dL 7  _nd9|Kv r|d$kr| j|4j\|j] 7  _n nd<|Kv rl|j| dkrl|d$kr"|j!|j }^n|j	|j
 }^|jdV dWkr|d$krf|^|j|j |j  |j 7 }^n|^|j|j |j |j 7 }^t-|4jS|^ d|j|< ql|a|4jS7 }aqt||dkrtBdXd+ |3D }H|HtR|3d | 7 }HtW|||H tR|3dkrt||}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rv|e|7 }e|1D ] }t||f|e }gtW||f|g qz|WdkrqL|1D ]}dCdFhtZ|U@ rtW||f|g|W  nndK|Uv rtW||f|g|WdL   nNdM|Uv rtW||f|g|WtR|3 dL   n&dN|Uv rtW||f|g|WtR|3d    qdP|Uv rh|e|WtR|3d  7 }en:dM|Uv r|e|WtR|3 7 }endN|Uv rL|e|WtR|3d  7 }eqL|_d[dR |D }|}|3D ]}4|4D ]\}}|j#r|	jN| |||||||g |d d\d dL \} }h| d u r8|
r&|
\}i|id8 }ind}i|i| d i}
nLd}|j'|  |hd ur|r`|\}jnd}j|
rx|
\}i|j|i7 }j|j| |hi}
|
r qd }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 rtO|p(d|_] q<qd|_]|jd|
oL| d | c| ||
d^d d_g dfS )`Nr   )blockF)startendcontinuediscardZbox_decoration_breakclonerow_gap
column_gappositionrelativeZ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_widthZpx	max_width)outerZimage_resolutionZ	font_size
min_heightr#   
max_height
flex_basiscontentZmin_Z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   Z	flex_wrapZnowrapzwrap-reversec                 s   s   | ]\}}|j |j V  qd S r7   )hypothetical_main_sizemain_outer_extrar;   indexr<   r   r   r   r=   G  s   Zgrowshrink	flex_growZflex_shrinkTc                 s   s   | ]\}}|j V  qd S r7   )frozenr@   r   r   r   r=   h  r*   c                 s   s   | ]\}}|j V  qd S r7   )
adjustmentr@   r   r   r   r=     r*   
align_selfbaselinealign_content)stretchrI   c                 s   s   | ]}|j V  qd S r7   
cross_sizer;   liner   r   r   r=   =  r*   align_itemsjustify_content)
flex-startrP   )flex-endrQ   r   )r   r   	directionrtl>   rightr   rQ   centerr   zspace-aroundzspace-evenlyc                 s   s   | ]}|j d  V  qdS )rC   Nr&   r:   r   r   r   r=     r*   zspace-betweenc                 S   s   g | ]}|d kqS )r$   r   )r;   marginr   r   r   
<listcomp>  r*   zflex_layout.<locals>.<listcomp>
position_y
position_x>   r   zself-endrQ   Z
box_sizingzcontent-boxc                 s   s   | ]}|j V  qd S r7   rJ   rL   r   r   r   r=   =  r*   c                 s   s   | ]}|j V  qd S r7   rJ   rL   r   r   r   r=   D  r*   c                 s   s   | ]\}}|j r|V  qd S r7   r8   )r;   _r<   r   r   r   r=   J  r*   c                 S   s   g | ]}|  r|qS r   )is_absolutely_positionedr:   r   r   r   rX   h  r*   )adjoining_marginsr   	max_lines)
skip_stackany)breakpage)d r   Zcreate_flex_formatting_contextZremove_decorationr'   Zpadding_bottomZborder_bottom_widthZmargin_bottom
startswithmargin_leftmargin_rightgetattrr"   Zpadding_leftZpadding_rightZborder_left_widthZborder_right_widthr   copyr   Zresolve_percentagesZblock_level_widthsortedchildrenitemsendswithunitr#   valuerZ   rY   Zborder_top_widthZpadding_topZ
margin_top	enumerater9   r\   r	   rA   appendZ
is_runningZcurrent_pageZrunning_elementsZis_table_wrapperr   r   r   
isinstancer   ZReplacedBoxreplacementZget_intrinsic_sizeminr0   r   Zblock_level_layoutr3   
percentageZflex_base_sizer?   Zmargin_heightmaxr>   r4   r   reversesumZflex_factorZtarget_main_sizerD   allsysmaxsizeintr   Zscaled_flex_shrink_factorr   rE   Zblock_level_layout_switchr   Z	_baselineZcollapse_marginlenrK   Zborder_heightZborder_widthZFlexBoxsetattrZcontent_box_xZcontent_box_ysetZmargin_widthZlower_baselinerG   tupleZcopy_with_childrenr
   ZInlineFlexBoxZis_in_normal_flowZfinish_flex_formatting_context)lcontextZboxZbottom_spacer_   Zcontaining_blockZpage_is_emptyZabsolute_boxesZfixed_boxesr   r   Z	resume_atZis_startZdraw_bottom_decorationr   r   mainZcrossre   rf   Zavailable_main_spaceZavailable_cross_spaceZ
parent_boxrj   Zoriginal_skip_stackskipZchild_skip_stackZmain_gapZ	cross_gaprZ   rY   rA   r<   	new_childplaceholderZrunning_namerb   Zchild_containing_blockZspecified_sizeZcontent_sizeZtransferred_sizeimager[   Zintrinsic_heightZintrinsic_ratioZnew_child_widthZintrinsic_widthr5   Zmin_sizemax_sizeZ
flex_itemsiZ
flex_linesrM   Z	line_sizeZ	main_sizer>   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_sumZratioZadjustmentsZnew_flex_linesZnew_flex_liner]   r0   r1   rK   Zcollected_itemsZnot_collected_itemsrF   ZcollectZcross_start_distanceZcross_end_distancerG   Zcollected_cross_sizeZnon_collected_cross_sizeZchild_cross_sizeZmin_cross_sizeZmax_cross_sizerH   Zdefinite_cross_sizeZextra_cross_sizerN   Zcross_marginsZoriginal_position_mainrO   Zposition_mainZ
free_spaceZmarginsZgrowthsZmargin_mainZposition_crossZauto_marginsZextra_crossr   Zcross_translaterR   Zcurrent_valueZchild_resume_atZresume_indexZfirst_level_skipZabsolute_boxr   r   r   flex_layout   s
   
























































































































































r   )r   ry   mathr   r   Zcss.propertiesr   Zformatting_structurer   rc   r   r/   r	   r
   	preferredr   r   r   tabler   r   listr   r   r   r   r   r   <module>   s   