
    Be                        d dl mZ d dlmZmZ d dlZ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 g dZg dZ G d dee          ZdS )    )annotations)ClassVarListN   )config)CDN_DISTbundled_files)ReactiveHTML)classproperty   )ListLike)	centerzleft-topz
center-top	right-topzright-centerzright-bottomzcenter-bottomzleft-bottomzleft-center)
normalized	maximized	minimized
smallifiedsmallifiedmaxclosedc                      e Zd ZU dZ ej        i d          Z ej        dd          Z ej	        de
d	          Z ej        d
dd          Z ej        d
dd          Z ej        dd          Z ej	        ded	          ZdZdZdd
iZdddddddddddd d!Zej         d"gZej         d#ej         d$ej         d%ej         d&ej         d'ej         d(ej         d)gZej         d*ej         d+ej         d,ej         d-ej         d.ej         d/ej         d0d1d2d3id2d4d3iid5Ze d6gZd7ed8<   ed9             Z ed:             Z!ed;             Z"d<d= fd>
Z#d@ fd?	Z$ xZ%S )A
FloatPanelz1
    Float provides a floating panel layout.
    zV
       Additional jsPanel configuration with precedence over
       parameter values.)docTzf
       Whether the component is contained within parent container
       or completely free floating.)defaultr   r   z?
       The initial position if the container is free-floating.)r   objectsr   N)r   Nz$
       Horizontal offset in pixels.)r   boundsr   z"
       Vertical offset in pixels.primarya6  
        The theme which can be one of:

        - Built-ins: 'default', 'primary', 'secondary', 'info',
          'success', 'warning', 'danger', 'light', 'dark' and 'none'
        - HEX, RGB and HSL color values like '#123456' Any
          standardized color name like 'forestgreen' and color names
          from the Material Design Color System like 'purple900'
        - Additionally a theme string may include one of the modifiers
          'filled', 'filledlight', 'filleddark' or 'fillcolor'
          separated from the theme color by a space like 'primaryr   z)
        The current status of the panel.
floatpanelz
    <div id="float" class="bk-root" style="padding:8px;padding-right:30px">
      {% for obj in objects %}
      <div id="flex-item">${obj}</div>
      {% endfor %}
    </div>
    loadinga*  
        if (state.panel) {
          view.run_script('close')
        }
        var config = {
          headerTitle: data.name,
          content: float,
          theme: data.theme,
          id: 'jsPanel'+data.id,
          position: view.run_script('get_position'),
          contentSize: `${model.width} ${model.height}`,
          onstatuschange: function() {
            data.status = this.status
          },
          onbeforeclose: function() {
           data.status = 'closed'
           return true
          },
        }
        if (data.contained) {
          config.container = view.container
        }
        config = {...config, ...data.config}
        state.panel = jsPanel.create(config);
        if (data.status !== 'normalized') {
           view.run_script('status')
        }
        z%state.panel.setHeaderTitle(data.name)a  
        var action = data.status.replace('ied', 'y').replace('d', '')
        if (action === 'close') {
          state.closed = true
        } else if (state.closed) {
          view.run_script('close')
          return
        }
        state.panel[action]()
        z$try { state.panel.close() } catch {}z
        return {
            at: data.position,
            my: data.position,
            offsetX: data.offsetx,
            offsetY: data.offsety,
        }
        z
        if (data.contained) {
          view.run_script('contained')
          return
        }
        state.panel.reposition(view.run_script('get_position'));
        z-delete state.panel; view.invalidate_render();z state.panel.setTheme(data.theme)z2view.run_script('close'); state.panel = undefined;zview.run_script('reposition')z6if (!data.contained) { view.run_script('reposition') })rendernamestatuscloseget_position
reposition	containedthemeremoveoffsetxoffsetypositionz!/jspanel4@4.12.0/dist/jspanel.cssz /jspanel4@4.12.0/dist/jspanel.jsz7/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.jsz;/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.jsz5/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.jsz9/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.jszC/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.jsz5/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.jsz/jspanel4@4.12.0/dist/jspanelz4/jspanel4@4.12.0/dist/extensions/modal/jspanel.modalz8/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltipz2/jspanel4@4.12.0/dist/extensions/hint/jspanel.hintz6/jspanel4@4.12.0/dist/extensions/layout/jspanel.layoutz@/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenuz2/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock)jspanelzjspanel-modalzjspanel-tooltipzjspanel-hintzjspanel-layoutzjspanel-contextmenuzjspanel-dockr+   jsPanelexports)pathsr-   shimzcss/floatpanel.csszClassVar[List[str]]_stylesheetsc                    d| j         iS )Nr,   )__javascript__clss    2lib/python3.11/site-packages/panel/layout/float.py__js_skip__zFloatPanel.__js_skip__   s     s)
 	
    c                     t          |           S Nr	   r3   s    r5   r2   zFloatPanel.__javascript__   s    S!!!r7   c                "    t          | d          S )Ncssr:   r3   s    r5   __css__zFloatPanel.__css__   s    S%(((r7    )r    c               Z     t                      j        dt          |          |d| d S )N)r   r     )super__init__list)selfr    r   params	__class__s       r5   rB   zFloatPanel.__init__   s3    DgTDDVDDDDDr7   c                    t                                          |          }| D ]}||                    |          z  }|S )a  
        Iterates over the Viewable and any potential children in the
        applying the Selector.

        Arguments
        ---------
        selector: type or callable or None
          The selector allows selecting a subset of Viewables by
          declaring a type or callable function to filter by.

        Returns
        -------
        viewables: list(Viewable)
        )rA   select)rD   selectorr   objrF   s       r5   rH   zFloatPanel.select   sF     ''..** 	, 	,Cszz(+++GGr7   r9   )&__name__
__module____qualname____doc__paramDictr   Booleanr%   Selector	POSITIONSr*   Integerr(   r)   Stringr&   STATUSr!   _extension_name	_template_rename_scripts	pn_confignpm_cdn__css_raw____javascript_raw____js_require__r   r0   __annotations__r   r6   r2   r=   rB   rH   __classcell__)rF   s   @r5   r   r   "   sr          UZ !   F d 1' ( ( (I u~k9 KB C C CH emD A' ( ( (G emD A% & & &G EL 
1E 
F 
F 
FE U^L& G, - - -F #OI $G8 8	 8 E3F22L{> >H@  'JJJKK >>>UUUYYYSSSWWWaaaSSS $+JJJ ) 1ggg"+"3mmm(0ddd!*!2jjj&/&7#y#y#y(0ddd
 
 y
 9
 N* ''')L     
 
 ]

 " " ]" ) ) ]) ') E E E E E E E         r7   r   )
__future__r   typingr   r   rO   r   r[   io.resourcesr   r	   reactiver
   utilr   baser   rS   rV   r   r@   r7   r5   <module>rh      s    " " " " " " ! ! ! ! ! ! ! !  ( ( ( ( ( ( 2 2 2 2 2 2 2 2 # # # # # #                  
 
 
	
 
 
x x x x x< x x x x xr7   