
    eor                    n   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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%<   ejS        d&             ZTd'aU eeE          jF        jF        ZVeVd(z  ZWeWd)z  ZXeVd*z  ZYeNZ                    d+          Z[eNZ                    d,          Z\eNZ                    d-          Z]eNZ                    d.          Z^eNZ                    d/          Z_d0Z`eNZ                    d1          Zad2Zbeb eK d3Zcec d4Zdd5Zed6Zfd7Zg e
jh        d8          Zid9d:g d;d<d=d>g d?d@dAd>g d?d@dBd>g d?d@dCZjed dDed dEed dFdGZked dHed dIed dJdKZl emeW          e#dL<    ejn        dMdN           edO             ZodsdRZpdtdudWZqdsdXZrdY Zs edZ          d[             Zt	 dvdwdaZudb Zvdc ZwdxdydgZxdh Zydi ZzdzdkZ{d{dlZ| G dm dn          Z} G do dpe*          Z) G dq dre          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&   0   sB         """"r0   r&   )__css____javascript__zpackage.jsonversion+c            	     L   t          j        t                    j        dz  dz  } t          j        t                    j        dz  dz  }t	          t          t          |                                           t          |                                          g                    S )zB Get the correct Jinja2 Environment, also for frozen scripts.
    z..
_templatestemplate)loader)pathlibr   __file__parentr   r   strresolve)internal_pathtemplate_paths     r1   get_envrA   >   s     L**1D8<GML**1D8:EM.M!!##$$c-*?*?*A*A&B&B0      r0   c                l    t          j        t          |                                         dd          S )N"')jsondumpsr   replace)values    r1   
conffilterrI   G   s*    :k%(())11#t<<<r0   Tc                D    t          t          j        |                     S N)r   rE   rF   )objs    r1   <lambda>rM   M   s    6$*S//#:#: r0   rE   rI   sortedc                 $    t          j        | i |S rK   )_envfrom_string)argskwargss     r1   parse_templaterT   Q   s    T,V,,,r0   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 )tarr[   r\   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)r`   ra   rb   z!bundled/jquery/jquery.slim.min.jsz-bundled/bootstrap4/js/bootstrap.bundle.min.jsz-bundled/bootstrap5/js/bootstrap.bundle.min.js)rc   ra   rb   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rK   )	_settings	resources_user_valueRESOURCE_MODE	set_value)modeold_resourcesold_modes      r1   set_resource_modern      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 )NrU   )default)rf   rg   r/   r0   r1   use_cdnrs      s    x000H<<r0   autocdnbool | Literal['auto']r=   c                    | dk    rt                      n| } | rt          }n+t          j        rt          j         dt           }nt           }|S )Nrt   rY   )rs   CDN_DISTr#   rel_path
LOCAL_DIST)ru   	dist_paths     r1   get_dist_pathr|      sT    f}}')))#C
 $			 $~44
44		!O	r0   c                T    t          |           o|                     t                    S rK   )r   
startswithrx   )urls    r1   
is_cdn_urlr      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
r]   )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readrG   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*Fpath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;   r<   exists	Exceptionr:   is_absoluteis_fileOSErrorr>   osr   relpath)rL   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.
    rY   T)r   )r   r   COMPONENT_PATHr#   ry   r=   r   rG   r   r   sepr,   r+   )	componentattrr   component_pathry   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=)r   r~   rx   rG   
JS_VERSIONr   )
stylesheetdist_urlr   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   )	r=   r~   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 )NrU   zstatic/extensions/panel/css/z.csszcss/)ri   rx   )names    r1   
global_cssr   8  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/r]   r!   ?r   rY   rU   z static/extensions/panel/bundled/)r+   lower
BUNDLE_DIRr   JS_URLSCSS_URLSvaluesgetattrr~   rx   rG   r   npm_cdnr    splitr   ri   append)model	file_typer   bdirsharedfilesr   filepathtest_filepathprefixed	test_paths              r1   bundled_filesr   >  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_urlr~   )r   exts     r1   r   z$bundle_resources.<locals>.<listcomp>  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   rU   r]   r!   rY   ru   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_bokehrk   ri   rp   r   _loaded_extensionsclone
componentsremoveclearextendr  r  r  r  r   
server_urlroot_urlabsoluterG   r#   ry   r   r   r   r   adjust_pathsr   r  r   r  r)   )rootsrg   r   	reloadingenable_mathjaxr   js_resourcescss_resourcesrk   r  r  r  r  use_mathjax
extensionsextra_jsr  r  r  s                      r1   bundle_resourcesr  _  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_typer=   resourceru   rp   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ru   r   r]   r!   zhttp:r)   z./rY   Fz_resources/)r|   r~   rx   rG   r   r   r    r#   ry   r   r   r   r   r   r   r   r   r   )	r   r   r!  ru   r{   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'rt   rv   ro   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 )rY   )r   r+   r   )r   r   r   r   s      r1   
<dictcomp>z7ResourceComponent.resolve_resources.<locals>.<dictcomp>  sZ       D# U3ZZLcc0B0B0D0D-L-Ls-L-L  r0   rt   )r(   r)   r'   r*   r*   r#  )r   
_resourcesitemsr   dictrs   r'  )selfru   rg   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   r=   r!  r=   ru   rp   rt   )ru   rv   ro   r&   )r+   r,   r-   __doc__r+  classmethodr'  r5  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 rK   )r  r   super__init__)r.  r  r   rR   rS   	__class__s        r1   r=  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 )NrU   r  components_for)
rk   r4   minified	log_levelr   path_versionerr  base_dirroot_dirr  r/   )rk   r~   r  hasattrr  _componentsr4   rA  rB  rC  rD  rE  )r   bkrr  r   rS   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ResourceAttrro   	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   rM   z7Resources._collect_external_resources.<locals>.<lambda>/  s    TWXYTZ r0   )key)r#   _extensions	extension_importsr,  rN   r   model_class_reverse_mapr,   r   r   r=   r   r   )r.  rI  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 )Nr]   F)r   r  r  devrA  rC  r.  s    r1   _server_urlszResources._server_urls?  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)reactiverb  paramconcrete_descendentsr   r   _loadedr   r~   r   r   )r.  rg   r   rb  r   r!  s         r1   extra_resourceszResources.extra_resourcesF  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 ]/}|                    dt           j                  }|                    |          r|                    |t
                    }| j        dk    r |                    t
          t                    }|                    t          j	        df          r{|                    t          j	                  r!|t          t          j	                  d         }t          j        rt          j         d| }n| j        r| j        dk    r| j         | }|                    |           1|S )zE
        Computes relative and absolute paths for resources.
        z/@holoviz/panel@z/dist/zhttps://unpkg.comrU   zstatic/NrY   )r   r   r   rG   r~   rx   rk   rz   r#   base_urllenry   r  r  r   )r.  rg   new_resourcescdn_baser!  s        r1   r  zResources.adjust_pathsT  sK    nHHjHHH! 	+ 	+H''(;V^LLH""8,, @#++Hh??yH$$#++HjAA""ENI#>?? <&&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)rk   r4   rE  r]  rA  rB  r  rC  r  rD  r   r  )r   rk   r4   rE  r]  rA  rB  	_root_urlrC  r   r  rD  r   r  )r.  r  s     r1   r  zResources.clonej  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 )NrU   z'/panel-preview/static/extensions/panel/rY   )r   rk   r#   ry   rz   r  r  rx   )r.  dist_dirs     r1   rq  zResources.dist_dir}  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   rk   r   )r   r'   r.  s     r1   r   z'Resources.css_files.<locals>.<listcomp>  s7     '
 '
 '
DI$9$9C$9C$9$9$9r0   r  )r   r<  r   r  rh  r  designr   r+  getr   r   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           | j                                        dk    r|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   rs  r2   ru   c                    g | ]H}t          |          t          |                    t          d           z                      d          IS r]   r   r   r   DIST_DIRrG   rx   r   r   s     r1   r   z%Resources.css_raw.<locals>.<listcomp>  sW       
3CKK"555@@'@RR  r0   r   r   r   r'   zloading.css)r   r<  r   r  r[  rh  rk   r   r  r   r   ry  r   r   r   r   global_loading_spinnerr  r  r   r   loading_colorloading_max_heightr*   r   )r.  r   rawr  rz  css_txtloading_baser>  s          r1   r  zResources.css_raw  s   ######It$$, 44Y??	Y	2229??%%  $   C $ 	$ 	$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   rs  r3   c                    g | ]}|S r/   r/   r   r(   s     r1   r   z&Resources.js_files.<locals>.<listcomp>  s    888"888r0   rt   Fru   include_themer(   c                    g | ]}|v|	S r/   r/   )r   r0  r   s     r1   r   z&Resources.js_files.<locals>.<listcomp>  s#    CCCc#U2B2Bc2B2B2Br0   c                H    g | ]}j         d k    st          |          |S ru  rv  )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   r<  r   r  rh  r   rw  r5  r   r  rq  	enumeratepopanyr   )	r.  r   	design_jsr  rq  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   rs  ra  __javascript_modules__rt   Fr  c                    g | ]}|v|	S r/   r/   )r   r0  moduless     r1   r   z(Resources.js_modules.<locals>.<listcomp>  s.       g%% %%%r0   r)   rc  )r   rd  rb  r   r)   r   rh  rw  r5  r   re  rf  r   rg  r  r   r~   r   r   r  )r.  r   rb  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   rU  r   rF  updater-  rZ   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 r}  r~  r  s     r1   r   z$Resources.js_raw.<locals>.<listcomp>  sW     
 
 
*R..


8R000;;W;MM
 
 
r0   r   rs  c                    g | ]D}t           j                            |          !t          |                              d           ES )r   r   )r   r   ry  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 r}  r~  r  s     r1   r   z$Resources.js_raw.<locals>.<listcomp>  sW       z"~~BJJx444???QQ  r0   )r<  r   r  rk   r[  rh  r   r  r   rw  r5  )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)rI  rJ  ro   rK  )ro   r$   )ro   r   )r+   r,   r-   r=  r9  r	  r[  r_  rh  r  r  propertyrq  r  r  r  r)   r  r  r  __classcell__r>  s   @r1   r   r     s       ',u * * * * * * *
 
 
 
 [
" " " "6
 
 
 
/ / /  , #' 
 
 
 
 
 
&   X     X  Z Z Z Z XZ:     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   r<  r=  )r.  r   rS   r>  s      r1   r=  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   ro   r=   c                B    t          j        | j        | j                  S )N)r  r  )BkCSS_RESOURCESr  r  r  r^  s    r1   _render_csszBundle._render_css9  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_js?  s9    "";]"4; # 
 
 	
r0   r6  )ro   r=   )	r+   r,   r-   r=  r9  r	  r  r  r  r  s   @r1   r   r   &  s        # # # # # # 
 
 
 [

 
 
 

 
 
 
 
 
 
r0   r   )ro   rp   r7  )ru   rv   ro   r=   r6  )r   r   r   rp   ro   r   rK   )r   r=   r   r   )r   )FFrt   )~r8  
__future__r   	functoolsr   rE   logging	mimetypesr   r:   rer   base64r   collectionsr   
contextlibr   r   r   typingr	   r
   r   r   r   re  bokeh.embed.bundler   r  r   BkBundler   r   r   r   bokeh.modelr   bokeh.modelsr   bokeh.resourcesr   BkResourcesr   bokeh.settingsr   rf   jinja2.environmentr   jinja2.loadersr   
markupsafer   r   r   rS  utilr   r    loadingr"   r#   r$   r&   	getLoggerr+   loggerrJ  r   r;   r<   r   loadpackage_jsonr   r   rA   rI   rP   trim_blockslstrip_blocksfiltersrN   cacherT   ri   	PANEL_DIRr  r   r   get_templateINDEX_TEMPLATEBASE_TEMPLATEERROR_TEMPLATELOGOUT_TEMPLATEBASIC_LOGIN_TEMPLATEDEFAULT_TITLEr  CDN_ROOTCDN_URLrx   DOC_DISTrz   r   compiler   RESOURCE_URLSr   r   r=   add_typern   rs   r|   r   r   r   r   r   r   r   r   r   r   r  r  r/   r0   r1   <module>r     s    # " " " " "               				  				        # # # # # # % % % % % %                                                + + + + + + 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U
 U
 U
 U
 U
 U
 U
 U
p 
  
  
  
  
X  
  
  
  
  
s   2EE	E