o
    jqi                     @  s   d Z ddlmZ ddlmZmZmZmZ ddlm	Z	 ddl
mZmZmZ erJddlm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 G dd deZdS )z4Custom element classes related to paragraphs (CT_P).    )annotations)TYPE_CHECKINGCallableListcast)OxmlElement)BaseOxmlElement
ZeroOrMore	ZeroOrOne)WD_PARAGRAPH_ALIGNMENT)	CT_SectPr)CT_Hyperlink)CT_LastRenderedPageBreak)CT_PPr)CT_Rc                   @  s   e Zd ZU dZded< ded< ded< ded	< ed
Zded< edZedZ	d/ddZ
ed0ddZejd1ddZdd Zed2ddZed3ddZd4d"d#Zed5d%d&Zejd6d(d&Zed)d* Zd7d,d-Zd.S )8CT_PzD`<w:p>` element, containing the properties and text for a paragraph.zCallable[[], CT_R]Zadd_rzCallable[[], CT_PPr]get_or_add_pPrzList[CT_Hyperlink]Zhyperlink_lstz
List[CT_R]Zr_lstzw:pPrzCT_PPr | NonepPrzw:hyperlinkzw:rreturnc                 C  s   t ttd}| | |S )zAReturn a new `<w:p>` element inserted directly prior to this one.zw:p)r   r   r   Zaddprevious)selfZnew_p r   _/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/docx/oxml/text/paragraph.pyadd_p_before!   s   
zCT_P.add_p_beforeWD_PARAGRAPH_ALIGNMENT | Nonec                 C     | j }|du r	dS |jS )zFThe value of the `<w:jc>` grandchild element or |None| if not present.N)r   jc_valr   r   r   r   r   	alignment'   s   zCT_P.alignmentvaluer   c                 C     |   }||_d S N)r   r   )r   r   r   r   r   r   r   /      
c                 C  s   |  dD ]}| | qdS )zCRemove all child elements, except the `<w:pPr>` element if present.z./*[not(self::w:pPr)]N)xpathremove)r   childr   r   r   clear_content4   s   zCT_P.clear_contentList[CT_R | CT_Hyperlink]c                 C  
   |  dS )zCRun and hyperlink children of the `w:p` element, in document order.z./w:r | ./w:hyperlinkr"   r   r   r   r   inner_content_elements9   s   
zCT_P.inner_content_elementsList[CT_LastRenderedPageBreak]c                 C  r'   )zAll `w:lastRenderedPageBreak` descendants of this paragraph.

        Rendered page-breaks commonly occur in a run but can also occur in a run inside
        a hyperlink. This returns both.
        zI./w:r/w:lastRenderedPageBreak | ./w:hyperlink/w:r/w:lastRenderedPageBreakr(   r)   r   r   r   lastRenderedPageBreaks>   s   zCT_P.lastRenderedPageBreakssectPrr   c                 C  s   |   }|  || dS )zJUnconditionally replace or add `sectPr` as grandchild in correct sequence.N)r   Z_remove_sectPrZ_insert_sectPr)r   r-   r   r   r   r   
set_sectPrI   s   zCT_P.set_sectPr
str | Nonec                 C  r   )zpString contained in `w:val` attribute of `./w:pPr/w:pStyle` grandchild.

        |None| if not present.
        N)r   styler   r   r   r   r0   O   s   z
CT_P.styler0   c                 C  r   r    )r   r0   )r   r0   r   r   r   r   r0   Z   r!   c                 C  s   d dd | dD S )zThe textual content of this paragraph.

        Inner-content child elements like `w:r` and `w:hyperlink` are translated to
        their text equivalent.
         c                 s  s    | ]}|j V  qd S r    )text).0er   r   r   	<genexpr>f   s    zCT_P.text.<locals>.<genexpr>zw:r | w:hyperlink)joinr"   r)   r   r   r   r2   _   s   z	CT_P.textr   c                 C  s   |  d| |S )Nr   )insertr   r   r   r   _insert_pPrh   s   zCT_P._insert_pPrN)r   r   )r   r   )r   r   )r   r&   )r   r+   )r-   r   )r   r/   )r0   r/   )r   r   r   r   )__name__
__module____qualname____doc____annotations__r
   r   r	   Z	hyperlinkrr   propertyr   setterr%   r*   r,   r.   r0   r2   r8   r   r   r   r   r      s6   
 




r   N)r<   
__future__r   typingr   r   r   r   Zdocx.oxml.parserr   Zdocx.oxml.xmlchemyr   r	   r
   Zdocx.enum.textr   Zdocx.oxml.sectionr   Zdocx.oxml.text.hyperlinkr   Zdocx.oxml.text.pagebreakr   Zdocx.oxml.text.parfmtr   Zdocx.oxml.text.runr   r   r   r   r   r   <module>   s   