compat: polyfill AbortController/AbortSignal on older browsers (#2371)
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only';
|
||||
|
||||
// A groupBy polyfill for foliate-js
|
||||
Object.groupBy ??= (iterable, callbackfn) => {
|
||||
const obj = Object.create(null);
|
||||
let i = 0;
|
||||
for (const value of iterable) {
|
||||
const key = callbackfn(value, i++);
|
||||
if (key in obj) {
|
||||
obj[key].push(value);
|
||||
} else {
|
||||
obj[key] = [value];
|
||||
}
|
||||
}
|
||||
return obj;
|
||||
};
|
||||
|
||||
Map.groupBy ??= (iterable, callbackfn) => {
|
||||
const map = new Map();
|
||||
let i = 0;
|
||||
for (const value of iterable) {
|
||||
const key = callbackfn(value, i++),
|
||||
list = map.get(key);
|
||||
if (list) {
|
||||
list.push(value);
|
||||
} else {
|
||||
map.set(key, [value]);
|
||||
}
|
||||
}
|
||||
return map;
|
||||
};
|
||||
Reference in New Issue
Block a user