or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

arrays.mdassertions.mdcore.mddom.mdevents.mdindex.mdmath.mdobjects.mdstrings.md
tile.json

events.mddocs/

Event System

Comprehensive event handling system with listening, dispatching, and management capabilities for both DOM and custom events with cross-browser compatibility.

Capabilities

Event Listening

Functions for adding and managing event listeners.

/**
 * Adds event listener to element or event target
 * @param {EventTarget|goog.events.Listenable} src - Event source
 * @param {string|Array<string>} type - Event type(s)
 * @param {Function} listener - Event listener function
 * @param {boolean|Object=} opt_options - Capture flag or options object
 * @param {Object=} opt_handler - Object to bind 'this' to
 * @return {goog.events.Key} Listener key for removal
 */
goog.events.listen = function(src, type, listener, opt_options, opt_handler) {};

/**
 * Adds one-time event listener that removes itself after first trigger
 * @param {EventTarget|goog.events.Listenable} src - Event source
 * @param {string|Array<string>} type - Event type(s)
 * @param {Function} listener - Event listener function
 * @param {boolean|Object=} opt_options - Capture flag or options object
 * @param {Object=} opt_handler - Object to bind 'this' to
 * @return {goog.events.Key} Listener key for removal
 */
goog.events.listenOnce = function(src, type, listener, opt_options, opt_handler) {};

/**
 * Adds event listener using wrapper object
 * @param {EventTarget|goog.events.Listenable} src - Event source
 * @param {goog.events.EventWrapper} wrapper - Event wrapper
 * @param {Function} listener - Event listener function
 * @param {boolean=} opt_capt - Whether to use capture phase
 * @param {Object=} opt_handler - Object to bind 'this' to
 * @return {goog.events.Key} Listener key for removal
 */
goog.events.listenWithWrapper = function(src, wrapper, listener, opt_capt, opt_handler) {};

/**
 * Removes event listener
 * @param {EventTarget|goog.events.Listenable} src - Event source
 * @param {string|Array<string>} type - Event type(s)
 * @param {Function} listener - Event listener function
 * @param {boolean|Object=} opt_options - Capture flag or options object
 * @param {Object=} opt_handler - Object that was bound to
 * @return {boolean} True if listener was removed
 */
goog.events.unlisten = function(src, type, listener, opt_options, opt_handler) {};

/**
 * Removes event listener by key
 * @param {goog.events.Key} key - Listener key returned by listen
 * @return {boolean} True if listener was removed
 */
goog.events.unlistenByKey = function(key) {};

/**
 * Removes all event listeners from object
 * @param {Object=} opt_obj - Object to remove listeners from
 * @param {string=} opt_type - Event type to remove (all if not specified)
 * @param {boolean=} opt_capt - Whether to remove capture listeners
 * @return {number} Number of listeners removed
 */
goog.events.removeAll = function(opt_obj, opt_type, opt_capt) {};

Event Dispatching

Functions for creating and dispatching events.

/**
 * Dispatches event on target
 * @param {EventTarget|goog.events.Listenable} src - Event source
 * @param {string|Object|goog.events.Event} e - Event type, object, or event
 * @return {boolean} True if event was not cancelled
 */
goog.events.dispatchEvent = function(src, e) {};

/**
 * Fires listeners for specific event type on object
 * @param {Object} obj - Event target object
 * @param {string} type - Event type
 * @param {boolean} capture - Whether to fire capture listeners
 * @param {Object} eventObject - Event object to pass to listeners
 * @return {boolean} True if any listener returned false
 */
goog.events.fireListeners = function(obj, type, capture, eventObject) {};

/**
 * Gets total count of active listeners
 * @return {number} Total listener count
 */
goog.events.getTotalListenerCount = function() {};

/**
 * Tests if object has listeners for event type
 * @param {EventTarget|goog.events.Listenable} obj - Object to test
 * @param {string=} opt_type - Event type (any type if not specified)
 * @param {boolean=} opt_capture - Whether to check capture listeners
 * @return {boolean} True if has listeners
 */
goog.events.hasListener = function(obj, opt_type, opt_capture) {};

/**
 * Gets all listeners for object and type
 * @param {EventTarget|goog.events.Listenable} obj - Object to get listeners from
 * @param {string} type - Event type
 * @param {boolean} capture - Whether to get capture listeners
 * @return {Array<goog.events.Listener>} Array of listeners
 */
goog.events.getListeners = function(obj, type, capture) {};

Event Classes

Core event classes for creating and handling events.

/**
 * Basic event class for custom events
 * @param {string} type - Event type
 * @param {Object=} opt_target - Event target
 * @constructor
 */
goog.events.Event = function(type, opt_target) {};

/**
 * Event type string
 * @type {string}
 */
goog.events.Event.prototype.type;

/**
 * Event target object
 * @type {Object}
 */
goog.events.Event.prototype.target;

/**
 * Current event target during bubbling
 * @type {Object}
 */
goog.events.Event.prototype.currentTarget;

/**
 * Whether event propagation has been stopped
 * @type {boolean}
 */
goog.events.Event.prototype.propagationStopped_;

/**
 * Stops event propagation
 */
goog.events.Event.prototype.stopPropagation = function() {};

/**
 * Prevents default action
 */
goog.events.Event.prototype.preventDefault = function() {};

/**
 * Browser event wrapper that normalizes browser events
 * @param {Event} e - Native browser event
 * @param {EventTarget=} opt_currentTarget - Current target
 * @constructor
 * @extends {goog.events.Event}
 */
goog.events.BrowserEvent = function(e, opt_currentTarget) {};

/**
 * Native browser event object
 * @type {Event}
 */
goog.events.BrowserEvent.prototype.event;

/**
 * X coordinate of mouse event
 * @type {number}
 */
goog.events.BrowserEvent.prototype.clientX;

/**
 * Y coordinate of mouse event
 * @type {number}
 */
goog.events.BrowserEvent.prototype.clientY;

/**
 * Key code for keyboard events
 * @type {number}
 */
goog.events.BrowserEvent.prototype.keyCode;

/**
 * Whether Ctrl key was pressed
 * @type {boolean}
 */
goog.events.BrowserEvent.prototype.ctrlKey;

/**
 * Whether Alt key was pressed
 * @type {boolean}
 */
goog.events.BrowserEvent.prototype.altKey;

/**
 * Whether Shift key was pressed
 * @type {boolean}
 */
goog.events.BrowserEvent.prototype.shiftKey;

/**
 * Whether Meta key was pressed
 * @type {boolean}
 */
goog.events.BrowserEvent.prototype.metaKey;

/**
 * Event target implementation class
 * @constructor
 * @implements {goog.events.Listenable}
 */
goog.events.EventTarget = function() {};

/**
 * Dispatches event on this target
 * @param {string|Object|goog.events.Event} e - Event to dispatch
 * @return {boolean} True if not cancelled
 */
goog.events.EventTarget.prototype.dispatchEvent = function(e) {};

/**
 * Adds event listener to this target
 * @param {string} type - Event type
 * @param {Function} handler - Event handler
 * @param {boolean=} opt_capture - Use capture phase
 * @param {Object=} opt_handlerScope - Handler scope
 */
goog.events.EventTarget.prototype.addEventListener = function(type, handler, opt_capture, opt_handlerScope) {};

/**
 * Removes event listener from this target
 * @param {string} type - Event type
 * @param {Function} handler - Event handler
 * @param {boolean=} opt_capture - Use capture phase
 * @param {Object=} opt_handlerScope - Handler scope
 */
goog.events.EventTarget.prototype.removeEventListener = function(type, handler, opt_capture, opt_handlerScope) {};

Event Types and Constants

Standard event types and keyboard codes.

/**
 * Standard DOM event types
 * @enum {string}
 */
goog.events.EventType = {
  CLICK: 'click',
  RIGHTCLICK: 'rightclick', 
  DBLCLICK: 'dblclick',
  MOUSEDOWN: 'mousedown',
  MOUSEUP: 'mouseup',
  MOUSEOVER: 'mouseover',
  MOUSEOUT: 'mouseout',
  MOUSEMOVE: 'mousemove',
  MOUSEENTER: 'mouseenter',
  MOUSELEAVE: 'mouseleave',
  KEYPRESS: 'keypress',
  KEYDOWN: 'keydown',
  KEYUP: 'keyup',
  BLUR: 'blur',
  FOCUS: 'focus',
  DEACTIVATE: 'deactivate',
  FOCUSIN: 'focusin',
  FOCUSOUT: 'focusout',
  CHANGE: 'change',
  RESET: 'reset',
  SELECT: 'select',
  SUBMIT: 'submit',
  INPUT: 'input',
  PROPERTYCHANGE: 'propertychange',
  DRAGSTART: 'dragstart',
  DRAG: 'drag',
  DRAGENTER: 'dragenter',
  DRAGOVER: 'dragover',
  DRAGLEAVE: 'dragleave',
  DROP: 'drop',
  DRAGEND: 'dragend',
  TOUCHSTART: 'touchstart',
  TOUCHMOVE: 'touchmove',
  TOUCHEND: 'touchend',
  TOUCHCANCEL: 'touchcancel',
  BEFOREUNLOAD: 'beforeunload',
  CONTEXTMENU: 'contextmenu',
  ERROR: 'error',
  HELP: 'help',
  LOAD: 'load',
  LOSECAPTURE: 'losecapture',
  ORIENTATIONCHANGE: 'orientationchange',
  READYSTATECHANGE: 'readystatechange',
  RESIZE: 'resize',
  SCROLL: 'scroll',
  UNLOAD: 'unload'
};

/**
 * Keyboard key codes
 * @enum {number}
 */
goog.events.KeyCodes = {
  WIN_KEY_FF_LINUX: 0,
  MAC_ENTER: 3,
  BACKSPACE: 8,
  TAB: 9,
  NUM_CENTER: 12,
  ENTER: 13,
  SHIFT: 16,
  CTRL: 17,
  ALT: 18,
  PAUSE: 19,
  CAPS_LOCK: 20,
  ESC: 27,
  SPACE: 32,
  PAGE_UP: 33,
  PAGE_DOWN: 34,
  END: 35,
  HOME: 36,
  LEFT: 37,
  UP: 38,
  RIGHT: 39,
  DOWN: 40,
  PLUS_SIGN: 43,
  PRINT_SCREEN: 44,
  INSERT: 45,
  DELETE: 46,
  ZERO: 48,
  ONE: 49,
  TWO: 50,
  THREE: 51,
  FOUR: 52,
  FIVE: 53,
  SIX: 54,
  SEVEN: 55,
  EIGHT: 56,
  NINE: 57,
  A: 65,
  B: 66,
  C: 67,
  V: 86,
  X: 88,
  F1: 112,
  F2: 113,
  F3: 114,
  F4: 115,
  F5: 116,
  F6: 117,
  F7: 118,
  F8: 119,
  F9: 120,
  F10: 121,
  F11: 122,
  F12: 123
};

Usage Examples:

// Basic event listening
var button = goog.dom.getElement('myButton');
goog.events.listen(button, goog.events.EventType.CLICK, function(e) {
    console.log('Button clicked!');
    e.preventDefault(); // Prevent default action
});

// One-time event listener
goog.events.listenOnce(window, goog.events.EventType.LOAD, function() {
    console.log('Page loaded!');
});

// Multiple event types
goog.events.listen(element, [
    goog.events.EventType.MOUSEENTER,
    goog.events.EventType.MOUSELEAVE
], handleMouseEvent);

// Custom event target
var eventTarget = new goog.events.EventTarget();
goog.events.listen(eventTarget, 'custom-event', function(e) {
    console.log('Custom event fired:', e.data);
});

// Dispatch custom event
eventTarget.dispatchEvent(new goog.events.Event('custom-event'));

// Keyboard event handling
goog.events.listen(document, goog.events.EventType.KEYDOWN, function(e) {
    if (e.keyCode === goog.events.KeyCodes.ENTER) {
        console.log('Enter key pressed');
    }
});