a
    $ñ»jCª  ã                   @  sª  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	 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eG dd„ dƒƒZG dd„ deƒZG dd„ deƒZeG dd„ dƒƒZeG dd„ dƒƒZeG dd„ dƒƒZG dd„ deƒ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*„Zd'd(œd+d,„Zd7d-d.d.d.d/d0œd1d2„Zd8d-d.d.d.d.d3d4œd5d6„ZdS )9é    )ÚannotationsN)Ú	dataclassé   )ÚT_JSON_DICT)Údom)Údom_debugger)Úpagec                   @  st  e Zd ZU dZ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	Zded< d	Z	ded< d	Z
ded< d	Zded< d	Zded< d	Zd
ed< d	Zd
ed< d	Zd
ed< d	Zd
ed< d	Zd
ed< d	Zd
ed< d	Zded< d	Zded< d	Zd ed!< d	Zd"ed#< d	Zded$< d	Zd%ed&< d	Z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 d0œd1d2„ƒZd	S )3ÚDOMNodezA Node in the DOM tree.ÚintÚ	node_typeÚstrÚ	node_nameÚ
node_valuezdom.BackendNodeIdÚbackend_node_idNútyping.Optional[str]Ú
text_valueÚinput_valueútyping.Optional[bool]Úinput_checkedÚoption_selectedú!typing.Optional[typing.List[int]]Úchild_node_indexesz'typing.Optional[typing.List[NameValue]]Ú
attributesÚpseudo_element_indexesútyping.Optional[int]Úlayout_node_indexÚdocument_urlÚbase_urlÚcontent_languageÚdocument_encodingÚ	public_idÚ	system_idztyping.Optional[page.FrameId]Úframe_idÚcontent_document_indexztyping.Optional[dom.PseudoType]Úpseudo_typez#typing.Optional[dom.ShadowRootType]Úshadow_root_typeÚis_clickablez8typing.Optional[typing.List[dom_debugger.EventListener]]Úevent_listenersÚcurrent_source_urlÚ
origin_urlútyping.Optional[float]Úscroll_offset_xÚscroll_offset_yr   ©Úreturnc                 C  sj  t ƒ }| j|d< | j|d< | j|d< | j ¡ |d< | jd urF| j|d< | jd urZ| j|d< | jd urn| j|d< | j	d ur‚| j	|d< | j
d ur d	d
„ | j
D ƒ|d< | jd ur¾dd
„ | jD ƒ|d< | jd urÜdd
„ | jD ƒ|d< | jd urð| j|d< | jd u�r| j|d< | jd u�r| j|d< | jd u�r2| j|d< | jd u�rH| j|d< | jd u�r^| j|d< | jd u�rt| j|d< | jd u�rŽ| j ¡ |d< | jd u�r¤| j|d< | jd u�r¾| j ¡ |d< | jd u�rØ| j ¡ |d< | jd u�rî| j|d< | jd u�rdd
„ | jD ƒ|d< | jd u�r$| j|d< | jd u�r:| j|d< | jd u�rP| j|d < | jd u�rf| j|d!< |S )"NÚnodeTypeÚnodeNameÚ	nodeValueÚbackendNodeIdÚ	textValueÚ
inputValueÚinputCheckedÚoptionSelectedc                 S  s   g | ]}|‘qS © r7   ©Ú.0Úir7   r7   ú8E:\soccer\ml_env\Lib\site-packages\mycdp/dom_snapshot.pyÚ
<listcomp>g   ó    z#DOMNode.to_json.<locals>.<listcomp>ÚchildNodeIndexesc                 S  s   g | ]}|  ¡ ‘qS r7   ©Úto_jsonr8   r7   r7   r;   r<   i   r=   r   c                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<   k   s   ÚpseudoElementIndexesÚlayoutNodeIndexÚdocumentURLÚbaseURLÚcontentLanguageÚdocumentEncodingÚpublicIdÚsystemIdÚframeIdÚcontentDocumentIndexÚ
pseudoTypeÚshadowRootTypeÚisClickablec                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   ‡   s   ÚeventListenersÚcurrentSourceURLÚ	originURLÚscrollOffsetXÚscrollOffsetY)Údictr   r   r   r   r@   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r+   r,   ©ÚselfÚjsonr7   r7   r;   r@   X   st    













ÿ










ÿ




zDOMNode.to_json©rV   r.   c                  C  sL  | t |d ƒt|d ƒt|d ƒtj |d ¡| dd ¡d urJt|d ƒnd | dd ¡d urht|d ƒnd | dd ¡d ur†t|d ƒnd | dd ¡d ur¤t|d ƒnd | d	d ¡d urÈd
d„ |d	 D ƒnd | dd ¡d urìdd„ |d D ƒnd | dd ¡d u�rdd„ |d D ƒnd | dd ¡d u�r2t |d ƒnd | dd ¡d u�rRt|d ƒnd | dd ¡d u�rrt|d ƒnd | dd ¡d u�r’t|d ƒnd | dd ¡d u�r²t|d ƒnd | dd ¡d u�rÒt|d ƒnd | dd ¡d u�ròt|d ƒnd | dd ¡d u�rtj |d ¡nd | dd ¡d u�r6t |d ƒnd | dd ¡d u�rZtj	 |d ¡nd | dd ¡d u�r~tj
 |d ¡nd | dd ¡d u�ržt|d ƒnd | dd ¡d u�rÄdd„ |d D ƒnd | dd ¡d u�rät|d ƒnd | dd ¡d u�rt|d ƒnd | d d ¡d u�r$t|d  ƒnd | d!d ¡d u�rDt|d! ƒnd d"�S )#Nr/   r0   r1   r2   r3   r4   r5   r6   r>   c                 S  s   g | ]}t |ƒ‘qS r7   ©r
   r8   r7   r7   r;   r<   °   r=   z%DOMNode.from_json.<locals>.<listcomp>r   c                 S  s   g | ]}t  |¡‘qS r7   ©Ú	NameValueÚ	from_jsonr8   r7   r7   r;   r<   µ   r=   rA   c                 S  s   g | ]}t |ƒ‘qS r7   rX   r8   r7   r7   r;   r<   º   r=   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   c                 S  s   g | ]}t j |¡‘qS r7   )r   ZEventListenerr[   r8   r7   r7   r;   r<   û   s   ÿrO   rP   rQ   rR   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r+   r,   )r
   r   r   ÚBackendNodeIdr[   ÚgetÚboolr   ZFrameIdZ
PseudoTypeZShadowRootTypeÚfloat©ÚclsrV   r7   r7   r;   r[   ”   s     


ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü
þÿÿÿÿ‚zDOMNode.from_json) Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r+   r,   r@   Úclassmethodr[   r7   r7   r7   r;   r	      sB   
þ
<r	   c                   @  sL   e Zd ZU dZded< ded< ded< ddœd	d
„Zedd dœdd„ƒZdS )ÚInlineTextBoxz”
    Details of post layout rendered text positions.
    The exact layout should not be regarded as
    stable and may change between versions.
    údom.RectÚbounding_boxr
   Ústart_character_indexÚnum_charactersr   r-   c                 C  s,   t ƒ }| j ¡ |d< | j|d< | j|d< |S )NÚboundingBoxÚstartCharacterIndexÚnumCharacters)rS   rj   r@   rk   rl   rT   r7   r7   r;   r@   -  s
    

zInlineTextBox.to_jsonrW   c                 C  s*   | t j |d ¡t|d ƒt|d ƒd�S )Nrm   rn   ro   )rj   rk   rl   )r   ÚRectr[   r
   r`   r7   r7   r;   r[   4  s
    

ýzInlineTextBox.from_jsonN©rb   rc   rd   re   rf   r@   rg   r[   r7   r7   r7   r;   rh     s   
rh   c                   @  s€   e Zd ZU dZded< ded< dZded< dZ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 )ÚLayoutTreeNodez:Details of an element in the DOM tree with a LayoutObject.r
   Údom_node_indexri   rj   Nr   Úlayout_textz+typing.Optional[typing.List[InlineTextBox]]Úinline_text_nodesr   Ústyle_indexÚpaint_orderr   Úis_stacking_contextr   r-   c                 C  s�   t ƒ }| j|d< | j ¡ |d< | jd ur2| j|d< | jd urPdd„ | jD ƒ|d< | jd urd| j|d< | jd urx| j|d< | jd urŒ| j|d	< |S )
NÚdomNodeIndexrm   Ú
layoutTextc                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   Z  s   z*LayoutTreeNode.to_json.<locals>.<listcomp>ÚinlineTextNodesÚ
styleIndexÚ
paintOrderÚisStackingContext)	rS   rs   rj   r@   rt   ru   rv   rw   rx   rT   r7   r7   r;   r@   S  s     



ÿ






zLayoutTreeNode.to_jsonrW   c                 C  s¼   | t |d ƒtj |d ¡| dd ¡d ur6t|d ƒnd | dd ¡d urZdd„ |d D ƒnd | dd ¡d urxt |d ƒnd | dd ¡d ur–t |d ƒnd | d	d ¡d ur´t|d	 ƒnd d
�S )Nry   rm   rz   r{   c                 S  s   g | ]}t  |¡‘qS r7   )rh   r[   r8   r7   r7   r;   r<   p  r=   z,LayoutTreeNode.from_json.<locals>.<listcomp>r|   r}   r~   )rs   rj   rt   ru   rv   rw   rx   )r
   r   rp   r[   r]   r   r^   r`   r7   r7   r;   r[   e  s&    
ÿÿÿÿÿæzLayoutTreeNode.from_json)rb   rc   rd   re   rf   rt   ru   rv   rw   rx   r@   rg   r[   r7   r7   r7   r;   rr   =  s   
rr   c                   @  s<   e Zd ZU dZded< ddœdd„Zedd dœd	d
„ƒZdS )ÚComputedStylezQ
    A subset of the full ComputedStyle as defined by the request whitelist.
    ztyping.List[NameValue]Ú
propertiesr   r-   c                 C  s   t ƒ }dd„ | jD ƒ|d< |S )Nc                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   �  r=   z)ComputedStyle.to_json.<locals>.<listcomp>r€   )rS   r€   rT   r7   r7   r;   r@   Ž  s    zComputedStyle.to_jsonrW   c                 C  s   | dd„ |d D ƒd�S )Nc                 S  s   g | ]}t  |¡‘qS r7   rY   r8   r7   r7   r;   r<   –  r=   z+ComputedStyle.from_json.<locals>.<listcomp>r€   )r€   r7   r`   r7   r7   r;   r[   “  s    ÿzComputedStyle.from_jsonNrq   r7   r7   r7   r;   r   †  s
   
r   c                   @  sD   e Zd ZU dZded< ded< ddœdd„Zedd d	œd
d„ƒZdS )rZ   zA name/value pair.r   ÚnameÚvaluer   r-   c                 C  s   t ƒ }| j|d< | j|d< |S )Nr�   r‚   )rS   r�   r‚   rT   r7   r7   r;   r@   ¢  s    

zNameValue.to_jsonrW   c                 C  s   | t |d ƒt |d ƒd�S )Nr�   r‚   )r�   r‚   ©r   r`   r7   r7   r;   r[   ¨  s    

þzNameValue.from_jsonNrq   r7   r7   r7   r;   rZ   š  s   
rZ   c                      sB   e Zd ZdZddœdd„Zedd dœdd„ƒZ‡ fd	d
„Z‡  ZS )ÚStringIndexú)Index of the string in the strings table.r
   r-   c                 C  s   | S ©Nr7   ©rU   r7   r7   r;   r@   ³  s    zStringIndex.to_jsonrW   c                 C  s   | |ƒS r†   r7   r`   r7   r7   r;   r[   ¶  s    zStringIndex.from_jsonc                   s   d  tƒ  ¡ ¡S )NzStringIndex({})©ÚformatÚsuperÚ__repr__r‡   ©Ú	__class__r7   r;   r‹   º  s    zStringIndex.__repr__©	rb   rc   rd   re   r@   rg   r[   r‹   Ú__classcell__r7   r7   rŒ   r;   r„   °  s
   r„   c                      sB   e Zd ZdZddœdd„Zedd dœdd„ƒZ‡ fd	d
„Z‡  ZS )ÚArrayOfStringsr…   útyping.List[StringIndex]r-   c                 C  s   | S r†   r7   r‡   r7   r7   r;   r@   Á  s    zArrayOfStrings.to_jsonrW   c                 C  s   | |ƒS r†   r7   r`   r7   r7   r;   r[   Ä  s    zArrayOfStrings.from_jsonc                   s   d  tƒ  ¡ ¡S )NzArrayOfStrings({})rˆ   r‡   rŒ   r7   r;   r‹   È  s    zArrayOfStrings.__repr__rŽ   r7   r7   rŒ   r;   r�   ¾  s
   r�   c                   @  sD   e Zd ZU dZded< ded< ddœdd	„Zedd d
œdd„ƒZdS )ÚRareStringDataz(Data that is only present on rare nodes.útyping.List[int]Úindexr‘   r‚   r   r-   c                 C  s2   t ƒ }dd„ | jD ƒ|d< dd„ | jD ƒ|d< |S )Nc                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<   Ô  r=   z*RareStringData.to_json.<locals>.<listcomp>r”   c                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   Õ  r=   r‚   ©rS   r”   r‚   rT   r7   r7   r;   r@   Ò  s    zRareStringData.to_jsonrW   c                 C  s(   | dd„ |d D ƒdd„ |d D ƒd�S )Nc                 S  s   g | ]}t |ƒ‘qS r7   rX   r8   r7   r7   r;   r<   Û  r=   z,RareStringData.from_json.<locals>.<listcomp>r”   c                 S  s   g | ]}t  |¡‘qS r7   ©r„   r[   r8   r7   r7   r;   r<   Ü  r=   r‚   ©r”   r‚   r7   r`   r7   r7   r;   r[   Ø  s    þzRareStringData.from_jsonNrq   r7   r7   r7   r;   r’   Ì  s   
r’   c                   @  s8   e Zd ZU ded< ddœdd„Zedd dœdd	„ƒZd
S )ÚRareBooleanDatar“   r”   r   r-   c                 C  s   t ƒ }dd„ | jD ƒ|d< |S )Nc                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<   æ  r=   z+RareBooleanData.to_json.<locals>.<listcomp>r”   )rS   r”   rT   r7   r7   r;   r@   ä  s    zRareBooleanData.to_jsonrW   c                 C  s   | dd„ |d D ƒd�S )Nc                 S  s   g | ]}t |ƒ‘qS r7   rX   r8   r7   r7   r;   r<   ì  r=   z-RareBooleanData.from_json.<locals>.<listcomp>r”   )r”   r7   r`   r7   r7   r;   r[   é  s    ÿzRareBooleanData.from_jsonN©rb   rc   rd   rf   r@   rg   r[   r7   r7   r7   r;   r˜   à  s   
r˜   c                   @  s@   e Zd ZU ded< ded< ddœdd„Zedd dœd	d
„ƒZdS )ÚRareIntegerDatar“   r”   r‚   r   r-   c                 C  s2   t ƒ }dd„ | jD ƒ|d< dd„ | jD ƒ|d< |S )Nc                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<   ÷  r=   z+RareIntegerData.to_json.<locals>.<listcomp>r”   c                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<   ø  r=   r‚   r•   rT   r7   r7   r;   r@   õ  s    zRareIntegerData.to_jsonrW   c                 C  s(   | dd„ |d D ƒdd„ |d D ƒd�S )Nc                 S  s   g | ]}t |ƒ‘qS r7   rX   r8   r7   r7   r;   r<   þ  r=   z-RareIntegerData.from_json.<locals>.<listcomp>r”   c                 S  s   g | ]}t |ƒ‘qS r7   rX   r8   r7   r7   r;   r<   ÿ  r=   r‚   r—   r7   r`   r7   r7   r;   r[   û  s    þzRareIntegerData.from_jsonNr™   r7   r7   r7   r;   rš   ð  s
   
rš   c                      s>   e Zd Zddœdd„Zedd dœdd„ƒZ‡ fdd	„Z‡  ZS )
Ú	Rectangleztyping.List[float]r-   c                 C  s   | S r†   r7   r‡   r7   r7   r;   r@     s    zRectangle.to_jsonrW   c                 C  s   | |ƒS r†   r7   r`   r7   r7   r;   r[     s    zRectangle.from_jsonc                   s   d  tƒ  ¡ ¡S )NzRectangle({})rˆ   r‡   rŒ   r7   r;   r‹     s    zRectangle.__repr__)rb   rc   rd   r@   rg   r[   r‹   r�   r7   r7   rŒ   r;   r›     s   r›   c                   @  s¼   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ed< ded< ded< dZ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 )ÚDocumentSnapshotzDocument snapshot.r„   r   Útitler   r   Úencoding_namer    r!   r"   ÚNodeTreeSnapshotÚnodesÚLayoutTreeSnapshotÚlayoutÚTextBoxSnapshotÚ
text_boxesNr*   r+   r,   Úcontent_widthÚcontent_heightr   r-   c                 C  sô   t ƒ }| j ¡ |d< | j ¡ |d< | j ¡ |d< | j ¡ |d< | j ¡ |d< | j ¡ |d< | j ¡ |d< | j	 ¡ |d< | j
 ¡ |d	< | j ¡ |d
< | j ¡ |d< | jd ur´| j|d< | jd urÈ| j|d< | jd urÜ| j|d< | jd urð| j|d< |S )NrC   r�   rD   rE   ÚencodingNamerG   rH   rI   r    r¢   Ú	textBoxesrQ   rR   ÚcontentWidthÚcontentHeight)rS   r   r@   r�   r   r   rž   r    r!   r"   r    r¢   r¤   r+   r,   r¥   r¦   rT   r7   r7   r;   r@   1  s*    







zDocumentSnapshot.to_jsonrW   c                 C  s  | t  |d ¡t  |d ¡t  |d ¡t  |d ¡t  |d ¡t  |d ¡t  |d ¡t  |d ¡t |d	 ¡t |d
 ¡t |d ¡| dd ¡d ur¢t|d ƒnd | dd ¡d urÀt|d ƒnd | dd ¡d urÞt|d ƒnd | dd ¡d urüt|d ƒnd d�S )NrC   r�   rD   rE   r§   rG   rH   rI   r    r¢   r¨   rQ   rR   r©   rª   )r   r�   r   r   rž   r    r!   r"   r    r¢   r¤   r+   r,   r¥   r¦   )r„   r[   rŸ   r¡   r£   r]   r_   r`   r7   r7   r;   r[   H  s2    ÿÿÿÿâzDocumentSnapshot.from_json)rb   rc   rd   re   rf   r+   r,   r¥   r¦   r@   rg   r[   r7   r7   r7   r;   rœ     s&   
rœ   c                   @  s   e Zd ZU dZdZded< dZded< dZded< dZded	< dZ	ded
< dZ
ded< dZded< dZded< dZded< dZded< dZded< dZded< dZded< dZ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 )"rŸ   zTable containing nodes.Nr   Úparent_indexr   ztyping.Optional[RareStringData]r%   ú)typing.Optional[typing.List[StringIndex]]r   r   z/typing.Optional[typing.List[dom.BackendNodeId]]r   z,typing.Optional[typing.List[ArrayOfStrings]]r   r   r   z typing.Optional[RareBooleanData]r   r   z typing.Optional[RareIntegerData]r#   r$   Úpseudo_identifierr&   r(   r)   r   r-   c                 C  sØ  t ƒ }| jd ur$dd„ | jD ƒ|d< | jd urBdd„ | jD ƒ|d< | jd urZ| j ¡ |d< | jd urxdd„ | jD ƒ|d< | jd ur–d	d„ | jD ƒ|d
< | jd ur´dd„ | jD ƒ|d< | jd urÒdd„ | jD ƒ|d< | j	d urê| j	 ¡ |d< | j
d u�r| j
 ¡ |d< | jd u�r| j ¡ |d< | jd u�r8| j ¡ |d< | jd u�rR| j ¡ |d< | jd u�rl| j ¡ |d< | jd u�r†| j ¡ |d< | jd u�r | j ¡ |d< | jd u�rº| j ¡ |d< | jd u�rÔ| j ¡ |d< |S )Nc                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<   œ  r=   z,NodeTreeSnapshot.to_json.<locals>.<listcomp>ÚparentIndexc                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<   ž  r=   r/   rL   c                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   ¢  r=   r0   c                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   ¤  r=   r1   c                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   ¦  r=   r2   c                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   ¨  r=   r   r3   r4   r5   r6   rJ   rK   ÚpseudoIdentifierrM   rO   rP   )rS   r«   r   r%   r@   r   r   r   r   r   r   r   r   r#   r$   r­   r&   r(   r)   rT   r7   r7   r;   r@   ™  sJ    







ÿzNodeTreeSnapshot.to_jsonrW   c                 C  sT  | |  dd ¡d ur$dd„ |d D ƒnd |  dd ¡d urHdd„ |d D ƒnd |  dd ¡d urht |d ¡nd |  dd ¡d urŒdd„ |d D ƒnd |  d	d ¡d ur°d
d„ |d	 D ƒnd |  dd ¡d urÔdd„ |d D ƒnd |  dd ¡d urødd„ |d D ƒnd |  dd ¡d u�rt |d ¡nd |  dd ¡d u�r<t |d ¡nd |  dd ¡d u�r^t |d ¡nd |  dd ¡d u�r€t |d ¡nd |  dd ¡d u�r¢t |d ¡nd |  dd ¡d u�rÄt |d ¡nd |  dd ¡d u�ræt |d ¡nd |  dd ¡d u�rt |d ¡nd |  dd ¡d u�r*t |d ¡nd |  dd ¡d u�rLt |d ¡nd d�S )Nr®   c                 S  s   g | ]}t |ƒ‘qS r7   rX   r8   r7   r7   r;   r<   Å  r=   z.NodeTreeSnapshot.from_json.<locals>.<listcomp>r/   c                 S  s   g | ]}t |ƒ‘qS r7   rX   r8   r7   r7   r;   r<   Ê  r=   rL   r0   c                 S  s   g | ]}t  |¡‘qS r7   r–   r8   r7   r7   r;   r<   Ô  r=   r1   c                 S  s   g | ]}t  |¡‘qS r7   r–   r8   r7   r7   r;   r<   Ù  r=   r2   c                 S  s   g | ]}t j |¡‘qS r7   )r   r\   r[   r8   r7   r7   r;   r<   Þ  r=   r   c                 S  s   g | ]}t  |¡‘qS r7   ©r�   r[   r8   r7   r7   r;   r<   ã  r=   r3   r4   r5   r6   rJ   rK   r¯   rM   rO   rP   )r«   r   r%   r   r   r   r   r   r   r   r   r#   r$   r­   r&   r(   r)   )r]   r’   r[   r˜   rš   r`   r7   r7   r;   r[   Á  sj    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬zNodeTreeSnapshot.from_json)rb   rc   rd   re   r«   rf   r   r%   r   r   r   r   r   r   r   r   r#   r$   r­   r&   r(   r)   r@   rg   r[   r7   r7   r7   r;   rŸ   m  s*   
(rŸ   c                   @  s¤   e Zd ZU dZded< 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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 )r¡   zCTable of details of an element in the DOM tree with a LayoutObject.r“   Ú
node_indexztyping.List[ArrayOfStrings]Ústylesútyping.List[Rectangle]Úboundsr‘   Útextr˜   Ústacking_contextsNr   Úpaint_ordersz'typing.Optional[typing.List[Rectangle]]Úoffset_rectsÚscroll_rectsÚclient_rectsr¬   Úblended_background_colorsz#typing.Optional[typing.List[float]]Útext_color_opacitiesr   r-   c                 C  s  t ƒ }dd„ | jD ƒ|d< dd„ | jD ƒ|d< dd„ | jD ƒ|d< dd„ | jD ƒ|d	< | j ¡ |d
< | jd ur‚dd„ | jD ƒ|d< | jd ur dd„ | jD ƒ|d< | j	d ur¾dd„ | j	D ƒ|d< | j
d urÜdd„ | j
D ƒ|d< | jd urúdd„ | jD ƒ|d< | jd u�rdd„ | jD ƒ|d< |S )Nc                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<   B  r=   z.LayoutTreeSnapshot.to_json.<locals>.<listcomp>Ú	nodeIndexc                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   C  r=   r²   c                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   D  r=   r´   c                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   E  r=   rµ   ÚstackingContextsc                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<   H  r=   ÚpaintOrdersc                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   J  r=   ÚoffsetRectsc                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   L  r=   ÚscrollRectsc                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   N  r=   ÚclientRectsc                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   P  s   ÚblendedBackgroundColorsc                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<   T  r=   ÚtextColorOpacities)rS   r±   r²   r´   rµ   r¶   r@   r·   r¸   r¹   rº   r»   r¼   rT   r7   r7   r;   r@   @  s*    




ÿ
zLayoutTreeSnapshot.to_jsonrW   c                 C  s0  | dd„ |d D ƒdd„ |d D ƒdd„ |d D ƒdd„ |d	 D ƒt  |d
 ¡| dd ¡d urpdd„ |d D ƒnd | dd ¡d ur”dd„ |d D ƒnd | dd ¡d ur¸dd„ |d D ƒnd | dd ¡d urÜdd„ |d D ƒnd | dd ¡d u�rdd„ |d D ƒnd | dd ¡d u�r(dd„ |d D ƒnd d�S )Nc                 S  s   g | ]}t |ƒ‘qS r7   rX   r8   r7   r7   r;   r<   Z  r=   z0LayoutTreeSnapshot.from_json.<locals>.<listcomp>r½   c                 S  s   g | ]}t  |¡‘qS r7   r°   r8   r7   r7   r;   r<   [  r=   r²   c                 S  s   g | ]}t  |¡‘qS r7   ©r›   r[   r8   r7   r7   r;   r<   \  r=   r´   c                 S  s   g | ]}t  |¡‘qS r7   r–   r8   r7   r7   r;   r<   ]  r=   rµ   r¾   r¿   c                 S  s   g | ]}t |ƒ‘qS r7   rX   r8   r7   r7   r;   r<   b  r=   rÀ   c                 S  s   g | ]}t  |¡‘qS r7   rÅ   r8   r7   r7   r;   r<   g  r=   rÁ   c                 S  s   g | ]}t  |¡‘qS r7   rÅ   r8   r7   r7   r;   r<   l  r=   rÂ   c                 S  s   g | ]}t  |¡‘qS r7   rÅ   r8   r7   r7   r;   r<   q  r=   rÃ   c                 S  s   g | ]}t  |¡‘qS r7   r–   r8   r7   r7   r;   r<   v  s   ÿrÄ   c                 S  s   g | ]}t |ƒ‘qS r7   )r_   r8   r7   r7   r;   r<   ~  r=   )r±   r²   r´   rµ   r¶   r·   r¸   r¹   rº   r»   r¼   )r˜   r[   r]   r`   r7   r7   r;   r[   W  s:    ÿÿÿÿÿü
þÿÙzLayoutTreeSnapshot.from_json)rb   rc   rd   re   rf   r·   r¸   r¹   rº   r»   r¼   r@   rg   r[   r7   r7   r7   r;   r¡     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 )r£   z¡
    Table of details of the post layout rendered text positions.
    The exact layout should not be regarded as
    stable and may change between versions.
    r“   Úlayout_indexr³   r´   ÚstartÚlengthr   r-   c                 C  sZ   t ƒ }dd„ | jD ƒ|d< dd„ | jD ƒ|d< dd„ | jD ƒ|d< dd„ | jD ƒ|d	< |S )
Nc                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<   ›  r=   z+TextBoxSnapshot.to_json.<locals>.<listcomp>ÚlayoutIndexc                 S  s   g | ]}|  ¡ ‘qS r7   r?   r8   r7   r7   r;   r<   œ  r=   r´   c                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<   �  r=   rÇ   c                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<   ž  r=   rÈ   )rS   rÆ   r´   rÇ   rÈ   rT   r7   r7   r;   r@   ™  s    zTextBoxSnapshot.to_jsonrW   c                 C  sH   | dd„ |d D ƒdd„ |d D ƒdd„ |d D ƒdd„ |d	 D ƒd
�S )Nc                 S  s   g | ]}t |ƒ‘qS r7   rX   r8   r7   r7   r;   r<   ¤  r=   z-TextBoxSnapshot.from_json.<locals>.<listcomp>rÉ   c                 S  s   g | ]}t  |¡‘qS r7   rÅ   r8   r7   r7   r;   r<   ¥  r=   r´   c                 S  s   g | ]}t |ƒ‘qS r7   rX   r8   r7   r7   r;   r<   ¦  r=   rÇ   c                 S  s   g | ]}t |ƒ‘qS r7   rX   r8   r7   r7   r;   r<   §  r=   rÈ   )rÆ   r´   rÇ   rÈ   r7   r`   r7   r7   r;   r[   ¡  s    üzTextBoxSnapshot.from_jsonNrq   r7   r7   r7   r;   r£   …  s   
r£   z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]r-   c                  c  s   ddi} | V }dS )z/Disables DOM snapshot agent for the given page.ÚmethodzDOMSnapshot.disableNr7   ©Úcmd_dictrV   r7   r7   r;   Údisable«  s    ÿrÍ   c                  c  s   ddi} | V }dS )z.Enables DOM snapshot agent for the given page.rÊ   zDOMSnapshot.enableNr7   rË   r7   r7   r;   Úenable³  s    ÿrÎ   ztyping.List[str]r   z‡typing.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[typing.List[DOMNode], typing.List[LayoutTreeNode], typing.List[ComputedStyle]]])Úcomputed_style_whitelistÚinclude_event_listenersÚinclude_paint_orderÚinclude_user_agent_shadow_treer.   c                 c  sŒ   t ƒ }dd„ | D ƒ|d< |dur(||d< |dur8||d< |durH||d< d|d	œ}|V }d
d„ |d D ƒdd„ |d D ƒdd„ |d D ƒfS )a|  
    Returns a document snapshot, including the full DOM tree of the root node
    (including iframes, template contents, and imported documents)
    in a flattened array, as well as layout and white-listed computed style
    information for the nodes. ShadowDOM in the returned DOM tree is flattened.
    .. deprecated:: 1.3
    :param computed_style_whitelist: Whitelist of computed styles to return.
    :param include_event_listeners: *(Optional)*
      Whether or not to retrieve details of DOM listeners (default false).
    :param include_paint_order: *(Optional)*
      Whether to determine and include the paint order index of LayoutTreeNodes
      (default false).
    :param include_user_agent_shadow_tree: *(Optional)*
      Whether to include UA shadow tree in the snapshot (default false).
    :returns: A tuple with the following items:
        0. **domNodes** - The nodes in the DOM tree.
        The DOMNode at index 0 corresponds to the root document.
        1. **layoutTreeNodes** - The nodes in the layout tree.
        2. **computedStyles** -
        Whitelisted ComputedStyle properties for each node in the layout tree.
    c                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<   ß  r=   z get_snapshot.<locals>.<listcomp>ZcomputedStyleWhitelistNZincludeEventListenersÚincludePaintOrderZincludeUserAgentShadowTreezDOMSnapshot.getSnapshot©rÊ   Úparamsc                 S  s   g | ]}t  |¡‘qS r7   )r	   r[   r8   r7   r7   r;   r<   ì  r=   ZdomNodesc                 S  s   g | ]}t  |¡‘qS r7   )rr   r[   r8   r7   r7   r;   r<   í  r=   ZlayoutTreeNodesc                 S  s   g | ]}t  |¡‘qS r7   )r   r[   r8   r7   r7   r;   r<   î  r=   ÚcomputedStyles©rS   )rÏ   rÐ   rÑ   rÒ   rÕ   rÌ   rV   r7   r7   r;   Úget_snapshot»  s     #þýrØ   zityping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[typing.List[DocumentSnapshot], typing.List[str]]])Úcomputed_stylesrÑ   Úinclude_dom_rectsÚ!include_blended_background_colorsÚinclude_text_color_opacitiesr.   c                 c  sŒ   t ƒ }dd„ | D ƒ|d< |dur(||d< |dur8||d< |durH||d< |durX||d< d	|d
œ}|V }dd„ |d D ƒdd„ |d D ƒfS )a	  
    Returns a document snapshot, including the full DOM tree of the root node
    (including iframes, template contents, and imported documents)
    in a flattened array, as well as layout and white-listed computed style
    information for the nodes. Shadow DOM in the returned DOM tree is
    flattened.
    :param computed_styles: Whitelist of computed styles to return.
    :param include_paint_order: *(Optional)*
     Whether to include layout object paint orders into the snapshot.
    :param include_dom_rects: *(Optional)* Whether to include DOM rectangles
     (offsetRects, clientRects, scrollRects) into the snapshot
    :param include_blended_background_colors: **(EXPERIMENTAL)** *(Optional)*
     Whether to include blended background colors in the snapshot
     (default: false). Blended background color is achieved by blending
     background colors of all elements that overlap with the current element.
    :param include_text_color_opacities: **(EXPERIMENTAL)** *(Optional)*
     Whether to include text color opacity in the snapshot (default: false).
     An element might have the opacity property set that affects the text
     color of the element. The final text color opacity is computed based on
     the opacity of all overlapping elements.
    :returns: A tuple with the following items:
        0. **documents** - The nodes in the DOM tree.
        The DOMNode at index 0 corresponds to the root document.
        1. **strings** -
        Shared string table that all string properties refer to with indexes.
    c                 S  s   g | ]}|‘qS r7   r7   r8   r7   r7   r;   r<     r=   z$capture_snapshot.<locals>.<listcomp>rÖ   NrÓ   ZincludeDOMRectsZincludeBlendedBackgroundColorsZincludeTextColorOpacitieszDOMSnapshot.captureSnapshotrÔ   c                 S  s   g | ]}t  |¡‘qS r7   )rœ   r[   r8   r7   r7   r;   r<   )  r=   Z	documentsc                 S  s   g | ]}t |ƒ‘qS r7   rƒ   r8   r7   r7   r;   r<   *  r=   Ústringsr×   )rÙ   rÑ   rÚ   rÛ   rÜ   rÕ   rÌ   rV   r7   r7   r;   Úcapture_snapshotò  s$    %ÿþþrÞ   )NNN)NNNN) Ú
__future__r   ÚtypingÚdataclassesr   Úutilr   Ú r   r   r   r	   rh   rr   r   rZ   r
   r„   Úlistr�   r’   r˜   rš   r›   rœ   rŸ   r¡   r£   rÍ   rÎ   rØ   rÞ   r7   r7   r7   r;   Ú<module>   s^     	#H] /h%
   ü9    û