@open-tender/store
Version:
A library of hooks, reducers, utility functions, and types for use with Open Tender applications that utilize our in-store POS API
36 lines (35 loc) • 1.94 kB
JavaScript
import { __assign, __spreadArray } from "tslib";
export var flattenCategories = function (categories) {
return categories.reduce(function (arr, i) {
var cats = __spreadArray([i], i.children, true);
return __spreadArray(__spreadArray([], arr, true), cats, true);
}, []);
};
export var makeOptionGroups = function (groups) {
return groups.reduce(function (arr, i) {
var option_items = i.option_items.map(function (option) { return (__assign(__assign({}, option), { color: option.pos_display_color || i.pos_display_color })); });
var group = __assign(__assign({}, i), { option_items: option_items });
return __spreadArray(__spreadArray([], arr, true), [group], false);
}, []);
};
export var flattenItems = function (categories) {
return categories.reduce(function (arr, i) {
var items = i.items.map(function (item) {
var _a;
return (__assign(__assign({}, item), { color: item.pos_display_color || ((_a = i.pos) === null || _a === void 0 ? void 0 : _a.color), option_groups: makeOptionGroups(item.option_groups) }));
});
return __spreadArray(__spreadArray([], arr, true), items, true);
}, []);
};
export var makeMenuSections = function (sections, categories) {
var flatCategories = flattenCategories(categories);
return sections
.map(function (s) {
var cats = flatCategories
.filter(function (i) { return i.pos && i.pos.section_id === s.pos_section_id; })
.sort(function (a, b) { var _a, _b, _c, _d; return ((_b = (_a = a.pos) === null || _a === void 0 ? void 0 : _a.order) !== null && _b !== void 0 ? _b : 0) - ((_d = (_c = b.pos) === null || _c === void 0 ? void 0 : _c.order) !== null && _d !== void 0 ? _d : 0); });
var items = flattenItems(cats);
return __assign(__assign({}, s), { items: items });
})
.filter(function (i) { return i.items.length; });
};