§
    =xÅjF  ã                   ó4   — d Z ddlZddlZ G d„ d¦  «        ZdS )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dS )$Ú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| _        d S )NÚ r   ©ÚtextÚ_cursor_index©Úselfs    úLC:\Projects\Historical\venv\Lib\site-packages\rich_toolkit/_input_handler.pyÚ__init__zTextInputHandler.__init__*   s   € ØˆŒ	ØˆÔÐÐó    Úreturnc                 óP   — |                       | 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Ð.B°Ô0BÐ.BÔ$CÑDÔDÐDr   Úcharc                 óB   — | sdS t          j        | ¦  «        }|dv rdS dS )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;   € ð ð 	Ø�1õ 'Ô7¸Ñ=Ô=Ðà˜zÐ)Ð)Ø�1ð ˆqr   r   c                 ó:   ‡ — t          ˆ fd„|D ¦   «         ¦  «        S )z-Get the total display width of a text string.c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S )N)r    )Ú.0r   r   s     €r   ú	<genexpr>z3TextInputHandler._get_text_width.<locals>.<genexpr>D   s1   øè è € Ð?Ð?°$�4×'Ò'¨Ñ-Ô-Ð?Ð?Ð?Ð?Ð?Ð?r   )Úsum)r   r   s   ` r   r   z TextInputHandler._get_text_widthB   s&   ø€ åÐ?Ð?Ð?Ð?¸$Ð?Ñ?Ô?Ñ?Ô?Ð?r   c                 ó@   — t          d| j        dz
  ¦  «        | _        d S )Nr   r   )Úmaxr   r   s    r   Ú_move_cursor_leftz"TextInputHandler._move_cursor_leftF   s"   € Ý   DÔ$6¸Ñ$:Ñ;Ô;ˆÔÐÐr   c                 ód   — t          t          | j        ¦  «        | j        dz   ¦  «        | _        d S ©Nr   )ÚminÚlenr   r   r   s    r   Ú_move_cursor_rightz#TextInputHandler._move_cursor_rightI   s*   € Ý ¥ T¤Y¡¤°Ô1CÀaÑ1GÑHÔHˆÔÐÐr   c                 óˆ   — | j         d | j        …         |z   | j         | j        d …         z   | _         | xj        dz  c_        d S r*   r   )r   r   s     r   Ú_insert_charzTextInputHandler._insert_charL   sR   € àŒIÐ*˜Ô*Ð*Ô+¨dÑ2°T´Y¸tÔ?QÐ?SÐ?SÔ5TÑTð 	Œ	ð 	ÐÔ˜aÑÐÔÐÐr   c                 ó¢   — | j         dk    rdS | j        d| j         dz
  …         | j        | j         d…         z   | _        | xj         dz  c_         dS )z+Delete character before cursor (backspace).r   Nr   )r   r   r   s    r   Ú_delete_charzTextInputHandler._delete_charR   sg   € àÔ Ò"Ð"ØˆFð ŒIÐ.˜Ô*¨QÑ.Ð.Ô/°$´)¸DÔ<NÐ<PÐ<PÔ2QÑQð 	Œ	ð 	ÐÔ˜aÑÐÔÐÐr   c                 ó¦   — | j         t          | j        ¦  «        k    rdS | j        d| j         …         | j        | j         dz   d…         z   | _        dS )z(Delete character at cursor (delete key).Nr   )r   r,   r   r   s    r   Ú_delete_forwardz TextInputHandler._delete_forward\   sW   € àÔ¥ T¤Y¡¤Ò/Ð/ØˆFð ŒIÐ*˜Ô*Ð*Ô+¨d¬i¸Ô8JÈQÑ8NÐ8PÐ8PÔ.QÑQð 	Œ	ˆ	ˆ	r   Úkeyc                 ó  — || j         k    s| j        r!|| j        k    r|                      ¦   «          d S || j        k    s| j        r!|| j        k    r|                      ¦   «          d S || j        k    r|                      ¦   «          d S || j        k    r|  	                    ¦   «          d S || j
        | j        | j        | j        | j        fv rd S t          j        dk    r|r|d         dv rd S |D ]}|                      |¦  «         Œd S )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   sP  € à�$Ô$Ò$Ð$ØÔð %Ø#&¨$Ô*<Ò#<Ð#<à×ÒÑÔÐÐÐà�D”OÒ#Ð#¨¬Ð#¸CÀ4Ä?Ò<RÐ<RØ× Ò Ñ"Ô"Ð"Ð"Ð"Ø�D”MÒ!Ð!Ø×"Ò"Ñ$Ô$Ð$Ð$Ð$Ø�D”NÒ"Ð"Ø×#Ò#Ñ%Ô%Ð%Ð%Ð%ØØŒKØŒMØŒNØÔØŒLð
ð 
ð 
ð ˆDõ Œ|˜wÒ&Ð&¨3Ð&°3°q´6Ð=MÐ3MÐ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ð Eñ „XðEð ð˜cð  cð ð ð ñ „\ðð@ Cð @¨Cð @ð @ð @ð @ð<ð <ð <ð <ðIð Ið Ið Ið  ð  ¨ð  ð  ð  ð  ð ð  ð  ð  ð
ð 
ð 
ð 
ð(˜cð ( dð (ð (ð (ð (ð (ð (r   r   )rI   rC   r   r   rN   r   r   ú<module>rO      s\   ðØ .Ð .à 
€
€
€
Ø Ð Ð Ð ð}(ð }(ð }(ð }(ð }(ñ }(ô }(ð }(ð }(ð }(r   