Ë
    ñEj;-  ã                  óê   — d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
 d dlZd dlmZmZ d dlmZ d dlmZmZmZ ddlmZ dd	lmZmZ erdd
lmZ  e	d«      Z G d„ deee   «      Z G d„ dee   ee«      Zy)é    )Úannotations)ÚTYPE_CHECKINGÚGenericÚListÚOptionalÚSetÚTupleÚTypeVarÚUnionN)ÚConsoleÚRenderableType)ÚText)ÚAnyÚLiteralÚ	TypedDicté   )ÚTextInputHandler)ÚCursorOffsetÚElement)Ú	BaseStyleÚReturnValuec                  ó"   — e Zd ZU ded<   ded<   y)ÚOptionÚstrÚnamer   ÚvalueN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úT/var/www/html/peoplehubportal/venv/lib/python3.12/site-packages/rich_toolkit/menu.pyr   r      s   … Ø
ƒIØÔr"   r   c                  ó0  ‡ — e Zd Zej                  dgZej                  dgZej                  dgZ	ej                  dgZdZdZdZdZd	Zed,d
„«       Zed-d„«       Zed-d„«       ZdZdZ	 	 	 d.ddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d/ˆ fd„Zd,d„Zed0d„«       Zd1d2d„Zed3d„«       Zed4d„«       Zed4d„«       Zd5d„Zd5d„Zd6d„Z d5d„Z!d7d„Z"d8d„Z#ed-d„«       Z$d9d „Z%d:d!„Z&d;d"„Z'd;d#„Z(d<ˆ fd$„Z)ed,d%„«       Z*d&„ Z+d'„ Z,ed4d(„«       Z-d=d)„Z.ed>d*„«       Z/d4d+„Z0ˆ xZ1S )?ÚMenuÚjÚkÚhÚlu   â—�u   â—‹u   â– u   â–¡zFilter: c                ó~   — | j                   r| j                  r| j                  sydt        | j                  «      › d�S )zEReturn a hint like '(3 selected)' when filtering hides checked items.Nú(z
 selected))ÚmultipleÚallow_filteringÚcheckedÚlen©Úselfs    r#   Úselection_count_hintzMenu.selection_count_hint.   s5   € ð �}Š} D×$8Ò$8ÀÇÂØØ”3�t—|‘|Ó$Ð% ZÐ0Ð0r"   c                óJ   — | j                   r| j                  S | j                  S )z%Prefix for the active/checked option.)r,   Úchecked_charÚcurrent_selection_charr0   s    r#   Úactive_prefixzMenu.active_prefix5   s!   € ð %)§M¢Mˆt× Ñ ÐR°t×7RÑ7RÐRr"   c                óJ   — | j                   r| j                  S | j                  S )z&Prefix for inactive/unchecked options.)r,   Úunchecked_charÚselection_charr0   s    r#   Úinactive_prefixzMenu.inactive_prefix:   s!   € ð '+§m¢mˆt×"Ñ"ÐL¸×9LÑ9LÐLr"   u
     â†‘ moreu
     â†“ moreNr   )ÚstyleÚcursor_offsetÚmax_visiblec               óÖ  •— |r|rt        d«      ‚t        j                  |«      | _        || _        || _        || _        d| _        t        «       | _	        || _
        t        |«      D �
�ci c]  \  }
}t        |«      |
“Œ c}}
| _        d| _        d | _        d| _        || _        |t%        | j&                  «      z   }t)        j*                  | ||	¬«       t,        ‰| �U  «        y c c}}
w )Nz'multiple and inline cannot both be Truer   r   ©r;   Úmetadata)Ú
ValueErrorr   Úfrom_markupÚlabelÚinliner-   r,   ÚselectedÚsetr.   Ú_optionsÚ	enumerateÚidÚ_option_indexÚ_padding_bottomÚvalidÚ_scroll_offsetÚ_max_visibler/   Úfilter_promptr   Ú__init__Úsuper)r1   rC   ÚoptionsrD   r-   r,   r;   r<   r=   r@   ÚidxÚoptÚ	__class__s               €r#   rP   zMenu.__init__C   sÒ   ø€ ñ ™ÜÐFÓGÐGä×%Ñ% eÓ,ˆŒ
ØˆŒØ.ˆÔØ ˆŒàˆŒÜ!$£ˆŒàˆŒÜ;DÀWÓ;M×N©x¨s°Cœb ›g s™lÓNˆÔà ˆÔØˆŒ
ð $%ˆÔØ+6ˆÔà%¬¨D×,>Ñ,>Ó(?Ñ?ˆä×Ñ˜ U°XÕ>Ü‰ÑÕùó Os   Á+C%c                ó„  — t        j                  «       }|dk(  ry| j                  r;| j                  g| j                  gg\  }}| j
                  g| j                  gg\  }}n0| j                  | j                  }}| j                  | j                  }}| j                  r||fn||f\  }}||v ry||v ry| j                  r|S y )NúÚenterÚnextÚprev)ÚclickÚgetcharr-   ÚLEFT_KEYÚ	RIGHT_KEYÚDOWN_KEYÚUP_KEYÚ	LEFT_KEYSÚ
RIGHT_KEYSÚ	DOWN_KEYSÚUP_KEYSrD   )r1   ÚcharÚ	left_keysÚ
right_keysÚ	down_keysÚup_keysÚ	next_keysÚ	prev_keyss           r#   Úget_keyzMenu.get_keyj   sÂ   € Ü�}‰}‹ˆà�4Š<Øà×ÒØ&*§m¡m _°t·~±~Ð6FÐ$GÑ!ˆI�zØ#'§=¡= /°D·K±K°=Ð!AÑˆI‘wà$(§N¡N°D·O±O�zˆIØ!%§¡°·±�wˆIð (,§{¢{ˆZ˜Ñ#¸ÀGÐ8Lñ 	ˆ	�9ð �9ÑØØ�9ÑØà×ÒØˆKàr"   c                óÊ   — | j                   rG| j                  D �cg c]1  }| j                  j                  «       |d   j                  «       v r|‘Œ3 c}S | j                  S c c}w )Nr   )r-   rG   ÚtextÚlower©r1   Úoptions     r#   rR   zMenu.options…   s]   € à×Òð #Ÿm™möàØ—9‘9—?‘?Ó$¨¨v©×(<Ñ(<Ó(>Ñ>ò òð ð �}‰}Ðùòs   ›6A c                óÀ   — | j                   �| j                   S | j                  ry|€
t        «       }d}| j                  r|dz  }|j                  |z
  }t        d|«      S )a  Calculate the maximum number of visible options based on terminal height.

        Args:
            console: Console to get terminal height from. If None, uses default.

        Returns:
            Maximum number of visible options, or None if no limit needed.
        Né   r   é   )rN   rD   r   r-   ÚheightÚmax)r1   ÚconsoleÚreserved_linesÚavailable_heights       r#   Úget_max_visiblezMenu.get_max_visible�   si   € ð ×ÑÐ(Ø×$Ñ$Ð$à�;Š;ààˆ?Ü“iˆGð ˆØ×ÒØ˜aÑˆNà"Ÿ>™>¨NÑ:Ðä�1Ð&Ó'Ð'r"   c                ó    — | j                  «       }t        | j                  «      }|�||k  rd|fS | j                  }t	        ||z   |«      }||fS )z1Returns (start, end) indices for visible options.r   )rz   r/   rR   rM   Úmin)r1   r=   Útotal_optionsÚstartÚends        r#   Úvisible_options_rangezMenu.visible_options_range­   s^   € ð ×*Ñ*Ó,ˆÜ˜DŸL™LÓ)ˆàÐ -°;Ò">Ø�}Ð%Ð%à×#Ñ#ˆÜ�%˜+Ñ% }Ó5ˆØ�sˆ|Ðr"   c                ó    — | j                   dkD  S )z9Check if there are more options above the visible window.r   ©rM   r0   s    r#   Úhas_more_abovezMenu.has_more_aboveº   s   € ð ×"Ñ" QÑ&Ð&r"   c                ór   — | j                  «       }|€y| j                  |z   t        | j                  «      k  S )z9Check if there are more options below the visible window.F)rz   rM   r/   rR   ©r1   r=   s     r#   Úhas_more_belowzMenu.has_more_below¿   s:   € ð ×*Ñ*Ó,ˆØÐØØ×"Ñ" [Ñ0´3°t·|±|Ó3DÑDÐDr"   c                óè   — | j                  «       }|€y| j                  | j                  k  r| j                  | _        y| j                  | j                  |z   k\  r| j                  |z
  dz   | _        yy)z<Adjust scroll offset to ensure the selected item is visible.Nr   )rz   rE   rM   r…   s     r#   Ú_ensure_selection_visiblezMenu._ensure_selection_visibleÇ   sn   € à×*Ñ*Ó,ˆØÐØð �=‰=˜4×.Ñ.Ò.Ø"&§-¡-ˆDÕð �]‰]˜d×1Ñ1°KÑ?Ò?Ø"&§-¡-°+Ñ"=ÀÑ"AˆDÕð @r"   c                ó   — d| _         y)z/Reset scroll offset (used when filter changes).r   Nr‚   r0   s    r#   Ú_reset_scrollzMenu._reset_scrollÕ   s
   € àˆÕr"   c                ó2   — | j                   t        |«         S )z@Return the index of an option in _options using identity lookup.)rJ   rI   rp   s     r#   Ú_get_option_indexzMenu._get_option_indexÙ   s   € à×!Ñ!¤" V£*Ñ-Ð-r"   c                óš   — | j                   sy| j                  | j                   | j                     «      }| xj                  |hz  c_        y)z4Toggle the checked state of the current cursor item.N)rR   rŒ   rE   r.   )r1   Úoption_indexs     r#   Ú_toggle_currentzMenu._toggle_currentÝ   s9   € à�|Š|ØØ×-Ñ-¨d¯l©l¸4¿=¹=Ñ.IÓJˆØ�Š˜˜Ñ&Žr"   c                óV   — | j                  | j                  |   «      | j                  v S )z+Check if a filtered-list option is checked.)rŒ   rR   r.   )r1   Úfiltered_indexs     r#   Úis_option_checkedzMenu.is_option_checkedä   s%   € à×%Ñ% d§l¡l°>Ñ&BÓCÀtÇ|Á|ÐSÐSr"   c                ó<   — | j                  |«      | j                  v S )z8Check if an option is checked using its object identity.)rŒ   r.   rp   s     r#   Úis_option_checked_by_refzMenu.is_option_checked_by_refè   s   € à×%Ñ% fÓ-°·±Ð=Ð=r"   c                ó®   ‡ — ‰ j                   r-dj                  ˆ fd„t        ‰ j                  «      D «       «      S ‰ j                  ‰ j
                     d   S )zDReturn the display name for the result (used when the menu is done).z, c              3  óB   •K  — | ]  }‰j                   |   d    –— Œ y­w©r   N)rG   )Ú.0Úir1   s     €r#   ú	<genexpr>z+Menu.result_display_name.<locals>.<genexpr>ð   s   øè ø€ ÒT¸!˜TŸ]™]¨1Ñ-¨fÕ5ÑTùs   ƒr   )r,   ÚjoinÚsortedr.   rR   rE   r0   s   `r#   Úresult_display_namezMenu.result_display_nameì   sB   ø€ ð �=Š=Ø—9‘9ÓT¼vÀdÇlÁlÓ?SÔTÓTÐTØ�|‰|˜DŸM™MÑ*¨6Ñ2Ð2r"   c                ó8  — |dk(  r| xj                   dz  c_         n|dk(  r| xj                   dz  c_         | j                   dk  rt        | j                  «      dz
  | _         | j                   t        | j                  «      k\  rd| _         | j                  «        y )NrY   r   rZ   r   )rE   r/   rR   rˆ   )r1   Úkeys     r#   Ú_update_selectionzMenu._update_selectionó   sw   € Ø�&Š=Ø�MŠM˜QÑŽMØ�FŠ]Ø�MŠM˜QÑ�Mà�=‰=˜1ÒÜ §¡Ó-°Ñ1ˆDŒMà�=‰=œC §¡Ó-Ò-ØˆDŒMð 	×&Ñ&Õ(r"   c                óÞ   — t        «       }|j                  | j                  «       |j                  d«       |j                  | j                  | j                  j                  d«      ¬«       |S )Nú Úresult)r;   )r   ÚappendrC   r�   rw   Ú	get_style)r1   Úresult_texts     r#   Úrender_resultzMenu.render_result  s_   € Ü“fˆà×Ñ˜4Ÿ:™:Ô&Ø×Ñ˜3Ôà×ÑØ×$Ñ$Ø—,‘,×(Ñ(¨Ó2ð 	ô 	
ð
 Ðr"   c                óv   — | j                   r| j                  n| j                  }| j                  r|d   g}||v S ©Nr   )rD   rb   rc   r-   ©r1   rŸ   Úkeyss      r#   Úis_next_keyzMenu.is_next_key  s5   € Ø"&§+¢+ˆt�Š°4·>±>ˆà×ÒØ˜‘G�9ˆDà�dˆ{Ðr"   c                óv   — | j                   r| j                  n| j                  }| j                  r|d   g}||v S r©   )rD   ra   rd   r-   rª   s      r#   Úis_prev_keyzMenu.is_prev_key  s5   € Ø!%§¢ˆt�~Š~°$·,±,ˆà×ÒØ˜‘G�9ˆDà�dˆ{Ðr"   c                ó>  •‡— d Š| j                   }| j                  r|dk(  r| j                  «        y | j                  |«      r| j	                  d«       nZ| j                  |«      r| j	                  d«       n7| j                  r| j                  | j                     d   Št        ‰| �%  |«       ‰r/t        ˆfd„t        | j                  «      D «       d«      }|| _        | j                  r1| j                   |k7  r!| j                  «        | j                  «        y y y )Nr¢   rY   rZ   r   c              3  ó8   •K  — | ]  \  }}|d    ‰k(  r|–— Œ y­wr—   r!   )r˜   Úindexrq   Úcurrent_selections      €r#   rš   z"Menu.handle_key.<locals>.<genexpr>3  s*   øè ø€ ò á%˜˜vØ˜f‘~Ð):Ò:ô ñùs   ƒr   )rn   r,   r�   r¬   r    r®   rR   rE   rQ   Ú
handle_keyrY   rH   r-   rŠ   rˆ   )r1   rŸ   Úprevious_filter_textÚmatching_indexr²   rU   s       @€r#   r³   zMenu.handle_key  sü   ù€ Ø+/ÐØ#Ÿy™yÐà�=Š=˜S CšZØ× Ñ Ô"Øà×Ñ˜CÔ Ø×"Ñ" 6Õ*Ø×Ñ˜cÔ"Ø×"Ñ" 6Õ*à�|Š|Ø$(§L¡L°·±Ñ$?ÀÑ$GÐ!ä‰GÑ˜sÔ#áÜ!óä)2°4·<±<Ó)@ôð
 óˆNð +ˆDŒMð ×Ò D§I¡IÐ1EÒ$EØ×ÑÔ Ø×*Ñ*Õ,ð %FÐr"   c                ó<   — | j                   du r| j                  ryyy )NFz!Please select at least one optionzThis field is required)rL   r,   r0   s    r#   Úvalidation_messagezMenu.validation_messageB  s   € à�:‰:˜ÑØ�}Š}Ø:Ø+àr"   c                ó$   — | j                  «        y ©N)Úon_validater0   s    r#   Úon_blurzMenu.on_blurK  s   € Ø×ÑÕr"   c                ó’   — | j                   rt        | j                  «      dkD  | _        y t        | j                  «      dkD  | _        y r©   )r,   r/   r.   rL   rR   r0   s    r#   rº   zMenu.on_validateN  s3   € Ø�=Š=Ü˜TŸ\™\Ó*¨QÑ.ˆD�Jä˜TŸ\™\Ó*¨QÑ.ˆD�Jr"   c                ó   — | j                   S r¹   )r-   r0   s    r#   Úshould_show_cursorzMenu.should_show_cursorT  s   € à×#Ñ#Ð#r"   c                ó:  — ddl m}  || j                  | j                  ¬«      }| g|_        |j                  «        | j                  r3t        | j                  «      D �cg c]  }| j                  |   d   ‘Œ c}S | j                  | j                     d   S c c}w )Nr   )Ú	Containerr?   r   )Ú	containerrÀ   r;   r@   ÚelementsÚrunr,   rœ   r.   rG   rR   rE   )r1   rÀ   rÁ   r™   s       r#   ÚaskzMenu.askX  sy   € Ý(á D§J¡J¸¿¹ÔGˆ	à"˜Vˆ	Ôà�‰Œà�=Š=Ü7=¸d¿l¹lÓ7KÖL°!�D—M‘M !Ñ$ WÓ-ÒLÐLà�|‰|˜DŸM™MÑ*¨7Ñ3Ð3ùò Ms   Á Bc                ód   — d}t        | j                  «      | j                  z   }t        ||¬«      S )Né   )ÚtopÚleft)r/   rO   Úcursor_leftr   )r1   rÇ   Úleft_offsets      r#   r<   zMenu.cursor_offsetf  s1   € ð
 ˆä˜$×,Ñ,Ó-°×0@Ñ0@Ñ@ˆä ¨+Ô6Ð6r"   c                óX   — | j                  «       }|€yt        | j                  «      |kD  S )zBCheck if scrolling is needed (more options than can be displayed).F)rz   r/   rR   r…   s     r#   Ú_needs_scrollingzMenu._needs_scrollingq  s-   € à×*Ñ*Ó,ˆØÐØÜ�4—<‘<Ó  ;Ñ.Ð.r"   )ÚreturnzOptional[str])rÍ   r   )FFF)rC   r   rR   úList[Option[ReturnValue]]rD   Úboolr-   rÏ   r,   rÏ   r;   zOptional[BaseStyle]r<   Úintr=   úOptional[int]r@   r   )rÍ   rÎ   r¹   )rw   zOptional[Console]rÍ   rÑ   )rÍ   zTuple[int, int])rÍ   rÏ   )rÍ   ÚNone)rq   úOption[ReturnValue]rÍ   rÐ   )r‘   rÐ   rÍ   rÏ   )rq   rÓ   rÍ   rÏ   )rŸ   zLiteral['next', 'prev']rÍ   rÒ   )rÍ   r   )rŸ   r   rÍ   rÏ   )rŸ   r   rÍ   rÒ   )rÍ   z%Union[ReturnValue, List[ReturnValue]])rÍ   r   )2r   r   r   r   r_   rc   r`   rd   r]   ra   r^   rb   r5   r9   r4   r8   rO   Úpropertyr2   r6   r:   ÚMORE_ABOVE_INDICATORÚMORE_BELOW_INDICATORrP   rl   rR   rz   r€   rƒ   r†   rˆ   rŠ   rŒ   r�   r’   r”   r�   r    r§   r¬   r®   r³   r·   r»   rº   r¾   rÄ   r<   rÌ   Ú__classcell__)rU   s   @r#   r%   r%   "   s  ø„ Ø!×*Ñ*¨CÐ0€IØ×&Ñ&¨Ð,€GØ!×*Ñ*¨CÐ0€IØ"×,Ñ,¨cÐ2€Jà"ÐØ€NØ€LØ€NØ€Màò1ó ð1ð òSó ðSð òMó ðMð
 (ÐØ'Ðð Ø %Øð%ð &*ØØ%)ñ%àð%ð +ð%ð ð	%ð
 ð%ð ð%ð #ð%ð ð%ð #ð%ð õ%óNð6 òó ðô(ð: ò
ó ð
ð ò'ó ð'ð òEó ðEóBó ó.ó'óTó>ð ò3ó ð3ó)óóóõ!-ðF òó ðòò/ð ò$ó ð$ó4ð ò7ó ð7÷/r"   r%   )Ú
__future__r   Útypingr   r   r   r   r   r	   r
   r   r[   Úrich.consoler   r   Ú	rich.textr   Útyping_extensionsr   r   r   Ú_input_handlerr   Úelementr   r   Ústyles.baser   r   r   r%   r!   r"   r#   ú<module>rà      si   ðÝ "÷	÷ 	ó 	ó ß 0Ý ß 5Ñ 5å ,ç *áÝ&á�mÓ$€ôˆY˜ Ñ,ô ô
T/ˆ7�;ÑÐ!1°7õ T/r"   