UNPKG

@launchmenu/applet-notes

Version:
32 lines 2.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createListCacher = void 0; const model_react_1 = require("model-react"); /** * Creates a new data cacher for lists, such that items aren't recreated when an item is added or removed * @param getItems gets all of the items to map * @param getID get the ID of the of the item * @param create Create a new instance for the given item * @returns The data cacher to manage the */ function createListCacher(getItems, getID, create) { return new model_react_1.DataCacher((h, prev) => { var _a; const items = getItems(h); const map = new Map((_a = prev === null || prev === void 0 ? void 0 : prev.map) !== null && _a !== void 0 ? _a : []); return { items: items.map(sourceItem => { const ID = getID(sourceItem, h); let item = map.get(ID); if (!item) { item = create(sourceItem, h); map.set(ID, item); } return item; }), map, }; }); } exports.createListCacher = createListCacher; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTGlzdENhY2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2NyZWF0ZUxpc3RDYWNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWtFO0FBRWxFOzs7Ozs7R0FNRztBQUNILFNBQWdCLGdCQUFnQixDQUM1QixRQUE2QixFQUM3QixLQUFzQyxFQUN0QyxNQUF1QztJQUV2QyxPQUFPLElBQUksd0JBQVUsQ0FHbEIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUU7O1FBQ1gsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxPQUFPLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxHQUFHLG1DQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLE9BQU87WUFDSCxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDMUIsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDUCxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDN0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ3JCO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUMsQ0FBQztZQUNGLEdBQUc7U0FDTixDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBeEJELDRDQXdCQyJ9