
    +j%                         S SK Jr  S SKJr  S SKJrJr  S SKJrJ	r	J
r
Jr  S SKJrJrJrJr  S SKJr  / SQrS r " S	 S
\R*                  5      r " S S\R*                  5      r " S S\5      rS\4S jrg)    )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                  h   [         R                  R                  SSSSS[         R                  R                  SSS9[         R                  R                  S	SS
SS
[         R                  R                  SSS9[         R                  R                  SSSSS[         R                  R                  SSS9/$ )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0L 	 		
 	))001 	 		
 	))00- 	 		
+ r    c                       \ rS rSr\S 5       r\  SS\S\S\S\S\	R                  R                  S	\	R                  4S
 jj5       rSrg)QuiverTextToSVGNode;   c                    [         R                  " SSSS[         R                  R                  SSSSS	9[         R                  R                  S
SSSSSS9[         R                  R                  S[         R                  R                  [         R                  R                  S5      SSSS9SSS9[         R                  R                  S[         Vs/ s H+  n[         R                  R                  U[        5       5      PM-     snSS9[         R                  R                  SSSSSSS9/[         R                  R                  5       /[         R                  R                  [         R                  R                   [         R                  R"                  /S[         R$                  " [         R&                  " S/S9SS9S9	$ s  snf ) 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,   modelz 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ImageDynamicCombo_ARROW_MODELSOptionr"   Intr   OutputHiddenauth_token_comfy_orgapi_key_comfy_org	unique_id
PriceBadgePriceBadgeDependsclsms     r!   define_schema!QuiverTextToSVGNode.define_schema<   s   yy)-+M		"I	    		""F!!    !!&[[77w/%	 8  P! " 
 %%ZghZgUVR__33A7M7OPZgh> & 
 "+/N  ?(T  		..		++		##
 //	BoC
 C	
B is   2F?Nr(   r3   r6   r+   r-   returnc                   #    [        USSS9  S nU(       aR  / nU H0  n[        XU   SS9I S h  vN nUR                  [        US95        M2     [	        U5      S:  a  [        S5      eU(       a  UR                  5       OS n	U	S	:X  a  S n	[        U [        S
SS9[        [        US   UU	UUR                  S5      UR                  S5      UR                  S5      S9S9I S h  vN n
U
R                   Vs/ s H'  n[        UR                  R                  S5      5      PM)     nn[         R"                  " [%        U5      5      $  GN Nds  snf 7f)NF   )strip_whitespace
min_length	image/png	mime_typeurlr0   z'Maximum 4 reference images are allowed.r)   z!/proxy/quiver/v1/svgs/generationsPOSTpathmethodr3   r   r   r   )r3   r(   r+   
referencesr   r   r   response_modeldatautf-8)r   r   appendr   len
ValueErrorstripr   r   r	   r
   getrq   r   svgencoder   
NodeOutputr   )r\   r(   r3   r6   r+   r-   rn   keyri   instructions_valresponseitemsvg_datas                r!   executeQuiverTextToSVGNode.execute   s=     	1E
J'4S3:O[fgg!!"3"<= ( :" !JKK3?<--/Tr!# @P,'Gn-%!IIm4ii(!&+=!>	
 
 CK--P-$GDHHOOG45-P}}S]++3 h
 Qs4   ,EEB3E"E#E5.E	#"EE	Er   )NN)__name__
__module____qualname____firstlineno__classmethodr^   strdictintr   rM   Typerz   r   __static_attributes__r   r    r!   r$   r$   ;   s{    D
 D
L  !-1',', ', 	',
 ', ++**', 
', ',r    r$   c            	       \    \ rS rSr\S 5       r\S\S\S\S\	R                  4S j5       rSrg	)
QuiverImageToSVGNode   c                    [         R                  " SSSS[         R                  R                  SSS9[         R                  R                  SS	S
SS9[         R
                  R                  S[         Vs/ s HN  n[         R
                  R                  U[         R                  R                  SSSSSSS9/[        5       Q5      PMP     snSS9[         R                  R                  SSSSSSS9/[         R                  R                  5       /[         R                  R                  [         R                  R                  [         R                  R                  /S[         R                   " [         R"                  " S/S9SS9S9	$ s  snf )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   r3   target_sizei      i   zSquare resize target in pixels.)r   r   r   r   r   z#Model to use for SVG vectorization.r4   r6   r   r7   r8   r9   r;   r=   r>   rA   )r   rK   rO   r   BooleanrP   rQ   rR   rS   r"   r   rT   rU   rV   rW   rX   rY   rZ   r[   s     r!   r^   "QuiverImageToSVGNode.define_schema   s   yy*.+L7   

  !I!	 !  %%  "/ "/A .. "$1,0(+(,,M-1 !- !"
 "8!9
 "/" B' & * "+/N  A)V  		..		++		##
 //	BqD
 D	
$s   3AFr   r3   r6   r`   c                   #    [        XSS9I S h  vN n[        U [        SSS9[        [	        US   [        US9U(       a  UOS UR                  S5      UR                  S	5      UR                  S
5      UR                  S5      S9S9I S h  vN nUR                   Vs/ s H'  n[        UR                  R                  S5      5      PM)     nn[        R                  " [        U5      5      $  N Ncs  snf 7f)Nre   rf   z$/proxy/quiver/v1/svgs/vectorizationsrj   rk   r3   rh   r   r   r   r   )r3   r.   r   r   r   r   r   ro   rr   )r   r   r   r	   r   r   rw   rq   r   rx   ry   r   rz   r   )	r\   r.   r   r3   r6   	image_urlr}   r~   r   s	            r!   r   QuiverImageToSVGNode.execute   s      33UU	 CFS,(Gn'I6'0)d!IIm4!IIm4ii(!&+=!>	
 
 CK--P-$GDHHOOG45-P}}S]++% V
 Qs4   C7C.A;C7C0C7.C2"C70C72C7r   N)r   r   r   r   r   r^   boolr   r   r   rz   r   r   r   r    r!   r   r      sW    E
 E
N , , 	,
 , 
, ,r    r   c                   L    \ rS rSr\S\\\R                        4S j5       r	Sr
g)QuiverExtensioni  r`   c                 "   #    [         [        /$ 7fN)r$   r   )selfs    r!   get_node_listQuiverExtension.get_node_list  s        
 	
s   r   N)r   r   r   r   r   listtyper   	ComfyNoder   r   r   r    r!   r   r     s)    
T$r||*<%= 
 
r    r   r`   c                     #    [        5       $ 7fr   )r   r   r    r!   comfy_entrypointr     s     s   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   rQ   r"   r   r$   r   r   r   r   r    r!   <module>r      sp     & /   *?!Hp,",, p,fc,2<< c,L
n 
 r    