From 06ecdf2af182034496e2123852deee4a58de1043 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sun, 17 Oct 2021 02:52:05 +0200 Subject: making a shoebox --- src/app/utils/data_utils.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/app/utils/data_utils.js (limited to 'src/app/utils/data_utils.js') diff --git a/src/app/utils/data_utils.js b/src/app/utils/data_utils.js new file mode 100644 index 0000000..327e594 --- /dev/null +++ b/src/app/utils/data_utils.js @@ -0,0 +1,34 @@ +/** + * Data manipulation utilities. + * @module app/utils/data_utils + */ + +/** + * Convert an enum to a lookup + * @param {Object} dictionary: number -> string + * @return {Object} dictionary: string -> number + */ +export const enumLookup = (dict) => + Object.entries(dict).reduce((lookup, pair) => { + lookup[pair[1]] = parseInt(pair[0]); + return lookup; + }, {}); + +/** + * Divide an array into N-item chunks + * @param {Array} arr array to be chunked + * @param {number} size items per chunk + * @return {Array} array of array chunks + */ +export const chunk = (arr, size) => + arr.length > size + ? [arr.slice(0, size), ...chunk(arr.slice(size), size)] + : [arr]; + +/** + * Delay during async operation + * @param {number} delay time to delay + * @return {Promise} promise that resolves after a delay + */ +export const delay = (delay = 1) => + new Promise((resolve) => setTimeout(resolve, delay)); -- cgit v1.2.3-70-g09d2