Ë
    }¾jF  ã                   ó,   — d Z ddlZddlZ G d„ d«      Zy)z(Unified input handler for all platforms.é    Nc                   ó  — e Zd ZdZej
                  dk(  rdZdZdZdZ	dZ
dZd	Zd
ZdZdZdZndZdZdZdZ	dZdZ
d	ZdZdZdZdZd„ Zedefd„«       Zededefd„«       Zdedefd„Zd#d„Zd#d„Zdeddfd„Zd#d„Zd#d „Zd!eddfd"„Zy)$ÚTextInputHandlerz6Input handler with platform-specific key code support.Úwin32u   Ã Pu   Ã Hu   Ã Ku   Ã Mu   Ã Súú	z úúz Sz[Bz[Az[Dz[Cz[3~z[ZNc                 ó    — d| _         d| _        y )NÚ r   ©ÚtextÚ_cursor_index©Úselfs    ú^/var/www/html/candidateportal/venv/lib/python3.12/site-packages/rich_toolkit/_input_handler.pyÚ__init__zTextInputHandler.__init__*   s   € ØˆŒ	ØˆÕó    Úreturnc                 óR   — | j                  | j                  d| j                   «      S )z*Visual cursor position in display columns.N)Ú_get_text_widthr   r   r   s    r   Úcursor_leftzTextInputHandler.cursor_left.   s'   € ð ×#Ñ# D§I¡IÐ.B°×0BÑ0BÐ$CÓDÐDr   Úcharc                 ó>   — | syt        j                  | «      }|dv ryy)zIGet the display width of a character (1 for normal, 2 for CJK/fullwidth).r   )ÚFÚWé   é   )ÚunicodedataÚeast_asian_width)r   r   s     r   Ú_get_char_widthz TextInputHandler._get_char_width3   s-   € ñ Øô '×7Ñ7¸Ó=Ðà˜zÑ)Øð r   r   c                 ó,   ‡ — t        ˆ fd„|D «       «      S )z-Get the total display width of a text string.c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­w)N)r    )Ú.0r   r   s     €r   ú	<genexpr>z3TextInputHandler._get_text_width.<locals>.<genexpr>D   s   øè ø€ Ò?°$�4×'Ñ'¨×-Ñ?ùs   ƒ)Úsum)r   r   s   ` r   r   z TextInputHandler._get_text_widthB   s   ø€ äÓ?¸$Ô?Ó?Ð?r   c                 ó@   — t        d| j                  dz
  «      | _        y )Nr   r   )Úmaxr   r   s    r   Ú_move_cursor_leftz"TextInputHandler._move_cursor_leftF   s   € Ü   D×$6Ñ$6¸Ñ$:Ó;ˆÕr   c                 óf   — t        t        | j                  «      | j                  dz   «      | _        y ©Nr   )ÚminÚlenr   r   r   s    r   Ú_move_cursor_rightz#TextInputHandler._move_cursor_rightI   s$   € Ü ¤ T§Y¡Y£°×1CÑ1CÀaÑ1GÓHˆÕr   c                 ó¤   — | j                   d | j                   |z   | j                   | j                  d  z   | _         | xj                  dz  c_        y r*   r   )r   r   s     r   Ú_insert_charzTextInputHandler._insert_charL   sM   € à�I‰IÐ*˜×*Ñ*Ð+¨dÑ2°T·Y±Y¸t×?QÑ?QÐ?SÐ5TÑTð 	Œ	ð 	×Ò˜aÑÖr   c                 óÄ   — | j                   dk(  ry| j                  d| j                   dz
   | j                  | j                   d z   | _        | xj                   dz  c_         y)z+Delete character before cursor (backspace).r   Nr   )r   r   r   s    r   Ú_delete_charzTextInputHandler._delete_charR   s`   € à×Ñ Ò"Øð �I‰IÐ.˜×*Ñ*¨QÑ.Ð/°$·)±)¸D×<NÑ<NÐ<PÐ2QÑQð 	Œ	ð 	×Ò˜aÑÖr   c                 óÀ   — | j                   t        | j                  «      k\  ry| j                  d| j                    | j                  | j                   dz   d z   | _        y)z(Delete character at cursor (delete key).Nr   )r   r,   r   r   s    r   Ú_delete_forwardz TextInputHandler._delete_forward\   sU   € à×Ñ¤ T§Y¡Y£Ò/Øð �I‰IÐ*˜×*Ñ*Ð+¨d¯i©i¸×8JÑ8JÈQÑ8NÐ8PÐ.QÑQð 	�	r   Úkeyc                 óR  — || j                   k(  s| j                  r || j                  k(  r| j                  «        y || j                  k(  s| j                  r || j                  k(  r| j                  «        y || j                  k(  r| j                  «        y || j                  k(  r| j                  «        y || j                  | j                  | j                  | j                  | j                  fv ry t        j                   dk(  r
|r|d   dv ry |D ]  }| j#                  |«       Œ y )Nr   r   )ú õ   Ã )ÚBACKSPACE_KEYÚALT_BACKSPACEr1   Ú
DELETE_KEYÚ
ALT_DELETEr3   ÚLEFT_KEYr(   Ú	RIGHT_KEYr-   ÚUP_KEYÚDOWN_KEYÚ	ENTER_KEYÚSHIFT_TAB_KEYÚTAB_KEYÚsysÚplatformr/   )r   r4   r   s      r   Ú
handle_keyzTextInputHandler.handle_keye   s   € à�$×$Ñ$Ò$Ø×Ò 3¨$×*<Ñ*<Ò#<à×ÑÕà�D—O‘OÒ#¨¯ª¸CÀ4Ç?Á?Ò<RØ× Ñ Õ"Ø�D—M‘MÒ!Ø×"Ñ"Õ$Ø�D—N‘NÒ"Ø×#Ñ#Õ%ØØ�K‰KØ�M‰MØ�N‰NØ×ÑØ�L‰Lð
ñ 
ð ô �|‰|˜wÒ&©3°3°q±6Ð=MÑ3Màð ò (�Ø×!Ñ! $Õ'ñ(r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rC   rD   r?   r>   r<   r=   r:   r8   rB   rA   r@   r9   r;   r   ÚpropertyÚintr   ÚstaticmethodÚstrr    r   r(   r-   r/   r1   r3   rE   © r   r   r   r      s  „ Ù@ð ‡|�|�wÒàˆØˆØˆØˆ	Øˆ
ØˆØˆØ"ˆØˆ	ð ˆØ‰
ð ˆØˆØˆØˆ	ØˆØˆ
ØˆØ ˆØˆ	ð ˆØˆ
òð ðE˜Sò Eó ðEð ð˜cð  cò ó ðð@ Cð @¨Có @ó<óIð  ð  ¨ó  ó ó
ð(˜cð ( dô (r   r   )rI   rC   r   r   rN   r   r   ú<module>rO      s   ðÙ .ã 
Û ÷}(ò }(r   