| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | import defined from "./defined.js";import DeveloperError from "./DeveloperError.js";/** * A convenience object that simplifies the common pattern of attaching event listeners * to several events, then removing all those listeners at once later, for example, in * a destroy method. * * @alias EventHelper * @constructor * * * @example * const helper = new Cesium.EventHelper(); * * helper.add(someObject.event, listener1, this); * helper.add(otherObject.event, listener2, this); * * // later... * helper.removeAll(); * * @see Event */function EventHelper() {  this._removalFunctions = [];}/** * Adds a listener to an event, and records the registration to be cleaned up later. * * @param {Event} event The event to attach to. * @param {Function} listener The function to be executed when the event is raised. * @param {Object} [scope] An optional object scope to serve as the <code>this</code> *        pointer in which the listener function will execute. * @returns {EventHelper.RemoveCallback} A function that will remove this event listener when invoked. * * @see Event#addEventListener */EventHelper.prototype.add = function (event, listener, scope) {  //>>includeStart('debug', pragmas.debug);  if (!defined(event)) {    throw new DeveloperError("event is required");  }  //>>includeEnd('debug');  const removalFunction = event.addEventListener(listener, scope);  this._removalFunctions.push(removalFunction);  const that = this;  return function () {    removalFunction();    const removalFunctions = that._removalFunctions;    removalFunctions.splice(removalFunctions.indexOf(removalFunction), 1);  };};/** * Unregisters all previously added listeners. * * @see Event#removeEventListener */EventHelper.prototype.removeAll = function () {  const removalFunctions = this._removalFunctions;  for (let i = 0, len = removalFunctions.length; i < len; ++i) {    removalFunctions[i]();  }  removalFunctions.length = 0;};/** * A function that removes a listener. * @callback EventHelper.RemoveCallback */export default EventHelper;
 |