Ë
    bQbjÍ  ã                  ó’   — d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ e G d„ d	«      «       Z G d
„ d«      Z G d„ d«      Zy)aJ  Shared event management helpers for generated WebDriver BiDi modules.

``EventConfig``, ``_EventWrapper``, and ``_EventManager`` are emitted
identically into every generated module that exposes events. Rather than
duplicating this logic across those modules, they are defined once here and
copied into generated outputs by Bazel.
é    )ÚannotationsN)ÚCallable)Ú	dataclass)ÚAny)ÚSessionc                  ó0   — e Zd ZU dZded<   ded<   ded<   y)ÚEventConfigzConfiguration for a BiDi event.ÚstrÚ	event_keyÚ
bidi_eventÚtypeÚevent_classN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© ó    ú`/var/www/html/venv/lib/python3.12/site-packages/selenium/webdriver/common/bidi/_event_manager.pyr	   r	   $   s   … á)àƒNØƒOØÔr   r	   c                  ó2   — e Zd ZdZdd„Zdd„Zedd„«       Zy)	Ú_EventWrapperzKWrapper to provide event_class attribute for WebSocketConnection callbacks.c                ó    — || _         || _        y ©N)r   Ú_python_class)Úselfr   r   s      r   Ú__init__z_EventWrapper.__init__0   s   € Ø%ˆÔØ(ˆÕr   c                óÆ  — | j                   �| j                   t        u r|S 	 t        | j                   d«      r:t        | j                   j                  «      r| j                   j	                  |«      S ddl}|j                  «       D ��ci c]  \  }}| j                  |«      |“Œ }}}|j                  | j                   «      rl|j                  | j                   «      D �ch c]  }|j                  ’Œ }}|j                  «       D ��ci c]  \  }}||v sŒ||“Œ }}} | j                   di |¤ŽS  | j                   di |¤ŽS c c}}w c c}w c c}}w # t        $ r |cY S w xY w)zêDeserialize event params into the wrapped Python dataclass.

        Args:
            params: Raw BiDi event params with camelCase keys.

        Returns:
            An instance of the dataclass, or the raw dict on failure.
        NÚ	from_jsonr   r   )r   ÚdictÚhasattrÚcallabler   ÚdataclassesÚitemsÚ_camel_to_snakeÚis_dataclassÚfieldsÚnameÚ	Exception)	r   ÚparamsÚdcÚkÚvÚsnake_paramsÚfÚvalid_fieldsÚfiltereds	            r   r   z_EventWrapper.from_json4   sB  € ð ×ÑÐ%¨×);Ñ);¼tÑ)CØˆMð	ä�t×)Ñ)¨;Ô7¼HÀT×EWÑEW×EaÑEaÔ<bØ×)Ñ)×3Ñ3°FÓ;Ð;Û$àCIÇ<Á<Ã>×R¹4¸1¸a˜D×0Ñ0°Ó3°QÑ6ÐRˆLÑRØ�‰˜t×1Ñ1Ô2Ø02·	±	¸$×:LÑ:LÓ0MÖN¨1 §£ÐN�ÐNØ-9×-?Ñ-?Ó-A×W¡T Q¨ÀQÈ,ÒEV˜A˜q™DÐW�ÑWØ)�t×)Ñ)Ñ5¨HÑ5Ð5Ø%�4×%Ñ%Ñ5¨Ñ5Ð5ùó SùâNùÛWøô ò 	ØŠMð	úsN   ¢AE Á2E Â	EÂ%;E Ã EÃ3E ÄEÄEÄE Ä/E ÅE ÅE ÅE c                óæ   — | d   j                  «       g}| dd  D ]E  }|j                  «       r"|j                  d|j                  «       g«       Œ5|j                  |«       ŒG dj	                  |«      S )Nr   é   Ú_Ú )ÚlowerÚisupperÚextendÚappendÚjoin)r(   ÚresultÚchars      r   r%   z_EventWrapper._camel_to_snakeN   se   € à�q‘'—-‘-“/Ð"ˆØ˜˜�Hò 	$ˆDØ�|‰|Œ~Ø—‘˜s D§J¡J£LÐ1Õ2à—‘˜dÕ#ð		$ð
 �w‰w�v‹Ðr   N)r   r
   r   r   )r*   r    Úreturnr   )r(   r
   r=   r
   )r   r   r   r   r   r   Ústaticmethodr%   r   r   r   r   r   -   s#   „ ÙUó)óð4 òó ñr   r   c                  ó\   — e Zd ZdZdd„Zdd„Zddd„Zdd„Zdd„Zdd„Z	ddd	„Z
dd
„Zdd„Zy)Ú_EventManagerz*Manages event subscriptions and callbacks.c                óÞ  — || _         || _        i | _        i | _        |j	                  «       D �ci c]  }|j
                  |j                  “Œ c}| _        dj                  t        |j                  «       «      «      | _        t        j                  «       | _        |j	                  «       D ];  }t        |j
                  |j                  «      }|| j                  |j
                  <   Œ= y c c}w )Nz, )ÚconnÚevent_configsÚsubscriptionsÚ_event_wrappersÚvaluesr   r   Ú_bidi_to_classr:   ÚsortedÚkeysÚ_available_eventsÚ	threadingÚLockÚ_subscription_lockr   )r   rB   rC   ÚconfigÚwrappers        r   r   z_EventManager.__init__\   sÊ   € ØˆŒ	Ø*ˆÔØ#%ˆÔØ!ˆÔØS`×SgÑSgÓSiÖjÈ˜v×0Ñ0°&×2DÑ2DÑDÒjˆÔØ!%§¡¬6°-×2DÑ2DÓ2FÓ+GÓ!HˆÔÜ"+§.¡.Ó"2ˆÔð $×*Ñ*Ó,ò 	>ˆFÜ# F×$5Ñ$5°v×7IÑ7IÓJˆGØ6=ˆD× Ñ  ×!2Ñ!2Ò3ñ	>ùò ks   ¯C*c                óv   — | j                   j                  |«      }|st        d|› d| j                  › �«      ‚|S )NzEvent 'z' not found. Available events: )rC   ÚgetÚ
ValueErrorrJ   )r   ÚeventÚevent_configs      r   Úvalidate_eventz_EventManager.validate_eventj   sA   € Ø×)Ñ)×-Ñ-¨eÓ4ˆÙÜ˜w u gÐ-LÈT×McÑMcÐLdÐeÓfÐfØÐr   Nc                ó  — | j                   5  || j                  vr^t        | j                  «      }|j	                  |g|¬«      }t        |t        «      r|j                  d«      nd}g |dœ| j                  |<   ddd«       y# 1 sw Y   yxY w)z4Subscribe to a BiDi event if not already subscribed.)ÚcontextsÚsubscriptionN)Ú	callbacksÚsubscription_id)rM   rD   r   rB   Ú	subscribeÚ
isinstancer    rQ   )r   r   rW   Úsessionr;   Úsub_ids         r   Úsubscribe_to_eventz _EventManager.subscribe_to_eventp   s…   € à×$Ñ$ñ 	Ø ×!3Ñ!3Ñ3Ü! $§)¡)Ó,�Ø ×*Ñ*¨J¨<À(Ð*ÓK�Ü7AÀ&Ì$Ô7O˜Ÿ™ NÔ3ÐUY�à!#Ø'-ñ2�×"Ñ" :Ñ.÷	÷ 	ñ 	ús   �A-BÂBc                óB  — | j                   5  | j                  j                  |«      }|�a|d   s\t        | j                  «      }|j                  d«      }|r|j                  |g¬«       n|j                  |g¬«       | j                  |= ddd«       y# 1 sw Y   yxY w)z9Unsubscribe from a BiDi event if no more callbacks exist.NrY   rZ   ©rD   ©Úevents)rM   rD   rQ   r   rB   Úunsubscribe)r   r   Úentryr]   r^   s        r   Úunsubscribe_from_eventz$_EventManager.unsubscribe_from_event|   s—   € à×$Ñ$ñ 		3Ø×&Ñ&×*Ñ*¨:Ó6ˆEØÐ ¨¨{Ò);Ü! $§)¡)Ó,�ØŸ™Ð#4Ó5�ÙØ×'Ñ'°v°hÐ'Õ?à×'Ñ'°
¨|Ð'Ô<Ø×&Ñ& zÐ2÷		3÷ 		3ñ 		3ús   �A?BÂBc                óˆ   — | j                   5  | j                  |   d   j                  |«       d d d «       y # 1 sw Y   y xY w©NrY   )rM   rD   r9   )r   r   Úcallback_ids      r   Úadd_callback_to_trackingz&_EventManager.add_callback_to_tracking‰   sB   € Ø×$Ñ$ñ 	LØ×Ñ˜zÑ*¨;Ñ7×>Ñ>¸{ÔK÷	L÷ 	Lñ 	Lús	   �"8¸Ac                ó¶   — | j                   5  | j                  j                  |«      }|r||d   v r|d   j                  |«       d d d «       y # 1 sw Y   y xY wrh   )rM   rD   rQ   Úremove)r   r   ri   re   s       r   Úremove_callback_from_trackingz+_EventManager.remove_callback_from_tracking�   sX   € Ø×$Ñ$ñ 	7Ø×&Ñ&×*Ñ*¨:Ó6ˆEÙ˜¨¨kÑ(:Ñ:Ø�kÑ"×)Ñ)¨+Ô6÷	7÷ 	7ñ 	7ús   �9AÁAc                ó  — | j                  |«      }| j                  j                  |j                  «      }| j                  j                  ||«      }| j                  |j                  |«       | j                  |j                  |«       |S r   )rU   rE   rQ   r   rB   Úadd_callbackr_   rj   )r   rS   ÚcallbackrW   rT   Úevent_wrapperri   s          r   Úadd_event_handlerz_EventManager.add_event_handler“   sv   € Ø×*Ñ*¨5Ó1ˆà×,Ñ,×0Ñ0°×1HÑ1HÓIˆØ—i‘i×,Ñ,¨]¸HÓEˆØ×Ñ × 7Ñ 7¸ÔBØ×%Ñ% l×&=Ñ&=¸{ÔKØÐr   c                ó  — | j                  |«      }| j                  j                  |j                  «      }| j                  j                  ||«       | j                  |j                  |«       | j                  |j                  «       y r   )rU   rE   rQ   r   rB   Úremove_callbackrm   rf   )r   rS   ri   rT   rq   s        r   Úremove_event_handlerz"_EventManager.remove_event_handlerœ   sl   € Ø×*Ñ*¨5Ó1ˆØ×,Ñ,×0Ñ0°×1HÑ1HÓIˆØ�	‰	×!Ñ! -°Ô=Ø×*Ñ*¨<×+BÑ+BÀKÔPØ×#Ñ# L×$;Ñ$;Õ<r   c                ól  — | j                   5  | j                  s
	 ddd«       yt        | j                  «      }t	        | j                  j                  «       «      D ]¨  \  }}| j                  j                  |«      }t        |t        «      r|d   n|}|r#|D ]  }| j                  j                  ||«       Œ  t        |t        «      r|j                  d«      nd}|r|j                  |g¬«       Œ–|j                  |g¬«       Œª | j                  j                  «        ddd«       y# 1 sw Y   yxY w)zClear all event handlers.NrY   rZ   ra   rb   )rM   rD   r   rB   Úlistr$   rE   rQ   r\   r    rt   rd   Úclear)r   r]   r   re   rq   rY   ri   r^   s           r   Úclear_event_handlersz"_EventManager.clear_event_handlers£   s  € à×$Ñ$ñ 	'Ø×%Ò%Ø÷	'ð 	'ô ˜dŸi™iÓ(ˆGÜ%)¨$×*<Ñ*<×*BÑ*BÓ*DÓ%Eò 
=Ñ!�
˜EØ $× 4Ñ 4× 8Ñ 8¸Ó D�Ü2<¸UÄDÔ2I˜E +Ò.Èu�	Ù Ø'0ò N˜ØŸ	™	×1Ñ1°-ÀÕMðNä9CÀEÌ4Ô9P˜Ÿ™Ð#4Ô5ÐVZ�ÙØ×'Ñ'°v°hÐ'Õ?à×'Ñ'°
¨|Ð'Õ<ð
=ð ×Ñ×$Ñ$Ô&÷	'÷ 	'ñ 	'ús   �D*¤C=D*Ä*D3)rC   zdict[str, EventConfig])rS   r
   r=   r	   r   )r   r
   rW   úlist[str] | Noner=   ÚNone)r   r
   r=   r{   )r   r
   ri   Úintr=   r{   )rS   r
   rp   r   rW   rz   r=   r|   )rS   r
   ri   r|   r=   r{   )r=   r{   )r   r   r   r   r   rU   r_   rf   rj   rm   rr   ru   ry   r   r   r   r@   r@   Y   s3   „ Ù4ó>óô
ó3óLó7ôó=ô'r   r@   )r   Ú
__future__r   rK   Úcollections.abcr   r#   r   Útypingr   Ú&selenium.webdriver.common.bidi.sessionr   r	   r   r@   r   r   r   ú<module>r�      sN   ðñ$õ #ã Ý $Ý !Ý å :ð ÷ð ó ð÷)ñ )÷X['ò ['r   