CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
iteration.mjs156 linesDownload Raw Back to collection
1import * as is from '../is.mjs' ;2import zIndexSort from './zsort.mjs' ;3import * as util from '../util/index.mjs';4 5let elesfn = ({6  forEach: function( fn, thisArg ){7    if( is.fn( fn ) ){8      let N = this.length;9 10      for( let i = 0; i < N; i++ ){11        let ele = this[ i ];12        let ret = thisArg ? fn.apply( thisArg, [ ele, i, this ] ) : fn( ele, i, this );13 14        if( ret === false ){ break; } // exit each early on return false15      }16    }17 18    return this;19  },20 21  toArray: function(){22    let array = [];23 24    for( let i = 0; i < this.length; i++ ){25      array.push( this[ i ] );26    }27 28    return array;29  },30 31  slice: function( start, end ){32    let array = [];33    let thisSize = this.length;34 35    if( end == null ){36      end = thisSize;37    }38 39    if( start == null ){40      start = 0;41    }42 43    if( start < 0 ){44      start = thisSize + start;45    }46 47    if( end < 0 ){48      end = thisSize + end;49    }50 51    for( let i = start; i >= 0 && i < end && i < thisSize; i++ ){52      array.push( this[ i ] );53    }54 55    return this.spawn( array );56  },57 58  size: function(){59    return this.length;60  },61 62  eq: function( i ){63    return this[ i ] || this.spawn();64  },65 66  first: function(){67    return this[0] || this.spawn();68  },69 70  last: function(){71    return this[ this.length - 1 ] || this.spawn();72  },73 74  empty: function(){75    return this.length === 0;76  },77 78  nonempty: function(){79    return !this.empty();80  },81 82  sort: function( sortFn ){83    if( !is.fn( sortFn ) ){84      return this;85    }86 87    let sorted = this.toArray().sort( sortFn );88 89    return this.spawn( sorted );90  },91 92  sortByZIndex: function(){93    return this.sort( zIndexSort );94  },95 96  zDepth: function(){97    let ele = this[0];98    if( !ele ){ return undefined; }99 100    // let cy = ele.cy();101    let _p = ele._private;102    let group = _p.group;103 104    if( group === 'nodes' ){105      let depth = _p.data.parent ? ele.parents().size() : 0;106 107      if( !ele.isParent() ){108        return util.MAX_INT - 1; // childless nodes always on top109      }110 111      return depth;112    } else {113      let src = _p.source;114      let tgt = _p.target;115      let srcDepth = src.zDepth();116      let tgtDepth = tgt.zDepth();117 118      return Math.max( srcDepth, tgtDepth, 0 ); // depth of deepest parent119    }120  }121});122 123elesfn.each = elesfn.forEach;124 125const defineSymbolIterator = () => {126  const typeofUndef = typeof undefined;127  const isIteratorSupported = typeof Symbol != typeofUndef && typeof Symbol.iterator != typeofUndef;128 129  if (isIteratorSupported) {130    elesfn[Symbol.iterator] = function() {131      let entry = { value: undefined, done: false };132      let i = 0;133      let length = this.length;134 135      return {136        next: () => {137          if ( i < length ) {138            entry.value = this[i++];139          } else {140            entry.value = undefined;141            entry.done = true;142          }143 144          return entry;145        },146        [Symbol.iterator]: function() {147          return this;148        }149      };150    };151  }152};153defineSymbolIterator();154 155export default elesfn;156 
basant307/AI_Governance_Project · CoolFace