@growupsell/react-ecommerce-core 2.0.12 → 2.0.14
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-VK7BF3ES.js → chunk-E66B7ABK.js} +124 -109
- package/dist/chunk-E66B7ABK.js.map +1 -0
- package/dist/index.cjs +121 -107
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -10
- package/dist/index.d.ts +5 -10
- package/dist/index.js +1 -1
- package/dist/provider.cjs +121 -107
- 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-VK7BF3ES.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -776,11 +776,42 @@ var ProductDetailContext = react.createContext({
|
|
|
776
776
|
waitProductLoading: true,
|
|
777
777
|
setSelectedVariants: () => null
|
|
778
778
|
});
|
|
779
|
+
function resolveSelectedVariants(productDetail, selected_variants) {
|
|
780
|
+
if (!productDetail?.variant) return [];
|
|
781
|
+
if (selected_variants !== null && selected_variants !== void 0) {
|
|
782
|
+
const selectedIds = String(selected_variants).split(",").map(Number).filter((id) => Number.isFinite(id));
|
|
783
|
+
return productDetail.variant?.map((vType) => {
|
|
784
|
+
const matchedVariant = vType.variants.find(
|
|
785
|
+
(variant) => selectedIds.includes(variant.id)
|
|
786
|
+
);
|
|
787
|
+
if (matchedVariant) {
|
|
788
|
+
return {
|
|
789
|
+
id: matchedVariant.id,
|
|
790
|
+
type: vType.variant_type.type,
|
|
791
|
+
value: matchedVariant.label
|
|
792
|
+
};
|
|
793
|
+
}
|
|
794
|
+
return null;
|
|
795
|
+
}).filter(Boolean) || [];
|
|
796
|
+
}
|
|
797
|
+
return productDetail.variant?.map((vType) => ({
|
|
798
|
+
id: vType.variants[0].id,
|
|
799
|
+
type: vType.variant_type.type,
|
|
800
|
+
value: vType.variants[0].label
|
|
801
|
+
})) || [];
|
|
802
|
+
}
|
|
779
803
|
var ProductDetailProvider = (props) => {
|
|
780
|
-
const
|
|
781
|
-
const [
|
|
782
|
-
|
|
783
|
-
|
|
804
|
+
const hasInitial = Boolean(props.initialProductDetail);
|
|
805
|
+
const [selectedVariants, setSelectedVariants] = react.useState(
|
|
806
|
+
() => hasInitial ? resolveSelectedVariants(
|
|
807
|
+
props.initialProductDetail,
|
|
808
|
+
props.selected_variants
|
|
809
|
+
) : []
|
|
810
|
+
);
|
|
811
|
+
const [productDetail, setProductDetail] = react.useState(
|
|
812
|
+
props.initialProductDetail ?? null
|
|
813
|
+
);
|
|
814
|
+
const [waitProductLoading, setWaitProductLoading] = react.useState(!hasInitial);
|
|
784
815
|
const selectUnselectVariants = (type, value, id) => {
|
|
785
816
|
setWaitProductLoading(true);
|
|
786
817
|
setSelectedVariants((prev) => {
|
|
@@ -800,35 +831,15 @@ var ProductDetailProvider = (props) => {
|
|
|
800
831
|
};
|
|
801
832
|
react.useEffect(() => {
|
|
802
833
|
(async () => {
|
|
803
|
-
|
|
834
|
+
if (!hasInitial) {
|
|
835
|
+
setWaitProductLoading(true);
|
|
836
|
+
}
|
|
804
837
|
try {
|
|
805
838
|
const productDetail2 = await api.api.getProductDetail(props.productId);
|
|
806
839
|
setProductDetail(productDetail2);
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
(variant) => selectedIds.includes(variant.id)
|
|
811
|
-
);
|
|
812
|
-
if (matchedVariant) {
|
|
813
|
-
return {
|
|
814
|
-
id: matchedVariant.id,
|
|
815
|
-
type: vType.variant_type.type,
|
|
816
|
-
value: matchedVariant.label
|
|
817
|
-
};
|
|
818
|
-
}
|
|
819
|
-
return null;
|
|
820
|
-
}).filter(Boolean);
|
|
821
|
-
setSelectedVariants(initialV || []);
|
|
822
|
-
} else {
|
|
823
|
-
let initialV = productDetail2.variant.map((vType) => {
|
|
824
|
-
return {
|
|
825
|
-
id: vType.variants[0].id,
|
|
826
|
-
type: vType.variant_type.type,
|
|
827
|
-
value: vType.variants[0].label
|
|
828
|
-
};
|
|
829
|
-
});
|
|
830
|
-
setSelectedVariants(initialV || []);
|
|
831
|
-
}
|
|
840
|
+
setSelectedVariants(
|
|
841
|
+
resolveSelectedVariants(productDetail2, props.selected_variants)
|
|
842
|
+
);
|
|
832
843
|
} catch (error) {
|
|
833
844
|
console.error("Error loading product details:", error);
|
|
834
845
|
} finally {
|
|
@@ -926,15 +937,23 @@ var HomeConfigContext = react.createContext({
|
|
|
926
937
|
loading: true
|
|
927
938
|
});
|
|
928
939
|
var HomeConfigProvider = (props) => {
|
|
929
|
-
const
|
|
940
|
+
const hasInitial = Boolean(props.initialThemeContent);
|
|
941
|
+
const [selectedConfig, setSelectedConfig] = react.useState(() => {
|
|
942
|
+
const data = props.initialThemeContent?.data;
|
|
943
|
+
return Array.isArray(data) ? data.filter((item) => item !== null && item !== void 0) : [];
|
|
944
|
+
});
|
|
930
945
|
const { token } = useThemeEdit();
|
|
931
946
|
const themeConfig = react.useContext(BusinessConfigContext);
|
|
932
|
-
const [themeConfigData, setThemeConfigData] = react.useState(
|
|
933
|
-
|
|
947
|
+
const [themeConfigData, setThemeConfigData] = react.useState(
|
|
948
|
+
props.initialThemeContent ?? {}
|
|
949
|
+
);
|
|
950
|
+
const [isInitialized, setIsInitialized] = react.useState(hasInitial);
|
|
934
951
|
const updateRef = react.useRef(false);
|
|
935
|
-
const [loading, setLoading] = react.useState(
|
|
952
|
+
const [loading, setLoading] = react.useState(!hasInitial);
|
|
936
953
|
const getThemeConfig = react.useCallback(async () => {
|
|
937
|
-
|
|
954
|
+
if (!hasInitial) {
|
|
955
|
+
setLoading(true);
|
|
956
|
+
}
|
|
938
957
|
try {
|
|
939
958
|
const response = await api$1.retrieveThemeContent(
|
|
940
959
|
themeConfig.theme.id,
|
|
@@ -954,7 +973,7 @@ var HomeConfigProvider = (props) => {
|
|
|
954
973
|
} finally {
|
|
955
974
|
setLoading(false);
|
|
956
975
|
}
|
|
957
|
-
}, [themeConfig.theme.id]);
|
|
976
|
+
}, [themeConfig.theme.id, hasInitial, props.page]);
|
|
958
977
|
const onUpdateThemeContent = react.useCallback(
|
|
959
978
|
async (configToUpdate = selectedConfig) => {
|
|
960
979
|
try {
|
|
@@ -1048,6 +1067,65 @@ var HomeConfigProvider = (props) => {
|
|
|
1048
1067
|
);
|
|
1049
1068
|
};
|
|
1050
1069
|
var useHomeConfig = () => react.useContext(HomeConfigContext);
|
|
1070
|
+
var HomeConfigHeroSliderContext = react.createContext({
|
|
1071
|
+
loading: true,
|
|
1072
|
+
heroSliderConfigData: [],
|
|
1073
|
+
onUpdateHeroSlider: () => null
|
|
1074
|
+
});
|
|
1075
|
+
var HomeConfigHeroSliderProvider = (props) => {
|
|
1076
|
+
const [loading, setLoading] = react.useState(true);
|
|
1077
|
+
const [heroSliderConfigData, setHeroSliderConfigData] = react.useState([]);
|
|
1078
|
+
const { token } = useThemeEdit();
|
|
1079
|
+
const themeConfig = react.useContext(BusinessConfigContext);
|
|
1080
|
+
const getHeroSliderConfig = async () => {
|
|
1081
|
+
setLoading(true);
|
|
1082
|
+
try {
|
|
1083
|
+
const response = await api$1.retrieveThemeContent(
|
|
1084
|
+
themeConfig.theme.id,
|
|
1085
|
+
"hero_slider"
|
|
1086
|
+
);
|
|
1087
|
+
setHeroSliderConfigData(response.data);
|
|
1088
|
+
} finally {
|
|
1089
|
+
setLoading(false);
|
|
1090
|
+
}
|
|
1091
|
+
};
|
|
1092
|
+
react.useEffect(() => {
|
|
1093
|
+
getHeroSliderConfig();
|
|
1094
|
+
}, []);
|
|
1095
|
+
const onUpdateHeroSlider = async (configToUpdate) => {
|
|
1096
|
+
setLoading(true);
|
|
1097
|
+
try {
|
|
1098
|
+
const body = {
|
|
1099
|
+
data: configToUpdate,
|
|
1100
|
+
slug: "hero_slider",
|
|
1101
|
+
platform: typeof window !== "undefined" ? "website" : "app"
|
|
1102
|
+
};
|
|
1103
|
+
await api$1.updateThemeContent(
|
|
1104
|
+
body,
|
|
1105
|
+
themeConfig?.theme?.id,
|
|
1106
|
+
"hero_slider",
|
|
1107
|
+
token
|
|
1108
|
+
);
|
|
1109
|
+
const updatedResponse = await api$1.retrieveThemeContent(
|
|
1110
|
+
themeConfig.theme.id,
|
|
1111
|
+
"hero_slider"
|
|
1112
|
+
);
|
|
1113
|
+
setHeroSliderConfigData(updatedResponse.data);
|
|
1114
|
+
} catch (error) {
|
|
1115
|
+
console.error("Error updating theme content:", error);
|
|
1116
|
+
} finally {
|
|
1117
|
+
setLoading(false);
|
|
1118
|
+
}
|
|
1119
|
+
};
|
|
1120
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1121
|
+
HomeConfigHeroSliderContext.Provider,
|
|
1122
|
+
{
|
|
1123
|
+
value: { loading, heroSliderConfigData, onUpdateHeroSlider },
|
|
1124
|
+
children: props.children
|
|
1125
|
+
}
|
|
1126
|
+
);
|
|
1127
|
+
};
|
|
1128
|
+
var useHomeConfigHeroSlider = () => react.useContext(HomeConfigHeroSliderContext);
|
|
1051
1129
|
var CustomPageConfigContext = react.createContext({
|
|
1052
1130
|
selectedConfig: [],
|
|
1053
1131
|
setSelectedConfig: () => null,
|
|
@@ -1178,80 +1256,17 @@ var CustomPageConfigProvider = (props) => {
|
|
|
1178
1256
|
onUpdateHeroSlider,
|
|
1179
1257
|
loading
|
|
1180
1258
|
},
|
|
1181
|
-
children:
|
|
1259
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1260
|
+
HomeConfigHeroSliderContext.Provider,
|
|
1261
|
+
{
|
|
1262
|
+
value: { loading, heroSliderConfigData, onUpdateHeroSlider },
|
|
1263
|
+
children: props.children
|
|
1264
|
+
}
|
|
1265
|
+
)
|
|
1182
1266
|
}
|
|
1183
1267
|
);
|
|
1184
1268
|
};
|
|
1185
1269
|
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
|
-
};
|
|
1255
1270
|
var WishlistContext = react.createContext({
|
|
1256
1271
|
wishlistItems: [],
|
|
1257
1272
|
addToWishlist: () => null,
|
|
@@ -1921,7 +1936,6 @@ exports.CartWishlistRefreshContext = CartWishlistRefreshContext;
|
|
|
1921
1936
|
exports.CartWishlistRefreshProvider = CartWishlistRefreshProvider;
|
|
1922
1937
|
exports.CustomPageConfigContext = CustomPageConfigContext;
|
|
1923
1938
|
exports.CustomPageConfigProvider = CustomPageConfigProvider;
|
|
1924
|
-
exports.CustomPageHeroSliderProvider = CustomPageHeroSliderProvider;
|
|
1925
1939
|
exports.CustomerConfigContext = CustomerConfigContext;
|
|
1926
1940
|
exports.CustomerConfigProvider = CustomerConfigProvider;
|
|
1927
1941
|
exports.FilterContext = FilterContext;
|