UNPKG

@reactivex/ix-es5-esm

Version:

The Interactive Extensions for JavaScript

65 lines (63 loc) 2.48 kB
import { __asyncValues, __awaiter, __generator } from "tslib"; import { wrapWithAbort } from './withabort.js'; /** * @ignore */ export function createGrouping(source, keySelector, elementSelector, signal) { var _a, e_1, _b, _c; return __awaiter(this, void 0, void 0, function () { var map, _d, _e, _f, item, key, grouping, element, e_1_1; return __generator(this, function (_g) { switch (_g.label) { case 0: map = new Map(); _g.label = 1; case 1: _g.trys.push([1, 8, 9, 14]); _d = true, _e = __asyncValues(wrapWithAbort(source, signal)); _g.label = 2; case 2: return [4 /*yield*/, _e.next()]; case 3: if (!(_f = _g.sent(), _a = _f.done, !_a)) return [3 /*break*/, 7]; _c = _f.value; _d = false; item = _c; return [4 /*yield*/, keySelector(item, signal)]; case 4: key = _g.sent(); grouping = map.get(key); if (!map.has(key)) { grouping = []; map.set(key, grouping); } return [4 /*yield*/, elementSelector(item, signal)]; case 5: element = _g.sent(); grouping.push(element); _g.label = 6; case 6: _d = true; return [3 /*break*/, 2]; case 7: return [3 /*break*/, 14]; case 8: e_1_1 = _g.sent(); e_1 = { error: e_1_1 }; return [3 /*break*/, 14]; case 9: _g.trys.push([9, , 12, 13]); if (!(!_d && !_a && (_b = _e.return))) return [3 /*break*/, 11]; return [4 /*yield*/, _b.call(_e)]; case 10: _g.sent(); _g.label = 11; case 11: return [3 /*break*/, 13]; case 12: if (e_1) throw e_1.error; return [7 /*endfinally*/]; case 13: return [7 /*endfinally*/]; case 14: return [2 /*return*/, map]; } }); }); } //# sourceMappingURL=_grouping.js.map