Grabbed dndbeyond's source code
``` ~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js ```
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
import { sortBy, reduce } from 'lodash';
|
||||
/**
|
||||
*
|
||||
* @param obj - Keyed object to be converted to an array
|
||||
* @returns An array of the object's keys' values
|
||||
*/
|
||||
export function convertObjectToArray(obj) {
|
||||
return Object.keys(obj).reduce((acc, objKey) => {
|
||||
acc.push(obj[objKey]);
|
||||
return acc;
|
||||
}, []);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param collection
|
||||
* @param sortStrategies
|
||||
*/
|
||||
export function getLast(collection, sortStrategies = []) {
|
||||
if (!collection.length) {
|
||||
return null;
|
||||
}
|
||||
const lastItem = sortBy(collection, sortStrategies).pop();
|
||||
return lastItem !== null && lastItem !== void 0 ? lastItem : null;
|
||||
}
|
||||
export function parseInputInt(value, fallback = null) {
|
||||
if (value === '') {
|
||||
return fallback;
|
||||
}
|
||||
if (value === null) {
|
||||
return null;
|
||||
}
|
||||
const number = parseInt(value);
|
||||
if (isNaN(number)) {
|
||||
return fallback;
|
||||
}
|
||||
return number;
|
||||
}
|
||||
export function parseInputFloat(value, fallback = null) {
|
||||
if (value === '') {
|
||||
return fallback;
|
||||
}
|
||||
if (value === null) {
|
||||
return fallback;
|
||||
}
|
||||
const number = parseFloat(value);
|
||||
if (isNaN(number)) {
|
||||
return fallback;
|
||||
}
|
||||
return number;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param number
|
||||
* @param min
|
||||
* @param max
|
||||
*/
|
||||
export function clampInt(number, min = null, max = null) {
|
||||
let clampedNumber = number;
|
||||
if (min !== null) {
|
||||
clampedNumber = Math.max(clampedNumber, min);
|
||||
}
|
||||
if (max !== null) {
|
||||
clampedNumber = Math.min(clampedNumber, max);
|
||||
}
|
||||
return clampedNumber;
|
||||
}
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export function generateGuid() {
|
||||
function s4() {
|
||||
return Math.floor((1 + Math.random()) * 0x10000)
|
||||
.toString(16)
|
||||
.substring(1);
|
||||
}
|
||||
return `${s4() + s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`;
|
||||
}
|
||||
export function lookupDataOrFallback(lookup, identifier, fallback = null) {
|
||||
if (!lookup) {
|
||||
return fallback;
|
||||
}
|
||||
if (lookup.hasOwnProperty(identifier)) {
|
||||
return lookup[identifier];
|
||||
}
|
||||
return fallback;
|
||||
}
|
||||
export function generateNonNullLookup(collection, iterateeFunc) {
|
||||
return reduce(collection, (acc, item) => {
|
||||
const iteratee = iterateeFunc(item);
|
||||
if (iteratee !== null && !acc[iteratee]) {
|
||||
acc[iteratee] = item;
|
||||
}
|
||||
return acc;
|
||||
}, {});
|
||||
}
|
||||
Reference in New Issue
Block a user