@antv/x6
Version:
JavaScript diagramming library that uses SVG and HTML for rendering
126 lines (125 loc) • 6.98 kB
TypeScript
import type { EventTarget, HandlerObject } from './store';
import { EventObject } from './object';
import { EventHandler } from './types';
export declare function get(type: string): EventHook;
export declare function register(type: string, hook: EventHook): void;
export declare function unregister(type: string): void;
export interface EventHook {
/**
* Indicates whether this event type should be bubbled when the `.trigger()`
* method is called; by default it is `false`, meaning that a triggered event
* will bubble to the element's parents up to the document (if attached to a
* document) and then to the window. Note that defining `noBubble` on an event
* will effectively prevent that event from being used for delegated events
* with `.trigger()`.
*/
noBubble?: boolean;
/**
* When defined, these string properties specify that a special event should
* be handled like another event type until the event is delivered.
*
* The `bindType` is used if the event is attached directly, and the
* `delegateType` is used for delegated events. These types are generally DOM
* event types, and should not be a special event themselves.
*/
bindType?: string;
/**
* When defined, these string properties specify that a special event should
* be handled like another event type until the event is delivered.
*
* The `bindType` is used if the event is attached directly, and the
* `delegateType` is used for delegated events. These types are generally DOM
* event types, and should not be a special event themselves.
*/
delegateType?: string;
/**
* The setup hook is called the first time an event of a particular type is
* attached to an element; this provides the hook an opportunity to do
* processing that will apply to all events of this type on the element.
*
* The `elem` is the reference to the element where the event is being
* attached and `eventHandle` is the event handler function. In most cases
* the `namespaces` argument should not be used, since it only represents the
* namespaces of the first event being attached; subsequent events may not
* have this same namespaces.
*
* This hook can perform whatever processing it desires, including attaching
* its own event handlers to the element or to other elements and recording
* setup information on the element using the `.data()` method. If the
* setup hook wants me to add a browser event (via `addEventListener` or
* `attachEvent`, depending on browser) it should return `false`. In all
* other cases, me will not add the browser event, but will continue all its
* other bookkeeping for the event. This would be appropriate, for example,
* if the event was never fired by the browser but invoked by `.trigger()`.
* To attach the me event handler in the setup hook, use the `eventHandle`
* argument.
*
*/
setup?: (elem: EventTarget, data: any, namespaces: string[], eventHandle: EventHandler<EventTarget, any>) => any | false;
/**
* The teardown hook is called when the final event of a particular type is
* removed from an element. The `elem` is the reference to the element where
* the event is being cleaned up. This hook should return `false` if it wants
* me to remove the event from the browser's event system (via
* `removeEventListener` or `detachEvent`). In most cases, the setup and
* teardown hooks should return the same value.
*
* If the setup hook attached event handlers or added data to an element
* through a mechanism such as `.data()`, the teardown hook should reverse
* the process and remove them. me will generally remove the data and events
* when an element is totally removed from the document, but failing to remove
* data or events on teardown will cause a memory leak if the element stays in
* the document.
*
*/
teardown?: (elem: EventTarget, namespaces: string[], eventHandle: EventHandler<EventTarget, any>) => any | false;
/**
* Each time an event handler is added to an element through an API such as
* `.on()`, me calls this hook. The `elem` is the element to which the event
* handler is being added, and the `handleObj` argument is as described in the
* section above. The return value of this hook is ignored.
*/
add?: (elem: EventTarget, handleObj: HandlerObject) => void;
/**
* When an event handler is removed from an element using an API such as
* `.off()`, this hook is called. The `elem` is the element where the handler
* is being removed, and the `handleObj` argument is as described in the
* section above. The return value of this hook is ignored.
*
*/
remove?: (elem: EventTarget, handleObj: HandlerObject) => void;
/**
* The handle hook is called when the event has occurred and me would
* normally call the user's event handler specified by `.on()` or another
* event binding method. If the hook exists, me calls it instead of that
* event handler, passing it the event and any data passed from `.trigger()`
* if it was not a native event. The `elem` argument is the DOM element being
* handled, and `event.handleObj` property has the detailed event information.
*
*/
handle?: (elem: EventTarget, event: EventObject, ...args: any[]) => void;
/**
* Called when the `.trigger()` method is used to trigger an event for the
* special type from code, as opposed to events that originate from within
* the browser. The `elem` argument will be the element being triggered, and
* the `event` argument will be a `EventObject` object constructed from the
* caller's input. At minimum, the event type, data, namespace, and target
* properties are set on the event. The data argument represents additional
* data passed by `.trigger()` if present.
*
*/
trigger?: (elem: EventTarget, event: EventObject, data: any) => any | false;
/**
* When the `.trigger()` method finishes running all the event handlers for
* an event, it also looks for and runs any method on the target object by
* the same name unless of the handlers called `event.preventDefault()`. So,
* `.trigger("submit")` will execute the `submit()` method on the element if
* one exists. When a `preventDefault` hook is specified, the hook is called
* just prior to checking for and executing the element's default method. If
* this hook returns the value `false` the element's default method will be
* called; otherwise it is not.
*/
preventDefault?: (elem: EventTarget, event: EventObject, data: any) => any | false;
preDispatch?: (elem: EventTarget, event: EventObject) => void | false;
postDispatch?: (elem: EventTarget, event: EventObject) => void;
}