CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
switch-functions.mjs165 linesDownload Raw Back to collection
1import * as is from '../is.mjs';2 3const elesfn = {};4 5function defineSwitchFunction( params ){6  return function(){7    let args = arguments;8    let changedEles = [];9 10    // e.g. cy.nodes().select( data, handler )11    if( args.length === 2 ){12      let data = args[0];13      let handler = args[1];14      this.on( params.event, data, handler );15    }16 17    // e.g. cy.nodes().select( handler )18    else if( args.length === 1 && is.fn(args[0]) ){19      let handler = args[0];20      this.on( params.event, handler );21    }22 23    // e.g. cy.nodes().select()24    // e.g. (private) cy.nodes().select(['tapselect'])25    else if( args.length === 0 || (args.length === 1 && is.array(args[0])) ){26      let addlEvents = args.length === 1 ? args[0] : null;27 28      for( let i = 0; i < this.length; i++ ){29        let ele = this[ i ];30        let able = !params.ableField || ele._private[ params.ableField ];31        let changed = ele._private[ params.field ] != params.value;32 33        if( params.overrideAble ){34          let overrideAble = params.overrideAble( ele );35 36          if( overrideAble !== undefined ){37            able = overrideAble;38 39            if( !overrideAble ){ return this; } // to save cycles assume not able for all on override40          }41        }42 43        if( able ){44          ele._private[ params.field ] = params.value;45 46          if( changed ){47            changedEles.push( ele );48          }49        }50      }51 52      let changedColl = this.spawn( changedEles );53      changedColl.updateStyle(); // change of state => possible change of style54      changedColl.emit( params.event );55 56      if( addlEvents ){57        changedColl.emit( addlEvents );58      }59    }60 61    return this;62  };63}64 65function defineSwitchSet( params ){66  elesfn[ params.field ] = function(){67    let ele = this[0];68 69    if( ele ){70      if( params.overrideField ){71        let val = params.overrideField( ele );72 73        if( val !== undefined ){74          return val;75        }76      }77 78      return ele._private[ params.field ];79    }80  };81 82  elesfn[ params.on ] = defineSwitchFunction( {83    event: params.on,84    field: params.field,85    ableField: params.ableField,86    overrideAble: params.overrideAble,87    value: true88  } );89 90  elesfn[ params.off ] = defineSwitchFunction( {91    event: params.off,92    field: params.field,93    ableField: params.ableField,94    overrideAble: params.overrideAble,95    value: false96  } );97}98 99defineSwitchSet( {100  field: 'locked',101  overrideField: function( ele ){102    return ele.cy().autolock() ? true : undefined;103  },104  on: 'lock',105  off: 'unlock'106} );107 108defineSwitchSet( {109  field: 'grabbable',110  overrideField: function( ele ){111    return ele.cy().autoungrabify() || ele.pannable() ? false : undefined;112  },113  on: 'grabify',114  off: 'ungrabify'115} );116 117defineSwitchSet( {118  field: 'selected',119  ableField: 'selectable',120  overrideAble: function( ele ){121    return ele.cy().autounselectify() ? false : undefined;122  },123  on: 'select',124  off: 'unselect'125} );126 127defineSwitchSet( {128  field: 'selectable',129  overrideField: function( ele ){130    return ele.cy().autounselectify() ? false : undefined;131  },132  on: 'selectify',133  off: 'unselectify'134} );135 136elesfn.deselect = elesfn.unselect;137 138elesfn.grabbed = function(){139  let ele = this[0];140  if( ele ){141    return ele._private.grabbed;142  }143};144 145defineSwitchSet( {146  field: 'active',147  on: 'activate',148  off: 'unactivate'149} );150 151defineSwitchSet( {152  field: 'pannable',153  on: 'panify',154  off: 'unpanify'155} );156 157elesfn.inactive = function(){158  let ele = this[0];159  if( ele ){160    return !ele._private.active;161  }162};163 164export default elesfn;165 
basant307/AI_Governance_Project · CoolFace