o
    ýÞhÒ  ã                   @  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]Úadd_rzCallable[[], CT_PPr]Úget_or_add_pPrzList[CT_Hyperlink]Úhyperlink_lstz
List[CT_R]Ú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   Úaddprevious)ÚselfÚnew_p© r   úX/var/www/html/premium_crap/venv/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,   )zÆAll `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   Ú_remove_sectPrÚ_insert_sectPr)r   r2   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   r7   O   s   z
CT_P.styler7   c                 C  r$   r%   )r   r7   )r   r7   r   r   r   r   r7   Z   r&   c                 C  s   d  dd„ |  d¡D ƒ¡S )z£The 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   r9   _   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   r0   )r2   r   )r   r6   )r7   r6   )r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r
   r   r	   Ú	hyperlinkÚrr   Úpropertyr"   Úsetterr*   r/   r1   r5   r7   r9   r?   r   r   r   r   r      s6   
 


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