
    -eXZ                       d Z ddlmZ ddlZ ej        e          ZddlmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZ ddlmZmZ ddlmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ dd	l%m&Z& dd
l'm(Z(m)Z)m*Z* ddl+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z= dZ>e G d de=                      Z? G d de?          Z@e G d de                      ZA G d de?eA          ZB G d de?          ZC G d de?          ZDe G d d e?                      ZE G d! d"eE          ZF G d# d$eE          ZG G d% d&e9          ZH G d' d(e?          ZI G d) d*e?          ZJ G d+ d,e?          ZKdS )-z& Various kinds of layout components.

    )annotationsN   )RGBColor	ColorLike)Align
DimensionsFlowModeLocationScrollbarPolicy
SizingModeSizingPolicy)HasPropsabstract)AutoBoolEitherEnumFloatInstanceIntListNonNegativeNullNullableStringStructTuple)Optional)GridSpacingPixelsTracksSizing)errorwarning)MIN_PREFERRED_MAX_HEIGHTMIN_PREFERRED_MAX_WIDTHREPEATED_LAYOUT_CHILD)BOTH_CHILD_AND_ROOTEMPTY_LAYOUTFIXED_HEIGHT_POLICYFIXED_SIZING_MODEFIXED_WIDTH_POLICY)Model   )Menu)	UIElement)ColumnFlexBoxGridBoxGroupBoxHBox	LayoutDOMRow	ScrollBoxSpacerTabPanelTabsVBoxc                  6    e Zd ZU dZd' fdZ edd          Z e ee	          d          Z
d	ed
<    e ee	          d          Zd	ed<    e ee	          d          Z e ee	          d          Z e ee	          d          Z e ee	          d          Z e ee	 ee	e	           ee	e	e	e	                    d          Z ee ee          dd          Z ee ee          dd          Z eeeed          Z eedd          Z e ee          d          Z ee ee            e ee            ee                     dd          Z! e e"e#          dd          Z$ ee ee%          dd          Z&d(d Z' e(de'          Z) e*e+          d!             Z, e*e-          d"             Z. e*e/          d#             Z0 e1e2          d$             Z3 e1e4          d%             Z5d)d&Z6 xZ7S )*r6   z0 The base class for layoutable components.

    returnNonec                :     t                      j        |i | d S Nsuper__init__selfargskwargs	__class__s      4lib/python3.11/site-packages/bokeh/models/layouts.pyrD   zLayoutDOM.__init__`   %    $)&)))))    Fz
    Whether the widget will be disabled when rendered.

    If ``True``, the widget will be greyed-out and not responsive to UI events.
    helpz
    The width of the component (in pixels).

    This can be either fixed or preferred width, depending on width sizing policy.
    
int | Nonewidthz
    The height of the component (in pixels).

    This can be either fixed or preferred height, depending on height sizing policy.
    heightzL
    Minimal width of the component (in pixels) if width is adjustable.
    zN
    Minimal height of the component (in pixels) if height is adjustable.
    zL
    Maximal width of the component (in pixels) if width is adjustable.
    zN
    Maximal height of the component (in pixels) if height is adjustable.
    a  
    Allows to create additional space around the component.
    The values in the tuple are ordered as follows - Margin-Top, Margin-Right, Margin-Bottom and Margin-Left,
    similar to CSS standards.
    Negative margin values may be used to shrink the space from any direction.
    autoa(  
    Describes how the component should maintain its width.

    ``"auto"``
        Use component's preferred sizing policy.

    ``"fixed"``
        Use exactly ``width`` pixels. Component will overflow if it can't fit in the
        available horizontal space.

    ``"fit"``
        Use component's preferred width (if set) and allow it to fit into the available
        horizontal space within the minimum and maximum width bounds (if set). Component's
        width neither will be aggressively minimized nor maximized.

    ``"min"``
        Use as little horizontal space as possible, not less than the minimum width (if set).
        The starting point is the preferred width (if set). The width of the component may
        shrink or grow depending on the parent layout, aspect management and other factors.

    ``"max"``
        Use as much horizontal space as possible, not more than the maximum width (if set).
        The starting point is the preferred width (if set). The width of the component may
        shrink or grow depending on the parent layout, aspect management and other factors.

    .. note::
        This is an experimental feature and may change in future. Use it at your
        own discretion. Prefer using ``sizing_mode`` if this level of control isn't
        strictly necessary.

    defaultrN   a(  
    Describes how the component should maintain its height.

    ``"auto"``
        Use component's preferred sizing policy.

    ``"fixed"``
        Use exactly ``height`` pixels. Component will overflow if it can't fit in the
        available vertical space.

    ``"fit"``
        Use component's preferred height (if set) and allow to fit into the available
        vertical space within the minimum and maximum height bounds (if set). Component's
        height neither will be aggressively minimized nor maximized.

    ``"min"``
        Use as little vertical space as possible, not less than the minimum height (if set).
        The starting point is the preferred height (if set). The height of the component may
        shrink or grow depending on the parent layout, aspect management and other factors.

    ``"max"``
        Use as much vertical space as possible, not more than the maximum height (if set).
        The starting point is the preferred height (if set). The height of the component may
        shrink or grow depending on the parent layout, aspect management and other factors.

    .. note::
        This is an experimental feature and may change in future. Use it at your
        own discretion. Prefer using ``sizing_mode`` if this level of control isn't
        strictly necessary.

    a  
    Describes the proportional relationship between component's width and height.

    This works if any of component's dimensions are flexible in size. If set to
    a number, ``width / height = aspect_ratio`` relationship will be maintained.
    Otherwise, if set to ``"auto"``, component's preferred width and height will
    be used to determine the aspect (if not set, no aspect will be preserved).

    blockzX
    Defines whether the layout will flow in the ``block`` or ``inline`` dimension.
    a  
    How the component should size itself.

    This is a high-level setting for maintaining width and height of the component. To
    gain more fine grained control over sizing, use ``width_policy``, ``height_policy``
    and ``aspect_ratio`` instead (those take precedence over ``sizing_mode``).

    Possible scenarios:

    ``"inherit"``
        The sizing mode is inherited from the parent layout. If there is no parent
        layout (or parent is not a layout), then this value is treated as if no
        value for ``sizing_mode`` was provided.

    ``"fixed"``
        Component is not responsive. It will retain its original width and height
        regardless of any subsequent browser window resize events.

    ``"stretch_width"``
        Component will responsively resize to stretch to the available width, without
        maintaining any aspect ratio. The height of the component depends on the type
        of the component and may be fixed or fit to component's contents.

    ``"stretch_height"``
        Component will responsively resize to stretch to the available height, without
        maintaining any aspect ratio. The width of the component depends on the type
        of the component and may be fixed or fit to component's contents.

    ``"stretch_both"``
        Component is completely responsive, independently in width and height, and
        will occupy all the available horizontal and vertical space, even if this
        changes the aspect ratio of the component.

    ``"scale_width"``
        Component will responsively resize to stretch to the available width, while
        maintaining the original or provided aspect ratio.

    ``"scale_height"``
        Component will responsively resize to stretch to the available height, while
        maintaining the original or provided aspect ratio.

    ``"scale_both"``
        Component will responsively resize to both the available width and height, while
        maintaining the original or provided aspect ratio.

    z
    The alignment point within the parent container.

    This property is useful only if this component is a child element of a layout
    (e.g. a grid). Self alignment can be overridden by the parent container (e.g.
    grid track align).
    Na  
    A menu to display when user right clicks on the component.

    .. note::
        To display a native context menu, the viewer will need to right-click
        twice. The second click closes the Bokeh context menu and falls back
        back the native one.
    zW
    Whether the layout is interactively resizable, and if so in which dimensions.
    colorr   c                4   t          |t                    r|                                }n;t          |t                    r&t	          j        |                                          }t          | j        t                    r|| j        d<   dS || j        _        dS )z$ Background color of the component. zbackground-colorN)	
isinstancer   to_csstupler   
from_tuplestylesdictbackground_color)rF   rV   s     rJ   _set_backgroundzLayoutDOM._set_background  s    eU## 	3LLNNEEu%% 	3N5))0022Edk4(( 	1.3DK*++++0DK(((rL   c                Z    | j         dk    r| j        | j        t          |           S d S d S Nfixed)sizing_moderP   rQ   strrF   s    rJ   _check_fixed_sizing_modez"LayoutDOM._check_fixed_sizing_mode,  s8    w&&DJ,>$+BUt99 '&BUBUrL   c                L    | j         dk    r| j        t          |           S d S d S ra   )width_policyrP   rd   re   s    rJ   _check_fixed_width_policyz#LayoutDOM._check_fixed_width_policy1  s1    ''DJ,>t99 (',>,>rL   c                L    | j         dk    r| j        t          |           S d S d S ra   )height_policyrQ   rd   re   s    rJ   _check_fixed_height_policyz$LayoutDOM._check_fixed_height_policy6  s1    ((T[-@t99 )(-@-@rL   c                    | j         | j         nd}| j        | j        n|}| j        | j        n|}||cxk    r|k    sn t          |           S d S Nr   )	min_widthrP   	max_widthrd   )rF   ro   rP   rp   s       rJ   _min_preferred_max_widthz"LayoutDOM._min_preferred_max_width;  sk    &*n&@DNNa	&*j&@DJJi&*n&@DNNe	U////i////t99 0/rL   c                    | j         | j         nd}| j        | j        n|}| j        | j        n|}||cxk    r|k    sn t          |           S d S rn   )
min_heightrQ   
max_heightrd   )rF   rs   rQ   rt   s       rJ   _min_preferred_max_heightz#LayoutDOM._min_preferred_max_heightD  sk    (,(CT__
(,(CT[[(,(CT__
f2222
2222t99 32rL   c                &    | j         dv r| j        S d S )N)stretch_widthrb   N)rc   rQ   re   s    rJ   _sphinx_height_hintzLayoutDOM._sphinx_height_hintM  s    ???;trL   r>   r?   )rV   r   r>   r?   r>   rO   )8__name__
__module____qualname____doc__rD   r   disabledr   r   r   rP   __annotations__rQ   ro   rs   rp   rt   r   r   marginr   r   r   rh   rk   r   r   aspect_ratior
   	flow_moder   rc   r   alignr   r/   context_menur	   	resizabler_   property
backgroundr$   r+   rf   r,   ri   r*   rl   r#   r&   rq   r%   ru   rx   __classcell__rI   s   @rJ   r6   r6   Y   s8         
* * * * * * tE ! 	 	 	H !S!1!1 9 	 	 	E 	 	 	 	 "++c"2"2 : 	 	 	F 	 	 	 	 S)) 1 	 	 	I ++c** 2 	 	 	J S)) 1 	 	 	I ++c** 2 	 	 	J XffS%%S//55c33L3LMM U 	 	 	F 6$\ 2 2F J 	 	 	L@ F4l!3!3V K 	 	 	M@ 6$e 3 	 	 	L Xw 6 	 	 	I (44
++ -3 -	 -	 -	K^ F4eeeDDKKe&E&Ev ] 	 	 	E 8HHTNND @ 	 	 	L tTT*--u D 	 	 	I
1 
1 
1 
1 $00JW    W    !  W !!  "! U"##  $# U#$$  %$       rL   r6   c                  $     e Zd ZdZd fdZ xZS )r9   zK A container for space used to fill an empty spot in a row or column.

    r>   r?   c                :     t                      j        |i | d S rA   rB   rE   s      rJ   rD   zSpacer.__init__X  rK   rL   ry   )r{   r|   r}   r~   rD   r   r   s   @rJ   r9   r9   R  sG         
* * * * * * * * * *rL   r9   c                  d    e Zd ZdZ eedd          Z eedd          Z edd          Z	dS )
GridCommonz* Common properties for grid-like layouts. Na  
    Describes how the grid should maintain its rows' heights.

    This maps to CSS grid's track sizing options. In particular the following
    values are allowed:

    * length, e.g. ``100px``, ``5.5em``
    * percentage, e.g. ``33%``
    * flex, e.g. 1fr
    * enums, e.g.  ``max-content``, ``min-content``, ``auto``, etc.

    If a single value is provided, then it applies to all rows. A list of
    values can be provided to size all rows, or a dictionary providing
    sizing for individual rows.

    See https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-rows
    or https://w3c.github.io/csswg-drafts/css-grid/#track-sizing for details.
    rS   a  
    Describes how the grid should maintain its columns' widths.

    This maps to CSS grid's track sizing options. In particular the following
    values are allowed:

    * length, e.g. ``100px``, ``5.5em``
    * percentage, e.g. ``33%``
    * flex, e.g. 1fr
    * enums, e.g.  ``max-content``, ``min-content``, ``auto``, etc.

    If a single value is provided, then it applies to all columns. A list of
    values can be provided to size all columns, or a dictionary providing
    sizing for individual columns.

    See https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns
    or https://w3c.github.io/csswg-drafts/css-grid/#track-sizing for details.
    r   z
    The gap between children (in pixels).

    Either a number, if spacing is the same for both dimensions, or a pair
    of numbers indicating spacing in the vertical and horizontal dimensions
    respectively.
    )
r{   r|   r}   r~   r   r"   rowscolsr    spacing rL   rJ   r   r   [  ss        448L$ 6 	 	 	D& 8L$ 6 	 	 	D& k! + 	 	 	GGGrL   r   c                       e Zd ZdZd fdZ e e e ee	          e
e
           e ee	          e
e
e
e
                    g d          Z ee          d             Z xZS )	r3   z" A CSS grid-based grid container. r>   r?   c                :     t                      j        |i | d S rA   rB   rE   s      rJ   rD   zGridBox.__init__  rK   rL   zV
    A list of children with their associated position in the grid (row, column).
    rS   c                    d | j         D             }t          |          t          t          |                    k    rt          |           S d S )Nc                    g | ]
}|d          S )r   r   .0childs     rJ   
<listcomp>z;GridBox._check_repeated_layout_children.<locals>.<listcomp>  s    :::%U1X:::rL   )childrenlensetrd   rF   r   s     rJ   _check_repeated_layout_childrenz'GridBox._check_repeated_layout_children  sJ    ::4=:::x==CH....t99 /.rL   ry   )r{   r|   r}   r~   rD   r   r   r   r   r0   r   r   r#   r'   r   r   r   s   @rJ   r3   r3     s        ,,* * * * * * tFFhhy!!3,,hhy!!3S#668 8AC K	 	 	H U !!  "!    rL   r3   c            	      :    e Zd ZdZd fdZ e e ee           e	e
           e	e
                    g d                               e ee                    d           Z eed	d
          Z edd          Z ee          d             Z xZS )r5   z" A CSS grid-based horizontal box. r>   r?   c                :     t                      j        |i | d S rA   rB   rE   s      rJ   rD   zHBox.__init__  rK   rL   )r   colspanzr
    A list of children with their associated position in the horizontal box (optional; column number, span).
    rS   c                    d | D             S )Nc                .    g | ]}t          |           S r   r]   r   s     rJ   r   z!HBox.<lambda>.<locals>.<listcomp>  $    =h=h=hUZt%?P?P?P=h=h=hrL   r   r   s    rJ   <lambda>zHBox.<lambda>      =h=h^f=h=h=h rL   NzE
    Describes how the grid should maintain its columns' widths.
    r   /
    The gap between children (in pixels).
    c                    d | j         D             }t          |          t          t          |                    k    rt          |           S d S )Nc                    g | ]
}|d          S r   r   r   items     rJ   r   z8HBox._check_repeated_layout_children.<locals>.<listcomp>      ;;;tT'];;;rL   itemsr   r   rd   r   s     rJ   r   z$HBox._check_repeated_layout_children  J    ;;tz;;;x==CH....t99 /.rL   ry   )r{   r|   r}   r~   rD   r   r   r   r0   r   r   acceptsr   r   r"   r   r!   r   r#   r'   r   r   r   s   @rJ   r5   r5     s#       ,,* * * * * * tFF)!4!4((3--hhWZmm\\\fh p 	 	 		hhy))**,h,h	i	i  8L$ 6 	 	 	D fQ & 	 	 	G U !!  "!    rL   r5   c            	      :    e Zd ZdZd fdZ e e ee           e	e
           e	e
                    g d                               e ee                    d           Z eed	d
          Z edd          Z ee          d             Z xZS )r<   z  A CSS grid-based vertical box. r>   r?   c                :     t                      j        |i | d S rA   rB   rE   s      rJ   rD   zVBox.__init__  rK   rL   )r   rowr   zm
    A list of children with their associated position in the vertical box (optional; row number, span).
    rS   c                    d | D             S )Nc                .    g | ]}t          |           S r   r   r   s     rJ   r   z!VBox.<lambda>.<locals>.<listcomp>  r   rL   r   r   s    rJ   r   zVBox.<lambda>  r   rL   NzC
    Describes how the grid should maintain its rows' heights.
    r   r   c                    d | j         D             }t          |          t          t          |                    k    rt          |           S d S )Nc                    g | ]
}|d          S r   r   r   s     rJ   r   z8VBox._check_repeated_layout_children.<locals>.<listcomp>  r   rL   r   r   s     rJ   r   z$VBox._check_repeated_layout_children  r   rL   ry   )r{   r|   r}   r~   rD   r   r   r   r0   r   r   r   r   r   r"   r   r!   r   r#   r'   r   r   r   s   @rJ   r<   r<     s#       *** * * * * * tFF)!4!4((3--hhWZmm\\\fh p 	 	 		hhy))**,h,h	i	i  8L$ 6 	 	 	D fQ & 	 	 	G U !!  "!    rL   r<   c                       e Zd ZdZd fdZ ee          d             Z ee          d             Z	 e
e          d             Z e ee          d	          Z ed
d          Z xZS )r2   zC Abstract base class for Row and Column. Do not use directly.

    r>   r?   c                    t          |          dk    rd|v rt          d          t          |          dk    rt          |          |d<    t                      j        di | d S )Nr   r   z;'children' keyword cannot be used with positional argumentsr   )r   
ValueErrorlistrC   rD   rE   s      rJ   rD   zFlexBox.__init__  sm    t99q==Z611Z[[[YY]]!%dF:""6"""""rL   c                j    ddl m} t           || j                            st	          |           S d S )Nr   )chain)	itertoolsr   r   r   rd   )rF   r   s     rJ   _check_empty_layoutzFlexBox._check_empty_layout  sF    ######EE$-(()) 	t99	 	rL   c                    g }| j         D ]9}|j        0||j        j        v r"|                    t	          |                     :|rd                    |          S d S )Nz, )r   documentrootsappendrd   join)rF   problemscs      rJ   _check_child_is_also_rootz!FlexBox._check_child_is_also_root  sg     	( 	(Az%!qz/?*?*?A''' 	99X&&&4rL   c                    t          | j                  t          t          | j                            k    rt          |           S d S rA   )r   r   r   rd   re   s    rJ   r   z'FlexBox._check_repeated_layout_children  s=    t}S%7%7!8!888t99 98rL   zj
    The list of children, which can be other components including plots, rows, columns, and widgets.
    rM   r   r   rS   ry   )r{   r|   r}   r~   rD   r$   r)   r   r(   r   r#   r'   r   r   r   r0   r   r   r   r   r   s   @rJ   r2   r2     s         # # # # # # W\  
 W !!  "! U !!  "! tHHY'' / 	 	 	H c! # 	 	 	GGGGGrL   r2   c                  ,     e Zd ZdZd fdZddZ xZS )	r7   z Lay out child components in a single horizontal row.

    Children can be specified as positional arguments, as a single argument
    that is a sequence, or using the ``children`` keyword argument.
    r>   r?   c                :     t                      j        |i | d S rA   rB   rE   s      rJ   rD   zRow.__init__  rK   rL   rO   c                ~    t          d | j        D                       rd S t          d | j        D                       S )Nc              3  B   K   | ]}|                                 d u V  d S rA   rx   r   xs     rJ   	<genexpr>z*Row._sphinx_height_hint.<locals>.<genexpr>  3      FF1q$$&&$.FFFFFFrL   c              3  >   K   | ]}|                                 V  d S rA   r   r   s     rJ   r   z*Row._sphinx_height_hint.<locals>.<genexpr>  .      BBq1((**BBBBBBrL   )anyr   maxre   s    rJ   rx   zRow._sphinx_height_hint  G    FFFFFFF 	4BBDMBBBBBBrL   ry   rz   r{   r|   r}   r~   rD   rx   r   r   s   @rJ   r7   r7      c         * * * * * *C C C C C C C CrL   r7   c                  ,     e Zd ZdZd fdZddZ xZS )	r1   z Lay out child components in a single vertical row.

    Children can be specified as positional arguments, as a single argument
    that is a sequence, or using the ``children`` keyword argument.
    r>   r?   c                :     t                      j        |i | d S rA   rB   rE   s      rJ   rD   zColumn.__init__  rK   rL   rO   c                ~    t          d | j        D                       rd S t          d | j        D                       S )Nc              3  B   K   | ]}|                                 d u V  d S rA   r   r   s     rJ   r   z-Column._sphinx_height_hint.<locals>.<genexpr>  r   rL   c              3  >   K   | ]}|                                 V  d S rA   r   r   s     rJ   r   z-Column._sphinx_height_hint.<locals>.<genexpr>  r   rL   )r   r   sumre   s    rJ   rx   zColumn._sphinx_height_hint  r   rL   ry   rz   r   r   s   @rJ   r1   r1     r   rL   r1   c                       e Zd ZdZd fdZ edd          Z eed	          Z	 e
d
d	          Z e
d
d	          Z xZS )r:   z= A single-widget container with title bar and controls.

    r>   r?   c                :     t                      j        |i | d S rA   rB   rE   s      rJ   rD   zTabPanel.__init__&  rK   rL    z&
    The text title of the panel.
    rS   z^
    The child widget. If you need more children, use a layout widget, e.g. a ``Column``.
    rM   Fz
    Whether this panel is closable or not. If True, an "x" button will appear.

    Closing a panel is equivalent to removing it from its parent container (e.g. tabs).
    z8
    Whether the widget is responsive to UI events.
    ry   )r{   r|   r}   r~   rD   r   titler   r0   r   r   closabler   r   r   s   @rJ   r:   r:      s         
* * * * * * F2 % 	 	 	E HY & 	 	 	E tE ! 	 	 	H tE ! 	 	 	HHHHHrL   r:   c            
           e Zd ZdZd fdZdZ e ee          d          	                     e e
e ee                              d           Z eed	d
          Z edd          Z xZS )r;   z+ A panel widget with navigation tabs.

    r>   r?   c                :     t                      j        |i | d S rA   rB   rE   s      rJ   rD   zTabs.__init__A  rK   rL   z)examples/interaction/widgets/tab_panes.pyz*
    The list of child panel widgets.
    rM   c                    d | D             S )Nc                6    g | ]\  }}t          ||           S ))r   r   )r:   )r   r   r   s      rJ   r   z!Tabs.<lambda>.<locals>.<listcomp>I  s*    aaaPUU!C!C!CaaarL   r   )r   s    rJ   r   zTabs.<lambda>I  s    aaZ_aaa rL   abovez9
    The location of the buttons that activate tabs.
    rS   r   z&
    The index of the active tab.
    ry   )r{   r|   r}   r~   rD   __example__r   r   r:   r   r   r   r0   tabsr   r   tabs_locationr   activer   r   s   @rJ   r;   r;   ;  s         
* * * * * * >K4"" * 	 	 		eeFHHY$7$78899aa
c 
c 	
 D7 : 	 	 	M S  	 	 	FFFFFrL   r;   c                  r     e Zd ZdZd
 fdZ eed          Z ee	d          Z
 edd	          Z xZS )r4   z0 A panel that allows to group UI elements.

    r>   r?   c                :     t                      j        |i | d S rA   rB   rE   s      rJ   rD   zGroupBox.__init__Y  rK   rL   zV
    The title text of the group. If not provided, only the frame will be showed.
    rM   
    The child UI element. This can be a single UI control, widget, etc., or
    a container layout like ``Column`` or ``Row``, or a combitation of layouts.
    Fz
    Whether to allow disabling this group (all its children) via a checkbox
    in the UI. This allows to broadcast ``disabled`` state across multiple
    UI controls that support that state.
    ry   )r{   r|   r}   r~   rD   r   r   r   r   r0   r   r   	checkabler   r   s   @rJ   r4   r4   S  s         
* * * * * * HV # 	 	 	E HY & 	 	 	E
 U " 	 	 	IIIIIrL   r4   c                  v     e Zd ZdZd fdZ eed          Z ee	dd	          Z
 ee	dd
	          Z xZS )r8   z= A panel that allows to scroll overflowing UI elements.

    r>   r?   c                :     t                      j        |i | d S rA   rB   rE   s      rJ   rD   zScrollBox.__init__q  rK   rL   r   rM   rR   z5
    The visibility of the horizontal scrollbar.
    rS   z3
    The visibility of the vertical scrollbar.
    ry   )r{   r|   r}   r~   rD   r   r0   r   r   r   horizontal_scrollbarvertical_scrollbarr   r   s   @rJ   r8   r8   k  s         
* * * * * * HY & 	 	 	E
  4 G 	 	 	 ov E 	 	 	rL   r8   )Lr~   
__future__r   logging	getLoggerr{   logcolorsr   r   r   
core.enumsr   r	   r
   r   r   r   r   core.has_propsr   r   core.propertiesr   r   r   r   r   r   r   r   r   r   r   r   r   r   core.property.structr   core.property_aliasesr    r!   r"   core.validationr#   r$   core.validation.errorsr%   r&   r'   core.validation.warningsr(   r)   r*   r+   r,   modelr-   ui.menusr/   ui.ui_elementr0   __all__r6   r9   r   r3   r5   r<   r2   r7   r1   r:   r;   r4   r8   r   rL   rJ   <module>r     s    # " " " " " g!! + * * * * * * * * *                  0 / / / / / / /                                 , + + + + + E E E E E E E E E E , , , , , , , , m m m m m m m m m m                          $ $ $ $ $ $& 
v v v v v	 v v 
vp* * * * *Y * * * 
/	 /	 /	 /	 /	 /	 /	 
/	b    i   &    9   2    9   2 
*	 *	 *	 *	 *	i *	 *	 
*	ZC C C C C' C C C C C C C CW C C C 	 	 	 	 	u 	 	 	6	 	 	 	 	9 	 	 	0	 	 	 	 	y 	 	 	0	 	 	 	 		 	 	 	 	 	rL   