{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-drawio/src/client/reactive/active-expression-rewriting/injective-map.js"],"names":["InjectiveMap","constructor","leftToRight","Map","rightToLeft","associate","left","right","set","getRightFor","get","hasRightFor","has","getOrCreateRightFor","constructorCallback","getLeftFor","hasLeftFor","getOrCreateLeftFor","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,oBAAYL,IAAZ,EAAkB;AAChB,iBAAO,KAAKJ,WAAL,CAAiBU,GAAjB,CAAqBN,IAArB,CAAP;AACD;;AAEDO,4BAAoBP,IAApB,EAA0BQ,mBAA1B,EAA+C;AAC7C,cAAI,CAAC,KAAKH,WAAL,CAAiBL,IAAjB,CAAL,EAA6B;AAC3B,iBAAKD,SAAL,CAAeC,IAAf,EAAqBQ,oBAAoBR,IAApB,CAArB;AACD;AACD,iBAAO,KAAKJ,WAAL,CAAiBQ,GAAjB,CAAqBJ,IAArB,CAAP;AACD;;AAEDS,mBAAWR,KAAX,EAAkB;AAChB,iBAAO,KAAKH,WAAL,CAAiBM,GAAjB,CAAqBH,KAArB,CAAP;AACD;;AAEDS,mBAAWT,KAAX,EAAkB;AAChB,iBAAO,KAAKH,WAAL,CAAiBQ,GAAjB,CAAqBL,KAArB,CAAP;AACD;;AAEDU,2BAAmBV,KAAnB,EAA0BO,mBAA1B,EAA+C;AAC7C,cAAI,CAAC,KAAKE,UAAL,CAAgBT,KAAhB,CAAL,EAA6B;AAC3B,iBAAKF,SAAL,CAAeS,oBAAoBP,KAApB,CAAf,EAA2CA,KAA3C;AACD;AACD,iBAAO,KAAKH,WAAL,CAAiBM,GAAjB,CAAqBH,KAArB,CAAP;AACD;;AAEDW,gBAAQ;AACN,eAAKhB,WAAL,CAAiBgB,KAAjB;AACA,eAAKd,WAAL,CAAiBc,KAAjB;AACD;;AA7C+B;;yBAAblB,Y","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  hasRightFor(left) {\n    return this.leftToRight.has(left);\n  }\n\n  getOrCreateRightFor(left, constructorCallback) {\n    if (!this.hasRightFor(left)) {\n      this.associate(left, constructorCallback(left));\n    }\n    return this.leftToRight.get(left);\n  }\n\n  getLeftFor(right) {\n    return this.rightToLeft.get(right);\n  }\n\n  hasLeftFor(right) {\n    return this.rightToLeft.has(right);\n  }\n\n  getOrCreateLeftFor(right, constructorCallback) {\n    if (!this.hasLeftFor(right)) {\n      this.associate(constructorCallback(right), right);\n    }\n    return this.rightToLeft.get(right);\n  }\n\n  clear() {\n    this.leftToRight.clear();\n    this.rightToLeft.clear();\n  }\n\n}\n"]}