
    ȯei                         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 d dlmZ erd dlmZ  G d d	      Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZy
)    )annotations)TYPE_CHECKINGcast)LayoutConfig)StreamlitAPIException)IFrame)gather_metrics)DeltaGeneratorc                      e Zd Z ed      	 	 	 ddd	 	 	 	 	 	 	 	 	 	 	 d	d       Z ed      	 	 	 ddd	 	 	 	 	 	 	 	 	 	 	 d
d       Zedd       Zy)IframeMixin_iframeN)	tab_indexc                   t               }t        ||||       t        ||nd||nd      }| j                  j	                  d||      S )ad  Load a remote URL in an iframe.

        To use this function, import it from the ``streamlit.components.v1``
        module.

        .. warning::
            Using ``st.components.v1.iframe`` directly (instead of importing
            its module) is deprecated and will be disallowed in a later version.

        Parameters
        ----------
        src : str
            The URL of the page to embed.

        width : int
            The width of the iframe in CSS pixels. By default, this is the
            app's default element width.

        height : int
            The height of the frame in CSS pixels. By default, this is ``150``.

        scrolling : bool
            Whether to allow scrolling in the iframe. If this ``False``
            (default), Streamlit crops any content larger than the iframe and
            does not show a scrollbar. If this is ``True``, Streamlit shows a
            scrollbar when the content is larger than the iframe.

        tab_index : int or None
            Specifies how and if the iframe is sequentially focusable.
            Users typically use the ``Tab`` key for sequential focus
            navigation.

            This can be one of the following values:

            - ``None`` (default): Uses the browser's default behavior.
            - ``-1``: Removes the iframe from sequential navigation, but still
              allows it to be focused programmatically.
            - ``0``: Includes the iframe in sequential navigation in the order
              it appears in the document but after all elements with a positive
              ``tab_index``.
            - Positive integer: Includes the iframe in sequential navigation.
              Elements are navigated in ascending order of their positive
              ``tab_index``.

            For more information, see the `tabindex
            <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex>`_
            documentation on MDN.

        Example
        -------

        >>> import streamlit.components.v1 as components
        >>>
        >>> components.iframe("https://example.com", height=500)

        )src	scrollingr   stretch   widthheightiframelayout_configIFrameProtomarshallr   dg_enqueue)selfr   r   r   r   r   iframe_protor   s           [/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/streamlit/elements/iframe.pyr   zIframeMixin._iframe   s^    D #}		
 % ,%)#/6S
 ww,mTT    _htmlc                   t               }t        ||||       t        ||nd||nd      }| j                  j	                  d||      S )a%	  Display an HTML string in an iframe.

        To use this function, import it from the ``streamlit.components.v1``
        module.

        If you want to insert HTML text into your app without an iframe, try
        ``st.html`` instead.

        .. warning::
            Using ``st.components.v1.html`` directly (instead of importing
            its module) is deprecated and will be disallowed in a later version.

        Parameters
        ----------
        html : str
            The HTML string to embed in the iframe.

        width : int
            The width of the iframe in CSS pixels. By default, this is the
            app's default element width.

        height : int
            The height of the frame in CSS pixels. By default, this is ``150``.

        scrolling : bool
            Whether to allow scrolling in the iframe. If this ``False``
            (default), Streamlit crops any content larger than the iframe and
            does not show a scrollbar. If this is ``True``, Streamlit shows a
            scrollbar when the content is larger than the iframe.

        tab_index : int or None
            Specifies how and if the iframe is sequentially focusable.
            Users typically use the ``Tab`` key for sequential focus
            navigation.

            This can be one of the following values:

            - ``None`` (default): Uses the browser's default behavior.
            - ``-1``: Removes the iframe from sequential navigation, but still
              allows it to be focused programmatically.
            - ``0``: Includes the iframe in sequential navigation in the order
              it appears in the document but after all elements with a positive
              ``tab_index``.
            - Positive integer: Includes the iframe in sequential navigation.
              Elements are navigated in ascending order of their positive
              ``tab_index``.

            For more information, see the `tabindex
            <https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex>`_
            documentation on MDN.

        Example
        -------

        >>> import streamlit.components.v1 as components
        >>>
        >>> components.html(
        >>>     "<p><span style='text-decoration: line-through double red;'>Oops</span>!</p>"
        >>> )

        )srcdocr   r   r   r   r   r   r   r   )r   htmlr   r   r   r   r    r   s           r!   r#   zIframeMixin._htmll   s^    N #}		
 % ,%)#/6S
 ww,mTTr"   c                    t        d|       S )zGet our DeltaGenerator.r
   )r   )r   s    r!   r   zIframeMixin.dg   s     $d++r"   )NNF)r   strr   
int | Noner   r)   r   boolr   r)   returnr
   )r&   r(   r   r)   r   r)   r   r*   r   r)   r+   r
   )r+   r
   )__name__
__module____qualname__r	   r   r#   propertyr    r"   r!   r   r      s
   I !!LU !%LULU LU 	LU
 LU LU 
LU LU\ G !!QU !%QUQU QU 	QU
 QU QU 
QU QUf , ,r"   r   Nc                    ||| _         ||| _        || _        |8t        |t              rt        |t
              s|dk\  st        d      || _        yy)a  Marshalls data into an IFrame proto.

    These parameters correspond directly to <iframe> attributes, which are
    described in more detail at
    https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe.

    Parameters
    ----------
    proto : IFrame protobuf
        The protobuf object to marshall data into.
    src : str
        The URL of the page to embed.
    srcdoc : str
        Inline HTML to embed. Overrides src.
    scrolling : bool
        If true, show a scrollbar when the content is larger than the iframe.
        Otherwise, never show a scrollbar.
    tab_index : int, optional
        Specifies the tab order of the iframe.

    Nz6tab_index must be None, -1, or a non-negative integer.)r   r%   r   
isinstanceintr*   r   r   )protor   r%   r   r   s        r!   r   r      se    8 	EO y#&y$/R'H  $ r"   )NNFN)r5   r   r   
str | Noner%   r6   r   r*   r   r)   r+   None)
__future__r   typingr   r   #streamlit.elements.lib.layout_utilsr   streamlit.errorsr   streamlit.proto.IFrame_pb2r   r   streamlit.runtime.metrics_utilr	   streamlit.delta_generatorr
   r   r   r0   r"   r!   <module>r?      sw    # & < 2 < 98g, g,X  /$/$	/$ /$ 	/$
 /$ 
/$r"   