a
    Df)                     @  s   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 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)
normalizedZ	maximizedZ	minimizedZ
smallifiedZsmallifiedmaxclosedc                      s  e Zd ZU dZeji ddZejdddZej	de
dd	Zejd
dddZejd
dddZejdddZej	ded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d9d: Z ed;d< Z!ed=d> Z"d?d@ fdAdB
Z#dE fdCdD	Z$  Z%S )F
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   Zboundsr   z"
       Vertical offset in pixels.Z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.Z
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>
    Z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')
        }
        state.resizeHandler = (event) => {
          if (event.panel === state.panel) {
            view.invalidate_layout()
          }
        }
        document.addEventListener('jspanelresizestop', state.resizeHandler, false)
        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)z
        document.removeEventListener('jspanelresizestop', state.resizeHandler, false);
        view.run_script('close');
        state.panel = undefined;
        zview.run_script('reposition')z6if (!data.contained) { view.run_script('reposition') })rendernamestatuscloseget_positionZ
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                 C  s
   d| j iS )Nr!   )__javascript__cls r)   _/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/panel/layout/float.py__js_skip__   s    zFloatPanel.__js_skip__c                 C  s   t | S )Nr   r'   r)   r)   r*   r&      s    zFloatPanel.__javascript__c                 C  s
   t | dS )Ncssr,   r'   r)   r)   r*   __css__   s    zFloatPanel.__css__ )r   c                  s    t  jf t||d| d S )N)r   r   )super__init__list)selfr   r   params	__class__r)   r*   r1      s    zFloatPanel.__init__c                   s(   t  |}| D ]}|||7 }q|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)
        )r0   select)r3   selectorr   objr5   r)   r*   r7      s    zFloatPanel.select)N)&__name__
__module____qualname____doc__paramDictr   Booleanr   ZSelector	POSITIONSr   ZIntegerr   r   Stringr   STATUSr   Z_extension_name	_templateZ_renameZ_scripts	pn_configZnpm_cdnZ__css_raw__Z__javascript_raw__Z__js_require__r   r%   __annotations__r
   r+   r&   r.   r1   r7   __classcell__r)   r)   r5   r*   r   "   st   
"
J

















r   )
__future__r   typingr   r   r>   r   rE   Zio.resourcesr   r   Zreactiver	   utilr
   baser   rA   rC   r   r)   r)   r)   r*   <module>   s   	