{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-eventsourcing/src/client/reactive/active-expression-rewriting/injective-map.js"],"names":["InjectiveMap","constructor","leftToRight","Map","rightToLeft","associate","left","right","set","getRightFor","get","hasLeft","has","getOrCreateRightFor","constructorCallback","removeRight","delete","getLeftFor","hasRight","getOrCreateLeftFor","removeLeft","clear"],"mappings":";;;;;;;;AAAe,YAAMA,YAAN,CAAmB;;AAEhCC,sBAAc;AACZ,eAAKC,WAAL,GAAmB,IAAIC,GAAJ,EAAnB;AACA,eAAKC,WAAL,GAAmB,IAAID,GAAJ,EAAnB;AACD;;AAEDE,kBAAUC,IAAV,EAAgBC,KAAhB,EAAuB;AACrB,eAAKL,WAAL,CAAiBM,GAAjB,CAAqBF,IAArB,EAA2BC,KAA3B;AACA,eAAKH,WAAL,CAAiBI,GAAjB,CAAqBD,KAArB,EAA4BD,IAA5B;AACD;;AAEDG,oBAAYH,IAAZ,EAAkB;AAChB,iBAAO,KAAKJ,WAAL,CAAiBQ,GAAjB,CAAqBJ,IAArB,CAAP;AACD;;AAEDK,gBAAQL,IAAR,EAAc;AACZ,iBAAO,KAAKJ,WAAL,CAAiBU,GAAjB,CAAqBN,IAArB,CAAP;AACD;;AAEDO,4BAAoBP,IAApB,EAA0BQ,mBAA1B,EAA+C;AAC7C,cAAI,CAAC,KAAKH,OAAL,CAAaL,IAAb,CAAL,EAAyB;AACvB,iBAAKD,SAAL,CAAeC,IAAf,EAAqBQ,oBAAoBR,IAApB,CAArB;AACD;AACD,iBAAO,KAAKJ,WAAL,CAAiBQ,GAAjB,CAAqBJ,IAArB,CAAP;AACD;;AAEDS,oBAAYR,KAAZ,EAAmB;AACjB,gBAAMD,OAAO,KAAKF,WAAL,CAAiBM,GAAjB,CAAqBH,KAArB,CAAb;AACA,cAAGD,IAAH,EAAS;AACP,iBAAKJ,WAAL,CAAiBc,MAAjB,CAAwBV,IAAxB;AACD;AACD,eAAKF,WAAL,CAAiBY,MAAjB,CAAwBT,KAAxB;AACD;;AAEDU,mBAAWV,KAAX,EAAkB;AAChB,iBAAO,KAAKH,WAAL,CAAiBM,GAAjB,CAAqBH,KAArB,CAAP;AACD;;AAEDW,iBAASX,KAAT,EAAgB;AACd,iBAAO,KAAKH,WAAL,CAAiBQ,GAAjB,CAAqBL,KAArB,CAAP;AACD;;AAEDY,2BAAmBZ,KAAnB,EAA0BO,mBAA1B,EAA+C;AAC7C,cAAI,CAAC,KAAKI,QAAL,CAAcX,KAAd,CAAL,EAA2B;AACzB,iBAAKF,SAAL,CAAeS,oBAAoBP,KAApB,CAAf,EAA2CA,KAA3C;AACD;AACD,iBAAO,KAAKH,WAAL,CAAiBM,GAAjB,CAAqBH,KAArB,CAAP;AACD;;AAEDa,mBAAWd,IAAX,EAAiB;AACf,gBAAMC,QAAQ,KAAKL,WAAL,CAAiBQ,GAAjB,CAAqBJ,IAArB,CAAd;AACA,cAAGC,KAAH,EAAU;AACR,iBAAKH,WAAL,CAAiBY,MAAjB,CAAwBT,KAAxB;AACD;AACD,eAAKL,WAAL,CAAiBc,MAAjB,CAAwBV,IAAxB;AACD;;AAEDe,gBAAQ;AACN,eAAKnB,WAAL,CAAiBmB,KAAjB;AACA,eAAKjB,WAAL,CAAiBiB,KAAjB;AACD;;AA7D+B;;yBAAbrB,Y;;;;;;;;6BAAAA,6C","file":"injective-map.js","sourcesContent":["export default class InjectiveMap {\n\n  constructor() {\n    this.leftToRight = new Map();\n    this.rightToLeft = new Map();\n  }\n  \n  associate(left, right) {\n    this.leftToRight.set(left, right);\n    this.rightToLeft.set(right, left);\n  }\n  \n  getRightFor(left) {\n    return this.leftToRight.get(left);\n  }\n\n  hasLeft(left) {\n    return this.leftToRight.has(left);\n  }\n\n  getOrCreateRightFor(left, constructorCallback) {\n    if (!this.hasLeft(left)) {\n      this.associate(left, constructorCallback(left));\n    }\n    return this.leftToRight.get(left);\n  }\n  \n  removeRight(right) {\n    const left = this.rightToLeft.get(right);\n    if(left) {\n      this.leftToRight.delete(left);\n    }\n    this.rightToLeft.delete(right);\n  }\n\n  getLeftFor(right) {\n    return this.rightToLeft.get(right);\n  }\n\n  hasRight(right) {\n    return this.rightToLeft.has(right);\n  }\n\n  getOrCreateLeftFor(right, constructorCallback) {\n    if (!this.hasRight(right)) {\n      this.associate(constructorCallback(right), right);\n    }\n    return this.rightToLeft.get(right);\n  }\n  \n  removeLeft(left) {\n    const right = this.leftToRight.get(left);\n    if(right) {\n      this.rightToLeft.delete(right);\n    }\n    this.leftToRight.delete(left);\n  }\n\n  clear() {\n    this.leftToRight.clear();\n    this.rightToLeft.clear();\n  }\n\n}\n"]}