o
    Yh!                     @  s   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	 d	Z	
	
		
ddddZd
S )    )annotations)TYPE_CHECKINGcast)LayoutConfig)StreamlitAPIException)IFrame)gather_metrics)DeltaGeneratorc                   @  sZ   e Zd Zed			ddddddZed			ddddddZedddZdS )IframeMixin_iframeNF)	tab_indexsrcstrwidth
int | Noneheight	scrollingboolr   returnr	   c                C  L   t  }t||||d t|dur|nd|dur|ndd}| jjd||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)

        )r   r   r   Nstretch   r   r   iframelayout_configIFrameProtomarshallr   dg_enqueue)selfr   r   r   r   r   iframe_protor    r#   Z/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/streamlit/elements/iframe.pyr      s   BzIframeMixin._iframe_htmlhtmlc                C  r   )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   Nr   r   r   r   r   r   )r!   r&   r   r   r   r   r"   r   r#   r#   r$   r%   m   s   GzIframeMixin._htmlc                 C  s
   t d| S )zGet our DeltaGenerator.r	   )r   )r!   r#   r#   r$   r      s   
zIframeMixin.dg)NNF)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	   )__name__
__module____qualname__r   r   r%   propertyr   r#   r#   r#   r$   r
      s"    OTr
   NFprotor   r   
str | Noner'   r   r   r   r   r   Nonec                 C  s\   |dur|| _ |dur|| _|| _|dur,t|tr#t|ts#|dks'td|| _dS dS )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   )r,   r   r'   r   r   r#   r#   r$   r      s    
r   )NNFN)r,   r   r   r-   r'   r-   r   r   r   r   r   r.   )
__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   r#   r#   r#   r$   <module>   s    /