{"version":3,"file":"list.cjs","names":[],"sources":["../../../src/common/data/list.ts"],"sourcesContent":["export type FilterFunction<T> = (o: T) => boolean\nexport type MapperFunction<T> = (o: T) => any\n\n/** Apply multiple filters, optionally transform through mappers, filter null/undefined items. */\nexport function listQuery<T>(\n  list: T[],\n  filters: FilterFunction<T>[],\n  mappers: MapperFunction<T>[] = [],\n): T | any[] {\n  return list\n    .filter((o: T) => !filters.some(a => !a(o)))\n    .map((o) => {\n      for (const m of mappers)\n        o = m(o)\n      return o\n    })\n    .filter(o => o != null)\n}\n\n/** Split up a list by `key` resulting in a Record of `key` and sub-list. */\nexport function listGroupBy<T extends Record<string, any>>(\n  list: T[],\n  key: keyof T,\n): Record<string, T[]> {\n  return list.reduce((result: any, currentValue: T) => {\n    const groupValue = String(currentValue[key])\n    ;(result[groupValue] = result[groupValue] || []).push(currentValue)\n    return result\n  }, {})\n}\n\n/** Returns a list of values of a certain `key`. No duplicates. */\nexport function listDistinctUnion<T extends Record<string, any>>(\n  list: T[],\n  key: keyof T,\n): any[] {\n  return Array.from(\n    list.reduce(\n      (result: Set<any>, currentValue: T) => result.add(currentValue[key]),\n      new Set(),\n    ),\n  )\n}\n\n/** Returns a list of values of a certain `key`. */\nexport function listOfKey<T extends Record<string, any>>(\n  list: T[],\n  key: keyof T,\n): any[] {\n  return list.map(item => item[key])\n}\n"],"mappings":";;;;AAIA,SAAgB,UACd,MACA,SACA,UAA+B,EAAE,EACtB;AACX,QAAO,KACJ,QAAQ,MAAS,CAAC,QAAQ,MAAK,MAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAC3C,KAAK,MAAM;AACV,OAAK,MAAM,KAAK,QACd,KAAI,EAAE,EAAE;AACV,SAAO;GACP,CACD,QAAO,MAAK,KAAK,KAAK;;;AAI3B,SAAgB,YACd,MACA,KACqB;AACrB,QAAO,KAAK,QAAQ,QAAa,iBAAoB;EACnD,MAAM,aAAa,OAAO,aAAa,KAAK;AAC3C,GAAC,OAAO,cAAc,OAAO,eAAe,EAAE,EAAE,KAAK,aAAa;AACnE,SAAO;IACN,EAAE,CAAC;;;AAIR,SAAgB,kBACd,MACA,KACO;AACP,QAAO,MAAM,KACX,KAAK,QACF,QAAkB,iBAAoB,OAAO,IAAI,aAAa,KAAK,kBACpE,IAAI,KAAK,CACV,CACF;;;AAIH,SAAgB,UACd,MACA,KACO;AACP,QAAO,KAAK,KAAI,SAAQ,KAAK,KAAK"}