UNPKG

@launchmenu/applet-notes

Version:
32 lines 2.34 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTGlzdENhY2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGVMaXN0Q2FjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFrRTtBQUVsRTs7Ozs7O0dBTUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FDNUIsUUFBNkIsRUFDN0IsS0FBc0MsRUFDdEMsTUFBdUM7SUFFdkMsT0FBTyxJQUFJLHdCQUFVLENBR2xCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFOztRQUNYLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsT0FBTyxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsR0FBRyxtQ0FBSSxFQUFFLENBQUMsQ0FBQztRQUMzQyxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQzFCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ1AsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzdCLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUNyQjtnQkFDRCxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDLENBQUM7WUFDRixHQUFHO1NBQ04sQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQXhCRCw0Q0F3QkMifQ==