
    $g}                         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ZdZdZdZdZd Zd Zd Zd Zd Z	 	 d"dZd Zd Zd Zd Z d Z!d Z"d Z#d#dZ$d Z%	 d$d Z&d! Z'y)%    N   )
r_keywords)reorder_propsa  #' @export
{funcname} <- function({default_argtext}{wildcards}) {{
    {wildcard_declaration}
    props <- list({default_paramtext}{wildcards})
    if (length(props) > 0) {{
        props <- props[!vapply(props, is.null, logical(1))]
    }}
    component <- list(
        props = props,
        type = '{name}',
        namespace = '{project_shortname}',
        propNames = c({prop_names}{wildcard_names}),
        package = '{package_name}'
        )

    structure(component, class = c('dash_component', 'list'))
}}
z?.{rpkgname}_js_metadata <- function() {{
deps_metadata <- list(a,  `{dep_name}` = structure(list(name = "{dep_name}",
version = "{project_ver}", src = list(href = NULL,
file = "deps"), meta = NULL,
script = {script_name},
stylesheet = {css_name}, head = NULL, attachment = NULL, package = "{rpkgname}",
all_files = FALSE{async_or_dynamic}), class = "html_dependency")a>  `{project_shortname}` = structure(list(name = "{project_shortname}",
version = "{project_ver}", src = list(href = NULL,
file = "deps"), meta = NULL,
script = {script_name},
stylesheet = {css_name}, head = NULL, attachment = NULL, package = "{rpkgname}",
all_files = FALSE{async_or_dynamic}), class = "html_dependency")z)
return(deps_metadata)
}
z% Auto-generated: do not edit by hand
\name{{{funcname}}}

\alias{{{funcname}}}

\title{{{name} component}}

\description{{
{description}
}}

\usage{{
{funcname}({default_argtext})
}}

\arguments{{
{item_text}
}}

\value{{{value_text}}}

a~  Package: {package_name}
Title: {package_title}
Version: {package_version}
Description: {package_description}
Depends: R (>= 3.0.2){package_depends}
Imports: {package_imports}
Suggests: {package_suggests}{package_rauthors}
License: {package_license}{package_copyright}
URL: {package_url}
BugReports: {package_issues}
Encoding: UTF-8
LazyData: true{vignette_builder}
KeepSource: true
a  # ignore JS config files/folders
node_modules/
coverage/
src/
lib/
.babelrc
.builderrc
.eslintrc
.npmignore
.editorconfig
.eslintignore
.prettierrc
.circleci
.github

# demo folder has special meaning in R
# this should hopefully make it still
# allow for the possibility to make R demos
demo/.*\.js
demo/.*\.html
demo/.*\.css

# ignore Python files/folders
setup.py
usage.py
setup.py
requirements.txt
MANIFEST.in
CHANGELOG.md
test/
# CRAN has weird LICENSE requirements
LICENSE.txt
^.*\.Rproj$
^\.Rproj\.user$
z% Auto-generated: do not edit by hand
\docType{{package}}
\name{{{package_name}-package}}
\alias{{{package_name}}}
\title{{{pkg_help_title}}}
\description{{
{pkg_help_description}
}}
\author{{
\strong{{Maintainer}}: {maintainer}
}}
a+  
dash_assert_valid_wildcards <- function (attrib = list("data", "aria"), ...)
{
    args <- list(...)
    validation_results <- lapply(names(args), function(x) {
        grepl(paste0("^(", paste0(attrib, collapse="|"), ")-[a-zA-Z0-9_-]+$"),
            x)
    })
    if (FALSE %in% validation_results) {
        stop(sprintf("The following props are not valid in this component: '%s'",
            paste(names(args)[grepl(FALSE, unlist(validation_results))],
                collapse = ", ")), call. = FALSE)
    }
    else {
        return(args)
    }
}
zQ
    wildcard_names = names(dash_assert_valid_wildcards(attrib = list({}), ...))
z9


\item{{...}}{{wildcards allowed have the form: `{}`}}
c                    t        |      }t        |      }t        |j                               }d}d}d}d}	d}
d}t	        d |D              r4t        |      }d}t        j                  |j                  dd            }d}dj                  d |D              }|d d  D ]i  }|j                  d      s|d	k(  r|j                  |       +|t        v s4|j                  |       t        j                  d
j                  ||              k |
dj                  d |D              z  }
|	dj                  d |D              z  }	t        j                  t!        ||       | |
|||	||||
      S )Nprops c              3   >   K   | ]  }|j                  d         yw-*Nendswith.0keys     f/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/dash/development/_r_components_generation.py	<genexpr>z(generate_class_string.<locals>.<genexpr>        
3#3<<
3   , ...r   z, wildcard_names, c              3   R   K   | ]  }d |vs|dvsdj                  |       ! yw)*)setProps'{}'Nformatr   ps     r   r   z(generate_class_string.<locals>.<genexpr>   s+      s!|@Uas   	'''r   zSWARNING: prop "{}" in component "{}" is an R keyword - REMOVED FROM THE R COMPONENTc              3   >   K   | ]  }d j                  |        ywz{}=NULLNr   r   s     r   r   z(generate_class_string.<locals>.<genexpr>         H!1!1!!4 Hr   c              3   j   K   | ]+  }|d k7  rdj                  |      ndj                  |       - yw)childrenz{0}={0}z{}=childrenNr   r   s     r   r   z(generate_class_string.<locals>.<genexpr>   s9      #  !J	M4H4H4KK#s   13)
funcnamenamedefault_argtext	wildcardswildcard_declarationdefault_paramtextproject_shortname
prop_nameswildcard_namespackage_name)snake_case_to_camel_caser   listkeysanyget_wildcards_rwildcard_templater   replacejoinr   remover   warningswarnr_component_stringformat_fn_name)r&   r   r+   prefixr.   	prop_keysr(   r)   r-   r*   r'   accepted_wildcardsr,   items                 r   generate_class_stringr@      s   +,=>L &EUZZ\"IINO

3
33,Y7	077&&tR0 
 ,  "+ J
 ! 
==$*"4T"ZT"MM6&t$	
 tyy Hi HHHO  ##  
 $$-'1++%! %      c                    t         j                  j                  dt        j                                t        j                  |      }t        |dg       t        |dg       z   }| j                  d      }t        |      }t        j                  |      }g }g }t        |      dkD  rt        t        |            D ]  }	||	   }
|
d   }t        |
      }d|v r|j                  d	      d   }nd
j                  |      }d|v rdj                  |      }d}ndj                  |      }d}|t         j                  |||||||      gz  }dj#                  |      } nit        |      dk(  r[|d   }	|	d   }t        |	      }d|v rdj                  |      }d}ndj                  |      }d}t$        j                  ||||||      }dj#                  ||t&        g      }|S )aC  Dynamically generate R function to supply JavaScript and CSS dependency
    information required by the dash package for R.

    Parameters
    ----------
    project_shortname = component library name, in snake case

    Returns
    -------
    function_string = complete R function code to provide component features
    r   _js_dist	_css_distversion)rpkgnamer   relative_package_pathdash_.{}cssr   NULL)dep_nameproject_verrF   r+   script_namecss_nameasync_or_dynamicz,
)r+   rN   rF   rO   rP   rQ   r	   )syspathinsertosgetcwd	importlibimport_modulegetattrgetr/   frame_open_templater   lenrangeget_async_typesplitframe_element_templater6   frame_body_templateframe_close_template)pkg_datar+   modalldistrN   rF   function_frame_openfunction_framefunction_frame_bodydepcurr_deprpprQ   rM   rP   rO   function_strings                    r   generate_js_metadatarm      s    HHOOAryy{#

!
!"3
4Cc:r*WS+r-JJG,,y)K'(9:H .44h4GN 7|aW& 	=Cs|H23C-h7#~99S>!,;;'89|!==-$$mmC0!&--% +%&7 +%%5 . 
 
N #(**^"<;	=< 
W	aj)*)#.C<}}S)H K --,KH188/##- 9 
 gg	13GHO rA   c                     d}| j                         D ]g  }|dv s| |   }t        |t              s dj                  |j	                               }nt        |      j                         }dj                  ||      }i |S )Nr	   )asyncdynamicr   z	, {} = {})r1   
isinstanceboolr   lowerstrupper)ri   rQ   r   keyvals       r   r^   r^   V  sz    xxz ?&&XFfd+v||~6V**,*11#v>? rA   c                 4    | dk(  r|S dj                  | |      S )Nr	   z
\{}{{
{}}}r   )tagcodes     r   wraprz   e  s!    
by  d++rA   c                 4   t        ||       }|dz   }d}d}d}	d}
d}t        j                               }t        d |D              rt	        |      }
d}|dd D ]2  }|j                  d      s|t        v s|dk(  s"|j                  |       4 |d	j                  d
 |D              z  }|	dj                  fd|D              z  }	t        j                  dd|      }t        j                  dd|	      }	d|v r"|j                  d      d   j                         }|dk(  r||z  }|	t        j                  |
      z  }	t        j                   j                  d|      }t#        |dd      5 }|j%                  t&        j                  || t)        j*                  |dd      |	||j-                  dd                   ddd       |d|v r|j/                  d      }|D cg c]  }|j/                  d      |k(  s| c}xs dgd   }d}|rnd|j                         v r[|t1        dt1        |j/                  d      rdnd|d               z  }t#        |d d      5 }|j%                  |dz          ddd       yyyyy# 1 sw Y   xY wc c}w # 1 sw Y   yxY w)!a  Write R documentation file (.Rd) given component name and properties.

    Parameters
    ----------
    name = the name of the Dash component for which a help file is generated
    props = the properties of the component
    description = the component's description, inserted into help file header
    prefix = the DashR library prefix (optional, can be a blank string)
    rpkg_data = package metadata (optional)

    Returns
    -------
    writes an R help file to the man directory for the generated R package
    z.Rdr	   zQnamed list of JSON elements corresponding to React.js properties and their valuesc              3   >   K   | ]  }|j                  d         ywr   r   r   s     r   r   z"write_help_file.<locals>.<genexpr>  r   r   r   Nr   r   r   c              3   >   K   | ]  }d j                  |        ywr!   r   r   s     r   r   z"write_help_file.<locals>.<genexpr>  r"   r   z

c              3   n   K   | ],  }d j                  |t        |   d         |   d          . yw)z\item{{{}}}{{{}{}}}typedescriptionN)r   print_r_type)r   r   r   s     r   r   z"write_help_file.<locals>.<genexpr>  sD        	%%|E!HV,-uQx/F	
s   25z(?<!\\)%z\%z**Example Usage**r   manwutf-8encoding<   F)widthbreak_long_words
 )r%   r&   r'   	item_text
value_textr   
r_examplesr&   ry   examplesdontrunza+)r;   r0   r1   r2   r3   r   r   r7   r6   resubr_   rstripwildcard_help_templater   rU   rS   openwritehelp_stringtextwrapfillr5   rZ   rz   )r&   r   r   r<   	rpkg_datar%   	file_namer(   r'   r   r>   r   r=   r?   	file_pathfexethe_exresultfas    `                   r   write_help_filer   k  s    fd+H5 IIOI eJUZZ\"I

3
33,Y7	 ! #==$*"4
8JT"# tyy Hi HHHO  	  I &&e[9K{E95I k)!''(;<Q?FFHG9$+223EFF	 UI.I	iw	/ 
1	! (#2! $%'//c:  		

 !:]]<( >AEE&MX$=1>H4&!Lf-d&**Y"7YRP F i8 (B$'( ( .6	 ";
 
 ?( (s%   +AI=J	9J	J=JJc                 v   t        |      }t        | ||||       d}t        | |||      }t        ||       dz   }t        j
                  j                  d|      }	t        |	dd      5 }
|
j                  |       |
j                  |       d d d        t        dj                  |             y # 1 sw Y   $xY w)	Nr   %# AUTO GENERATED FILE - DO NOT EDIT

.RRr   r   r   zGenerated {})r   r   r@   r;   rU   rS   r6   r   r   printr   )r&   r   r   r+   r<   r   import_stringclass_stringr   r   r   s              r   write_class_filer     s     &E D%fi@=M(u6GPLvt,t3IS),I	iw	/ 1		 
.

	
*+	 s   )#B//B8c                    t        | |      }d}t        j                  j                  d      st        j                  d       t        j                  j                  d|      }t        |dd      5 }|j                  |       |r|j                  t               ddd       t        j                  j                  d      rt        j                  d       t        j                  d       t        j                  |      D ]  \  }}}	|	D ]  }
t        j                  j                  |
      d	   }|d
v r*t        j                  j                  t        j                  j                  dt        j                  j                  ||                  }t        j                  j                  |      st        j                  |       t        j                  t        j                  j                  ||
      |         y# 1 sw Y   cxY w)zWrite an internal (not exported) R function to return all JS
    dependencies as required by dash.

    Parameters
    ----------
    project_shortname = hyphenated string, e.g. dash-html-components

    Returns
    -------
    )rc   r+   
internal.Rr   r   r   r   Nz	inst/depsr   )z.pyz.pycz.jsonz
inst/deps/)rm   rU   rS   existsmakedirsr6   r   r   wildcard_helpershutilrmtreewalksplitextrelpathcopy)rc   r+   has_wildcardsrl   r   r   r   rel_dirname_	filenamesfilename	extensiontarget_dirnames                r   write_js_metadatar     s    +->O I 77>>#
CS),I	iw	/ %1	 GGO$% 
ww~~k"k"KK%'WW->%? M!Q	! 	MH((215I44WW\\ "''//+?P"QN 77>>.1N+KK[(;^L	MM% %s   2)G<<Hc                    t        |      }d}	d}
| j                  d      }||j                  d      r"|j                  d| j                  dd            }|j                  d      r"|j                  d| j                  dd            }|j                  d      rFdj                  |j                  dd            }	n$| j                  dd      }| j                  dd      }| j                  d	d
      }|r9d|j                  d      j	                         z   }t        j                  dd|      }|r6|j                  d      j	                         }t        j                  dd|      }|r6|j                  d      j	                         }t        j                  dd|      }d| v r| d   j                  dd      }nd}t        dt        j                         d| v r| j                  dd      }nd}t        dt        j                         | j                  d      }|j                  d      d   }|j                  d      d   dd }|j                  d      d   }|j                  dd      d   }| j                  d| j                  d            }d|vr0t        dt        j                         t        j                  d       |F|j                  d      r"dj                  |j                  dd            }
nd j                  |||      }
t        j                  j                  d!      s2t        j                  j                  d"      s| j                  d#d      }nJ| j                  d#d      d$z   }t        j                  j                  d!      st        j                   d"d!       d%}d}|j                  d      |j                  d      z   }t#        t$        |      }|r|D ]  }|d&j                  |      z  } t        j                  j'                  d'      r!d(}d)|vrd*|vr|d+z  }|j	                  d      }nd}t        j                  j)                  d,|d-z         }t+        | ||       t-        d.d/d01      5 }|j/                  |       |j/                  |       |j/                  |       ddd       t-        d2d/d01      5 }|j/                  t0               ddd       t2        j                  |||
|||||	|||3      } t-        d4d/d01      5 }!|!j/                  |        ddd       |s|j                  d      rat4        j                  ||j                  d      |j                  d      ||5      }"t-        |d6d01      5 }#|#j/                  |"       ddd       yyy# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w)7zGenerate documents for R package creation.

    Parameters
    ----------
    pkg_data
    rpkg_data
    project_shortname
    export_string
    package_depends
    package_imports
    package_suggests
    has_wildcards

    Returns
    -------
    r	   r&   Npkg_help_titler   pkg_help_descriptionpkg_copyrightz
Copyright: {}rE   z0.0.1r   ,z
(,(?![ ]))bugsurlzGWarning: a URL for bug reports was not provided. Empty string inserted.)filehomepagez@Warning: a homepage URL was not provided. Empty string inserted.authorz <r   r   r      
maintainer<zError, aborting R package generation: R packages require a properly formatted author field or installation will fail. Please include an email address enclosed within < > brackets in package.json. pkg_authorsz
Authors@R: {}zD
Authors@R: person("{}", "{}", role = c("aut", "cre"), email = "{}")LICENSEzLICENSE.txtlicensez + file LICENSEr   z
import({})
	vignettesz
VignetteBuilder: knitrknitr	rmarkdownz, knitr, rmarkdownr   z-package.Rd	NAMESPACEzw+r   r   z.Rbuildignore)r.   package_titlepackage_descriptionpackage_versionpackage_rauthorspackage_dependspackage_importspackage_suggestspackage_licensepackage_copyrightpackage_urlpackage_issuesvignette_builderDESCRIPTION)r.   r   r   lib_namer   r   )r/   rZ   r   striplstripr   r   r   rR   stderrr_   rsplitexitrU   rS   isfilesymlinkfilterrr   r   r6   r   r   r   rbuild_ignore_stringdescription_templatepkghelp_stub)$rc   r   r+   export_stringr   r   r   r   r.   r   r   r   r   r   r   r   r   package_authorpackage_author_namepackage_author_emailpackage_author_fnpackage_author_lnr   r   r   packages_stringrpackage_listrpackager   pkghelp_stub_pathr   f2description_stringf3pkghelpf4s$                                       r   generate_rpkgr     s   < ,,=>L||F#H==)*%MM (,,}b"AM ==/0"+--&]B(G# ==) 1 8 8or2!
 !]B7&ll="=ll9g6O !6!6s!;!B!B!DD&&oF)//4;;=&&oF+11#6==?66-7GH!&)--eR83	
 Xll:r2N	

 \\(+N(..t4Q7)//5a8"=+11#6q9+223:2>lHLL,BCJ
. E 	
 	=='077mR0   gmm!#46J  GGNN9%)F",,y"5",,y"58IIww~~i(JJ}i0=MO#))$//2G2G2MMM4/M% 	AH/66x@@O	A 
ww~~k"5**{BR/R 44/66t<UL=,HI
 h 1=A	k4'	2 !a			 !
 
otg	6 '"
%&' .44!#/')'')'+%) 5   
mTG	4 %
#$% ==/0")))(}}-=>%.]]3I%J!% * G 'w? "2!" " 1 7! !
' '&% %" "s0   94V!V-V9W!V*-V69WWc                 f    | j                  d      }|d   dj                  d |dd  D              z   S )Nr   r   r	   c              3   <   K   | ]  }|j                           y w)N)
capitalize)r   r   s     r   r   z+snake_case_to_camel_case.<locals>.<genexpr>  s     8Q!,,.8s   r   )r_   r6   )
namestringss     r   r/   r/     s6    AQ4"''8!AB%8888rA   c                 f    | r| t        |      z   S t        |d   j                         |dd  z         S )Nr   r   )r/   rs   )r<   r&   s     r   r;   r;     s6    0666#DGMMOd12h$>??rA   c	           
          t        ||      }
d}|j                         D ]  }t        d |d   D              sd} n t        ||| |
||||       y )NFc              3   >   K   | ]  }|j                  d         ywr   r   r   s     r   r   z#generate_exports.<locals>.<genexpr>  s     Ecs||D!Er   r   T)make_namespace_exportsvaluesr2   r   )r+   
componentsmetadatarc   r   r<   r   r   r   kwargsr   r   component_datas                r   generate_exportsr    sj     +:v>M M"//+ E^G-DEE M 	rA   c                    d}| D ]I  }|j                  d      rt        |      t        vs't        |      dvs5|dj                  ||      z  }K g }ddg| D cg c]  }dj                  ||       c}z   }g }t	        j
                  d      D ]=  }|j                  d	      s||vs|t        j                  j                  d|      gz  }? |D ]G  }t        |d
d      5 }|j                         }	t        j                  dd|	t        j                        }	|	j                  dd      j                  dd      }	t        j                  dd|	      }	t        j                  dd|	      }	t        |	      dz   }
t        |	      |
k  rHt        |	      }
t        j                  dd|	      }	t        j                  dd|	      }	t        |	      |
k  rHt        j                  d|	      }|D ]&  }|d   }|d   dk7  s||vs|j!                  |       ( 	 d d d        J |dj                  d |D              z  }|S c c}w # 1 sw Y   wxY w)Nr	   r   )r   r$   zexport({}{})
zutils.Rr   z{}{}.Rr   r   rr   r   z#.*$)flagsr   r   z'([^'\\]|\\'|\\[^'])*'z''z"([^"\\]|\\"|\\[^"])*"z""r   z\(([^()]|\(\))*\)z()z\{([^{}]|\{\})*\}rJ   z6([^A-Za-z0-9._]|^)([A-Za-z0-9._]+)\s*(=|<-)\s*functionr   rI   c              3   >   K   | ]  }d j                  |        yw)z
export({})Nr   )r   functions     r   r   z)make_namespace_exports.<locals>.<genexpr>L  s     T|228<Tr   )r   rt   r   r   rU   listdirrS   r6   r   readr   r   Mr5   r\   findallappend)r  r<   r   	component	rfilelistomitlistfnlistscriptrfiler  prev_lenmatchesmatchfns                 r   r  r    sK   M H	""4(Ij0I&>>-44VYGGMH I<(<F,/8	*, H F**S/ 5??4 V8%;"'',,sF344I5  !&%w/  	&6A vr1BDD1A 		$$,,T37A 0$:A0$:A
 1vzHa&8#q6FF/q9FF/q9 a&8# jjIG
 ! &1Xa5C<Bf$4MM"%	&9 	&  	&!&F TYYTVTTTM[, 	&  	&s%   H9#C+H>(H>8H>=H>>I	c                 h      fd}t        d d d d d d d d	  fd
 fd fd fd||      S )z8Mapping from the PropTypes js type object to the R type.c            
          dj                  dj                  d  d   D              dj                  dj                  d  d   j                         D                          S )Nz lists containing elements {}.
{}r   c              3   >   K   | ]  }d j                  |        yw)r   Nr   r   ts     r   r   z;get_r_prop_types.<locals>.shape_or_exact.<locals>.<genexpr>U  s     E1fmmA&Er   valuez+Those elements have the following types:
{}r   c           
   3   h   K   | ]*  \  }}t        |||d    |j                  dd      d       , yw)requiredr   r	   r   )	prop_nametype_objectr(  r   
indent_numN)create_prop_docstring_rrZ   )r   r)  props      r   r   z;get_r_prop_types.<locals>.shape_or_exact.<locals>.<genexpr>W  sG      	 (	4 ,"+$(!%j!1$(HH]B$?#$ 	s   02)r   r6   itemsr*  s   r   shape_or_exactz(get_r_prop_types.<locals>.shape_or_exactS  sd    299IIEG0DEE:AA		 	 ,7w+?+E+E+G	 	
 	
rA   c                       y)Nzunnamed list r2  rA   r   <lambda>z"get_r_prop_types.<locals>.<lambda>e      rA   c                       y)Nlogicalr2  r2  rA   r   r3  z"get_r_prop_types.<locals>.<lambda>f  r4  rA   c                       y)Nnumericr2  r2  rA   r   r3  z"get_r_prop_types.<locals>.<lambda>g  r4  rA   c                       y)N	characterr2  r2  rA   r   r3  z"get_r_prop_types.<locals>.<lambda>h  r4  rA   c                       y)Nz
named listr2  r2  rA   r   r3  z"get_r_prop_types.<locals>.<lambda>i  r4  rA   c                       y)Nz9logical | numeric | character | named list | unnamed listr2  r2  rA   r   r3  z"get_r_prop_types.<locals>.<lambda>j  r4  rA   c                       y)Nzdash componentr2  r2  rA   r   r3  z"get_r_prop_types.<locals>.<lambda>k  r4  rA   c                       y)Nz8a list of or a singular dash component, string or numberr2  r2  rA   r   r3  z"get_r_prop_types.<locals>.<lambda>l  r4  rA   c                  X    dj                  dj                  d  d   D                    S )Nza value equal to: {}r   c              3   V   K   | ]!  }d j                  t        |d                # yw)rJ   r&  N)r   rt   r$  s     r   r   z5get_r_prop_types.<locals>.<lambda>.<locals>.<genexpr>o  s!     Qqdkk#aj/2Qs   ')r&  r   r6   r/  s   r   r3  z"get_r_prop_types.<locals>.<lambda>n  s*    +22IIQK<PQQ
 rA   c                  X    dj                  dj                  d  d   D                    S )NrJ   z | c              3   l   K   | ],  }t        |      d k7  rdj                  t        |             . yw)r	   rJ   N
get_r_typer   )r   subTypes     r   r   z5get_r_prop_types.<locals>.<lambda>.<locals>.<genexpr>s  s3      g&", Jw/0s   24r&  rA  r/  s   r   r3  z"get_r_prop_types.<locals>.<lambda>r  s.    dkkJJ *73 
 rA   c                  n    dt         d         dk7  rdj                  t         d               z   S dz   S )Nr0   r&  r	   z of {}srD  r/  s   r   r3  z"get_r_prop_types.<locals>.<lambda>z  sM     k'23r9   K,@!AB 
 	 rA   c                  >    dj                  t         d               S )Nz.list with named elements and values of type {}r&  )r   rE  r/  s   r   r3  z"get_r_prop_types.<locals>.<lambda>  s     IPP{7+,
 rA   )arrayrr   numberstringobjectr2   elementnodeenumunionarrayOfobjectOfshapeexact)dict)r*  r0  s   ` r   get_r_prop_typesrV  P  sL    
" $ "#O(O



 K& &rA   c                     | d   }t        |       }d| v r| d   s| j                  dd      dk(  ry||v r ||          }|S y)aP  
    Convert JS types to R types for the component definition
    Parameters
    ----------
    type_object: dict
        react-docgen-generated prop type dictionary
    is_flow_type: bool
    indent_num: int
        Number of indents to use for the docstring for the prop
    Returns
    -------
    str
        Python type string
    r&   r/  computedr   r	   r  )rV  rZ   )r*  is_flow_typer+  js_type_namejs_to_r_types	prop_types         r   rE  rE    s^     v&L$=Mk!
#??62&*4}$/M,/1	rA   c                 F    t        |       j                         }|r|dz  }|S )Nz. )rE  r   )typedata
typestrings     r   r   r     s(    H%002Jd
rA   c                    t        |||dz         }d|z  }d|v rdj                  || |||rd      S d      S d	j                  || |rd
j                  |      nd|dk7  rdj                  |      nd|rd      S 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
    r   )r*  rY  r+  z  r   z^{indent_spacing}- {name} ({is_required}): {description}. {name} has the following type: {type}r(  optional)indent_spacingr&   r   r   is_requiredz;{indent_spacing}- {name} ({type}{is_required}){description}z{}; r	   z: {}rD  )r)  r*  r(  r   r+  rY  r_type_namerb  s           r   r,  r,    s    2 lzTU~K J&N{44:F- '*2J 5; 5		
 9C 5; 5		
 IOO%+6V]];'B3>"3DV]];/""*J P  
 1; P  rA   c                 N    d}|dj                  d | D              z  }|dk(  rd}|S )Nr	   r   c              3   b   K   | ]'  }|j                  d       sdj                  |       ) yw)r   r   N)r   r   r   s     r   r   z"get_wildcards_r.<locals>.<genexpr>  s$     S!**TBR6==+Ss   //rL   )r6   )r=   r(   s     r   r3   r3     s2    ISYSSSIB	rA   )NN)Fr   )F)(rU   rR   r   rW   r   r   r8   _all_keywordsr   _py_components_generationr   r:   r[   r`   ra   rb   r   r   r   r   r   r4   r   r@   rm   r^   rz   r   r   r   r   r/   r;   r  r  rV  rE  r   r,  r3   r2  rA   r   <module>ri     s    	 
    	  % 4 , D D  
. " H&  =B[D
,X(B ,<3Mn{"B9@!H<~:z: MR/drA   