a
    bb                     @   s   d Z ddlZddlZddlmZ ddlmZ ddlmZmZ ddl	m
Z
 dd	lmZmZ G d
d de
ZG dd deZG dd deZdS )z
React template
    N   )depends)CSS_URLS)CardGridSpec   )BasicTemplate)	DarkThemeDefaultThemec                
       s@  e Zd ZdZejdg ddZejddddd	d
dZejdddddd
dZ	ej
edddZejddZejdddddddZejdddZejdddZejdddZeejd Zeejd  Zed!d"id#d$iZd%d&d'd(d)ed* ed+ d,d-Z fd.d/Z fd0d1Ze d2d3d4d5d6d7d8dd9d:d; Z!  Z"S )<ReactTemplatezL
    ReactTemplate is built on top of React Grid Layout web components.
    N)NZverticalZ
horizontalZboth)defaultobjects   
         r   )lgmdZsmZxsZxxsr   i  i  i   i  r   Tz=
        A list-like container which populates the main area.)Zclass_Zconstantdoc   ZInfinity)ZminWZmaxWZminHZmaxHz:A dictonary of minimum/maximum width/height in grid units.)r   r   Fz!Prevent collisions between items.zSave layout to local storage.i^  z<
        The width of the sidebar in pixels. Default is 350.)r   z	react.cssz
react.htmlmargin)   r   )r      )Zchildrenr   z3https://unpkg.com/react@16/umd/react.development.jsz;https://unpkg.com/react-dom@16/umd/react-dom.development.jsz6https://unpkg.com/babel-standalone@latest/babel.min.jszWhttps://cdnjs.cloudflare.com/ajax/libs/react-grid-layout/1.1.1/react-grid-layout.min.js)Zreactz	react-domZbabelz
react-gridZ
bootstrap4font-awesome)Z	bootstrapr   )Zjscssc                    s6   d|vrt ddd|d< t jf i | |   d S )Nmainr   override)Zncolsmode)r   super__init___update_render_vars)selfparams	__class__ <lib/python3.9/site-packages/panel/template/react/__init__.pyr    A   s    zReactTemplate.__init__c           
         s   t  | |j| jurd S g }t| jj D ]~\}\\}}}}}|d u rPd}|d u r\d}|d u rhd}|d u rx| jj}|||| || t|d d}	|		| j
 ||	 q0||d| jd< d S )Nr   r      )xywhi)r   r   layouts)r   _update_render_itemsobjr   	enumerater   itemsZnrowsstrupdate
dimensionsappend_render_variables)
r"   Zeventr.   r-   Zy0Zx0Zy1Zx1velemr$   r&   r'   r/   G   s    $ z"ReactTemplate._update_render_itemscolsbreakpoints
row_heightcompactr5   prevent_collisionsave_layout)Zwatchc                 C   sX   | j | jd< | j| jd< | j| jd< | j| jd< | j| jd< | j| jd< | j| jd< d S )Nr;   r:   Z	rowHeightr=   r5   ZpreventCollisionZ
saveLayout)r;   r7   r:   r<   r=   r5   r>   r?   )r"   r&   r&   r'   r!   V   s    z!ReactTemplate._update_render_vars)#__name__
__module____qualname____doc__paramZObjectSelectorr=   Dictr:   r;   ZClassSelectorr   r   ZIntegerr<   r5   ZBooleanr>   r?   Zsidebar_widthpathlibPath__file__parentZ_css	_templater   Z
_modifiersr   Z
_resourcesr    r/   r   r!   __classcell__r&   r&   r$   r'   r      sD   	r   c                   @   s(   e Zd Zejeejd dZ	e
ZdS )ReactDefaultThemezdefault.cssr   Nr@   rA   rB   rD   ZFilenamerF   rG   rH   rI   r   r   rJ   r&   r&   r&   r'   rL   a   s   rL   c                   @   s(   e Zd Zejeejd dZ	e
ZdS )ReactDarkThemezdark.cssr   NrM   r&   r&   r&   r'   rN   h   s   rN   )rC   rF   rD   r   Zio.resourcesr   Zlayoutr   r   baser   Zthemer	   r
   r   rL   rN   r&   r&   r&   r'   <module>   s   R