
    +j%                         d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	m
Z
mZ d dlmZmZmZmZ d dlmZ g dZd Z G d	 d
ej                  Z G d dej                  Z G d de          ZdefdZdS )    )BytesIO)override)IOComfyExtension)QuiverImageObjectQuiverImageToSVGRequestQuiverSVGResponseQuiverTextToSVGRequest)ApiEndpointsync_opupload_image_to_comfyapivalidate_string)SVG)z	arrow-1.1zarrow-1.1-maxzarrow-previewc                  D   t           j                            dddddt           j        j        dd          t           j                            d	dd
dd
t           j        j        dd          t           j                            dddddt           j        j        dd          gS )z4Shared sampling inputs for all Arrow model variants.temperatureg      ?g        g       @g?z6Randomness control. Higher values increase randomness.T)defaultminmaxstepdisplay_modetooltipadvancedtop_pg?zNucleus sampling parameter.presence_penaltyg       zToken presence penalty.)r   FloatInputNumberDisplayslider     </home/wildlama/comfy/ComfyUI/comfy_api_nodes/nodes_quiver.py_arrow_sampling_inputsr"      s     	)0L 	 		
 		
 	)01 	 		
 		
 	)0- 	 		
 		
+ r    c                   x    e Zd Zed             Ze	 	 d
dededededej	        j
        dej        fd	            ZdS )QuiverTextToSVGNodec                    t          j        ddddt           j                            dddd	          t           j                            d
ddddd          t           j                            dt           j                            t           j                            d          ddd          dd          t           j                            dd t          D             d          t           j	                            dddddd          gt           j
                                        gt           j        j        t           j        j        t           j        j        gdt          j        t          j        dg          d           	  	        S )!Nr$   zQuiver Text to SVGpartner/image/Quiverz3Generate an SVG from a text prompt using Quiver AI.promptT z+Text description of the desired SVG output.)	multiliner   r   instructionsz(Additional style or formatting guidance.)r)   r   r   optionalr   reference_imagesimageref_r      )prefixr   r   z1Up to 4 reference images to guide the generation.)templater   r+   modelc                 f    g | ].}t           j                            |t                                /S r   )r   DynamicComboOptionr"   .0ms     r!   
<listcomp>z5QuiverTextToSVGNode.define_schema.<locals>.<listcomp>_   s2    hhhUVR_33A7M7O7OPPhhhr    z Model to use for SVG generation.optionsr   seed`Seed to determine if node should re-run; actual results are nondeterministic regardless of seed.r   r   r   control_after_generater   widgets9  
                (
                  $contains(widgets.model, "max")
                    ? {"type":"usd","usd":0.3575}
                    : $contains(widgets.model, "preview")
                      ? {"type":"usd","usd":0.429}
                      : {"type":"usd","usd":0.286}
                )
                
depends_onexpr	node_iddisplay_namecategorydescriptioninputsoutputshiddenis_api_nodeprice_badge)r   SchemaStringr   AutogrowTemplatePrefixImager4   _ARROW_MODELSIntr   OutputHiddenauth_token_comfy_orgapi_key_comfy_org	unique_id
PriceBadgePriceBadgeDependsclss    r!   define_schemaz!QuiverTextToSVGNode.define_schema<   s   y)-+M	"I	     	""F!!     !!&[77w//%	 8   P! " 
 
 %%hhZghhh> &  
 "+/N   ?(T  	.	+	#
 /	BBB  oC
 C
 C
 C	
r    Nr'   r2   r<   r*   r,   returnc                   K   t          |dd           d }|rjg }|D ]C}t          | ||         d           d {V }|                    t          |                     Dt	          |          dk    rt          d          |r|                                nd }	|	d	k    rd }	t          | t          d
d          t          t          |d         ||	||                    d          |                    d          |                    d                               d {V }
d |
j        D             }t          j        t          |                    S )NF   )strip_whitespace
min_length	image/png	mime_typeurlr/   z'Maximum 4 reference images are allowed.r(   z!/proxy/quiver/v1/svgs/generationsPOSTpathmethodr2   r   r   r   )r2   r'   r*   
referencesr   r   r   response_modeldatac                 \    g | ])}t          |j                            d                     *S zutf-8r   svgencoder7   items     r!   r9   z/QuiverTextToSVGNode.execute.<locals>.<listcomp>   .    PPP$GDHOOG4455PPPr    )r   r   appendr   len
ValueErrorstripr   r   r	   r
   getrs   r   
NodeOutputr   )r`   r'   r2   r<   r*   r,   rp   keyrk   instructions_valresponsesvg_datas               r!   executezQuiverTextToSVGNode.execute   s      	1EEEE
 	LJ' > >4S:J3:O[fggggggggg!!"3"<"<"<====:"" !JKKK3?I<--///Tr!!# @PPP,'Gn-%!IIm44ii((!&+=!>!>  	
 
 
 
 
 
 
 
 
 QP(-PPP}S]]+++r    )NN)__name__
__module____qualname__classmethodra   strdictintr   rS   Typer   r   r   r    r!   r$   r$   ;   s        D
 D
 [D
L  !-1', ',', ', 	',
 ', +*', 
', ', ', [', ', ',r    r$   c            	       V    e Zd Zed             Zededededej	        fd            Z
dS )QuiverImageToSVGNodec                 R   t          j        ddddt           j                            dd          t           j                            dd	d
d          t           j                            dd t          D             d          t           j                            dddddd          gt           j        	                                gt           j
        j        t           j
        j        t           j
        j        gdt          j        t          j        dg          d          	  	        S )Nr   zQuiver Image to SVGr&   z2Vectorize a raster image into SVG using Quiver AI.r-   zInput image to vectorize.)r   	auto_cropFz+Automatically crop to the dominant subject.T)r   r   r   r2   c                     g | ]T}t           j                            |t           j                            d ddddd          gt                                US )target_sizei      i   zSquare resize target in pixels.T)r   r   r   r   r   )r   r4   r5   rW   r   r"   r6   s     r!   r9   z6QuiverImageToSVGNode.define_schema.<locals>.<listcomp>   s~         .. "$1,0(+(,,M-1 !- !" !"
 "8!9!9
   r    z#Model to use for SVG vectorization.r:   r<   r   r=   r>   r?   rA   rC   rD   rG   )r   rQ   rU   r   Booleanr4   rV   rW   r   rX   rY   rZ   r[   r\   r]   r^   r_   s    r!   ra   z"QuiverImageToSVGNode.define_schema   sO   y*.+L7    
  !I!	 !   %%  "/  " B' &  * "+/N   A)V  	.	+	#
 /	BBB  qD
 D
 D
 D	
r    r   r2   r<   rb   c                   K   t          | |d           d {V }t          | t          dd          t          t	          |d         t          |          |r|nd |                    d          |                    d	          |                    d
          |                    d                               d {V }d |j        D             }t          j	        t          |                    S )Nrg   rh   z$/proxy/quiver/v1/svgs/vectorizationsrl   rm   r2   rj   r   r   r   r   )r2   r-   r   r   r   r   r   rq   c                 \    g | ])}t          |j                            d                     *S ru   rv   ry   s     r!   r9   z0QuiverImageToSVGNode.execute.<locals>.<listcomp>  r{   r    )r   r   r   r	   r   r   r   rs   r   r   r   )r`   r-   r   r2   r<   	image_urlr   r   s           r!   r   zQuiverImageToSVGNode.execute   s      33UUUUUUUUU	 CFSSS,(Gn'I666'0:))d!IIm44!IIm44ii((!&+=!>!>  	
 
 
 
 
 
 
 
 
 QP(-PPP}S]]+++r    N)r   r   r   r   ra   boolr   r   r   r   r   r   r    r!   r   r      s{        E
 E
 [E
N , , 	,
 , 
, , , [, , ,r    r   c                   L    e Zd Zedeeej                          fd            ZdS )QuiverExtensionrb   c                 "   K   t           t          gS N)r$   r   )selfs    r!   get_node_listzQuiverExtension.get_node_list  s         
 	
r    N)	r   r   r   r   listtyper   	ComfyNoder   r   r    r!   r   r     sE        
T$r|*<%= 
 
 
 X
 
 
r    r   rb   c                  "   K   t                      S r   )r   r   r    r!   comfy_entrypointr     s      r    N)ior   typing_extensionsr   comfy_api.latestr   r   comfy_api_nodes.apis.quiverr   r   r	   r
   comfy_api_nodes.utilr   r   r   r   comfy_extras.nodes_imagesr   rV   r"   r   r$   r   r   r   r   r    r!   <module>r      s         & & & & & & / / / / / / / /                       * ) ) ) ) )???! ! !Hp, p, p, p, p,", p, p, p,fc, c, c, c, c,2< c, c, c,L
 
 
 
 
n 
 
 
      r    