
    Beiq                    F   d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZmZmZmZmZ ddlZdd
lmZmZm Z m!Z!m"Z"m#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/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m5Z5m6Z7 ddl8m9Z9m:Z: ddl;m<Z< ddl=m=Z= erddl(m>Z>  G d de          Z? ej@        eA          ZBed         ZC eD eeE          jF        jF        dz            5 ZG ejH        eG          ZIeId         J                    d          d         ZKddd           n# 1 swxY w Y   d ZLd  ZM eL            ZNd!eN_O        d!eN_P        d" eNjQ        d#<   eMeNjQ        d$<   eReNjQ        d%<   d&aS eeE          jF        jF        ZTeTd'z  ZUeUd(z  ZVeTd)z  ZWeNX                    d*          ZYeNX                    d+          ZZeNX                    d,          Z[eNX                    d-          Z\eNX                    d.          Z]d/Z^eNX                    d0          Z_d1Z`e` eK d2Zaea d3Zbd4Zcd5Zdd6Ze e	jf        d7          Zgd8d9g d:d;d<d=g d>d?d@d=g d>d?dAd=g d>d?dBZheb dCeb dDeb dEdFZieb dGeb dHeb dIdJZj ekeU          e#dK<    ejl        dLdM           edN             ZmdrdQZndsdtdVZodrdWZpdX Zq edY          dZ             Zr	 dudvd`Zsda Ztdb ZudwdxdfZvdg Zwdh ZxdydjZydzdkZz G dl dm          Z{ G dn doe*          Z) G dp dqe          ZdS ){zk
Patches bokeh resources to make it easy to add external JS and CSS
resources via the panel.config object.
    )annotationsN)	b64encode)OrderedDict)contextmanager)	lru_cache)Path)TYPE_CHECKINGDictListLiteral	TypedDict)CSS_RESOURCESBundle_bundle_extensions_use_mathjaxbundle_modelsextension_dirs)Model)ImportedStyleSheet)	Resources_get_server_urls)settings)Environment)FileSystemLoader)Markup   )configpanel_extension)isurlurl_path   )LOADING_INDICATOR_CSS_CLASS)state)Urlsc                  8    e Zd ZU ded<   ded<   ded<   ded<   dS )ResourcesTypezDict[str, str]cssjs
js_modulesz	List[str]raw_cssN)__name__
__module____qualname____annotations__     2lib/python3.11/site-packages/panel/io/resources.pyr&   r&   /   sB         """"r0   r&   )__css____javascript__zpackage.jsonversion+c                     t           j                            t           j                            t           j                            t
                    dd                    } t          t          |                     S )zB Get the correct Jinja2 Environment, also for frozen scripts.
    z..
_templates)loader)ospathabspathjoindirname__file__r   r   )
local_paths    r1   get_envr@   =   sQ     bgooh.G.G|!\!\]]J.z::;;;;r0   c                l    t          j        t          |                                         dd          S )N"')jsondumpsr   replace)values    r1   
conffilterrH   C   s*    :k%(())11#t<<<r0   Tc                D    t          t          j        |                     S N)r   rD   rE   )objs    r1   <lambda>rL   I   s    6$*S//#:#: r0   rD   rH   sortedserverdistbundledassetszconvert_index.htmlz	base.htmlz
error.htmlzlogout.htmlzbasic_login.htmlzPanel Applicationzjs_resources.htmlzhttps://cdn.holoviz.org/panel//zdist/z"https://panel.holoviz.org/_static/zstatic/extensions/panel/zcomponents/z\.bk\.zLhttps://use.fontawesome.com/releases/v5.15.4/fontawesome-free-5.15.4-web.zipzfontawesome-free-5.15.4-web/)z*.svgz*.scssz*.less)zipsrcexcludez:https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgzzpackage/dist )tarrT   rU   destzAhttps://registry.npmjs.org/bootstrap/-/bootstrap-5.3.0-alpha1.tgzz4https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz)font-awesome
bootstrap4
bootstrap5jQueryz$bundled/font-awesome/css/all.min.cssz(bundled/bootstrap4/css/bootstrap.min.cssz(bundled/bootstrap5/css/bootstrap.min.css)rY   rZ   r[   z!bundled/jquery/jquery.slim.min.jsz-bundled/bootstrap4/js/bootstrap.bundle.min.jsz-bundled/bootstrap5/js/bootstrap.bundle.min.js)r\   rZ   r[   panelzapplication/javascriptz.jsc              #     K   t           j        j        }t          }| xt           _        a	 d V  |at           j                            |           d S # |at           j                            |           w xY wrJ   )	_settings	resources_user_valueRESOURCE_MODE	set_value)modeold_resourcesold_modes      r1   set_resource_moderg      sz       '3MH*..I-5 %%m44444 !%%m4444s   A #A4returnboolc                 4    t          j        d          dk    S )NrN   )default)r_   r`   r/   r0   r1   use_cdnrl      s    x000H<<r0   autocdnbool | Literal['auto']strc                    | dk    rt                      n| } | rt          }n+t          j        rt          j         dt           }nt           }|S )Nrm   rR   )rl   CDN_DISTr#   rel_path
LOCAL_DIST)rn   	dist_paths     r1   get_dist_pathrv      sT    f}}')))#C
 $			 $~44
44		!O	r0   c                T    t          |           o|                     t                    S rJ   )r   
startswithrr   )urls    r1   
is_cdn_urlrz      s    ::2#..222r0   c                    d | D             S )zN
    Converts old-style Bokeh<3 compatible CSS to Bokeh 3 compatible CSS.
    c                D    g | ]}t                               d |          S ).)BK_PREFIX_REsub.0r'   s     r1   
<listcomp>z#process_raw_css.<locals>.<listcomp>   s(    :::3LS#&&:::r0   r/   )r*   s    r1   process_raw_cssr      s     ;:'::::r0   )maxsizec                   t          t          |  dz  d          5 }|                                                    dd                              |          }d d d            n# 1 swxY w Y   t          |                    d                                        d          }t          j	        dt           d|  d	|  d
| d| d          S )Nz_spinner.svgutf-8encoding
rV   )colorz
    :host(.z.pn-z):before, .pn-loading.pn-zA:before {
      background-image: url("data:image/svg+xml;base64,z.");
      background-size: auto calc(min(50%, zpx));
    })open
ASSETS_DIRreadrF   formatr   encodedecodetextwrapdedentr"   )loading_spinnerr   
max_heightfsvgb64s         r1   loading_cssr      s,   	jo;;;;g	N	N	N =RSffhhtR((//e/<<= = = = = = = = = = = = = = =
CJJw''
(
(
/
/
8
8C? 
'
 
-<
 
Wf
 
8;
 
 ,6
 
 
   s   =A&&A*-A*Fr:   str | os.PathLikerelativepathlib.Path | Nonec                *   |sdS t          | t                    st          |           } 	 t          j        | j                  }t          |j                  j        }|                                sJ n# t          $ r Y dS w xY wt          j        |          }|                                r|}n||z  }	 |                                sdS n# t          $ r Y dS w xY w|                                }|s|S t          j                            ||          S )al  
    Attempts to resolve a path relative to some component.

    Arguments
    ---------
    obj: type | object
       The component to resolve the path relative to.
    path: str | os.PathLike
        Absolute or relative path to a resource.
    relative: bool
        Whether to return a relative path.

    Returns
    -------
    path: pathlib.Path | None
    N)
isinstancetype	importlibimport_moduler,   r   r>   parentexists	Exceptionpathlibis_absoluteis_fileOSErrorresolver9   r:   relpath)rK   r:   r   modmodule_pathabs_paths         r1   resolve_custom_pathr      sA   &  c4   3ii%cn553<((/!!######   tt<D &%!! 	4	   tt!!H 7??8[111s$   AA3 3
B B5C 
CCc                H   t          | t                    st          |           } t          }t          j        rt          j         d| }t          t          | |d                                        t          j	        j
        d          }| | j         d| j         d| d| S )z
    Generates a canonical URL for a component resource.

    To be used in conjunction with the `panel.io.server.ComponentResourceHandler`
    which allows dynamically resolving resources defined on components.
    rR   T)r   )r   r   COMPONENT_PATHr#   rs   rp   r   rF   r9   r:   sepr,   r+   )	componentattrr:   component_pathrs   s        r1   component_resource_pathr      s     i&& $OO	#N~ >!N==^==&y$FFFGGOOPRPWP[]`aaH[i2[[Y5G[[$[[QY[[[r0   c                   | j         }|                    t          |z             r5|t          k    r*|                    t          |z   |          dt           z   }nN|                    t                    r2|t          k    r'|                    t          |          dt           z   }nd S 	 || _         d S # t
          $ r Y d S w xY w)Nz?v=)ry   rx   rr   rF   
JS_VERSIONr   )
stylesheetdist_urlry   patched_urls       r1   patch_stylesheetr      s    
.C
~~hx'(( X-A-Akk(8"3X>>ASzASASS		!	! h(&:&:kk(H558Jj8J8JJ$
   s   )B2 2
C ?C r   	attribute
str | Nonec                   t          |          }|                    d          se|rct          | |          x}rQt          j        s/t          j        r#t          j        j        rt          | ||          }n|                    d          }|S )a  
    Resolves a stylesheet definition, e.g. originating on a component
    Reactive._stylesheets or a Design.modifiers attribute. Stylesheets
    may be defined as one of the following:

    - Absolute URL defined with http(s) protocol
    - A path relative to the component

    Arguments
    ---------
    cls: type | object
        Object or class defining the stylesheet
    stylesheet: str
        The stylesheet definition
    httpr   r   )	rp   rx   r   r#   _is_pyodidecurdocsession_contextr   	read_text)clsr   r   custom_paths       r1   resolve_stylesheetr     s      ZJ  (( AY AJ]^acmJnJn<nK A  	AU\ 	Ael6R 	A0iLLJJ$...@@Jr0   c                P   | j         }|r9|j        j        }t          |j        j                  }|                                 |                     dt          i          D ]}t          ||           |r2||j        _        |r||j        _	        dS |
                                 dS dS )z
    Temporary patch for Model.css property used by Panel to provide
    stylesheets for components.

    ALERT: Should find better solution before official Bokeh 3.x compatible release
    r   N)document	callbacks
hold_valuelist_held_eventsholdselectr   r   _holdunhold)rootr   docheldeventsr   s         r1   patch_model_cssr     s     -C
 }'cm011


kk6+=">?? / /
X....
 %+" 	"&CMJJLLLLL r0   c                >    t           dk    rd|  dS t           d|  dS )NrN   zstatic/extensions/panel/css/z.csszcss/)rb   rr   )names    r1   
global_cssr   0  s5      8d8888******r0   
javascriptc                   | j                                         }t          |z  }t          |dk    rt          nt
                                                    }g }t          | d| dg           D ]}|                    t                    r|
                    t           dd          }nW|                    t          j                  r)|
                    t          j        d          dd          }nt          |          }|                    d          d         }||v r|}	t          |z  }
nE|
                    d	d                              | d	          s| d	| }	||z  }
n|}	t          |z  }
|
                                rct           d
k    r|                    d|	            =||k    r!|                    t           d|	            d|                    |           {|                    |           |S )Nr   ___raw__bundled/rV   r!   ?r   rR   rN   z static/extensions/panel/bundled/)r+   lower
BUNDLE_DIRr   JS_URLSCSS_URLSvaluesgetattrrx   rr   rF   r   npm_cdnr    splitr   rb   append)model	file_typer   bdirsharedfilesry   filepathtest_filepathprefixed	test_paths              r1   bundled_filesr   6  s	   >!!DDi<7777XMMOOPPFEu49444b99  >>(## 	%{{h#8#8#8"==HH^^FN++ 	%{{6>266qrr:HH}}H s++A.&==H"]2II&&sB//::d:::FF 	30000H},II$H"]2I 	((JJJKKKK]**<<(<<====S!!!!LLLr0   c           
        ddl m} t          |t                    st                              ||          }|x}}||j        ndxa}g }	g }
g }g }t          |t                    r|}n| rt          |           pd|j	        v }nd}|r|
                                }|s#d|j        v r|j                            d           |r|j                                         |	                    |j                   |
                    |j                   |                    |j                   |                    |j                   t'          d |          }|rd |D             }g }|dk    r |
                    d	 |D                        n|d
k    ri|D ]e}|j        }|j        r@|j        s9|                    |j        dd          }t0          j        rt0          j         d| }|	                    |           fn|dk    rZ|D ]V}|j        |                    |j                   $|
                    t                              |j                             Wn|                    d |D                        |	|                    |          z  }	t?          d           }||
                    |           |r|j         ni }tC          ||||	|
|j"        |j#        |          S )Nr   )r   )notebookinlinemathjaxFzbokeh-mathjaxc                T    g | ]%}|j         |j                             d          #|&S )Nz!https://unpkg.com/@holoviz/panel@)cdn_urlrx   )r   exts     r1   r   z$bundle_resources.<locals>.<listcomp>z  sH     
 
 
ck.E#+J`J`  bE  KF  KF.EC.E.E.Er0   c                L    g | ]!}t                               |j                  "S r/   )r   _inlineartifact_pathr   bundles     r1   r   z$bundle_resources.<locals>.<listcomp>  s)    ZZZF	))&*>??ZZZr0   rN   rV   r!   rR   rn   c                    g | ]	}|j         
S r/   )r   r   s     r1   r   z$bundle_resources.<locals>.<listcomp>  s    III6&.IIIr0   )	css_filescss_rawhashesjs_filesjs_rawjs_module_exportsr)   r   )$r   r   r   r   
from_bokehrd   rb   ri   r   _loaded_extensionsclone
componentsremoveclearextendr  r  r   r   r   
server_urlroot_urlabsoluterF   r#   rs   r   r   r   r   adjust_pathsr   r   r   r  r)   )rootsr`   r   	reloadingenable_mathjaxr   js_resourcescss_resourcesrd   r  r  r   r   use_mathjax
extensionsextra_jsr   r  r   s                      r1   bundle_resourcesr  W  ss   //////i++ G((X(FF	#,,L=090E<,,8SMDHFIG.$'' $	 "5))PY#:P-P +#))++ 	<,2III#**?;;; 	,#))+++-...l)***],---NN=()))#D,77J 

 
%
 
 

 HxZZjZZZ[[[[			  	( 	(F*J! B)*< B'//	0BBJJ
> B$)N!A!AZ!A!AJOOJ''''	( 
  	G 	GF~)////i//0DEEFFFF		G 	IIZIIIJJJ	&&x000H


C
c$08\  bF#5'	 	 	 	r0   c                  F    e Zd ZdZi i i i g dZeddd	            ZdddZdS )ResourceComponentzb
    Mix-in class for components that define a set of resources
    that have to be resolved.
    )r'   fontr(   r)   r*   Fresource_typerp   resourcern   ri   c                   t          |          }|                    t                    r|                    t           dd          }no|                    t          j                  r)|                    t          j        d          dd          }n'|                    d          rt          |          }n|}|dk    rt          j        s|sd| }n|}t          |                    dt          j        j                  z  }	 |                                }n# t          $ r d	}Y nw xY w|r| d| S t          |          r|S t!          | |          rt#          | d
| |          S d S )Nrn   r   rV   r!   zhttp:r)   z./rR   Fz_resources/)rv   rx   rr   rF   r   r   r    r#   rs   r   r9   r:   r   r   r   r   r   r   )	r   r  r  rn   ru   resource_pathprefixed_dist
bundlepathr   s	            r1   _resolve_resourcez#ResourceComponent._resolve_resource  s   !c***	x(( 	%$,,-B-B-BBGGMM  00 	%$,,V^R@@DMM  )) 	%$X..MM$ML((%.(C(,,,MM%M-"7"7RW["I"II
	 ((**GG 	 	 	GGG	 	#<<]<<<8__ 	O h// 	*2=22H  	 	s   D D'&D'rm   ro   rh   r&   c                   t          |           i }| j                                        D ]c\  }}t          |t                    s|dk    rd}fd|                                D             }||v rt	          ||         fi |||<   ^|||<   d|dk    rt                      n|}i i i g d}|D ]T}||vs|dk    r||         }||                                         D ]$\  }}	|                     ||	|          }
|
r|
||<   %U|S )a  
        Resolves the resources required for this component.

        Arguments
        ---------
        cdn: bool | Literal['auto']
            Whether to load resources from CDN or local server. If set
            to 'auto' value will be automatically determine based on
            global settings.

        Returns
        -------
        Dictionary containing JS and CSS resources.
        r  r'   c                v    i | ]5\  }}|t          |          r|nj                                         d | 6S )rR   )r   r+   r   )r   r   ry   r   s      r1   
<dictcomp>z7ResourceComponent.resolve_resources.<locals>.<dictcomp>  sZ       D# U3ZZLcc0B0B0D0D-L-Ls-L-L  r0   rm   )r(   r)   r'   r*   r*   r  )r   
_resourcesitemsr   dictrl   r"  )selfrn   r`   rtresresource_typesr  resource_filesrnamer  resolved_resourcer   s              @r1   resolve_resourcesz#ResourceComponent.resolve_resources  s    4jj	,,.. 	$ 	$GBc4(( V||   !$  C Y $Yr] : :c : :	" #	"&==giiic	)
 )
 , 		> 		>MI--)1K1K+M:N#,]#;#A#A#C#C > >x$($:$:!8 %; % %! % >,=N5)> r0   NF)r  rp   r  rp   rn   ri   rm   )rn   ro   rh   r&   )r+   r,   r-   __doc__r&  classmethodr"  r0  r/   r0   r1   r  r    sy           J     [>1 1 1 1 1 1 1r0   r  c                  (    e Zd Zddd fd
Zedd            Zdd	ZddZd Zd Z	ddddZ
ed             Ze fd            Ze fd            Ze fd            Zed             Zed             Ze fd            Zed             Z xZS )r   F)r  r   c               V    || _         || _         t                      j        |i | d S rJ   )r  r   super__init__)r)  r  r   argskwargs	__class__s        r1   r8  zResources.__init__  s3      $)&)))))r0   c                    i }|j                             d          r
|j        |d<   t          |d          r|j        n|j        } | d|j         |j        |j        |j        ||j	        ||j
        |j        |d
|S )NrN   r  components_for)
rd   r4   minified	log_levelr   path_versionerr  base_dirroot_dirr  r/   )rd   rx   r  hasattrr  _componentsr4   r>  r?  r@  rA  rB  )r   bkrr  r   r:  r  s         r1   r  zResources.from_bokeh  s    8x(( 	.!$F:'.s4D'E'EZS^^3?
s 
3;mh-!CL\H
 

 9?
 
 	
r0   resource_attrResourceAttrrh   	list[str]c                   g }t           j        )d t          j                                        D             }nd}t          t          j                                        d           D ]\  }}|#|j        |v r||j                 t           j        vr*t          ||d          }t          |t                    r||vr|                    |           jt          |t                    r|D ]}||vr|                    |           |S )zI Collect external resources set on resource_attr attribute of all models.Nc                    i | ]\  }}||	S r/   r/   )r   r   modules      r1   r%  z9Resources._collect_external_resources.<locals>.<dictcomp>!  s+           +V     r0   c                    | d         S )Nr   r/   )args    r1   rL   z7Resources._collect_external_resources.<locals>.<lambda>'  s    TWXYTZ r0   )key)r#   _extensions	extension_importsr'  rM   r   model_class_reverse_mapr,   r   r   rp   r   r   )r)  rF  external_resourcesexternal_modules_r   externales           r1   _collect_external_resourcesz%Resources._collect_external_resources  s5   (*(   /8/A/G/G/I/I       $U:@@BBHZHZ[[[ 	5 	5FAs+BR0R0R#CN35;LLL/6sM4/P/PH(C(( 5#555&--h777Hd++ 5! 5 5A 222*11!444!!r0   r$   c                f    t          | j        r| j        nd| j        rdn| j        | j                  S )NrV   F)r   r  r  devr>  r@  r)  s    r1   _server_urlszResources._server_urls7  s:    !]2DMMX0EE4=
 
 	
r0   c                t   ddl m} t          j        |                                          D ]}t          ||d          r|                                s(t          ||g           D ]P}t          |          s&|                    d          st          |||          }||vr|
                    |           QdS )z=
        Adds resources for ReactiveHTML components.
        r   ReactiveHTMLNstatic/extensions)reactiver_  paramconcrete_descendentsr   r   _loadedr   rx   r   r   )r)  r`   r  r_  r   r  s         r1   extra_resourceszResources.extra_resources>  s     	,+++++/==DDFF 	/ 	/EE=$77 EMMOO #E="== / /X Wx/B/BCV/W/W W6umXVVH9,,$$X...	/	/ 	/r0   c                   g }t           j         dt           d}|D ]B}|                    dt           j                  }|                    |          r|                    |t
                    }| j        dk    r |                    t
          t                    }|                    t          j	                  s|                    d          r{|                    t          j	                  r!|t          t          j	                  d         }t          j        rt          j         d| }n| j        r| j        dk    r| j         | }|                    |           D|S )zE
        Computes relative and absolute paths for resources.
        z/@holoviz/panel@z/dist/zhttps://unpkg.comrN   zstatic/NrR   )r   r   r   rF   rx   rr   rd   rt   r#   base_urllenrs   r  r  r   )r)  r`   new_resourcescdn_baser  s        r1   r  zResources.adjust_pathsL  s[    nHHjHHH! 	+ 	+H''(;V^LLH""8,, @#++Hh??yH$$#++HjAA##EN33 <x7J7J97U7U <&&u~66 >'EN(;(;(<(<=H> <"'.==8==HH] <tyH'<'<"&-;;;H  ****r0   N)r  c                   t          | j        | j        | j        | j        | j        | j        | j        | j        ||nt          | j
                  | j        | j        | j                  S )z[
        Make a clone of a resources instance allowing to override its components.
        N)rd   r4   rB  rZ  r>  r?  r  r@  r  rA  r   r  )r   rd   r4   rB  rZ  r>  r?  	_root_urlr@  r   r  rA  r   r  )r)  r  s     r1   r  zResources.cloneb  si     L]]n^.%/%;zzdoAVAV]]]
 
 
 	
r0   c                    | j         r| j        dk    rd}nO| j        dk    r=t          j        rt          j         dt           }nt          }| j        r| j         | }nt          }|S )NrN   z'/panel-preview/static/extensions/panel/rR   )r   rd   r#   rs   rt   r  r  rr   )r)  dist_dirs     r1   rn  zResources.dist_diru  sy    = 
	 TY(22@HHY(""~ &#n;;z;;%} 8"m7X77Hr0   c                    ddl m } t          t                     j        }                     |d                                 fd|D                       }|j        rB|t          |j        j        	                    di           
                                          z  }|j        D ];}t          j                            |          s||v r&|                    |           <|S )Nr   r   r2   c                H    g | ]}j         d k    st          |          |S r   rd   rz   )r   r'   r)  s     r1   r   z'Resources.css_files.<locals>.<listcomp>  s7     '
 '
 '
DI$9$9C$9C$9$9$9r0   r  )r   r7  r   r   re  r  designr   r&  getr   r9   r:   isfiler   )r)  r   r   r   cssfr;  s   `    r1   r   zResources.css_files  s	   ######i&&0UI...%% '
 '
 '
 '
 '
 '
 '
  	 = 	Qfm6::62FFMMOOPPPI$ 	# 	#Dw~~d## tu}}T""""r0   c                   ddl m } t          t          |           j        }|                     d          }|                     |d           |d |D             z  }|j        D ]r}t          j        	                    |          s"t          t          |                              d          g          d         }||vr|                    |           s|j        rVt          dz  d	z                      d          }|                    |t#          |j        |j        |j                  g           |t          |j                  z   t          |j                  z   S )
Nr   rp  r2   c                    g | ]H}t          |          t          |                    t          d           z                      d          IS rV   r   r   rz   DIST_DIRrF   rr   r   r   s     r1   r   z%Resources.css_raw.<locals>.<listcomp>  sW     
 
 
JsOO
Hb111<<g<NN
 
 
r0   r   r   r   r'   zloading.css)r   r7  r   r   rX  re  r   r9   r:   rv  r   r   r   r   global_loading_spinnerr|  r
  r   r   loading_colorloading_max_heightr*   r   )r)  r   rawr   rw  css_txtloading_baser;  s          r1   r   zResources.css_raw  s~   ######It$$, 44Y??	Y	222 
 
 
 
 
 	
 $ 	$ 	$D7>>$'' %tDzz';';W';'M'M&NOOPQRGc!!

7### ( 	$u,}<GGQXGYYLJJk&(<f>W' '     _V^444vGX7Y7YYYr0   c                $    ddl m } t          t                     j                             d           d |j                                        D             z  |j        rT |j                                         j        pdd          d                                         }fd	|D             z   	                     fd
D                       } j
        }d t          |          D             }|r|                    |d                   }t          d |D                       r|                    |dz              |                    |           t          d |D                       r|                    |dz              |S )Nr   rp  r3   c                    g | ]}|S r/   r/   r   r(   s     r1   r   z&Resources.js_files.<locals>.<listcomp>  s    888"888r0   rm   Frn   include_themer(   c                    g | ]}|v|	S r/   r/   )r   r+  r   s     r1   r   z&Resources.js_files.<locals>.<listcomp>  s#    CCCc#U2B2Bc2B2B2Br0   c                H    g | ]}j         d k    st          |          |S rr  rs  )r   r(   r)  s     r1   r   z&Resources.js_files.<locals>.<listcomp>  s7     &
 &
 &
$)x"7"7z"~~"7B"7"7"7r0   c                     g | ]\  }}d |v 	|S )requirer/   )r   ijsfs      r1   r   z&Resources.js_files.<locals>.<listcomp>  s&    QQQvq#	S@P@P@P@P@Pr0   r   c              3     K   | ]}d |v V  	dS aceNr/   r   r  s     r1   	<genexpr>z%Resources.js_files.<locals>.<genexpr>  &      44C5C<444444r0   zpre_require.jsc              3     K   | ]}d |v V  	dS r  r/   r  s     r1   r  z%Resources.js_files.<locals>.<genexpr>  r  r0   zpost_require.js)r   r7  r   r  re  r   rt  r0  r   r  rn  	enumeratepopanyr   )	r)  r   	design_jsr  rn  require_index	requirejsr   r;  s	   `      @r1   r  zResources.js_files  s   ###### i&&/U$455588v55778888= 	D%99M+V5 :  FHH  CCCCYCCCCE $$ &
 &
 &
 &
&
 &
 &
  
 =QQ8)<)<QQQ 	> ]1%566I44844444 =+; ;<<<OOI&&&44844444 >+< <===r0   c                   ddl m } ddlm} t          |j                                                  |                     d           |j        rT |j                                        | j	        pdd          }fd|d	                                         D             z  t          j        |                                          D ]}t          |dd           r|                                s(|j        D ]P}t          |          s&|                    d
          st#          |d|          }|vr                    |           Q|                               S )Nr   rp  r^  __javascript_modules__rm   Fr  c                    g | ]}|v|	S r/   r/   )r   r+  moduless     r1   r   z(Resources.js_modules.<locals>.<listcomp>  s.       g%% %%%r0   r)   r`  )r   ra  r_  r   r)   r   re  rt  r0  r   rb  rc  r   rd  r  r   rx   r   r   r  )r)  r   r_  design_resourcesr   	js_moduler  s         @r1   r)   zResources.js_modules  s   ######++++++v(//1122W&>???= 	,v}@@M+V5  A         /=DDFF   G
 /==DDFF 	. 	.EE#;TBB u}} "9 . .	Y'' d	0D0DEX0Y0Y d 7?WYb c cIG++NN9---	.   )))r0   c           	         i }t           j                                        D ]L}t          |d          r:|                    t          t          |j        |j                                       M|S )N__javascript_module_exports__)	r   rR  r   rC  updater(  rS   r  r  )r)  r  r   s      r1   r  zResources.js_module_exports  sk    299;; 	m 	mEu=>> mtC(KUMi$j$jkklllr0   c                   t          t          |           j        }| j        dk    s|S |                     d          }|                     |d           |d |D             z  }ddlm} |d |j                                        D             z  }|j	        rK |j	                    
                    dd	          d
                                         }|d |D             z  }|S )Nr   r3   c                    g | ]H}t          |          t          |                    t          d           z                      d          IS rz  r{  r  s     r1   r   z$Resources.js_raw.<locals>.<listcomp>  sW     
 
 
*R..


8R000;;W;MM
 
 
r0   r   rp  c                    g | ]D}t           j                            |          !t          |                              d           ES )r   r   )r9   r:   rv  r   r   r  s     r1   r   z$Resources.js_raw.<locals>.<listcomp>  sS     
 
 
57w~~b!!
HH00
 
 
r0   TFr  r(   c                    g | ]H}t          |          t          |                    t          d           z                      d          IS rz  r{  r  s     r1   r   z$Resources.js_raw.<locals>.<listcomp>  sW       z"~~BJJx444???QQ  r0   )r7  r   r  rd   rX  re  r   r  r   rt  r0  )r)  raw_jsr  r   r  r;  s        r1   r  zResources.js_raw  s8   y$''.yH$$M 334DEEX'7888 
 

 
 
 	
 	$##### 
 
;A?;Q;Q;S;S
 
 
 	
 = 	%99 :  FHH    #   F r0   c                r    t                               | j        | j        | j        | j        | j                  S )N)r  r  r)   r   r  )JS_RESOURCESrenderr  r  r)   r   r  r[  s    r1   	render_jszResources.render_js  s7    "";t{"4 # 
 
 	
r0   )FF)rF  rG  rh   rH  )rh   r$   )rh   r   )r+   r,   r-   r8  r4  r  rX  r\  re  r  r  propertyrn  r   r   r  r)   r  r  r  __classcell__r;  s   @r1   r   r     s       ',u * * * * * * *
 
 
 
 [
" " " "6
 
 
 
/ / /  , #' 
 
 
 
 
 
&   X     X  Z Z Z Z XZ8     X< * * X*4   X     X> 
 
 X
 
 
 
 
r0   r   c                  F     e Zd Zd fd	Zedd            Zd	dZd Z xZS )
r   Fc                    |                     dg           | _        |                     di           | _        || _         t	                      j        di | d S )Nr)   r  r/   )r  r)   r  r   r7  r8  )r)  r   r:  r;  s      r1   r8  zBundle.__init__  sY     **\266!',?!D!D ""6"""""r0   c                V     | ||j         |j        |j        |j        |j                  S )N)r   r  r  r   r   r   )r  r  r   r   r   )r   	bk_bundler   s      r1   r  zBundle.from_bokeh%  s<    s'#)%#
 
 
 	
r0   rh   rp   c                B    t          j        | j        | j                  S )N)r   r   )BkCSS_RESOURCESr  r   r   r[  s    r1   _render_csszBundle._render_css0  s&    %nL
 
 
 	
r0   c                r    t                               | j        | j        | j        | j        | j                  S )N)r  r  r)   r  r   )r  r  r  r  r)   r  r   r[  s    r1   
_render_jszBundle._render_js6  s9    "";]"4; # 
 
 	
r0   r1  )rh   rp   )	r+   r,   r-   r8  r4  r  r  r  r  r  s   @r1   r   r     s        # # # # # # 
 
 
 [

 
 
 

 
 
 
 
 
 
r0   r   )rh   ri   r2  )rn   ro   rh   rp   r1  )r:   r   r   ri   rh   r   rJ   )r   rp   r   r   )r   )FFrm   )|r3  
__future__r   r   rD   logging	mimetypesr9   r   rer   base64r   collectionsr   
contextlibr   	functoolsr   r   typingr	   r
   r   r   r   rb  bokeh.embed.bundler   r  r   BkBundler   r   r   r   bokeh.modelr   bokeh.modelsr   bokeh.resourcesr   BkResourcesr   bokeh.settingsr   r_   jinja2.environmentr   jinja2.loadersr   
markupsafer   r   r   rP  utilr   r    loadingr"   r#   r$   r&   	getLoggerr+   loggerrG  r   r>   r   r   loadpackage_jsonr   r   r@   rH   _envtrim_blockslstrip_blocksfiltersrM   rb   	PANEL_DIRr|  r   r   get_templateINDEX_TEMPLATEBASE_TEMPLATEERROR_TEMPLATELOGOUT_TEMPLATEBASIC_LOGIN_TEMPLATEDEFAULT_TITLEr  CDN_ROOTCDN_URLrr   DOC_DISTrt   r   compiler~   RESOURCE_URLSr   r   rp   add_typerg   rl   rv   rz   r   r   r   r   r   r   r   r   r   r  r  r/   r0   r1   <module>r     su    # " " " " "           				  				        # # # # # # % % % % % %                                                + + + + + + F F F F F F F F 0 0 0 0 0 0 * * * * * * + + + + + +       9 9 9 9 9 9 9 9 " " " " " " " " 0 0 0 0 0 0       $$$$$$    	    
	8	$	$23	T$$x..

&
788 7A49Q<<Li(..s33A6J7 7 7 7 7 7 7 7 7 7 7 7 7 7 7< < <= = = wyy  ::V '\ X  DNN!(	v	!
!
""#788!!+..""<00##M22(();<< #  !455+
$z
$
$
$/'
rz(## ^-000  L	  S	  F	 % 6  EEEGGGGGG  <<<LLLLLL  #h--w  	 +U 3 3 3	5 	5 	5= = = =    3 3 3 3; ; ; 4   49*2 *2 *2 *2 *2X\ \ \      0  ,+ + +   BJ J J JZ_ _ _ _ _ _ _ _DT
 T
 T
 T
 T
 T
 T
 T
n 
  
  
  
  
X  
  
  
  
  
s    2D>>EE