
    MfB                        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ZdZdZdZd	Zd
ZdZdddZdZdZg dZd Zd&dZd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d  Z$d! Z%d" Z&d# Z'd$ Z(d% Z)dS )'    N   )julia_keywords)reorder_propsz$03207cf0-e2b3-4b91-9ca8-690cf0fb507ez$1b08a953-4be3-4667-9a23-3db579824955ak  
export {funcname}

"""
    {funcname}(;kwargs...){children_signatures}

{docstring}
"""
function {funcname}(; kwargs...)
        available_props = Symbol[{component_props}]
        wild_props = Symbol[{wildcard_symbols}]
        return Component("{funcname}", "{element_name}", "{module_name}", available_props, wild_props; kwargs...)
end
{children_definitions}
z\
    {funcname}(children::Any;kwargs...)
    {funcname}(children_maker::Function;kwargs...)
z
{funcname}(children::Any; kwargs...) = {funcname}(;kwargs..., children = children)
{funcname}(children_maker::Function; kwargs...) = {funcname}(children_maker(); kwargs...)
a  
module {package_name}
using {base_package}

const resources_path = realpath(joinpath( @__DIR__, "..", "deps"))
const version = "{version}"

{component_includes}

function __init__()
    DashBase.register_package(
        DashBase.ResourcePkg(
            "{project_shortname}",
            resources_path,
            version = version,
            [
                {resources_dist}
            ]
        )

    )
end
end
z
name = "{package_name}"
uuid = "{package_uuid}"
{authors}version = "{version}"

[deps]
{base_package} = "{dash_uuid}"

[compat]
julia = "1.2"
{base_package} = "{base_version}"
z
0.1.3, 1.0z0.1)DashDashBasezinclude("jl/{name}.jl")zDashBase.Resource(
    relative_package_path = {relative_package_path},
    external_url = {external_url},
    dynamic = {dynamic},
    async = {async_string},
    type = :{type}
))dash_html_componentsdash_core_components
dash_tablec                 j    |                      d          }d                    d |D                       S )N_ c              3   >   K   | ]}|                                 V  d S N)
capitalize).0ws     i/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/dash/development/_jl_components_generation.py	<genexpr>z"jl_package_name.<locals>.<genexpr>k   s*      --a1<<>>------    )splitjoin)
namestringss     r   jl_package_namer   i   s6    A77--1------r   Fc                     |r d                     d | D                       }nd                     d | D                       }|S )N|c              3   @   K   | ]}d                      |          V  dS )z{}-Nformatr   items     r   r   z&stringify_wildcards.<locals>.<genexpr>p   s.      BB4ELL..BBBBBBr   , c              3   @   K   | ]}d                      |          V  dS )zSymbol("{}-")Nr   r    s     r   r   z&stringify_wildcards.<locals>.<genexpr>r   s0      MMd_33D99MMMMMMr   )r   )wclist	no_symbolwcstrings      r   stringify_wildcardsr'   n   sR     N88BB6BBBBB99MMfMMMMMOr   c                     d | D             S )Nc                 d    g | ]-}|                     d           |                    d d          .S )-*r   )endswithreplace)r   keys     r   
<listcomp>z$get_wildcards_jl.<locals>.<listcomp>w   s7    IIIccll46H6HICKKb!!IIIr    propss    r   get_wildcards_jlr2   v   s    IIUIIIIr   c                 p      fd}t          d d d d d d d d	  fd
 fd fd fd||          S )z<Mapping from the PropTypes js type object to the Julia type.c            
         d                     d                    d  d         D                       d                     d                    d  d                                         D                                           S )Nz lists containing elements {}.
{}r"   c              3   @   K   | ]}d                      |          V  dS )z'{}'Nr   r   ts     r   r   z<get_jl_prop_types.<locals>.shape_or_exact.<locals>.<genexpr>   s.      EE1fmmA&&EEEEEEr   valuez+Those elements have the following types:
{}
c           
   3   x   K   | ]5\  }}t          |||d          |                    dd          d          V  6dS )requireddescriptionr   r   	prop_nametype_objectr;   r<   
indent_numN)create_prop_docstring_jlget)r   r>   props      r   r   z<get_jl_prop_types.<locals>.shape_or_exact.<locals>.<genexpr>   sm       	 	 (	4 -"+$(!%j!1$(HH]B$?$?#$  	 	 	 	 	 	r   )r   r   itemsr?   s   r   shape_or_exactz)get_jl_prop_types.<locals>.shape_or_exact}   s    299IIEEG0DEEEEE:AA		 	 	 ,7w+?+E+E+G+G	 	 	 	 	 
 
 	
r   c                      dS )NArrayr/   r/   r   r   <lambda>z#get_jl_prop_types.<locals>.<lambda>   s    g r   c                      dS )NBoolr/   r/   r   r   rI   z#get_jl_prop_types.<locals>.<lambda>   s    V r   c                      dS )NRealr/   r/   r   r   rI   z#get_jl_prop_types.<locals>.<lambda>       v r   c                      dS )NStringr/   r/   r   r   rI   z#get_jl_prop_types.<locals>.<lambda>   s    x r   c                      dS )NDictr/   r/   r   r   rI   z#get_jl_prop_types.<locals>.<lambda>   rN   r   c                      dS )Nz#Bool | Real | String | Dict | Arrayr/   r/   r   r   rI   z#get_jl_prop_types.<locals>.<lambda>   s    9 r   c                      dS )Nzdash componentr/   r/   r   r   rI   z#get_jl_prop_types.<locals>.<lambda>   s    ( r   c                      dS )Nz8a list of or a singular dash component, string or numberr/   r/   r   r   rI   z#get_jl_prop_types.<locals>.<lambda>   s    O r   c                  t    d                     d                    d  d         D                                 S )Nza value equal to: {}r"   c              3   f   K   | ],}d                      t          |d                             V  -dS ){}r8   N)r   strr6   s     r   r   z6get_jl_prop_types.<locals>.<lambda>.<locals>.<genexpr>   s8      QQqdkk#aj//22QQQQQQr   r8   r   r   rE   s   r   rI   z#get_jl_prop_types.<locals>.<lambda>   s;    +22IIQQK<PQQQQQ
 
 r   c                  t    d                     d                    d  d         D                                 S )NrX   z | c              3      K   | ]9}t          |          d k    d                    t          |                    V  :dS )r   rX   Nget_jl_typer   )r   subTypes     r   r   z6get_jl_prop_types.<locals>.<lambda>.<locals>.<genexpr>   sU        w''2-- K0011---- r   r8   rZ   rE   s   r   rI   z#get_jl_prop_types.<locals>.<lambda>   sG    dkkJJ  *73    
 
 r   c                      dt           d                   dk    r(d                    t           d                             ndz   S )NrH   r8   r   z of {}sr]   rE   s   r   rI   z#get_jl_prop_types.<locals>.<lambda>   sP     {7344::   [-A!B!BCCC	 r   c                  T    d                     t           d                             S )Nz/Dict with Strings as keys and values of type {}r8   )r   r^   rE   s   r   rI   z#get_jl_prop_types.<locals>.<lambda>   s(    JQQG,--
 
 r   )arrayboolnumberstringobjectanyelementnodeenumunionarrayOfobjectOfshapeexact)dict)r?   rF   s   ` r   get_jl_prop_typesrq   z   s    
 
 
 
 
" o^~~99((OO
 
 
 

 
 
 

 
 
 

 
 
 
 K& & & &r   c                    t          j        |           }t          |                                          D ]\  }}d|vrd|vr|                    |           #d|v r(|d         d         }|dv r|                    |           Od|v rF|d         d         }|dk    r1d|d         vs|d         d         dk    r|                    |           t
          |S )a  Filter props from the Component arguments to exclude:
        - Those without a "type" or a "flowType" field
        - Those with arg.type.name in {'func', 'symbol', 'instanceOf'}
    Parameters
    ----------
    props: dict
        Dictionary with {propName: propMetadata} structure
    Returns
    -------
    dict
        Filtered dictionary with {propName: propMetadata} structure
    typeflowTypename>   funcsymbol
instanceOf	signaturerf   )copydeepcopylistrD   pop
ValueError)r1   filtered_propsarg_nameargarg_typearg_type_names         r   filter_propsr      s	    ]5))Nn224455  #3!6!6x((( S==6{6*H;;;""8,,,3
OF3M++ Z00C
OF4Kx4W4W"&&x000r   c                 b    | d         }t          |           }||v r ||                     }|S dS )z
    Convert JS types to Julia types for the component definition
    Parameters
    ----------
    type_object: dict
        react-docgen-generated prop type dictionary
    Returns
    -------
    str
        Julia type string
    ru   rE   r   )rq   )r?   js_type_namejs_to_jl_types	prop_types       r   r^   r^      sF     v&L&;???N~%%0N<022	2r   c                 V    t          |                                           }|r|dz  }|S )Nz. )r^   r   )typedata
typestrings     r   print_jl_typer      s3    X&&1133J d
r   c                    t          |          }d                    | d                                         dv rdnd| |d                    d t	          |                                          D                       	          S )
a5  Create the Dash component docstring.
    Parameters
    ----------
    component_name: str
        Component name
    props: dict
        Dictionary with {propName: propMetadata} structure
    description: str
        Component description
    Returns
    -------
    str
        Dash component docstring
    r0   z>A{n} {name} component.
{description}
Keyword arguments:
{args}r   aeiounr   r9   c              3      K   | ]9\  }}t          |d |v r|d          n|d         |d         |d         d          V  :dS )rs   rt   r;   r<   r   r=   N)rA   )r   prC   s      r   r   z&create_docstring_jl.<locals>.<genexpr>  sy       	
 	
 4 %,2dNNDLLZ@Pj) /  	
 	
 	
 	
 	
 	
r   )r   ru   r<   args)r   r   lowerr   r   rD   component_namer1   r<   s      r   create_docstring_jlr      s      &&&ENUU"((**g55##2YY 	
 	
 (..4466	
 	
 	
 	
 	
	 V   r   c                    t          |          }d|z  }d|v rd                    || |||rdnd          S d                    || |rd	                    |          nd
|d
k    rd                    |          nd
|rdnd          S )aS  
    Create the Dash component prop docstring
    Parameters
    ----------
    prop_name: str
        Name of the Dash component prop
    type_object: dict
        react-docgen-generated prop type dictionary
    required: bool
        Component is required?
    description: str
        Dash component description
    indent_num: int
        Number of indents to use for the context block
        (creates 2 spaces for every indent)
    is_flow_type: bool
        Does the prop use Flow types? Otherwise, uses PropTypes
    Returns
    -------
    str
        Dash component prop docstring
    rE   z  r9   z`{indent_spacing}- `{name}` ({is_required}): {description}. {name} has the following type: {type}r;   optional)indent_spacingru   rs   r<   is_requiredz={indent_spacing}- `{name}` ({type}{is_required}){description}z{}; r   z: {}r]   )r>   r?   r;   r<   r@   jl_type_namer   s          r   rA   rA     s    : ;777LJ&N|44:F-!'*2BJJ
 5; 5 5		
 KQQ%,8@V]]<(((b3>"3D3DV]];///""*:JJ
 R   r   c                 ~    | r(d                     | |                                          S |                                S )Nz{}_{})r   r   )prefixru   s     r   format_fn_namer   S  s4     4~~fdjjll333::<<r   c                 *    d fd| D             S )Nc                 4    | rd                     |           ndS )Nz"{}"nothingr   )vs    r   nothing_or_stringz4generate_metadata_strings.<locals>.nothing_or_stringZ  s    #$3v}}Q)3r   c                    g | ]}t                                |                    d d                     |                    dd                    t          |                    dd                                                    d|                                v rGd                    t          |                    d                                                              nd          S )relative_package_pathr   external_urldynamicr   async:{})r   r   r   rs   async_string)jl_resource_tuple_stringr   rB   rY   r   keys)r   resourcemetatyper   s     r   r.   z-generate_metadata_strings.<locals>.<listcomp>]  s         	!''"3"34b99# # +*8<<+K+KLLY	::;;AACC(--//)) c(,,w*?*?&@&@&F&F&H&HIII 	( 
	
 
	
  r   r/   )	resourcesr   r   s    `@r   generate_metadata_stringsr   Y  sE    4 4 4     "   r   c                     | t           v S r   )core_packagesproject_shortnames    r   is_core_packager   m  s    --r   c                 (    t          |           rdndS )Nr   r   )r   r   s    r   base_package_namer   q  s    ():;;G::Gr   c                 <    t          |           rt          nt          S r   )r   jl_dash_base_uuidjl_dash_uuidr   s    r   base_package_uidr   u  s     /0A B BTTr   c           
      &   t          |           }t          j                            dt	          j                               t          j        |           }t          |dg           }t          |dg           }|	                    d          }d
                    t          |d          t          |d          z             }	t                              |d
                    fd	|D                       |	|| t          |           
          }
t          j        
                    d|dz             }t          |dd          5 }|                    |
           d d d            n# 1 swxY w Y   t#          d                    |                     d S )Nr   _js_dist	_css_distversionz,
jscssr9   c                 b    g | ]+}t                               t          |                     ,S ))ru   )jl_component_include_stringr   r   )r   	comp_namer   s     r   r.   z)generate_package_file.<locals>.<listcomp>  sM         ,22'	:: 3    r   )package_namecomponent_includesresources_distr   r   base_packagesrc.jlr   utf-8encodingGenerated {})r   syspathinsertosgetcwd	importlibimport_modulegetattrrB   r   r   jl_package_file_stringr   r   openwriteprint)r   
componentspkg_datar   r   modjs_distcss_distproject_verr   package_string	file_pathfs      `         r   generate_package_filer   y  s   "#455LHOOAry{{###

!"3
4
4Cc:r**GsK,,H,,y))KZZ!'400
#He
4
4	5 N
 ,22!99    ",	  
 
 &+&'899 3  N UL5$899I	iw	/	/	/  1	                             	.

	
*
*+++++s   E$$E(+E(c                    |                     dd          }|                     d          }t          |           }t          j        t                    }t          j        |j        d d         t          j        |                    d                    	                                dd          z             }|rd
                    |          nd}t          |           }t          
                    |||||t          |         t          |                     }	d	}
t          |
d
d          5 }|                    |	           d d d            n# 1 swxY w Y   t#          d
                    |
                     d S )Nauthorr   r   ir   )hexzauthors = ["{}"]
)r   package_uuidr   authorsr   base_version	dash_uuidzProject.tomlr   r   r   )rB   r   uuidUUIDr   r   hashlibmd5encode	hexdigestr   r   jl_projecttoml_stringjl_base_versionr   r   r   r   )r   r   package_authorr   r   ur   authors_stringr   toml_stringr   r   s               r   generate_toml_filer     s   \\(B//N,,y))K"#455L	,A9E$3$K'+l&9&9'&B&BCCMMOOPSPTPTUU  L
 8FM##N3332  %%677L'..!!!$\2"#455 /  K I	iw	/	/	/ 1	              	.

	
*
*+++++s   -EEEc                    t          t          |                    }t          |                                          }t	          | ||                              dd                              dd          }t          |          }d}	|d d          D ]y}
|
                    d          s|
dk    r|                    |
           3|
t          v r=|                    |
           t          j        d	                    |
|                      z|	d
                    d |D                       z  }	d|v }t          ||           }|rt                              |          nd}|rt                               |          nd}t"                              t          ||           ||	t%          |d          t%          |d          | |||	  	        S )Nr   z
r9   $z\$r   r*   setPropszZWARNING: prop "{}" in component "{}" is a Julia keyword - REMOVED FROM THE JULIA COMPONENTr"   c              3   @   K   | ]}d                      |          V  dS )r   Nr   )r   r   s     r   r   z(generate_class_string.<locals>.<genexpr>  s,      "F"Fq5<<??"F"F"F"F"F"Fr   children)funcnameF)r%   T)	r   	docstringcomponent_propswildcard_symbolswildcard_nameselement_namemodule_namechildren_signatureschildren_definitions)r   r   r|   r   r   r,   r2   r+   remover   warningswarnr   r   r   jl_children_signaturesjl_children_definitionsjl_component_stringr'   )ru   r1   r<   r   r   r   	prop_keysr   r$   default_paramtextr!   has_childrenr   r  r  s                  r   generate_class_stringr    s   "<#6#677N^((**++I 	~;	
 	
 	
 
			e		  e$$F !!! 
 
== 		$*"4"4T""""^##T"""M:&t$$	   "F"FI"F"F"FFFF*Lfd++H<HP%%x%888b  >JQ&&&999r  %%--),VuEEE*6TBBB%/1 & 
 
 
r   c                 
   t          |          }d}t          | ||||          }t          ||           dz   }t          j                            d          st          j        d           t          j                            dd|          }t          |dd	          5 }	|		                    |           |		                    |           d d d            n# 1 swxY w Y   t          d
                    |                     d S )Nr0   z$# AUTO GENERATED FILE - DO NOT EDIT
r   zsrc/jlr   jlr   r   r   r   )r   r  r   r   r   existsmakedirsr   r   r   r   r   )
ru   r1   r<   r   r   import_stringclass_string	file_namer   r   s
             r   generate_struct_filer    s6   &&&E;M(e["3V L vt,,u4I
 7>>(## 
HUD)44I	iw	/	/	/ 1		               
.

	
*
*+++++s   +CCCc           	         t           j                            d          rt          j        d           t          j        d           t          j        |           D ]\  }}}|D ]}	t           j                            |	          d         }
|
dv r,t           j                            dt           j        	                    ||                     }t           j                            |          st          j        |           t          j
        t           j                            ||	          |           ьt          | |||           t          | |           d S )Ndepsr   )z.pyz.pycz.jsonzdeps/)r   r   r  shutilrmtreer  walksplitextr   relpathrz   r   r   )r   r   metadatar   r   kwargsrel_dirnamer   	filenamesfilename	extensiontarget_dirnames               r   generate_moduler'    sC    
w~~f fK%'W->%?%? M M!Q	! 	M 	MH((2215I444W\\6GHH N 7>>.11 ,N+++K[(;;^LLLL	M +Z6JJJ((33333r   )F)*rz   r   r  r  r   r   r   r   _all_keywordsr   _py_components_generationr   r   r   r  r
  r  r   r   r   r   r   r   r   r'   r2   rq   r   r^   r   r   rA   r   r   r   r   r   r   r   r  r  r'  r/   r   r   <module>r*     s    				   



       ) ) ) ) ) ) 4 4 4 4 4 4 ;  6
   
 
 2   
 8   ONN. . .
   J J J: : :z# # #L  (       F1 1 1p    (. . .H H HU U U ,  ,  ,F, , ,>2 2 2j, , ,04 4 4 4 4r   