@growupsell/react-ecommerce-core 2.0.10 → 2.0.13
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/{chunk-OJFAUMZC.js → chunk-VK7BF3ES.js} +161 -114
- package/dist/chunk-VK7BF3ES.js.map +1 -0
- package/dist/index.cjs +158 -110
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +16 -3
- package/dist/index.d.ts +16 -3
- package/dist/index.js +1 -1
- package/dist/provider.cjs +158 -110
- package/dist/provider.cjs.map +1 -1
- package/dist/provider.d.cts +1 -1
- package/dist/provider.d.ts +1 -1
- package/dist/provider.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-OJFAUMZC.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -248,7 +248,7 @@ var CartWishlistRefreshProvider = (props) => {
|
|
|
248
248
|
var useCartWishlistRefresh = () => react.useContext(CartWishlistRefreshContext);
|
|
249
249
|
var CartContext = react.createContext({
|
|
250
250
|
cartItems: [],
|
|
251
|
-
addToCart: () =>
|
|
251
|
+
addToCart: async () => false,
|
|
252
252
|
addToCartLoading: false,
|
|
253
253
|
addToCartError: null,
|
|
254
254
|
clearCart: () => null,
|
|
@@ -450,11 +450,12 @@ var CartProvider = (props) => {
|
|
|
450
450
|
});
|
|
451
451
|
toast.info("Offer removed");
|
|
452
452
|
};
|
|
453
|
-
const addToCart = async (sku, quantity) => {
|
|
453
|
+
const addToCart = async (sku, quantity, customData) => {
|
|
454
454
|
setAddToCartLoading(true);
|
|
455
455
|
setAddToCartError(null);
|
|
456
456
|
setOrderFetchLoading(true);
|
|
457
|
-
|
|
457
|
+
const hasCustomData = customData != null && Object.keys(customData).length > 0;
|
|
458
|
+
let isItemInCart = hasCustomData ? null : cartItems?.find((item) => item.sku.id == sku);
|
|
458
459
|
try {
|
|
459
460
|
if (quantity === 0) {
|
|
460
461
|
if (isItemInCart) {
|
|
@@ -467,7 +468,7 @@ var CartProvider = (props) => {
|
|
|
467
468
|
);
|
|
468
469
|
await fetchOrderDetail();
|
|
469
470
|
}
|
|
470
|
-
return;
|
|
471
|
+
return true;
|
|
471
472
|
}
|
|
472
473
|
if (isItemInCart) {
|
|
473
474
|
await api.api.updateCartItem(isItemInCart.id, {
|
|
@@ -481,17 +482,22 @@ var CartProvider = (props) => {
|
|
|
481
482
|
qty: quantity,
|
|
482
483
|
sku
|
|
483
484
|
};
|
|
485
|
+
if (hasCustomData) {
|
|
486
|
+
body.custom_data = customData;
|
|
487
|
+
}
|
|
484
488
|
await api.api.addProductToCart(body);
|
|
485
489
|
console.log("New item added to cart.");
|
|
486
490
|
toast.success("Item added to cart");
|
|
487
491
|
await fetchOrderDetail();
|
|
488
492
|
}
|
|
493
|
+
return true;
|
|
489
494
|
} catch (error) {
|
|
490
495
|
setOrderFetchLoading(false);
|
|
491
496
|
console.log("Error---->", error);
|
|
492
497
|
const message = error?.response?.message || error?.response?.data?.message || error?.message || "Unable to add to cart. Please try again.";
|
|
493
498
|
setAddToCartError(message);
|
|
494
499
|
toast.error(message);
|
|
500
|
+
return false;
|
|
495
501
|
} finally {
|
|
496
502
|
setAddToCartLoading(false);
|
|
497
503
|
}
|
|
@@ -1049,82 +1055,111 @@ var CustomPageConfigContext = react.createContext({
|
|
|
1049
1055
|
updateConfig: () => null,
|
|
1050
1056
|
removeConfig: () => null,
|
|
1051
1057
|
moveConfig: () => null,
|
|
1058
|
+
heroSliderConfigData: [],
|
|
1059
|
+
onUpdateHeroSlider: async () => void 0,
|
|
1052
1060
|
loading: true
|
|
1053
1061
|
});
|
|
1054
1062
|
var CustomPageConfigProvider = (props) => {
|
|
1055
1063
|
const { token } = useThemeEdit();
|
|
1056
1064
|
const [selectedConfig, setSelectedConfig] = react.useState([]);
|
|
1065
|
+
const [heroSliderConfigData, setHeroSliderConfigData] = react.useState([]);
|
|
1057
1066
|
const [loading, setLoading] = react.useState(true);
|
|
1058
|
-
const
|
|
1067
|
+
const selectedConfigRef = react.useRef([]);
|
|
1068
|
+
const heroSlidesRef = react.useRef([]);
|
|
1069
|
+
const saveQueueRef = react.useRef(Promise.resolve());
|
|
1059
1070
|
const load = react.useCallback(async () => {
|
|
1060
1071
|
setLoading(true);
|
|
1061
1072
|
try {
|
|
1062
1073
|
const row = await api$1.getCustomPageContent(props.pageId, token);
|
|
1063
|
-
const
|
|
1064
|
-
|
|
1074
|
+
const fromContent = api$1.splitCustomPageContent(row?.content);
|
|
1075
|
+
const slides = Array.isArray(row?.hero_content) ? row.hero_content : fromContent.heroSlides;
|
|
1076
|
+
selectedConfigRef.current = fromContent.blocks;
|
|
1077
|
+
heroSlidesRef.current = slides;
|
|
1078
|
+
setSelectedConfig(fromContent.blocks);
|
|
1079
|
+
setHeroSliderConfigData(slides);
|
|
1065
1080
|
} catch (e) {
|
|
1066
1081
|
console.error("Error loading custom page content:", e);
|
|
1067
1082
|
} finally {
|
|
1068
1083
|
setLoading(false);
|
|
1069
1084
|
}
|
|
1070
1085
|
}, [props.pageId, token]);
|
|
1071
|
-
const
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1086
|
+
const persistLatest = react.useCallback(
|
|
1087
|
+
(writeHeroField = false) => {
|
|
1088
|
+
const run = async () => {
|
|
1089
|
+
try {
|
|
1090
|
+
const blocks = selectedConfigRef.current;
|
|
1091
|
+
const slides = heroSlidesRef.current;
|
|
1092
|
+
await api$1.updateCustomPageContent(
|
|
1093
|
+
props.pageId,
|
|
1094
|
+
{
|
|
1095
|
+
content: api$1.mergeCustomPageContent(blocks, slides),
|
|
1096
|
+
...writeHeroField ? { hero_content: slides } : {}
|
|
1097
|
+
},
|
|
1098
|
+
token
|
|
1099
|
+
);
|
|
1100
|
+
} catch (e) {
|
|
1101
|
+
console.error("Error saving custom page content:", e);
|
|
1102
|
+
}
|
|
1103
|
+
};
|
|
1104
|
+
const queued = saveQueueRef.current.then(run, run);
|
|
1105
|
+
saveQueueRef.current = queued;
|
|
1106
|
+
return queued;
|
|
1083
1107
|
},
|
|
1084
|
-
[props.pageId, token
|
|
1108
|
+
[props.pageId, token]
|
|
1085
1109
|
);
|
|
1110
|
+
const replaceSelectedConfig = react.useCallback((value) => {
|
|
1111
|
+
const next = typeof value === "function" ? value(selectedConfigRef.current) : value;
|
|
1112
|
+
const normalized = Array.isArray(next) ? next : [];
|
|
1113
|
+
selectedConfigRef.current = normalized;
|
|
1114
|
+
setSelectedConfig(normalized);
|
|
1115
|
+
}, []);
|
|
1086
1116
|
const addConfig = react.useCallback(
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
});
|
|
1117
|
+
(config) => {
|
|
1118
|
+
const next = [...selectedConfigRef.current, config];
|
|
1119
|
+
selectedConfigRef.current = next;
|
|
1120
|
+
setSelectedConfig(next);
|
|
1121
|
+
void persistLatest();
|
|
1093
1122
|
},
|
|
1094
|
-
[
|
|
1123
|
+
[persistLatest]
|
|
1095
1124
|
);
|
|
1096
1125
|
const updateConfig = react.useCallback(
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
});
|
|
1126
|
+
(config, index) => {
|
|
1127
|
+
const next = [...selectedConfigRef.current];
|
|
1128
|
+
next[index] = config;
|
|
1129
|
+
selectedConfigRef.current = next;
|
|
1130
|
+
setSelectedConfig(next);
|
|
1131
|
+
void persistLatest();
|
|
1104
1132
|
},
|
|
1105
|
-
[
|
|
1133
|
+
[persistLatest]
|
|
1106
1134
|
);
|
|
1107
1135
|
const moveConfig = react.useCallback(
|
|
1108
1136
|
(fromIndex, toIndex) => {
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
});
|
|
1137
|
+
const next = [...selectedConfigRef.current];
|
|
1138
|
+
const [moved] = next.splice(fromIndex, 1);
|
|
1139
|
+
next.splice(toIndex, 0, moved);
|
|
1140
|
+
selectedConfigRef.current = next;
|
|
1141
|
+
setSelectedConfig(next);
|
|
1142
|
+
void persistLatest();
|
|
1116
1143
|
},
|
|
1117
|
-
[
|
|
1144
|
+
[persistLatest]
|
|
1118
1145
|
);
|
|
1119
1146
|
const removeConfig = react.useCallback(
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1147
|
+
(index) => {
|
|
1148
|
+
const next = selectedConfigRef.current.filter((_2, i) => i !== index);
|
|
1149
|
+
selectedConfigRef.current = next;
|
|
1150
|
+
setSelectedConfig(next);
|
|
1151
|
+
void persistLatest();
|
|
1152
|
+
},
|
|
1153
|
+
[persistLatest]
|
|
1154
|
+
);
|
|
1155
|
+
const onUpdateHeroSlider = react.useCallback(
|
|
1156
|
+
async (slidesToSave) => {
|
|
1157
|
+
const slides = Array.isArray(slidesToSave) ? slidesToSave : [];
|
|
1158
|
+
heroSlidesRef.current = slides;
|
|
1159
|
+
setHeroSliderConfigData(slides);
|
|
1160
|
+
await persistLatest(true);
|
|
1126
1161
|
},
|
|
1127
|
-
[
|
|
1162
|
+
[persistLatest]
|
|
1128
1163
|
);
|
|
1129
1164
|
react.useEffect(() => {
|
|
1130
1165
|
load();
|
|
@@ -1134,11 +1169,13 @@ var CustomPageConfigProvider = (props) => {
|
|
|
1134
1169
|
{
|
|
1135
1170
|
value: {
|
|
1136
1171
|
selectedConfig,
|
|
1137
|
-
setSelectedConfig,
|
|
1172
|
+
setSelectedConfig: replaceSelectedConfig,
|
|
1138
1173
|
addConfig,
|
|
1139
1174
|
updateConfig,
|
|
1140
1175
|
removeConfig,
|
|
1141
1176
|
moveConfig,
|
|
1177
|
+
heroSliderConfigData,
|
|
1178
|
+
onUpdateHeroSlider,
|
|
1142
1179
|
loading
|
|
1143
1180
|
},
|
|
1144
1181
|
children: props.children
|
|
@@ -1146,6 +1183,75 @@ var CustomPageConfigProvider = (props) => {
|
|
|
1146
1183
|
);
|
|
1147
1184
|
};
|
|
1148
1185
|
var useCustomPageConfig = () => react.useContext(CustomPageConfigContext);
|
|
1186
|
+
var HomeConfigHeroSliderContext = react.createContext({
|
|
1187
|
+
loading: true,
|
|
1188
|
+
heroSliderConfigData: [],
|
|
1189
|
+
onUpdateHeroSlider: () => null
|
|
1190
|
+
});
|
|
1191
|
+
var HomeConfigHeroSliderProvider = (props) => {
|
|
1192
|
+
const [loading, setLoading] = react.useState(true);
|
|
1193
|
+
const [heroSliderConfigData, setHeroSliderConfigData] = react.useState([]);
|
|
1194
|
+
const { token } = useThemeEdit();
|
|
1195
|
+
const themeConfig = react.useContext(BusinessConfigContext);
|
|
1196
|
+
const getHeroSliderConfig = async () => {
|
|
1197
|
+
setLoading(true);
|
|
1198
|
+
try {
|
|
1199
|
+
const response = await api$1.retrieveThemeContent(
|
|
1200
|
+
themeConfig.theme.id,
|
|
1201
|
+
"hero_slider"
|
|
1202
|
+
);
|
|
1203
|
+
setHeroSliderConfigData(response.data);
|
|
1204
|
+
} finally {
|
|
1205
|
+
setLoading(false);
|
|
1206
|
+
}
|
|
1207
|
+
};
|
|
1208
|
+
react.useEffect(() => {
|
|
1209
|
+
getHeroSliderConfig();
|
|
1210
|
+
}, []);
|
|
1211
|
+
const onUpdateHeroSlider = async (configToUpdate) => {
|
|
1212
|
+
setLoading(true);
|
|
1213
|
+
try {
|
|
1214
|
+
const body = {
|
|
1215
|
+
data: configToUpdate,
|
|
1216
|
+
slug: "hero_slider",
|
|
1217
|
+
platform: typeof window !== "undefined" ? "website" : "app"
|
|
1218
|
+
};
|
|
1219
|
+
await api$1.updateThemeContent(
|
|
1220
|
+
body,
|
|
1221
|
+
themeConfig?.theme?.id,
|
|
1222
|
+
"hero_slider",
|
|
1223
|
+
token
|
|
1224
|
+
);
|
|
1225
|
+
const updatedResponse = await api$1.retrieveThemeContent(
|
|
1226
|
+
themeConfig.theme.id,
|
|
1227
|
+
"hero_slider"
|
|
1228
|
+
);
|
|
1229
|
+
setHeroSliderConfigData(updatedResponse.data);
|
|
1230
|
+
} catch (error) {
|
|
1231
|
+
console.error("Error updating theme content:", error);
|
|
1232
|
+
} finally {
|
|
1233
|
+
setLoading(false);
|
|
1234
|
+
}
|
|
1235
|
+
};
|
|
1236
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1237
|
+
HomeConfigHeroSliderContext.Provider,
|
|
1238
|
+
{
|
|
1239
|
+
value: { loading, heroSliderConfigData, onUpdateHeroSlider },
|
|
1240
|
+
children: props.children
|
|
1241
|
+
}
|
|
1242
|
+
);
|
|
1243
|
+
};
|
|
1244
|
+
var useHomeConfigHeroSlider = () => react.useContext(HomeConfigHeroSliderContext);
|
|
1245
|
+
var CustomPageHeroSliderProvider = (props) => {
|
|
1246
|
+
const { loading, heroSliderConfigData, onUpdateHeroSlider } = useCustomPageConfig();
|
|
1247
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1248
|
+
HomeConfigHeroSliderContext.Provider,
|
|
1249
|
+
{
|
|
1250
|
+
value: { loading, heroSliderConfigData, onUpdateHeroSlider },
|
|
1251
|
+
children: props.children
|
|
1252
|
+
}
|
|
1253
|
+
);
|
|
1254
|
+
};
|
|
1149
1255
|
var WishlistContext = react.createContext({
|
|
1150
1256
|
wishlistItems: [],
|
|
1151
1257
|
addToWishlist: () => null,
|
|
@@ -1293,65 +1399,6 @@ var useModal = () => {
|
|
|
1293
1399
|
}
|
|
1294
1400
|
return context;
|
|
1295
1401
|
};
|
|
1296
|
-
var HomeConfigHeroSliderContext = react.createContext({
|
|
1297
|
-
loading: true,
|
|
1298
|
-
heroSliderConfigData: [],
|
|
1299
|
-
onUpdateHeroSlider: () => null
|
|
1300
|
-
});
|
|
1301
|
-
var HomeConfigHeroSliderProvider = (props) => {
|
|
1302
|
-
const [loading, setLoading] = react.useState(true);
|
|
1303
|
-
const [heroSliderConfigData, setHeroSliderConfigData] = react.useState([]);
|
|
1304
|
-
const { token } = useThemeEdit();
|
|
1305
|
-
const themeConfig = react.useContext(BusinessConfigContext);
|
|
1306
|
-
const getHeroSliderConfig = async () => {
|
|
1307
|
-
setLoading(true);
|
|
1308
|
-
try {
|
|
1309
|
-
const response = await api$1.retrieveThemeContent(
|
|
1310
|
-
themeConfig.theme.id,
|
|
1311
|
-
"hero_slider"
|
|
1312
|
-
);
|
|
1313
|
-
setHeroSliderConfigData(response.data);
|
|
1314
|
-
} finally {
|
|
1315
|
-
setLoading(false);
|
|
1316
|
-
}
|
|
1317
|
-
};
|
|
1318
|
-
react.useEffect(() => {
|
|
1319
|
-
getHeroSliderConfig();
|
|
1320
|
-
}, []);
|
|
1321
|
-
const onUpdateHeroSlider = async (configToUpdate) => {
|
|
1322
|
-
setLoading(true);
|
|
1323
|
-
try {
|
|
1324
|
-
const body = {
|
|
1325
|
-
data: configToUpdate,
|
|
1326
|
-
slug: "hero_slider",
|
|
1327
|
-
platform: typeof window !== "undefined" ? "website" : "app"
|
|
1328
|
-
};
|
|
1329
|
-
await api$1.updateThemeContent(
|
|
1330
|
-
body,
|
|
1331
|
-
themeConfig?.theme?.id,
|
|
1332
|
-
"hero_slider",
|
|
1333
|
-
token
|
|
1334
|
-
);
|
|
1335
|
-
const updatedResponse = await api$1.retrieveThemeContent(
|
|
1336
|
-
themeConfig.theme.id,
|
|
1337
|
-
"hero_slider"
|
|
1338
|
-
);
|
|
1339
|
-
setHeroSliderConfigData(updatedResponse.data);
|
|
1340
|
-
} catch (error) {
|
|
1341
|
-
console.error("Error updating theme content:", error);
|
|
1342
|
-
} finally {
|
|
1343
|
-
setLoading(false);
|
|
1344
|
-
}
|
|
1345
|
-
};
|
|
1346
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1347
|
-
HomeConfigHeroSliderContext.Provider,
|
|
1348
|
-
{
|
|
1349
|
-
value: { loading, heroSliderConfigData, onUpdateHeroSlider },
|
|
1350
|
-
children: props.children
|
|
1351
|
-
}
|
|
1352
|
-
);
|
|
1353
|
-
};
|
|
1354
|
-
var useHomeConfigHeroSlider = () => react.useContext(HomeConfigHeroSliderContext);
|
|
1355
1402
|
var HeaderFooterContext = react.createContext({
|
|
1356
1403
|
headerConfig: {},
|
|
1357
1404
|
footerConfig: {},
|
|
@@ -1874,6 +1921,7 @@ exports.CartWishlistRefreshContext = CartWishlistRefreshContext;
|
|
|
1874
1921
|
exports.CartWishlistRefreshProvider = CartWishlistRefreshProvider;
|
|
1875
1922
|
exports.CustomPageConfigContext = CustomPageConfigContext;
|
|
1876
1923
|
exports.CustomPageConfigProvider = CustomPageConfigProvider;
|
|
1924
|
+
exports.CustomPageHeroSliderProvider = CustomPageHeroSliderProvider;
|
|
1877
1925
|
exports.CustomerConfigContext = CustomerConfigContext;
|
|
1878
1926
|
exports.CustomerConfigProvider = CustomerConfigProvider;
|
|
1879
1927
|
exports.FilterContext = FilterContext;
|