UNPKG

dnd-core

Version:

Drag and drop sans the GUI

57 lines (56 loc) 1.34 kB
// cheap lodash replacements /** * drop-in replacement for _.get * @param obj * @param path * @param defaultValue */ export function get(obj, path, defaultValue) { return path.split('.').reduce((a, c)=>a && a[c] ? a[c] : defaultValue || null , obj); } /** * drop-in replacement for _.without */ export function without(items, item) { return items.filter((i)=>i !== item ); } /** * drop-in replacement for _.isString * @param input */ export function isString(input) { return typeof input === 'string'; } /** * drop-in replacement for _.isString * @param input */ export function isObject(input) { return typeof input === 'object'; } /** * replacement for _.xor * @param itemsA * @param itemsB */ export function xor(itemsA, itemsB) { const map = new Map(); const insertItem = (item)=>{ map.set(item, map.has(item) ? map.get(item) + 1 : 1); }; itemsA.forEach(insertItem); itemsB.forEach(insertItem); const result = []; map.forEach((count, key)=>{ if (count === 1) { result.push(key); } }); return result; } /** * replacement for _.intersection * @param itemsA * @param itemsB */ export function intersection(itemsA, itemsB) { return itemsA.filter((t)=>itemsB.indexOf(t) > -1 ); } //# sourceMappingURL=js_utils.js.map