CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
events.mjs153 linesDownload Raw Back to collection
1import Emitter from '../emitter.mjs';2import define from '../define/index.mjs';3import * as is from '../is.mjs';4import Selector from '../selector/index.mjs';5 6let emitterOptions = {7  qualifierCompare: function( selector1, selector2 ){8    if( selector1 == null || selector2 == null ){9      return selector1 == null && selector2 == null;10    } else {11      return selector1.sameText( selector2 );12    }13  },14  eventMatches: function( ele, listener, eventObj ){15    let selector = listener.qualifier;16 17    if( selector != null ){18      return ele !== eventObj.target && is.element( eventObj.target ) && selector.matches( eventObj.target );19    }20 21    return true;22  },23  addEventFields: function( ele, evt ){24    evt.cy = ele.cy();25    evt.target = ele;26  },27  callbackContext: function( ele, listener, eventObj ){28    return listener.qualifier != null ? eventObj.target : ele;29  },30  beforeEmit: function( context, listener/*, eventObj*/ ){31    if( listener.conf && listener.conf.once ){32      listener.conf.onceCollection.removeListener( listener.event, listener.qualifier, listener.callback );33    }34  },35  bubble: function(){36    return true;37  },38  parent: function( ele ){39    return ele.isChild() ? ele.parent() : ele.cy();40  }41};42 43let argSelector = function( arg ){44  if( is.string(arg) ){45    return new Selector( arg );46  } else {47    return arg;48  }49};50 51let elesfn = ({52  createEmitter: function(){53    for( let i = 0; i < this.length; i++ ){54      let ele = this[i];55      let _p = ele._private;56 57      if( !_p.emitter ){58        _p.emitter = new Emitter( emitterOptions, ele );59      }60    }61 62    return this;63  },64 65  emitter: function(){66    return this._private.emitter;67  },68 69  on: function( events, selector, callback ){70    let argSel = argSelector(selector);71 72    for( let i = 0; i < this.length; i++ ){73      let ele = this[i];74 75      ele.emitter().on( events, argSel, callback );76    }77 78    return this;79  },80 81  removeListener: function( events, selector, callback ){82    let argSel = argSelector(selector);83 84    for( let i = 0; i < this.length; i++ ){85      let ele = this[i];86 87      ele.emitter().removeListener( events, argSel, callback );88    }89 90    return this;91  },92 93  removeAllListeners: function(){94    for( let i = 0; i < this.length; i++ ){95      let ele = this[i];96 97      ele.emitter().removeAllListeners();98    }99 100    return this;101  },102 103  one: function( events, selector, callback ){104    let argSel = argSelector(selector);105 106    for( let i = 0; i < this.length; i++ ){107      let ele = this[i];108 109      ele.emitter().one( events, argSel, callback );110    }111 112    return this;113  },114 115  once: function( events, selector, callback ){116    let argSel = argSelector(selector);117 118    for( let i = 0; i < this.length; i++ ){119      let ele = this[i];120 121      ele.emitter().on( events, argSel, callback, {122        once: true,123        onceCollection: this124      } );125    }126  },127 128  emit: function( events, extraParams ){129    for( let i = 0; i < this.length; i++ ){130      let ele = this[i];131 132      ele.emitter().emit( events, extraParams );133    }134 135    return this;136  },137 138  emitAndNotify: function( event, extraParams ){ // for internal use only139    if( this.length === 0 ){ return; } // empty collections don't need to notify anything140 141    // notify renderer142    this.cy().notify( event, this );143 144    this.emit( event, extraParams );145 146    return this;147  }148});149 150define.eventAliasesOn( elesfn );151 152export default elesfn;153 
basant307/AI_Governance_Project · CoolFace