# Events

Registering and triggering events

## removeAllEventListeners() <a href="#removealleventlisteners" id="removealleventlisteners"></a>

Remove all registered events

## on(name, eventType, func) <a href="#on" id="on"></a>

Register event listener for a specific plugin

### Parameters

| Param     | Type       | Description                                              |
| --------- | ---------- | -------------------------------------------------------- |
| name      | `string`   | **Required -** The plugin which listens for the event.   |
| eventType | `string`   | **Required -** The event to listen for.                  |
| func      | `function` | **Required -** Function to call when event is triggered. |

### Example

```javascript
import {api, event} from 'writer'
api.events.on('myplugin', Event.DOCUMENT_CHANGED, (event) => {
   // React on event
})
```

## off(name, eventType) <a href="#off" id="off"></a>

Unregister event listener for a specific plugin.

### Parameters

| Param     | Type     | Description                                            |
| --------- | -------- | ------------------------------------------------------ |
| name      | `string` | **Required -** The plugin which listens for the event. |
| eventType | `string` | **Required -** The event to stop listening for.        |

### Example

```javascript
import {api, event} from 'writer'
api.events.off('myplugin', Event.DOCUMENT_CHANGED)
```

## trigger(name, eventType, \[data]) <a href="#trigger" id="trigger"></a>

Trigger an event of specified type with optional specified data

### Parameters

| Param     | Type     | Default | Description                                       |
| --------- | -------- | ------- | ------------------------------------------------- |
| name      | `string` |         | **Required -** Plugin name or originator of event |
| eventType | `string` |         | **Required -** Event type to trigger (mandatory)  |
| data      | `object` |         | Optional data structure to send with event        |

### Example

```javascript
import {api, event} from 'writer'
api.events.trigger(
   'myplugin',
   Event.DOCUMENT_CHANGED,
   {
      type: 'edit',
      action: 'edit',
      data: {
         key: 'strange things'
      }
   }
)
```

## \~\~triggerEvent() \~\~ <a href="#triggerevent" id="triggerevent"></a>

***Deprecated***

Use `api.events.trigger()` instead, deprecated. Deprecated since 2018-11-20.

## \~\~documentChanged() \~\~ <a href="#documentchanged" id="documentchanged"></a>

***Deprecated***

Use `api.events.trigger()` with `Event.DOCUMENT_CHANGED` instead. Deprecated since 2018-11-20.

## \~\~externalUpdate() \~\~ <a href="#externalupdate" id="externalupdate"></a>

***Deprecated***

Use `api.events.trigger()` with `Event.DOCUMENT_CHANGED_EXTERNAL` instead. Deprecated since 2018-11-20.

## \~\~documentReplaced() \~\~ <a href="#documentreplaced" id="documentreplaced"></a>

***Deprecated***

Use `api.events.trigger()` with `Event.DOCUMENT_REPLACED` instead. Deprecated since 2018-11-20.

## \~\~documentSaved() \~\~ <a href="#documentsaved" id="documentsaved"></a>

***Deprecated***

Use `api.events.trigger()` with `Event.DOCUMENT_SAVED` instead. Deprecated since 2018-11-20.

## \~\~documentSaveFailed() \~\~ <a href="#documentsavefailed" id="documentsavefailed"></a>

***Deprecated***

Use `api.events.trigger()` with `Event.DOCUMENT_SAVE_FAILED` instead. Deprecated since 2018-11-20.

## \~\~userActionSave() \~\~ <a href="#useractionsave" id="useractionsave"></a>

***Deprecated***

Use `api.events.trigger()` with `Event.USERACTION_SAVE` instead. Deprecated since 2018-11-20.

## \~\~userActionCancelSave() \~\~ <a href="#useractioncancelsave" id="useractioncancelsave"></a>

***Deprecated***

Use `api.events.trigger()` with `Event.USERACTION_CANCEL_SAVE` instead. Deprecated since 2018-11-20.

## \~\~userActionLock() \~\~ <a href="#useractionlock" id="useractionlock"></a>

***Deprecated***

Use `api.events.trigger()` with `Event.USERACTION_LOCK` instead. Deprecated since 2018-11-20.

## \~\~userActionUnlock() \~\~ <a href="#useractionunlock" id="useractionunlock"></a>

***Deprecated***

Use `api.events.trigger()` with `Event.USERACTION_UNLOCK` instead. Deprecated since 2018-11-20.

## \~\~languageChanged() \~\~ <a href="#languagechanged" id="languagechanged"></a>

***Deprecated***

Use `api.events.trigger()` with `Event.ARTICLELANGUAGE_CHANGED` instead. Deprecated since 2018-11-20.

## \~\~onDocumentStartSaving() \~\~ <a href="#ondocumentstartsaving" id="ondocumentstartsaving"></a>

***Deprecated***

Use `api.events.trigger()` with `"document:startsaving"` instead. Deprecated since 2018-11-20.
