{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-tom/src/babylonian-programming-editor/utils/collections.js"],"names":["DefaultMap","Map","constructor","defaultInit","iterable","_defaultInit","builder","bind","get","key","has","defaultValue","set"],"mappings":";;;;;;;;AAAO,YAAMA,UAAN,SAAyBC,GAAzB,CAA6B;AAClCC,oBAAYC,WAAZ,EAAyBC,QAAzB,EAAmC;AACjC,gBAAMA,QAAN;AACA,eAAKC,YAAL,GAAoBF,WAApB;AACD;;AAED,eAAOG,OAAP,CAAeH,WAAf,EAA4B;AAC1B,iBAAOH,WAAWO,IAAX,CAAgB,IAAhB,EAAsBJ,WAAtB,CAAP;AACD;;AAEDK,YAAIC,GAAJ,EAAS;AACP,cAAG,CAAC,KAAKC,GAAL,CAASD,GAAT,CAAJ,EAAmB;AACjB,kBAAME,eAAe,OAAO,KAAKN,YAAZ,KAA6B,UAA7B,GACA,IAAI,KAAKA,YAAT,EADA,GAEA,KAAKA,YAF1B;AAGA,iBAAKO,GAAL,CAASH,GAAT,EAAcE,YAAd;AACD;AACD,iBAAO,MAAMH,GAAN,CAAUC,GAAV,CAAP;AACD;AAlBiC","file":"collections.js","sourcesContent":["export class DefaultMap extends Map {\n  constructor(defaultInit, iterable) {\n    super(iterable);\n    this._defaultInit = defaultInit;\n  }\n  \n  static builder(defaultInit) {\n    return DefaultMap.bind(null, defaultInit);\n  }\n  \n  get(key) {\n    if(!this.has(key)) {\n      const defaultValue = typeof this._defaultInit === 'function' ? \n                           new this._defaultInit() :\n                           this._defaultInit;\n      this.set(key, defaultValue);\n    }\n    return super.get(key);\n  }\n}\n"]}