@open-tender/store 0.1.328 → 0.1.329
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/CategoryItem.js +3 -1
- package/dist/cjs/utils/removeOptions.d.ts +2 -0
- package/dist/cjs/utils/removeOptions.js +67 -0
- package/dist/esm/components/CategoryItem.js +4 -2
- package/dist/esm/utils/removeOptions.d.ts +2 -0
- package/dist/esm/utils/removeOptions.js +63 -0
- package/package.json +1 -1
|
@@ -5,6 +5,7 @@ var utils_1 = require("@open-tender/utils");
|
|
|
5
5
|
var react_1 = require("react");
|
|
6
6
|
var hooks_1 = require("../app/hooks");
|
|
7
7
|
var slices_1 = require("../slices");
|
|
8
|
+
var removeOptions_1 = require("../utils/removeOptions");
|
|
8
9
|
var CategoryItem = function (_a) {
|
|
9
10
|
var item = _a.item, favorite = _a.favorite, allergenAlerts = _a.allergenAlerts, placeholder = _a.placeholder, index = _a.index, navigate = _a.navigate, children = _a.children;
|
|
10
11
|
var dispatch = (0, hooks_1.useAppDispatch)();
|
|
@@ -19,8 +20,9 @@ var CategoryItem = function (_a) {
|
|
|
19
20
|
var _c = displaySettings || {}, _d = _c.calories, showCals = _d === void 0 ? false : _d, _e = _c.tags, showTags = _e === void 0 ? false : _e, _f = _c.allergens, showAllergens = _f === void 0 ? false : _f;
|
|
20
21
|
var showDesc = 'SHOW';
|
|
21
22
|
var orderItem = (0, react_1.useMemo)(function () {
|
|
22
|
-
|
|
23
|
+
var base = favorite
|
|
23
24
|
? tslib_1.__assign(tslib_1.__assign({}, (0, utils_1.rehydrateOrderItem)(item, favorite.item)), { index: -1 }) : (0, utils_1.makeOrderItem)(item, undefined, soldOut, undefined, hasPoints);
|
|
25
|
+
return (0, utils_1.calcPrices)((0, removeOptions_1.applyRemoveOptions)(base));
|
|
24
26
|
}, [favorite, hasPoints, item, soldOut]);
|
|
25
27
|
var _g = (0, utils_1.useMenuItem)(orderItem, null, {}, null, undefined), displayPrice = _g.displayPrice, displayCals = _g.displayCals;
|
|
26
28
|
var cartItem = (0, utils_1.useOrderItem)(orderItem, favorite, allergenAlerts, cartCounts, showCals, showTags, showAllergens, showDesc);
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyRemoveOptions = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var REMOVE_SYNONYMS = ['remove', 'without'];
|
|
6
|
+
var nutritionKeys = [
|
|
7
|
+
'calories',
|
|
8
|
+
'cholesterol',
|
|
9
|
+
'dietary_fiber',
|
|
10
|
+
'protein',
|
|
11
|
+
'saturated_fat',
|
|
12
|
+
'sodium',
|
|
13
|
+
'sugars',
|
|
14
|
+
'total_carbs',
|
|
15
|
+
'total_fat',
|
|
16
|
+
'trans_fat'
|
|
17
|
+
];
|
|
18
|
+
function hasRemovePrefix(name) {
|
|
19
|
+
var lower = name.trim().toLowerCase();
|
|
20
|
+
return REMOVE_SYNONYMS.some(function (syn) { return lower.startsWith(syn); });
|
|
21
|
+
}
|
|
22
|
+
function negateNutrition(info) {
|
|
23
|
+
if (!info)
|
|
24
|
+
return null;
|
|
25
|
+
var result = tslib_1.__assign({}, info);
|
|
26
|
+
nutritionKeys.forEach(function (key) {
|
|
27
|
+
var val = result[key];
|
|
28
|
+
if (typeof val === 'number')
|
|
29
|
+
result[key] = -val;
|
|
30
|
+
});
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
function negateRemoveOption(option) {
|
|
34
|
+
return tslib_1.__assign(tslib_1.__assign({}, option), { cals: typeof option.cals === 'number' ? -option.cals : option.cals, price: -option.price, points: typeof option.points === 'number' ? -option.points : option.points, nutritionalInfo: negateNutrition(option.nutritionalInfo) });
|
|
35
|
+
}
|
|
36
|
+
function addToBase(base, option) {
|
|
37
|
+
var optInfo = option.nutritionalInfo;
|
|
38
|
+
if (!optInfo)
|
|
39
|
+
return base;
|
|
40
|
+
var result = tslib_1.__assign({}, (base || {}));
|
|
41
|
+
nutritionKeys.forEach(function (key) {
|
|
42
|
+
var addVal = optInfo[key];
|
|
43
|
+
if (typeof addVal === 'number') {
|
|
44
|
+
var cur = result[key];
|
|
45
|
+
result[key] = (typeof cur === 'number' ? cur : 0) + addVal;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
function applyRemoveOptions(item) {
|
|
51
|
+
var baseCals = item.cals;
|
|
52
|
+
var baseNutrition = item.nutritionalInfo;
|
|
53
|
+
var groups = item.groups.map(function (group) {
|
|
54
|
+
var options = group.options.map(function (option) {
|
|
55
|
+
if (!hasRemovePrefix(option.name))
|
|
56
|
+
return option;
|
|
57
|
+
if (typeof option.cals === 'number') {
|
|
58
|
+
baseCals = (baseCals !== null && baseCals !== void 0 ? baseCals : 0) + option.cals;
|
|
59
|
+
}
|
|
60
|
+
baseNutrition = addToBase(baseNutrition, option);
|
|
61
|
+
return negateRemoveOption(option);
|
|
62
|
+
});
|
|
63
|
+
return tslib_1.__assign(tslib_1.__assign({}, group), { options: options });
|
|
64
|
+
});
|
|
65
|
+
return tslib_1.__assign(tslib_1.__assign({}, item), { cals: baseCals, nutritionalInfo: baseNutrition, groups: groups });
|
|
66
|
+
}
|
|
67
|
+
exports.applyRemoveOptions = applyRemoveOptions;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { __assign } from "tslib";
|
|
2
|
-
import { makeOrderItem, rehydrateOrderItem, useMenuItem, useOrderItem } from '@open-tender/utils';
|
|
2
|
+
import { calcPrices, makeOrderItem, rehydrateOrderItem, useMenuItem, useOrderItem } from '@open-tender/utils';
|
|
3
3
|
import { memo, useMemo } from 'react';
|
|
4
4
|
import { useAppDispatch, useAppSelector } from '../app/hooks';
|
|
5
5
|
import { selectCartCounts, selectKioskApi, selectKioskConfig, selectMenu, selectPointsProgram, selectStoreSettings, setCurrentItem } from '../slices';
|
|
6
|
+
import { applyRemoveOptions } from '../utils/removeOptions';
|
|
6
7
|
var CategoryItem = function (_a) {
|
|
7
8
|
var item = _a.item, favorite = _a.favorite, allergenAlerts = _a.allergenAlerts, placeholder = _a.placeholder, index = _a.index, navigate = _a.navigate, children = _a.children;
|
|
8
9
|
var dispatch = useAppDispatch();
|
|
@@ -17,8 +18,9 @@ var CategoryItem = function (_a) {
|
|
|
17
18
|
var _c = displaySettings || {}, _d = _c.calories, showCals = _d === void 0 ? false : _d, _e = _c.tags, showTags = _e === void 0 ? false : _e, _f = _c.allergens, showAllergens = _f === void 0 ? false : _f;
|
|
18
19
|
var showDesc = 'SHOW';
|
|
19
20
|
var orderItem = useMemo(function () {
|
|
20
|
-
|
|
21
|
+
var base = favorite
|
|
21
22
|
? __assign(__assign({}, rehydrateOrderItem(item, favorite.item)), { index: -1 }) : makeOrderItem(item, undefined, soldOut, undefined, hasPoints);
|
|
23
|
+
return calcPrices(applyRemoveOptions(base));
|
|
22
24
|
}, [favorite, hasPoints, item, soldOut]);
|
|
23
25
|
var _g = useMenuItem(orderItem, null, {}, null, undefined), displayPrice = _g.displayPrice, displayCals = _g.displayCals;
|
|
24
26
|
var cartItem = useOrderItem(orderItem, favorite, allergenAlerts, cartCounts, showCals, showTags, showAllergens, showDesc);
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { __assign } from "tslib";
|
|
2
|
+
var REMOVE_SYNONYMS = ['remove', 'without'];
|
|
3
|
+
var nutritionKeys = [
|
|
4
|
+
'calories',
|
|
5
|
+
'cholesterol',
|
|
6
|
+
'dietary_fiber',
|
|
7
|
+
'protein',
|
|
8
|
+
'saturated_fat',
|
|
9
|
+
'sodium',
|
|
10
|
+
'sugars',
|
|
11
|
+
'total_carbs',
|
|
12
|
+
'total_fat',
|
|
13
|
+
'trans_fat'
|
|
14
|
+
];
|
|
15
|
+
function hasRemovePrefix(name) {
|
|
16
|
+
var lower = name.trim().toLowerCase();
|
|
17
|
+
return REMOVE_SYNONYMS.some(function (syn) { return lower.startsWith(syn); });
|
|
18
|
+
}
|
|
19
|
+
function negateNutrition(info) {
|
|
20
|
+
if (!info)
|
|
21
|
+
return null;
|
|
22
|
+
var result = __assign({}, info);
|
|
23
|
+
nutritionKeys.forEach(function (key) {
|
|
24
|
+
var val = result[key];
|
|
25
|
+
if (typeof val === 'number')
|
|
26
|
+
result[key] = -val;
|
|
27
|
+
});
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
function negateRemoveOption(option) {
|
|
31
|
+
return __assign(__assign({}, option), { cals: typeof option.cals === 'number' ? -option.cals : option.cals, price: -option.price, points: typeof option.points === 'number' ? -option.points : option.points, nutritionalInfo: negateNutrition(option.nutritionalInfo) });
|
|
32
|
+
}
|
|
33
|
+
function addToBase(base, option) {
|
|
34
|
+
var optInfo = option.nutritionalInfo;
|
|
35
|
+
if (!optInfo)
|
|
36
|
+
return base;
|
|
37
|
+
var result = __assign({}, (base || {}));
|
|
38
|
+
nutritionKeys.forEach(function (key) {
|
|
39
|
+
var addVal = optInfo[key];
|
|
40
|
+
if (typeof addVal === 'number') {
|
|
41
|
+
var cur = result[key];
|
|
42
|
+
result[key] = (typeof cur === 'number' ? cur : 0) + addVal;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
export function applyRemoveOptions(item) {
|
|
48
|
+
var baseCals = item.cals;
|
|
49
|
+
var baseNutrition = item.nutritionalInfo;
|
|
50
|
+
var groups = item.groups.map(function (group) {
|
|
51
|
+
var options = group.options.map(function (option) {
|
|
52
|
+
if (!hasRemovePrefix(option.name))
|
|
53
|
+
return option;
|
|
54
|
+
if (typeof option.cals === 'number') {
|
|
55
|
+
baseCals = (baseCals !== null && baseCals !== void 0 ? baseCals : 0) + option.cals;
|
|
56
|
+
}
|
|
57
|
+
baseNutrition = addToBase(baseNutrition, option);
|
|
58
|
+
return negateRemoveOption(option);
|
|
59
|
+
});
|
|
60
|
+
return __assign(__assign({}, group), { options: options });
|
|
61
|
+
});
|
|
62
|
+
return __assign(__assign({}, item), { cals: baseCals, nutritionalInfo: baseNutrition, groups: groups });
|
|
63
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-tender/store",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.329",
|
|
4
4
|
"description": "A library of hooks, reducers, utility functions, and types for use with Open Tender applications that utilize our in-store POS API",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|