GT2/GT2-Android/node_modules/event-target-shim/lib/commons.js

72 lines
1.6 KiB
JavaScript

/**
* @author Toru Nagashima
* @copyright 2015 Toru Nagashima. All rights reserved.
* See LICENSE file in root directory for full license.
*/
"use strict";
/**
* Creates a unique key.
*
* @param {string} name - A name to create.
* @returns {symbol|string}
* @private
*/
var createUniqueKey = exports.createUniqueKey = (typeof Symbol !== "undefined" ?
Symbol :
function createUniqueKey(name) {
return "[[" + name + "_" + Math.random().toFixed(8).slice(2) + "]]";
});
/**
* The key of listeners.
*
* @type {symbol|string}
* @private
*/
exports.LISTENERS = createUniqueKey("listeners");
/**
* A value of kind for listeners which are registered in the capturing phase.
*
* @type {number}
* @private
*/
exports.CAPTURE = 1;
/**
* A value of kind for listeners which are registered in the bubbling phase.
*
* @type {number}
* @private
*/
exports.BUBBLE = 2;
/**
* A value of kind for listeners which are registered as an attribute.
*
* @type {number}
* @private
*/
exports.ATTRIBUTE = 3;
/**
* @typedef object ListenerNode
* @property {function} listener - A listener function.
* @property {number} kind - The kind of the listener.
* @property {ListenerNode|null} next - The next node.
* If this node is the last, this is `null`.
*/
/**
* Creates a node of singly linked list for a list of listeners.
*
* @param {function} listener - A listener function.
* @param {number} kind - The kind of the listener.
* @returns {ListenerNode} The created listener node.
*/
exports.newNode = function newNode(listener, kind) {
return {listener: listener, kind: kind, next: null};
};