{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-theresa/src/client/reactive/active-expression-rewriting/bidirectional-multi-map.js"],"names":["BidirectionalMultiMap","constructor","leftToRight","Map","rightToLeft","associate","left","right","getRightsFor","add","getLeftsFor","remove","delete","removeAllRightFor","forEach","removeAllLeftFor","clear","getOrCreate","Set","getAllLeft","Array","from","keys","getAllRight"],"mappings":";;;;;;;AAAe,YAAMA,qBAAN,CAA4B;;AAEzCC,sBAAc;AACZ,eAAKC,WAAL,GAAmB,IAAIC,GAAJ,EAAnB;AACA,eAAKC,WAAL,GAAmB,IAAID,GAAJ,EAAnB;AACD;;AAEDE,kBAAUC,IAAV,EAAgBC,KAAhB,EAAuB;AACrB,eAAKC,YAAL,CAAkBF,IAAlB,EAAwBG,GAAxB,CAA4BF,KAA5B;AACA,eAAKG,WAAL,CAAiBH,KAAjB,EAAwBE,GAAxB,CAA4BH,IAA5B;AACD;;AAEDK,eAAOL,IAAP,EAAaC,KAAb,EAAoB;AAClB,eAAKC,YAAL,CAAkBF,IAAlB,EAAwBM,MAAxB,CAA+BL,KAA/B;AACA,eAAKG,WAAL,CAAiBH,KAAjB,EAAwBK,MAAxB,CAA+BN,IAA/B;AACD;;AAEDO,0BAAkBP,IAAlB,EAAwB;AACtB,eAAKE,YAAL,CAAkBF,IAAlB,EAAwBQ,OAAxB,CAAgCP,SAAS,KAAKI,MAAL,CAAYL,IAAZ,EAAkBC,KAAlB,CAAzC;AACD;;AAEDQ,yBAAiBR,KAAjB,EAAwB;AACtB,eAAKG,WAAL,CAAiBH,KAAjB,EAAwBO,OAAxB,CAAgCR,QAAQ,KAAKK,MAAL,CAAYL,IAAZ,EAAkBC,KAAlB,CAAxC;AACD;;AAEDS,gBAAQ;AACN,eAAKd,WAAL,CAAiBc,KAAjB;AACA,eAAKZ,WAAL,CAAiBY,KAAjB;AACD;;AAEDR,qBAAaF,IAAb,EAAmB;AACjB,iBAAO,KAAKJ,WAAL,CAAiBe,WAAjB,CAA6BX,IAA7B,EAAmC,MAAM,IAAIY,GAAJ,EAAzC,CAAP;AACD;;AAEDR,oBAAYH,KAAZ,EAAmB;AACjB,iBAAO,KAAKH,WAAL,CAAiBa,WAAjB,CAA6BV,KAA7B,EAAoC,MAAM,IAAIW,GAAJ,EAA1C,CAAP;AACD;;AAEDC,qBAAa;AACX,iBAAOC,MAAMC,IAAN,CAAW,KAAKnB,WAAL,CAAiBoB,IAAjB,EAAX,CAAP;AACD;;AAEDC,sBAAc;AACZ,iBAAOH,MAAMC,IAAN,CAAW,KAAKjB,WAAL,CAAiBkB,IAAjB,EAAX,CAAP;AACD;;AA5CwC;;yBAAtBtB,qB","file":"bidirectional-multi-map.js","sourcesContent":["export default class BidirectionalMultiMap {\n\n  constructor() {\n    this.leftToRight = new Map();\n    this.rightToLeft = new Map();\n  }\n  \n  associate(left, right) {\n    this.getRightsFor(left).add(right);\n    this.getLeftsFor(right).add(left);\n  }\n  \n  remove(left, right) {\n    this.getRightsFor(left).delete(right);\n    this.getLeftsFor(right).delete(left);\n  }\n\n  removeAllRightFor(left) {\n    this.getRightsFor(left).forEach(right => this.remove(left, right));\n  }\n\n  removeAllLeftFor(right) {\n    this.getLeftsFor(right).forEach(left => this.remove(left, right));\n  }\n\n  clear() {\n    this.leftToRight.clear();\n    this.rightToLeft.clear();\n  }\n\n  getRightsFor(left) {\n    return this.leftToRight.getOrCreate(left, () => new Set());\n  }\n\n  getLeftsFor(right) {\n    return this.rightToLeft.getOrCreate(right, () => new Set());\n  }\n  \n  getAllLeft() {\n    return Array.from(this.leftToRight.keys());\n  }\n\n  getAllRight() {\n    return Array.from(this.rightToLeft.keys());\n  }\n\n}\n"]}