just-animate
Version:
_Making Animation Simple_
91 lines (90 loc) • 2.25 kB
JavaScript
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);
}
}