@@ -441,16 +441,54 @@ def get_and_assert_figure_root(obj: Element) -> Figure:
441441class  JsCode :
442442    """Wrapper around Javascript code.""" 
443443
444-     def  __init__ (self , js_code : Union [str , "JsCode" ]):
444+     def  __init__ (self , js_code : Union [str , "JsCode" ], ** kwargs ):
445+         args  =  {k : tojavascript (v ) for  k , v  in  kwargs .items ()}
445446        if  isinstance (js_code , JsCode ):
446-             self .js_code : str  =  js_code .js_code 
447+             self .js_code : str  =  js_code .js_code   %   args 
447448        else :
448-             self .js_code  =  js_code 
449+             self .js_code  =  js_code   %   args 
449450
450451    def  __str__ (self ):
451452        return  self .js_code 
452453
453454
455+ def  tojavascript (obj : Union [str , JsCode , dict , list , Element ]) ->  str :
456+     if  isinstance (obj , JsCode ):
457+         return  obj .js_code 
458+     elif  isinstance (obj , Element ):
459+         return  obj .get_name ()
460+     elif  isinstance (obj , dict ):
461+         out  =  ["{\n " ]
462+         for  key , value  in  obj .items ():
463+             if  isinstance (key , str ):
464+                 out .append (f'  "{ camelize (key )}  ": ' )
465+             else :
466+                 out .append (f"  { key }  : " )
467+             out .append (tojavascript (value ))
468+             out .append (",\n " )
469+         out .append ("}" )
470+         return  "" .join (out )
471+     elif  isinstance (obj , list ):
472+         out  =  ["[\n " ]
473+         for  value  in  obj :
474+             out .append (tojavascript (value ))
475+             out .append (",\n " )
476+         out .append ("]" )
477+         return  "" .join (out )
478+     else :
479+         return  _to_escaped_json (obj )
480+ 
481+ 
482+ def  _to_escaped_json (obj : TypeJsonValue ) ->  str :
483+     return  (
484+         json .dumps (obj )
485+         .replace ("<" , "\\ u003c" )
486+         .replace (">" , "\\ u003e" )
487+         .replace ("&" , "\\ u0026" )
488+         .replace ("'" , "\\ u0027" )
489+     )
490+ 
491+ 
454492def  parse_font_size (value : Union [str , int , float ]) ->  str :
455493    """Parse a font size value, if number set as px""" 
456494    if  isinstance (value , (int , float )):
0 commit comments