Skip to content

Instantly share code, notes, and snippets.

View dominique-mueller's full-sized avatar
🤓
Working hard or hardly working

Dominique Müller dominique-mueller

🤓
Working hard or hardly working
View GitHub Profile
@dominique-mueller
dominique-mueller / delayAtLeast.ts
Created March 24, 2022 19:50
delayAtLeast RxJS Pipe
import { combineLatest, map, Observable, timer } from 'rxjs';
/**
* Delay at least (RxJS operator)
*
* @param delayInMs Delay in ms
*/
export const delayAtLeast = <T>(delayInMs: number) => {
return (observable: Observable<T>) => {
return combineLatest([timer(delayInMs), observable]).pipe(
{
"moduleNameMapper": {
"^d3-([a-z-]*)$": "d3-$1/dist/d3-$1",
"^lodash-es$": "lodash"
}
}
@dominique-mueller
dominique-mueller / virtualbox-ubuntu-setup.md
Created August 23, 2022 13:14
VirtualBox Ubuntu Setup
@dominique-mueller
dominique-mueller / nuxt-icon-component.vue
Created January 29, 2024 14:17
Nuxt Icon Component
<script lang="ts" setup>
/**
* Icon Component
*
* Inspired by <https://github.com/gitFoxCode/nuxt-icons/blob/d7e4e5b0f59c923fe97c7b9eebd5b94be0650180/src/runtime/components/nuxt-icon.vue>
*/
// Props
const props = defineProps({
name: {
@dominique-mueller
dominique-mueller / sort-to-top.ts
Created February 14, 2024 11:22
sort-to-top.ts
/**
* Sort one value to the top
*/
export const sortToTop = <T>(list: Array<T>, matchFn: (item: T) => boolean): Array<T> => {
return list.toSorted((listItemA, listItemB) => {
return matchFn(listItemA) ? -1 : matchFn(listItemB) ? 0 : 1;
});
};
@dominique-mueller
dominique-mueller / group-by.ts
Created February 15, 2024 12:13
group-by.ts
/**
* Group array by item into object
*
* Polyfill for <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/groupBy>
* Inspired by <https://stackoverflow.com/questions/14446511/most-efficient-method-to-groupby-on-an-array-of-objects#answer-64489535>
*/
export const groupBy = <T>(array: Array<T>, predicate: (value: T, index: number, array: Array<T>) => string) =>
array.reduce(
(acc, value, index, array) => {
(acc[predicate(value, index, array)] ||= []).push(value);