eve/README.md
2022-03-28 10:54:20 +08:00

147 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Eve
Tiny event helping JavaScript library.
## eve(name, scope, varargs)
Fires event with given `name`, given scope and other parameters.
### Parameters
- _name_ **string**
name of the _event_, dot (`.`) or slash (`/`) separated
- _scope_ **object**
context for the event handlers
- _varargs_ **...**
the rest of arguments will be sent to event handlers
**Returns:** **object** array of returned values from the listeners. Array has two methods `.firstDefined()` and `.lastDefined()` to get first or last not `undefined` value.
## eve.listeners(name)
Internal method which gives you array of all event handlers that will be triggered by the given `name`.
### Parameters
- _name_ **string**
name of the event, dot (`.`) or slash (`/`) separated
**Returns:** **array** array of event handlers
## eve.separator(separator)
If for some reasons you dont like default separators (`.` or `/`) you can specify yours
here. Be aware that if you pass a string longer than one character it will be treated as
a list of characters.
### Parameters
- _separator_ **string**
new separator. Empty string resets to default: `.` or `/`.
## eve.on(name, f, name, f)
Binds given event handler with a given name. You can use wildcards “`*`” for the names:
```js
eve.on("*.under.*", f);
eve("mouse.under.floor"); // triggers f
```
Use <a href="#eve" class="dr-link">eve</a> to trigger the listener.
### Parameters
- _name_ **string**
name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards
- _f_ **function**
event handler function
- _name_ **array**
if you dont want to use separators, you can use array of strings
- _f_ **function**
event handler function
**Returns:** **function** returned function accepts a single numeric parameter that represents z-index of the handler. It is an optional feature and only used when you need to ensure that some subset of handlers will be invoked in a given order, despite of the order of assignment.
### Example:
```js
eve.on("mouse", eatIt)(2);
eve.on("mouse", scream);
eve.on("mouse", catchIt)(1);
```
This will ensure that `catchIt` function will be called before `eatIt`.
If you want to put your handler before non-indexed handlers, specify a negative value.
Note: I assume most of the time you dont need to worry about z-index, but its nice to have this feature “just in case”.
## eve.f(event, varargs)
Returns function that will fire given event with optional arguments.
Arguments that will be passed to the result function will be also
concated to the list of final arguments.
```js
el.onclick = eve.f("click", 1, 2);
eve.on("click", function (a, b, c) {
console.log(a, b, c); // 1, 2, [event object]
});
```
### Parameters
- _event_ **string**
event name
- _varargs_ **…**
and any other arguments
**Returns:** **function** possible event handler function
## eve.stop()
Is used inside an event handler to stop the event, preventing any subsequent listeners from firing.
## eve.nt([subname])
Could be used inside event handler to figure out actual name of the event.
### Parameters
- _subname_ **string**
subname of the event
**Returns:** **string** name of the event, if `subname` is not specified
or
**Returns:** **boolean** `true`, if current events name contains `subname`
## eve.nts()
Could be used inside event handler to figure out actual name of the event.
**Returns:** **array** names of the event
## eve.off(name, f)
Removes given function from the list of event listeners assigned to given name.
If no arguments specified all the events will be cleared.
### Parameters
- _name_ **string**
name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards
- _f_ **function**
event handler function
## eve.unbind()
See <a href="#eve.off" class="dr-link">eve.off</a>
## eve.once(name, f)
Binds given event handler with a given name to only run once then unbind itself.
```js
eve.once("login", f);
eve("login"); // triggers f
eve("login"); // no listeners
```
Use <a href="#eve" class="dr-link">eve</a> to trigger the listener.
### Parameters
- _name_ **string**
name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards
- _f_ **function**
event handler function
**Returns:** **function** same return function as <a href="#eve.on" class="dr-link">eve.on</a>
## eve.version()
Current version of the library.