@vendasta/store
Version:
Components and data for Store
38 lines • 5.58 kB
JavaScript
export function orderProductsAndAddons(combined, order) {
if (!order || order.length === 0) {
return combined || [];
}
if (!combined || combined.length === 0) {
return [];
}
const itemMap = (combined || []).reduce((m, curr) => {
m.set(getUniqueProductAddonId(curr), curr);
return m;
}, new Map());
const combinedIdList = combined.map(getUniqueProductAddonId);
const finalOrderedIds = combineProductOrderWithContainedProducts(order, combinedIdList);
const orderedList = finalOrderedIds.reduce((items, id) => {
items.push(itemMap.get(id));
return items;
}, []);
return orderedList.filter(filterUniqueAndDefined);
}
function filterUniqueAndDefined(elem, pos, arr) {
return elem && arr.indexOf(elem) === pos;
}
export function combineProductOrderWithContainedProducts(productOrder, itemIds) {
if (itemIds == null || itemIds.length === 0) {
return [];
}
if (!productOrder || productOrder.length === 0) {
return itemIds.filter(filterUniqueAndDefined);
}
return productOrder
.filter((elem) => itemIds.indexOf(elem) >= 0)
.concat(itemIds)
.filter(filterUniqueAndDefined);
}
export function getUniqueProductAddonId(thing) {
return thing['addonId'] || thing['productId'];
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3N0b3JlL3NyYy9saWIvcGFja2FnZS1kZXRhaWxzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxRQUE2QixFQUFFLEtBQWU7SUFDbkYsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNoQyxPQUFPLFFBQVEsSUFBSSxFQUFFLENBQUM7S0FDdkI7SUFDRCxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFFRCxNQUFNLE9BQU8sR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDbEQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBMkIsQ0FBQyxDQUFDO0lBRXZDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUM3RCxNQUFNLGVBQWUsR0FBRyx3Q0FBd0MsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFeEYsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRTtRQUN2RCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsRUFBRSxFQUFFLENBQXdCLENBQUM7SUFFOUIsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQzVDLE9BQU8sSUFBSSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDO0FBQzNDLENBQUM7QUFFRCxNQUFNLFVBQVUsd0NBQXdDLENBQUMsWUFBc0IsRUFBRSxPQUFpQjtJQUNoRyxJQUFJLE9BQU8sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDM0MsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUNELElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDOUMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7S0FDL0M7SUFDRCxPQUFPLFlBQVk7U0FDaEIsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QyxNQUFNLENBQUMsT0FBTyxDQUFDO1NBQ2YsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxLQUFVO0lBQ2hELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWRkb24gfSBmcm9tICdAdmVuZGFzdGEvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4uL3NoYXJlZC9wcm9kdWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIG9yZGVyUHJvZHVjdHNBbmRBZGRvbnMoY29tYmluZWQ6IChQcm9kdWN0IHwgQWRkb24pW10sIG9yZGVyOiBzdHJpbmdbXSk6IChQcm9kdWN0IHwgQWRkb24pW10ge1xuICBpZiAoIW9yZGVyIHx8IG9yZGVyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjb21iaW5lZCB8fCBbXTtcbiAgfVxuICBpZiAoIWNvbWJpbmVkIHx8IGNvbWJpbmVkLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGl0ZW1NYXAgPSAoY29tYmluZWQgfHwgW10pLnJlZHVjZSgobSwgY3VycikgPT4ge1xuICAgIG0uc2V0KGdldFVuaXF1ZVByb2R1Y3RBZGRvbklkKGN1cnIpLCBjdXJyKTtcbiAgICByZXR1cm4gbTtcbiAgfSwgbmV3IE1hcDxzdHJpbmcsIFByb2R1Y3QgfCBBZGRvbj4oKSk7XG5cbiAgY29uc3QgY29tYmluZWRJZExpc3QgPSBjb21iaW5lZC5tYXAoZ2V0VW5pcXVlUHJvZHVjdEFkZG9uSWQpO1xuICBjb25zdCBmaW5hbE9yZGVyZWRJZHMgPSBjb21iaW5lUHJvZHVjdE9yZGVyV2l0aENvbnRhaW5lZFByb2R1Y3RzKG9yZGVyLCBjb21iaW5lZElkTGlzdCk7XG5cbiAgY29uc3Qgb3JkZXJlZExpc3QgPSBmaW5hbE9yZGVyZWRJZHMucmVkdWNlKChpdGVtcywgaWQpID0+IHtcbiAgICBpdGVtcy5wdXNoKGl0ZW1NYXAuZ2V0KGlkKSk7XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9LCBbXSkgYXMgKFByb2R1Y3QgfCBBZGRvbilbXTtcblxuICByZXR1cm4gb3JkZXJlZExpc3QuZmlsdGVyKGZpbHRlclVuaXF1ZUFuZERlZmluZWQpO1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJVbmlxdWVBbmREZWZpbmVkKGVsZW0sIHBvcywgYXJyKTogYm9vbGVhbiB7XG4gIHJldHVybiBlbGVtICYmIGFyci5pbmRleE9mKGVsZW0pID09PSBwb3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lUHJvZHVjdE9yZGVyV2l0aENvbnRhaW5lZFByb2R1Y3RzKHByb2R1Y3RPcmRlcjogc3RyaW5nW10sIGl0ZW1JZHM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICBpZiAoaXRlbUlkcyA9PSBudWxsIHx8IGl0ZW1JZHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICghcHJvZHVjdE9yZGVyIHx8IHByb2R1Y3RPcmRlci5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gaXRlbUlkcy5maWx0ZXIoZmlsdGVyVW5pcXVlQW5kRGVmaW5lZCk7XG4gIH1cbiAgcmV0dXJuIHByb2R1Y3RPcmRlclxuICAgIC5maWx0ZXIoKGVsZW0pID0+IGl0ZW1JZHMuaW5kZXhPZihlbGVtKSA+PSAwKVxuICAgIC5jb25jYXQoaXRlbUlkcylcbiAgICAuZmlsdGVyKGZpbHRlclVuaXF1ZUFuZERlZmluZWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pcXVlUHJvZHVjdEFkZG9uSWQodGhpbmc6IGFueSk6IHN0cmluZyB7XG4gIHJldHVybiB0aGluZ1snYWRkb25JZCddIHx8IHRoaW5nWydwcm9kdWN0SWQnXTtcbn1cbiJdfQ==