
    ,h                        d dl mZ d dlmZmZmZmZmZmZ d dl	Z	d dl
m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 erddlmZ  G d de      Zy)    )annotations)TYPE_CHECKINGAnyDictListOptionalTupleN)RenderableType)ControlControlType)
LiveRender)Segment   )TextInputHandler)Element)	BaseStylec                       e Zd Z	 	 d	 	 	 d fdZdddZedd       ZddZddZedd       Z	ddZ
ddZdd	Zdd
ZddZddZddZd Z xZS )	Containerc                    g | _         d| _        d| _        t        d      | _        t
        |   ||       | j                  j                  | _        y )Nr    )stylemetadata)	elementsactive_element_indexprevious_element_indexr   _live_rendersuper__init__r   console)selfr   r   	__class__s      X/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/rich_toolkit/container.pyr   zContainer.__init__   sK    
 (*$%!&'#&rNux8zz))    c                   | j                   j                  | |      }| j                  j                  |       | j                  | j
                     }t        |d      r|j                  nd} | j                  j                  t        j                  |      g| j                         | j                    |s( | j                  j                  | j                           y y )Ndoneshould_show_cursorF)r   render_elementr   set_renderabler   r   hasattrr'   r   printr   show_cursormove_cursor_at_beginningmove_cursor_to_active_element)r    r&   contentactive_elementr'   s        r"   _refreshzContainer._refresh!   s    **++Dt+<((1t'@'@A ~';< -- 	 	 23	
**,	
 	
 DLL335 r#   c                4    | j                   | j                     S N)r   r   r    s    r"   _active_elementzContainer._active_element8   s    }}T6677r#   c                    | j                   j                  |d|       }| j                  j                  || j                  j                  d      }t        j                  |      S )NF)r&   parent)pad)r   r(   r   render_linesoptionsr   	get_shape)r    element
renderableliness       r"   	_get_sizezContainer._get_size<   sT    ZZ..wU4.P
))*dll6J6JPU)V  ''r#   c                    d}t        |dz         D ]Z  }| j                  |   }||k(  r+|| j                  j                  ||       j                  z  }B| j                  |      }||d   z  }\ |S )Nr   r   r7   )ranger   r   get_cursor_offset_for_elementtopr?   )r    element_indexpositionicurrent_elementsizes         r"   _get_element_positionzContainer._get_element_positionC   s    }q() 		$A"mmA.OM!DJJDD#D E # ~~o6DG#		$ r#   c                8    | j                  | j                        S r3   )rJ   r   r4   s    r"   _active_element_positionz"Container._active_element_positionS   s    ))$*C*CDDr#   c                    | j                   j                  y| j                  |      }| j                   j                  \  }}||z
  S Nr   )r   _shaperJ   )r    rE   rF   _heights        r"   get_offset_for_elementz Container.get_offset_for_elementW   sG    ##+--m<%%,,	6  r#   c                8    | j                  | j                        S r3   )rR   r   r4   s    r"   get_offset_for_active_elementz'Container.get_offset_for_active_elementa   s    **4+D+DEEr#   c                    | j                         }|dkD  rt        t        j                  |f      fnd}| j                  j                  | j                  |       j                  }t        j                  |      g|S )Nr    rA   )	rT   r   r   	CURSOR_UPr   rC   r5   leftmove_to_column)r    move_upmove_cursorcursor_lefts       r"   r.   z'Container.move_cursor_to_active_elementd   s    446 =DaKWk++W568R 	 jj>>   ? 

$ 	 &&{3BkBBr#   c                    | j                   j                  t               fS | j                   j                         f}| j	                  | j
                        }|dk(  r|S t        t        j                  |f      g|S rN   )r   rO   r   position_cursorrR   r   r   CURSOR_DOWN)r    original	move_downs      r"   r-   z"Container.move_cursor_at_beginningq   s    ##+I<%%5579 //0K0KL	>O (()4
 	
 	
r#   c                    ddl m} ddlm} | j                  | j
                     }t        |||f      r|j                          |j                  du ryy)Nr   )Input)MenuFT)	inputrc   menurd   r   r   
isinstanceon_validatevalid)r    rc   rd   r0   s       r"   handle_enter_keyzContainer.handle_enter_key   sJ     t'@'@Anudm4&&(##u,r#   c                    | xj                   dz  c_         | j                   t        | j                        k\  rd| _         | j                  j                  du r| j                          y y Nr   r   F)r   lenr   r5   	focusable_focus_nextr4   s    r"   ro   zContainer._focus_next   sW    !!Q&!$$DMM(::()D%))U2 3r#   c                    | xj                   dz  c_         | j                   dk  rt        | j                        dz
  | _         | j                  j                  du r| j                          y y rl   )r   rm   r   r5   rn   _focus_previousr4   s    r"   rq   zContainer._focus_previous   s\    !!Q&!$$q((+DMM(:Q(>D%))U2  " 3r#   c                   | j                          	 	 t        j                         }| j                  | _        |t
        j                  t
        j                  fv rdt        | j                  d      r| j                  j                          |t
        j                  k(  r| j                          n| j                          | j                  | j                     }|j                  |       |t
        j                  k(  r| j!                         rn| j                          | j                  d       y # t"        $ r@ | j                  D ]  }|j%                           | j                  d       t'                Y ]w xY w)NTon_blurr%   )r1   clickgetcharr   r   r   SHIFT_TAB_KEYTAB_KEYr*   r5   rs   rq   ro   r   
handle_key	ENTER_KEYrj   KeyboardInterrupt	on_cancelexit)r    keyr0   r<   s       r"   runzContainer.run   s3   mmo.2.G.G++99;K;S;STTt33Y?,,446.<<<,,.((*!%t/H/H!I))#.*444,,.- > 	4  % #}} (G%%'( 4(s   C8D1 D1 1AE:9E:)NN)r   zOptional[BaseStyle]r   zOptional[Dict[Any, Any]])F)r&   bool)returnr   )r<   r   r   zTuple[int, int])rE   intr   r   )r   r   )r   zTuple[Control, ...])r   r   )r   None)__name__
__module____qualname__r   r1   propertyr5   r?   rJ   rL   rR   rT   r.   r-   rj   ro   rq   r~   __classcell__)r!   s   @r"   r   r      s     &*-1*"* +*. 8 8(  E E!FC
&#"!r#   r   )
__future__r   typingr   r   r   r   r   r	   rt   rich.consoler
   rich.controlr   r   rich.live_renderr   rich.segmentr   _input_handlerr   r<   r   stylesr   r   rV   r#   r"   <module>r      s7    " B B  ' - '   , !t! t!r#   