
    iF                     ,    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/hwPaymentPortal-be-dev/hw-payment-portal-api/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'     ##DII.B0B0B$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$     TYY1C1Ca1G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    II***+d2TYYt?Q?Q?S5T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`    " II.**Q./$))D<N<N<P2Q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    TYY/ II***+dii8J8JQ8N8P.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$*<*<#<DOO#C4??<R  "DMM!""$DNN"##%KKMMNNLL
 
  ||w&33q6=M3M  (!!$'(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   