-
Notifications
You must be signed in to change notification settings - Fork 13
API_es
Este objeto expone tres métodos que se encargan de lanzar y gestionar los eventos usados en la comunicación entre los plugins y el núcleo. Estos son:
-
addMenuButton: es llamado al inicializar los plugins, lanza un evento de tipo "addMenuButton" que es escuchado en el componente
PlugginRibbony añade un botón al mismo con la configuración proporcionada como parámetro en formato JSON (texto, icono, etc.) para que pueda ser usado posteriormente. -
openConfig: es llamado cuando se quiere tener acceso al modal de configuración de los plugins más complejos. Funciona de manera asíncrona, ya que devuelve la referencia al
divsobre el que se desea pintar. Recibe dos parámetros, el nombre del plugin a cuyo modal se desea acceder y un booleano indicando si es la primera vez que se accede (necesario para el métodorenderdel plugin). Lanza un evento de tipo "openConfig" que es escuchado en el componentePluginConfigModaly que provoca que este se despligue. Una vez hecho, responde al evento proporcionando la referencia aldivantes mencionada. Normalmente, este método es llamado desde el componentePluginToolbaral pulsar en el botón de "abrir configuración" o al crear un plugin. Para implementar esto, se han usado promises. -
renderPlugin: es el método más utilizado y se usa para renderizar los plugins. Lanza un evento de tipo "render" que se escucha en
EditorAppy en función del parámetro "isUpdating", lanza una acción u otra para crear o actualizarunEditorBoxen el estado de la aplicación. Además, recibe como parámetros un JSON indicando el HTML que debe renderizar, la barra de herramientas del plugin, la configuración, su estado, un conjunto de identificadores (el que hace referencia al propioEditorBox, a su padre y a su contenedor) y una serie de parámetros iniciales que se desee que tenga elEditorBox(como posición o tamaño).
Este objeto expone un diccionario con todos los tipos de eventos usados además de cinco métodos, que son los encargados de lanzar y escuchar los eventos de una manera genérica.
Un evento tiene siempre una propiedad llamada emit que es una cadena de texto que lo identifica de manera unívoca con respecto al resto. Además, si se quiere poder contestar a ese evento, deberá tener una propiedad llamada answer que también es una cadena de texto que sirva para identificarlo de manera unívoca (es recomendable usar la misma que para emit añadiendo el sufijo "_back").
Los métodos expuestos en este objeto son:
-
emit: recibe dos parámetros, el nombre del evento que quiere lanzarse y un objeto que será añadido al mismo como payload. Con estos valores, crea el evento como un
CustomEventy lo lanza. -
listenEmission: recibe dos parámetros, el nombre del evento y una función que se ejecutará cuando este sea escuchado. Su función es añadir al objeto
windowel escuchador del evento. -
answer: hace la misma función que emit pero usa la propiedad
answerdel evento indicado en vez deemitpara crear el evento. -
listenAnswer: hace lo mismo que listenEmission con la particularidad de que la función recibida como parámetro para ser ejecutada al ser escuchado el evento no se ejecutará aquí, sino que se pasará como parámetro a cleanUpAndResolve y será esta la ejecutada. Además, se guarda la referencia a cleanUpAndResolve después de haberle pasado sus parámetros correspondientes para poder eliminar el escuchador del evento, como se verá a continuación.
-
cleanUpAndResolve: se encarga de quitar del objeto
windowel escuchador del evento de respuesta, ya que si no, podría ser añadido varias veces y esto podría llevar a fallos al lanzar la función asignada al evento varias veces. Para poder eliminarse, se ha de guardar la referencia exacta a la función asignada al evento, y esto hemos visto que se ha hecho ya en listenAnswer. Recibe tres parámetros, que son el nombre del evento inicialmente lanzado en answer, la función que se quiere que se ejecute al recibirse este evento y la propia instancia delCustomEventlanzado en answer con el payload proporcionado en ese método.
Hacer inaccesible la parte privada de la API