a
    $ñ»j%  ã                   @  sÊ   d dl 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 eG d	d
„ d
ƒƒZeG dd„ dƒƒZeG dd„ dƒƒZeG dd„ dƒƒZdddœdd„ZedƒeG dd„ dƒƒƒZdS )é    )ÚannotationsN)Ú	dataclassé   )Úevent_classÚT_JSON_DICT)Údom)Únetwork)Úpagec                   @  sp   e Zd ZU dZded< ded< ded< dZded	< dZded
< dZded< ddœdd„Ze	dd dœdd„ƒZ
dS )ÚLargestContentfulPaintza
    See https://github.com/WICG/LargestContentfulPaint
    and largest_contentful_paint.idl
    únetwork.TimeSinceEpochÚrender_timeÚ	load_timeÚfloatÚsizeNztyping.Optional[str]Ú
element_idÚurlú"typing.Optional[dom.BackendNodeId]Únode_idr   ©Úreturnc                 C  sp   t ƒ }| j ¡ |d< | j ¡ |d< | j|d< | jd ur@| j|d< | jd urT| j|d< | jd url| j ¡ |d< |S )NÚ
renderTimeÚloadTimer   Ú	elementIdr   ÚnodeId)Údictr   Úto_jsonr   r   r   r   r   ©ÚselfÚjson© r   ú@E:\soccer\ml_env\Lib\site-packages\mycdp/performance_timeline.pyr   !   s    





zLargestContentfulPaint.to_json©r   r   c              
   C  sŒ   | t j |d ¡t j |d ¡t|d ƒ| dd ¡d urDt|d ƒnd | dd ¡d urbt|d ƒnd | dd ¡d ur„tj |d ¡nd d�S )Nr   r   r   r   r   r   )r   r   r   r   r   r   )r   ÚTimeSinceEpochÚ	from_jsonr   ÚgetÚstrr   ÚBackendNodeId©Úclsr   r   r   r    r#   .   s    
ÿÿñz LargestContentfulPaint.from_json)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r   r   Úclassmethodr#   r   r   r   r    r
      s   
r
   c                   @  sL   e Zd ZU ded< ded< dZded< ddœd	d
„Zedd dœdd„ƒZdS )ÚLayoutShiftAttributionzdom.RectÚprevious_rectÚcurrent_rectNr   r   r   r   c                 C  s>   t ƒ }| j ¡ |d< | j ¡ |d< | jd ur:| j ¡ |d< |S )NÚpreviousRectÚcurrentRectr   )r   r0   r   r1   r   r   r   r   r    r   J   s    
zLayoutShiftAttribution.to_jsonr!   c                 C  sF   | t j |d ¡t j |d ¡| dd ¡d ur>t j |d ¡nd d�S )Nr2   r3   r   )r0   r1   r   )r   ZRectr#   r$   r&   r'   r   r   r    r#   R   s    ÿúz LayoutShiftAttribution.from_json)r)   r*   r+   r-   r   r   r.   r#   r   r   r   r    r/   D   s   
r/   c                   @  sT   e Zd ZU dZded< ded< ded< ded	< d
dœdd„Zed
d dœdd„ƒZdS )ÚLayoutShiftzb
    See https://wicg.github.io/layout-instability/#sec-layout-shift
    and layout_shift.idl
    r   ÚvalueÚboolÚhad_recent_inputr   Úlast_input_timez#typing.List[LayoutShiftAttribution]Úsourcesr   r   c                 C  s@   t ƒ }| j|d< | j|d< | j ¡ |d< dd„ | jD ƒ|d< |S )Nr5   ÚhadRecentInputÚlastInputTimec                 S  s   g | ]}|  ¡ ‘qS r   )r   ©Ú.0Úir   r   r    Ú
<listcomp>p   ó    z'LayoutShift.to_json.<locals>.<listcomp>r9   )r   r5   r7   r8   r   r9   r   r   r   r    r   k   s    

zLayoutShift.to_jsonr!   c                 C  s:   | t |d ƒt|d ƒtj |d ¡dd„ |d D ƒd�S )Nr5   r:   r;   c                 S  s   g | ]}t  |¡‘qS r   )r/   r#   r<   r   r   r    r?   {   s   z)LayoutShift.from_json.<locals>.<listcomp>r9   )r5   r7   r8   r9   )r   r6   r   r"   r#   r'   r   r   r    r#   s   s    

ÿÿúzLayoutShift.from_jsonN)r)   r*   r+   r,   r-   r   r.   r#   r   r   r   r    r4   _   s   
r4   c                   @  st   e Zd ZU ded< ded< ded< ded< dZd	ed
< dZded< dZded< ddœdd„Zedd dœdd„ƒZ	dS )ÚTimelineEventzpage.FrameIdÚframe_idr%   Útype_Únamer   ÚtimeNztyping.Optional[float]Údurationz'typing.Optional[LargestContentfulPaint]Úlcp_detailsztyping.Optional[LayoutShift]Úlayout_shift_detailsr   r   c                 C  s~   t ƒ }| j ¡ |d< | j|d< | j|d< | j ¡ |d< | jd urJ| j|d< | jd urb| j ¡ |d< | jd urz| j ¡ |d< |S )NÚframeIdÚtyperD   rE   rF   Ú
lcpDetailsÚlayoutShiftDetails)	r   rB   r   rC   rD   rE   rF   rG   rH   r   r   r   r    r   •   s    





zTimelineEvent.to_jsonr!   c                 C  s–   | t j |d ¡t|d ƒt|d ƒtj |d ¡| dd ¡d urNt|d ƒnd | dd ¡d urnt |d ¡nd | dd ¡d urŽt	 |d ¡nd d�S )	NrI   rJ   rD   rE   rF   rK   rL   )rB   rC   rD   rE   rF   rG   rH   )
r	   ZFrameIdr#   r%   r   r"   r$   r   r
   r4   r'   r   r   r    r#   £   s    

ÿÿÿîzTimelineEvent.from_json)
r)   r*   r+   r-   rF   rG   rH   r   r.   r#   r   r   r   r    rA   �   s   
rA   ztyping.List[str]z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None])Úevent_typesr   c                 c  s,   t ƒ }dd„ | D ƒ|d< d|dœ}|V }dS )aº  
    Previously buffered events would be reported before method returns.
    See also: timelineEventAdded.
    :param event_types: The types of event to report, as specified in
    https://w3c.github.io/performance-timeline/#dom-performanceentry-entrytype
    The specified filter overrides any previous filters,
    passing empty filter disables recording.
    Note that not all types exposed to the web platform are currently supported
    c                 S  s   g | ]}|‘qS r   r   r<   r   r   r    r?   É   r@   zenable.<locals>.<listcomp>Z
eventTypeszPerformanceTimeline.enable)ÚmethodÚparamsN)r   )rM   rO   Zcmd_dictr   r   r   r    Úenable¼   s    þrP   z&PerformanceTimeline.timelineEventAddedc                   @  s.   e Zd ZU dZded< edd dœdd„ƒZdS )	ÚTimelineEventAddedzd
    Sent when a performance timeline event is added.
    See reportPerformanceTimeline method.
    rA   Úeventr   r!   c                 C  s   | t  |d ¡d�S )NrR   )rR   )rA   r#   r'   r   r   r    r#   Ú   s    zTimelineEventAdded.from_jsonN)r)   r*   r+   r,   r-   r.   r#   r   r   r   r    rQ   Ñ   s   
rQ   )Ú
__future__r   ÚtypingÚdataclassesr   Úutilr   r   Ú r   r   r	   r
   r/   r4   rA   rP   rQ   r   r   r   r    Ú<module>   s$   2!: