o
    h                     @   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   X/var/www/html/optinet_system/venv/lib/python3.10/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 }|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 ]\}}|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rw|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\|*|+ }'t4|j5t6|j7|&}&|%dkrht6|%|&|_5n|'d urtt6|'|&|_5n|&|_5|jd# dkr|j}%| } |j | _d| jd$< t-dd| jd#< t-td| jd%< | jd dkrt8| | },t-|,d| jd< |	9| | ||||d } | r| jnd}&d }'t/|t0j1r|j2}(|(3|jd! |jd" \}-})}+|+r|-r|-|+ }'t4|j:t6|j;|&}&n|-sd}&|%dkrt6|%|&|_:n|'d urt6|'|&|_:n|&|_:|jd& d'kr%d'}.nt<|jd& |}.|.dkr?t|| }.dkr?d'}.|.d'kr|.|_=|dkrv|j|j |j |j |_>|j	dkrg| j>|j	7  _>|j
dkru| j>|j
7  _>n|j|j |j  |j |_>|j!dkr| j>|j!7  _>|jdkr| j>|j7  _>nw	 | } |j | _|dkrt-dd| jd< t-td| jd< t8| | dd |_=t8| ||j= |_>nEt-dd| jd#< t-td| jd%< t| _|	9| | ||||||\} })})}/})})| r|  j|	?|/7  _| j|_=| @ | j |_>nd |_=|_>|dkr%||j=|j> 7 }n||j=|j> 7 }t|d(| }0t|d)| }1t4|0t6|j=|1|_Ad }q|dkrW|	|| n;|jdkrd|_d*d+ |D }2t"|2D ]\}3}| j|jA|j> 7  _|3r| j|7  _qkt4|j:t6|j|j;|_g }4g }5d}6t||}7t"||d,D ][\}3}|j#sq|6|jA|j> 7 }6|3|kr|6|7 }6|jd- d.kr|6|7kr|5r|4'tB|5 |3|fg}5|jA|j> }6q|5'|3|f |4'tB|5 g }5d}6q|5'|3|f q|5r	|4'tB|5 |jd- d/kr|4C  |jd dr(|4D ]}5|5C  q t||}|4D ]}5tDd0d+ |5D }8|8|k rCd1}9nd2}9|5D ]8\}}|9d1kr]|jd3 |_E|j=|jAk}:n|jd4 |_E|j=|jAk }:|jEdksr|:r{|jA|_Fd5|_GqGd|_GqG|};t"|5D ]#\}3\}}|jGr|;|jF|j> 8 };n|;|j=|j> 8 };|3r|;|8 };qtHd6d+ |5D sd}<|}=t"|5D ](\}3\}}|jGr|=|jF|j> 8 }=n|=|j=|j> 8 }=|<|jE7 }<|3r|=|8 }=q|<dk r|;|<9 };|;tkrtIjJ};|=tkrtIjJ}=|;dkr	tKtL|;nt }>|=dkrtKtL|=nt }?|>|?k r!|;}=|=dkr7|5D ]\}}|jGs4|j=|_Fq(nid}@d}A|5D ]\}}|jGsZ|j=|jd4  |_M|@|jM7 }@|A|jd3 7 }Aq=|5D ]A\}}|jGs|9d1kr{|jd3 |A }B|j=|=|B  |_Fn|9d2kr|@dkr|j=|_Fn|jM|@ }B|j=|=|B  |_FtN||jF|_Fq^|5D ]4\}}d|_O|jGst|d(| }0t|d)| }1t4|0t6|jF|1}0|jF|0k r|0|jF |_O|0|_FqtDd7d+ |5D }C|5D ]-\}}|Cdkrd5|_Gq|Cdkr |jOdkr d5|_Gq|Cdk r|jOdk rd5|_GqtHd6d+ |5D r|5D ]\}}|dkr+|jF|_q|jF|_qq/g }D|}|4D ]}5tB }E|5D ]y\}}|j!dkrMd|_!|jdkrVd|_| } |	P| | t |||||g |d \} })})}/})})tQ| pvd|_R|d$kr| j|_| j|	?|/7  _n#|jdkrt.| |dd }Ft8| |dd }Gt6t4|F| j|G|_n| j|_|E'||f d }q@|Er|D'|E q9|D}4t||}HtS|4dkr|Hdkr|H|4d _Tn|4D ]}5g }Ig }J|5D ]*\}}|jd8 }K|jd dod9|Kv od|j!|jfv}L|Lr|In|J'| qd }M}N|ID ]}|jR|j }Ot4|M|O}Mt4|N|@ |O }Nq|M|N }Pd}Q|Jrt }Q|JD ]B}|d$kr`|U }R|j!dkrT|R|j!7 }R|jdkr_|R|j7 }Rn|V }R|j	dkro|R|j	7 }R|j
dkrz|R|j
7 }Rt4|R|Q}Qq>t4|P|Q|5_TqtS|4dkr|4\}5t|d(| }S|Sdkrt }St|d)| }T|Tdkrt}Tt4|St6|5jT|T|5_T|jd: }Ud|Uv rd;}Ud<|Uv 	r&d }V|d$kr|jdkr|j}Vn|dkrt/|t0jWr|jdkr|}Vn|j}V|Vd u	r&|V}W|WtDd=d+ |4D 8 }W|WtS|4d | 8 }W|W	r&|4D ]}5|5 jT|WtS|4 7  _T	q|jd> }Xd|Xv 	r2d;}X|4D ]}5|5D ]{\}}|jd8 }Kd|Kv 	rId;}Knd|Kv 	rP|X}Kd<|Kv 	r|j| dk	r|d$k	rl|jd? |jd@ fn	|jdA |jdB f}Yd|Yv	r|5jT}H|d$k	r|H|j!|j |j  |j |j |j 8 }Hn|H|j	|j
 |j |j |j |j 8 }HtX|||H 	q8	q4|dk	r|Y n|Z }Z|jdC }[d|[v 	rdD}[|jd d	rdE|[v 	rdF}[ndG|[v 	rdD}[ndH|[v 	rdI}[ndJ|[v 	rd,}[|4D ]}5|Z}\|dk
r+|j}]|5D ]!\}}|]|V 8 }]|j	dk
r|]|j	8 }]|j
dk
r(|]|j
8 }]
qn'|j}]|5D ]!\}}|]|U 8 }]|j!dk
rE|]|j!8 }]|jdk
rP|]|j8 }]
q0|]tS|5d | 8 }]d}^|5D ]4\}}|dk
r|j	dk
rs|^d7 }^|j
dk
r}|^d7 }^
q`|j!dk
r|^d7 }^|jdk
r|^d7 }^
q`|^
r|]|^ }]|5D ]0\}}|dk
r|j	dk
r|]|_	|j
dk
r|]|_

q|j!dk
r|]|_!|jdk
r|]|_
qd}]|jdK dLk
r|dk
r|]dM9 }]h dNt[|[@ 
r|\|]7 }\n+dO|[v 
r|\|]dP 7 }\ndQ|[v r|\|]tS|5 dP 7 }\ndR|[v r|\|]tS|5d  7 }\tDdSd+ |D }_t"|5D ]\}3\}}|3r5|\|7 }\|dkrT|\|_d<|[v rS|_rS| j|]|jd3  |_ 7  _n|\|_|dkr`|\ n|@ }`|jdK dLkru|dkru|`dM9 }`|\|`7 }\dQ|[v r|\|]tS|5 7 }\q(dT|[v rtS|5dkr|\|]tS|5d  7 }\q(dR|[v r|\|]tS|5d  7 }\q(	q|dkr|	|| |d$kr|Z n|Y }a|4D ]}5t |5_]|5D ])\}}|jd8 }Kd|Kv r|X}Kd9|Kv r|dkr|jR|a |_^t4|5j]|j^|5_]q|5j]t kr|5r|5d d jRnd|5_]|5D ]\}}|d$kr*|jd? |jd@ fn	|jdA |jdB f}YtDdUdV |YD }b|br|5jT}c|d$kre|c|U 8 }c|j!dkrY|c|j!8 }c|jdkrd|c|j8 }cn|c|V 8 }c|j	dkrv|c|j	8 }c|j
dkr|c|j
8 }c|cdkr|c|b }c|d$kr|jd? dkr|c|_!|jd@ dkr|c|_q|jdA dkr|c|_	|jdB dkr|c|_
q|d$kr|j!dkrd|_!|c|_q|j	dkrd|_	|c|_
q|jd8 }Kd|Kv rd;}Knd|Kv r|X}K|d$krdWndX}dtX||d|a h dYt[|K@ r-|d$kr| j|5jT|@  7  _q| j|5jT|\  7  _qdO|Kv rW|d$krG| j|5jT|@  dP 7  _q| j|5jT|\  dP 7  _qd9|Kv rq|d$krn| j|5j]|j^ 7  _q	 qd<|Kv r|j| dkr|d$kr|j!|j }^n|j	|j
 }^|jdZ d[kr|d$kr|^|j|j |j  |j 7 }^q|^|j|j |j |j 7 }^q|a|5jT7 }aqt||dkrtDd\d+ |4D }H|HtS|4d | 7 }HtX|||H tS|4dkrt||}W|WtDd]d+ |4D 8 }W|WtS|4d | 8 }Wd}e|d$krdWndX}ft"|4D ]\}3}5t_d^d+ |5D }2|3r)|e|7 }e|2D ]}t||f|e }gtX||f|g q+|WdkrCq|2D ]O}dGdJht[|U@ rZtX||f|g|W  qEdO|Uv rktX||f|g|WdP   qEdQ|Uv rtX||f|g|WtS|4 dP   qEdR|Uv rtX||f|g|WtS|4d    qEdT|Uv r|e|WtS|4d  7 }eqdQ|Uv r|e|WtS|4 7 }eqdR|Uv r|e|WtS|4d  7 }eq|`d_dV |D }|}|4D ]p}5|5D ]e\}}|j#r:|	jP| |||||||g |d d`d dP \} }h| d u r|
r|
\}i|id8 }ind}i|i| d i}
n&d}|j'|  |hd ur5|r#|\}jnd}j|
r/|
\}i|j|i7 }j|j| |hi}
|
r: nd }q|
rC nq|jd dkr]|D ]}kta| |k|||d da qOt/|t0jbr|dkru|4rq|4d j]nd|_^n|jD ]}|c rtQ|pd|_^ nqxd|_^|jd|
o| d | d| ||
dbd dcg dfS )dNr   )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>0      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   ]  s
    

growshrink	flex_growflex_shrinkTc                 s       | ]\}}|j V  qd S r=   )frozenrI   r   r   r   rC   ~  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   S      align_items
margin_topmargin_bottommargin_leftmargin_rightjustify_content)
flex-startrb   )flex-endrc   r   )r   r   	directionrtl>   r   rightrc   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   rc   
box_sizingzcontent-boxc                 s   rV   r=   rW   rY   r   r   r   rC   Q  r[   c                 s   rV   r=   rW   rY   r   r   r   rC   X  r[   c                 s   s    | ]
\}}|j r|V  qd S r=   r>   )rA   _rB   r   r   r   rC   ^  s    c                 S   s   g | ]}|  r|qS r   )is_absolutely_positionedr@   r   r   r   rj   |  s    )adjoining_marginsr   	max_lines)
skip_stackany)breakpage)e r   create_flex_formatting_contextremove_decorationr)   padding_bottomborder_bottom_widthr^   
startswithr_   r`   getattrr$   padding_leftpadding_rightborder_left_widthborder_right_widthr   copyr   resolve_percentagesblock_level_widthsortedchildrenitemsendswithunitr%   valuerl   rk   border_top_widthpadding_topr]   	enumerater?   rp   r	   rJ   append
is_runningcurrent_pagerunning_elementsis_table_wrapperr   r   r   
isinstancer   ReplacedBoxreplacementget_intrinsic_sizemaxr1   minr3   r   block_level_layoutr7   r8   
percentageflex_base_sizerH   collapse_marginmargin_heightrG   r   reversesumflex_factortarget_main_sizerP   allsysmaxsizeintr   scaled_flex_shrink_factorr   rQ   block_level_layout_switchr   	_baseline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_spacers   containing_blockpage_is_emptyabsolute_boxesfixed_boxesr   r   	resume_atis_startdraw_bottom_decorationr   r   maincrossr_   r`   available_main_spaceavailable_cross_space
parent_boxr   original_skip_stackskipchild_skip_stackmain_gap	cross_gaprl   rk   rJ   rB   	new_childplaceholderrunning_namerv   child_containing_blockspecified_sizecontent_sizetransferred_sizeimagero   intrinsic_heightintrinsic_rationew_child_widthintrinsic_widthr9   rq   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_liner1   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_mainra   position_main
free_spacemarginsgrowthsmargin_mainposition_crossauto_marginsextra_crossr    cross_translaterd   current_valuechild_resume_atresume_indexfirst_level_skipabsolute_boxr   r   r   flex_layout   sr  






















































\







































































 






















r  )r   r   mathr   r   css.propertiesr   formatting_structurer   rw   r   r0   r	   r
   	preferredr   r   r   tabler   r   listr   r  r   r   r   r   <module>   s    