Files
directus/packages/shared/src/utils/move-in-array.ts
Nitwel ce8401b940 Move some compositons, utils and types to shared (#8059)
* move composables, types and utils to shared

* move composables, utils and types to shared

* expose utils and composables in extensionsSDK

* fix missing dependencies

* Sort index.ts exports

* Do the thing

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-09-15 16:41:08 -04:00

29 lines
640 B
TypeScript

export function moveInArray<T = any>(array: T[], fromIndex: number, toIndex: number): T[] {
const item = array[fromIndex];
const length = array.length;
const diff = fromIndex - toIndex;
if (item === undefined) return array;
if (diff > 0) {
// move left
return [
...array.slice(0, toIndex),
item,
...array.slice(toIndex, fromIndex),
...array.slice(fromIndex + 1, length),
];
} else if (diff < 0) {
// move right
const targetIndex = toIndex + 1;
return [
...array.slice(0, fromIndex),
...array.slice(fromIndex + 1, targetIndex),
item,
...array.slice(targetIndex, length),
];
}
return array;
}