{"version":3,"sources":["https://lively-kernel.org/lively4/swd21-croquet/src/client/vivide/vivideobject.js"],"names":["Annotations","VivideObject","forestToData","forest","map","model","object","dataToForest","data","d","constructor","_data","_properties","_descentStep","properties","descentStep","hasChildren","children","getChildren","length","computeChildren","descentObject","_children"],"mappings":";;;;;;AAAOA,iB;;;;;;;;;;;AAAAA,sD;;;;;;;AAEQ,YAAMC,YAAN,CAAmB;AAChC,eAAOC,YAAP,CAAoBC,MAApB,EAA4B;AAC1B,iBAAOA,OAAOC,GAAP,CAAWC,SAASA,MAAMC,MAA1B,CAAP;AACD;;AAED,eAAOC,YAAP,CAAoBC,IAApB,EAA0B;AACxB,iBAAOA,KAAKJ,GAAL,CAASK,KAAK,IAAIR,YAAJ,CAAiBQ,CAAjB,CAAd,CAAP;AACD;;AAEDC,oBAAYF,IAAZ,EAAkB;AAChB,eAAKG,KAAL,GAAaH,IAAb;AACA,eAAKI,WAAL,GAAmB,IAAIZ,WAAJ,EAAnB;AACA,eAAKa,YAAL,GAAoB,IAApB;AACD;;AAED,YAAIP,MAAJ,GAAa;AAAE,iBAAO,KAAKK,KAAZ;AAAoB;AACnC,YAAIH,IAAJ,GAAW;AAAE,iBAAO,KAAKG,KAAZ;AAAoB;;AAEjC,YAAIG,UAAJ,GAAiB;AACf,iBAAO,KAAKF,WAAZ;AACD;;AAED,YAAIG,WAAJ,GAAkB;AAAE,iBAAO,KAAKF,YAAZ;AAA2B;AAC/C,YAAIE,WAAJ,CAAgBA,WAAhB,EAA6B;AAAE,iBAAO,KAAKF,YAAL,GAAoBE,WAA3B;AAAyC;;AAExE,cAAMC,WAAN,GAAoB;AAClB,gBAAMC,WAAW,MAAM,KAAKC,WAAL,EAAvB;;AAEA,iBAAOD,YAAYA,SAASE,MAAT,GAAkB,CAArC;AACD;;AAED,cAAMC,eAAN,GAAwB;AACtB,cAAG,CAAC,KAAKL,WAAT,EAAsB;AACpB;AACA,mBAAO,EAAP;AACD;;AAED,gBAAMZ,SAAS,MAAM,KAAKY,WAAL,CAAiBM,aAAjB,CAA+B,KAAKf,MAApC,CAArB;AACA,iBAAOH,MAAP;AACD;;AAED,cAAMe,WAAN,GAAoB;AAClB,iBAAO,KAAKI,SAAL,GAAiB,KAAKA,SAAL,KAAkB,MAAM,KAAKF,eAAL,EAAxB,CAAxB;AACD;AA3C+B;;yBAAbnB,Y;;;;;;;;6BAAAA,6C","file":"vivideobject.js","sourcesContent":["import Annotations from 'src/client/reactive/utils/annotations.js';\n\nexport default class VivideObject {\n  static forestToData(forest) {\n    return forest.map(model => model.object);\n  }\n\n  static dataToForest(data) {\n    return data.map(d => new VivideObject(d));\n  }\n\n  constructor(data) {\n    this._data = data;\n    this._properties = new Annotations();\n    this._descentStep = null;\n  }\n\n  get object() { return this._data; }\n  get data() { return this._data; }\n\n  get properties() {\n    return this._properties;\n  }\n\n  get descentStep() { return this._descentStep; }\n  set descentStep(descentStep) { return this._descentStep = descentStep; }\n\n  async hasChildren() {\n    const children = await this.getChildren();\n\n    return children && children.length > 0;\n  }\n\n  async computeChildren() {\n    if(!this.descentStep) {\n      // #TODO: better: undefined? (to signal the absense of a descent script)\n      return [];\n    }\n\n    const forest = await this.descentStep.descentObject(this.object);\n    return forest;\n  }\n\n  async getChildren() {\n    return this._children = this._children || await this.computeChildren();\n  }\n}\n"]}