{"version":3,"names":["BidirectionalMultiMap","__SystemJSRewritingHack","_export","setters","execute","_recorder_","_src_client_reactive_active_expression_rewriting_bidirectional_multi_map_js","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","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable"],"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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"}