UNPKG

@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
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; }); };