o
    ic                     @   sh   d dl Z d dlmZ d dlmZmZ d dlZd dlZG dd dej	Z
G dd deZdefd	d
ZdS )    N)override)ComfyExtensionioc                   @   s.   e Zd Zedd ZeddejfddZdS )	TextEncodeZImageOmnic                 C   s   t jdddt jdt jjdddt jjddddt jjd	ddd
t jjdddt jjdddt jjdddt jjdddgt j	
 gdS )Nr   zadvanced/conditioningTclipimage_encoder)optionalprompt)	multilinedynamic_promptsauto_resize_images)defaultadvancedvaeimage1image2image3)node_idcategoryis_experimentalinputsoutputs)r   SchemaClipInput
ClipVisionStringBooleanVaeImageConditioningOutput)cls r#   7/mnt/c/Users/fbmor/ComfyUI/comfy_extras/nodes_zimage.pydefine_schema	   s    
z"TextEncodeZImageOmni.define_schemaNTreturnc	                 C   s  g }	t tdd |||g}
g }d }t|
dkr-dg}|dgt|
d  7 }|dg7 }d}g }t|
D ]_\}}|d urC||| |d ur|r|d	d}td
}t	||j
d |j
d   }t|j
d | d d }t|j
d | d d }tj|||dddd	}|	|| q3|j||d}||}g }|D ]}|j|dd}||}||d d  qt|	dkrtj|d|	idd}t|dkrtj|d|idd}t|dkrtj|d|idd}t|S )Nc                 S   s   | d uS Nr#   )ar#   r#   r$   <lambda>!   s    z.TextEncodeZImageOmni.execute.<locals>.<lambda>r   z!<|im_start|>user
<|vision_start|>z<|vision_end|><|vision_start|>   z<|vision_end|><|im_end|>zA<|vision_end|>{}<|im_end|>
<|im_start|>assistant
<|vision_start|>i         g       @   areadisabled)llama_templatez{}reference_latentsT)appendclip_vision_outputsreference_latents_text_embeds)listfilterlen	enumerater3   encode_imagemovedimintmathsqrtshaperoundcomfyutilscommon_upscaleencodetokenizeencode_from_tokens_schedulednode_helpersconditioning_set_valuesr   
NodeOutput)r"   r   r	   r   r   r   r   r   r   ref_latentsimagesprompt_listtemplateencoded_imagesiimagesamplestotalscale_bywidthheighttokensconditioningextra_text_embedsptext_embedsr#   r#   r$   execute   sJ   



zTextEncodeZImageOmni.execute)NTNNNN)__name__
__module____qualname__classmethodr%   r   rI   r[   r#   r#   r#   r$   r      s
    
r   c                   @   s(   e Zd Zedeeej  fddZdS )ZImageExtensionr&   c                    s   t gS r'   )r   )selfr#   r#   r$   get_node_listP   s   zZImageExtension.get_node_listN)	r\   r]   r^   r   r6   typer   	ComfyNoderb   r#   r#   r#   r$   r`   O   s    r`   r&   c                      s   t  S r'   )r`   r#   r#   r#   r$   comfy_entrypointW   s   re   )rG   typing_extensionsr   comfy_api.latestr   r   r=   comfy.utilsrA   rd   r   r`   re   r#   r#   r#   r$   <module>   s    G