/** * 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));