o
    ҷhA                     @  s  d dl mZ ddlmZmZ d dlmZ d dlZd dlZG dd de	Z
G dd	 d	ejZG d
d dejZG dd de	ZG dd dejZG dd dejZG dd de	ZG dd dejZeG dd dZeG dd dZeG dd dZeG dd dZeG dd dZdQd"d#ZdQd$d%ZdRd(d)Zed*eG d+d, d,Zed-eG d.d/ d/Zed0eG d1d2 d2Zed3eG d4d5 d5Zed6eG d7d8 d8Zed9eG d:d; d;Z ed<eG d=d> d>Z!ed?eG d@dA dAZ"edBeG dCdD dDZ#edEeG dFdG dGZ$edHeG dIdJ dJZ%edKeG dLdM dMZ&edNeG dOdP dPZ'dS )S    )annotations   )event_classT_JSON_DICT)	dataclassNc                      8   e Zd ZdZdddZedddZ fd	d
Z  ZS )GraphObjectIdz`
    An unique ID for a graph object (AudioContext, AudioNode, AudioParam) in Web Audio API
    returnstrc                 C     | S N selfr   r   d/var/www/html/venv/lib/python3.10/site-packages/selenium/webdriver/common/devtools/v119/web_audio.pyto_json      zGraphObjectId.to_jsonjsonc                 C     | |S r   r   clsr   r   r   r   	from_json      zGraphObjectId.from_jsonc                      d t  S )NzGraphObjectId({})formatsuper__repr__r   	__class__r   r   r         zGraphObjectId.__repr__r	   r
   )r   r
   r	   r   	__name__
__module____qualname____doc__r   classmethodr   r   __classcell__r   r   r   r   r          
r   c                   @  ,   e Zd ZdZdZdZdd Zedd ZdS )	ContextTypez(
    Enum of BaseAudioContext types
    realtimeofflinec                 C     | j S r   valuer   r   r   r   r   #      zContextType.to_jsonc                 C  r   r   r   r   r   r   r   r   &   r   zContextType.from_jsonN)	r#   r$   r%   r&   REALTIMEOFFLINEr   r'   r   r   r   r   r   r+          r+   c                   @  0   e Zd ZdZdZdZdZdd Zedd Z	d	S )
ContextStatez1
    Enum of AudioContextState from the spec
    	suspendedrunningclosedc                 C  r.   r   r/   r   r   r   r   r   3   r1   zContextState.to_jsonc                 C  r   r   r   r   r   r   r   r   6   r   zContextState.from_jsonN)
r#   r$   r%   r&   	SUSPENDEDRUNNINGCLOSEDr   r'   r   r   r   r   r   r6   +       r6   c                      r   )NodeTypez!
    Enum of AudioNode types
    r	   r
   c                 C  r   r   r   r   r   r   r   r   ?   r   zNodeType.to_jsonr   c                 C  r   r   r   r   r   r   r   r   B   r   zNodeType.from_jsonc                   r   )NzNodeType({})r   r   r   r   r   r   F   r    zNodeType.__repr__r!   )r   r
   r	   r>   r"   r   r   r   r   r>   ;   r)   r>   c                   @  r5   )
ChannelCountModez;
    Enum of AudioNode::ChannelCountMode from the spec
    zclamped-maxexplicitmaxc                 C  r.   r   r/   r   r   r   r   r   R   r1   zChannelCountMode.to_jsonc                 C  r   r   r   r   r   r   r   r   U   r   zChannelCountMode.from_jsonN)
r#   r$   r%   r&   CLAMPED_MAXEXPLICITMAX_r   r'   r   r   r   r   r   r?   J   r=   r?   c                   @  r*   )	ChannelInterpretationz@
    Enum of AudioNode::ChannelInterpretation from the spec
    discretespeakersc                 C  r.   r   r/   r   r   r   r   r   a   r1   zChannelInterpretation.to_jsonc                 C  r   r   r   r   r   r   r   r   d   r   zChannelInterpretation.from_jsonN)	r#   r$   r%   r&   DISCRETESPEAKERSr   r'   r   r   r   r   r   rE   Z   r4   rE   c                      r   )	ParamTypez"
    Enum of AudioParam types
    r	   r
   c                 C  r   r   r   r   r   r   r   r   m   r   zParamType.to_jsonr   c                 C  r   r   r   r   r   r   r   r   p   r   zParamType.from_jsonc                   r   )NzParamType({})r   r   r   r   r   r   t   r    zParamType.__repr__r!   )r   r
   r	   rJ   r"   r   r   r   r   rJ   i   r)   rJ   c                   @  r*   )	AutomationRatez:
    Enum of AudioParam::AutomationRate from the spec
    za-ratezk-ratec                 C  r.   r   r/   r   r   r   r   r      r1   zAutomationRate.to_jsonc                 C  r   r   r   r   r   r   r   r      r   zAutomationRate.from_jsonN)	r#   r$   r%   r&   A_RATEK_RATEr   r'   r   r   r   r   r   rK   x   r4   rK   c                   @  sF   e Zd ZU dZded< ded< ded< ded< dd Zed	d
 ZdS )ContextRealtimeDataz:
    Fields in AudioContext that change in real-time.
    floatcurrent_timerender_capacitycallback_interval_meancallback_interval_variancec                 C  s2   t  }| j|d< | j|d< | j|d< | j|d< |S )NcurrentTimerenderCapacitycallbackIntervalMeancallbackIntervalVariance)dictrP   rQ   rR   rS   r   r   r   r   r   r      s   



zContextRealtimeData.to_jsonc                 C  s0   | t |d t |d t |d t |d dS )NrT   rU   rV   rW   )rP   rQ   rR   rS   )rO   r   r   r   r   r      s   



zContextRealtimeData.from_jsonNr#   r$   r%   r&   __annotations__r   r'   r   r   r   r   r   rN      s   
 rN   c                   @  sb   e Zd ZU dZded< ded< ded< ded	< ded
< ded< dZded< dd Zedd ZdS )BaseAudioContextz.
    Protocol object for BaseAudioContext
    r   
context_idr+   context_typer6   context_staterO   callback_buffer_sizemax_output_channel_countsample_rateNz$typing.Optional[ContextRealtimeData]realtime_datac                 C  sj   t  }| j |d< | j |d< | j |d< | j|d< | j|d< | j|d< | jd ur3| j |d< |S )N	contextIdcontextTypecontextStatecallbackBufferSizemaxOutputChannelCount
sampleRaterealtimeData)	rX   r]   r   r^   r_   r`   ra   rb   rc   rY   r   r   r   r      s   



zBaseAudioContext.to_jsonc                 C  sf   | t |d t|d t|d t|d t|d t|d d|v r/t|d dS d dS )	Nrd   re   rf   rg   rh   ri   rj   )r]   r^   r_   r`   ra   rb   rc   )r   r   r+   r6   rO   rN   r   r   r   r   r      s   


zBaseAudioContext.from_json)	r#   r$   r%   r&   r[   rc   r   r'   r   r   r   r   r   r\      s   
 r\   c                   @  s6   e Zd ZU dZded< ded< dd Zedd Zd	S )
AudioListenerz+
    Protocol object for AudioListener
    r   listener_idr]   c                 C  s&   t  }| j |d< | j |d< |S )N
listenerIdrd   )rX   rl   r   r]   rY   r   r   r   r      s   zAudioListener.to_jsonc                 C      | t |d t |d dS )Nrm   rd   )rl   r]   r   r   r   r   r   r   r         zAudioListener.from_jsonNrZ   r   r   r   r   rk      s   
 rk   c                   @  sf   e Zd ZU dZded< ded< ded< ded< ded	< ded
< ded< ded< dd Zedd ZdS )	AudioNodez'
    Protocol object for AudioNode
    r   node_idr]   r>   	node_typerO   number_of_inputsnumber_of_outputschannel_countr?   channel_count_moderE   channel_interpretationc                 C  sn   t  }| j |d< | j |d< | j |d< | j|d< | j|d< | j|d< | j |d< | j	 |d< |S )	NnodeIdrd   nodeTypenumberOfInputsnumberOfOutputschannelCountchannelCountModechannelInterpretation)
rX   rr   r   r]   rs   rt   ru   rv   rw   rx   rY   r   r   r   r     s   


zAudioNode.to_jsonc                 C  sb   | t |d t |d t|d t|d t|d t|d t|d t|d d	S )
Nry   rd   rz   r{   r|   r}   r~   r   )rr   r]   rs   rt   ru   rv   rw   rx   )r   r   r>   rO   r?   rE   r   r   r   r   r     s   


zAudioNode.from_jsonNrZ   r   r   r   r   rq         
 rq   c                   @  sf   e Zd ZU dZded< ded< ded< ded< ded	< d
ed< d
ed< d
ed< dd Zedd ZdS )
AudioParamz(
    Protocol object for AudioParam
    r   param_idrr   r]   rJ   
param_typerK   raterO   default_value	min_value	max_valuec                 C  sn   t  }| j |d< | j |d< | j |d< | j |d< | j |d< | j|d< | j|d< | j	|d< |S )	NparamIdry   rd   	paramTyper   defaultValueminValuemaxValue)
rX   r   r   rr   r]   r   r   r   r   r   rY   r   r   r   r   6  s   


zAudioParam.to_jsonc                 C  sb   | t |d t |d t |d t|d t|d t|d t|d t|d d	S )
Nr   ry   rd   r   r   r   r   r   )r   rr   r]   r   r   r   r   r   )r   r   rJ   rK   rO   r   r   r   r   r   B  s   


zAudioParam.from_jsonNrZ   r   r   r   r   r   !  r   r   r	   0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]c                  c      ddi} | V }dS )zQ
    Enables the WebAudio domain and starts sending context lifetime events.
    methodzWebAudio.enableNr   cmd_dictr   r   r   r   enableP     
r   c                  c  r   )z'
    Disables the WebAudio domain.
    r   zWebAudio.disableNr   r   r   r   r   disableZ  r   r   r]   ?typing.Generator[T_JSON_DICT, T_JSON_DICT, ContextRealtimeData]c                 c  s2    t  }|  |d< d|d}|V }t|d S )zf
    Fetch the realtime data from the registered contexts.

    :param context_id:
    :returns: 
    rd   zWebAudio.getRealtimeData)r   paramsrj   )rX   r   rN   r   )r]   r   r   r   r   r   r   get_realtime_datad  s   	r   zWebAudio.contextCreatedc                   @  (   e Zd ZU dZded< ed
ddZd	S )ContextCreatedz@
    Notifies that a new BaseAudioContext has been created.
    r\   contextr   r   r	   c                 C     | t |d dS Nr   )r   r\   r   r   r   r   r   r        zContextCreated.from_jsonN)r   r   r	   r   r#   r$   r%   r&   r[   r'   r   r   r   r   r   r   w  
   
 r   zWebAudio.contextWillBeDestroyedc                   @  r   )ContextWillBeDestroyedzG
    Notifies that an existing BaseAudioContext will be destroyed.
    r   r]   r   r   r	   c                 C  r   )Nrd   )r]   ro   r   r   r   r   r     r   z ContextWillBeDestroyed.from_jsonN)r   r   r	   r   r   r   r   r   r   r     r   r   zWebAudio.contextChangedc                   @  r   )ContextChangedzc
    Notifies that existing BaseAudioContext has changed some properties (id stays the same)..
    r\   r   r   r   r	   c                 C  r   r   r   r   r   r   r   r     r   zContextChanged.from_jsonN)r   r   r	   r   r   r   r   r   r   r     r   r   zWebAudio.audioListenerCreatedc                   @  r   )AudioListenerCreatedzJ
    Notifies that the construction of an AudioListener has finished.
    rk   listenerr   r   r	   c                 C  r   )Nr   )r   )rk   r   r   r   r   r   r     r   zAudioListenerCreated.from_jsonN)r   r   r	   r   r   r   r   r   r   r     r   r   z%WebAudio.audioListenerWillBeDestroyedc                   @  0   e Zd ZU dZded< ded< eddd	Zd
S )AudioListenerWillBeDestroyedz=
    Notifies that a new AudioListener has been created.
    r   r]   rl   r   r   r	   c                 C  rn   )Nrd   rm   )r]   rl   ro   r   r   r   r   r     rp   z&AudioListenerWillBeDestroyed.from_jsonN)r   r   r	   r   r   r   r   r   r   r        
 r   zWebAudio.audioNodeCreatedc                   @  r   )AudioNodeCreatedz9
    Notifies that a new AudioNode has been created.
    rq   noder   r   r	   c                 C  r   )Nr   )r   )rq   r   r   r   r   r   r     r   zAudioNodeCreated.from_jsonN)r   r   r	   r   r   r   r   r   r   r     r   r   z!WebAudio.audioNodeWillBeDestroyedc                   @  r   )AudioNodeWillBeDestroyedzA
    Notifies that an existing AudioNode has been destroyed.
    r   r]   rr   r   r   r	   c                 C  rn   )Nrd   ry   )r]   rr   ro   r   r   r   r   r     rp   z"AudioNodeWillBeDestroyed.from_jsonN)r   r   r	   r   r   r   r   r   r   r     r   r   zWebAudio.audioParamCreatedc                   @  r   )AudioParamCreatedz:
    Notifies that a new AudioParam has been created.
    r   paramr   r   r	   c                 C  r   )Nr   )r   )r   r   r   r   r   r   r     r   zAudioParamCreated.from_jsonN)r   r   r	   r   r   r   r   r   r   r     r   r   z"WebAudio.audioParamWillBeDestroyedc                   @  s8   e Zd ZU dZded< ded< ded< edd	d
ZdS )AudioParamWillBeDestroyedzB
    Notifies that an existing AudioParam has been destroyed.
    r   r]   rr   r   r   r   r	   c                 C  s,   | t |d t |d t |d dS )Nrd   ry   r   )r]   rr   r   ro   r   r   r   r   r     s
   z#AudioParamWillBeDestroyed.from_jsonN)r   r   r	   r   r   r   r   r   r   r     s   
 r   zWebAudio.nodesConnectedc                   @  H   e Zd ZU dZded< ded< ded< ded< ded< edddZdS )NodesConnectedz5
    Notifies that two AudioNodes are connected.
    r   r]   	source_iddestination_idtyping.Optional[float]source_output_indexdestination_input_indexr   r   r	   c                 C  \   | t |d t |d t |d d|v rt|d nd d|v r*t|d dS d dS Nrd   sourceIddestinationIdsourceOutputIndexdestinationInputIndex)r]   r   r   r   r   r   r   rO   r   r   r   r   r        zNodesConnected.from_jsonN)r   r   r	   r   r   r   r   r   r   r        
 r   zWebAudio.nodesDisconnectedc                   @  r   )NodesDisconnectedz
    Notifies that AudioNodes are disconnected. The destination can be null, and it means all the outgoing connections from the source are disconnected.
    r   r]   r   r   r   r   r   r   r   r	   c                 C  r   r   r   r   r   r   r   r   )  r   zNodesDisconnected.from_jsonN)r   r   r	   r   r   r   r   r   r   r     r   r   zWebAudio.nodeParamConnectedc                   @  @   e Zd ZU dZded< ded< ded< ded< edddZdS )NodeParamConnectedzC
    Notifies that an AudioNode is connected to an AudioParam.
    r   r]   r   r   r   r   r   r   r	   c                 C  F   | t |d t |d t |d d|v rt|d dS d dS Nrd   r   r   r   )r]   r   r   r   r   r   r   r   r   r   ?     zNodeParamConnected.from_jsonN)r   r   r	   r   r   r   r   r   r   r   4     
 r   zWebAudio.nodeParamDisconnectedc                   @  r   )NodeParamDisconnectedzF
    Notifies that an AudioNode is disconnected to an AudioParam.
    r   r]   r   r   r   r   r   r   r	   c                 C  r   r   r   r   r   r   r   r   T  r   zNodeParamDisconnected.from_jsonN)r   r   r	   r   r   r   r   r   r   r   I  r   r   )r	   r   )r]   r   r	   r   )(
__future__r   utilr   r   dataclassesr   enumtypingr
   r   Enumr+   r6   r>   r?   rE   rJ   rK   rN   r\   rk   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   $..
.



