
    'h"                     4   S SK r S SKJr  S SKJrJrJrJr  S SKJ	r	  SSK
Jr   " S S5      r " S	 S
5      r " S S5      r " S S5      r " S S\5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S 5      r " S! S"5      r " S# S$5      r " S% S&5      r " S' S(5      r " S) S*5      r " S+ S,5      r " S- S.5      r " S/ S05      r \ " S1 S25      5       r! " S3 S45      r" " S5 S65      r#g)7    N)	dataclass)AnyCallableOptionalUnion)command_builder   )Sessionc                   $    \ rS rSrSrSrSrSrSrg)ReadinessState   zSRepresents the stage of document loading at which a navigation command will return.noneinteractivecomplete N)	__name__
__module____qualname____firstlineno____doc__NONEINTERACTIVECOMPLETE__static_attributes__r       x/var/www/home/psychics-availability/venv/lib/python3.13/site-packages/selenium/webdriver/common/bidi/browsing_context.pyr   r      s    ]DKHr   r   c                   (    \ rS rSrSrSrSrSrSrSr	g)	UserPromptType#   z*Represents the possible user prompt types.alertbeforeunloadconfirmpromptr   N)
r   r   r   r   r   ALERTBEFORE_UNLOADCONFIRMPROMPTr   r   r   r   r   r   #   s    4E"MGFr   r   c                   T    \ rS rSrSrS\S\\   S\S\4S jr\	S\
S	S 4S
 j5       rSrg)NavigationInfo,   z*Provides details of an ongoing navigation.context
navigation	timestampurlc                 4    Xl         X l        X0l        X@l        g Nr+   r,   r-   r.   )selfr+   r,   r-   r.   s        r   __init__NavigationInfo.__init__/   s     $"r   jsonreturnc                    UR                  S5      nUb  [        U[        5      (       d  [        S5      eUR                  S5      nUb   [        U[        5      (       d  [        S5      eUR                  S5      nUb  [        U[        5      (       a  US:  a  [        S5      eUR                  S5      nUb  [        U[        5      (       d  [        S	5      eU " X#XE5      $ )
zCreates a NavigationInfo instance from a dictionary.

Parameters:
-----------
    json: A dictionary containing the navigation information.

Returns:
-------
    NavigationInfo: A new instance of NavigationInfo.
r+   (context is required and must be a stringr,   navigation must be a stringr-   r   8timestamp is required and must be a non-negative integerr.   $url is required and must be a stringget
isinstancestr
ValueErrorint)clsr5   r+   r,   r-   r.   s         r   	from_jsonNavigationInfo.from_json;   s     ((9%?*Wc":":GHHXXl+
!*Z*E*E:;;HH[)	Jy#$>$>)a-WXXhhuo;jc22CDD7	77r   r1   N)r   r   r   r   r   r?   r   rA   r3   classmethoddictrC   r   r   r   r   r)   r)   ,   sW    4

 SM
 	

 
 8T 8&6 8 8r   r)   c                   z    \ rS rSrSr  SS\S\S\\S       S\S\S	\\   S
\\   4S jjr\	S\
SS 4S j5       rSrg)BrowsingContextInfoZ   z)Represents the properties of a navigable.Nr+   r.   childrenclient_windowuser_contextparentoriginal_openerc                 X    Xl         X l        X0l        X`l        XPl        Xpl        X@l        g r0   )r+   r.   rJ   rM   rL   rN   rK   )r2   r+   r.   rJ   rK   rL   rM   rN   s           r   r3   BrowsingContextInfo.__init__]   s*      (.*r   r5   r6   c           
         SnUR                  S5      nUb{  [        U[        5      (       d  [        S5      e/ nU HS  n[        U[        5      (       d  [        S[        U5       35      eUR                  [        R                  U5      5        MU     UR                  S5      nUb  [        U[        5      (       d  [        S5      eUR                  S5      nUb  [        U[        5      (       d  [        S5      eUR                  S	5      nUb   [        U[        5      (       d  [        S
5      eUR                  S5      nUb  [        U[        5      (       d  [        S5      eUR                  S5      n	U	b   [        U	[        5      (       d  [        S5      eUR                  S5      n
U
b  [        U
[        5      (       d  [        S5      eU " UUUU
UUU	S9$ )zCreates a BrowsingContextInfo instance from a dictionary.

Parameters:
-----------
    json: A dictionary containing the browsing context information.

Returns:
-------
    BrowsingContextInfo: A new instance of BrowsingContextInfo.
NrJ   z#children must be a list if providedz%Each child must be a dictionary, got r+   r8   r.   r;   rM   z#parent must be a string if provideduserContextz,userContext is required and must be a stringoriginalOpenerz+originalOpener must be a string if providedclientWindowz-clientWindow is required and must be a string)r+   r.   rJ   rK   rL   rM   rN   )
r=   r>   listr@   rF   typeappendrH   rC   r?   )rB   r5   rJ   raw_childrenchildr+   r.   rM   rL   rN   rK   s              r   rC   BrowsingContextInfo.from_jsono   s    xx
+#lD11 !FGGH%!%..$'LTRW[M%Z[[ 3 = =e DE &
 ((9%?*Wc":":GHHhhuo;jc22CDD(#j&=&=BCCxx.z,'D'DKLL((#34&z/3/O/OJKK0 
=#(F(FLMM'%+
 	
r   )rJ   rK   r+   rN   rM   r.   rL   NN)r   r   r   r   r   r?   r   rU   r3   rE   rF   rC   r   r   r   r   rH   rH   Z   s    3 !%)-++ + 4 567	+
 + + + "#+$ 7
T 7
&; 7
 7
r   rH   c            
       f   ^  \ rS rSrSrS\S\\   S\S\S\4
U 4S jjr\	S	\
S
S 4S j5       rSrU =r$ )DownloadWillBeginParams   z+Parameters for the downloadWillBegin event.r+   r,   r-   r.   suggested_filenamec                 2   > [         TU ]  XX45        XPl        g r0   )superr3   r_   )r2   r+   r,   r-   r.   r_   	__class__s         r   r3    DownloadWillBeginParams.__init__   s     	i="4r   r5   r6   c                 *   UR                  S5      nUb  [        U[        5      (       d  [        S5      eUR                  S5      nUb   [        U[        5      (       d  [        S5      eUR                  S5      nUb  [        U[        5      (       a  US:  a  [        S5      eUR                  S5      nUb  [        U[        5      (       d  [        S	5      eUR                  S
5      nUb  [        U[        5      (       d  [        S5      eU " UUUUUS9$ )zCreates a DownloadWillBeginParams instance from a dictionary.

Parameters:
-----------
    json: A dictionary containing the download parameters.

Returns:
-------
    DownloadWillBeginParams: A new instance of DownloadWillBeginParams.
r+   r8   r,   r9   r-   r   r:   r.   r;   suggestedFilenamez2suggestedFilename is required and must be a string)r+   r,   r-   r.   r_   r<   )rB   r5   r+   r,   r-   r.   r_   s          r   rC   !DownloadWillBeginParams.from_json   s    ((9%?*Wc":":GHHXXl+
!*Z*E*E:;;HH[)	Jy#$>$>)a-WXXhhuo;jc22CDD!XX&9:%Z8JC-P-PQRR!1
 	
r   )r_   )r   r   r   r   r   r?   r   rA   r3   rE   rF   rC   r   __classcell__)rb   s   @r   r]   r]      sb    5	5	5 SM	5 		5
 	5  	5 %
T %
&? %
 %
r   r]   c                   ^    \ rS rSrSr SS\S\S\S\S\\   4
S	 jjr\S
\	SS 4S j5       r
Srg)UserPromptOpenedParams   z*Parameters for the userPromptOpened event.Nr+   handlermessagerV   default_valuec                 @    Xl         X l        X0l        X@l        XPl        g r0   r+   rk   rl   rV   rm   )r2   r+   rk   rl   rV   rm   s         r   r3   UserPromptOpenedParams.__init__   s     	*r   r5   r6   c                    UR                  S5      nUb  [        U[        5      (       d  [        S5      eUR                  S5      nUb  [        U[        5      (       d  [        S5      eUR                  S5      nUb  [        U[        5      (       d  [        S5      eUR                  S5      nUb  [        U[        5      (       d  [        S5      eUR                  S	5      nUb   [        U[        5      (       d  [        S
5      eU " UUUUUS9$ )zCreates a UserPromptOpenedParams instance from a dictionary.

Parameters:
-----------
    json: A dictionary containing the user prompt parameters.

Returns:
-------
    UserPromptOpenedParams: A new instance of UserPromptOpenedParams.
r+   r8   rk   z(handler is required and must be a stringrl   z(message is required and must be a stringrV   %type is required and must be a stringdefaultValuez)defaultValue must be a string if providedro   )r=   r>   r?   r@   )rB   r5   r+   rk   rl   
type_valuerm   s          r   rC    UserPromptOpenedParams.from_json   s     ((9%?*Wc":":GHH((9%?*Wc":":GHH((9%?*Wc":":GHHXXf%
Z
C%@%@DEE0$Zs-K-KHII'
 	
r   )r+   rm   rk   rl   rV   r0   )r   r   r   r   r   r?   r   r3   rE   rF   rC   r   r   r   r   ri   ri      sf    4 (,++ + 	+
 +  }+ %
T %
&> %
 %
r   ri   c            
       Z    \ rS rSrSr SS\S\S\S\\   4S jjr\	S	\
S
S 4S j5       rSrg)UserPromptClosedParamsi  z*Parameters for the userPromptClosed event.Nr+   acceptedrV   	user_textc                 4    Xl         X l        X0l        X@l        g r0   r+   rx   rV   ry   )r2   r+   rx   rV   ry   s        r   r3   UserPromptClosedParams.__init__  s      	"r   r5   r6   c                    UR                  S5      nUb  [        U[        5      (       d  [        S5      eUR                  S5      nUb  [        U[        5      (       d  [        S5      eUR                  S5      nUb  [        U[        5      (       d  [        S5      eUR                  S5      nUb   [        U[        5      (       d  [        S5      eU " UUUUS	9$ )
zCreates a UserPromptClosedParams instance from a dictionary.

Parameters:
-----------
    json: A dictionary containing the user prompt closed parameters.

Returns:
-------
    UserPromptClosedParams: A new instance of UserPromptClosedParams.
r+   r8   rx   z*accepted is required and must be a booleanrV   rr   userTextz%userText must be a string if providedr{   )r=   r>   r?   r@   bool)rB   r5   r+   rx   rt   ry   s         r   rC    UserPromptClosedParams.from_json*  s     ((9%?*Wc":":GHH88J':h#=#=IJJXXf%
Z
C%@%@DEEHHZ(	 Is)C)CDEE	
 	
r   )rx   r+   rV   ry   r0   )r   r   r   r   r   r?   r   r   r3   rE   rF   rC   r   r   r   r   rw   rw     s\    4 $(
#
# 
# 	
#
 C=
#  
T  
&>  
  
r   rw   c                   J    \ rS rSrSrS\S\S\4S jr\S\	SS 4S	 j5       r
S
rg)HistoryUpdatedParamsiN  z(Parameters for the historyUpdated event.r+   r-   r.   c                 (    Xl         X l        X0l        g r0   r+   r-   r.   )r2   r+   r-   r.   s       r   r3   HistoryUpdatedParams.__init__Q  s     "r   r5   r6   c                 V   UR                  S5      nUb  [        U[        5      (       d  [        S5      eUR                  S5      nUb  [        U[        5      (       a  US:  a  [        S5      eUR                  S5      nUb  [        U[        5      (       d  [        S5      eU " UUUS9$ )	zCreates a HistoryUpdatedParams instance from a dictionary.

Parameters:
-----------
    json: A dictionary containing the history updated parameters.

Returns:
-------
    HistoryUpdatedParams: A new instance of HistoryUpdatedParams.
r+   r8   r-   r   r:   r.   r;   r   r<   )rB   r5   r+   r-   r.   s        r   rC   HistoryUpdatedParams.from_json[  s     ((9%?*Wc":":GHHHH[)	Jy#$>$>)a-WXXhhuo;jc22CDD
 	
r   r   N)r   r   r   r   r   r?   rA   r3   rE   rF   rC   r   r   r   r   r   r   N  sI    2  	 
T 
&< 
 
r   r   c                   4    \ rS rSrSrSr\S\4S j5       rSr	g)ContextCreatediz  z5Event class for browsingContext.contextCreated event.browsingContext.contextCreatedr5   c                 Z    [        U[        5      (       a  U$ [        R                  U5      $ r0   r>   rH   rC   rB   r5   s     r   rC   ContextCreated.from_json  &    d/00K",,T22r   r   N
r   r   r   r   r   event_classrE   rF   rC   r   r   r   r   r   r   z  s#    ?2K3T 3 3r   r   c                   4    \ rS rSrSrSr\S\4S j5       rSr	g)ContextDestroyedi  z7Event class for browsingContext.contextDestroyed event. browsingContext.contextDestroyedr5   c                 Z    [        U[        5      (       a  U$ [        R                  U5      $ r0   r   r   s     r   rC   ContextDestroyed.from_json  r   r   r   Nr   r   r   r   r   r     s#    A4K3T 3 3r   r   c                   4    \ rS rSrSrSr\S\4S j5       rSr	g)NavigationStartedi  z8Event class for browsingContext.navigationStarted event.!browsingContext.navigationStartedr5   c                 Z    [        U[        5      (       a  U$ [        R                  U5      $ r0   r>   r)   rC   r   s     r   rC   NavigationStarted.from_json  %    dN++K''--r   r   Nr   r   r   r   r   r     #    B5K.T . .r   r   c                   4    \ rS rSrSrSr\S\4S j5       rSr	g)NavigationCommittedi  z:Event class for browsingContext.navigationCommitted event.#browsingContext.navigationCommittedr5   c                 Z    [        U[        5      (       a  U$ [        R                  U5      $ r0   r   r   s     r   rC   NavigationCommitted.from_json  r   r   r   Nr   r   r   r   r   r     s#    D7K.T . .r   r   c                   4    \ rS rSrSrSr\S\4S j5       rSr	g)NavigationFailedi  z7Event class for browsingContext.navigationFailed event. browsingContext.navigationFailedr5   c                 Z    [        U[        5      (       a  U$ [        R                  U5      $ r0   r   r   s     r   rC   NavigationFailed.from_json  r   r   r   Nr   r   r   r   r   r     #    A4K.T . .r   r   c                   4    \ rS rSrSrSr\S\4S j5       rSr	g)NavigationAbortedi  z8Event class for browsingContext.navigationAborted event.!browsingContext.navigationAbortedr5   c                 Z    [        U[        5      (       a  U$ [        R                  U5      $ r0   r   r   s     r   rC   NavigationAborted.from_json  r   r   r   Nr   r   r   r   r   r     r   r   r   c                   4    \ rS rSrSrSr\S\4S j5       rSr	g)DomContentLoadedi  z7Event class for browsingContext.domContentLoaded event. browsingContext.domContentLoadedr5   c                 Z    [        U[        5      (       a  U$ [        R                  U5      $ r0   r   r   s     r   rC   DomContentLoaded.from_json  r   r   r   Nr   r   r   r   r   r     r   r   r   c                   4    \ rS rSrSrSr\S\4S j5       rSr	g)Loadi  z+Event class for browsingContext.load event.browsingContext.loadr5   c                 Z    [        U[        5      (       a  U$ [        R                  U5      $ r0   r   r   s     r   rC   Load.from_json  r   r   r   Nr   r   r   r   r   r     s#    5(K.T . .r   r   c                   4    \ rS rSrSrSr\S\4S j5       rSr	g)FragmentNavigatedi  z8Event class for browsingContext.fragmentNavigated event.!browsingContext.fragmentNavigatedr5   c                 Z    [        U[        5      (       a  U$ [        R                  U5      $ r0   r   r   s     r   rC   FragmentNavigated.from_json  r   r   r   Nr   r   r   r   r   r     r   r   r   c                   4    \ rS rSrSrSr\S\4S j5       rSr	g)DownloadWillBegini  z8Event class for browsingContext.downloadWillBegin event.!browsingContext.downloadWillBeginr5   c                 ,    [         R                  U5      $ r0   )r]   rC   r   s     r   rC   DownloadWillBegin.from_json  s    &0066r   r   Nr   r   r   r   r   r     s#    B5K7T 7 7r   r   c                   4    \ rS rSrSrSr\S\4S j5       rSr	g)UserPromptOpenedi  z7Event class for browsingContext.userPromptOpened event. browsingContext.userPromptOpenedr5   c                 ,    [         R                  U5      $ r0   )ri   rC   r   s     r   rC   UserPromptOpened.from_json      %//55r   r   Nr   r   r   r   r   r     #    A4K6T 6 6r   r   c                   4    \ rS rSrSrSr\S\4S j5       rSr	g)UserPromptClosedi  z7Event class for browsingContext.userPromptClosed event. browsingContext.userPromptClosedr5   c                 ,    [         R                  U5      $ r0   )rw   rC   r   s     r   rC   UserPromptClosed.from_json  r   r   r   Nr   r   r   r   r   r     r   r   r   c                   4    \ rS rSrSrSr\S\4S j5       rSr	g)HistoryUpdatedi  z5Event class for browsingContext.historyUpdated event.browsingContext.historyUpdatedr5   c                 ,    [         R                  U5      $ r0   )r   rC   r   s     r   rC   HistoryUpdated.from_json	  s    #--d33r   r   Nr   r   r   r   r   r     s#    ?2K4T 4 4r   r   c                   4    \ rS rSr% \\S'   \\S'   \\S'   Srg)EventConfigi  	event_key
bidi_eventr   r   N)r   r   r   r   r?   __annotations__rV   r   r   r   r   r   r     s    NOr   r   c            	           \ rS rSrSrS\\\4   4S jrS\S\4S jr	SS	\S
\
\\      SS4S jjrS	\SS4S jrS	\S\SS4S jrS	\S\SS4S jrSS\S\S
\
\\      S\4S jjrS\S\SS4S jrSS jrSrg)_EventManageri  zFClass to manage event subscriptions and callbacks for BrowsingContext.event_configsc                 6   Xl         X l        0 U l        UR                  5        Vs0 s H  o3R                  UR
                  _M     snU l        SR                  [        UR                  5       5      5      U l
        [        R                  " 5       U l        g s  snf )Nz, )connr   subscriptionsvaluesr   r   _bidi_to_classjoinsortedkeys_available_events	threadingLock_subscription_lock)r2   r   r   configs       r   r3   _EventManager.__init__  sz    	*#%S`SgSgSijSi00&2D2DDSij!%6-2D2D2F+G!H"+.."2 ks    Beventr6   c                     U R                   R                  U5      nU(       d  [        SU SU R                   35      eU$ )NzEvent 'z' not found. Available events: )r   r=   r@   r   )r2   r   event_configs      r   validate_event_EventManager.validate_event!  sA    ))--e4wug-LTMcMcLdeffr   Nr   contextsc                    U R                      XR                  ;  aL  [        U R                  5      nU R                  R	                  UR                  XS95        / U R                  U'   SSS5        g! , (       d  f       g= f)zSubscribe to a BiDi event if not already subscribed.

Parameters:
----------
    bidi_event: The BiDi event name.
    contexts: Optional browsing context IDs to subscribe to.
)browsing_contextsN)r   r   r
   r   execute	subscribe)r2   r   r   sessions       r   subscribe_to_event _EventManager.subscribe_to_event'  sc     $$!3!33!$)),		!!'"3"3J"3"[\13"":.	 %$$s   AA22
B c                 2   U R                      U R                  R                  U5      nUbS  U(       dL  [        U R                  5      nU R                  R                  UR                  U5      5        U R                  U	 SSS5        g! , (       d  f       g= f)zwUnsubscribe from a BiDi event if no more callbacks exist.

Parameters:
----------
    bidi_event: The BiDi event name.
N)r   r   r=   r
   r   r   unsubscribe)r2   r   callback_listr   s       r   unsubscribe_from_event$_EventManager.unsubscribe_from_event5  sp     $$ ..22:>M(!$)),		!!'"5"5j"AB&&z2 %$$s   A2B
Bcallback_idc                     U R                      U R                  U   R                  U5        S S S 5        g ! , (       d  f       g = fr0   )r   r   rW   )r2   r   r   s      r   add_callback_to_tracking&_EventManager.add_callback_to_trackingC  s0    $$z*11+> %$$s	   5
Ac                     U R                      U R                  R                  U5      nU(       a  X#;   a  UR                  U5        S S S 5        g ! , (       d  f       g = fr0   )r   r   r=   remove)r2   r   r   r   s       r   remove_callback_from_tracking+_EventManager.remove_callback_from_trackingG  sC    $$ ..22:>M!=$$[1 %$$s   9A
Acallbackc                     U R                  U5      nU R                  R                  UR                  U5      nU R	                  UR
                  U5        U R                  UR
                  U5        U$ r0   )r   r   add_callbackr   r   r   r   )r2   r   r  r   r   r   s         r   add_event_handler_EventManager.add_event_handlerM  sd    **51ii,,\-E-ExP 	 7 7B 	%%l&=&={Kr   c                     U R                  U5      nU R                  R                  UR                  U5        U R	                  UR
                  U5        U R                  UR
                  5        g r0   )r   r   remove_callbackr   r  r   r   )r2   r   r   r   s       r   remove_event_handler"_EventManager.remove_event_handlerZ  s\    **51 			!!,":":KH 	**<+B+BKP 	##L$;$;<r   c                     U R                      U R                  (       d
   SSS5        g[        U R                  5      n[	        U R                  R                  5       5       Hw  u  p#U R                  R                  U5      nU(       d  M)  U H  nU R                  R                  XE5        M      U R                  R                  UR                  U5      5        My     U R                  R                  5         SSS5        g! , (       d  f       g= fz3Clear all event handlers from the browsing context.N)r   r   r
   r   rU   itemsr   r=   r
  r   r   clear)r2   r   r   callback_idsr   r   s         r   clear_event_handlers"_EventManager.clear_event_handlersf  s    $$%% %$ dii(G,01C1C1I1I1K,L(
"1155jA;'3		11+K (4 II%%g&9&9*&EF -M $$& %$$s   C?AC?
A,C??
D)r   r   r   r   r   r   r0   r6   N)r   r   r   r   r   rF   r?   r   r3   r   r   rU   r   r   rA   r   r  r   r  r  r  r   r   r   r   r   r     s    P3Dk1A,B 3C K 4S 4HT#Y<O 4[_ 43 3 3?3 ?S ?T ?2 2# 2RV 2s h (SWX[S\J] il 
=# 
=C 
=D 
='r   r   c                      \ rS rSrSr\" SS\5      \" SS\5      \" SS\5      \" S	S
\	5      \" SS\
5      \" SS\5      \" SS\5      \" SS\5      \" SS\5      \" SS\5      \" SS\5      \" SS\5      \" SS\5      S.rS r\S\\   4S  j5       rS!\SS"4S# jr   STS!\S%\S&\\   S'\\   S\4
S( jjrSUS!\S)\SS"4S* jjr   SVS+\S,\\   S-\S.\\   S\4
S/ jjr  SWS0\\    S1\\   S\\!   4S2 jjr"  SWS!\S3\\   S4\\   SS"4S5 jjr#   SXS!\S6\S7\\    S8\\   S9\\\      S\\   4S: jjr$ SYS!\S;\S<\\   S\4S= jjr%       SZS!\S-\S>\\   S?\S@\\   SA\\\&\ \4         SB\'SC\S\4SD jjr(  SWS!\SE\\   S<\\   S\4SF jjr)    S[S!\\   S$\\   SG\\'   SH\\\      SS"4
SI jjr*S!\SJ\ S\4SK jr+SYSL\SM\,SN\\\      S\ 4SO jjr-SL\SP\ SS"4SQ jr.S\SR jr/SSr0g")]BrowsingContextiz  z2BiDi implementation of the browsingContext module.context_createdr   context_destroyedr   dom_content_loadedr   download_will_beginr   fragment_navigatedr   history_updatedr   loadr   navigation_abortedr   navigation_committedr   navigation_failedr   navigation_startedr   user_prompt_closedr   user_prompt_openedr   )r  r  r  r  r  r  r  r  r  r   r!  r"  r#  c                 D    Xl         [        XR                  5      U l        g r0   )r   r   EVENT_CONFIGS_event_manager)r2   r   s     r   r3   BrowsingContext.__init__  s    	+D2D2DEr   r6   c                 H    [        U R                  R                  5       5      $ )zGet a list of all available event names.

Returns:
-------
    List[str]: A list of event names that can be used with event handlers.
)rU   r%  r   )rB   s    r   get_event_namesBrowsingContext.get_event_names  s     C%%**,--r   r+   Nc                 V    SU0nU R                   R                  [        SU5      5        g)zActivates and focuses the given top-level traversable.

Parameters:
-----------
    context: The browsing context ID to activate.

Raises:
------
    Exception: If the browsing context is not a top-level traversable.
r+   zbrowsingContext.activateNr   r   r   )r2   r+   paramss      r   activateBrowsingContext.activate  s(     W%		/*DfMNr   viewportoriginformatclipc                 z    XS.nUb  X5S'   Ub  XES'   U R                   R                  [        SU5      5      nUS   $ )a~  Captures an image of the given navigable, and returns it as a Base64-encoded string.

Parameters:
-----------
    context: The browsing context ID to capture.
    origin: The origin of the screenshot, either "viewport" or "document".
    format: The format of the screenshot.
    clip: The clip rectangle of the screenshot.

Returns:
-------
    str: The Base64-encoded screenshot.
)r+   r1  r2  r3  z!browsingContext.captureScreenshotdatar,  )r2   r+   r1  r2  r3  r-  results          r   capture_screenshot"BrowsingContext.capture_screenshot  sN    ( .5!G%8!6N""?3VX^#_`f~r   prompt_unloadc                 V    XS.nU R                   R                  [        SU5      5        g)zCloses a top-level traversable.

Parameters:
-----------
    context: The browsing context ID to close.
    prompt_unload: Whether to prompt to unload.

Raises:
------
    Exception: If the browsing context is not a top-level traversable.
)r+   promptUnloadzbrowsingContext.closeNr,  )r2   r+   r9  r-  s       r   closeBrowsingContext.close  s&     %D		/*A6JKr   rV   reference_context
backgroundrL   c                     SU0nUb  X%S'   Ub  X5S'   Ub  XES'   U R                   R                  [        SU5      5      nUS   $ )a  Creates a new navigable, either in a new tab or in a new window, and returns its navigable id.

Parameters:
-----------
    type: The type of the new navigable, either "tab" or "window".
    reference_context: The reference browsing context ID.
    background: Whether to create the new navigable in the background.
    user_context: The user context ID.

Returns:
-------
    str: The browsing context ID of the created navigable.
rV   referenceContextr?  rR   zbrowsingContext.creater+   r,  )r2   rV   r>  r?  rL   r-  r6  s          r   createBrowsingContext.create  s_    ( #)$():%&!#-< #$0=!""?3KV#TUi  r   	max_depthrootc                     0 nUb  XS'   Ub  X#S'   U R                   R                  [        SU5      5      nUS    Vs/ s H  n[        R	                  U5      PM     sn$ s  snf )aM  Returns a tree of all descendent navigables including the given parent itself, or all top-level contexts
when no parent is provided.

Parameters:
-----------
    max_depth: The maximum depth of the tree.
    root: The root browsing context ID.

Returns:
-------
    List[BrowsingContextInfo]: A list of browsing context information.
maxDepthrE  zbrowsingContext.getTreer   )r   r   r   rH   rC   )r2   rD  rE  r-  r6  r+   s         r   get_treeBrowsingContext.get_tree  sk    " "$ !*:!6N""?3Lf#UVFLZFXYFX7#--g6FXYYYs   Aacceptry   c                 r    SU0nUb  X$S'   Ub  X4S'   U R                   R                  [        SU5      5        g)zAllows closing an open prompt.

Parameters:
-----------
    context: The browsing context ID.
    accept: Whether to accept the prompt.
    user_text: The text to enter in the prompt.
r+   NrJ  r~   z browsingContext.handleUserPromptr,  )r2   r+   rJ  ry   r-  s        r   handle_user_prompt"BrowsingContext.handle_user_prompt  sD     #,W!5%8 !*:		/*LfUVr   locatormax_node_countserialization_optionsstart_nodesc                     XS.nUb  X6S'   Ub  XFS'   Ub  XVS'   U R                   R                  [        SU5      5      nUS   $ )ab  Returns a list of all nodes matching the specified locator.

Parameters:
-----------
    context: The browsing context ID.
    locator: The locator to use.
    max_node_count: The maximum number of nodes to return.
    serialization_options: The serialization options.
    start_nodes: The start nodes.

Returns:
-------
    List[Dict]: A list of nodes.
)r+   rN  maxNodeCountserializationOptions
startNodeszbrowsingContext.locateNodesnodesr,  )r2   r+   rN  rO  rP  rQ  r-  r6  s           r   locate_nodesBrowsingContext.locate_nodes(  s^    , .5!I%%3>" ,-B)*"#.< ""?3PRX#YZgr   r.   waitc                 f    XS.nUb  X4S'   U R                   R                  [        SU5      5      nU$ )zNavigates a navigable to the given URL.

Parameters:
-----------
    context: The browsing context ID.
    url: The URL to navigate to.
    wait: The readiness state to wait for.

Returns:
-------
    Dict: A dictionary containing the navigation result.
)r+   r.   rY  zbrowsingContext.navigater,  )r2   r+   r.   rY  r-  r6  s         r   navigateBrowsingContext.navigateI  s:    $ %1!6N""?3Mv#VWr   marginorientationpagepage_rangesscaleshrink_to_fitc	                     UUUUUS.n	Ub  X9S'   Ub  XYS'   Ub  XiS'   U R                   R                  [        SU	5      5      n
U
S   $ )a  Creates a paginated representation of a document, and returns it as a PDF document represented as a
Base64-encoded string.

Parameters:
-----------
    context: The browsing context ID.
    background: Whether to include the background.
    margin: The margin parameters.
    orientation: The orientation, either "portrait" or "landscape".
    page: The page parameters.
    page_ranges: The page ranges.
    scale: The scale.
    shrink_to_fit: Whether to shrink to fit.

Returns:
-------
    str: The Base64-encoded PDF document.
)r+   r?  r^  ra  shrinkToFitr]  r_  
pageRangeszbrowsingContext.printr5  r,  )r2   r+   r?  r]  r^  r_  r`  ra  rb  r-  r6  s              r   printBrowsingContext.printb  sk    < $&(
 %8!6N"#.< ""?3JF#STf~r   ignore_cachec                 t    SU0nUb  X$S'   Ub  X4S'   U R                   R                  [        SU5      5      nU$ )zReloads a navigable.

Parameters:
-----------
    context: The browsing context ID.
    ignore_cache: Whether to ignore the cache.
    wait: The readiness state to wait for.

Returns:
-------
    Dict: A dictionary containing the navigation result.
r+   ignoreCacherY  zbrowsingContext.reloadr,  )r2   r+   rh  rY  r-  r6  s         r   reloadBrowsingContext.reload  sJ    $ #,W!5#$0=!!6N""?3KV#TUr   device_pixel_ratiouser_contextsc                     0 nUb  XS'   Ub  X%S'   Ub  X5S'   Ub  XES'   U R                   R                  [        SU5      5        g)ae  Modifies specific viewport characteristics on the given top-level traversable.

Parameters:
-----------
    context: The browsing context ID.
    viewport: The viewport parameters.
    device_pixel_ratio: The device pixel ratio.
    user_contexts: The user context IDs.

Raises:
------
    Exception: If the browsing context is not a top-level traversable.
Nr+   r0  devicePixelRatiouserContextszbrowsingContext.setViewportr,  )r2   r+   r0  rm  rn  r-  s         r   set_viewportBrowsingContext.set_viewport  s\    ( "$ '9!):));%&$%2>"		/*GPQr   deltac                 X    XS.nU R                   R                  [        SU5      5      nU$ )zTraverses the history of a given navigable by a delta.

Parameters:
-----------
    context: The browsing context ID.
    delta: The delta to traverse by.

Returns:
-------
    Dict: A dictionary containing the traverse history result.
)r+   rt  zbrowsingContext.traverseHistoryr,  )r2   r+   rt  r-  r6  s        r   traverse_history BrowsingContext.traverse_history  s.     %5""?3TV\#]^r   r   r  r   c                 :    U R                   R                  XU5      $ )a  Add an event handler to the browsing context.

Parameters:
----------
    event: The event to subscribe to.
    callback: The callback function to execute on event.
    contexts: The browsing context IDs to subscribe to.

Returns:
-------
    int: callback id
)r&  r  )r2   r   r  r   s       r   r  !BrowsingContext.add_event_handler  s     ""44UhOOr   r   c                 :    U R                   R                  X5        g)zRemove an event handler from the browsing context.

Parameters:
----------
    event: The event to unsubscribe from.
    callback_id: The callback id to remove.
N)r&  r  )r2   r   r   s      r   r  $BrowsingContext.remove_event_handler  s     	00Dr   c                 8    U R                   R                  5         gr  )r&  r  )r2   s    r   r  $BrowsingContext.clear_event_handlers  s    002r   )r&  r   )r0  NN)F)NFNr[   )NNNr0   )FNportraitNNg      ?T)NNNNr  )1r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%  r3   rE   rU   r?   r)  r.  r   rF   r7  r   r<  rB  rA   rH   rH  rL  rW  r[  r   floatrf  rk  rr  rv  r   r  r  r  r   r   r   r   r  r  z  si   < ''8:Z\jk()<>`brs)*>@bdtu*!#FHY 
 **>@cevw&'8:Z\jkF$:DA)*>@cevw +"$IK^!
 ))<>`brs)*>@cevw)*>@bdtu)*>@bdtu#M(F .S	 . .O O O" !!%#  	
 tn 
:LS L L$ L$ ,0 &*!! $C=! 	!
 sm! 
!B $("ZC=Z smZ 
!	"	Z: "&#'	WW W C=	W
 
W4 )-04,0  !	
  (~ d4j) 
dJ #	  sm	
 
8 !!%%#7;",, , 	,
 , tn, d5c?34, , , 
,b (,"	 tn sm	
 
: "&#'.2-1R#R 4.R %UO	R
  S	*R 
R@ C D  Ps Ph P(SWX[S\J] Pil PE# EC ED E3r   r  )$r   dataclassesr   typingr   r   r   r   %selenium.webdriver.common.bidi.commonr   r   r
   r   r   r)   rH   r]   ri   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   <module>r     s'  $  ! 1 1 A   +8 +8\M
 M
`4
n 4
n7
 7
t0
 0
f)
 )
X	3 	3	3 	3	. 	.	. 	.	. 	.	. 	.	. 	.	. 	.	. 	.7 76 66 64 4   b' b'J|3 |3r   