UNPKG

just-animate

Version:
91 lines (90 loc) 2.25 kB
import { isArrayLike, isDefined } from './inspect'; import { _ } from './constants'; export function includes(items, item) { return getIndex(items, item) !== -1; } export function getIndex(items, item) { return items.indexOf(item); } export function find(indexed, predicate, reverse) { const ilen = indexed && indexed.length; if (!ilen) { return _; } if (predicate === _) { return indexed[reverse ? ilen - 1 : 0]; } if (reverse) { for (let i = ilen - 1; i > -1; i--) { if (predicate(indexed[i])) { return indexed[i]; } } } else { for (let i = 0; i < ilen; i++) { if (predicate(indexed[i])) { return indexed[i]; } } } return _; } export function indexOf(items, predicate) { for (var i = 0, ilen = items.length; i < ilen; i++) { var item = items[i]; if (predicate(item)) { return i; } } return -1; } export function remove(items, item) { const index = items.indexOf(item); return index !== -1 ? items.splice(index, 1) : _; } export function sortBy(fieldName) { return (a, b) => { const a1 = a[fieldName]; const b1 = b[fieldName]; return a1 < b1 ? -1 : a1 > b1 ? 1 : 0; }; } export function list(indexed) { return !isDefined(indexed) ? [] : isArrayLike(indexed) ? indexed : [indexed]; } export function push(indexed, item) { if (item !== _) { Array.prototype.push.call(indexed, item); } return item; } export function pushDistinct(indexed, item) { if (!includes(indexed, item)) { push(indexed, item); } return item; } export function mapFlatten(items, mapper) { var results = []; all(items, item => { var result = mapper(item); if (isArrayLike(result)) { all(result, item2 => push(results, item2)); } else { push(results, result); } }); return results; } export function all(items, action) { const items2 = list(items); for (let i = 0, ilen = items2.length; i < ilen; i++) { action(items2[i], i, ilen); } }