UNPKG

@playbooks/utils

Version:

A collection of utilities used for Playbooks.

36 lines (35 loc) 1.75 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const addOrRemoveItem = (array = [], record) => { return array.includes(record) ? array.filter((a) => a !== record) : array.concat(record); }; const moveAndSort = (array, record, dragIndex, hoverIndex, key = "id") => { const pre = dragIndex < hoverIndex ? array.slice(0, hoverIndex + 1) : array.slice(0, hoverIndex); const post = dragIndex < hoverIndex ? array.slice(hoverIndex + 1) : array.slice(hoverIndex); const formatted = [...pre.filter((v) => v[key] !== record[key]), record, ...post.filter((v) => v[key] !== record[key])]; return formatted.map((v, i) => ({ ...v, order: i })); }; const removeAndSort = (array, index) => { const pre = array.slice(0, index); const post = array.slice(index + 1); const formatted = [...pre, ...post]; return formatted.map((v, i) => ({ ...v, order: i })); }; const updateAndSort = (array, record, index) => { const pre = array.slice(0, index); const post = array.slice(index + 1, array.length); const formatted = index >= 0 ? [...pre, record, ...post] : array.concat(record); return formatted.map((v, i) => ({ ...v, order: i })); }; const findRecordAndReplace = (array = [], selectedRecord, newRecord, keyName) => { const index = array.findIndex((v) => v[keyName] === selectedRecord[keyName]); const pre = array.slice(0, index); const formattedRecord = { ...array[index], ...newRecord }; const post = array.slice(index + 1, array.length); return [...pre, formattedRecord, ...post]; }; exports.addOrRemoveItem = addOrRemoveItem; exports.findRecordAndReplace = findRecordAndReplace; exports.moveAndSort = moveAndSort; exports.removeAndSort = removeAndSort; exports.updateAndSort = updateAndSort;