cytoscape
Version:
Graph theory (a.k.a. network) library for analysis and visualisation
103 lines (77 loc) • 2.19 kB
JavaScript
import Emitter from '../emitter';
import define from '../define';
import * as is from '../is';
import Selector from '../selector';
let emitterOptions = {
qualifierCompare: function( selector1, selector2 ){
if( selector1 == null || selector2 == null ){
return selector1 == null && selector2 == null;
} else {
return selector1.sameText( selector2 );
}
},
eventMatches: function( cy, listener, eventObj ){
let selector = listener.qualifier;
if( selector != null ){
return cy !== eventObj.target && is.element( eventObj.target ) && selector.matches( eventObj.target );
}
return true;
},
addEventFields: function( cy, evt ){
evt.cy = cy;
evt.target = cy;
},
callbackContext: function( cy, listener, eventObj ){
return listener.qualifier != null ? eventObj.target : cy;
}
};
let argSelector = function( arg ){
if( is.string(arg) ){
return new Selector( arg );
} else {
return arg;
}
};
let elesfn = ({
createEmitter: function(){
let _p = this._private;
if( !_p.emitter ){
_p.emitter = new Emitter( emitterOptions, this );
}
return this;
},
emitter: function(){
return this._private.emitter;
},
on: function( events, selector, callback ){
this.emitter().on( events, argSelector(selector), callback );
return this;
},
removeListener: function( events, selector, callback ){
this.emitter().removeListener( events, argSelector(selector), callback );
return this;
},
removeAllListeners: function(){
this.emitter().removeAllListeners();
return this;
},
one: function( events, selector, callback ){
this.emitter().one( events, argSelector(selector), callback );
return this;
},
once: function( events, selector, callback ){
this.emitter().one( events, argSelector(selector), callback );
return this;
},
emit: function( events, extraParams ){
this.emitter().emit( events, extraParams );
return this;
},
emitAndNotify: function( event, eles ){
this.emit( event );
this.notify( event, eles );
return this;
}
});
define.eventAliasesOn( elesfn );
export default elesfn;