
    BeY                    n   d dl mZ d dlZd dlZd dlmZ d dlmZm	Z	 d dl
mc m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mZ d d	lmZ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%m&Z&m'Z'm(Z( d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2ej3        j        d             Z4ej3        j        d             Z5ej3        j        d             Z6d Z7ej3        j        d             Z8ej3        j        d             Z9d Z:d Z;d  Z<d! Z=d" Z>d# Z?d$ Z@d% ZAd& ZBd' ZCd( ZDd) ZEd* ZFd+ ZGd, ZHd- ZId. ZJd/ ZKd0 ZLdS )1    )annotationsN)partial)ClassVarMapping)Document)patch_curdoc)Div)binddepends)Tabs	WidgetBox)Markdown)ReactiveReactiveHTML)Viewable)CheckboxIntInput	IntSlider
StaticText	TextInputc                 `    t                                                      } | j        dk    sJ d S )NzPanel Application)r   
server_doctitle)docs    9lib/python3.11/site-packages/panel/tests/test_reactive.pytest_reactive_default_titler      s1    
..
#
#
%
%C9+++++++    c                 d   t                      } t          j                                        t	          |           5  fd| _        t                                          d           t                                          d           d d d            n# 1 swxY w Y   | j        dk    sJ d S )Nc                      S N )session_contexts   r   <lambda>z.test_reactive_servable_title.<locals>.<lambda>'   s     r   A)r   B)	r   unittestmockMockr   _session_contextr   servabler   )r   r"   s    @r   test_reactive_servable_titler+   !   s    
**Cm((**O	c		 + +6666c***c***+ + + + + + + + + + + + + + +
 9s   ABBBc                      G d dt                     }  |             } |             }|                    |d           d|_        |j        dk    sJ |j        dk    sJ dS )zLink two Reactive objectsc                  ,    e Zd Z ej                    ZdS )test_link.<locals>.ReactiveLinkN)__name__
__module____qualname__param	Parameterar!   r   r   ReactiveLinkr.   1   s        EOr   r5   r4   r4      N)r   linkr4   )r5   objobj2s      r   	test_linkr;   .   s        x    ,..C<>>DHHTSHCE5A::::6Q;;;;;;r   c                      G d dt                     }  |             }|                    ddi          }|ddik    sJ |                    ddi          }|ddik    sJ dS )z0Test that Reactive renames params and propertiesc                  @    e Zd ZU  ej                    ZddiZded<   dS ))test_param_rename.<locals>.ReactiveRenamer4   bz"ClassVar[Mapping[str, str | None]]_renameN)r/   r0   r1   r2   r3   r4   r@   __annotations__r!   r   r   ReactiveRenamer>   A   s6         EO7:Cj@@@@@@r   rB   r?   r7   r4   N)r   _process_property_change_process_param_change)rB   r9   params
propertiess       r   test_param_renamerG   >   s    A A A A A A A A .

C))3(33Fc1X**C844J#q!!!!!!r   c                V    G d dt                     } |            }t                      }|                    |dg| ||           d|j        v sJ |j        d         d         }t	          |t
                    sJ |j        | |j        d         |d fk    sJ |j        |j	        k    sJ d S )Nc                  0    e Zd Z ej        d          ZdS )-test_link_properties_nb.<locals>.ReactiveLinkr$   defaultNr/   r0   r1   r2   Stringtextr!   r   r   r5   rJ   R   "        u|C(((r   r5   rO   r   id)
r   r	   _link_props
_callbacks
isinstancer   argsreffunc_comm_change)documentcommr5   r9   divcbs         r   test_link_properties_nbr]   P   s    ) ) ) ) )x ) ) ) ,..C
%%C OOC&8S$777S^#### 
		"Bb'"""""7xd;;;;;7c&&&&&&&r   c                R    G d dt                     } |            }t                      }|                    |dg| |           d|j        v sJ |j        d         d         }t	          |t
                    sJ |j        | |j        d         d fk    sJ |j        |j	        k    sJ d S )Nc                  0    e Zd Z ej        d          ZdS )1test_link_properties_server.<locals>.ReactiveLinkr$   rK   NrM   r!   r   r   r5   r`   f   rP   r   r5   rO   r   rQ   )
r   r	   rR   rS   rT   r   rU   rV   rW   _server_change)rY   r5   r9   r[   r\   s        r   test_link_properties_serverrb   d   s    ) ) ) ) )x ) ) ) ,..C
%%C OOC&8S111S^#### 
		"Bb'"""""7x555557c(((((((r   c                 V   t                      } |                                 }t          |t                    sJ t	          |          dk    sJ |\  }}t          |t
                    sJ t	          |          dk    sJ |^}}}t          |t                    sJ t          |t                    sJ g }|D ]}|j        dk    r,t          |t                     sJ d| _	        |j	        dk    sJ :|j        dk    rt          |t                     sJ ]|j        dk    r,t          |t                     sJ d| _
        |j	        dk    sJ |j        dk    rt          |t                    sJ |j        d	k    r,t          |t                     sJ d
| _        |j	        d
k    sJ |                    |           |rJ t          |t
                    sJ d |D             }	t          t          j                  h dz
  }
t	          |	|
z
            rJ t	          |
|	z
            rJ d S )N      Valuez	New valuezValue inputPlaceholderTest placeholder...z
Max lengthDescriptionzTest description...c                    h | ]C}t          |j                  |j                            d d                                          DS ) _)lennamereplacelower).0ws     r   	<setcomp>z+test_text_input_controls.<locals>.<setcomp>   sA    LLLAAFLqv~~c3''--//LLLr   >   designloading
backgroundstylesheets)r   controlsrT   r   rm   r   r   r   rn   valueplaceholderr   descriptionappendsetr   r2   )
text_inputrx   wb1wb2rn   disabledwsnot_checkedrr   params1params2s              r   test_text_input_controlsr   x   sy   J""$$Hh%%%%%x==AHCc9%%%%%s88q====D(bdJ'''''h)))))K " "6Wa+++++*J7k)))))V}$$a++++++V}$$a+++++%:J"7333333V|##a******V}$$a+++++%:J"7333333q!!!!c9%%%%%LLLLLG(.!!$V$V$VVG 7W$%%%%%7W$%%%%%%%r   c                     t          ddd          } t          |           }|j        dk    sJ d| _        |j        dk    sJ d S Nr     *   startendry   widthe   )r   r   r   ry   	int_inputr~   s     r   test_pass_widget_by_referencer      s[    qc444I+++Jr!!!!IOs""""""r   c                     t          ddd          } t          | j        j                  }|j        dk    sJ d| _        |j        dk    sJ d S r   )r   r   r2   ry   r   r   s     r   test_pass_param_by_referencer      s`    qc444I!6777Jr!!!!IOs""""""r   c                     t          ddd          } t          d |           }t          |          }|j        dk    sJ d| _        |j        d	k    sJ d S )
Nr   r   r   r   c                    | dz   S N
   r!   vs    r   r#   z6test_pass_bind_function_by_reference.<locals>.<lambda>   s
    B r   r   4   r   o   )r   r
   r   r   ry   r   fnr~   s      r   $test_pass_bind_function_by_referencer      sn    qc444I			*	*B$$$Jr!!!!IOs""""""r   c                   K   t          ddd          } d }t          t          ||                     }t          j        d           d {V  |j        dk    sJ d	| _        t          j        d           d {V  |j        d
k    sJ d S )Nr   r   r   r   c                   K   | dz   S r   r!   r   s    r   genz3test_pass_bind_async_func_by_reference.<locals>.gen   s      2vr   r   {Gz?r   r   r   r   r   r
   asynciosleepr   ry   r   r   r~   s      r   &test_pass_bind_async_func_by_referencer      s      qc444I   c9!5!5666J
-

r!!!!IO
-

s""""""r   c                   K   t          ddd          } d }t          t          ||                     }t          j        d           d {V  |j        dk    sJ d	| _        t          j        d           d {V  |j        d
k    sJ d S )Nr   r   r   r   c                  K   | dz   W V  d S r   r!   r   s    r   r   z8test_pass_bind_async_generator_by_reference.<locals>.gen   s      "fr   r   r   r   r   r   r   r   s      r   +test_pass_bind_async_generator_by_referencer      s      qc444I   c9!5!5666J
-

r!!!!IO
-

s""""""r   c                 p  K   t          ddd          } d }t          t          ||                     }g |j                            fdd           t          j        d	           d {V  |j        d
k    sJ d| _        t          j        d	           d {V  g dk    sJ |j        dk    sJ d S )Nr   r   r   r   c               *   K   | dz   W V  | dz   W V  d S )Nr      r!   r   s    r   r   z>test_pass_bind_multi_async_generator_by_reference.<locals>.gen   s(      "f"fr   r   c                8                         | j                  S r    )r|   new)ewidthss    r   r#   zCtest_pass_bind_multi_async_generator_by_reference.<locals>.<lambda>   s    V]]15%9%9 r   r   r   >   r   )r   r   r   y   r   )	r   r   r
   r2   watchr   r   r   ry   )r   r   r~   r   s      @r   1test_pass_bind_multi_async_generator_by_referencer      s      qc444I   c9!5!5666JF99997CCC
-

r!!!!IO
-

'''''''s""""""r   c                 &   t          dddd          } t          dddd	          }d
 }t          || |          }t          |          }|j        dk    sJ |j        ddik    sJ d| _        |j        dk    sJ d|_        |j        ddik    sJ d S )N   r7   r   Number)ry   r   r   rn            Sizec                    d| z  d| didS )N*	font-sizeptobjectstylesr!   )numbersizes     r   refsztest_pass_refs.<locals>.refs  s&    Fl"tKKK0
 
 	
r   r   *****r   12pt   ***re   7pt)r   r
   r   r   r   ry   )sliderr   r   irefsmds        r   test_pass_refsr      s    QaRh???F2QBV<<<D
 
 
 vt$$E	u			B99f-----FL9DJ9e,,,,,,,r   c                   K   d } t          |           }t          j        d           d {V  |j        dk    sJ |j        ddik    sJ t          j        d           d {V  |j        dk    sJ |j        dd	ik    sJ d S )
Nc                f   K   dddidW V  t          j        d           d {V  dddidW V  d S )Nr   r   r   r   皙?r   r   r   r   r!   r   r   r   z"test_pass_refs_async.<locals>.refs  s      "F+
 
 	
 	
 	
 	
 mC         "E*
 
 	
 	
 	
 	
 	
 	
r   r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   s     r   test_pass_refs_asyncr     s      	
 	
 	
 
t			B
-

99f-----
-

99e,,,,,,,r   c                 h  K   t          ddd          } d }t          t          ||                     }t          j        d           d {V  |j        dk    sJ d	| _        t          j        d           d {V  |j        d
k    sJ t          j        d           d {V  |j        dk    sJ d S )Nr   r   r   r   c               ^   K   | dz   W V  t          j        d           d {V  | dz   W V  d S )Nr   r   r   r   r   s    r   r   zHtest_pass_bind_multi_async_generator_by_reference_and_abort.<locals>.gen5  sJ      "fmC         "fr   r   r   r   r   r   r   r   r   r   s      r   ;test_pass_bind_multi_async_generator_by_reference_and_abortr   1  s      qc444I  
 c9!5!5666J
-

r!!!!IO
-

s""""
-

s""""""r   c                      G d dt           j                  }  |             }t          dd|j                  }|j        dk    sJ d|_        |j        dk    sJ d|_        |j        dk    sJ d S )	Nc                      e Zd Z ej        d          Z ej        d          Z ej        d          d             Z ej        dd          d             Z	d	S )
9test_pass_parameterized_method_by_reference.<locals>.Testr7   rK   rd   r4   c                    | j         S r    r6   selfs    r   dep_az?test_pass_parameterized_method_by_reference.<locals>.Test.dep_aK  s	    6Mr   r   r?   c                :    |                                  | j        z   S r    )r   r?   r   s    r   dep_abz@test_pass_parameterized_method_by_reference.<locals>.Test.dep_abO  s    ::<<$&((r   N)
r/   r0   r1   r2   r3   r4   r?   r   r   r   r!   r   r   Testr   F  s        EOA&&&EOA&&&	s			 	 
		 
w	$	$	) 	) 
%	$	) 	) 	)r   r   r   r   r   r   r      )r2   Parameterizedr   r   ry   r4   r?   )r   testr   s      r   +test_pass_parameterized_method_by_referencer   D  s    ) ) ) ) )u" ) ) ) 466Dqc===I?aDF?aDF?ar   c                     t          ddd          }  t          |           d           }t          |          }|j        dk    sJ d| _        |j        d	k    sJ d S )
Nr   r   r   r   c                    | dz   S r   r!   r   s    r   r#   z9test_pass_depends_function_by_reference.<locals>.<lambda>b  s
    a"f r   r   r   r   r   )r   r   r   r   ry   r   s      r   'test_pass_depends_function_by_referencer   `  sv    qc444I			,,	-	-B$$$Jr!!!!IOs""""""r   c                    t                      } |                     ddg          }t          |t                    sJ t	          |          dk    sJ |\  }}}t          |t
                    sJ t          |t                    sJ t          |t                     sJ d| _        |j        sJ d| _	        |j        dk    sJ d S )Nrz   r   r   Trh   )
r   rx   rT   r   rm   r   r   r   ry   rz   )r~   rx   rn   r   rz   s        r   !test_text_input_controls_explicitr   l  s    J""M:#>??Hh	*****x==A"*D(KdJ'''''h)))))k9-----J>2J 5555555r   c                     G d dt                     } | j        }|j        dk    sJ |                                }d|v sJ d|v sJ |                    d          }t          |j        t          j                  sJ |	                    |          dk    sJ |                    d          }t          |j        t          j
                  sJ |	                    |          dk    sJ | j        i k    sJ  |             }|                                }|j        dd	dgd
fgik    sJ |j        i k    sJ |j        i k    sJ d S )Nc                  Z    e Zd Z ej        dd          Z ej        dd          ZdZdS )&test_reactive_html_basic.<locals>.Testr   
An integerrL   r   Q	@A float!<div id="div" width=${int}></div>N)	r/   r0   r1   r2   Integerintr   float	_templater!   r   r   r   r     s?        emA<888Ty9997			r   r   Test1r   r   r   r   r[   r   {int}r   _data_modelr/   rF   lookuprT   propertybpIntclass_defaultFloat_node_callbacksget_root_attrs	callbacksevents)r   
data_modelrF   int_prop
float_propr   roots          r   test_reactive_html_basicr    s   8 8 8 8 8| 8 8 8 !J'))))&&((JJj      ''Hh'00000!!*--2222""7++Jj)2844444##J//477772%%%%466D==??D;5GeWg#>"?@@@@@>R;"r   c                     t          j        t                    5 }  G d dt                    }d d d            n# 1 swxY w Y   dt	          | j                  v sJ d S )Nc                  4    e Zd Z ej        d          ZdZdS )2test_reactive_html_no_id_param_error.<locals>.Test   rK   z<div width=${width}></div>N)r/   r0   r1   r2   r   r   r   r!   r   r   r   r    s'         EL---E4IIIr   r   zNFound <div> node with the `width` attribute referencing the `width` parameter.pytestraises
ValueErrorr   strry   excinfor   s     r   $test_reactive_html_no_id_param_errorr    s    	z	"	" 5g	5 	5 	5 	5 	5< 	5 	5 	55 5 5 5 5 5 5 5 5 5 5 5 5 5 5 \_bcjcp_q_qqqqqqq   :>>c                     t          j        t                    5 }  G d dt                    }d d d            n# 1 swxY w Y   dt	          | j                  v sJ d S )Nc                      e Zd ZdZd ZdS )3test_reactive_html_no_id_method_error.<locals>.Testz<div onclick=${_onclick}></div>c                    d S r    r!   r   s    r   _onclickz<test_reactive_html_no_id_method_error.<locals>.Test._onclick  s    r   N)r/   r0   r1   r   r  r!   r   r   r   r    s(        9I    r   r   zOFound <div> node with the `onclick` callback referencing the `_onclick` method.r  r  s     r   %test_reactive_html_no_id_method_errorr     s    	z	"	" g	 	 	 	 	< 	 	 	               ]`cdkdq`r`rrrrrrrr  c                     G d dt                     } | j        }|j        dk    sJ |                                }d|v sJ d|v sJ |                    d          }t          |j        t          j                  sJ |	                    |          dk    sJ |                    d          }t          |j        t          j
                  sJ |	                    |          dk    sJ | j        i k    sJ  |             }|                                }|j        dd	dgd
fgik    sJ |j        i k    sJ |j        dddiik    sJ d S )Nc                  d    e Zd Z ej        dd          Z ej        dd          ZdZddgiZ	d	S )
4test_reactive_html_dom_events.<locals>.TestDOMEventsr   r   r   r   r   r   r[   changeN)
r/   r0   r1   r2   r   r   r   r   r   _dom_eventsr!   r   r   TestDOMEventsr#    sK        emA<888Ty9997	xj)r   r&  TestDOMEvents1r   r   r   r   r[   r   r   r$  Tr   )r&  r	  rF   r
  r  r   r  s          r   test_reactive_html_dom_eventsr(    s   * * * * * * * * *J"22222&&((JJj      ''Hh'00000!!*--2222""7++Jj)2844444##J//47777(B....=??D==??D;5GeWg#>"?@@@@@>R;58T"23333333r   c                 f    G d dt                     } | j        }|j        dk    sJ |                                }d|v sJ |                    d          }t          |j        t          j                  sJ |	                    |          dk    sJ | j
        ddgik    sJ | j        dgk    sJ  |             }|                                }|j        dd	g d
fddgdfgik    sJ |j        ddgik    sJ |j        i k    sJ |                    ddt"                     |j        dddiik    sJ d S )Nc                  <    e Zd Z ej        dd          ZdZd ZdS )-test_reactive_html_inline.<locals>.TestInliner   r   r   z9<div id="div" onchange=${_div_change} width=${int}></div>c                    d S r    r!   )r   events     r   _div_changez9test_reactive_html_inline.<locals>.TestInline._div_change  s    Dr   N)r/   r0   r1   r2   r   r   r   r.  r!   r   r   
TestInliner+    s>        emA<888O		 	 	 	 	r   r/  TestInline1r   r   r[   )onchanger.  )r[   r1  r.  r1  z{_div_change}r   r   clickF)r   r   r/   rF   r   rT   r   r   r  r  r  _inline_callbacksr  r  r  r  on_eventprint)r/  r	  rF   r
  r   r  s         r   test_reactive_html_inliner6    s       \    'J-////&&((JJ  ''Hh'00000!!*--2222%%2M1N)OOOOO',N+OOOOO:<<D==??D;_-ugw'
     >e&A%BCCCCC;"MM%%(((;57E"23333333r   c                     G d dt                     } | j        i k    sJ | j        g k    sJ | j        j        ddik    sJ t                      } | |g          }|                                }|j        i k    sJ |j        d|j        |j	        d                  d         gik    sJ t          |j                  dk    sJ |j        d|gik    sJ t                      }|g|_        t          |j                  dk    sJ |j        d|j        |j	        d                  d         gik    sJ |j        d|gik    sJ |                    |           t          |j                  dk    sJ t          |j                  dk    sJ d S )	Nc                  4    e Zd Z ej        g           ZdZdS )1test_reactive_html_children.<locals>.TestChildrenrK   z<div id="div">${children}</div>Nr/   r0   r1   r2   Listchildrenr   r!   r   r   TestChildrenr9    s'        5:b)))5			r   r=  r[   r<  r<  rQ   r   r7   )r   r  r3  _parserr<  r   r  r  _modelsrV   rm   _panes_cleanup)r=  widgetr   r  
widget_news        r   test_reactive_html_childrenrE     s   6 6 6 6 6| 6 6 6 '2----)R////(UJ,?????[[F<&***D==??D;"=UV^DHTN%CA%F$GHHHHHv~!####;:x00000JLDMv~!####=UZ%7%G%J$KLLLLL;:
|44444MM$t|!!!!z!""a''''''r   c                 l    G d dt                     } | j        i k    sJ | j        g k    sJ | j        j        ddik    sJ t                      } | |g          }|                                }|j        i k    sJ |j        dgk    sJ |j        d|j	        |j
        d                  d         gik    sJ |j        d|gik    sJ t                      }|g|_        t          |j	                  dk    sJ |j        d|j	        |j
        d                  d         gik    sJ |j        d|gik    sJ d S )Nc                  4    e Zd Z ej        g           ZdZdS )Dtest_reactive_html_templated_children.<locals>.TestTemplatedChildrenrK   z
        <select id="select">
        {% for option in children %}
        <option id="option-{{ loop.index0 }}">${children[{{ loop.index0 }}]}</option>
        {% endfor %}
        </div>
        Nr:  r!   r   r   TestTemplatedChildrenrH  !  )        5:b)))			r   rI  optionr<  r>  rQ   r   r   r  r3  r?  r<  r   r  r  loopedr@  rV   rA  rm   )rI  rC  r   r  rD  s        r   %test_reactive_html_templated_childrenrN    s   
 
 
 
 
 
 
 
 !0B6666 2b8888 (1h
5KKKKK[[F  6(333D==??D;";8*$$$$=Xtx~(Fq(I'JKKKKK;:x00000JLDMv~!####=X
(:48D>(J1(M'NOOOOO;:
|4444444r   c                     G d dt                     } | j        i k    sJ | j        g k    sJ | j        j        ddik    sJ t                      } | d|i          }|                                }|j        i k    sJ |j        dgk    sJ |j        d|j	        |j
        d                  d         gik    sJ |j        d|gik    sJ |j	        |j
        d                  d         }t                      }||d	|_        t          |j	                  d
k    sJ |j        d|j	        |j
        d                  d         |gik    sJ |j        d||gik    sJ d S )Nc                  4    e Zd Z ej        i           ZdZdS )Itest_reactive_html_templated_dict_children.<locals>.TestTemplatedChildrenrK   z
        <select id="select">
        {% for key, option in children.items() %}
        <option id="option-{{ loop.index0 }}">${children[{{ key }}]}</option>
        {% endfor %}
        </div>
        N)r/   r0   r1   r2   Dictr<  r   r!   r   r   rI  rQ  B  rJ  r   rI  rK  r<  r   r>  rQ   r   )r   test2r7   rL  )rI  rC  r   r  widget_modelrD  s         r   *test_reactive_html_templated_dict_childrenrU  @  s   
 
 
 
 
 
 
 
 !0B6666 2b8888 (1h
5KKKKK[[F  66*:;;;D==??D;";8*$$$$=Xtx~(Fq(I'JKKKKK;:x00000>$(4.1!4LJ'&99DMv~!####=tx~.q1
     ;:
F';<<<<<<<r   c                 B    G d dt                     } | j        i k    sJ | j        g k    sJ | j        j        ddik    sJ  | g d          }|                                d         dk    sJ |                                }|j        i k    sJ |j        dgk    sJ d S )	Nc                  4    e Zd Z ej        g           ZdZdS )Ptest_reactive_html_templated_children_add_loop_id.<locals>.TestTemplatedChildrenrK   z
        <select id="select">
        {%- for option in children %}
          <option id="option">${children[{{ loop.index0 }}]}</option>
        {%- endfor %}
        </select>
        Nr:  r!   r   r   rI  rX  i  rJ  r   rI  rK  r<  r$   r%   Cr>  r   
        <select id="select-${id}">
          <option id="option-0-${id}"></option>
          <option id="option-1-${id}"></option>
          <option id="option-2-${id}"></option>
        </select>
        	r   r  r3  r?  r<  _get_templater  r  rM  rI  r   models      r   1test_reactive_html_templated_children_add_loop_idr`  g  s    
 
 
 
 
 
 
 
 !0B6666 2b8888 (1h
5KKKKK  ///:::D" '     MMOOE;"<H:%%%%%%r   c                 B    G d dt                     } | j        i k    sJ | j        g k    sJ | j        j        ddik    sJ  | g d          }|                                d         dk    sJ |                                }|j        i k    sJ |j        dgk    sJ d S )	Nc                  4    e Zd Z ej        g           ZdZdS )atest_reactive_html_templated_children_add_loop_id_and_for_loop_var.<locals>.TestTemplatedChildrenrK   z
        <select id="select">
        {%- for option in children %}
          <option id="option">${option}</option>
        {%- endfor %}
        </select>
        Nr:  r!   r   r   rI  rc    rJ  r   rI  rK  r<  rY  r>  r   r[  r\  r^  s      r   Btest_reactive_html_templated_children_add_loop_id_and_for_loop_varrd        
 
 
 
 
 
 
 
 !0B6666 2b8888 (1h
5KKKKK  ///:::D" '     MMOOE;"<H:%%%%%%r   c                 B    G d dt                     } | j        i k    sJ | j        g k    sJ | j        j        ddik    sJ  | g d          }|                                d         dk    sJ |                                }|j        i k    sJ |j        dgk    sJ d S )	Nc                  4    e Zd Z ej        g           ZdZdS )wtest_reactive_html_templated_children_add_loop_id_and_for_loop_var_insensitive_to_spaces.<locals>.TestTemplatedChildrenrK   z
        <select id="select">
        {%- for option in children %}
          <option id="option">${ option   }</option>
        {%- endfor %}
        </select>
        Nr:  r!   r   r   rI  rh    rJ  r   rI  rK  r<  rY  r>  r   r[  r\  r^  s      r   Xtest_reactive_html_templated_children_add_loop_id_and_for_loop_var_insensitive_to_spacesri    re  r   c                 t    dD ]2dD ]- G fddt                     }  |             j        dk    sJ .3d S )N) +-r   \%z**z>>z<<z>>>&^z&&z||z??)rk   rk  c                  F    e Zd Z ej                    ZdZdd   diZdS )Utest_reactive_html_scripts_linked_properties_assignment_operator.<locals>.TestScriptsz<div id='test'></div>renderz"test.onclick = () => { data.clicksz= 1 }N)r/   r0   r1   r2   r   clicksr   _scripts)operatorseps   r   TestScriptsrs    s=        &3	$&aC&aQY&a&a&abr   ry  )ru  )r   _linked_properties)ry  rw  rx  s    @@r   @test_reactive_html_scripts_linked_properties_assignment_operatorr{    s    g C C 
	C 
	CCc c c c c c c cl c c c ;==3{BBBBB
	CC Cr   c                 >    G d dt                     } | j        i k    sJ | j        g k    sJ | j        j        i k    sJ  | g d          }|                                d         dk    sJ |                                }|j        i k    sJ |j        dgk    sJ d S )Nc                  4    e Zd Z ej        g           ZdZdS )`test_reactive_html_templated_literal_add_loop_id_and_for_loop_var.<locals>.TestTemplatedChildrenrK   z
        <select id="select">
        {%- for option in children %}
          <option id="option">{{ option }}</option>
        {%- endfor %}
        </select>
        Nr:  r!   r   r   rI  r~    rJ  r   rI  rY  r>  r   
        <select id="select-${id}">
          <option id="option-0-${id}">A</option>
          <option id="option-1-${id}">B</option>
          <option id="option-2-${id}">C</option>
        </select>
        rK  r\  r^  s      r   Atest_reactive_html_templated_literal_add_loop_id_and_for_loop_varr        
 
 
 
 
 
 
 
 !0B6666 2b8888 (1R7777  ///:::D" '     MMOOE;"<H:%%%%%%r   c                 >    G d dt                     } | j        i k    sJ | j        g k    sJ | j        j        i k    sJ  | g d          }|                                d         dk    sJ |                                }|j        i k    sJ |j        dgk    sJ d S )Nc                  4    e Zd Z ej        g           ZdZdS )vtest_reactive_html_templated_literal_add_loop_id_and_for_loop_var_insensitive_to_spaces.<locals>.TestTemplatedChildrenrK   z
        <select id="select">
        {%- for option in children %}
          <option id="option">{{option   }}</option>
        {%- endfor %}
        </select>
        Nr:  r!   r   r   rI  r    rJ  r   rI  rY  r>  r   r  rK  r\  r^  s      r   Wtest_reactive_html_templated_literal_add_loop_id_and_for_loop_var_insensitive_to_spacesr    r  r   c                     t          j        t                    5 }  G d dt                    }d d d            n# 1 swxY w Y   dt	          |           v sJ dt	          |           v sJ d S )Nc                  4    e Zd Z ej        g           ZdZdS )Ytest_reactive_html_templated_variable_not_in_declared_node.<locals>.TestTemplatedChildrenrK   z
            <select>
            {%- for option in children %}
            <option id="option">{{option   }}</option>
            {%- endfor %}
            </select>
            Nr:  r!   r   r   rI  r    s)        !uz"---HIIIr   rI  z/could not be expanded because the <select> nodez{%- for option in children %})r  r  r  r   r  )r  rI  s     r   :test_reactive_html_templated_variable_not_in_declared_noder    s    	z	"	" g
	 
	 
	 
	 
	L 
	 
	 
	               =GLLLL*c'll::::::r  c                D   t          dg          }|                    | |          }t          |j                  dk    sJ |j        d         |j        d         k    sJ dg|_        t          |j                  dk    sJ |j        d         |j        d         k    sJ d S )Nz(:host { --design-background-color: red })rw   r   r   z):host { --design-background-color: blue })r   r  rm   rw   )rY   rZ   rC  r_  s       r   'test_reactive_design_stylesheets_updater  (  s    $N#OPPPFOOHd++Eu !!Q&&&&R F$6q$99999EFFu !!Q&&&&R F$6q$9999999r   )M
__future__r   r   unittest.mockr&   	functoolsr   typingr   r   bokeh.core.propertiescorerF   r   r2   r  bokeh.documentr   bokeh.io.docr   bokeh.modelsr	   panel.dependsr
   r   panel.layoutr   r   
panel.paner   panel.reactiver   r   panel.viewabler   panel.widgetsr   r   r   r   r   r   r+   r;   rG   r]   rb   r   r   r   r   markr   r   r   r   r   r   r   r   r   r  r  r   r(  r6  rE  rN  rU  r`  rd  ri  r{  r  r  r  r  r!   r   r   <module>r     s   " " " " " "            $ $ $ $ $ $ $ $ " " " " " " " " "   # # # # # # % % % % % %       ' ' ' ' ' ' ' ' ( ( ( ( ( ( ( (       1 1 1 1 1 1 1 1 # # # # # #             
, , ,
 
 
   " " "$' ' '() ) )(-& -& -&^# # ## # #	# 	# 	# # # #  # # #  # # #,- - -0 - - -2 # # #$     8	# 	# 	#6 6 6(  Br r r	s 	s 	s!4 !4 !4H#4 #4 #4L( ( (>5 5 5B$= $= $=N& & &B& & &@& & &@C C C & & &@& & &@; ; ; : : : : :r   