{"version":3,"names":["BidirectionalMultiMap","constructor","domainToRange","Map","rangeToDomain","associate","left","right","getRightsFor","add","getLeftsFor","remove","rights","delete","size","lefts","removeAllRightFor","forEach","removeAllLeftFor","clear","has","hasLeft","hasRight","val","getOrCreate","Set","getAllLeft","Array","from","keys","getAllRight"],"sources":["bidirectional-multi-map.js"],"sourcesContent":["export default class BidirectionalMultiMap {\n\n  constructor() {\n    this.domainToRange = new Map();\n    this.rangeToDomain = 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    const rights = this.getRightsFor(left);\n    rights.delete(right);\n    if(rights.size === 0) this.domainToRange.delete(left);\n    \n    const lefts = this.getLeftsFor(right);\n    lefts.delete(left);\n    if(lefts.size === 0) this.rangeToDomain.delete(right);\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.domainToRange.clear();\n    this.rangeToDomain.clear();\n  }\n  \n  has(left, right) {\n    return this.hasLeft(left) && this.getRightsFor(left).has(right);\n  }\n\n  hasRight(val) {\n    return this.rangeToDomain.has(val);\n  }\n\n  hasLeft(val) {\n    return this.domainToRange.has(val);\n  }\n\n  getRightsFor(left) {\n    return this.domainToRange.getOrCreate(left, () => new Set());\n  }\n\n  getLeftsFor(right) {\n    return this.rangeToDomain.getOrCreate(right, () => new Set());\n  }\n\n  getAllLeft() {\n    return Array.from(this.domainToRange.keys());\n  }\n\n  getAllRight() {\n    return Array.from(this.rangeToDomain.keys());\n  }\n\n}"],"mappings":"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"}