@growupsell/react-ecommerce-core 2.0.2 → 2.0.12
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-XL2AT5BD.js → chunk-VK7BF3ES.js} +172 -118
- package/dist/chunk-VK7BF3ES.js.map +1 -0
- package/dist/index.cjs +169 -114
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +18 -3
- package/dist/index.d.ts +18 -3
- package/dist/index.js +1 -1
- package/dist/provider.cjs +169 -114
- 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-XL2AT5BD.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -37,7 +37,8 @@ var AuthContext = react.createContext({
|
|
|
37
37
|
customerSession: null,
|
|
38
38
|
loadingToken: null,
|
|
39
39
|
loadingUser: null,
|
|
40
|
-
token: null
|
|
40
|
+
token: null,
|
|
41
|
+
userDataStoredLocation: null
|
|
41
42
|
});
|
|
42
43
|
var AuthProvider = (props) => {
|
|
43
44
|
const [user, setUser] = react.useState(null);
|
|
@@ -47,6 +48,7 @@ var AuthProvider = (props) => {
|
|
|
47
48
|
const [loadingToken, setLoadingToken] = react.useState(false);
|
|
48
49
|
const storage = useStorage();
|
|
49
50
|
const [token, setToken] = react.useState();
|
|
51
|
+
const [userDataStoredLocation, setUserDataStoredLocation] = react.useState(null);
|
|
50
52
|
const signIn = (data, rememberMe) => {
|
|
51
53
|
if (data.is_active) {
|
|
52
54
|
api.WAApi.defaults.headers.common["x-customer-token"] = `${data.token}`;
|
|
@@ -54,9 +56,11 @@ var AuthProvider = (props) => {
|
|
|
54
56
|
const type = rememberMe ? "local" : "session";
|
|
55
57
|
storage.setItem("user", JSON.stringify(data), type);
|
|
56
58
|
setUser(data);
|
|
59
|
+
setUserDataStoredLocation(type);
|
|
57
60
|
};
|
|
58
61
|
const signOut = () => {
|
|
59
62
|
setUser(null);
|
|
63
|
+
setUserDataStoredLocation(null);
|
|
60
64
|
storage.clearAll();
|
|
61
65
|
delete api.WAApi.defaults.headers.common["x-customer-token"];
|
|
62
66
|
};
|
|
@@ -98,10 +102,12 @@ var AuthProvider = (props) => {
|
|
|
98
102
|
let customer = JSON.parse(local_user);
|
|
99
103
|
api.WAApi.defaults.headers.common["x-customer-token"] = customer.token;
|
|
100
104
|
setUser(customer);
|
|
105
|
+
setUserDataStoredLocation("local");
|
|
101
106
|
} else if (session_user) {
|
|
102
107
|
let session_customer = JSON.parse(session_user);
|
|
103
108
|
api.WAApi.defaults.headers.common["x-customer-token"] = session_customer.token;
|
|
104
109
|
setUser(session_customer);
|
|
110
|
+
setUserDataStoredLocation("session");
|
|
105
111
|
}
|
|
106
112
|
setLoadingUser(false);
|
|
107
113
|
}, []);
|
|
@@ -131,7 +137,8 @@ var AuthProvider = (props) => {
|
|
|
131
137
|
customerSession,
|
|
132
138
|
loadingToken,
|
|
133
139
|
loadingUser,
|
|
134
|
-
token
|
|
140
|
+
token,
|
|
141
|
+
userDataStoredLocation
|
|
135
142
|
},
|
|
136
143
|
children: loading ? null : props.children
|
|
137
144
|
}
|
|
@@ -221,11 +228,11 @@ function createNoopToastSupport() {
|
|
|
221
228
|
}
|
|
222
229
|
var ToastSupportContext = react.createContext(createNoopToastSupport());
|
|
223
230
|
function ToastSupportProvider({ children, value }) {
|
|
224
|
-
const
|
|
231
|
+
const api12 = react.useMemo(() => {
|
|
225
232
|
if (!value) return createNoopToastSupport();
|
|
226
233
|
return { ...createNoopToastSupport(), ...value };
|
|
227
234
|
}, [value]);
|
|
228
|
-
return /* @__PURE__ */ jsxRuntime.jsx(ToastSupportContext.Provider, { value:
|
|
235
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ToastSupportContext.Provider, { value: api12, children });
|
|
229
236
|
}
|
|
230
237
|
function useToastSupport() {
|
|
231
238
|
return react.useContext(ToastSupportContext);
|
|
@@ -241,7 +248,7 @@ var CartWishlistRefreshProvider = (props) => {
|
|
|
241
248
|
var useCartWishlistRefresh = () => react.useContext(CartWishlistRefreshContext);
|
|
242
249
|
var CartContext = react.createContext({
|
|
243
250
|
cartItems: [],
|
|
244
|
-
addToCart: () =>
|
|
251
|
+
addToCart: async () => false,
|
|
245
252
|
addToCartLoading: false,
|
|
246
253
|
addToCartError: null,
|
|
247
254
|
clearCart: () => null,
|
|
@@ -443,11 +450,12 @@ var CartProvider = (props) => {
|
|
|
443
450
|
});
|
|
444
451
|
toast.info("Offer removed");
|
|
445
452
|
};
|
|
446
|
-
const addToCart = async (sku, quantity) => {
|
|
453
|
+
const addToCart = async (sku, quantity, customData) => {
|
|
447
454
|
setAddToCartLoading(true);
|
|
448
455
|
setAddToCartError(null);
|
|
449
456
|
setOrderFetchLoading(true);
|
|
450
|
-
|
|
457
|
+
const hasCustomData = customData != null && Object.keys(customData).length > 0;
|
|
458
|
+
let isItemInCart = hasCustomData ? null : cartItems?.find((item) => item.sku.id == sku);
|
|
451
459
|
try {
|
|
452
460
|
if (quantity === 0) {
|
|
453
461
|
if (isItemInCart) {
|
|
@@ -460,7 +468,7 @@ var CartProvider = (props) => {
|
|
|
460
468
|
);
|
|
461
469
|
await fetchOrderDetail();
|
|
462
470
|
}
|
|
463
|
-
return;
|
|
471
|
+
return true;
|
|
464
472
|
}
|
|
465
473
|
if (isItemInCart) {
|
|
466
474
|
await api.api.updateCartItem(isItemInCart.id, {
|
|
@@ -474,17 +482,22 @@ var CartProvider = (props) => {
|
|
|
474
482
|
qty: quantity,
|
|
475
483
|
sku
|
|
476
484
|
};
|
|
485
|
+
if (hasCustomData) {
|
|
486
|
+
body.custom_data = customData;
|
|
487
|
+
}
|
|
477
488
|
await api.api.addProductToCart(body);
|
|
478
489
|
console.log("New item added to cart.");
|
|
479
490
|
toast.success("Item added to cart");
|
|
480
491
|
await fetchOrderDetail();
|
|
481
492
|
}
|
|
493
|
+
return true;
|
|
482
494
|
} catch (error) {
|
|
483
495
|
setOrderFetchLoading(false);
|
|
484
496
|
console.log("Error---->", error);
|
|
485
497
|
const message = error?.response?.message || error?.response?.data?.message || error?.message || "Unable to add to cart. Please try again.";
|
|
486
498
|
setAddToCartError(message);
|
|
487
499
|
toast.error(message);
|
|
500
|
+
return false;
|
|
488
501
|
} finally {
|
|
489
502
|
setAddToCartLoading(false);
|
|
490
503
|
}
|
|
@@ -1042,82 +1055,111 @@ var CustomPageConfigContext = react.createContext({
|
|
|
1042
1055
|
updateConfig: () => null,
|
|
1043
1056
|
removeConfig: () => null,
|
|
1044
1057
|
moveConfig: () => null,
|
|
1058
|
+
heroSliderConfigData: [],
|
|
1059
|
+
onUpdateHeroSlider: async () => void 0,
|
|
1045
1060
|
loading: true
|
|
1046
1061
|
});
|
|
1047
1062
|
var CustomPageConfigProvider = (props) => {
|
|
1048
1063
|
const { token } = useThemeEdit();
|
|
1049
1064
|
const [selectedConfig, setSelectedConfig] = react.useState([]);
|
|
1065
|
+
const [heroSliderConfigData, setHeroSliderConfigData] = react.useState([]);
|
|
1050
1066
|
const [loading, setLoading] = react.useState(true);
|
|
1051
|
-
const
|
|
1067
|
+
const selectedConfigRef = react.useRef([]);
|
|
1068
|
+
const heroSlidesRef = react.useRef([]);
|
|
1069
|
+
const saveQueueRef = react.useRef(Promise.resolve());
|
|
1052
1070
|
const load = react.useCallback(async () => {
|
|
1053
1071
|
setLoading(true);
|
|
1054
1072
|
try {
|
|
1055
1073
|
const row = await api$1.getCustomPageContent(props.pageId, token);
|
|
1056
|
-
const
|
|
1057
|
-
|
|
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);
|
|
1058
1080
|
} catch (e) {
|
|
1059
1081
|
console.error("Error loading custom page content:", e);
|
|
1060
1082
|
} finally {
|
|
1061
1083
|
setLoading(false);
|
|
1062
1084
|
}
|
|
1063
1085
|
}, [props.pageId, token]);
|
|
1064
|
-
const
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
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;
|
|
1076
1107
|
},
|
|
1077
|
-
[props.pageId, token
|
|
1108
|
+
[props.pageId, token]
|
|
1078
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
|
+
}, []);
|
|
1079
1116
|
const addConfig = react.useCallback(
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
});
|
|
1117
|
+
(config) => {
|
|
1118
|
+
const next = [...selectedConfigRef.current, config];
|
|
1119
|
+
selectedConfigRef.current = next;
|
|
1120
|
+
setSelectedConfig(next);
|
|
1121
|
+
void persistLatest();
|
|
1086
1122
|
},
|
|
1087
|
-
[
|
|
1123
|
+
[persistLatest]
|
|
1088
1124
|
);
|
|
1089
1125
|
const updateConfig = react.useCallback(
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
});
|
|
1126
|
+
(config, index) => {
|
|
1127
|
+
const next = [...selectedConfigRef.current];
|
|
1128
|
+
next[index] = config;
|
|
1129
|
+
selectedConfigRef.current = next;
|
|
1130
|
+
setSelectedConfig(next);
|
|
1131
|
+
void persistLatest();
|
|
1097
1132
|
},
|
|
1098
|
-
[
|
|
1133
|
+
[persistLatest]
|
|
1099
1134
|
);
|
|
1100
1135
|
const moveConfig = react.useCallback(
|
|
1101
1136
|
(fromIndex, toIndex) => {
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
});
|
|
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();
|
|
1109
1143
|
},
|
|
1110
|
-
[
|
|
1144
|
+
[persistLatest]
|
|
1111
1145
|
);
|
|
1112
1146
|
const removeConfig = react.useCallback(
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
});
|
|
1147
|
+
(index) => {
|
|
1148
|
+
const next = selectedConfigRef.current.filter((_2, i) => i !== index);
|
|
1149
|
+
selectedConfigRef.current = next;
|
|
1150
|
+
setSelectedConfig(next);
|
|
1151
|
+
void persistLatest();
|
|
1119
1152
|
},
|
|
1120
|
-
[
|
|
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);
|
|
1161
|
+
},
|
|
1162
|
+
[persistLatest]
|
|
1121
1163
|
);
|
|
1122
1164
|
react.useEffect(() => {
|
|
1123
1165
|
load();
|
|
@@ -1127,11 +1169,13 @@ var CustomPageConfigProvider = (props) => {
|
|
|
1127
1169
|
{
|
|
1128
1170
|
value: {
|
|
1129
1171
|
selectedConfig,
|
|
1130
|
-
setSelectedConfig,
|
|
1172
|
+
setSelectedConfig: replaceSelectedConfig,
|
|
1131
1173
|
addConfig,
|
|
1132
1174
|
updateConfig,
|
|
1133
1175
|
removeConfig,
|
|
1134
1176
|
moveConfig,
|
|
1177
|
+
heroSliderConfigData,
|
|
1178
|
+
onUpdateHeroSlider,
|
|
1135
1179
|
loading
|
|
1136
1180
|
},
|
|
1137
1181
|
children: props.children
|
|
@@ -1139,6 +1183,75 @@ var CustomPageConfigProvider = (props) => {
|
|
|
1139
1183
|
);
|
|
1140
1184
|
};
|
|
1141
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
|
+
};
|
|
1142
1255
|
var WishlistContext = react.createContext({
|
|
1143
1256
|
wishlistItems: [],
|
|
1144
1257
|
addToWishlist: () => null,
|
|
@@ -1286,65 +1399,6 @@ var useModal = () => {
|
|
|
1286
1399
|
}
|
|
1287
1400
|
return context;
|
|
1288
1401
|
};
|
|
1289
|
-
var HomeConfigHeroSliderContext = react.createContext({
|
|
1290
|
-
loading: true,
|
|
1291
|
-
heroSliderConfigData: [],
|
|
1292
|
-
onUpdateHeroSlider: () => null
|
|
1293
|
-
});
|
|
1294
|
-
var HomeConfigHeroSliderProvider = (props) => {
|
|
1295
|
-
const [loading, setLoading] = react.useState(true);
|
|
1296
|
-
const [heroSliderConfigData, setHeroSliderConfigData] = react.useState([]);
|
|
1297
|
-
const { token } = useThemeEdit();
|
|
1298
|
-
const themeConfig = react.useContext(BusinessConfigContext);
|
|
1299
|
-
const getHeroSliderConfig = async () => {
|
|
1300
|
-
setLoading(true);
|
|
1301
|
-
try {
|
|
1302
|
-
const response = await api$1.retrieveThemeContent(
|
|
1303
|
-
themeConfig.theme.id,
|
|
1304
|
-
"hero_slider"
|
|
1305
|
-
);
|
|
1306
|
-
setHeroSliderConfigData(response.data);
|
|
1307
|
-
} finally {
|
|
1308
|
-
setLoading(false);
|
|
1309
|
-
}
|
|
1310
|
-
};
|
|
1311
|
-
react.useEffect(() => {
|
|
1312
|
-
getHeroSliderConfig();
|
|
1313
|
-
}, []);
|
|
1314
|
-
const onUpdateHeroSlider = async (configToUpdate) => {
|
|
1315
|
-
setLoading(true);
|
|
1316
|
-
try {
|
|
1317
|
-
const body = {
|
|
1318
|
-
data: configToUpdate,
|
|
1319
|
-
slug: "hero_slider",
|
|
1320
|
-
platform: typeof window !== "undefined" ? "website" : "app"
|
|
1321
|
-
};
|
|
1322
|
-
await api$1.updateThemeContent(
|
|
1323
|
-
body,
|
|
1324
|
-
themeConfig?.theme?.id,
|
|
1325
|
-
"hero_slider",
|
|
1326
|
-
token
|
|
1327
|
-
);
|
|
1328
|
-
const updatedResponse = await api$1.retrieveThemeContent(
|
|
1329
|
-
themeConfig.theme.id,
|
|
1330
|
-
"hero_slider"
|
|
1331
|
-
);
|
|
1332
|
-
setHeroSliderConfigData(updatedResponse.data);
|
|
1333
|
-
} catch (error) {
|
|
1334
|
-
console.error("Error updating theme content:", error);
|
|
1335
|
-
} finally {
|
|
1336
|
-
setLoading(false);
|
|
1337
|
-
}
|
|
1338
|
-
};
|
|
1339
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1340
|
-
HomeConfigHeroSliderContext.Provider,
|
|
1341
|
-
{
|
|
1342
|
-
value: { loading, heroSliderConfigData, onUpdateHeroSlider },
|
|
1343
|
-
children: props.children
|
|
1344
|
-
}
|
|
1345
|
-
);
|
|
1346
|
-
};
|
|
1347
|
-
var useHomeConfigHeroSlider = () => react.useContext(HomeConfigHeroSliderContext);
|
|
1348
1402
|
var HeaderFooterContext = react.createContext({
|
|
1349
1403
|
headerConfig: {},
|
|
1350
1404
|
footerConfig: {},
|
|
@@ -1867,6 +1921,7 @@ exports.CartWishlistRefreshContext = CartWishlistRefreshContext;
|
|
|
1867
1921
|
exports.CartWishlistRefreshProvider = CartWishlistRefreshProvider;
|
|
1868
1922
|
exports.CustomPageConfigContext = CustomPageConfigContext;
|
|
1869
1923
|
exports.CustomPageConfigProvider = CustomPageConfigProvider;
|
|
1924
|
+
exports.CustomPageHeroSliderProvider = CustomPageHeroSliderProvider;
|
|
1870
1925
|
exports.CustomerConfigContext = CustomerConfigContext;
|
|
1871
1926
|
exports.CustomerConfigProvider = CustomerConfigProvider;
|
|
1872
1927
|
exports.FilterContext = FilterContext;
|