Saltar al contenido principal
Esta guía te ayuda a migrar del enfoque obsoleto de monkey-patching a la nueva API de extensión del menú contextual. El enfoque anterior de monkey-patching de LGraphCanvas.prototype.getCanvasMenuOptions y nodeType.prototype.getExtraMenuOptions está obsoleto:
Si ves advertencias de obsolescencia en la consola de tu navegador, tu extensión está usando la API antigua y deberías migrarla.

Migrar los menús del lienzo

Enfoque anterior (obsoleto)

El enfoque anterior modificaba el prototipo durante la configuración de la extensión:

Enfoque nuevo (recomendado)

El enfoque nuevo usa un hook dedicado de la extensión:

Diferencias clave

Migrar los menús de nodos

Enfoque anterior (obsoleto)

El enfoque anterior modificaba el prototipo del tipo de nodo:

Enfoque nuevo (recomendado)

El enfoque nuevo usa un hook de extensión dedicado:

Diferencias clave

Patrones comunes

Elementos de menú condicionales

Ambos enfoques admiten elementos condicionales, pero la nueva API es más limpia:

Agregar separadores

Los separadores se agregan de la misma forma en ambos enfoques:

Crear submenús

La forma recomendada de crear submenús es usar la propiedad declarativa submenu:
Este enfoque declarativo es más limpio y coincide con los patrones usados en todo el código base de ComfyUI.
Aunque también se admite un enfoque basado en callbacks con has_submenu: true y new LiteGraph.ContextMenu(), se prefiere la propiedad declarativa submenu por su mejor mantenibilidad.

Acceder al estado

Solución de problemas

Cómo identificar el uso de la API antigua

Busca estos patrones en tu código:

Entender las advertencias de obsolescencia

Si ves esta advertencia en la consola:
Tu extensión está usando el enfoque anterior y debes migrarla.

Verificar el éxito de la migración

Después de la migración:
  1. Elimina todas las modificaciones de prototipo de setup() y beforeRegisterNodeDef()
  2. Agrega los ganchos getCanvasMenuItems() y/o getNodeMenuItems()
  3. Verifica que tus elementos del menú sigan apareciendo correctamente
  4. Verifica que no aparezcan advertencias de obsolescencia en la consola

Ejemplo completo de migración

ANTES:
DESPUÉS:

Recursos adicionales