import * as is from '../is'; import Collection from '../collection'; let corefn = ({ // get a collection // - empty collection on no args // - collection of elements in the graph on selector arg // - guarantee a returned collection when elements or collection specified collection: function( eles, opts ){ if( is.string( eles ) ){ return this.$( eles ); } else if( is.elementOrCollection( eles ) ){ return eles.collection(); } else if( is.array( eles ) ){ if (!opts) { opts = {}; } return new Collection( this, eles, opts.unique, opts.removed ); } return new Collection( this ); }, nodes: function( selector ){ let nodes = this.$( function( ele ){ return ele.isNode(); } ); if( selector ){ return nodes.filter( selector ); } return nodes; }, edges: function( selector ){ let edges = this.$( function( ele ){ return ele.isEdge(); } ); if( selector ){ return edges.filter( selector ); } return edges; }, // search the graph like jQuery $: function( selector ){ let eles = this._private.elements; if( selector ){ return eles.filter( selector ); } else { return eles.spawnSelf(); } }, mutableElements: function(){ return this._private.elements; } }); // aliases corefn.elements = corefn.filter = corefn.$; export default corefn;