{"version":3,"file":"ngxtension-reduce-array.mjs","sources":["../../../../libs/ngxtension/reduce-array/src/reduce-array.ts","../../../../libs/ngxtension/reduce-array/src/ngxtension-reduce-array.ts"],"sourcesContent":["import { map, type Observable } from 'rxjs';\n\ntype Reduce = Array<any>['reduce'];\n\nexport function reduceArray<T>(\n\treduceFn: (acc: T, item: T, index: number) => T,\n): (source: Observable<T[]>) => Observable<T>;\n\nexport function reduceArray<T, R = T>(\n\treduceFn: (acc: R, item: T, index: number) => R,\n\tinitialValue: R,\n): (source: Observable<T[]>) => Observable<R>;\n\nexport function reduceArray(\n\treduceFn: Parameters<Reduce>[0],\n\tinitialValue?: Parameters<Reduce>[1],\n) {\n\treturn map((array: Array<any>) => {\n\t\t// call reduce function with initialValue\n\t\tif (initialValue !== undefined) {\n\t\t\treturn array.reduce(reduceFn, initialValue);\n\t\t}\n\t\t// no initialValue\n\n\t\t// Javascript throws error if array is empty: [].reduce((acc,n) => acc +n)\n\t\t// avoid errors and return undefined\n\t\tif (!array.length) {\n\t\t\treturn undefined;\n\t\t}\n\t\t// if array is not empty, call the reduceFn without initialValue\n\t\treturn array.reduce(reduceFn);\n\t});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAagB,SAAA,WAAW,CAC1B,QAA+B,EAC/B,YAAoC,EAAA;AAEpC,IAAA,OAAO,GAAG,CAAC,CAAC,KAAiB,KAAI;;AAEhC,QAAA,IAAI,YAAY,KAAK,SAAS,EAAE;YAC/B,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;SAC5C;;;;AAKD,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAClB,YAAA,OAAO,SAAS,CAAC;SACjB;;AAED,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/B,KAAC,CAAC,CAAC;AACJ;;AChCA;;AAEG;;;;"}