@launchmenu/core
Version:
An environment for visual keyboard controlled applets
33 lines • 2.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.findStackChanges = void 0;
/**
* Retrieves the changes between two stacks of items. Items are only allowed to be removed or added, not switch places (swaps are ignored)
* @param oldItems The previous item list
* @param newItems The new item list
* @returns The added and removed items lists
*/
function findStackChanges(oldItems, newItems) {
// Check ids in old and new group
const oldIds = {};
const newIds = {};
oldItems.forEach(item => (oldIds[item.ID] = item));
newItems.forEach(({ ID }) => (newIds[ID] = true));
// Check whether all ids are present and add to added or removed otherwise
const removed = [];
const added = [];
const updated = [];
oldItems.forEach((item, i) => {
if (!newIds[item.ID])
removed.push({ index: i, item });
});
newItems.forEach((item, i) => {
if (!oldIds[item.ID])
added.push({ index: i, item });
else if (oldIds[item.ID] != item)
updated.push({ index: i, oldItem: oldIds[item.ID], newItem: item });
});
return { removed, added, updated };
}
exports.findStackChanges = findStackChanges;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZFN0YWNrQ2hhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L2ZpbmRTdGFja0NoYW5nZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7Ozs7O0dBS0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FDNUIsUUFBc0IsRUFDdEIsUUFBc0I7SUFVdEIsaUNBQWlDO0lBQ2pDLE1BQU0sTUFBTSxHQUF1QixFQUFFLENBQUM7SUFDdEMsTUFBTSxNQUFNLEdBQTZCLEVBQUUsQ0FBQztJQUM1QyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFaEQsMEVBQTBFO0lBQzFFLE1BQU0sT0FBTyxHQUErQixFQUFFLENBQUM7SUFDL0MsTUFBTSxLQUFLLEdBQStCLEVBQUUsQ0FBQztJQUM3QyxNQUFNLE9BQU8sR0FBOEMsRUFBRSxDQUFDO0lBQzlELFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQzthQUM5QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSTtZQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBQyxDQUFDO0FBQ3JDLENBQUM7QUFoQ0QsNENBZ0NDIn0=