
    H)                     $   S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  \	R0                  S 5       r           SS jrg)zgcloud interactive layout.

This is the prompt toolkit layout for the shell prompt. It determines the
positioning and layout of the prompt, toolbars, autocomplete, etc.
    )absolute_import)division)unicode_literals)help_window)enums)filters)layout)	shortcuts)token)
containers)controls)	dimension)margins)menus)
processors)prompt)screen)toolbarsc                     U R                   R                  R                  =(       a7    U R                   R                  R                  U R                  R                  :g  $ )z&Determine if the input field is empty.)current_bufferdocumenttextconfigcontext)clis    4lib/googlecloudsdk/command_lib/interactive/layout.pyUserTypingFilterr   +   sI     


%
%
*
* A



%
%
*
*cjj.@.@
@B    Nc                   ^  Ub  [        U5      (       d   eUb  [        U5      (       d   eUb  [        U5      (       d   eUb  [        U5      (       d   eT R                  (       a	  U(       a   e[        R                  " T R                  5      n[        R                  " U	5      n	Uc  U 4S jn[
        R                  " U5      u  pn[        R                  " [        R                  " SS9[        R                  " [        R                  5      5      [        R                  " 5       [        R                  " [        R                  " 5       [        R                  " [        R                  5      [        R                   " 5       ) -  5      [        R                  " [        R"                  " 5       U5      /nU(       a  UR%                  U5        UR'                  [        R                  " [        R(                  " U5      U	) 5      5        / nT R*                  (       aY  [,        R.                  R1                  T R2                  5      nU
[        R                   " 5       ) -  [        R4                  " 5       -  nO_[,        R.                  " T R2                  T R2                  S9nU
[6        -  [        R                   " 5       ) -  [        R4                  " 5       -  nUR'                  [8        R:                  " [<        R>                  " [<        R@                  " [B        RD                  " [F        RH                  " S[J        RL                  RN                  5      S9[,        R.                  R1                  S5      S9[<        R@                  " [P        RR                  " [F        RH                  " S	[J        RL                  RT                  5      S
9US9/5      US95        T RV                  (       a  U(       d2  T RX                  (       a  U(       d  T RZ                  (       Ga:  U(       Ga2  / nUR'                  [<        R@                  " [B        RD                  " [F        RH                  " S[J        RL                  RN                  5      S9[,        R.                  R1                  S5      S95        T RZ                  (       Ga
  U(       Ga  UR'                  [<        R@                  " [B        R\                  " U[F        RH                  " S	[J        RL                  R^                  5      S
9S[,        R.                  R1                  S5      S95        UR'                  [<        R@                  " [B        RD                  " [F        RH                  " S[J        RL                  RN                  5      S9[,        R.                  R1                  S5      S95        T RV                  (       a  U(       a  UR'                  [<        R@                  " [B        R\                  " U[F        RH                  " S	[J        RL                  RT                  5      S
9[,        R.                  R1                  S5      S95        T RX                  (       a  U(       a  UR'                  [<        R@                  " [B        R\                  " U[F        RH                  " S	[J        RL                  RT                  5      S
9[,        R.                  R1                  S5      S95        UR'                  [8        R:                  " [<        R>                  " U5      [        R                   " 5       ) [        R4                  " 5       -  S95        S n[<        R>                  " [8        R`                  " [<        R>                  " [8        R:                  " [<        R@                  " [B        R\                  " U5      SUS9[        Rb                  " U5      5      [<        R@                  " [B        Rd                  " UUSS9U[f        Rh                  " [f        Rj                  " UU5      U	S9/US9/5      [<        Rl                  " SS[n        Rp                  " SS[        R                  " [        R                  5      U) -  S9S9[<        Rl                  " S[n        Rr                  " S[        R                  " [        R                  5      U-  S9S9/5      [t        Rv                  " 5       [t        Rx                  " 5       [8        R:                  " [t        Rz                  " 5       U	5      [8        R:                  " [t        R|                  " 5       U	5      /U-   5      $ )z+Create a container instance for the prompt.c                 R   > [         R                  R                  TR                  4/$ )N)r   TokenPromptr   )_r   s    r   <lambda>$CreatePromptLayout.<locals>.<lambda>L   s    EKK$6$6#F"Gr   T)preview_search)	preferredmaxr#   )char   )height )default_char)filter   )
wrap_linesr+   c                 4   U R                   R                  (       ai  U R                  (       dX  U R                  n[	        U 5      (       d  UR
                  (       a+  [        R                  " U R                   R                  S-   S9$ [        R                  " 5       $ )z*Determine the height for the input buffer.r*   )min)r   completion_menu_linesis_doner   r   complete_stater   LayoutDimension)r   bufs     r   	GetHeight%CreatePromptLayout.<locals>.GetHeight   sk     zz'' c	#		#"4"4((

00146 	6$$&&r   )dont_extend_heightr0   )input_processorslexerr&   )
get_heightleft_marginsr0      )
max_heightscroll_offsetextra_filter)xcursorycursorcontent)	show_metarB   )rD   rE   )?callabler   r   to_cli_filtermulti_column_completion_menur
   _split_multiline_promptr   ConditionalProcessorHighlightSearchProcessorHasFocusr   SEARCH_BUFFERHighlightSelectionProcessorAppendAutoSuggestionDEFAULT_BUFFERIsDonePasswordProcessorextendappendDefaultPromptfixed_prompt_positionr   r6   exact
help_linesRendererHeightIsKnownr   r   ConditionalContainerr	   HSplitWindowr   FillControlr   Charr   r!   HSepr   HelpWindowControlToolbarbottom_status_linebottom_bindings_linedebugTokenListControlTextFloatContainer	ConditionBufferControlr   ConditionalMarginPromptMarginFloatr   CompletionsMenuMultiColumnCompletionsMenupt_toolbarsValidationToolbarSystemToolbar
ArgToolbarSearchToolbar)r   r<   is_passwordget_prompt_tokensget_continuation_tokensget_debug_tokensget_bottom_status_tokensget_bottom_toolbar_tokensextra_input_processors	multiline	show_helpr0   rI   has_before_tokensget_prompt_tokens_1get_prompt_tokens_2r;   r   help_heighthelp_filterwindowsr8   s   `                     r   CreatePromptLayoutr   2   s    
"	)X.  .    
 	"	*h/! /! ! 
!		"h/@&A&AA	A		!X.>%?%??	?mm 12	2!(!6!6))"+##I.)G ''(9: >*= %% 
-
-T
B


5..
/1 ,,.%%j&E&E&G&-&6&6u7K7K&L)0)9(9':; %%j&B&B&D&13" 23 %%


2
3iZAB
 (!!++11&2C2CDK 0000023K ++##K //7>>3C2CC0023K
//%%
--mm&&FKKU[[=M=M,NO"2288;= mm//#);;sEKK4G4G#HJ$&	  
 $<!!&?lll'GNN6==&++c5;;3C3C"DE((..q13 4 |||(nn
--''"%{{30@0@AC ..44Q79: nnV]]


FKKU[[5E5E$F
G**0035 6   %=nn
--''*%{{30C0CDF ..44Q7	9: ""'@nn
--''+%{{30C0CDF ..44Q7	9: OO''MM'"NN$$w'D'D'FF	HI
'  

------//0CD)-!+
 ##$56 mm(('7! &* ' //!../B/FH!*  (% @ ll//!#$%!**5+?+?@778	 ll:: $!**5+?+?@67	?8r ##%! %%k&<&<&>	J%%k&?&?&A9MAAB CA A
 Ar   )NFNNNNNNFTT)__doc__
__future__r   r   r   &googlecloudsdk.command_lib.interactiver   prompt_toolkitr   r   r	   r
   r   prompt_toolkit.layoutr   r   r   r   r   r   r   r   r   rp   ri   r   r    r   r   <module>r      s     '  ' >   " ! $   , * + ) ' , ( ( 9 	B B "#()-/3(,0415.2!&!%"&Lr   