{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-markus/demos/visualizations/filedata.js"],"names":["FileIndex","files","walkTreeData","loadedModulesData","url","filter","edgeFilter","d","source","target","urlMap","Map","idCounter","tree","fileTree","id","set","current","db","each","eaFile","get","index","size","Number","label","name","relations","Object","values","System","loads","forEach","load","sourceNode","key","dependencies","dependency","depKey","normalizeSync","targetNode","console","log","push","hidden","match","nodes"],"mappings":";;;;;;AAAOA,e;;AACAC,W;;AAGEC,kB,iCAAAA,Y;;;;;;;;;;;uCAEaC,kD;;;;;;;;;;;;;;AANfH,oD;;;;;;;;;;;;;AACAC,gD;;;;;;;;;;;;;AAGEC,uD;;;;;;;AAEF,qBAAeC,iBAAf,CAAiCC,GAAjC,EAAsCC,MAAtC,EAA8CC,UAA9C,EAA0D;;AAE/D,YAAI,CAACD,MAAL,EAAaA,SAASE,KAAK,IAAd;AACb,YAAI,CAACD,UAAL,EAAiBA,aAAa,CAACE,MAAD,EAASC,MAAT,KAAoB,IAAjC;;AAGjB,YAAIC,SAAS,IAAIC,GAAJ,EAAb;AACA,YAAIC,YAAY,CAAhB;;AAEA;AACA,YAAIC,OAAO,MAAMZ,MAAMa,QAAN,CAAeV,GAAf,CAAjB;;AAEAF,qBAAaW,IAAb,EAAmBN,KAAK;AACtB,cAAI,CAACF,OAAOE,CAAP,CAAL,EAAgB;;AAEhBA,YAAEQ,EAAF,GAAOH,WAAP;AACAF,iBAAOM,GAAP,CAAWT,EAAEH,GAAb,EAAkBG,CAAlB;AACD;;AAED;AAPA,UAQA,MAAMP,UAAUiB,OAAV,GAAoBC,EAApB,CAAuBjB,KAAvB,CAA6BkB,IAA7B,CAAkCC,UAAU;AAChD,cAAIb,IAAIG,OAAOW,GAAP,CAAWD,OAAOhB,GAAlB,CAAR;AACA,cAAIG,CAAJ,EAAO;AACLA,cAAEe,KAAF,GAAUF,MAAV;AACAb,cAAEgB,IAAF,GAASC,OAAOjB,EAAEe,KAAF,CAAQC,IAAf,CAAT;AACAhB,cAAEkB,KAAF,GAAUlB,EAAEmB,IAAZ;AACD;AACF,SAPK,CAAN;;AASA,YAAIC,YAAY,EAAhB;AACAC,eAAOC,MAAP,CAAcC,OAAOC,KAArB,EAA4BC,OAA5B,CAAoCC,QAAQ;AAC1C,cAAIC,aAAaxB,OAAOW,GAAP,CAAWY,KAAKE,GAAhB,CAAjB;AACA,cAAID,UAAJ,EAAgB;AACdA,uBAAWD,IAAX,GAAkBA,IAAlB;AACD;;AAEDA,eAAKG,YAAL,CAAkBJ,OAAlB,CAA2BK,UAAD,IAAgB;AACxC,gBAAIC,SAASR,OAAOS,aAAP,CAAqBF,UAArB,EAAiCJ,KAAKE,GAAtC,CAAb;AACA,gBAAIK,aAAa9B,OAAOW,GAAP,CAAWiB,MAAX,CAAjB;AACA,gBAAI,CAACJ,UAAD,IAAe,CAACM,UAApB,EAAgC;AAC9B,kBAAI,CAACN,UAAL,EACEO,QAAQC,GAAR,CAAY,wBAAwBT,KAAKE,GAAzC;AACF,kBAAI,CAACK,UAAL,EACEC,QAAQC,GAAR,CAAY,wBAAwBJ,MAApC;AACH,aALD,MAKO;AACL;AACA,kBAAG,CAAChC,WAAW4B,UAAX,EAAuBM,UAAvB,CAAJ,EAAwC;;AAExCb,wBAAUgB,IAAV,CAAe;AACbnC,wBAAQ0B,WAAWnB,EADN;AAEbN,wBAAQ+B,WAAWzB;AAFN,eAAf;AAID;AACF,WAjBD;AAkBD,SAxBD;;AA0BAb,qBAAaW,IAAb,EAAmBN,KAAK;AACtBA,YAAEqC,MAAF,GAAW,EAAErC,EAAEmB,IAAF,CAAOmB,KAAP,CAAa,OAAb,KAAyBtC,EAAE0B,IAA7B,CAAX;AACD,SAFD;;AAIA,eAAO;AACLa,iBAAOjC,IADF;AAELc,qBAAWA;AAFN,SAAP;AAID","file":"filedata.js","sourcesContent":["import FileIndex from \"src/client/fileindex.js\"\nimport files from \"src/client/files.js\"\n// import moment from \"src/external/moment.js\";\n\nimport { walkTreeData } from \"src/components/d3/d3-component.js\"\n\nexport async function loadedModulesData(url, filter, edgeFilter) {\n\n  if (!filter) filter = d => true;\n  if (!edgeFilter) edgeFilter = (source, target) => true;\n  \n  \n  var urlMap = new Map()\n  var idCounter = 1\n\n  // var now = Date.now()\n  var tree = await files.fileTree(url)\n\n  walkTreeData(tree, d => {\n    if (!filter(d)) return;\n    \n    d.id = idCounter++\n    urlMap.set(d.url, d)\n  })\n\n  // connect our dababase entries with visualization data nodes\n  await FileIndex.current().db.files.each(eaFile => {\n    var d = urlMap.get(eaFile.url)\n    if (d) {\n      d.index = eaFile\n      d.size = Number(d.index.size)\n      d.label = d.name\n    }\n  })\n\n  var relations = []\n  Object.values(System.loads).forEach(load => {\n    var sourceNode = urlMap.get(load.key)\n    if (sourceNode) {\n      sourceNode.load = load;\n    }\n\n    load.dependencies.forEach((dependency) => {\n      var depKey = System.normalizeSync(dependency, load.key)\n      var targetNode = urlMap.get(depKey)\n      if (!sourceNode || !targetNode) {\n        if (!sourceNode)\n          console.log(\"could not find node\" + load.key)\n        if (!targetNode)\n          console.log(\"could not find node\" + depKey)\n      } else {\n        // console.log(\"add relation \" + sourceNode.id + \" -> \" + targetNode.id)\n        if(!edgeFilter(sourceNode, targetNode)) return;\n        \n        relations.push({\n          source: sourceNode.id,\n          target: targetNode.id,\n        })\n      }\n    })\n  })\n\n  walkTreeData(tree, d => {\n    d.hidden = !(d.name.match(/\\.js$/) && d.load)\n  })\n\n  return {\n    nodes: tree,\n    relations: relations\n  }\n}\n"]}