{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-xray/src/client/reflection.js"],"names":["convexHull","_convexHull","iterate","obj","options","result","Symbol","iterator","push","Array","from","usePrototype","__proto__","props","Object","getOwnPropertyNames","map","prop","e","root","all","Set","undefined","size","sizeLimit","has","add","forEach","ea","assign","Infinity","self","lively","reflection"],"mappings":";;;;;;;;;;;;;;gCAmCgBA,2C;;;;;;;;;;;;;;AAfPC,sD;;;;;;;;;;;;;AApBAC,kD;;;;;;;AAAT,eAASA,OAAT,CAAiBC,GAAjB,EAAsBC,OAAtB,EAA+B;AAC7B,YAAIC,SAAS,EAAb;AACA,YAAI;AACF,cAAIF,IAAIG,OAAOC,QAAX,CAAJ,EAA0B;AACxBF,mBAAOG,IAAP,CAAY,GAAGC,MAAMC,IAAN,CAAWP,GAAX,CAAf;AACD;;AAED,cAAIC,QAAQO,YAAR,IAAwBR,IAAIS,SAAhC,EAA2C;AACzCP,mBAAOG,IAAP,CAAYL,IAAIS,SAAhB;AACD;;AAED,gBAAMC,QAAQC,OAAOC,mBAAP,CAA2BZ,GAA3B,CAAd;AACAE,iBAAOG,IAAP,CAAY,GAAGK,MAAMG,GAAN,CAAUC,QAAQd,IAAIc,IAAJ,CAAlB,CAAf;AACD,SAXD,CAWE,OAAMC,CAAN,EAAS;AACT;AACD;;AAED,eAAOb,MAAP;AACD;;AAED,eAASJ,WAAT,CAAqBkB,IAArB,EAA2Bf,OAA3B,EAAoCgB,MAAM,IAAIC,GAAJ,EAA1C,EAAqD;;AAEnD,YAAIF,SAASG,SAAT,IAAsBH,SAAS,IAA/B,IAAuCC,IAAIG,IAAJ,GAAWnB,QAAQoB,SAA1D,IAAuE,CAACJ,IAAIK,GAAJ,CAAQN,IAAR,CAA5E,EAA2F;;AAEzFC,cAAIM,GAAJ,CAAQP,IAAR;;AAEAjB,kBAAQiB,IAAR,EAAcf,OAAd,EAAuBuB,OAAvB,CAA+BC,MAAM;AACnC3B,wBAAY2B,EAAZ,EAAgBxB,OAAhB,EAAyBgB,GAAzB;AACD,WAFD;AAID;;AAED,eAAOA,GAAP;AACD;;AAEM,eAASpB,UAAT,CAAoBmB,IAApB,EAA0Bf,UAAU,EAApC,EAAwC;AAC7C,eAAOH,YAAYkB,IAAZ,EAAkBL,OAAOe,MAAP,CAAc;AACrClB,wBAAc,KADuB;AAErCa,qBAAWM;AAF0B,SAAd,EAGtB1B,OAHsB,CAAlB,CAAP;AAID;;;;AAED,UAAG2B,KAAKC,MAAR,EAAgB;AACdA,eAAOC,UAAP,GAAoB,EAAEjC,UAAF,EAApB;AACD","file":"reflection.js","sourcesContent":["function iterate(obj, options) {\n  let result = [];\n  try {\n    if (obj[Symbol.iterator]) {\n      result.push(...Array.from(obj))\n    }\n\n    if (options.usePrototype && obj.__proto__) {\n      result.push(obj.__proto__)\n    }\n\n    const props = Object.getOwnPropertyNames(obj);\n    result.push(...props.map(prop => obj[prop]));\n  } catch(e) {\n    // ignore errors\n  }\n\n  return result;\n}\n\nfunction _convexHull(root, options, all = new Set()) {\n\n  if (root !== undefined && root !== null && all.size < options.sizeLimit && !all.has(root)) {\n\n    all.add(root);\n\n    iterate(root, options).forEach(ea => {\n      _convexHull(ea, options, all);\n    });\n\n  }\n  \n  return all;\n}\n\nexport function convexHull(root, options = {}) {\n  return _convexHull(root, Object.assign({\n    usePrototype: false,\n    sizeLimit: Infinity\n  }, options));\n}\n\nif(self.lively) {\n  lively.reflection = { convexHull };\n}\n"]}