@launchmenu/applet-notes
Version:
An applet to make short notes
32 lines • 2.34 kB
JavaScript
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==
;